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 1tT1QQ-002x0M-00 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jan 2025 16:18:27 +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 1tT1PR-0092GS-0j for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jan 2025 16:17:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tT1PP-0092GG-Lr for pgsql-hackers@lists.postgresql.org; Wed, 01 Jan 2025 16:17:24 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tT1PM-001a58-0q for pgsql-hackers@postgresql.org; Wed, 01 Jan 2025 16:17:22 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-5d7e527becaso17483571a12.3 for ; Wed, 01 Jan 2025 08:17:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735748238; x=1736353038; 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=tYjvQ2pqowEM/+wbgAJxwsKhdpgGId2qwtQGG4tRtGs=; b=ZK7CxixfyFD4lfrBC6EOLdd452dJ2bkfQlLv4QK6cUvEHn/jUMVbPecSQFcv7NnU0x 2EGt36UHvUbNKhsYBJVyzK5iXr1GwhDa960p3dsNiuqwyGdkwPCBC1NLVxSESPjlKIG/ 0litJwIMizt3q+fIfZiBIAy/OFmfYrZ5na6tbstFQuJXn8q1BnkXDyBnslB60dzaNDo5 f8fXFH/RZK9wD7/HiEhQi9gXgUB/N0m32pMJ5Wud+z1YnMc/13+D1DtUfy2l9n/Wb/uN Yk/xoyntKi9U+v98fKDbwe4lr+mIRPLPVBcDc2o5D6a/CO0Dq1CE9Owkvy2m0fljONoK ipsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735748239; x=1736353039; 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=tYjvQ2pqowEM/+wbgAJxwsKhdpgGId2qwtQGG4tRtGs=; b=uxAh0OLpHsin70F2d/kHjy/lipSnVL2IMQcBkMYqYazkIOVAR5U35f9avzxcd55Ahl X7w2wWJ7EIRnKFtGyB/Y01gwtQzk3PSrXEplrHM6WkYU7z2bOcj+ccypPCggBIJ/f8tv S9U3Rbp9RwWeqzn3DIGt6sznr3e43KeSpEF7BgHr9aPxmGHkkLt3ZvfF09CEt4JE8pFR TxQRZO4vdoyuVS8WB7wBQTgELIBvlusD0t7omMUPoUCUY7oRrViRfumOsPlXgDDy3a6i aOqUL/1SKpITfftrBr48AG+AUzgmaMzxtpeOvSip2xFj9/kx0oPv2GxqirFWX9PAPwvM PYWA== X-Forwarded-Encrypted: i=1; AJvYcCUA4NLtZVbh3zHf2AdWyFNrUSSKqxdiSA3YdZBO5hzQQV6PEebqkAQxxuU2G+UrFER4fZwjpEY/MScc9bhZ@postgresql.org X-Gm-Message-State: AOJu0Yz89aZ/I/PuJbm8TX8ebh8/BbVJjGAFKKnCsKs+J8MLdDP62hqr +d14iqyBko9z+M2GeUdplDyKjWFQryYsR8gKHrLVGcqJ++VGskaVdhMwYzJvuu21x/F3D7TFRma dCXFsyvzO87qvkGG6SlCiQTFJ0ypFdZ+7ieA= X-Gm-Gg: ASbGncugXhxYfm6mT3pMv5hBQywmfkGOZhOgek4/C2F4tv96vNU5rc5orO6Sf19oqpr MhlyIeM7+BIV2akdMFx1FGedsdxqueOPklp7FQ1rHMKShxnTon2s8FGWFxC2V62RIOzQqMxN6 X-Google-Smtp-Source: AGHT+IHeRQ+CD5u19LdsJa7WJkIPEASA5u/+DlAyE6izscNgWLcmPgRsQm8STJBTBtq7CiRhD7JuKMLDSRyWujXa6II= X-Received: by 2002:a05:6402:5204:b0:5d0:ced8:d22d with SMTP id 4fb4d7f45d1cf-5d81de05c3fmr110943043a12.22.1735748238005; Wed, 01 Jan 2025 08:17:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Wed, 1 Jan 2025 17:16:00 +0100 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Michael Paquier Cc: Matthias van de Meent , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman Content-Type: multipart/mixed; boundary="000000000000266f1f062aa7612d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000266f1f062aa7612d Content-Type: multipart/related; boundary="000000000000266f1f062aa7612c" --000000000000266f1f062aa7612c Content-Type: multipart/alternative; boundary="000000000000266f1e062aa7612b" --000000000000266f1e062aa7612b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, everyone! I=E2=80=99ve added several updates to the patch set: * Automatic auxiliary index removal where applicable. * Documentation updates to reflect recent changes. * Optimization for STIR indexes: skipping datum setup, as they store only TIDs. * Numerous assertions to ensure that MyProc->xmin is invalid where necessary. I=E2=80=99d like to share some initial benchmark results (see attached grap= hs). This involves building a B-tree index on (aid, abalance) in a pgbench setup with scale 2000 (with WAL), while running a concurrent pgbench workload. The patched version built the index in 68 seconds, compared to 117 seconds with the master branch (mostly because of a single heap scan). There appears to be no effect on the throughput of the concurrent pgbench. The maximum snapshot age remains near zero. I am going to continue to benchmark with different options: different HOT setup, unique index, different index types and DB size (100+ GB). If someone has some ideas about possible benchmark scenarios - please share= . Best regards, Mikhail. [image: image.png] > [image: image.png] --000000000000266f1e062aa7612b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone!

I=E2=80=99ve adde= d several updates to the patch set:

* Automatic auxiliary index remo= val where applicable.
* Documentation updates to reflect recent changes.=
* Optimization for STIR indexes: skipping datum setup, as they store on= ly TIDs.
* Numerous assertions to ensure that MyProc->xmin is invalid= where necessary.

I=E2=80=99d like to share some initial benchmark r= esults (see attached graphs).
This involves building = a B-tree index on (aid, abalance) in a pgbench setup with scale 2000 (with = WAL), while running a concurrent pgbench workload.

The patched version built the index in 68 seconds, compared to 117 seconds= with the master branch (mostly because of a single heap scan).
T= here appears to be no effect on the throughput of the concurrent pgbench.= =C2=A0
The maximum snapshot age remains near zero.
=
I am going to continue to benchmark with different options: = different HOT setup, unique index, different index types and DB size (100+ = GB).
If someone has some ideas about=C2=A0possible benchmark scen= arios - please share.

Best regards,
Mikh= ail.

3D"image.=

--000000000000266f1e062aa7612b-- --000000000000266f1f062aa7612c Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_m5e15ota12 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 --000000000000266f1f062aa7612c Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_m5e162t213 iVBORw0KGgoAAAANSUhEUgAAAxEAAAHdCAYAAABi0vSAAAAAAXNSR0IArs4c6QAAAARnQU1BAACx jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAIgRSURBVHhe7N15WFRl/wbw+wzDOjMwA26AgvtC ihttllvprzB5KzNTK3A3t6ysaLE3W/SVem1H09ywTMqtpKJFXzUrW8AVcRdBGUSUGZiFbZjz+wPm BAdQMBEG7s91zVWe853DzFlmzj3neZ4jiKIoQmbFihWYNm2afDIRERERETVD8nygyMjIgPxBRERE RERUUcW8oAgKCoL8QUREREREVFHFvKCQzyQiIiIiIroShggiIiIiIqoThggiIiIiIqoThggiIiIi IqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoT hggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggiIiIiIqoThggi IiIiIqoThggiIiIiIqqTJhsizp8/j++//14++aoKCwvxwQcf4IMPPkBhYaF8dr0wGo148803ERcX J591zer6PuLi4vDmm2/CaDTKZ11Xly9fRmJiYq1e042yf/9+PP/880hMTJTPIicWFxeH+fPnIy0t DQCQlpaG+fPnV9rON2q/r4lj39u/f798VhXVvf76YLfbsXfvXhw9elQ+q8E4Ps8aclsREVFlioyM DMgfzs5oNGLt2rXIzs6Wz6IGVFhYiPXr1+PkyZPyWUTUSBw8eBBbt25tVEGfiIgah4p5QREUFAT5 g6g56du3L9566y2Eh4fLZ5ETi4qKwptvvokOHTrIZ5GT8fDwwJNPPon58+dDq9XKZxMR0Q1SMS80 2eZMRERERERUPwRRFEX5xBUrVmDatGnyydddXFwczp07h4ceegg//vgjsrKyIAgCgoKC8MADD8Df 31+qFUURx48fxw8//ICLFy+ipKQECoUCOp0Od911F8LCwiAIAvbv348NGzZU+jtDhw6VfmW+fPky vvvuOxw7dgwlJSVQq9W44447MHjwYCiVShQWFmLFihUAgBEjRuDbb79FVlYWAMDf3x8PPfQQ2rZt W2n5BQUF+O6773Do0CEUFBTA1dUV3bt3R0RERJVfzbKysvDVV19Jzcb69OmDwYMHY+XKlWjXrh2i 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 BkpNmXCV932tWrdujaioKKmZkdlsrravAirsY127dsWECROwbNmyKn0Xhg8fjttvvx39+vXDlClT MHbsWGleTet/woQJ0vSuXbtKfRzkx5qDYzADx7Z+6aWX8NZbb9VreL3Seqp43Pbu3Rs333yz9Dz5 54NjIAUicj6CKIpVxn1csWIFpk2bJp9MRE3cTz/9hOXLlyMuLu6qv7aT8zl06BAmT56MVatWVTnZ JaovjqDNZktEzk2eD3glgoioCas4Jn94eDgWLVrEAEH1quIgDBWvaBJR08IrEUREREREdEXyfMAr EUREREREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEURE REREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEUREREREVCcMEURERERE VCcMEUREREREVCcMEUREREREVCeKjIwMyB83SlRUFARBgCAICA4ORlZWFgAgKysLwcHB0jyVSoXk 5OQqz5NPr/i8IUOGwGw2S/OSk5OhUqkgCAKioqKk6bjC8oiIiIiIqEzFvKAICgqC/HEjJCQkAABE UYQoihgyZAheeOEFAIBer4dOp4Ner4coirBYLOjfvz8AICYmBunp6TCZTIiPj8eoUaOQlZUFs9mM cePGYebMmRBFEcHBwZg1axZQHi5GjRqF+Ph4mEwmpKenIyYm5orLIyIiIiKiv1XMCw3WnCkiIgJx cXHSv0ePHo1du3YhKysLer0eWq0WGo2m0nMAIDU1FeHh4VCr1QgLCwMAJCUlwWQywWg0YtiwYUA1 y9PpdAgLC4NarUZ4eDgSExNhNptrXB4REREREVWvwUKEXGpqKjp06ACNRoPU1FTs3r0bGo0GgiBI Vw3MZjPS09MREhICANBoNOjQoQNSU1Oh1+sBAAEBAdJ/RVGEXq+vEkpCQkKQlpaGCxcu1Lg8IiIi IiKqXqMIEcnJyYiNjcWSJUugVquRmpqKyMhIiKKIpKQkvP7660hISIDJZEJaWpr86UB5EyiDwSCf DJQHlOqYzeYal0dERERERNUTRFEU5RNXrFiBadOmySfXi+TkZAwaNAjx8fGIiIiQzwbKOz4DQGxs LEaOHIl58+YhIiICZrMZI0eORHh4OIYNG4bJkycjMTER/v7+SE5OxoMPPoitW7dCr9djyZIl+Oab b6BWq5GQkIDZs2djx44dmDJlSrXLi46Olr8MqWkUEREREVFjEhAQAH9/f/nk66ZKPhCrsXz5cvmk epGUlCS2a9dOTEpKks+qJDIyUly8eHGV/9fr9WJQUJC4bds2Ua/Xi71795aWtW3bNjEoKEjU6/Vi UlKS2Lt3b1Gv14uiKIqLFy8WBw8eLJpMphqXR87vavsVOQduR+fHbdg0cDs6P27DpqGhtqM8HzRY c6aKVwocIy+hvInRkCFDpNGbkpOTsXPnTqnDdEhIiNQp2tEBOiwsDBqNBlqtFtu3bwcAbNq0CUOG DIG/vz8CAgJgMBiQlJQEs9mMxMREqTN1TcsjIiIiIqLqNViI2L59O86dO4ewsLBK94owmUzYsGED Zs+eDUEQEBYWhtjYWCloREdHIzg4GBqNBmPHjsWWLVvg7+8PtVqNDRs2YOnSpRAEAenp6YiNjQUA +Pv7Y8uWLRg7diw0Gg2Cg4Ol5ko1LY+IiIiIiKrXYCEiOjpaukeE45Geng5/f3/4+/sjPT1dmi7v KxEXF1fl/hEoDwuO5+3atQtqtVqa179/f1gsFoiiWGloWVxheUREREREVFWDhQgiIiIiInJODBFE RERERFQnDBFERERERFQnDBFERERERFQnDBFERERERFQnDBFERERERFQnDBFERERERFQnDBFERERE RFQnDBFERERERFQnDBFERERERFQnDBFERERERFQnioyMDMgfREREREREFVXMC4qgoCDIH0RERERE VHf2nGyUZp6TT24SKuYFNmciIiIiIvqnRBEFX29E7qQxMMUskM9tchgiiIiIiIj+gdILWTDOmwHz h29DLCiAwq8lxKJCeVmTwhBBRERERHQt7HYUbImHYfIjKDm0D4qWreGz+AN4v7oYgruHvLpJYYgg IiIiIqqj0vQ0GJ+eBvPSdyAWFcJr/ET4xm2GW9ht8tImiSGCiIiIiKiWxKJCWD75ELmTH0HJkUNw vSkUvqu/gGrSDAhubvLyJoshgoiIiIioFop+3Y3ciWNg/eJTCB6eUM+aB+17n8AlqIO8tMljiCAi IiIiugKxsAB5Lz+N/Fefg/3iBbj26Q/dyg3wfPARQBDk5c0CQwQRERERUTXEokJY1nyMSyMHo/iP XyG4e0Dz1AvQ/ncZXNoEyMubFYYIIiIiIiKZwh+/Re7jD8K6fjUAwO32gfBduxEeI0fJS5slhggi IiIionIlR1NgmBkJ01uvwZ57GS7t2sPn7Vj4vLEEipat5eXNFkMEERERETV7YmEBzO8vhvHJybCd OAaFjxbqudHwXRUPt743y8ubPYYIIiIiImrWivf9idxJj6AgYQsgivAcNRa+cZvhGfEQoODpcnW4 VoiIiIioWRKtVpiWvIm852fDfvECXNoFQ7d0HdQzn4Gg1sjLqQKGCCIiIiJqdor/+BW5Ex9GYeI2 AIDXoxPhu2YjlF27y0upGgwRRERERNRs2HMvI//1F5D38tOwX86BS/uO0C1fD9XEGfJSugKGCCIi IiJqFgo2b0Bu5CgU/fw/AIBq4gz4royHslMXeSldBUMEERERETVptpPHYJg2HuZl70IsLIBr3zD4 fvY1vB6dKC+lWmKIICIiIqImSbRaYH5/MQwzImE7cwoKHy28X3oD2reXwqWNv7yc6oAhgoiIiIia nKL//YDcqIfKhm0VFPC8/2H4froV7nfdIy+la6DIyMiA/EFERERE5IxK9edhfGY68he9ArshF8qO naFbuhbqOc9B8FLJy6kOKuYFRVBQEOQPIiIiIiJnY1n3CXIjR6Hk0H4IXiqoZz8L3YrPoezCYVuv h4p5gc2ZiIiIiMiplRzaj9zIUbCu+wQA4D70/+C7dhM8HxgjL6XrhCGCiIiIiJySPfcyTItfhfGZ 6SjVn4dLa3/4vPURvF9+EwpfP3k5XUcMEURERETkXOx2FHz1JXInjEbh9kRA6QqvxyZDt3Yj3Prd Iq+mesAQQUREREROw3bmFAyzJ8L80X8hWi1w7d0fvis3QDVhOgRXN3k51ROGCCIiIiJq9MQCK8wf /ReG6Y/BduIoFD46aKIXQLtkGVzacmCgG40hgoiIiIgataLd25E74WEUfPUlABEe9z0I37hN8Bg+ Ql5KNwhDBBERERE1SqUX9MiLnoP8N16C/XIOlO07QfvBKmiefhGCWiMvpxuIIYKIiIiIGhXRVgLr +tUwTBqD4uQ/IHh6Qv3EU9CtWA/XHj3l5dQAGCKIiIiIqNEoOZAMw8QxsKz5GGJxMdwH3lV2z4fR 4wEFT10bC24JIiIiImpwdqMB+f/5N4zPzkBpViYULVvDZ/EH8H51MRR+LeXl1MAYIoiIiIioQRV+ 9zVyJ4xG0Y7vAQBe4yfCN24z3MJuk5dSI8EQQUREREQNwp6TjbznZ8P0zkKIZhOU3W+C75qNUE2a AcGN93xozBgiiIiIiOiGK0jYgtzJj6B4359lHaeffB66D1fDpV2wvJQaIYYIIiIiIrphSi9kwThv BszvL4ZotcKt3y3wXf0lPP81GhAEeTk1UgwRRERERHRDWD9fA+PT01ByMBmCSg3NvPnweesjKFq2 lpdSI8cQQURERET1qmjnj8h99H5YVi+DPScbbrfdCd/VX8Aj/F/yUnISDBFEREREVC9sJ47BMGcS 8hfOR2l2FlzatYfP27HwefMdDtvq5BgiiIiIiOi6Es0mmJa8CcPMSNiOpkDQaKCe8xx813wJt743 y8vJCTFEEBEREdF1U/jd18iNHIXCxG0AAM9RY+G3bis8739YXkpOTJGRkQH540aJioqCIAgQBAHB wcHIysqS5sXExEjzEhISqn2eSqVCcnKyND0rKwvBwcEQBAFDhgyB2WyW5iUnJ0OlUkEQBERFRUnT cYXlEREREVHtlKanwTB7IkzvLIQ9P6/sng+rvoB65jMQNN7ycnJCFfOCIigoCPLHjeAIBqIoQhRF DBkyBC+88II0b+nSpdDr9UhKSsKsWbOkk/uYmBikp6fDZDIhPj4eo0aNQlZWFsxmM8aNG4eZM2dC FEUEBwdj1qxZQHm4GDVqFOLj42EymZCeno6YmJgrLo+IiIiIasey5mPkTn4EtmNHIGg00MybD91H a+AS3EFeSk6sYl5osOZMERERiIuLk/49evRo7Nq1C1lZWUhNTcWQIUPg7++Pbt26oWPHjti+fTsA IDU1FeHh4VCr1QgLCwMAJCUlwWQywWg0YtiwYVWWp9frodPpEBYWBrVajfDwcCQmJsJsNte4PCIi IiK6suI/f0Puo/fDun41AMDj/+6D79rNHHWpGWiwECGXmpqKDh06QKPRIDU1FSEhIQAAtVqN4OBg pKamwmw2Iz09XZqn0WjQoUMHpKamQq/XAwACAgKk/4qiCL1eD71eD61WC41GAwAICQlBWloaLly4 UOPyiIiIiKh69ss5yH/tBeS99FTZqEttg6Bd8jE0z78KhY9WXk5NUKMIEcnJyYiNjcWSJUsAAOnp 6fISAIDJZEJaWpp8MgBAr9fDYDDIJwPlAaU6ZrO5xuURERERkYzdjoKN65E7YTSK9vwPgrs7VJNm wHfVF3Dt3U9eTU2YIIqiKJ+4YsUKTJs2TT65XiQnJ2PQoEGIj49HREQEUN7ROSQkBNHR0dK/ASA2 NhYjR47EvHnzEBERAbPZjJEjRyI8PBzDhg3D5MmTkZiYCH9/fyQnJ+PBBx/E1q1bodfrsWTJEnzz zTdQq9VISEjA7NmzsWPHDkyZMqXa5Tn+dkWOplFEREREzY1bRhr8Nn0G1+yyc6GCbjch98FxKNX5 yUupAQQEBMDf318++bqpkg/Eaixfvlw+qV4kJSWJ7dq1E5OSkipNX7x4sRgZGSmKoiiaTCZx8ODB 4uLFi0VRFMXIyEjp//V6vRgUFCRu27ZN1Ov1Yu/evaVlbdu2TQwKChL1er2YlJQk9u7dW9Tr9dLy Bw8eLJpMphqXR85Pvl+Rc+J2dH7chk0Dt6Pzu9ZtaDfli/lLFooXh90iXrz7ZvHS2PvEwp93yMvo BrnW7fhPyfNBgzVnqniloH///pXmhYSESJ2ijx8/jjNnzkgdpkNCQqRO0Y4O0GFhYdBoNNBqtVIH 7E2bNkmdswMCAmAwGJCUlASz2YzExESpM3VNyyMiIiJq7gp//Ba5UaNR+N1XEFxd4fXoRPiu2Qj3 gXfJS6mZabAQsX37dpw7dw5hYWFV7hURERGBmTNnIiAgAGFhYYiNjZWCRnR0NIKDg6HRaDB27Fhs 2bIF/v7+UKvV2LBhA5YuXQpBEJCeno7Y2FgAgL+/P7Zs2YKxY8dCo9EgODhYaq5U0/KIiIiImqvS jLMwzp0K01uvwZ5ngPvAu6BbsxGqiTMgeHjKy6kZavA+EUT1JTk5ucpVLnI+3I7Oj9uwaeB2dH61 2YZicTGsn66EdeNngM0GZacuUD/5PFxv6i0vpQZSm+1YH+T5oMGuRBARERFR41H8528wTHwY1g1r IbgooZ77AnTL1zNAULUYIoiIiIiaMfvlHOQviJbu+eDW7xb4rt0Iz4hR8lIiCUMEERERUTNVsCUe uZGjUPTLTgientDMmw+ftz6ComVreSlRJQwRRERERM1MaeY5GJ+eBvPSdyAWFcHt1jvgu3YTPML/ JS8lqhZDBBEREVFzYbfD+uVnMEwbj5LDByB4qaB55iX4LHwXCr+W8mqiGjFEEBERETUDrjnZMMye AMuKD8quPvS7Bb5rvoTHiAfkpURXxRBBRERE1MQVbN4A//fehO3EMQhqDTTP/bus7wOvPtA1Yogg IiIiaqLsuZdgfG4mzMveBWw2uN0yAL6rv4DHPSPlpUR1whBBRERE1AQV792D3EmPoGR/EgR3DxhG jYfPoveg8G0hLyWqM4YIIiIioiZELLDC9N83kffKPIhmE5Sdu0G3cgNMtw6UlxJdM4YIIiIioiai 5GAyDFPHofD7bYBCAa9HJ0EXuxYu/oHyUqJ/RJGRkQH5g4iIiIich2i1wvTOIhjnzUDphSy4tAmA 9v2VUE18AnBxkZcTXZOKeUERFBQE+YOIiIiInEPxvj+RO/kRFH73FSAI8HxgDHSrvoBrj57yUqJ/ pGJeYHMmIiIiIickWswwvf068p6fDXtONlz8A6F9dznUs5+F4O4uLye6rhgiiIiIiJxMyZFDZVcf fvgGEBTwfGh82dWHnn3kpUT1giGCiIiIyIlYVn4E49wpsF/KKe/78AnUM56C4OYmLyWqNwwRRERE RE6gNPMcDE88Dmv8OgCAR/i/oFsVD9eQXvJSonrHEEFERETUyBV8vRG5UQ/Bduo4BI03vF97G5p5 8yG4e8hLiW4IhggiIiKiRspuNCDvxbkwf/g2AMCt783wXbMR7ncMlpcS3VAMEURERESNUPHvvyB3 4sMo/msvBDc3qGc/C5+3Y6HQ6uSlRDccQwQRERFRIyIWFcL03mLkzX8Goikfrr36QLdmIzwfGCMv JWowDBFEREREjUThT9/CMHksCr/ZAsFLBc0zL0H77gq4tPaXlxI1KIYIIiIiogZWuON75E4YDVPM ayi9oIfbrXfAd82X8BjxgLyUqFFgiCAiIiJqIEW/7YZh+mMw/effKD2fAZeAtvB+5T/wWfguFH4t 5eVEjQZDBBEREdENZjtxFIY5k5D/7+dgO30CipatoZk3H77rtsB98N3ycqJGhyGCiIiI6AYRzSaY 34+BYWYUbEdToPD1g3rOc/DbkACP8H/Jy4kaLYYIIiIiohug8KfvkDthNAoSNkPQaKB59hX4fvoV PO9/WF5K1OgxRBARERHVo9Jz6TDOnQJTzALYjQa4Dx4G3zWb4HFvBAR3d3k5kVNgiCAiIiKqB2Jx MSyrlyF36niUHDkEhY8OPq//F96vLOIN48jpMUQQERERXWfFf/4Gw8SHYf18DWArgfuQ4dCt3Qi3 AYPkpUROiSGCiIiI6DqxX85B/oLnkffSUyjNzoJLG39o314K7/kLodB4y8uJnBZDBBEREdF1ULDp c+RGjkLRL7sAAF6PToLvZ1/DtW+YvJTI6SkyMjIgfxARERFR7ZSeS4dhziSYP34PYlERXEP7wnfd FqgmPiEvJXJqFfOCIigoCPIHEREREV2ddcNa5E58GLajKRBUamiiX4X2neVwCWgrLyVyehXzApsz EREREdWR7ewZGGZGwrJqKQDAbcAg+K7dBI/h98lLiZokhggiIiKiOrBuWAvDlLGwnTgGQaOB90tv wOf1/0Kh85WXEjVZDBFEREREtWC/eAHGp6dJVx/cB90F3zWb4H7XPfJSoiaPIYKIiIjoKgq3J5bd NO7wAQheXtA8/yq8/72YN42jZoshgoiIiKgGotWC/AXRMC1+FaLFDNebQqH7ZAM8/o99H6h5Y4gg IiIiqkbJwWTkThqDol92AgBUk2ZA+/5KuLT2l5cSNTsMEUREREQV2WywrPgQxmdnwX4pBy6B7aD7 +FN4jZ8oryRqthgiiIiIiMqVZp6DYUYkrF9+CgDwfGgcdCs+h7JzN3kpUbPGEEFEREQEoOCrL2GY Og62tFNwCWwH7QcroZ7xNAR3d3kpUbPHEEFERETNmj0nG3kvPAnzR/+FWFwMr3EToPtkA1x79JSX ElE5hggiIiJqtgq/3YrcyY+gOOl3uLRrD93SOKgmz4Tg5iYvJaIKGCKIiIio2Sm9kAXjvBkwvfsf iAUFZX0fPlkPZdce8lIiqgZDBBERETUfoljW92HKWJQcTIaiRUtol3xc1vdB6SqvJqIaMEQQERFR k2fPuQjrl5/C+OzMsr4PhQXw+L/74Lv6S7iG9pWXE9FVMEQQERFRk2TPM6Lwu69gnDsVl8eNhGXF hyg5mAyX1v7wfu1taJ5/FYKXSv40IqoFhggiIiJqcgq++hKXH/o/mN5ZhJIjB6Hw9YPnA2OgfX8l fNd/Dfc7BsufQkR1wBBBRERETYZoykfev5+D+aP/AgDc77oH2reXwu/LRKhnPwvXm0LlTyGia8AQ QURERE1CydEU5E4ei+LfdkPwUsF7QQy8X3oDrn3D5KVE9A8xRBAREZFzs9th/WwVjHOnwJ57Ca6h feG7+ku43zlUXklE14kiIyMD8seNFhMTg6ioKOnfWVlZCA4OhiAIEAQBKpUKycnJ0vyoqKhqp1d8 3pAhQ2A2m6V5ycnJUKlUEASh0t/CFZZHREREjZv9cg7yX38RlrXLAbsdqmlPQvvOcihatJSXEtE/ VDEvKIKCgiB/3EgxMTF44YUXKk3T6/XQ6XTQ6/UQRREWiwX9+/eX6tPT02EymRAfH49Ro0YhKysL ZrMZ48aNw8yZMyGKIoKDgzFr1iygPFyMGjUK8fHxMJlMSE9PR0xMzBWXR0RERI1b0S+7kDtlLIp+ 2Vl2t+nl6+E15jF5GRFdJxXzQoM2Z4qKikJiYiJefvnlStP1ej20Wi00Gk2l6QCQmpqK8PBwqNVq hIWVtXFMSkqCyWSC0WjEsGHDAACjR4/Grl27kJWVJYWSsLAwqNVqhIeHIzExEWazucblERERUeMk FlhhilmA/AXPQzSb4fngI2V3m+7URV5KRPWkQUNEXFwcdu3aVSUspKamYvfu3dBoNBAEQbpqYDab kZ6ejpCQEACARqNBhw4dkJqaCr1eDwAICAiQ/iuKIvR6fZVQEhISgrS0NFy4cKHG5REREVHjU3Lk EAxTxqHwp++g8PWDz1sfQT1rHu82TXSDNWiIqElqaioiIyMhiiKSkpLw+uuvIyEhASaTCWlpafJy oPzqhcFgkE8GypdXHbPZXOPyiIiIqHGxrF4G49wpKM3Ogvsdg6Fb9QXc+t4sLyOiG0AQRVGUT1yx YgWmTZsmn1xvYmJikJqairi4OPksoLzZEwDExsZi5MiRmDdvHiIiImA2mzFy5EiEh4dj2LBhmDx5 MhITE+Hv74/k5GQ8+OCD2Lp1K/R6PZYsWYJvvvkGarUaCQkJmD17Nnbs2IEpU6ZUu7zo6Gj5y5Ca RhEREdGNo7x0ES02rIbb+XSIrm7IfWAsLGG3y8uImrWAgAD4+/vLJ183VfKBWI3ly5fLJ9WrxYsX i5GRkfLJksjISHHx4sVV/l+v14tBQUHitm3bRL1eL/bu3VtMSkoSRVEUt23bJgYFBYl6vV5MSkoS e/fuLer1elEs/3uDBw8WTSZTjcsj5+fYF8i5cTs6P27DpqGhtqN122YxZ8RA8eLdN4uXJ4wWbRln 5SVUSw21Den6aqjtKM8Hja45k9lsxpAhQ5CQkACUD826c+dOqcN0SEiI1Cna0QE6LCwMGo0GWq0W 27dvBwBs2rQJQ4YMgb+/PwICAmAwGJCUlASz2YzExESpM3VNyyMiIqKGYzcakPfiXJjfXwyxqBAe 4f+Cbvl6uLQLlpcSUQNodCFCrVZjw4YNmD17NgRBQFhYGGJjY6UhXqOjoxEcHAyNRoOxY8diy5Yt 8Pf3l563dOlSCIKA9PR0xMbGAgD8/f2xZcsWjB07FhqNBsHBwVJzpZqWR0RERA2j+I9fYZw7BcV/ 7YXg6Qnvl9+EZt58CG5u8lIiaiCNok8EUX1ITk6Wwic5L25H58dt2DTciO1oN+XD/OFbKPrfjwAA l/Yd4fP6f+ES0FZeStfgRmxDqn8NtR3l+aDRXYkgIiKi5qfo5x0wTHy4LEAoFPAaGwXdx58yQBA1 UgwRRERE1GDsRgPy/v0s8l9/EXajAS7tO0L30VqopszivR+IGjGGCCIiImoQJQeSYZj8CIp/+xlQ KuH12GT4fvwZlF27y0uJqJFhiCAiIqIbzrJ6GYzPzoA9zwhlpy7QxcZBNWE6oFTKS4moEWKIICIi ohvGnnsJxjmTYP18DSAI8Bw9HtrYtVB26iIvJaJGjCGCiIiIbojipD+QO/kRlBxNgcLXD9olH0P9 xFPs+0DkhBgiiIiIqN6Zl3+AvBfmQDSZ4D7wLviu+gKuoX3lZUTkJBgiiIiIqN7YL+XAOGcSCjZ+ BsHTE5roBfB+dTEEjbe8lIicCEMEERER1YvipD+QO3UsSo6mlA3dunw9PIaPkJcRkRNiiCAiIqLr y26H5ZMPkffikxBNJnjc9yB0y9bxxnFETQhDBBEREV03pdlZMD41FdYvPoXg7gHv+QuhefpFCK5u 8lIicmKKjIwMyB9EREREdVW4PRGGqeNRknq4rPnSyni4DxkuLyMiJ1UxLyiCgoIgfxARERHVlmg2 IX9BNEyLX4VotcAzYlRZ86U2/vJSInJiFfMCmzMRERHRNSs5tB+5U8ai6JedEDw94f3a21DPfYHN l4iaOIYIIiIiuiaWFR/C+Mx02C/lQNm5G3SfxMP9jsHyMiJqghgiiIiIqE7suZdgmBkJ65efAgA8 738Yuo/WsPkSUTPCEEFERES1VvzHr8id/AhsJ45BUKnhveAtqOc8ByiV8lIiasIYIoiIiOiqBLsd 5uUfIG/+MxBNJrj1vRm+azbC/c4h8lIiagYYIoiIiOiKSvYnodWy/6Jg42eAKEI17Un4vB0Lha+f vJSImgmGCCIiIqqWWFwM8wdvwfjcTLhnpEHZsTN0K+PhNeYxeSkRNTMMEURERFSF7cQxGKaOQ8G2 TQCA/KH3Qrficyjbd5SXElEzxBBBREREf7PbYf18DQxPTkJp5rmyO08vXQfjvffLK4moGWOIICIi IgBA6YUsGJ+eDsvqZYDNBq9HJ8F3ZTyUXbvLS4momWOIICIiau7sdhRsiYdh8iMoOXIQyk5doFu+ HqqJT8griYgAhggiIqLmrTTzHAxzp8C89B2IxcXwGj8RuqXroOzURV5KRCRhiCAiImqO7HZYv1gH w9RxsB1NgUtrf2jfWwHVpBmAi4u8moioEoYIIiKiZsaekw3D3CmwfPIRxOJieAwLh+6Tz+F6U6i8 lIioWgwRREREzUjRr7uRO6Xs6oOg1sD73/+B5oXXIHip5KVERDViiCAiImoObDaYP/ov8l99DqLF XNZ5+uPP4D7obnklEdFVMUQQERE1caUXsmCYFYWCr74EAHg+MAa62Di4tPGXlxIR1QpDBBERURNW tHsHDFPGwnb6JAQPT3gveAvq2c8CSqW8lIio1hgiiIiImiCxpBjm92OQ/8aLEAsLypovrYyH+51D 5KVERHWmyMjIgPxBREREzqv0QhaMcyajIGEzAMBz1Fjolq9n8yUi+kcq5gVFUFAQ5A8iIiJyTkW/ 7oZh6ljYTh2HoFLDZ+G7UM98Rl5GRFRnFfMCmzMRERE1EeZl75aNvlRQAGXXHtCtWA+3W++QlxER /WMMEURERE7OdvYMDFPGoWDzBgCA50PjoVsaB5fWbL5ERPWDIYKIiMiJFWxcXzb60tnTEDTe8Hlj CdQznpKXERFdVwwRRERETsieexl5z82Cefn7AAC3vjfDd81GuN0+UF5KRHTdMUQQERE5maJfdyN3 8hgU7/8LAKCe/Sx83o6FQquTlxIR1QuGCCIiIichFlhhevuNss7TJhOUHTrDN24zPB8YIy8lIqpX DBFEREROoCT1MHInj0XhDwkAAK+xkdB98jlcAtvJS4mI6h1DBBERUWNWWgrL2uUwPjUV9osXoGjR Etr3V0I1Zba8kojohmGIICIiaqRKszJhmDMJ1s9WAXY73AcPg++qL+B6U6i8lIjohmKIICIiaoSK ft0Nw7TxsJ04CkGlhubF1+H9yiIIKrW8lIjohmOIICIiamTMH74t3XnatWcf+K76Ah533ysvIyJq MAwRREREjUSp/jxyp4xFwdcbAaUSqskzoX3nYyhatJSXEhE1KIYIIiKiRqDo190wTB2P0rNn4BLY DrqP1sBr3ARAwa9qImp8+MlERETUgCrd+6GoEJ4Ro6D7ZAOUnbvJS4mIGg2GCCIiogZS8d4PgloD n4XvQj33BQhubvJSIqJGhSGCiIjoRpPd+8G1R0/4rv4CbrfeIa8kImqUGCKIiIhuoNKsTBhmTSi7 94MowmtsJLTvr4TCt4W8lIio0WKIICIiukGKdm+HYco42E4dh6DRQPv20rI7T7PzNBE5mUbxqRUT E4OoqKgq0wRBgCAISEhIqDQvKioKgiBApVIhOTlZmp6VlYXg4GAIgoAhQ4bAbDZL85KTk6FSqSAI QpW/VdPyiOjGsJ09DfP7MTB//J58FlGTIBYXw/Tuf5D/xksQiwrhGtILvivj4dqnv7yUiMgpKDIy MiB/3EgxMTF44YUXKk1LSEjA0qVLodfrkZSUhFmzZkkn9zExMUhPT4fJZEJ8fDxGjRqFrKwsmM1m jBs3DjNnzoQoiggODsasWbOA8nAxatQoxMfHw2QyIT09HTExMVdcHhHVL7GoEIXfbIFh9kQYpoxD QcJm2C/lyMuInF6p/jyMsyag8NutAADVhOnQfrAKCj/e+4GInEvFvKAICgqC/HGjREVFITExES+/ /HKl6ampqRgyZAj8/f3RrVs3dOzYEdu3b5fmhYeHQ61WIywsDACQlJQEk8kEo9GIYcOGAQBGjx6N Xbt2ISsrC3q9HjqdDmFhYVCr1QgPD0diYiLMZnONyyOi+mE7cQymdxbh8kP3wPTeYtiOHZHmiYUF lWqJnF3hju9hmPYobGmnyu79sHQdvB6bLC8jInIKFfNCgzZniouLw65du6DRaCpNT01NRUhICABA rVYjODgYqampMJvNSE9Pl+ZpNBp06NABqamp0Ov1AICAgADpv6IoQq/XQ6/XQ6vVSn8nJCQEaWlp uHDhQo3LI6Lrq+jnHTDOnQLDzEgUfvcVxMICuA/9P2jfWQ7tko8BhghqQsQCK0yLX4XpP/+GWFgA z3+NLrv3Q9fu8lIiIqfUoCGiOo6gUB2TyYS0tDT5ZACAXq+HwWCQTwbKQ0l1zGZzjcsjon9OtFpg /fIzXB4XgfzXX0TJkUNQtGoD9Yyn0eKrHfB++U24hvaF4OlVVl9YKF8EkdMpOZoCw9TxKNyeCIWP tuzeD08+z3s/EFGTIoiiKMonrlixAtOmTZNPrjcxMTFITU1FXFwcUN7MKSQkBNHR0dK/ASA2NhYj R47EvHnzEBERAbPZjJEjRyI8PBzDhg3D5MmTkZiYCH9/fyQnJ+PBBx/E1q1bodfrsWTJEnzzzTdQ q9VISEjA7NmzsWPHDkyZMqXa5Tn+dkWOplFEdGUupjx47/wB6j/2QLDZAADFQR2QP/BuWEOrdiR1 vXgB/kteQ0lrf2Q982/5bCKn4fPDNvj8LxEAUNShMy6Nn4xSb628jIjougsICIC/v7988nVTJR+I 1Vi+fLl8Ur1avHixGBkZWe2/TSaTOHjwYHHx4sWiKIpiZGSk9P96vV4MCgoSt23bJur1erF3795i UlKSKIqiuG3bNjEoKEjU6/ViUlKS2Lt3b1Gv10vLHzx4sGgymWpcHjk/x75AN44tSy/mv7NIvHj3 zdIj782XxZJjR+SllZRezBYv3n2zeHn8v+SzuB2bgOawDW3682Lu7InSfm9evUxe4vSaw3Zs6rgN m4aG2o7yfNDomjOhvM+Co1P08ePHcebMGanDdEhIiNQp2tEBOiwsDBqNBlqtVuqAvWnTJqlzdkBA AAwGA5KSkmA2m5GYmCh1pq5peURUe6WZ52CKWYDcx+6XRqBxv+se+MZthvfLb0LZrazfUU0EDw8A gN1qkc8iavQKE7fBMG08bEdToPD2gc/bsVBNfEJeRkTUpDTKEBEREYGZM2ciICAAYWFhiI2NRf/+ ZU0goqOjERwcDI1Gg7Fjx2LLli3w9/eHWq3Ghg0bsHTpUgiCgPT0dMTGxgIA/P39sWXLFowdOxYa jQbBwcFSc6WalkdEV2dLO4X8N15C7oSHUfjTdwAAt1vvgO6Tz+H90htwCWwnf0r1ykME2LGanIg9 Pw95r8yDacmbEAsK4NqzD3SrvoBb35vlpURETU6j6BNBVB+Sk5Ol8EnXV8nRFFg/W4XiP36Vprn2 6AnVzGfg2qNnpdrayhl+GyDa0fLH3yvdvZfb0fk1xW1YvP8vmP7zb9hzLwNKJVSRU+E1NqpJ33m6 KW7H5obbsGloqO0ozwdN99OOiK67ksMHYHx2BoxzJkkBwm3AoLJhWj9cfc0BAgAEL47QRI2fWFwM c+wS5D03C/bcy2X3fvhoDbzGT2zSAYKISI6feER0VWJxMcwf/RfGp6eh5EAyBA9PeD4wBr6fboXP 6/+Fa2hf+VPqTPD0BACIhVb5LKJGoTTjLAzTH0PB1i8A4O97P3TuJi8lImryGCKI6IpsJ47CMHUc Cr76EgDgFTkVfl9+B/XsZ+HiHygvv2bSvSIK2C+CGp/C775G7qQxKD13FoLGm/d+IKJmjyGCiKpn t8P62SoY5kxCaeY5KDt1gW75eqgip0LwUsmr/zHBvaxztVjAKxHUeIhFhch/4yWY3lkIAHDt2Qe+ q7+E2613yEuJiJoVhggiqqJ47x4Y5k6BZe1yoLQUqgnToVu+HspOXeSl183ffSJ4JYIaB9vZ0zBM GYei3WVDh3s9Ogna91ZAofOVlxIRNTsMEUQksRsNyF8QjbxX5sF2NAXKbiHwXf0FvB6bLC+97qTm TOxYTY1A0Z7/wTBlHEqzMqHQ+UL79lLe+4GIqAKGCCICABT++C1yJz6Mol92AgBU0+ZAF7sWLkEd 5KX1QnB3B3glghqYaDYh/7UXkP/aCwAA175h0K34HK59eRNSIqKKGCKImjm7IRd5Lz8N01uvQTTl wzW0L3zjNsNrzOPy0noleJSPzsQ+EdRAipP/QO6kR1C0538AANXU2dC+vZTNl4iIqsEQQdQMiQVW FP70LfKi5+Dyw/ei+I9fIXipoHn6RWjfWV77O01fR2zORA3JvOxd5EXPgT33ElxDesF39ZfweiRS XkZEROUYIoiakaI9/0P+Gy/hUsQQmGJeQ3HyHwAAt9vuhO/ajfC470H5U24YwYOjM9GNZzt9ErkT x6Bg8wYAgHr6XGg/WAWXoPbyUiIiqoAhgqiJs6Wdgvn9GFz611Dkv/aCNNKMa88+UE2ZDd3KDfB5 8x0ofFvIn3pD8UoE3WjWLz+DYfqjKD13tuzqQ9xmeD78qLyMiIiqwRBB1ASJBVYUfrsVhlkTYJg6 HgUJmyFaLXAbMAia6Ffht3U7tO+tgNfYSCjbd5I/vUFId6zmzeaontkv5cD47AxYVnwAAFBNfKLs 6kMDNOMjInJWioyMDMgfROSc7DkXYX4/BpdH3wPTu/+B7XgqBC8VPB9+FH6fb4PP6/+Fx/D7oNB4 y5/a4Bw3m0MhmzNR/SnavR25U8ai5EAyFFodtO+ugNejk+RlRERUjYp5QREUFAT5g4icS2nmOZje fh2Xx40su+pQVASXgLZQz34WfhsToZ4+F4pWbeRPa1zYnInqkWi1wLz0HeS/8RJEswluYbdBt+oL uPbqIy8lIqIaVMwLbM5E5MRsaaeQ/8aLyI16CIU/fAMA8Bw1Ftr3V8J33RZ4PjDm71/4GzkO8Ur1 pfivvcidNAYFW+KB8qFbfRZ/AIWPVl5KRES1xBBB5ITsOReRv2g+DFPHo2j3DgjuHvB65HH4bfwe 6pnPwPWmUPlTGj2pTwRvNkfXiWg2wfT268h7cS7sl3LgEtAW2g9Xc+hWIqLrgCGCyImIRYWwrF2O y+NGouh/PwIAvB6dBN/4b6CaOsepb4oljc5UwOZM9M8V//4Lcic9Il2h8xrzOHQr4+Hao6e8lIiI rgFDBJGTKPzxW+Q+PgrWz1YBANzvugd+G76BauITjbKjdF05ml2J7FhN/4DdlA/T4leRN/8Z2HMv waVtELQfrYFq2hwIbm7yciIiukYMEUSNXMmRgzDMiITprddgz70EZZfu0H64Gt4vvQFFy1bycqcl 3WyOHavpGhX9shOGiQ+jcHsiAMBr/ET4rt0E1+43yUuJiOgfYoggaqTsOdnIXzgfxrlTYTt5DAq/ ltBEL4Bu2bom2STj7+ZM7BNBdWM3GpC/cD7yF0TDbjTApX1H6Jatg2rSDHkpERFdJwwRRI2MWFQI y5qPkRv1EIp2/gjB3R1ej06Eb9wmeAwfIS9vMqTmTAUW+SyiGhXt/BGGyY+gaOePgFIJr8cmw/fj z6Ds0l1eSkRE1xFDBFEjUvTbbuQ+/iCs61dDLC6G+13/B9+1m6GaOEMaArWpErx4JYJqTzSbkP/G i8hfOB/2PCOUnbpAF7sWqgnTAaVSXk5ERNcZQwRRA7OdPQPz+zG49K+hyP/3c7DnXoayR8/yfg9v Nql+D1cjXY0oKpLPIpKUHEhG7pSxKNq9AwCgmjAduuXroezUVV5KRET1hCGCqIEU/vQtDHMmwTBl bNldpq0WuPbqA+/X34buw9VNst/D1fBeEXQ15uXvw/jsDNgv5UDZtTt0K+Ph9dhkeRkREdUzhgii G8ieexmWNctwedRwmGJeg+1oCqB0hcfwEdB98jm0766A+4DB8qc1G9IITbxrNcmUZqTBMHU8Cjau h+DqCtWUWdB9tBbK9h3lpUREdAMwRBDdALZTx2Fa/CoujwmHdf0a2PPzoND5wuuxyfD7fBs00Qug 7NBZ/rRmR/Ao7xfBKxFUgTV+HXInPQJb2im49ugJ3fL18BobBSj4FUZE1FD4CUxUj4p2b4fxqWkw PPG4NHa9W9ht8H51Mfw2fg/VhOlQ+PrJn9Zs/d2cifeKoLL+QoZZE2BZ+REAQD19LrQfroZLUHt5 KRER3WAMEUTXmWi1wPrlZ8h99H7kv/ESSlIOQNGiJbwenQS/DQnwWfwB3AfeJX8aAQCbMxEAlJbC un41DE88DtvxVLgEtYfuk8/h+fCj8koiImogDBFE10nphSyY3lmIy6PvgWXFByjNzoKyR094v7II fvHfQjXxCShatpY/jSoQPFVl/8MrEc2WPeciDDOjYFnzMWArgedD4+G7+ks29yMiamQYIoiug4KN 62GY9DAKv/u67P4OQ4ZD+9Ea6D5cDffBw+TlVAOpYzX7RDQ7dlM+zB++jcvjRsJ2+gQULVrC5+1Y qGc8JS8lIqJGgCGC6B8ozTgLw5xJMC9/H2JxMTz+7z74bfgG3vMXwrX7TfJyugrBkzeca44KtsQj N/JBFHy9EQDg8X/3wXdlPNz63iwvJSKiRoIhguha2GywfrYKudMehe1oClwC2kL7znJonn+1Wd0c 7nrjEK/NS/HvvyB34sMwL30HoskE15t6Q7d0HTTPvwpBrZGXExFRI8IQQVRHpRlpMDzxOCxrlwO2 EnhFToXvui1wDe0rL6U6Ejw4OlNzIJrykf/Gi8ib/wxKz6XDpbU/vOcvhPb9T6Ds2l1eTkREjZAi IyMD8gcRVWW/nANTzIKy8erPnoZb2K3w/XQrVJFT5aV0jaTmTEUMEU1V8f6/kDt1HIp27wAAqKbM gu/6r+E+ZLi8lIiIGpmKeUERFBQE+YOI/iYWF8Oy7hPkRj6Ewp++g8K3BbznL4TP4g/h4h8oL6d/ QGrOZLXIZ5GTE20lMC99B3nPz4b9Ug5cAttB98nnZTeNIyIip1AxL7A5E9EVFCf/gdyoUbCu+wRi USE8738Yvms38lfTesLmTE2Tq/48DNMeRcGWeEAU4fnAGOg+2cBhW4mInBhDBFE1Sg4kwzBnEvKi 58CecxHKHj2hW74e6jnPQfAqv5cBXXdScyYO8dpkWL/8FP7vL0RpxlkofP3gs/hDqGc/C8HNTV5K REROhCGCqALbiaPIe+FJGJ+dAdvRFCh8/aB5+kXoPlwNZacu8nK6zjg6U9Nhz7kI47wZsKz4EADg NmAwdCvj4RZ2q7yUiIicEEMEEYDSc+nIm/8MDDOjUJz0OwSNBqppT8L306/gcd+D8nKqJ1JzJt4n wqkV7d6B3KnjUHIwGYKHJwyjxsPn9beh8PaRlxIRkZNiiKBmz/r5GuROfBjFv/8Cwd0dXo9OhN/6 bfAa8xgEd3d5OdUjNmdybqLVAtPiV5H/xosQzSYou98E3Sefw3TrQHkpERE5OYYIarZsp47DMHU8 LKuXAY675K7fBtXEGez30ECk5kwMEU6n5MhBGKaNR+H2RACA1+NToPtoDUcwIyJqohgiqFmyrF4G wxOPw5Z2qqyz58J3y+42rdXJS+kGEjw5OpMzsqxeBuPcqSi9kAUX/0BoP1wNVdQ0eRkRETUhDBHU rNjOnEJu1EOwfr4GAOBx77/gu3Yz3G69Q15KDcDRJwK8EuEUSjPPwTAzUjqePB8YA93KeLj26Ckv JSKiJoYhgpqF4r/2wvj0NBimjUdp5jkoWrSEz9ux0Dw7H4JXWTt8aniCxhsAYM/Pk8+iRqZg2ybk Rj0E24ljcAloC+37K8uGbmU/IiKiZoEhgpq0oj3/g2FmFPJenIuSwwfKOk4/Nhm+azfBre/N8nIi ugr75RzkvTgX5g/eAgB4jXm87OrDTaHyUiIiasIYIqhJKkk5AP/33kT+ay/AduIoAMBz9PiyjtMT pv/dbIYaHUGtAQCIFrN8FjWwgoTNyJ04BsV/7YVLm4Cyvg/T5vDGcUREzRBDBDUp9jwjTG+/DuNT 0+CalQkA8BhxP/ziv4X6iafYcdoJ/N25mv0iGovS7CwYn5sJ8/sxEK0WeEaMgm4V+z4QETVnDBHU ZBR+swW5Ex5C4Q/fAADyht0H38++huaZl6Fo0VJeTo2UdMM5jtDUKBTu+B6GSY+gZH8SFD46+Cx8 F+q5L0BwLxuOl4iImieGCHJ6tjOnYJg9Eab3FkM0meDW92b4xm1G3vCRcGnjLy+nRo5XIhqH0uws 5D03C6b//BtiUSHcbr0DulXxHMmMiIgAhghydtbP18AwbTxsx45AofOFJnoBfN6OhUtgO3kpOQnp SkSBVT6LbpCCrzfCMPFhFO//C4KnJ9Rzo+Gz8F02ByQiIglDBDml0uwsGOdOke427fXoRPiu3QSP 4SPkpeRk/g4RvBJxo5VmnoPx6Wkwf/g2xOJiuPW9GbqV8fCMeEheSkREzRxDBDmdwsRtMEwei5Ij h+DS2h+6peugmjgDgkotLyUnJHiUtbVnc6Ybq2DT58iNeqhsKGRPT2ieebnsql5rNgkkIqKqGCLI adjz85D37+dgWvImxMICuN85FLqVG6Ds2l1eSk5M8Cy7+R+vRNwY9ks5MD47A+aP3wMAuN0yoOyq 3oj75aVERESSRhkisrKyEBwcDEEQIAgCVCoVkpOTpflRUVHVTq/4vCFDhsBs/nuc+eTkZKhUKgiC gKioKGk6rrA8ajxKjhyCYdp4FP+2GwCgnvMcvBfESCec1HT8PToTQ0R9K9r1E3KnjEXJgWQI7u7Q PP0ifBa9B4UfRzMjIqIrU2RkZED+aGh6vR46nQ56vR6iKMJisaB///4AgJiYGKSnp8NkMiE+Ph6j Ro1CVlYWzGYzxo0bh5kzZ0IURQQHB2PWrFlAebgYNWoU4uPjYTKZkJ6ejpiYmCsujxoPa3wcjHOn wH4pBy5tAqBbtg6e9z8sL6MmQmrOxI7V9Ua0WmBa/Cry33wZotkEZdce0K34HB73PSgvJSIiklTM C4qgoCDIHw1Nr9dDq9VCoym7c21FqampCA8Ph1qtRlhYGAAgKSkJJpMJRqMRw4YNAwCMHj0au3bt QlZWlhRKwsLCoFarER4ejsTERJjN5hqXRw1PNOUj74UnYVkZCwDwGFl2gytlFzZfasqk5ky8T0S9 KDlyCLkTx6BweyIAwOvRSdAtjeOIZkREdFUV80KjbM6UmpqK3bt3Q6PRQBAE6aqB2WxGeno6QkJC AAAajQYdOnRAamoq9Ho9ACAgIED6ryiK0Ov1VUJJSEgI0tLScOHChRqXRw2rJOUAcic/guKk36HQ lt3gSvMUb3DVHLA5U/0p2Lap7Kre5Ry4tPGH9v2VUE18Ql5GRER0VY02RERGRkIURSQlJeH1119H QkICTCYT0tLS5OVA+dULg8EgnwyUL686ZrO5xuVRwxCLi2FZtRT5/34O9tzLcBswCLqVvMFVc+K4 2RwYIq4r01uvwfzBWwAA9zuHQLdiA1xvCpWXERER1YogiqIon7hixQpMmzZNPrnBODpCx8bGYuTI kZg3bx4iIiJgNpsxcuRIhIeHY9iwYZg8eTISExPh7++P5ORkPPjgg9i6dSv0ej2WLFmCb775Bmq1 GgkJCZg9ezZ27NiBKVOmVLu86Oho+cuQmkZR/fA8lgLdlvVQ5hkhurrBGDEaplsHysuoifPa/yda xK+Btd+tuPTIBPlsqiMXw2W0XLccbvpzAADD/Y/ANGCIvIyIiJxcQEAA/P3rb1juKvlArMby5cvl kxpUZGSkuHjx4ir/r9frxaCgIHHbtm2iXq8Xe/fuLSYlJYmiKIrbtm0Tg4KCRL1eLyYlJYm9e/cW 9Xq9KIqiuHjxYnHw4MGiyWSqcXl045ReuigaX3lWvHj3zeLFu28Wjc/NEksvXpCX1ZljXyDnUrhn p3jx7pvFvH8/K4rcjv9I8b6/xJz77xIv3n2zePnRf4klp07IS24IbsOmgdvR+XEbNg0NtR3l+aDR NWcym80YMmQIEhISgPKhWXfu3Cl1mA4JCZE6RTs6QIeFhUGj0UCr1WL79u0AgE2bNmHIkCHw9/dH QEAADAYDkpKSYDabkZiYKHWmrml5dGMUbP4cuZGjUPzbbghqDTTPzofPWx9B0bK1vJSaCcGrvGN1 ETtW/xPWT1ci7/VoiGYT3AcPg27F51B26iIvIyIiuiaNLkSo1Wps2LABs2fPhiAICAsLQ2xsrDTE a3R0NIKDg6HRaDB27Fhs2bIF/v7+0vOWLl0KQRCQnp6O2NiyUX38/f2xZcsWjB07FhqNBsHBwVJz pZqWR/XLnnOx7AZXy96DWFQEt9sHwnf1F/C491/yUmpmeLO5f6b0gh7GOZNgiVsB0WSCem40vF9Z BMFLJS8lIiK6Zo0uRKD8pD89PR2iKEIURURERFSaHxcXV+X+EfLn7dq1C2q1WprXv39/WCwWiKKI uLg4aTqusDyqH0U7f0Tu1HFlN7hSqaGJXgCfN5ZA4dtCXkrNkGMELt4nou4KE7fBMHUcSo6mwMU/ ELrln8Ez4iF5GRER0T/WKEMENU2i1YL8hfORv3A+RLMJbrcMgO/aTfAYPkJeSs3Y3zeb45WI2hLN JuS9Mg+mJW9CLCiA+x2DoVu5AcpOXeWlRERE1wVDBN0QJYcPIHfiGBTt/BGCRgPN86/CZ9F7UOh8 5aXUzP19szmGiNoo3vcncic+jOK9ewAAmqdegPdrb/OeKkREVK8YIqjeWdevgfHpabBfzoH7nUPg u2YTPP7vPnkZEVDhPhEMEVdnXvYe8p6fDbshFy7t2kO3cgM8Ro6SlxEREV13DBFUb+x5RhifnQHL mmUQXF3LOngueAsKrU5eSiSR7ljN5kw1sqWdQu6kMSjY/DmgUMBrbCR0n6yHsn0neSkREVG9YIig elGScgCGKWNRciAZLgFtoV32KTt4Uq0J7u4Ar0ZUJYoo2LgexplRKM04C5f2HaH7aC1UU2ZDULrK q4mIiOoNQwRdd5Z1n8D41DTYDblwH3w3dB9/BmX7jvIyohr93S+C94pwsF/OgfH5WTAvfx9iSQm8 Hp0I35XxUHbtLi8lIiKqdwwRdN3YDbkwPjcT1nWfAI4Onq/8R7p5GFFtSSM08UoEAKDo5x3InfQI SvYnlfV9+PhTqCbOkJcRERHdMAwRdF2U7E+CYdr4spMc/0DoVnzODp50zQQPjtCE8ntlmN56Dfmv vwjRYobnw4/Bd82XUHbuJi8lIiK6oRgi6J+x22GJWwFj+Qgx0vj0HTvLK4lqzzFCUzPuXF1y5BAM U8ah8MdvofD1g/ad5VBPf1JeRkRE1CAYIuia2XMvw/jsTFg/XQmIdo5PT9eNorxPBJphnwixqBCW lR8hb/4zKM3Ogvvgu+G76gu4hvaVlxIRETUYhgi6JiX7k8pGXzq0j82X6Por7xNhL7DI5zRpRT/v QO7jo2CNXwcA0ES/WtavSOMtLyUiImpQDBFUZ5Y1H8P43EzY8/PgPngYmy/Rdee4V0RzuRJReiEL eS89hfzXX4Q99xI87nsQfp9uhcdw3pSRiIgaJ0VGRgbkD6Lq2A25MD7zBKzrVwMA1DOegvcri9h8 ia476YZzzaBjtXXDWuQ+dj+K//wNLkHtoX3/E2iefhGCWiMvJSIialAV84IiKCgI8geRXHHyHzBM GYeSQ/ug8NFCu2QZPB8aLy8jui4cwwI35Y7VdqMBec/PhmXVUgju7lBNmwPf1V/C9abe8lIiIqJG oWJeYHMmuirL6mXIi54De54Byq49oPv4M7j27i8vI7puHFe3murN5kr2J8EwdRyK9/0JF/9AaGPX wmvM4/IyIiKiRoshgmpkN+TC+NQ0WD9fAwDwGD4C2g9WQtGylbyU6LoSpCFem1jHavmQyI4+Re07 ySuJiIgaNYYIqlbx/r/KRl9KOQDB3QOa51+FJnoBBKWrvJTouvu7T0TTuhJhnPfE30Miz5vPPkVE ROS0GCKoCsuqpch7bhbseUYoO3aG7uNP4fF/HCWGbhyh/D4RTaVPROGP3+LSg3ej5PABuLQNgu+q L+AR/i95GRERkdNgiCBJ6QU98uY/A+uGtQAAzwfGQLfic7i0C5aXEtWrpjI6k/1yDvJefhqmt16D aDLBM2JU2TEV3EFeSkRE5FQYIgjFyX8g75V5yH3sART//gsELxW8F7wF9exn5aVEN4RQfrM5Zw4R hd99jdxJj6D4j18haLzh88YSqOe+AMHNTV5KRETkdBgimimxuBgFCZuRO2kM8qLnoHjvHgjuHvB8 8BH4roqH+51D5E8humGkKxFO2JzJbshF3gtzYHpnIUSLGW63DIDv6i/hdvtAeSkREZHTYohohkoO JCM3ahTM78egNOMsXNoEQD37Wfht/B7qWfOgaNla/hSiG0oananQKp/VqJXsT4JhyjgUJ/0BAFDP eQ4+i96DQucrLyUiInJqDBHNiFhcDPOyd2F8dgbsORfhFnYrvF9/G76ffQXPB8ZIN/giamhSx2on Gp3JsuZjGJ+bWXY/lS7d4btmIzzvf1heRkRE1CQwRDQTtlPHYXjiMRRs3gCFtw983lgCn8Ufwn3A YHkpUYOT+kQUNP4rEXZDLoxzJsG6fjUgKOA1NhK6D1dzQAIiImrSGCKaAev6NTA88ThKM87CLexW 6FbGs302NWrOcp+I4qQ/yu6ncjQFipatoX3nY6imzAaUSnkpERFRk8IQ0YTZcy/BOGcSLGuWQXBz g3r2s/BZ/CEUvn7yUqLGxXElwmyWz2kURFsJzLFLkPfik7DnGeF+51D4roqHa68+8lIiIqImiSGi iSr+ay8MU8ah5GgKlO07QffxZ/B8YIy8jKhRElzLh0EV7fJZDc52+gQMUx9FwdYvILi5QRO9AN4L YiB4qeSlRERETRZDRFNjt8Oy8iPkvfQU7Pl58BhxP7RL4+AS1F5eSdSoCSo1AEBhtchnNQy7HdYv 1sEwayJKz52FS7tg6D7ZAI/hI+SVRERETR5DRBNiv5QD49wpsMavg+DhAe9XFkHzzMu8uRU5Jccw r4qSEvmsG86ecxHGeU/A8slHgK0EHiPuh275ergEtJWXEhERNQsMEU1E8R+/wvjUlLLmS526Qvfx Z3AfPExeRuQ0HMO8CiXF8lk3VMnBfTA88RhKDh+A4OEJ75feYDgnIqJmjyHCydlN+chfNB95Lz+N 0gtZ8Ix4CLrln8ElsJ28lMipOEZoEooaboSmgk2fwzjvCdjzjGV9i1ash/td98jLiIiImh2GCCdW /NvPMEx4GEX/+xGKlq3h89ZHUM+NlpcROSXHvSKEoiL5rHonFhUhf0E0zB+/BwDwuPdfZX2L2HyJ iIgIYIhwTnajAfmvv4C8fz8Le74Rnv8aDd81X8Kt3y3yUiKn5bgSoSi+sSGiVH8ehllRKPplJwT3 8r5Fz85n8yUiIqIKFBkZGZA/qPEq2vUTcic+jKKf/wcX/0Bo31kO9ZPPSydcRE2Fo2P1jewTUfzX XhhmRKL07Bm4tO9Y1nyJfYuIiIgAoFJeUAQFBUH+oMbHnnsZea/MQ/6bL0M05cPzgTHQreTNrajp kjpWF9+YEGH9bBXyXpwL0WKGx73/gu/KePYtIiIiqqBiXmBzJidQ+OO3yJ08BsV790Ch1cHnP+9D PftZCO7u8lKiJkNwL+sToajnjtWi1YK8+c/AsnY5ICigmjYHmmfny8uIiIioAoaIRsx+OQd5L8yB 6a3XIJpMcLv1DuhWfQG3m2+XlxI1OYJX2ZUI1GNzptKMszDMiETx779A8PSEz8J34DXmcXkZERER yTBENFJFu3cgd/JYFCf9AcHDE5p58+Gz8F0ofLTyUqIm6e+O1fUTIor3/QnDrCiUZp6DomVraD9c DbdbBsjLiIiIqBoMEY2MaLXAtPhV5L/xIkSzCcpuIdB98jk8wv8lLyVq0qT7RNTD6EyWtcuR9/xs iAUFcA3pBd3yz6Bs30leRkRERDVgiGhESlIOIHfKOBRuTwQAeD06CbrYtXDxD5SXEjV5jvtEKK7j fSJEswl5L8yB9bNVgOP+Dx+sgsLbR15KREREV8AQ0UhYVi2F8alpsF+8AJc2/tB+uBqqiU/Iy4ia j+t8JcJ29jQMTzwuNRH0nr+QHaiJiIiuEUNEA7PnZMMwZxKsG9YCADyGhUO3YgNce/SUlxI1K9IQ r9fhSkTR/36AcdZElF7Ql93/YflncB8yXF5GREREtcQQ0YCK9+5B7tTxsB1NgaBSw/vVxdC88Nrf o9IQNWOOm80p/uHoTJZ1nyB/0SsQiwrhGTGK938gIiK6DhgiGoh52XvIe2UeRLMJrr36wHflBrgP vEteRtRs/dOO1bazp5E7ZSys6z6B4OUF71f+A/XcF+RlREREdA0YIm6w0gtZMEx/FAWbPweUrlBN nQ3tko+haNlaXkrUrElDvNa1OZMoomDT5zDOiETp2TNlzZc+/gzug++WVxIREdE1Yoi4gYr/+BWG 6Y/CdvokXALbQbcsDl6PRAIKbgZn88Mhm3wSXWeO0ZmEOtyx2p57GcZ5T8D88XsQS0rg+a/R0C1b B5eAtvJSIiIi+gd49nqDmJe+g7yXn4ZoMcPzgTHQfbIByg6d5WXUiF3IE7FuTzHuXmTBW98U4a1v 6vgLOdWJo2N1bftEFP/5G3InjUHJof1loy8tiIH6yechuLrJS4mIiOgfYoioZ6XZWTDMmoCCLfEQ vFRlJzazn4XgxhMbZ+EID4/GWhG3p0SafjC9tFIdXV+OjtVCLUKE9bNVyHvpqbIbNHbtAd3KeLjf OVReRkRERNcJQ0Q9Kv7jVximPQrb8VQoO3WBbsXnPLFxIhfyRDyzvrBSeOgd7ILnR7qjd7ALLuSJ vBpRj6SO1VfoEyFaLch74UlY1i4HAHhGjIL2/U/g0sZfXkpERETXEUNEPanUfOnBR6Bbvp4nNk7C EQ4ejbXiYHop2vgIiBroivWzvPDOox64J1SJ50e6A+VXIy7kifJF0HXiCBJiNf0i/r553O9lzZde WQT13BfYfImIiOgGYIi4zkovZMEwM6pC86W3oJ41T15GjVDFZks/HLJVCg+RA93QxkeQatv4CNLV iHV7rt7chq6No3O1WFBQaXrRzztgnD0Jpfrz5Vf51sN98LBKNURERFR/GCKuI2n0pRNHKzRfGiIv o0amuj4PFcNDTXg1ov79HSKsZRNsNpg/fBv5r78IsbAAnhEPQfvRGo6+REREdIMxRFwn5g/f/rv5 0ujxbL7kBKoLD72DXa4aHhx4NaL+CR5lIzSJhQVlV/nmTELB1xshuHuUN1+KZvMlIiKiBsAQASAq KgqCIEClUiE5OVk++4qKft6B3IkPl53YqDXweWMJ1E88JS+jRqRinwdHeLgnVCn1eajYbOlqeDWi fjlGaCr84RsYpo2H7eQxKNt3YvMlIiKiBqbIyMiA/NGcxMTEID09HSaTCfHx8Rg1ahSysrLkZVWI pnzkL5qP/NdfROm5dLj26AnfTz6H2+0D5aXUCFS86uDo84AKzZaeH+lep/DgwKsR9ctxr4iCTZ9D tFrgMXwEtLFr4BLYTl5KRERE9axiXhBEUazy8+mKFSswbdo0+eQmKSoqCiEhIYiOjkZWVhZuu+02 fPTRR4iIiJCXSoqT/4Ap5jXYcy8BALwip0IVOVVeRtfoQp6IHw+VoHeQC3oHu8hn19pPvxxClti9 0r0dUH7if0+oslZNlmrjQp6IR2OtaOMjYMljntcURqh6ef9+DsW/7QYAaJ56AR4jR8lLqJ5dyBOR bbTLJ9fJiRMn0LVrV/nkWmmtrXrBvLrXU5srgdl5drT2qbo8x48BdGXJycno37+/fDI5EW7DpqGh tqM8HzTrEGE2mzFy5EjMmzcPERER0r/Dw8MRHR0tLwcAmN+PQUHCZgCAS1B7eL/8JpSdav5ydHwB H8wouzHZgYyyL782PgJ6B7mgjY+A1lrFFU88q1tGttGO3sEu6B1U9sV3tS/B6pYB2etAeZ+AG+1C noiD6aXIzrNXe8KP8uZGVwoVFd/fgQx7lRvBOYLDlZbxTzyzvhAH00srDf9K/1z+oldg2Z+Elos/ gLJTF/lsus6udhw1VTxua6ehTlzo+uE2bBoaajvK80GzDhHyKw+1CRE5w24BAGwLHofPOzX9ddQQ HMEK//Cu0L6eJYgI86q34FCR42oEXV+3XtyNw75hsCpV8ll0g1Q8Hq+VyWSCRqORT66V6q46VPd6 rvRDjEMbH6HaKxa9g1xwT6hSPplkGurEha4fbsOmoaG2ozwfNOsQUdcrEStWrMCKFSvkk4mIiIiI GtS0adPq9fxdng+adYjANfaJICIiIiJqTuT5oOo14WYmJCQEiYmJMJvNSEpKAgCEhYXJy4iIiIiI qFyzDxHR0dEIDg6GRqPB2LFjsWXLFvj78yZxREREREQ1afYhAgDi4uIgiiIsFkuDdFQhIiIiInIm DBFERERERFQnDBFERERERFQnDBHUJCQkJEAQBOmRkJAgzUtOToZKpYIgCIiKiqr0PGqckpOTERQU hOTkZGlaVFQUBEGASqWqNJ0aH8e2EgQBMTEx0nQei86j4meqfFvxWGz8oqKiKh17ABATE1PtdyS4 TRul5ORk9OnTB1lZWdK0ip+twcHBleY1xOcrQwQ5vaysLCxZsgR6vR6iKGLbtm2YPXs2srKykJWV hVGjRiE+Ph4mkwnp6elVPlipcTGbzZg3bx4uX74sTYuJiUF6ejpMJhPi4+MxatSoSh+e1HhU3FZ6 vR4bNmxAcnIyj0UnkpycjFmzZiEpKanKtuKx2PhFRUVh3bp1laYlJCRg6dKl0Ov1SEpKwqxZs6Sw wG3a+CQnJ2PQoEEwGAzSNEfwE0URoihiyJAheOGFF4Dy86CG+HxliCCn5+/vj127dkmjajmG6E1K SoJer4dOp0NYWBjUajXCw8OlIX2pcYqNjYVWq4Wfn580LTU1FeHh4VCr1ZW2LzUuZrMZe/fuxZIl S6BWq+Hv748DBw6gf//+PBadiF6vhyAICAgIgFqtRnBwMFJTUwEei42a2WzGkCFDAACRkZGV5qWm pmLIkCHw9/dHt27d0LFjR2zfvl2ax23aeCQkJGDQoEFYsmQJdDqdND0iIgJxcXHSv0ePHo1du3Yh KyurwT5fGSKoyXFckQgICIBer4dWq4VGowHK7wuSlpYGk8kkfxo1AsnJydiwYQMmT54sTTObzUhP T0dISAgAQKPRoEOHDtJJDTUeJpMJRqMRa9eurdKcicei86h4Ilnx+OOx2Lip1Wrs2rWr0ommQ2pq qrTdKgZDbtPGJyIiAhaLBTfffLN8ViWpqano0KEDNBpNg32+MkRQk+JoCjNr1iz079+fH4RO5oMP PsAbb7yBgIAAaZrJZEJaWlqlOmq80tLSkJ+fD1EUkZSUhNjYWCQnJ/NYdCL+/v74/fffMXv2bGg0 GsybNw/R0dE8Fp2UIyhUh9vUOSUnJyM2Nla66ttQn68MEdRkmM1mjBw5EsHBwYiOjgbK0zg5B0d7 z4iIiErTHb+MkXPQ6XR48sknAaBSswkei84jISEBt912G37//XeIoohNmzYhKiqKx6KTclx5qA63 qfNx9JeIjY2V7m3WUJ+vDBHUJDgCRHh4eKVLuQEBATAajdIlvYqX/6hx2bRpE9atWwdBEBAWFoZz 585h0KBBOH78eKU22Y5fzhrqQ5NqptFooNVqodfr5bN4LDqRTZs2Se3nUaHttclk4rHopEJCQqTt VrEJk7zPC7dp45acnIwHH3wQP//8c6Uf3Brq85UhgpxexQDhuALhEBAQAIPBILXtTUxMlDqQUePi uHO8oxlMu3bt8PPPP6N///4ICQmROok5Ovw52m1T4+Ho0Ldp0yYAwM6dO/HXX39h2LBhPBadSMUO mygPFY4TEh6LzikkJETapsePH8eZM2cwbNgwaR63aePnCBBbt26VrkA4NNjnq1iN5cuXyycRNVpJ SUmil5eXCKDSY9u2bVXmR0ZGyp/+/+3cMWgabwPH8d9lrCdk7An1oDQUXFrQbB0sdMlgJod20U1C knZxMEs7tIsOWUqSwS1ZzOCkg0shdmohHnRyDTpouhW8zvcf/vU4L4b0efvy0jf5fuAgeS53j3Jc yDd3J/5Cg8EgePDgQTAYDMKxUqkUSAru3bu3MI6/z/xYRc/DgHPx/0q9Xg+PYTqdDiaTSbiOc/Hv VyqVgnq9vjAWPabR8zLgmP6VBoNB8OTJk/Dcix6/Zefm/+L3a7wPrCAIgnhYNJtNVSqV+DAAAACA OyjeByvj8VjxBQAAAACior2wkk6nFV8AAAAAICraCzxYDQAAAMAIEQEAAADACBEBAAAAwAgRAQAA AMAIEQEAAADACBEBAAAAwAgRAQAAAMAIEQEAAADACBEBAAAAwAgRAQAAAMAIEQEAAADACBEBAAAA wAgRAQAAAMAIEQEAAADACBEBAAAAwAgRAQAAAMAIEQEAAADACBEBAAAAwAgRAQB3RKPRULlcliR1 u13l83n5vh//sVut0WjcyfcNAP9tK+PxWPEFAHC7FQoF9ft92bYdXwUAwFLRXlhJp9OKLwCA26Xb 7Wpvb08nJycql8sLVyLK5bJev34t13VlWZbK5bIajYYsy1IikZDneeF+yuWyLMuSZVlqNBoLcyzj +77y+fzSbbrdbjgevzownz++zbL553NE182vuCgyTyKR0JcvX8Jxz/OUSCSWvk8AwFXRXuB2JgC4 AwqFgur1ukqlko6Pj+Or1el09PXrVw0GA7XbbQ2HQwVBoGKxqI8fP0q//rAfjUaazWYaDAZ6//69 ut1ufFcLDg8P5bqugiDQZDJRr9fTdDqV53na2dnRYDDQbDaTJO3s7Ei//ujv9XqazWaaTCZqtVry PE+NRkP9fl+TyWTp/PPX1ul01G635XmePM/Ty5cv1el09P37d/348UOS9PPnT1WrVZ2enioIAp2e nobvEwBwMyICAKB8Pi/HcZRKpbS2tqY3b95IkjKZjPTrv/29Xk8bGxuybVvZbFbFYlHD4TC2p+s5 jqN+vy/HcfTp0yc9fPhQjx8/lm3bqlarGo1G8n1f7XY7nMdxHH379k3ZbFbD4VDb29tyHCecv91u h/ufb5PL5bS2tiZJmkwmWl9f1/Pnz8N5likUCkvjCgCwHBEBAAhj4SZ7e3vhLUMnJyc3RkStVpOk cJvolYPPnz8rmUzKsixtbm7q4uJCl5eXGo1GkT38y/f9K+Px1xz/XtK1ry+RSKjVaml3d1eWZcl1 XU2n0/iPAQCuQUQAAH5bp9NREATh8jv/vT8+Pg5vZ3r79m347EGpVFrY12g00qNHj+S6bnwXsm37 yvh1gRC1LCzmHMfRaDRSEAQ6ODjQq1ev+NQmAPhNRAQA4Ea2bWtjY0P7+/vyfV/T6VSu6974cPX8 Ie251dVVpVIpvXjxQmdnZ2FQlMvl8OHqTCajXq+3ME+321Umk9HR0VH4TEW73VaxWIzMdlUul9PF xYXOzs7k+7729/clSZeXl3r69OnCw9Su6/JpVQDwm4gIALgjMplM+OlM/4larSbXdZVMJpVKpZTP 58PbleKxMFev13V0dCTLspRKpVStVsNnGg4PD5XL5WRZlvr9vlqtlmzbvjLP9va2CoWCarWa8vm8 UqmUcrmc3r17p0KhEJ9ygeM4Ojg40ObmppLJpJ49e6bV1VXdv39fHz58COff3d1VvV6Pbw4AuIYV BEEQH2w2m6pUKvFhAACW8jxP5+fn2traiq8CANwC8T7gSgQA4I+dn59rfX09PgwAuKWICADAH9va 2lI2m40PAwBuKSICAAAAgBEiAgAAAIARIgIAAACAESICAAAAgBEiAgAAAIARIgIAAACAESICAAAA gBEiAgAAAIARIgIAAACAESICAAAAgJGV8Xis+AIAAAAAUdFeWEmn04ovAAAAABAV7QVuZwIAAABg hIgAAAAAYISIAAAAAGCEiAAAAABghIgAAAAAYISIAAAAAGCEiAAAAABghIgAAAAAYISIAAAAAGCE iAAAAABghIgAAAAAYMQKgiCIDzabzfgQAAAAgDusUqmEX/8Dju92+XcoXoAAAAAASUVORK5CYII= --000000000000266f1f062aa7612c-- --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v10-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120h40 RnJvbSAzMTdkNTVmMzQxOTY3ODQxM2JhZDE2MTFjYzc4OGNjNGFhMGI0MTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDEw LzExXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP UC9SRUlOREVYIG9wZXJhdGlvbnMKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMs IGFuIGF1eGlsaWFyeSBpbmRleCBtYXkgYmUgY3JlYXRlZCB0byBoZWxwCndpdGggdGhlIHByb2Nl c3MuIEluIGNhc2Ugb2YgZXJyb3IgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzIChmb3IgZXhh bXBsZSBpbiBjYXNlIG9mIGluZGV4IGNvbnN0cmFpbnQgdmlvbGF0aW9uKSBzdWNoIGluZGV4ZXMg YmVjYW1lIGp1bmstaW5kZXhlcyB3aXRob3V0IGFueSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpbXBy b3ZlcyB0aGUgaGFuZGxpbmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKCiogQWRkIGF1eGls aWFyeUZvckluZGV4SWQgcGFyYW1ldGVyIHRvIGluZGV4X2NyZWF0ZSgpIHRvIHRyYWNrIGRlcGVu ZGVuY2llcwoqIEF1dG9tYXRpY2FsbHkgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBt YWluIGluZGV4IGlzIGRyb3BwZWQKKiBEZWxldGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9w ZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRpb25zCiogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8g dmVyaWZ5IG5ldyBiZWhhdmlvdXIKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sICAgICAgICAgfCAgMTQgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAg ICAgICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAg ICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDM2MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCA1NDU2NjIyM2NiMC4uZmI3Y2QxNWY1ZmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjYxLDEwICs2NjEsMTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2Nj YXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVj b21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRo ZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0g ICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJP UCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlhcnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAg ICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk IHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBkcm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUg aW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0 bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNoIHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBv ZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhlcy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxp ZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVj b21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCmluZGV4IDZlODJhZTYzOTkwLi5mNTE4MTgxMTE5OCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKQEAgLTQ3MywxNCArNDczLDE3IEBAIEluZGV4ZXM6CiA8L3Byb2dyYW1saXN0aW5n PgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBp cyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsIG9yIDxsaXRlcmFsPmNjYXV4 PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGls aWFyeQotICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwg YW5kIHRoZSByZWNvbW1lbmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KLSAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPmNjb2xk PC9saXRlcmFsPiwKLSAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hp Y2ggY291bGQgbm90IGJlIGRyb3BwZWQ7Ci0gICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1l dGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBpbmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBw cm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4KKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbD4s IHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBpbmRleAorICAgIGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbi4gVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 CisgICAgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sIHRoZW4gYXR0ZW1wdAorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAg ICBhbG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LiBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0 ZWFkIHN1ZmZpeGVkCisgICAgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LCBpdCBjb3JyZXNwb25k cyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gKKyAgICBjb3VsZCBub3QgYmUgZHJvcHBlZDsg dGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3AKKyAgICBzYWlk IGluZGV4LCBzaW5jZSB0aGUgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYg dGhlIG9ubHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDJhZmM1NTA1NDBjLi5hZDAy MjgyZmVmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IGY0N2JiY2E5ZGJkLi5kZTYzNjUyNzQ0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNjg3LDYgKzY4Nyw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJ CXBhcmVudCBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiBwYXJlbnRDb25zdHJhaW50 SWQ6IGlmIGNyZWF0aW5nIGEgY29uc3RyYWludCBvbiBhIHBhcnRpdGlvbiwgdGhlIE9JRAogICoJ CW9mIHRoZSBjb25zdHJhaW50IGluIHRoZSBwYXJlbnQ7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgor ICogYXV4aWxpYXJ5Rm9ySW5kZXhJZDogaWYgY3JlYXRpbmcgYXV4aWxpYXJ5IGluZGV4LCB0aGUg T0lEIG9mIHRoZSBtYWluCisgKgkJaW5kZXg7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcmVs RmlsZU51bWJlcjogbm9ybWFsbHksIHBhc3MgSW52YWxpZFJlbEZpbGVOdW1iZXIgdG8gZ2V0IG5l dyBzdG9yYWdlLgogICoJCU1heSBiZSBub256ZXJvIHRvIGF0dGFjaCBhbiBleGlzdGluZyB2YWxp ZCBidWlsZC4KICAqIGluZGV4SW5mbzogc2FtZSBpbmZvIGV4ZWN1dG9yIHVzZXMgdG8gaW5zZXJ0 IGludG8gdGhlIGluZGV4CkBAIC03MzMsNiArNzM1LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAogCQkJIE9pZCBwYXJlbnRJ bmRleFJlbGlkLAogCQkJIE9pZCBwYXJlbnRDb25zdHJhaW50SWQsCisJCQkgT2lkIGF1eGlsaWFy eUZvckluZGV4SWQsCiAJCQkgUmVsRmlsZU51bWJlciByZWxGaWxlTnVtYmVyLAogCQkJIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJIGNvbnN0IExpc3QgKmluZGV4Q29sTmFtZXMsCkBAIC03NzUs NiArNzc4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICAgKChm bGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCkgIT0gMCkpOwogCS8qIHBhcnRpdGlv bmVkIGluZGV4ZXMgbXVzdCBuZXZlciBiZSAiYnVpbHQiIGJ5IHRoZW1zZWx2ZXMgKi8KIAlBc3Nl cnQoIXBhcnRpdGlvbmVkIHx8IChmbGFncyAmIElOREVYX0NSRUFURV9TS0lQX0JVSUxEKSk7CisJ LyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCBhbmQgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSBhcmUgcmVx dWlyZWQgYm90aCBvciBuZWl0aGVyICovCisJQXNzZXJ0KE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9y SW5kZXhJZCkgPT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExNzYsNiArMTE4MSwxNSBA QCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9 CiAKKwkJLyoKKwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2Fz ZSBvZiBhdXhpbGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChhdXhpbGlhcnlG b3JJbmRleElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eGlsaWFyeUZvckluZGV4SWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCQl9CisKIAkJLyogcGxh Y2Vob2xkZXIgZm9yIG5vcm1hbCBkZXBlbmRlbmNpZXMgKi8KIAkJYWRkcnMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOwogCkBAIC0xNDU4LDYgKzE0NzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGluZGV4UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9p ZCwJLyogcGFyZW50SW5kZXhSZWxpZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogcGFyZW50 Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBhdXhpbGlhcnlGb3JJbmRl eElkICovCiAJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LwogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0xNjA4LDYg KzE2MjMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4 UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxp ZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJ CQkJCQkJICBtYWluSW5kZXhJZCwgICAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovCiAJCQkJCQkJ ICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLwogCQkJCQkJCSAgbmV3 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODI5LDYgKzM4NDUsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzg4NSw2ICszOTAyLDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDE3Myw3ICs0MjAzLDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00MjYyLDEzICs0MjkzLDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 Mjk0LDE4ICs0MzQyLDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChpbmRl eEFtID09IFNUSVJfQU1fT0lEKQotCQl7Ci0JCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKLQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCi0JCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4 T2lkKSkpKTsKLQkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkK LQkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7Ci0JCQljb250aW51ZTsKLQkJfQot CiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9D SEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCmluZGV4IDJiNDUxNGU4YTM1Li45OWNjYTY4MjQwMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCkBAIC0xMDM1LDYgKzEwMzUsNjMgQEAgZ2V0X2luZGV4X2NvbnN0cmFp bnQoT2lkIGluZGV4SWQpCiAJcmV0dXJuIGNvbnN0cmFpbnRJZDsKIH0KIAorLyoKKyAqIGdldF9h dXhpbGlhcnlfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhl IE9JRCBvZiBpdHMgYXV4aWxpYXJ5CisgKgkJaW5kZXgsIG9yIEludmFsaWRPaWQgaWYgdGhlcmUg aXMgbm8gYXV4aWxpYXJ5IGluZGV4LgorICovCitPaWQKK2dldF9hdXhpbGlhcnlfaW5kZXgoT2lk IGluZGV4SWQpCit7CisJT2lkCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBJbnZhbGlkT2lkOworCVJl bGF0aW9uCWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbM107CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0 aGUgaW5kZXggKi8KKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZmNsYXNzaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25SZWxhdGlvbklkKSk7CisJU2NhbktleUluaXQoJmtleVsx XSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJU2NhbktleUlu aXQoJmtleVsyXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmpzdWJpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIGRl cHJlYyA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogV2Ug YXNzdW1lIGFueSBBVVRPIGRlcGVuZGVuY3kgb24gaW5kZXggd2l0aCByZWxfa2luZAorCQkgKiBv ZiBSRUxLSU5EX0lOREVYIGlzIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLgorCQkgKi8KKwkJaWYg KGRlcHJlYy0+Y2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYKKwkJCShkZXByZWMtPmRl cHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKSAmJgorCQkJZ2V0X3JlbF9yZWxraW5kKGRlcHJlYy0+ b2JqaWQpID09IFJFTEtJTkRfSU5ERVgpCisJCXsKKwkJCWF1eGlsaWFyeUluZGV4T2lkID0gZGVw cmVjLT5vYmppZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYXV4 aWxpYXJ5SW5kZXhPaWQ7Cit9CisKIC8qCiAgKiBnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzCiAg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgYWxsIGZvcmVp Z24ga2V5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggZmJiY2Q3ZDAwZGQuLmE1MDAzOTQxNjg1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMTksNyArMzE5LDcgQEAgY3JlYXRlX3RvYXN0 X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlj b2xvcHRpb25zWzFdID0gMDsKIAogCWluZGV4X2NyZWF0ZSh0b2FzdF9yZWwsIHRvYXN0X2lkeG5h bWUsIHRvYXN0SW5kZXhPaWQsIEludmFsaWRPaWQsCi0JCQkJIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCiAJCQkJIGluZGV4 SW5mbywKIAkJCQkgbGlzdF9tYWtlMigiY2h1bmtfaWQiLCAiY2h1bmtfc2VxIiksCiAJCQkJIEJU UkVFX0FNX09JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNDc4ZjQzZmJhMGIuLmM0 ZDY5ZWE0ZGMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTIyNCw3ICsxMjI0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1OTMsNiArMzU5Myw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTQxLDYgKzM5NDIsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTQ4LDYgKzM5NTAsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDEwLDEy ICs0MDEzLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMjUsNiArNDAzMyw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwNDUsMTAgKzQwNTQsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDIwNSw3ICs0MjIyLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMjQsNiArNDI0Miw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00NDA2LDYgKzQ0MjcsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ1MSw2ICs0NDc0LDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQ5Mzc0NzgyNjI1Li44ODFlN2NhMjUy OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE0OTIsNiArMTQ5Miw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTUyLDkgKzE1NTQsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjA2LDYgKzE2MTksMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjM0LDEyICsxNjc1 LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0g cmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0 cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCA2OTA4Y2E3MTgwYS4uYWY0OGJlMDRmMjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5j eS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9p ZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5k ZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50 cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCBjMzllZWQyNGYxYS4uYjIwNzhm MGRkNTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxl TnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJ CQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAppbmRleCA3NTY2NDI1MzAyZi4uMGM5ZGU0Mjg1MjcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMwODMsMjAgKzMwODMs MTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2 X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRF IEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9u ICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJP TSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAg XgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRl eF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2lu ZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXgg InB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVY IElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJw dWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3Rh YjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0t IE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAg ICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRy ZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5W QUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhf aW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMx ID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBh dXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVh dGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBp cyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5 LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90 YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5k ZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7 CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhf dGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGlj YXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQg bWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCAxZGYzNDA5Njk2ZS4uOWMzNjJiMzE1OGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTI2OCwxMSArMTI2OCw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4 X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgg YW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9p bmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRl eF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhl IGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBl ZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJl IGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRM WQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJ TlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGlu ZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0g Q2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz LiAgVGhlCi0tIAoyLjQzLjAKCg== --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v10-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hg3 RnJvbSBhMGZiOTc3OGQ3ZTE1NjEyNGNjNzBhZGRkMzZjMDMxYjJhZGMzMDA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDA3 LzExXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyMiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDM4MyArKysrKysrKystLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8IDMwOCArKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE3 ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDM3NiAr KysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAg ICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAg ICAgICAgfCAgMjggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAgICAg ICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAg ICB8ICAgMyArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAg IHwgIDI4ICsrCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0ICAgIHwg IDQyICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAgICAgfCAg IDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAx NyArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgICAgIHwgIDIx ICsKIDIwIGZpbGVzIGNoYW5nZWQsIDk3OSBpbnNlcnRpb25zKCspLCAzODIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggZDBkMTc2Y2M1NGYuLmEzNWQzMWJkMDJmIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKQEAgLTYyMDIsNiArNjIwMiwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tl bmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhh c2UuCiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD53YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRM WTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0 ZSBsb2NrcyB0aGF0IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8g ZW5zdXJlIHVzZSBvZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBm dXR1cmUgdHJhbnNhY3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5v dCBpbiBjb25jdXJyZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJz X3RvdGFsPC9zdHJ1Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1l PgorICAgICAgIGFuZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+ IGNvbnRhaW4gdGhlIHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2Uu CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48 bGl0ZXJhbD5idWlsZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpA QCAtNjI0MiwxMCArNjI1NCw5IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFT IGJhY2tlbmRpZDsKICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgotICAg ICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlPC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+aW5kZXggdmFsaWRhdGlvbjogbWVy Z2luZyBpbmRleGVzPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgPGNv bW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgc2Nhbm5pbmcgdGhl IHRhYmxlCi0gICAgICAgdG8gdmFsaWRhdGUgdGhlIGluZGV4IHR1cGxlcyBjb2xsZWN0ZWQgaW4g dGhlIHByZXZpb3VzIHR3byBwaGFzZXMuCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENP TkNVUlJFTlRMWTwvY29tbWFuZD4gbWVyZ2luZyBjb250ZW50IG9mIGF1eGlsaWFyeSBpbmRleCB3 aXRoIHRoZSB0YXJnZXQgaW5kZXguCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4g bm90IGluIGNvbmN1cnJlbnQgbW9kZS4KICAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmJsb2Nr c190b3RhbDwvc3RydWN0bmFtZT4gKHNldCB0byB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgdGFibGUp CiAgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmJsb2Nrc19kb25lPC9zdHJ1Y3RuYW1lPiBjb250YWlu IHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KQEAgLTYyNjUsOCArNjI3 Niw5IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9y ZSBtYXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8 Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJh bnNhY3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gs IGJlZm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMKKyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9y ZSBtYXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5S RUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJr aW5nIHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQg d2hlbiBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+ bG9ja2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3Ry dWN0bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1 Y3RuYW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwK aW5kZXggMjA4Mzg5ZTgwMDYuLmUzMzM0NWY2YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4 LnNnbWwKQEAgLTYxNCwyNSArNjE0LDI0IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09O Q1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAg b3V0IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAg ICA8bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVB VEUgSU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8 cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2Nh bnMgb2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFs bCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlm eSBvciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCBy ZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0 YWtlcwotICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93ZXZlciwgc2lu Y2UgaXQgYWxsb3dzIG5vcm1hbAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25z aXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KKyAg ICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGlu ZGV4IGJ1aWxkIGFuZCB0YWtlcworICAgIGxvbmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNp bmNlIGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRo ZSBpbmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBu ZXcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBl eHRyYSBDUFUKICAgICBhbmQgSS9PIGxvYWQgaW1wb3NlZCBieSB0aGUgaW5kZXggY3JlYXRpb24g bWlnaHQgc2xvdyBvdGhlciBvcGVyYXRpb25zLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAg ICBJbiBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRl cmVkIGFzIGFuCisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFpbiBhbmQg YXV4aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgogICAgIDxxdW90ZT5p bnZhbGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgaW4gb25l IHRyYW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgotICAgIHR3byBtb3Jl IHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBpbmRleCBidWlsZCBt dXN0CisgICAgdGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdv IHBoYXNlcyBvY2N1ciBpbgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNo IHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5z YWN0aW9ucyB0aGF0IGhhdmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBB ZnRlciB0aGUgc2Vjb25kIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0 cmFuc2FjdGlvbnMKKyAgICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQg bXVzdCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3Qg KHNlZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNj YW4gdG8gdGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNl IG9mIGNvbmN1cnJlbnQKKyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2Fj dGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBv biBvdGhlciB0YWJsZXMsIGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhh dmUKICAgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAg ICAgVGhlbiBmaW5hbGx5IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVv dGU+IGFuZCByZWFkeSBmb3IgdXNlLApAQCAtNjQ1LDEwICs2NDQsMTEgQEAgQ1JFQVRFIFsgVU5J UVVFIF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0KICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nh bm5pbmcgdGhlIHRhYmxlLCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3Mg dmlvbGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9j b21tYW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3Rl PmludmFsaWQ8L3F1b3RlPiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBm b3IgcXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAg IGhvd2V2ZXIgaXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBs aWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29t bWFuZCB3aWxsIHJlcG9ydCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVy YWw+OgorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmlu dmFsaWQ8L3F1b3RlPiBpbmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5k ZXguIFRoZXNlIGluZGV4ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBv c2VzIGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3 aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8 L2FwcGxpY2F0aW9uPgorICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVw b3J0IHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dy YW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTY1OCwxMSArNjU4LDEyIEBAIHBvc3Rn cmVzPSMgXGQgdGFiCiAgY29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwK IEluZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgi IHN0aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1l bmRlZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGlu ZGV4IGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRo b2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0 byBwZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0 aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9w YXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IGRjZjcwZDE0YmMzLi5jNzZkOGVkZDI5MSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTM2NywxMSArMzY3LDEwIEBAIFJFSU5ERVggWyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d ICkgXSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBw b3J0cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0 ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVy YWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29t bWFuZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdy ZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0g ICAgZm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0 ZXJtaW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBw b3RlbnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJl IGRhdGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0 byBjb250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhh biBhIHN0YW5kYXJkIGluZGV4Ci0gICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBs b25nZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2FpdAorICAgIHJlYnVpbGQgYW5kIHRh a2VzIGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CiAgICAgZm9yIHVuZmlu aXNoZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBpbmRleC4gSG93ZXZlciwg c2luY2UKICAgICBpdCBhbGxvd3Mgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUgd2hpbGUg dGhlIGluZGV4IGlzIGJlaW5nIHJlYnVpbHQsIHRoaXMKICAgICBtZXRob2QgaXMgdXNlZnVsIGZv ciByZWJ1aWxkaW5nIGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBPZgpAQCAt Mzg3LDcgKzM4Niw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0 PgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQg aW5kZXggZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRy YW5zaWVudCBpbmRleCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVk IHRvIHRoZSBjYXRhbG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhp cyBkZWZpbml0aW9uIHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRl eC4gIEEgPGxpdGVyYWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAog ICAgICAgIHNlc3Npb24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRl eGVkIGFzIHdlbGwgYXMgdGhlaXIKQEAgLTM5Nyw3ICszOTYsMTUgQEAgUkVJTkRFWCBbICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdIHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0 IHBhc3MgdG8gYnVpbGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25j ZSB0aGUKKyAgICAgICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9y IGluc2VydHMiLCBtYWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBU aGlzIGluZGV4IGVmZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmlu ZyB0aGUgcmVpbmRleCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor CisgICAgIDxsaXN0aXRlbT4KKyAgICAgICBwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRl eCBpcyBidWlsdCBieSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4 IGlzIGJ1aWx0LCBpdHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFs PiBpcwogICAgICAgIHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCBy ZWFkeSBmb3IgaW5zZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNz aW9ucyBvbmNlIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQw OCw5ICs0MTUsOSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4K ICAgICAgIDxwYXJhPgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8g YWRkIHR1cGxlcyB0aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3 YXMgcnVubmluZy4gIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAg IHRyYW5zYWN0aW9uIGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBt ZXJnZXMgYW55IG1pc3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAg ICBpbnRvIHRoZSBtYWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFy ZSBjYXB0dXJlZC4KKyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUg dHJhbnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0 ZW0+CiAKQEAgLTQyNyw3ICs0MzQsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAg IDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxs aXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAg VGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRp c3JlYWR5PC9saXRlcmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+ IHRvIHByZXZlbnQgYW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAg ICAgZm9yIHJ1bm5pbmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4 IHRvIGNvbXBsZXRlLgogICAgICAgPC9wYXJhPgpAQCAtNDM1LDcgKzQ0Miw3IEBAIFJFSU5ERVgg WyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAg VGhlIG9sZCBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQor ICAgICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxs aXRlcmFsPlNIQVJFIFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBs b2NrcyBmb3IgdGhlIGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4K ICAgICAgIDwvcGFyYT4KQEAgLTQ0NiwxMSArNDUzLDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7 IERBCiAgICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcg dGhlIGluZGV4ZXMsIHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5p cXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdp bGwgZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGlu ZGV4IGluIGFkZGl0aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXgg d2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWln aHQgYmUgaW5jb21wbGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisg ICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwv cXVvdGU+IG5ldyBpbmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bwor ICAgIHRoZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBm b3IgcXVlcnlpbmcgcHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0 ZTsgaG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4g VGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+ IGNvbW1hbmQgd2lsbCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFM SUQ8L2xpdGVyYWw+OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRl cmFsPjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MSwxMiAr NDY4LDE0IEBAIHBvc3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChj b2wpCiAgICAgImlkeF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgi IHN0aXIgKGNvbCkgSU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGlu ZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxs aXRlcmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNp ZW50CisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVy YWw+LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAg ICAgaW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhl IHJlY29tbWVuZGVkCi0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxp dGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRy b3AgdGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAg ICB0aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFn YWluLgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVy YWw+Y2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBp bmRleCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCmluZGV4IDBmNzA2NTUzNjA1Li5lY2VjM2MxYzA4MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0xNzc3LDI0NiArMTc3OCwyNjYgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVy biByZWx0dXBsZXM7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgVHJhbnNhY3Rpb25JZAogaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAg UmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAot CQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUg KnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgIFZh bGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuOwotCUhl YXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOworCUluZGV4RmV0Y2hUYWJs ZURhdGEgKmZldGNoOworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVl c1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHBy U3RhdGUgICpwcmVkaWNhdGU7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICpl c3RhdGU7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8g PSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFw VHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwot CUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOworCisJU25h cHNob3QJCXNuYXBzaG90OworCVR1cGxlVGFibGVTbG90ICAqc2xvdDsKKwlFU3RhdGUJCQkqZXN0 YXRlOworCUV4cHJDb250ZXh0CQkqZWNvbnRleHQ7CiAKIAkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9y IHRoZSBtZXJnZSAqLwotCUl0ZW1Qb2ludGVyIGluZGV4Y3Vyc29yID0gTlVMTDsKLQlJdGVtUG9p bnRlckRhdGEgZGVjb2RlZDsKLQlib29sCQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKwlJdGVt UG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5VTEws CisJCQkJCXByZXZfaW5kZXhjdXJzb3IgPSBOVUxMOworCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVk LAorCQkJCQlhdXhkZWNvZGVkLAorCQkJCQlwcmV2X2RlY29kZWQsCisJCQkJCWZldGNoZWQ7CisJ Ym9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkg PSBmYWxzZTsKKworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOwor CUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkvKgorCSAq IE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB0 byBmaWx0ZXIgY2FuZGlkYXRlCisJICogdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3Rp bGwgYmUgc25hcHNob3RzIGluCisJICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBh cyBpbi1wcm9ncmVzcyB0aGF0IG91ciByZWZlcmVuY2UKKwkgKiBzbmFwc2hvdCB0cmVhdHMgYXMg Y29tbWl0dGVkLiAgSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgorCSAq IGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGlu IHRoZSBpbmRleDsgeWV0CisJICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVs ZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwKKwkgKiBleHBlY3Qgc3VjaCB0dXBs ZXMgdG8gYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKgorCSAq IFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25z IHRvIGV4aXQgYmVmb3JlCisJICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkg KiBXZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9u cyBpbiBpbmRleGVzIG1heQorCSAqIG5lZWQgYSBzbmFwc2hvdC4KKwkgKi8KKwlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwlQdXNoQWN0aXZl U25hcHNob3Qoc25hcHNob3QpOworCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwogCiAJLyoK IAkgKiBzYW5pdHkgY2hlY2tzCiAJICovCiAJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlv bi0+cmRfcmVsLT5yZWxhbSkpOwogCi0JLyoKLQkgKiBOZWVkIGFuIEVTdGF0ZSBmb3IgZXZhbHVh dGlvbiBvZiBpbmRleCBleHByZXNzaW9ucyBhbmQgcGFydGlhbC1pbmRleAotCSAqIHByZWRpY2F0 ZXMuICBBbHNvIGEgc2xvdCB0byBob2xkIHRoZSBjdXJyZW50IHR1cGxlLgotCSAqLwogCWVzdGF0 ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNv bnRleHQoZXN0YXRlKTsKIAlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9u R2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwKLQkJCQkJCQkJCSZUVFNPcHNIZWFwVHVwbGUpOworCQkJ CQkJCQkJJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CiAKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4 dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3Ig cHJlZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4 SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKLQkgKiBQcmVwYXJlIGZvciBzY2Fu IG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgV2UgbmVlZCBqdXN0IHRob3NlIHR1cGxlcwotCSAqIHNh dGlzZnlpbmcgdGhlIHBhc3NlZC1pbiByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRpc2Fi bGUgc3luY3NjYW4KLQkgKiBoZXJlLCBiZWNhdXNlIGl0J3MgY3JpdGljYWwgdGhhdCB3ZSByZWFk IGZyb20gYmxvY2sgemVybyBmb3J3YXJkIHRvCi0JICogbWF0Y2ggdGhlIHNvcnRlZCBUSURzLgor CSAqIFByZXBhcmUgdG8gZmV0Y2ggaGVhcCB0dXBsZXMgaW4gaW5kZXggc3R5bGUuIFRoaXMgaGVs cHMgdG8gcmVjb25zdHJ1Y3QKKwkgKiBhIHR1cGxlIGZyb20gdGhlIGhlYXAgd2hlbiB3ZSBvbmx5 IGhhdmUgYW4gSXRlbVBvaW50ZXIuCiAJICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9uICovCi0JCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KLQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCi0JCQkJCQkJCSBOVUxM LAkvKiBzY2FuIGtleSAqLwotCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVn eSBPSyAqLwotCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLwotCQkJCQkJCQkg ZmFsc2UpOwotCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKKwlmZXRjaCA9IGhlYXBhbV9p bmRleF9mZXRjaF9iZWdpbihoZWFwUmVsYXRpb24pOworCisJLyogSW5pdGlhbGl6ZSBwb2ludGVy cy4gKi8KKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0 SW52YWxpZCgmcHJldl9kZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29k ZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmZmV0Y2hlZCk7CiAKLQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNj YW4tPnJzX25ibG9ja3MpOworCS8qIFdlJ2xsIHRyYWNrIHRoZSBsYXN0ICJtYWluIiBpbmRleCBw b3NpdGlvbiBpbiBwcmV2X2luZGV4Y3Vyc29yLiAqLworCXByZXZfaW5kZXhjdXJzb3IgPSAmcHJl dl9kZWNvZGVkOwogCiAJLyoKLQkgKiBTY2FuIGFsbCB0dXBsZXMgbWF0Y2hpbmcgdGhlIHNuYXBz aG90LgorCSAqIE1haW4gbG9vcDogd2Ugc3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAo YXV4U3RhdGUtPnR1cGxlc29ydCksCisJICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgYmUg bWVyZ2VkIHdpdGggb3IgY29tcGFyZWQgdG8gdGhvc2UgZnJvbQorCSAqIHRoZSAibWFpbiIgc29y dCAoc3RhdGUtPnR1cGxlc29ydCkuCiAJICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dl dG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICghYXV4 dHVwbGVzb3J0X2VtcHR5KQogCXsKLQkJSXRlbVBvaW50ZXIgaGVhcGN1cnNvciA9ICZoZWFwVHVw bGUtPnRfc2VsZjsKLQkJSXRlbVBvaW50ZXJEYXRhIHJvb3RUdXBsZTsKLQkJT2Zmc2V0TnVtYmVy IHJvb3Rfb2ZmbnVtOwotCisJCURhdHVtCQl0c192YWw7CisJCWJvb2wJCXRzX2lzbnVsbDsKIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKLQotCQlpZiAo KHByZXZpb3VzX2Jsa25vID09IEludmFsaWRCbG9ja051bWJlcikgfHwKLQkJCShoc2Nhbi0+cnNf Y2Jsb2NrICE9IHByZXZpb3VzX2Jsa25vKSkKLQkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNf Y2Jsb2NrKTsKLQkJCXByZXZpb3VzX2Jsa25vID0gaHNjYW4tPnJzX2NibG9jazsKLQkJfQotCiAJ CS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBpbiB0YWJsZV9pbmRleF9idWlsZF9zY2FuLCB3ZSBzaG91 bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAqIHR1cGxlcyB1bmRlciB0aGUgVElEcyBvZiB0aGVpciBy b290IHR1cGxlczsgc28gd2hlbiB3ZSBhZHZhbmNlIG9udG8KLQkJICogYSBuZXcgaGVhcCBwYWdl LCBidWlsZCBhIG1hcCBvZiByb290IGl0ZW0gb2Zmc2V0cyBvbiB0aGUgcGFnZS4KLQkJICoKLQkJ ICogVGhpcyBjb21wbGljYXRlcyBtZXJnaW5nIGFnYWluc3QgdGhlIHR1cGxlc29ydCBvdXRwdXQ6 IHdlIHdpbGwKLQkJICogdmlzaXQgdGhlIGxpdmUgdHVwbGVzIGluIG9yZGVyIGJ5IHRoZWlyIG9m ZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkgKiBvZmZzZXRzIHRoYXQgd2UgbmVlZCB0byBjb21wYXJl IGFnYWluc3QgdGhlIGluZGV4IGNvbnRlbnRzIG1pZ2h0IGJlCi0JCSAqIG9yZGVyZWQgZGlmZmVy ZW50bHkuICBTbyB3ZSBtaWdodCBoYXZlIHRvICJsb29rIGJhY2siIHdpdGhpbiB0aGUKLQkJICog dHVwbGVzb3J0IG91dHB1dCwgYnV0IG9ubHkgd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuICBXZSBo YW5kbGUgdGhhdAotCQkgKiBieSBrZWVwaW5nIGEgYm9vbCBhcnJheSBpbl9pbmRleFtdIHNob3dp bmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5LXBhc3NlZC1vdmVyIHR1cGxlc29ydCBvdXRwdXQgVElE cyBvZiB0aGUgY3VycmVudCBwYWdlLiBXZQotCQkgKiBjbGVhciB0aGF0IGFycmF5IGhlcmUsIHdo ZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcgaGVhcCBwYWdlLgotCQkgKi8KLQkJaWYgKGhzY2FuLT5y c19jYmxvY2sgIT0gcm9vdF9ibGtubykKKwkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJ RCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4gSWYgaXQncworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4 aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJKi8KKwkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxl c29ydF9nZXRkYXR1bShhdXhTdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZh bHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJIE5VTEwpOworCQlBc3NlcnQo YXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCQlpZiAoIWF1eHR1cGxlc29ydF9l bXB0eSkKIAkJewotCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYp OwotCi0JCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0J CQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1ZmZl cihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGluX2lu ZGV4LCAwLCBzaXplb2YoaW5faW5kZXgpKTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5yc19j YmxvY2s7CisJCQlpdGVtcHRyX2RlY29kZSgmYXV4ZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192 YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29yID0gJmF1eGRlY29kZWQ7CiAJCX0KLQotCQkvKiBDb252 ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8gcm9vdCBUSUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBj dXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1 cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKKwkJZWxzZQog CQl7Ci0JCQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFdOwotCQkJ aWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJybXNn X2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBs ZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSho ZWFwUmVsYXRpb24pKSkpOwotCQkJSXRlbVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJnJvb3RUdXBs ZSwgcm9vdF9vZmZudW0pOworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOwogCQl9CiAKIAkJLyoK LQkJICogIm1lcmdlIiBieSBza2lwcGluZyB0aHJvdWdoIHRoZSBpbmRleCB0dXBsZXMgdW50aWwg d2UgZmluZCBvciBwYXNzCi0JCSAqIHRoZSBjdXJyZW50IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3 aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJgotCQkJICAgKCFpbmRleGN1cnNvciB8fAotCQkJCUl0 ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPCAwKSkKKwkJKiBJZiB0 aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwgd2Ugbm93IHRyeSB0byBzeW5jaHJv bml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGluZGV4Y3Vyc29yKSB3aXRoIGF1eGlu ZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4gc29ydCBjdXJzb3IgdW50aWwgd2Un dmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBUSUQuCisJCSovCisJCWlmICghYXV4 dHVwbGVzb3J0X2VtcHR5KQogCQl7Ci0JCQlEYXR1bQkJdHNfdmFsOwotCQkJYm9vbAkJdHNfaXNu dWxsOwotCi0JCQlpZiAoaW5kZXhjdXJzb3IpCisJCQkvKgorCQkJICogTW92ZSB0aGUgbWFpbiBz b3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQgKHR1cGxl c29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4Y3Vyc29y IGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vyc29yIDwg YXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1cGxlc29y dF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0IHRpbWUg aGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1 cnNvcikgPCAwKSkKIAkJCXsKKwkJCQkvKiBLZWVwIHRyYWNrIG9mIHRoZSBwcmV2aW91cyBUSUQg aW4gcHJldl9kZWNvZGVkLiAqLworCQkJCXByZXZfZGVjb2RlZCA9IGRlY29kZWQ7CiAJCQkJLyoK LQkJCQkgKiBSZW1lbWJlciBpbmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQg aGVhcCBwYWdlCisJCQkJICogR2V0IHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBtYWluIHNvcnQuIElm IGl0J3MgZW1wdHksCisJCQkJICogd2Ugc2V0IGluZGV4Y3Vyc29yIHRvIE5VTEwuCiAJCQkJICov Ci0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09IHJvb3Rf Ymxrbm8pCi0JCQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGluZGV4Y3Vy c29yKSAtIDFdID0gdHJ1ZTsKLQkJCX0KLQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29y dF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwg JnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVw bGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0J CQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7 Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkv KiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOworCQkJCXR1cGxlc29ydF9lbXB0 eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oc3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKKwkJCQkJCQkJ CQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7 CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKwkJCQlpZiAoIXR1 cGxlc29ydF9lbXB0eSkKKwkJCQl7CisJCQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1 bUdldEludDY0KHRzX3ZhbCkpOworCQkJCQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOworCisJCQkJ CS8qCisJCQkJCSAqIElmIHRoZSBjdXJyZW50IFRJRCBpbiB0aGUgbWFpbiBzb3J0IGlzIGEgZHVw bGljYXRlIG9mIHRoZQorCQkJCQkgKiBwcmV2aW91cyBvbmUgKHByZXZfaW5kZXhjdXJzb3IpLCBz a2lwIGl0IHRvIGF2b2lkCisJCQkJCSAqIGRvdWJsZS1pbnNlcnRpbmcgdGhlIHNhbWUgVElELiBT dWNoIHNpdHVhdGlvbiBpcyBwb3NzaWJsZQorCQkJCQkgKiBkdWUgY29uY3VycmVudCBwYWdlIHNw bGl0cyBpbiBidHJlZSAoYW5kLCBwcm9iYWJhbHkgb3RoZXIKKwkJCQkJICogaW5kZXhlcyBhcyB3 ZWxsKS4KKwkJCQkJICovCisJCQkJCWlmIChJdGVtUG9pbnRlckNvbXBhcmUocHJldl9pbmRleGN1 cnNvciwgaW5kZXhjdXJzb3IpID09IDApCisJCQkJCXsKKwkJCQkJCWVsb2coREVCVUc1LCAic2tp cHBpbmcgZHVwbGljYXRlIHRpZCBpbiB0YXJnZXQgaW5kZXggc25hcHNob3Q6ICgldSwldSkiLAor CQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4Y3Vyc29yKSwKKwkJCQkJCQkg SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaW5kZXhjdXJzb3IpKTsKKwkJCQkJfQorCQkJCX0K KwkJCQllbHNlCisJCQkJeworCQkJCQlpbmRleGN1cnNvciA9IE5VTEw7CisJCQkJfQorCisJCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSB0 dXBsZXNvcnQgaGFzIG92ZXJzaG90ICphbmQqIHdlIGRpZG4ndCBzZWUgYSBtYXRjaCBlYXJsaWVy LAotCQkgKiB0aGVuIHRoaXMgdHVwbGUgaXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgc28gaW5z ZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0dXBsZXNvcnRfZW1wdHkgfHwKLQkJCSBJdGVtUG9pbnRl ckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpID4gMCkgJiYKLQkJCSFpbl9pbmRleFty b290X29mZm51bSAtIDFdKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVj eHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRlIG9yIGV4 cHJlc3Npb24gZXZhbHVhdGlvbiAqLwotCQkJRXhlY1N0b3JlSGVhcFR1cGxlKGhlYXBUdXBsZSwg c2xvdCwgZmFsc2UpOwogCiAJCQkvKgotCQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJk IHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkgdGhlCi0JCQkgKiBwcmVkaWNhdGUuCisJCQkgKiBO b3csIGlmIGVpdGhlcjoKKwkJCSAqICAtIHRoZSBtYWluIHNvcnQgaXMgZW1wdHksIG9yCisJCQkg KiAgLSBpbmRleGN1cnNvciA+IGF1eGluZGV4Y3Vyc29yLAorCQkJICoKKwkJCSAqIHRoZW4gYXV4 aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBhIFRJRCB0aGF0IGRvZXNuJ3QgYXBwZWFyIGluCisJCQkg KiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtlbHkgbmVlZCB0byBpbnNlcnQgaXQKKwkJCSAqIGludG8g dGhlIHRhcmdldCBpbmRleCBpZiBpdOKAmXMgdmlzaWJsZSBpbiB0aGUgaGVhcC4KIAkJCSAqLwot CQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQorCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVt UG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCiAJCQl7Ci0J CQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7Ci0J CQl9CisJCQkJYm9vbCBjYWxsX2FnYWluID0gZmFsc2U7CisJCQkJYm9vbCBhbGxfZGVhZCA9IGZh bHNlOworCQkJCUl0ZW1Qb2ludGVyIHRpZDsKIAotCQkJLyoKLQkJCSAqIEZvciB0aGUgY3VycmVu dCBoZWFwIHR1cGxlLCBleHRyYWN0IGFsbCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJCSAqIGlu IHRoaXMgaW5kZXgsIGFuZCBub3RlIHdoaWNoIGFyZSBudWxsLiAgVGhpcyBhbHNvIHBlcmZvcm1z Ci0JCQkgKiBldmFsdWF0aW9uIG9mIGFueSBleHByZXNzaW9ucyBuZWVkZWQuCi0JCQkgKi8KLQkJ CUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBlc3Rh dGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0JCQkJCQkgICBpc251bGwpOworCQkJCS8qIENvcHkgdGhl IGF1eGluZGV4Y3Vyc29yIFRJRCBpbnRvIGZldGNoZWQuICovCisJCQkJZmV0Y2hlZCA9ICphdXhp bmRleGN1cnNvcjsKKwkJCQl0aWQgPSAmZmV0Y2hlZDsKIAotCQkJLyoKLQkJCSAqIFlvdSdkIHRo aW5rIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0J CQkgKiBidXQgc29tZSBpbmRleCBBTXMgd2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24g dGhlIGRhdGEKLQkJCSAqIGZpcnN0LiBTbyBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10g YXJyYXlzLCBpbnN0ZWFkLgotCQkJICovCi0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMg YWxyZWFkeSBjb21taXR0ZWQgZGVhZCwgeW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBz dXBwcmVzcyB1bmlxdWVuZXNzIGNoZWNraW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQot CQkJICogaW4gdGhlIHByZXNlbmNlIG9mIEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVh bGx5IGEgcHJveHkKLQkJCSAqIGZvciBhIHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhP VC1jaGFpbi4gIFRoYXQgaXMsIHRoZQotCQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJl IGRlYWQgYmVjYXVzZSBpdCB3YXMgYWxyZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBz byB0aGUgdXBkYXRpbmcgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBp dCBzaG91bGQgaW5zZXJ0IGluZGV4IGVudHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICog Y2hlY2sgdGhlIHdob2xlIEhPVC1jaGFpbiBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0 IGlmCi0JCQkgKiB0aGVyZSBpcyBvbmUuCi0JCQkgKi8KKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1 cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250 ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJc3RhdGUtPmh0 dXBzICs9IDE7CiAKLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVl cywKLQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRp b24sCi0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19Z RVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsK LQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKKwkJCQkvKgorCQkJCSAqIEZldGNoIHRo ZSB0dXBsZSBmcm9tIHRoZSBoZWFwIHRvIHNlZSBpZiBpdCdzIHZpc2libGUKKwkJCQkgKiB1bmRl ciBvdXIgc25hcHNob3QuIElmIGl0IGlzLCBmb3JtIHRoZSBpbmRleCBrZXkgdmFsdWVzCisJCQkJ ICogYW5kIGluc2VydCBhIG5ldyBlbnRyeSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJICov CisJCQkJaWYgKGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgdGlkLCBzbmFwc2hvdCwg c2xvdCwgJmNhbGxfYWdhaW4sICZhbGxfZGVhZCkpCisJCQkJeworCisJCQkJCS8qIENvbXB1dGUg dGhlIGtleSB2YWx1ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJCUZv cm1JbmRleERhdHVtKGluZGV4SW5mbywKKwkJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkJICAgZXN0 YXRlLAorCQkJCQkJCQkgICB2YWx1ZXMsCisJCQkJCQkJCSAgIGlzbnVsbCk7CisKKwkJCQkJLyoK KwkJCQkJICogSW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJCSAq LworCQkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJIHZhbHVlcywKKwkJ CQkJCQkJIGlzbnVsbCwKKwkJCQkJCQkJIGF1eGluZGV4Y3Vyc29yLCAvKiBpbnNlcnQgcm9vdCB0 dXBsZSAqLworCQkJCQkJCQkgaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkgaW5kZXhJbmZvLT5paV9V bmlxdWUgPworCQkJCQkJCQkgVU5JUVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJ CQkJCQkJIGZhbHNlLAorCQkJCQkJCQkgaW5kZXhJbmZvKTsKKworCQkJCQlzdGF0ZS0+dHVwc19p bnNlcnRlZCArPSAxOworCisJCQkJCWVsb2coREVCVUc1LCAiaW5zZXJ0ZWQgdGlkOiAoJXUsJXUp LCByb290OiAoJXUsICV1KSIsCisJCQkJCQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIo YXV4aW5kZXhjdXJzb3IpLAorCQkJCQkJCQkJCQlJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihh dXhpbmRleGN1cnNvciksCisJCQkJCQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlk KSwKKwkJCQkJCQkJCQkJSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIodGlkKSk7CisJCQkJfQor CQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFRoZSB0dXBsZSB3YXNuJ3QgdmlzaWJs ZSB1bmRlciBvdXIgc25hcHNob3QuIFdlCisJCQkJCSAqIHNraXAgaW5zZXJ0aW5nIGl0IGludG8g dGhlIHRhcmdldCBpbmRleCBiZWNhdXNlCisJCQkJCSAqIGZyb20gb3VyIHBlcnNwZWN0aXZlLCBp dCBkb2Vzbid0IGV4aXN0LgorCQkJCQkgKi8KKwkJCQkJZWxvZyhERUJVRzUsICJza2lwcGluZyBp bnNlcnQgdG8gdGFyZ2V0IGluZGV4IGJlY2F1c2UgdGlkIG5vdCB2aXNpYmxlOiAoJXUsJXUpIiwK KwkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGF1eGluZGV4Y3Vyc29yKSwKKwkJCQkJ CSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihhdXhpbmRleGN1cnNvcikpOworCQkJCX0KKwkJ CX0KIAkJfQogCX0KIAotCXRhYmxlX2VuZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOwogCiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCWhl YXBhbV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCisJLyoKKwkgKiBEcm9wIHRoZSByZWZlcmVu Y2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJ ICogc25hcHNob3QgaG9sZGVycywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIg cHJvY2Vzc2VzIGFsc28KKwkgKiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGlj aCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4K KwkgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4g PT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYg KE15UHJvYy0+eGlkID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQo ImhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZCIpOworI2VuZGlmCiAJLyogVGhlc2Ug bWF5IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRl U3RhdGUgPSBOVUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwppbmRleCA3ZmY3YWI2YzcyYS4uZTUxNTM4M2IyODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcx NCwxMSArNzE0LDE2IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlh bHJlYWR5IGV4aXN0cy4KICAqCQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0 ZSBhIHBhcnRpdGlvbmVkIGluZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlO REVYX0NSRUFURV9BVVhJTElBUlk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4 CiAgKiBjb25zdHJfZmxhZ3M6IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0 ZQogICoJCShvbmx5IGlmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBh bGxvd19zeXN0ZW1fdGFibGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxv ZwogICogaXNfaW50ZXJuYWw6IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGlu ZGV4CiAgKiBjb25zdHJhaW50SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRl ZCBjb25zdHJhaW50CisgKiByZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNl IGZvciBpbmRleC4gSW4gbW9zdCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1 YWwgdG8gcGVyc2lzdGVuY2UgbGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMg YXJlIG9ubHkgZXhjZXB0aW9uIGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBj cmVhdGVkIGluZGV4LgogICovCkBAIC03NDMsNyArNzQ4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkJCSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJvb2wgYWxs b3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBPaWQgKmNv bnN0cmFpbnRJZCkKKwkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBlcnNpc3Rl bmNlKQogewogCU9pZAkJCWhlYXBSZWxhdGlvbklkID0gUmVsYXRpb25HZXRSZWxpZChoZWFwUmVs YXRpb24pOwogCVJlbGF0aW9uCXBnX2NsYXNzOwpAQCAtNzU0LDExICs3NjAsMTEgQEAgaW5kZXhf Y3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQlpc19leGNsdXNpb247CiAJT2lk CQkJbmFtZXNwYWNlSWQ7CiAJaW50CQkJaTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29s CQlpc3ByaW1hcnkgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0gMDsKIAli b29sCQlpbnZhbGlkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9v bAkJY29uY3VycmVudCA9IChmbGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwog CWJvb2wJCXBhcnRpdGlvbmVkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAh PSAwOworCWJvb2wJCWF1eGlsaWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkp ICE9IDA7CiAJY2hhcgkJcmVsa2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlN dWx0aVhhY3RJZCByZWxtaW5teGlkOwpAQCAtNzg0LDcgKzc5MCw2IEBAIGluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFj ZShoZWFwUmVsYXRpb24pOwogCXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRfcmVs LT5yZWxpc3NoYXJlZDsKIAltYXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhlYXBS ZWxhdGlvbik7Ci0JcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVy c2lzdGVuY2U7CiAKIAkvKgogCSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5Miw2ICs3OTcsMTEg QEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5p aV9OdW1JbmRleEF0dHJzIDwgMSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qg b25lIGNvbHVtbiIpOwogCisJaWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYg IWF1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0 aCBTVElSIGFjY2VzcyBtZXRob2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxv d19zeXN0ZW1fdGFibGVfbW9kcyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikg JiYKIAkJSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQpAQCAtMTM5Nyw3ICsxNDA3LDggQEAgaW5k ZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9s ZEluZGV4SWQsCiAJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJ CQkJCXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcs Ci0JCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5p aV9XaXRob3V0T3ZlcmxhcHMsCisJCQkJCQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRo ZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3 CkBAIC0xNDYyLDcgKzE0NzMsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVs YXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJCQkJ ICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJCQkJ CSAgZmFsc2UsCS8qIGlzX2ludGVybmFsPyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJICBO VUxMLAorCQkJCQkJCSAgaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAog CS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwpAQCAtMTQ3Miw2ICsxNDg0LDE1NSBAQCBpbmRleF9j b25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5k ZXhJZCwKIAlyZXR1cm4gbmV3SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfYXV4CisgKgorICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5k ZXggYmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2Fs bGVyLiAgVGhlIGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJl CisgKiBidWlsdCBsYXRlciBvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVp bmRleCBwcm9jZXNzaW5nLgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFj ZSB0byB1c2UgZm9yIHRoaXMgaW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJ ICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24J aW5kZXhSZWxhdGlvbjsKKwlJbmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lk CQkJbmV3SW5kZXhJZCA9IEludmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlM aXN0CSAgICppbmRleENvbE5hbWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7 CisJTGlzdAkgICAqaW5kZXhQcmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlp bnQxNiAqYXV4Q29sb3B0aW9uczsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5J bmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29t ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRl eEluZm8oaW5kZXhSZWxhdGlvbik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBp bmRleCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJ ICovCisJaWYgKG9sZEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CWVycm1zZygiYXV4aWxpYXJ5IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWlu dHMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFu ZCBjb2x1bW4gb3B0aW9ucyBJRHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNl YXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJ ICogRmV0Y2ggdGhlIGxpc3Qgb2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkg ZnJvbSB0aGUKKwkgKiBjYXRhbG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0 aW9uIGZyb20gSW5kZXhJbmZvIG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJl ZW4gZmxhdHRlbmVkIGZvciB0aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhw cmVzc2lvbnMgIT0gTklMKQorCXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhw clN0cmluZzsKKworCQlleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVM SUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJ CWV4cHJTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhw cnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJp bmcpOworCX0KKwlpZiAob2xkSW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVt CQlwcmVkRGF0dW07CisJCWNoYXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lz Q2FjaGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAg IEFudW1fcGdfaW5kZXhfaW5kcHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKHByZWREYXR1bSk7CisJCWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJl ZFN0cmluZyk7CisKKwkJLyogQWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8K KwkJaW5kZXhQcmVkcyA9IG1ha2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsK KwkJcGZyZWUocHJlZFN0cmluZyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5m b3JtYXRpb24gZm9yIHRoZSBuZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGlu ZGV4ZXMgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2Ug dGhlcmUgaXMgbm8KKwkgKiBuZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxk cy4KKwkgKi8KKwluZXdJbmZvID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0 dHJzLAorCQkJCQkJCW9sZEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9B TV9PSUQsIC8qIHNwZWNpYWwgQU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBy cywKKwkJCQkJCQlpbmRleFByZWRzLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5v dCB1bmlxdWUgKi8KKwkJCQkJCQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJ CWZhbHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJ CWZhbHNlLAkvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBh dXggYXJlIG5vdCB3aXRob3V0IG92ZXJsYXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkg Ki8pOworCisJLyoKKwkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhl IGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwg dGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9u LgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsg aSsrKQorCXsKKwkJVHVwbGVEZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5k ZXhSZWxhdGlvbik7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5k ZXhUdXBEZXNjLCBpKTsKKworCQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVz LCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJz W2ldID0gb2xkSW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNz SWRzID0gcGFsbG9jMChzaXplb2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOwor CWF1eENvbG9wdGlvbnMgPSBwYWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1J bmRleEF0dHJzKTsKKworCS8qIEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJ ZHNbaV0gPSBBTllfU1RJUl9PUFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisK KwluZXdJbmRleElkID0gaW5kZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05h bWUsCisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJ CQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFs aWRPaWQsICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZp bGVOdW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJ ICBpbmRleENvbE5hbWVzLAorCQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNw YWNlT2lkLAorCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJ CSAgYXV4T3BjbGFzc0lkcywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25z LAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NS RUFURV9TS0lQX0JVSUxEIHwgSU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVf QVVYSUxJQVJZLAorCQkJCQkJCSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRv IGJlIGEgc3lzdGVtIGNhdGFsb2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJu YWw/ICovCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQp OyAvKiBhdXggaW5kZXhlcyB1bmxvZ2dlZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1 c2VkIGFuZCBjbGVhbiB1cCAqLworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7 CisJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9 CisKIC8qCiAgKiBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0yNDY3LDcgKzI2Mjgs OCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3Qt PmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFt c3VtbWFyaXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRl eFN0cnVjdC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNp b24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5y ZWxhbSA9PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmls bCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKysp CkBAIC0yNTI3LDcgKzI2ODksOCBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4 KQogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJ CSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3Qt PmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGlu ZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJ CQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBp ZmYgU1RJUiAqLyk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChp ID0gMDsgaSA8IG51bUF0dHM7IGkrKykKQEAgLTMyNzYsMTIgKzM0MzksMjEgQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJy ZW50IGluZGV4IGJ1aWxkIGJ5IGZpcnN0IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3Ig dGhlCiAgKiBpbmRleCB2aWEgaW5kZXhfY3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVh ZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLgorICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlh cnkgaW5kZXggdGhlIHNhbWUgd2F5LiBJdCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBj b21taXQgb3VyIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBm b3IgYWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRo ZSB0YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVu dGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtu b3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGlu ZGV4ZXMgYW5kCiAgKiBob25vciBpdHMgY29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdo aWxlIGV4aXN0aW5nIEhPVC1jaGFpbnMgbWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3Qg dG8gdGhlIGluZGV4LCBubyBjdXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGlu Y29tcGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4 IG5vcm1hbGx5IHZpYQorICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAq CisgKiBBZnRlciB3ZSBidWlsZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9u IHdpdGhvdXQgYW55IGFjdHVhbAorICogdGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVt cHR5IFNUSVIgaW5kZXguIFdlIGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQg Zm9yIGFsbCB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0 YWJsZQorICogdG8gdGVybWluYXRlLiBBdCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUg Z29pbmcgdG8gYmUgaW5zZXJ0ZWQgaW50bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdl IG5vdyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGls ZSBob2xkaW5nIGEgd2VhayBsb2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91 cGRhdGUvZGVsZXRlLiAgQWxzbywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQK ICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3Nj YW4pLCB3aGVyZWFzIGEgbm9ybWFsCkBAIC0zMjkxLDE4ICszNDYzLDIxIEBAIEluZGV4Q2hlY2tF eGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZh aWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVy ZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mg b3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhp cyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0 dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRv ZXMgbm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVp bHQgdGhlIGluZGV4CisgKiAodXQgdGhlc2UgdHVwbGVzIGNvbnRhaW5lZCBpbiBhdXhpbGlhcnkg aW5kZXgpLgogICoKICAqIEZ1cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9y IHRoZSBzY2FuLCB3aGljaCBjYXVzZXMgbmV3CiAgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0 aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bwogICogcHJvcGFn YXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBp bmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKLSAqIGNv bW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ug d2FpdCBmb3IgYWxsCisgKiBjb21taXQgdGhlIHRoaXJkIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBh IGZvdXJ0aC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291 bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CiAgKiB3 ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNl ZSB0aGUgaW5kZXggYW5kCi0gKiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiAgV2Ug dGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hvdAotICogd2hpY2ggaXMgcGFzc2VkIHRv IHZhbGlkYXRlX2luZGV4KCkuICBBbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwor ICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdl IGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKKyAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMg bm8gbW9yZSByZXF1aXJlZC4KKyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNu YXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBz bmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4 LgogICogKEFueSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBp bnNlcnRlZCBpbnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rp b24uICBBbnkgdHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMxMCwxMiArMzQ4NSwx NCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQg bWlnaHQgY2FyZSBhYm91dCB0aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAg KgogICogdmFsaWRhdGVfaW5kZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBU SURzIGN1cnJlbnRseSBpbiB0aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJh Y2sgdGhhdCBqdXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNp bmcgYSBidWxrZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRv ZXNuJ3QKICAqIGV2ZXIgc2F5ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0 aGFuIGEgcGxhaW4gaW5kZXhzY2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9y dCBmdWxsLWluZGV4IGluZGV4c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQg ZmluYWxseSBzY2FuIHRoZSB0YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBU SUQgbGlzdAotICogdG8gc2VlIHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRl eC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRp bmcgdG8gdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBv ZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBq b2luIiBhZ2FpbnN0CisgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBh dXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRo dXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUK KyAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0 byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZp cnN0LCB0YXJnZXQgbGFzdC4KICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdh eSBpcyB0cmlja3k6IHdlIG1pZ2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBh bHJlYWR5IGRlYWQgb3IgaXMgaW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAg LTMzMzMsMjIgKzM1MTAsMjQgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAgKiBub3QgaW5kZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxp ZCIgYW5kIGNvbW1pdC4gIFN1YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUg dG8gdXNlIGl0IGZvciBxdWVyaWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5z IGlzIGEgYnJ1dGUtZm9yY2Ugc3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZl cmVyLCBlZyBzdG9yaW5nIG5ldyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxl IChwZXJoYXBzCi0gKiBtYWtpbmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNl X2ZzbSkuICBIb3dldmVyIHRoYXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vl cy4KKyAqIEFsc28sIHNvbWUgYWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFy eSBpbmRleCBhcmUgcGVyZm9ybWVkLgogICovCi12b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxp ZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJ UmVsYXRpb24JaGVhcFJlbGF0aW9uLAotCQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxh dGlvbiwKKwkJCQlhdXhJbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJ bmRleFZhY3V1bUluZm8gaXZpbmZvOwotCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlUcmFu c2FjdGlvbklkIGxpbWl0WG1pbjsKKwlJbmRleFZhY3V1bUluZm8gaXZpbmZvLCBhdXhpdmluZm87 CisJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhTdGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJp ZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOworCS8q IFVzZSA4MCUgb2YgbWFpbnRlbmFuY2Vfd29ya19tZW0gdG8gdGFyZ2V0IGluZGV4IHNvcnRpbmcg YW5kCisJICogcmVzdCBmb3IgYXV4aWxpYXJ5ICovCisJaW50CQkJbWFpbl93b3JrX21lbV9wYXJ0 ID0gKG1haW50ZW5hbmNlX3dvcmtfbWVtICogOCkgLyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXBy b2dyZXNzX2luZGV4W10gPSB7CkBAIC0zMzgxLDEzICszNTYwLDE4IEBAIHZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlSZXN0cmljdFNl YXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4SWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGF1eEluZGV4SWQs IFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5k ZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBp biBmcm9tIERlZmluZUluZGV4LCBidXQgaXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZp bmcKIAkgKiBiZWVuIGJ1aWx0IGluIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICog V2UgbWlnaHQgbmVlZCBzbmFwc2hvdCBmb3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRl cy4KIAkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK IAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCiAJLyogbWFyayBidWlsZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNp c3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM0MDUsMTUg KzM1ODksMzAgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBz aG90IHNuYXBzaG90KQogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRl X2luZGV4ID0gdHJ1ZTsKIAorCS8qCisJICogQ29weSBhbGwgaW5mbyB0byBhdXhpbGlhcnkgaW5m bywgY2hhbmdpbmcgb25seSByZWxhdGlvbi4KKwkgKi8KKwlhdXhpdmluZm8gPSBpdmluZm87CisJ YXV4aXZpbmZvLmluZGV4ID0gYXV4SW5kZXhSZWxhdGlvbjsKKwogCS8qCiAJICogRW5jb2RlIFRJ RHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0 aW5nCiAJICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVy LCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKIAkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUg b24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlzCiAJICogcGFzcy1ieS12YWx1ZSBvbiBt b3N0IHBsYXRmb3Jtcy4KIAkgKi8KKwlhdXhTdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVn aW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKKwkJCQkJCQkJCQkgICBJbnZhbGlk T2lkLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBtYWludGVuYW5jZV93b3JrX21lbSAtIG1haW5fd29y a19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CisJYXV4U3Rh dGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwor CisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCisJCQkJCQkJIHZh bGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4U3RhdGUpOworCiAJc3RhdGUudHVwbGVzb3J0ID0g dHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJ CQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwK KwkJCQkJCQkJCQkJbWFpbl93b3JrX21lbV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNP UlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0 ZWQgPSAwOwogCkBAIC0zNDM2LDI3ICszNjM1LDMzIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQog CXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29ydF9wZXJm b3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkv KgotCSAqIE5vdyBzY2FuIHRoZSBoZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJ ICogTm93IG1lcmdlIGJvdGggaW5kZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1ZBTElEQVRFX1RBQkxFU0NBTik7Ci0JdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh bihoZWFwUmVsYXRpb24sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhJ bmZvLAotCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFKTsKKwlsaW1pdFhtaW4gPSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4 UmVsYXRpb24sCisJCQkJCQkJCQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJ CQkJCQkJCQkJICAmYXV4U3RhdGUpOwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3Qg Ki8KKwkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdHMgKi8KIAl0dXBsZXNvcnRfZW5kKHN0 YXRlLnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJ LyogTWFrZSBzdXJlIHRvIHJlbGVhc2UgcmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlm IG5lZWRlZCkuICovCiAJaW5kZXhfaW5zZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJ bmZvKTsKIAogCWVsb2coREVCVUcyLAotCQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVh cCB0dXBsZXMsICUuMGYgaW5kZXggdHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVz IiwKLQkJIHN0YXRlLmh0dXBzLCBzdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJ CSAidmFsaWRhdGVfaW5kZXggZmV0Y2hlZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1 cGxlczsiCisJCQkJCQkiICUuMGYgYXV4IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNz aW5nIHR1cGxlcyIsCisJCSBzdGF0ZS5odHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBz LCBzdGF0ZS50dXBzX2luc2VydGVkKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMg ZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZl X25lc3RsZXZlbCk7CkBAIC0zNDY1LDggKzM2NzAsMTIgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywg YnV0IGtlZXAgbG9ja3MgKi8KKwlpbmRleF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2sp OwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVh cFJlbGF0aW9uLCBOb0xvY2spOworCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlyZXR1cm4gbGltaXRYbWluOwogfQogCiAvKgpAQCAtMzUyNSw2ICszNzM0 LDExIEBAIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdz QWN0aW9uIGFjdGlvbikKIAkJCUFzc2VydCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKIAkJCWlu ZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBJTkRFWF9EUk9Q X0NMRUFSX1JFQURZOgorCQkJLyogQ2xlYXIgaW5kaXNyZWFkeSBkdXJpbmcgYSBDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIHNlcXVlbmNlICovCisJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2 YWxpZCk7CisJCQlpbmRleEZvcm0tPmluZGlzcmVhZHkgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQlj YXNlIElOREVYX0RST1BfQ0xFQVJfVkFMSUQ6CiAKIAkJCS8qCkBAIC0zNzk2LDYgKzQwMTAsMTMg QEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJ CWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzID0gTlVMTDsKIAl9CiAKKwkvKiBBdXhpbGlh cnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCWlmIChpbmRleElu Zm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5 IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaVJlbCkpKSk7CisKIAkvKiBTdXBwcmVzcyB1c2Ugb2YgdGhlIHRhcmdldCBpbmRleCB3aGls ZSByZWJ1aWxkaW5nIGl0ICovCiAJU2V0UmVpbmRleFByb2Nlc3NpbmcoaGVhcElkLCBpbmRleElk KTsKIApAQCAtNDAzOCw2ICs0MjU5LDcgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJewogCQlPaWQJCQlpbmRleE9pZCA9 IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVs X25hbWVzcGFjZShpbmRleE9pZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGlu ZGV4T2lkKTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBpbnZhbGlkIGluZGV4ZXMgb24gYSBUT0FT VCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00MDYzLDYgKzQyODUsMTggQEAgcmVpbmRl eF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3Ms CiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChpbmRleEFtID09IFNUSVJfQU1fT0lEKQorCQl7 CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkg aW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoaW5kZXhOYW1lc3Bh Y2VJZCksCisJCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4T2lkKSkpKTsKKwkJCWlmIChmbGFncyAm IFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGlu ZyhpbmRleE9pZCk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwg aW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9DSEVDS19DT05TVFJBSU5UUyksCiAJCQkJ CSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAppbmRleCBkYTlhOGZlOTlmMi4uNzA0NTE3NGM1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKQEAgLTEyNjUsMTYgKzEyNjUsMTcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9w cm9ncmVzc19jcmVhdGVfaW5kZXggQVMKICAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgY29t bWFuZCwKICAgICAgICAgQ0FTRSBTLnBhcmFtMTAgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZycK ICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMg YmVmb3JlIGJ1aWxkJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnYnVpbGRp bmcgaW5kZXgnIHx8CisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5n IGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnCisgICAgICAgICAgICAgICAgICAg ICAgIFdIRU4gMyBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENPQUxFU0NFKCgnOiAnIHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKFMu cGFyYW05OjpvaWQsIFMucGFyYW0xMSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJycpCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZv ciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVO IDQgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnCi0gICAgICAgICAgICAg ICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcycK LSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNj YW5uaW5nIHRhYmxlJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnd2FpdGlu ZyBmb3Igb2xkIHNuYXBzaG90cycKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRIRU4g J3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKLSAgICAgICAgICAgICAg ICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5n JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVy cyBiZWZvcmUgdmFsaWRhdGlvbicKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4g J2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4JworICAgICAgICAgICAgICAgICAgICAg ICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnCisgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGlu ZGV4ZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBv bGQgc25hcHNob3RzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGlu ZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJworICAgICAgICAgICAgICAgICAgICAg ICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJwogICAg ICAgICAgICAgICAgICAgICAgICBFTkQgYXMgcGhhc2UsCiAgICAgICAgIFMucGFyYW00IEFTIGxv Y2tlcnNfdG90YWwsCiAgICAgICAgIFMucGFyYW01IEFTIGxvY2tlcnNfZG9uZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv dG9hc3RpbmcuYwppbmRleCBhZDMwODJjNjJhYy4uZmJiY2Q3ZDAwZGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Rv YXN0aW5nLmMKQEAgLTMyNSw3ICszMjUsOCBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24g cmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCQkJCSBCVFJFRV9BTV9PSUQs CiAJCQkJIHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJCSBjb2xsYXRpb25JZHMsIG9w Y2xhc3NJZHMsIE5VTEwsIGNvbG9wdGlvbnMsIE5VTEwsIChEYXR1bSkgMCwKLQkJCQkgSU5ERVhf Q1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUsIHRydWUsIE5VTEwpOworCQkJCSBJTkRFWF9DUkVB VEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1ZSwgTlVMTCwKKwkJCQkgdG9hc3RfcmVsLT5yZF9y ZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCXRhYmxlX2Nsb3NlKHRvYXN0X3JlbCwgTm9Mb2NrKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBhMDI3Mjk5MTFmZS4uM2IxYWJlNjYwZjkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xODMsNiArMTgzLDcgQEAgQ2hlY2tJbmRl eENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykKIHsK IAlib29sCQlpc2NvbnN0cmFpbnQ7CisJYm9vbAkJaXNhdXhpbGlhcnk7CiAJT2lkCQkgICAqdHlw ZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CiAJT2lkCQkgICAqb3BjbGFzc0lkczsKQEAg LTIzMyw2ICsyMzQsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAKIAlhbWNh bm9yZGVyID0gYW1Sb3V0aW5lLT5hbWNhbm9yZGVyOwogCWFtc3VtbWFyaXppbmcgPSBhbVJvdXRp bmUtPmFtc3VtbWFyaXppbmc7CisJaXNhdXhpbGlhcnkgPSBhY2Nlc3NNZXRob2RJZCA9PSBTVElS X0FNX09JRDsKIAogCS8qCiAJICogQ29tcHV0ZSB0aGUgb3BlcmF0b3IgY2xhc3NlcywgY29sbGF0 aW9ucywgYW5kIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCkBAIC0yNDQsNyArMjQ2LDggQEAgQ2hl Y2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCSAqLwogCWluZGV4SW5mbyA9IG1ha2VJbmRl eEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVzLCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJICBh Y2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwKLQkJCQkJCQkgIGZhbHNlLCBm YWxzZSwgYW1zdW1tYXJpemluZywgaXNXaXRob3V0T3ZlcmxhcHMpOworCQkJCQkJCSAgZmFsc2Us IGZhbHNlLCBhbXN1bW1hcml6aW5nLAorCQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlzYXV4 aWxpYXJ5KTsKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVz KTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMp OwogCW9wY2xhc3NJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpA QCAtNTU0LDYgKzU1Nyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogewogCWJvb2wJCWNv bmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5kZXhSZWxhdGlvbk5hbWU7CisJY2hhcgkgICAqYXV4SW5k ZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmFjY2Vzc01ldGhvZE5hbWU7CiAJT2lk CQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CkBAIC01NjMsNiArNTY3LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJT2lkCQkJ dGFibGVzcGFjZUlkOwogCU9pZAkJCWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlkT2lkOwor CU9pZAkJCWF1eEluZGV4UmVsYXRpb25JZCA9IEludmFsaWRPaWQ7CiAJTGlzdAkgICAqaW5kZXhD b2xOYW1lczsKIAlMaXN0CSAgICphbGxJbmRleFBhcmFtczsKIAlSZWxhdGlvbglyZWw7CkBAIC01 ODQsMTAgKzU4OSwxMCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQludW1iZXJP ZktleUF0dHJpYnV0ZXM7CiAJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0QWRkcmVz cyBhZGRyZXNzOworCU9iamVjdEFkZHJlc3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJaGVhcHJl bGlkOwogCUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBz aG90CXNuYXBzaG90OwogCU9pZAkJCXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZl X3NlY19jb250ZXh0OwogCWludAkJCXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC04MzQsNiArODM5 LDE1IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCQkJCQlzdG10LT5leGNsdWRl T3BOYW1lcywKIAkJCQkJCQkJCQkJc3RtdC0+cHJpbWFyeSwKIAkJCQkJCQkJCQkJc3RtdC0+aXNj b25zdHJhaW50KTsKKwkvKgorCSAqIFNlbGVjdCBuYW1lIGZvciBhdXhpbGlhcnkgaW5kZXgKKwkg Ki8KKwlpZiAoY29uY3VycmVudCkKKwkJYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBDaG9vc2VSZWxh dGlvbk5hbWUoaW5kZXhSZWxhdGlvbk5hbWUsCisJCQkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJ CQkJCQkgICJjY2F1eCIsCisJCQkJCQkJCQkJCQkgIG5hbWVzcGFjZUlkLAorCQkJCQkJCQkJCQkJ ICBmYWxzZSk7CiAKIAkvKgogCSAqIGxvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZlcmlmeSBp dCBjYW4gaGFuZGxlIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZXMKQEAgLTkyOSw3ICs5NDMsOCBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkgICFjb25jdXJyZW50LAogCQkJCQkJCSAg Y29uY3VycmVudCwKIAkJCQkJCQkgIGFtaXNzdW1tYXJpemluZywKLQkJCQkJCQkgIHN0bXQtPmlz d2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzLAorCQkJ CQkJCSAgZmFsc2UpOwogCiAJdHlwZUlkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0 cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRy aWJ1dGVzKTsKQEAgLTEyMjcsNyArMTI0Miw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CQkJCQkgY29sb3B0aW9ucywgTlVMTCwgcmVsb3B0aW9ucywKIAkJCQkJIGZsYWdzLCBjb25zdHJf ZmxhZ3MsCiAJCQkJCSBhbGxvd1N5c3RlbVRhYmxlTW9kcywgIWNoZWNrX3JpZ2h0cywKLQkJCQkJ ICZjcmVhdGVkQ29uc3RyYWludElkKTsKKwkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkLAorCQkJ CQkgcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRk cmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBpbmRleFJlbGF0aW9uSWQpOwogCkBAIC0xNTY5LDYg KzE1ODUsMTYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCXJldHVybiBhZGRyZXNzOwog CX0KIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGls aWFyeSBpbmRleCByZWNvcmQuCisJICovCisJaWYgKGNvbmN1cnJlbnQpCisJeworCQlhdXhJbmRl eFJlbGF0aW9uSWQgPSBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChyZWwsIGluZGV4UmVs YXRpb25JZCwKKwkJCQkJCQkJCQkJdGFibGVzcGFjZUlkLCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7 CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4QWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhJ bmRleFJlbGF0aW9uSWQpOworCX0KKwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25l c3RsZXZlbCk7CiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChyb290X3NhdmVfdXNlcmlkLCByb290 X3NhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0xNTk3LDExICsxNjIzLDExIEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCS8qCiAJICogRm9yIGEgY29uY3VycmVudCBidWlsZCwgaXQncyBpbXBv cnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxvZyBlbnRyaWVzCiAJICogdmlzaWJsZSB0byBvdGhlciB0 cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBpbmRleC4gVGhhdAotCSAq IHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4g IFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxsIGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90 IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8gb25lIGVsc2UKLQkgKiB0cmllcyB0byBlaXRoZXIgaW5z ZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVzLgorCSAqIHdpbGwgcHJldmVudCB0aGVt IGZyb20gbWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAo bWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxsIGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90 IGluZGlzdmFsaWQsCisJICogc28gdGhhdCBubyBvbmUgZWxzZSB0cmllcyB0byBlaXRoZXIgaW5z ZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVzLgogCSAqCi0JICogV2UgbXVzdCBjb21t aXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgaW5kZXggYmVjb21lcworCSAq IFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4 ZXMgYmVjb21lcwogCSAqIHZpc2libGU7IHRoZW4gc3RhcnQgYW5vdGhlci4gIE5vdGUgdGhhdCBh bGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3ZSBqdXN0CiAJICogYnVpbHQgYXJlIGxvc3QgaW4gdGhl IGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEgd2Uga2VlcCBwYXN0IGhlcmUgYXJlIHRoZQogCSAqIHJl bGF0aW9uIElEcy4KQEAgLTE2MTEsNyArMTYzNyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCSAqIGNhbm5vdCBibG9jaywgZXZlbiBpZiBzb21lb25lIGVsc2UgaXMgd2FpdGluZyBmb3Ig YWNjZXNzLCBiZWNhdXNlIHdlCiAJICogYWxyZWFkeSBoYXZlIHRoZSBzYW1lIGxvY2sgd2l0aGlu IG91ciB0cmFuc2FjdGlvbi4KIAkgKgotCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3Ro ZXIgd2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUgaW5kZXgsCisJICogTm90ZTogd2UgZG9uJ3Qg Y3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleGVzLAogCSAq IGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0 YXRlIHdoaWxlIHdlCiAJICogaG9sZCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuICBUaGlzIG1p Z2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVyLgogCSAqLwpAQCAtMTY1MCw3ICsxNjc2LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4g IFVzZSBTaGFyZUxvY2sgdG8gY29uc2lkZXIgcnVubmluZwogCSAqIHRyYW5zYWN0aW9ucyB0aGF0 IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQgd3JpdGluZyB0byB0aGUgdGFibGUuICBOb3RlIHdlCiAJ ICogZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgeGFjdHMgdGhhdCBvcGVuIHRoZSB0YWJsZSBm b3Igd3JpdGluZyBhZnRlcgotCSAqIHRoaXMgcG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBp bmRleCB3aGVuIHRoZXkgb3BlbiBpdC4KKwkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRo ZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkgb3BlbiBpdC4KIAkgKgogCSAqIE5vdGU6IHRoZSByZWFz b24gd2UgdXNlIGFjdHVhbCBsb2NrIGFjcXVpc2l0aW9uIGhlcmUsIHJhdGhlciB0aGFuIGp1c3QK IAkgKiBjaGVja2luZyB0aGUgUHJvY0FycmF5IGFuZCBzbGVlcGluZywgaXMgdGhhdCBkZWFkbG9j ayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY2MiwxNSArMTY4OCwzOSBAQCBEZWZpbmVJbmRleChPaWQg dGFibGVJZCwKIAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGVy ZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlCi0JICogdGFibGUgb3BlbiBmb3Igd3JpdGUg dGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4IGluIHRoZWlyIGxpc3Qgb2YKKwkgKiB0YWJs ZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXhlcyBpbiB0aGVp ciBsaXN0IG9mCiAJICogaW5kZXhlcy4gIFdlIGhhdmUgd2FpdGVkIG91dCBhbGwgdGhlIGV4aXN0 aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55IG5ldwotCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSB0 aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0LCBidXQgdGhlIGluZGV4IGlzIHN0aWxsCi0JICogbWFy a2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiAgVGhlIGluZGV4IGlzIGNvbnN1bHRlZCB3 aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSBib3RoIG5ldyBpbmRleGVzIGluIGl0cyBs aXN0LCBidXQgaW5kZXhlcyBhcmUgc3RpbGwKKwkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3It aW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFyZSBjb25zdWx0ZWQgd2hpbGUKIAkgKiBkZWNpZGluZyBI T1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMgYXJyYW5nZW1lbnQgZW5zdXJlcyB0aGF0IG5vIG5ldyBI T1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhl IG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgog CSAqCi0JICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlz aWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIE5vdyBjYWxsIGJ1aWxkIG9uIGF1eGlsaWFyeSBpbmRl eC4gSW5kZXggd2lsbCBiZSBjcmVhdGVkIGVtcHR5IHdpdGhvdXQKKwkgKiBhbnkgYWN0dWFsIGhl YXAgc2NhbiwgYnV0IG1hcmtlZCBhcyAicmVhZHktZm9yLWluc2VydHMiLiBUaGUgZ29hbCBvZgor CSAqIHRoYXQgaW5kZXggaXMgYWNjdW11bGF0ZSBuZXcgdHVwbGVzIHdoaWxlIG1haW4gaW5kZXgg aXMgYWN0dWFsbHkgYnVpbHQuCisJICovCisJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxl SWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4 IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2lu ZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIE5vdyB3ZSBuZWVkIHRvIGVuc3VyZSBhcmUg bm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlIHdpdGggYXV4aWxpYXJ5IGluZGV4CisJICogbWFya2Vk IGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBs b2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOworCisJLyoKKwkgKiBBdCB0aGlzIG1vbWVudCB3ZSBh cmUgc3VyZSB3aGF0IGFsbCBuZXcgdHVwbGVzIGluIHRhYmxlIGFyZSBpbnNlcnRlZCBpbnRvCisJ ICogYXV4aWxpYXJ5IGluZGV4LiBOb3cgaXQgaXMgdGltZSB0byBidWlsZCB0aGUgdGFyZ2V0IGlu ZGV4IGl0c2VsZi4KKwkgKgorCSAqIFdlIGJ1aWxkIHRoYXQgaW5kZXggdXNpbmcgYWxsIHR1cGxl cyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCiAJICogcmVmcmVzaGluZyBzbmFwc2hv dHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVw bGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMg bWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRl eCBhcmUgbm93IGNvbW1pdHRlZCBvcgpAQCAtMTY5OCw0MyArMTc0OCwzMSBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkgKiB0aGUgaW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBk YXRlcy4KIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwor CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tl cnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CiAKIAkvKgotCSAqIE5vdyB0YWtlIHRo ZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRl eCgpCi0JICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdo dCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4KLQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0 aW9uIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0 cyBhcyBjb21taXR0ZWQuICBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9u Ci0JICogZGVsZXRlZCB0dXBsZXMgaW4gdGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRo ZW0gaW4gdGhlIGluZGV4OyB5ZXQKLQkgKiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRo ZSBkZWxldGluZyBvbmUgYXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNo IHR1cGxlcyB0byBiZSB0aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAq Ci0JICogV2Ugc29sdmUgdGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2Fj dGlvbnMgdG8gZXhpdCBiZWZvcmUKLQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkg KgotCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVu Y3Rpb25zIGluIGluZGV4ZXMgbWF5Ci0JICogbmVlZCBhIHNuYXBzaG90LgorCSAqIFVwZGF0aW5n IHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UK KwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKLQorCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCS8qCi0JICogU2NhbiB0aGUgaW5kZXggYW5kIHRoZSBoZWFwLCBpbnNlcnQgYW55IG1pc3Np bmcgaW5kZXggZW50cmllcy4KKwkgKiBOb3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVh ZHkiIGZvciBhbGwgdHJhbnNhY3Rpb25zLiBTbywgYXV4aWxpYXJ5CisJICogaW5kZXggaXMgbm90 IG1vcmUgbmVlZGVkLiBTbywgc3RhcnQgcmVtb3ZpbmcgcHJvY2VzcyBieSByZXZlcnRpbmcgInJl YWR5IgorCSAqIGZsYWcuCiAJICovCi0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxh dGlvbklkLCBzbmFwc2hvdCk7Ci0KLQkvKgotCSAqIERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hv dC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKLQkgKiBzbmFwc2hv dCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMg YWxzbwotCSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNl ZSBvdXIgc25hcHNob3QgYXMgb25lCi0JICogdGhleSBtdXN0IHdhaXQgZm9yLiAgQnV0IGZpcnN0 LCBzYXZlIHRoZSBzbmFwc2hvdCdzIHhtaW4gdG8gdXNlIGFzCi0JICogbGltaXRYbWluIGZvciBH ZXRDdXJyZW50VmlydHVhbFhJRHMoKS4KLQkgKi8KLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1p bjsKLQorCWluZGV4X3NldF9zdGF0ZV9mbGFncyhhdXhJbmRleFJlbGF0aW9uSWQsIElOREVYX0RS T1BfQ0xFQVJfUkVBRFkpOwogCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBp Z25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOworCS8qCisJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlh cnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMu CisJICovCisJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlv bklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOwogCiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lz dGVtIGNvdWxkIHN0aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdApAQCAtMTc1 NywxMiArMTc5NSwxMiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBp bmRleCBpcyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJl bnRseQogCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29u dGFpbiB0dXBsZXMgZGVsZXRlZCBqdXN0Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3 YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQg bWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90 IGR1cmluZyB2YWxpZGF0aW5nIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFu eSB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJ TkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJ CSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzQpOwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4s IHRydWUpOwogCiAJLyoKQEAgLTE3ODcsNiArMTgyNSw1MyBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkgKiB0byByZXBsYW47IHNvIHJlbGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRleCBpdHNl bGYgd2FzIHN1ZmZpY2llbnQuKQogCSAqLwogCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxp ZChoZWFwcmVsaWQucmVsSWQpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJ CXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfNSk7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBzZWUg YXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCisJV2FpdEZvckxvY2tlcnMo aGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICog VXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVu c3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBt YXJrIGF1eGlsaWFyeSBpbmRleCBhcyBkZWFkICovCisJaW5kZXhfY29uY3VycmVudGx5X3NldF9k ZWFkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsK KworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CisJ LyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5IGJlY2F1 c2UgaXQgaXMgZGVhZCAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIERyb3AgYXV4aWxpYXJ5IGluZGV4Lgor CSAqCisJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5k ZXhfZHJvcCgpIHVzZXMgdGhlCisJICogcmlnaHQgbG9jayBsZXZlbC4KKwkgKi8KKwlwZXJmb3Jt RGVsZXRpb24oJmF1eEFkZHJlc3MsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZPUk1fREVM RVRJT05fQ09OQ1VSUkVOVF9MT0NLIHwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CiAKIAkv KgogCSAqIExhc3QgdGhpbmcgdG8gZG8gaXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2Nr IG9uIHRoZSBwYXJlbnQgdGFibGUuCkBAIC0zNTQyLDYgKzM2MjcsNyBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCXR5cGVkZWYgc3RydWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJ CWluZGV4SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJ CWFtSWQ7CiAJCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8K QEAgLTM2NDcsOCArMzczMywxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQlPaWQJ CQljZWxsT2lkID0gbGZpcnN0X29pZChsYyk7CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24g PSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVz aXZlTG9jayk7CisJCQkJCUluZGV4SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5m byhpbmRleFJlbGF0aW9uKTsKIAotCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5p bmRpc3ZhbGlkKQorCisJCQkJCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCWVy ZXBvcnQoV0FSTklORywoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4l c1wiIiwKKwkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxs T2lkKSksCisJCQkJCQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCWVsc2UgaWYg KCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBvcnQoV0FS TklORywKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBp bmRleCBcIiVzLiVzXCIiLApAQCAtMzcwMCw4ICszNzkzLDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChsYzIpOwogCQkJCQkJUmVs YXRpb24JaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJ CSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCQlJbmRleEluZm8qCWluZGV4SW5m byA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlmICghaW5k ZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkpCisJCQkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCQkJZ2V0 X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOworCQkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24t PnJkX2luZGV4LT5pbmRpc3ZhbGlkKQogCQkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJ CQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNc IiIsCkBAIC0zNzYyLDYgKzM4NjIsMTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJIGVycm1z ZygiY2Fubm90IHJlaW5kZXggaW52YWxpZCBpbmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7CiAKKwkJ CQkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLwor CQkJCWlmIChnZXRfcmVsX3JlbGFtKHJlbGF0aW9uT2lkKSA9PSBTVElSX0FNX09JRCkKKwkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBu b3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkpKTsKKwog CQkJCS8qCiAJCQkJICogQ2hlY2sgaWYgcGFyZW50IHJlbGF0aW9uIGNhbiBiZSBsb2NrZWQgYW5k IGlmIGl0IGV4aXN0cywKIAkJCQkgKiB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhpcyBzdGFn ZSBhcyB0aGUgbGlzdCBvZiBpbmRleGVzCkBAIC0zODY1LDE1ICszOTcyLDE4IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCiAJewogCQljaGFyCSAgICpj b25jdXJyZW50TmFtZTsKKwkJY2hhcgkgICAqYXV4Q29uY3VycmVudE5hbWU7CiAJCVJlaW5kZXhJ bmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsK IAkJT2lkCQkJbmV3SW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5k ZXhSZWw7CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwogCQlpbnQJ CQlzYXZlX3NlY19jb250ZXh0OwogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24J bmV3SW5kZXhSZWw7CisJCVJlbGF0aW9uCWF1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2Nr cmVsaWQ7CiAJCU9pZAkJCXRhYmxlc3BhY2VpZDsKIApAQCAtMzkyNCw2ICs0MDM0LDExIEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJCQkJCWdl dF9yZWxfbmFtZXNwYWNlKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJCQkJCQkJ CQlmYWxzZSk7CisJCWF1eENvbmN1cnJlbnROYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGdldF9y ZWxfbmFtZShpZHgtPmluZGV4SWQpLAorCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkiY2Nh dXgiLAorCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmlu ZHJlbGlkKSwKKwkJCQkJCQkJCQkJZmFsc2UpOwogCiAJCS8qIENob29zZSB0aGUgbmV3IHRhYmxl c3BhY2UsIGluZGV4ZXMgb2YgdG9hc3QgdGFibGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJaWYgKE9p ZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKSAmJgpAQCAtMzkzNywxMiArNDA1MiwxNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJZCwKIAkJ CQkJCQkJCQkJCQl0YWJsZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOwor CQlhdXhJbmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJlbCwKKwkJ CQkJCQkJCQkJCSAgIG5ld0luZGV4SWQsCisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJ CQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4g dGhlIHJlbGF0aW9uIG9mIHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJ CSAqIGFsc28gbmVlZGVkIG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVu KG5ld0luZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0g aW5kZXhfb3BlbihhdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8q CiAJCSAqIFNhdmUgdGhlIGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0 CkBAIC0zOTUxLDYgKzQwNzEsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lk eCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9 IG5ld0luZGV4SWQ7CisJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lk eC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwog CQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CkBAIC0zOTY5LDEwICs0MDkwLDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElk KTsKIAkJKmxvY2tyZWxpZCA9IG5ld0luZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJ CXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxv Y2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eElu ZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5k KHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9j bG9zZShhdXhJbmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5v TG9jayk7CiAKIAkJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRl eCBmdW5jdGlvbnMgKi8KQEAgLTQwNTMsMTMgKzQxNzgsNTUgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkgKiBkb2luZyB0aGF0LCB3YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25z IGNvdWxkIGhhdmUgdGhlIHRhYmxlIG9mCiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xk IGxpc3Qgb2YgaW5kZXhlcy4gIFNlZSAicGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZv ciBtb3JlIGRldGFpbHMuCisJKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfMSk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVl KTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogTm93IGJ1aWxkIGFs bCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgbWFyayB0aGVtIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIu CisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZv ICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNp ZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2Vs ZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBh cmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2Nm bGFncygpOworCisJCS8qIEJ1aWxkIGF1eGlsaWFyeSBpbmRleCwgaXQgaXMgZmFzdCAtIHdpdGhv dXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4gZW1wdHkgaW5kZXguICovCisJCWluZGV4 X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7 CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCisJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qCisJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qg aW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCisJICogdG8gc2V0IHRoZSBQUk9D X0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8xKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzIpOworCS8qCisJICogV2FpdCB1bnRpbCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIHRha2Vu IGludG8gYWNjb3VudCBieSBhbGwKKwkgKiB0cmFuc2FjdGlvbnMuCisJICovCiAJV2FpdEZvckxv Y2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIAorCS8qIE5vdyBpdCBpcyB0aW1lIHRvIHBlcmZvcm0gdGFyZ2V0IGlu ZGV4IGJ1aWxkLiAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQxMDIsMjQgKzQyNjksNTIgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lD IGZsYWcgaGVyZS4KIAkgKi8KIAorCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfMyk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVl KTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQXQgdGhpcyBtb21l bnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2VydCIuIFNv LAorCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5 IGluZGV4ZXMuCisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4 SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlz IGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBh IHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxv Y2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBp bmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRleHNhZmVf cHJvY2ZsYWdzKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2 ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25h cHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhf RFJPUF9DTEVBUl9SRUFEWSk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJfQorCiAJLyoKIAkgKiBQaGFzZSAzIG9mIFJFSU5ERVggQ09O Q1VSUkVOVExZCiAJICoKLQkgKiBEdXJpbmcgdGhpcyBwaGFzZSB0aGUgb2xkIGluZGV4ZXMgY2F0 Y2ggdXAgd2l0aCBhbnkgbmV3IHR1cGxlcyB0aGF0CisJICogRHVyaW5nIHRoaXMgcGhhc2UgdGhl IG5ldyBpbmRleGVzIGNhdGNoIHVwIHdpdGggYW55IG5ldyB0dXBsZXMgdGhhdAogCSAqIHdlcmUg Y3JlYXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHBoYXNlLiAgU2VlICJwaGFzZSAzIiBpbiBEZWZp bmVJbmRleCgpCiAJICogZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KLQotCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7Ci0JV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2Nr VGFncywgU2hhcmVMb2NrLCB0cnVlKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQog CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4 ID0gbGZpcnN0KGxjKTsKIAkJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47Ci0JCVNuYXBzaG90CXNu YXBzaG90OwogCiAJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKQEAgLTQxMzQsMTMgKzQz MjksNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJ c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKgotCQkgKiBUYWtlIHRoZSAicmVmZXJl bmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JCSAq IHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLgotCQkgKi8KLQkJc25hcHNob3QgPSBSZWdpc3Rl clNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hv dChzbmFwc2hvdCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXgg dG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpA QCAtNDE1MiwxNiArNDM0MCw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNz X3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlf cGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlkYXRlX2lu ZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoK LQkJICogV2UgY2FuIG5vdyBkbyBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3Rp bGwgbmVlZCB0byBzYXZlCi0JCSAqIHRoZSB4bWluIGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNu YXBzaG90cy4KLQkJICovCi0JCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFj dGl2ZVNuYXBzaG90KCk7Ci0JCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0 WG1pbiA9IHZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBu ZXdpZHgtPmF1eEluZGV4SWQpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJCS8qCiAJCSAqIFRvIGVuc3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3Qg Y29tbWl0IGFuZCBzdGFydCB5ZXQgYW5vdGhlcgpAQCAtNDE4MSw3ICs0MzYxLDcgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19J Tl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzMpOworCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzQpOwogCQlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQyNzEsMTQgKzQ0NTEsMTQgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDUgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkK IAkgKgotCSAqIE1hcmsgdGhlIG9sZCBpbmRleGVzIGFzIGRlYWQuICBGaXJzdCB3ZSBtdXN0IHdh aXQgdW50aWwgbm8gcnVubmluZwotCSAqIHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBp bmRleCBmb3IgYSBxdWVyeS4gIFNlZSBhbHNvCisJICogTWFyayB0aGUgb2xkIGFuZCBhdXhpbGlh cnkgaW5kZXhlcyBhcyBkZWFkLiBGaXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8KKwkgKiBydW5u aW5nIHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNl ZSBhbHNvCiAJICogaW5kZXhfZHJvcCgpIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAKIAlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVh ZCIpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CisJCQkJCQkJ CSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRp cGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCWZvcmVhY2gobGMs IGluZGV4SWRzKQpAQCAtNDMwMyw2ICs0NDgzLDI4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQogCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMp CisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCS8qCisJ CSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJh bnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJO SU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFu ZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q CisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNz LCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJUHVz aEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJaW5kZXhfY29u Y3VycmVudGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsK KworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCX0KKwogCS8qIENvbW1pdCB0aGlzIHRyYW5zYWN0 aW9uIHRvIG1ha2UgdGhlIHVwZGF0ZXMgdmlzaWJsZS4gKi8KIAlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNDMxNiwxMSArNDUxOCwx MSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVY IENPTkNVUlJFTlRMWQogCSAqCi0JICogRHJvcCB0aGUgb2xkIGluZGV4ZXMuCisJICogRHJvcCB0 aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcy4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF82KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKIAogCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOwpAQCAtNDM0MCw2ICs0NTQyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CiAJCX0KIAor CQlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwkJeworCQkJUmVpbmRleEluZGV4SW5mbyAqaWR4 ID0gbGZpcnN0KGxjKTsKKwkJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCQlvYmplY3QuY2xh c3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCW9iamVjdC5vYmplY3RJZCA9IGlkeC0+YXV4 SW5kZXhJZDsKKwkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJCWFkZF9leGFjdF9vYmpl Y3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJfQorCiAJCS8qCiAJCSAqIFVzZSBQRVJG T1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRo ZQogCQkgKiByaWdodCBsb2NrIGxldmVsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA0NGE4YTFm Mjg3NS4uNWU0NTdjOWU4YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC03ODQsNyArNzg0LDcg QEAgSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0 cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0ZXMs IGJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJCSAgYm9vbCBpc3JlYWR5 LCBib29sIGNvbmN1cnJlbnQsIGJvb2wgc3VtbWFyaXppbmcsCi0JCQkgIGJvb2wgd2l0aG91dG92 ZXJsYXBzKQorCQkJICBib29sIHdpdGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCiB7CiAJ SW5kZXhJbmZvICAqbiA9IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTgwMCw2ICs4MDAsNyBA QCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQs IExpc3QgKmV4cHJlc3Npb25zLAogCW4tPmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50OwogCW4t PmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlfV2l0aG91dE92ZXJsYXBzID0g d2l0aG91dG92ZXJsYXBzOworCW4tPmlpX0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAogCS8qIHN1 bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90IGNvbnRhaW4gbm9uLWtleSBhdHRyaWJ1dGVzICovCiAJ QXNzZXJ0KCFzdW1tYXJpemluZyB8fCAobnVta2V5YXR0cnMgPT0gbnVtYXR0cnMpKTsKQEAgLTgy NSw3ICs4MjYsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJz LCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVp bGQgc3RhdGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJ bi0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKLQluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAog CS8qIHNldCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBh bW9pZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDBlY2MzMTQ3YmJkLi5mYTFiZGNhN2UyYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCkBAIC03MTQsMTEgKzcxNCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBUYWJs ZUFtUm91dGluZQogCQkJCQkJCQkJCSAgIFRhYmxlU2NhbkRlc2Mgc2Nhbik7CiAKIAkvKiBzZWUg dGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMg Ki8KLQl2b2lkCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCi0J CQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAotCQkJCQkJCQkJCXN0cnVjdCBJbmRleEluZm8g KmluZGV4X2luZm8sCi0JCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJc3Ry dWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpOworCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4 X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQlSZWxhdGlv biBpbmRleF9yZWwsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAor CQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkJ CQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUpOwogCiAKIAkvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTE4NjIsMjIgKzE4NjIsMjIgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiB9CiAKIC8qCi0gKiB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKKyAq IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gLSB2YWxpZGF0aW9uIHNjYW4gZm9yIGNvbmN1cnJl bnQgaW5kZXggYnVpbGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFu YXRpb24uCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBUcmFuc2FjdGlv bklkCiB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJCQkJ CSAgUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJCQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9p bmZvLAotCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgc3RydWN0IFZhbGlkYXRl SW5kZXhTdGF0ZSAqc3RhdGUpCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0 YXRlLAorCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKLQl0 YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAotCQkJ CQkJCQkJCQkgICBpbmRleF9yZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJCQkJ CQkJCSAgIHNuYXBzaG90LAotCQkJCQkJCQkJCQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxlX3Jl bC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJCQkJ CQkJICBpbmRleF9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJ CSAgc3RhdGUsCisJCQkJCQkJCQkJCQkJICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CmluZGV4IDJkZWE5NmY0N2MzLi5jMzllZWQyNGYxYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUs NiArMjUsNyBAQCB0eXBlZGVmIGVudW0KIHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlO REVYX0NSRUFURV9TRVRfVkFMSUQsCisJSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9E Uk9QX0NMRUFSX1ZBTElELAogCUlOREVYX0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFn c0FjdGlvbjsKQEAgLTY1LDYgKzY2LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFy eV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElT VFMJCQkoMSA8PCA0KQogI2RlZmluZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1 KQogI2RlZmluZSBJTkRFWF9DUkVBVEVfSU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRF WF9DUkVBVEVfQVVYSUxJQVJZCQkJCSgxIDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRl KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9u TmFtZSwKQEAgLTg2LDcgKzg4LDggQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkJCQkJIGJpdHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBh bGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJCQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJ IE9pZCAqY29uc3RyYWludElkKTsKKwkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBj aGFyIHJlbHBlcnNpc3RlbmNlKTsKIAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktf QVNfUFJJTUFSWQkoMSA8PCAwKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFC TEUJCSgxIDw8IDEpCkBAIC0xMDAsNiArMTAzLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3Vy cmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBP aWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAor ZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sCisJCQkJCQkJCQkJICBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFi bGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4g dm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJ CQkJIE9pZCBpbmRleFJlbGF0aW9uSWQpOwogCkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZv aWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5k ZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgo T2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFu c2FjdGlvbklkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4 SW5kZXhJZCk7CiAKIGV4dGVybiB2b2lkIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJ ZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5o CmluZGV4IDU2MTZkNjQ1MjMwLi40MGIyOGY4ZGVmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5o CkBAIC05MiwxNCArOTIsMTUgQEAKIAogLyogUGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2 ZXJ0aXNlZCB2aWEgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xCQkJMQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfQlVJTEQJCQkyCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJ CQkzCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQK LSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZp bmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1RBQkxFU0NBTgk2Ci0jZGVmaW5l IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJCQk3CisjZGVmaW5lIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzIJCQkyCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9CVUlMRAkJCTMKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTQK KyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNQorI2Rl ZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfU09SVAkJNgorI2RlZmluZSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UJNwogI2RlZmluZSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF81CQkJOQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF82CQkJMTAKIAogLyoKICAqIFN1YnBoYXNlcyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9i dWlsZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggN2Q0ZTQzMTQ4ZTYuLjNmMzMxNDZiZWEwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTc3LDggKzE3Nyw4IEBAIHR5cGVkZWYgc3RydWN0IEV4 cHJTdGF0ZQogICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQog ICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoK LSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlp X1BhcmFsbGVsV29ya2VycwotICogYXJlIHVzZWQgb25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRo ZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQs IGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkK KyAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3Ro ZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleElu Zm8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggMDI4Zjg4MTVkMTIuLjU1MTQ5Y2FhZDJhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaApAQCAtOTksNyArOTksOCBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtl SW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJ CQkJCUxpc3QgKmV4cHJlc3Npb25zLCBMaXN0ICpwcmVkaWNhdGVzLAogCQkJCQkJCQlib29sIHVu aXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9v bCBjb25jdXJyZW50LAotCQkJCQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVy bGFwcyk7CisJCQkJCQkJCWJvb2wgc3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAor CQkJCQkJCQlib29sIGF1eGlsaWFyeSk7CiAKIGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3Qo Y2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNo YXIgKm5hbWUsIE5vZGUgKmFyZywgaW50IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91 dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRf c25hcHNob3RzLm91dAppbmRleCA5ZjAzZmEzMDMzYy4uNzgwMzEzZjQ3N2IgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTIzLDYgKzIzLDEyIEBAIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90 aWNlJyk7CiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkJywgJ25vdGljZScpOworIGluamVjdGlvbl9w b2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBD UkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFw LnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3Nu YXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7 CkBAIC00MywzMCArNDksMzggQEAgQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwog Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hp ZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3Nj YW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194 aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0 ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGks IGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCkBAIC03Niw5ICs5MCwxMSBAQCBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9z Y2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNf cmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwpAQCAtOTEsMjMgKzEwNywz MSBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnKTsKIAogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0 ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hp ZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikg V0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owog Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRl X3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZQpAQCAtMTE2LDEzICsxNDAsMTcgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7 CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKaW5kZXggMjk0MWFhN2FlMzguLjI0OWQxMDYxYWRhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0 X3NuYXBzaG90cy5zcWwKQEAgLTQsNiArNCw3IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGlj ZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkJywgJ25vdGljZScpOwogCiBDUkVBVEUg U0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChp IGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfaW5kZXgub3V0CmluZGV4IDE5MDRlYjY1YmI5Li43NTY2NDI1MzAyZiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAg REVUQUlMOiAgS2V5IChmMSk9KGIpIGFscmVhZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjog IGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAg S2V5IChmMik9KGIpIGlzIGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2Nh dXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMg d29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4 NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0z MDE1LDYgKzMwMTYsNyBAQCBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAo MSksICgxKSwgKDIpOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3Jl aW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5v dCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5 IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVf Y2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGgg dGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBp bnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj b25jdXJfcmVpbmRleF9pbmQ1OwpAQCAtMzAyNyw4ICszMDI5LDEwIEBAIERFVEFJTDogIEtleSAo YzEpPSgxKSBpcyBkdXBsaWNhdGVkLgogIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAogSW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBi dHJlZSAoYzEpIElOVkFMSUQKKyAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAo YzEpIElOVkFMSUQKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJl ZSAoYzEpIElOVkFMSUQKIAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4Owog RFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUg cHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4K IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzA1Niw2 ICszMDYwLDQ0IEBAIEluZGV4ZXM6CiAgICAgImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwg YnRyZWUgKGMxKQogCiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBo YW5kbGluZyBvZiBhdXhpbGlhcnkgaW5kZXhlcworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1 IChjMSBpbnQpOworSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAo Mik7CistLSBUaGlzIHRyaWNrIGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5 IGluZGV4IGZvciBpdAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1 eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4 ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAg ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93 ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2lu ZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhf aW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAorLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4 IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQK Ky0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4 IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJF IGMxID0gMTsKK0VSUk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90 IGV4aXN0CitMSU5FIDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEg PSAxOworICAgICAgICAgICAgICAgICAgICBeCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcg cmVpbmRleAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90 IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9 KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVu dCByZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dB Uk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5k ZXhfaW5kNiIKK0hJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklO RzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4 X2luZDZfY2NhdXgiCitOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRl eGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2lu ZGV4X3RhYjU7CiAtLSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMg YW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRlZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4 ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUs MTEgQEAgc2VsZWN0IGluZGV4cmVsaWQ6OnJlZ2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHgg ICAgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFy dGVkX2lzdmFsaWRfaWR4XzExICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlk X3RhYl8xMSB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRf aWR4XzExX2NjYXV4ICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAog IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMl9leHByX2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2 YWxpZF90YWJfMTIgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3Zh bGlkX3RhYl8xX2V4cHJfaWR4ICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAg fCBwYXJ0ZWRfaXN2YWxpZF9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0 ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0o NSByb3dzKQorKDYgcm93cykKIAogZHJvcCB0YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBD aGVjayBzdGF0ZSBvZiByZXBsaWNhIGluZGV4ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24u CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDMwMTRkMDQ3ZmVmLi5lMGE0NmMw YTQyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwMTMsMTQgKzIwMTMs MTUgQEAgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAg ICAgQ0FTRSBzLnBhcmFtMTAKICAgICAgICAgICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcn Ojp0ZXh0CiAgICAgICAgICAgICBXSEVOIDEgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZv cmUgYnVpbGQnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4 Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3Bo YXNlbmFtZSgocy5wYXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAg ICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6 OnRleHQKLSAgICAgICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2Fubmlu ZyBpbmRleCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzb3J0aW5nIHR1cGxlcyc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2 YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZSc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVO ICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRI RU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAg ICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6 OnRleHQKKyAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVz ZSBhdXhpbGlhcnkgaW5kZXgnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxk aW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3By b2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkp CisgICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFs aWRhdGlvbic6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzY2FubmluZyBpbmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2 YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVO ICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBX SEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAg IFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0 ZXh0CisgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3Jl IGRyb3BwaW5nJzo6dGV4dAogICAgICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVO RCBBUyBwaGFzZSwKICAgICBzLnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggYzA4NWUwNWYwNTIuLjFkZjM0MDk2OTZlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIg T04gY29uY3VyX2hlYXAoZjEpOwogSU5TRVJUIElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYics J3gnKTsKIC0tIGNoZWNrIGlmIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVp bGQgdGltZQogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBP TiBjb25jdXJfaGVhcChmMik7CitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0 ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25j dXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25j dXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25j dXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0xMjM5LDEwICsx MjQwLDEyIEBAIENSRUFURSBUQUJMRSBjb25jdXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5T RVJUIElOVE8gY29uY3VyX3JlaW5kZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRo aXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChj MSk7CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5n IGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0t IFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRy b3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1Owog XGQgY29uY3VyX3JlaW5kZXhfdGFiNAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2Nj YXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtl cyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2 YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAt MTI1NCw2ICsxMjU3LDI0IEBAIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWlu ZGV4X2luZDU7CiBcZCBjb25jdXJfcmVpbmRleF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWlu ZGV4X3RhYjQ7CiAKKy0tIENoZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVB VEUgVEFCTEUgYXV4X2luZGV4X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhf dGFiNSBWQUxVRVMgKDEpLCAoMSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZh bGlkIGluZGV4IGFuZCBhdXhpbGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQg YXV4X2luZGV4X3RhYjUKKy0tIE5vdCBhbGxvd2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4 CitSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFs c28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0g VGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2Fu IGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEg PSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUg YXV4X2luZGV4X3RhYjU7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCBy ZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1Ag VEFCTEUgYXV4X2luZGV4X3RhYjU7CisKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0 aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhl IHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9u cy4KLS0gCjIuNDMuMAoK --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0008-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Disposition: attachment; filename="v10-0008-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hh4 RnJvbSBmMjIwZjBhYjYzMzU4OGY1MGIzM2RiNzg3ZjFkODQ5NDJmMjJmNzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoxNDozOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDA4 LzExXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4LgoK VGhlIGludGVydmFsIGZvciByZXBsYWNpbmcgdGhlIHNuYXBzaG90IGlzIGNvbnRyb2xsZWQgYnkg dGhlIGBWQUxJREFURV9JTkRFWF9TTkFQU0hPVF9SRVNFVF9JTlRFUlZBTGAgY29uc3RhbnQsIHdo aWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gMTAwMCBtaWxsaXNlY29uZHMuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICB8IDExICsrKystLQogZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICB8IDExICsrKy0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICB8IDE1ICsrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgNDUgKysrKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKysrKy0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgMTkgKysrKysrKy0tLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwg MTAwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRl eC5zZ21sCmluZGV4IGUzMzM0NWY2YTM0Li41NDU2NjIyM2NiMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9pbmRleC5zZ21sCkBAIC04NjgsOSArODY4LDE0IEBAIEluZGV4ZXM6CiAgIDwvcGFyYT4KIAog ICA8cGFyYT4KLSAgIExpa2UgYW55IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYPC9jb21tYW5kPiBvbiBhCi0gICB0YWJsZSBjYW4gYWZmZWN0IHdoaWNoIHR1 cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICA8Y29tbWFuZD5WQUNVVU08L2Nv bW1hbmQ+IG9uIGFueSBvdGhlciB0YWJsZS4KKyAgIER1ZSB0byB0aGUgaW1wcm92ZWQgaW1wbGVt ZW50YXRpb24gdXNpbmcgcGVyaW9kaWNhbGx5IHJlZnJlc2hlZCBzbmFwc2hvdHMgYW5kCisgICBh dXhpbGlhcnkgaW5kZXhlcywgY29uY3VycmVudCBpbmRleCBidWlsZHMgaGF2ZSBtaW5pbWFsIGlt cGFjdCBvbiBjb25jdXJyZW50CisgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9wZXJhdGlv bnMuIFRoZSBzeXN0ZW0gYXV0b21hdGljYWxseSBhZHZhbmNlcyBpdHMKKyAgIGludGVybmFsIHRy YW5zYWN0aW9uIGhvcml6b24gZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBhbGxvd2luZworICAg PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiB0byByZW1vdmUgZGVhZCB0dXBsZXMgb24gb3RoZXIg dGFibGVzIHdpdGhvdXQKKyAgIGhhdmluZyB0byB3YWl0IGZvciB0aGUgZW50aXJlIGluZGV4IGJ1 aWxkIHRvIGNvbXBsZXRlLiBPbmx5IGR1cmluZyB2ZXJ5IGJyaWVmCisgICBwZXJpb2RzIHdoZW4g c25hcHNob3RzIGFyZSBiZWluZyByZWZyZXNoZWQgbWlnaHQgdGhlcmUgYmUgYW55IHRlbXBvcmFy eSBlZmZlY3QKKyAgIG9uIGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVy YXRpb25zLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IGM3 NmQ4ZWRkMjkxLi42ZTgyYWU2Mzk5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTQ5NCwxMCAr NDk0LDEzIEBAIEluZGV4ZXM6CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIExpa2UgYW55 IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4gb24g YSB0YWJsZQotICAgIGNhbiBhZmZlY3Qgd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVkIGJ5IGNv bmN1cnJlbnQKLSAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9uIGFueSBvdGhlciB0YWJs ZS4KLSAgIDwvcGFyYT4KKyAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gaGFzIG1pbmltYWwKKyAgICBpbXBhY3Qgb24gd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVk IGJ5IGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgorICAgIG9wZXJhdGlvbnMg b24gb3RoZXIgdGFibGVzLiBUaGlzIGlzIGFjaGlldmVkIHRocm91Z2ggcGVyaW9kaWMgc25hcHNo b3QKKyAgICByZWZyZXNoZXMgYW5kIHRoZSB1c2Ugb2YgYXV4aWxpYXJ5IGluZGV4ZXMgZHVyaW5n IHRoZSByZWJ1aWxkIHByb2Nlc3MsCisgICAgYWxsb3dpbmcgdGhlIHN5c3RlbSB0byBhZHZhbmNl IGl0cyB0cmFuc2FjdGlvbiBob3Jpem9uIHJlZ3VsYXJseSByYXRoZXIgdGhhbgorICAgIG1haW50 YWluaW5nIGEgc2luZ2xlIGxvbmctcnVubmluZyBzbmFwc2hvdC4KKyAgPC9wYXJhPgogCiAgICA8 cGFyYT4KICAgICA8Y29tbWFuZD5SRUlOREVYIFNZU1RFTTwvY29tbWFuZD4gZG9lcyBub3Qgc3Vw cG9ydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggODI5ZGFkMTE5NGUuLmQ0MTYw OWM5N2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM3NSw2ICszNzUsMTEg QEAgY29uc3RyYWludCBvbiB3aGljaCB1cGRhdGVzIGNhbiBiZSBIT1QuICBPdGhlciB0cmFuc2Fj dGlvbnMgbXVzdCBpbmNsdWRlCiBzdWNoIGFuIGluZGV4IHdoZW4gZGV0ZXJtaW5pbmcgSE9ULXNh ZmV0eSBvZiB1cGRhdGVzLCBldmVuIHRob3VnaCB0aGV5CiBtdXN0IGlnbm9yZSBpdCBmb3IgYm90 aCBpbnNlcnRpb24gYW5kIHNlYXJjaGluZyBwdXJwb3Nlcy4KIAorQWxzbywgc3BlY2lhbCBhdXhp bGlhcnkgaW5kZXggaXMgY3JlYXRlZCB0aGUgc2FtZSB3YXkuIEl0IG1hcmtlZCBhcworInJlYWR5 IGZvciBpbnNlcnRzIiB3aXRob3V0IGFueSBhY3R1YWwgdGFibGUgc2Nhbi4gSXRzIHB1cnBvc2Ug aXMgY29sbGVjdAorbmV3IHR1cGxlcyBpbnNlcnRlZCBpbnRvIHRhYmxlIHdoaWxlIG91ciB0YXJn ZXQgaW5kZXggaXMgc3RpbGwgIm5vdCByZWFkeQorZm9yIGluc2VydHMiCisKIFdlIG11c3QgZG8g dGhpcyB0byBhdm9pZCBtYWtpbmcgaW5jb3JyZWN0IGluZGV4IGVudHJpZXMuICBGb3IgZXhhbXBs ZSwKIHN1cHBvc2Ugd2UgYXJlIGJ1aWxkaW5nIGFuIGluZGV4IG9uIGNvbHVtbiBYIGFuZCB3ZSBt YWtlIGFuIGluZGV4IGVudHJ5IGZvcgogYSBub24tSE9UIHR1cGxlIHdpdGggWD0xLiAgVGhlbiBz b21lIG90aGVyIGJhY2tlbmQsIHVuYXdhcmUgdGhhdCBYIGlzIGFuCkBAIC0zOTQsMTQgKzM5OSwx NCBAQCBBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9mIHRo ZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQogdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUgbGl2 ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxs IG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KLXdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCi1hIHNlY29uZCByZWZl cmVuY2Ugc25hcHNob3QgYW5kIHZhbGlkYXRlIHRoZSBpbmRleC4gIFRoaXMgc2VhcmNoZXMgZm9y Ci10dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcg b25lcy4gIEFnYWluLAotdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwg dG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0Cit3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gdmFsaWRhdGUKK3RoZSBpbmRleC4g IFRoaXMgc2VhcmNoZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4IGluIGF1eGls aWFyeQoraW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMgaWYgdGhlbSB2aXNpYmxl IHRvIGZyZXNoIHNuYXBzaG90LgorQWdhaW4sIHRoZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2 ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAogdGhlIHZhbHVlIHRvIGJl IGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogVGhlbiB3ZSB3YWl0 IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2ZSBhIHNuYXBzaG90IG9sZGVy IHRoYW4KLXRoZSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBl bnN1cmVzIHRoYXQgbm9ib2R5IGlzCit0aGUgbGF0ZXN0IHVzZWQgc25hcHNob3QgaXMgZmluaXNo ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKIGFsaXZlIGFueSBsb25nZXIgd2hvIGNv dWxkIG5lZWQgdG8gc2VlIGFueSB0dXBsZXMgdGhhdCBtaWdodCBiZSBtaXNzaW5nCiBmcm9tIHRo ZSBpbmRleCwgYXMgd2VsbCBhcyBlbnN1cmluZyB0aGF0IG5vIG9uZSBjYW4gc2VlIGFueSBpbmNv bnNpc3RlbnQKIHJvd3MgaW4gYSBicm9rZW4gSE9UIGNoYWluICh0aGUgZmlyc3QgY29uZGl0aW9u IGlzIHN0cm9uZ2VyIHRoYW4gdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwppbmRleCBlY2VjM2MxYzA4MC4uMWEwNDFjNWE3N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTgwNiwyNyArMTgwNiwzNSBAQCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCWZldGNoZWQ7CiAJ Ym9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAogCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkg PSBmYWxzZTsKKwlpbnN0cl90aW1lCQlzbmFwc2hvdFRpbWUsCisJCQkJCWN1cnJlbnRUaW1lOwog CiAJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7CiAJQXNzZXJ0KCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAorI2RlZmluZSBWQUxJREFURV9J TkRFWF9TTkFQU0hPVF9SRVNFVF9JTlRFUlZBTAkxMDAwCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUg InJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRp ZGF0ZQotCSAqIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90 cyBpbgotCSAqIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJvZ3Jlc3Mg dGhhdCBvdXIgcmVmZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4gIElm IHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24KLQkgKiBkZWxldGVkIHR1cGxl cyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHll dAotCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBz dGlsbC1pbi1wcm9ncmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJlIHRoZXJl IG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICogTm93IHRha2UgdGhlIGZpcnN0 IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0 dXBsZXMuIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5 IHNvIG9mdGVuCisJICogdG8gcHJvcGFnYXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdhcmUhICBU aGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFu c2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0 cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRl ZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ugd2lsbCBu b3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9ucyB3aGlj aAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwgZXhw ZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBh cyB2YWxpZC4KIAkgKgogCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFu Z2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXgg YXMgdmFsaWQuCisJICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNv biBsaW1pdFggaXMgc3VwcG9ydGVkLgogCSAqCiAJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNo b3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKIAkgKiBuZWVk IGEgc25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVz dFNuYXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChzbmFwc2hvdFRpbWUpOwogCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWlu OwogCiAJLyoKQEAgLTE4NjgsNiArMTg3NiwyMyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCWJvb2wJCXRzX2lzbnVsbDsKIAkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1cnJlbnRUaW1lKTsK KwkJSU5TVFJfVElNRV9TVUJUUkFDVChjdXJyZW50VGltZSwgc25hcHNob3RUaW1lKTsKKwkJaWYg KElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGN1cnJlbnRUaW1lKSA+PSBWQUxJREFURV9JTkRFWF9T TkFQU0hPVF9SRVNFVF9JTlRFUlZBTCkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB0byBtYWtlIHN1cmUgd2UgcHJv cGFnYXRlIHhtaW4gKi8KKwkJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkJCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFw c2hvdChzbmFwc2hvdCk7CisJCQkvKiB4bWluIHNob3VsZCBub3QgZ28gYmFja3dhcmRzLCBidXQg anVzdCBmb3IgdGhlIGNhc2UqLworCQkJbGltaXRYbWluID0gVHJhbnNhY3Rpb25JZE5ld2VyKGxp bWl0WG1pbiwgc25hcHNob3QtPnhtaW4pOworCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzbmFw c2hvdFRpbWUpOworCQl9CisKIAkJLyoKIAkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJ RCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4gSWYgaXQncwogCQkqIGVtcHR5LCB3ZSBzZXQgYXV4 aW5kZXhjdXJzb3IgdG8gTlVMTC4KQEAgLTIwMjAsNyArMjA0NSw3IEBAIGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAloZWFwYW1faW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKIAogCS8qCi0JICogRHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90LiAgV2Ug bXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgorCSAqIERyb3AgdGhlIGxhdGVz dCBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKIAkg KiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBw cm9jZXNzZXMgYWxzbwogCSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNo IHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCiAJICogdGhleSBtdXN0IHdhaXQgZm9yLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA2N2NmZGM0NzIxYS4uOTZiYjM4YzY0 MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC00NDQsNyArNDQ0LDcgQEAg X2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLAogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxs LCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCiAJICoKIAkgKiBJbiBjYXNlIG9mIGNvbmN1 cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4 Ci0JICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5j ZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90 cyBvbGRlciB0aGFuIGxhdGVzdCBzbmFwc2hvdCBkdXJpbmcgdGhlCiAJICogdmFsaWRhdGlvbiBw aGFzZS4KIAkgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFj dXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDBkYTA2 OWZkNGQ3Li45MjljZDMzYWRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5j CkBAIC0xOTAsMTQgKzE5MCwxNiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJ RCB0byBwZW5kaW5nIGxpc3QgaWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhh cHBlbmVkIHNpbmNlIFZBQ1VVTSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUg aXQKIAkJCSAqIG11c3QgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNl IFJFSU5ERVgKLQkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENP TkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcwor CQkJICogdmFsaWRhdGlvbiBzY2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtl IGEgdGlnaHRlciB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIg YWNjb3JkaW5nIHRvIHRoZSBhY3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRv ZXNuJ3QgY3VycmVudGx5IGV4cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGly ZWx5CiAJCQkgKiBjbGVhciB0aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMg YW55d2F5LgogCQkJICovCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+ eGlkLCBiZHMtPm15WG1pbikpCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlY bWluKSB8fAorCQkJCQlUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+ bXlYbWluKSkKIAkJCQlzcGdBZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQog CQllbHNlCkBAIC04MTEsNyArODEzLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3Rh dGUgKmJkcykKIAkvKiBGaW5pc2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlp bml0U3BHaXN0U3RhdGUoJmJkcy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0 ID0gTlVMTDsKLQliZHMtPm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRz LT5sYXN0RmlsbGVkQmxvY2sgPSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05 MjUsNiArOTI2LDEwIEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxs YmFjayA9IGNhbGxiYWNrOwogCWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOwor CWlmIChpbmZvLT52YWxpZGF0ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCWVsc2UKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47 CiAKIAlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCkBAIC05NjUsNiArOTcwLDcgQEAgc3BndmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMpCiAJCWJkcy5zdGF0cyA9IHN0YXRzOwogCQliZHMuY2FsbGJhY2sgPSBkdW1teV9jYWxsYmFj azsKIAkJYmRzLmNhbGxiYWNrX3N0YXRlID0gTlVMTDsKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2 ZVNuYXBzaG90KCktPnhtaW47CiAKIAkJc3BndmFjdXVtc2NhbigmYmRzKTsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggZTUxNTM4M2IyODguLmY0N2JiY2E5ZGJkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0zNDc3LDggKzM0NzcsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKICAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1v bWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNl IGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQuCiAgKgotICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVy ZW5jZSBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKLSAqIHRv IHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRo ZSBpbmRleC4KKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0 IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhl IGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4gSW4KKyAqIG9yZGVyIHRvIHByb3Bh Z2F0ZSB4bWluIHdlIHJlc2V0IHRoYXQgc25hcHNob3QgZXZlcnkgZmV3IHNvIG9mdGVuLgogICog KEFueSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRl ZCBpbnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBB bnkgdHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQogICogdGhlIHNuYXAgbmVlZCBub3QgYmUg aW5kZXhlZCwgYmVjYXVzZSB3ZSB3aWxsIHdhaXQgb3V0IGFsbCB0cmFuc2FjdGlvbnMKQEAgLTM0 OTEsNyArMzQ5Miw3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2lu ZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0CiAgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0 dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKICAqIHRhcmdl dCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29y ZGluZyB0byB0aGUKLSAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3Rp Y2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogbGF0ZXN0IHNuYXBzaG90IGFy ZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCiAg KiBwYXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAq IEJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5 IHRvIGluc2VydCBhCkBAIC0zNjA3LDE5ICszNjA4LDI5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0 YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSBy ZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCSh2b2lk KSBpbmRleF9idWxrX2RlbGV0ZSgmYXV4aXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0ZV9p bmRleF9jYWxsYmFjaywgJmF1eFN0YXRlKTsKIAorCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisKIAlzdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5f ZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJCQkJCQkJCQkJSW52YWxpZE9pZCwg ZmFsc2UsCiAJCQkJCQkJCQkJCW1haW5fd29ya19tZW1fcGFydCwKIAkJCQkJCQkJCQkJTlVMTCwg VFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0ZS50dXBz X2luc2VydGVkID0gMDsKIAorCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CisKIAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNzICovCiAJ KHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRl X2luZGV4X2NhbGxiYWNrLCAmc3RhdGUpOwogCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIEV4ZWN1dGUgdGhlIHNvcnQgKi8KIAl7CiAJCWNvbnN0 IGludAlwcm9ncmVzc19pbmRleFtdID0gewpAQCAtMzYzNiw4ICszNjQ3LDYgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKQogCX0KIAl0dXBs ZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKIAl0dXBsZXNvcnRfcGVyZm9ybXNv cnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKLQotCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsK IAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggM2IxYWJlNjYwZjkuLjE2MzU2NGExNDY0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNDM1NCw3ICs0MzU0LDcgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkJLyoKIAkJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vu c2UgdGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxl cy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBq dXN0IGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQorCQkgKiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBo YXZlIHRvIHdhaXQgb3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9s ZGVyIHNuYXBzaG90cy4KIAkJICoKIAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNo b3Qgb3IgWGlkIGluIHRoaXMgdHJhbnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCAyOGEy ZDI4N2ZkNS4uOTBkMzU4ODA0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFu c2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwy MSBAQCBOb3JtYWxUcmFuc2FjdGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlv bklkIGIpCiAJcmV0dXJuIGI7CiB9CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJ RHMgKi8KK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRy YW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElz VmFsaWQoYSkpCisJCXJldHVybiBiOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkK KwkJcmV0dXJuIGE7CisKKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVy biBhOworCXJldHVybiBiOworfQorCiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURz ICovCiBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5l d2VyKEZ1bGxUcmFuc2FjdGlvbklkIGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCi0tIAoyLjQzLjAK Cg== --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v10-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120he2 RnJvbSA1ODUxYjIxZjM4MTAyZTliMDRlZGVkMmUwZjBkNWIwYjYyYWVmYjBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDA5 LzExXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAxNDIgKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVk L3JlaW5kZXhfY29uYy5vdXQgICAgICAgICAgICAgICAgIHwgIDUxIC0tLS0tLS0KIHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSAtCiAuLi4vaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCAgICAgfCAgMjggLS0tLQogOCBmaWxlcyBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uYy5vdXQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZThm ZjhmYTBlOGYuLjFhZjczOWRkYTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODg1LDEx ICsyODg1LDkgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJaW50CQkJc29ydG1lbTsKIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2li bGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMK LQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICogVGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBm bGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2Vy dCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFn cyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlBc3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9zdHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBm aXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf UVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDk2 YmIzOGM2NDM2Li42ZTAyYzA4NzFjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTE5MTEsMTEgKzE5MTEsOSBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMg Ki8KIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUg c2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMKLQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICog VGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUg cGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2VydCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlB c3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9z dHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBmaXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IDE2MzU2NGExNDY0Li40NzhmNDNmYmEwYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExNiw3ICsxMTYsNiBAQCBzdGF0aWMgYm9vbCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJ T2lkIHJlbGF0aW9uT2lkLAogCQkJCQkJCQkJCWNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcyk7 CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9uSWQsIGJvb2wg bmV3dmFsKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyh2b2lk KTsKIAogLyoKICAqIGNhbGxiYWNrIGFyZ3VtZW50IHR5cGUgZm9yIFJhbmdlVmFyQ2FsbGJhY2tG b3JSZWluZGV4SW5kZXgoKQpAQCAtNDE5LDEwICs0MTgsNyBAQCBDb21wYXJlT3BjbGFzc09wdGlv bnMoY29uc3QgRGF0dW0gKm9wdHMxLCBjb25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cykKICAq IGxhenkgVkFDVVVNcywgYmVjYXVzZSB0aGV5IHdvbid0IGJlIGZhemVkIGJ5IG1pc3NpbmcgaW5k ZXggZW50cmllcwogICogZWl0aGVyLiAgKE1hbnVhbCBBTkFMWVpFcywgaG93ZXZlciwgY2FuJ3Qg YmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5CiAgKiBtaWdodCBiZSB3aXRoaW4gdHJhbnNhY3Rpb25z IHRoYXQgYXJlIGdvaW5nIHRvIGRvIGFyYml0cmFyeSBvcGVyYXRpb25zCi0gKiBsYXRlci4pICBQ cm9jZXNzZXMgcnVubmluZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09O Q1VSUkVOVExZCi0gKiBvbiBpbmRleGVzIHRoYXQgYXJlIG5laXRoZXIgZXhwcmVzc2lvbmFsIG5v ciBwYXJ0aWFsIGFyZSBhbHNvIHNhZmUgdG8KLSAqIGlnbm9yZSwgc2luY2Ugd2Uga25vdyB0aGF0 IHRob3NlIHByb2Nlc3NlcyB3b24ndCBleGFtaW5lIGFueSBkYXRhCi0gKiBvdXRzaWRlIHRoZSB0 YWJsZSB0aGV5J3JlIGluZGV4aW5nLgorICogbGF0ZXIuKQogICoKICAqIEFsc28sIEdldEN1cnJl bnRWaXJ0dWFsWElEcyBuZXZlciByZXBvcnRzIG91ciBvd24gdnhpZCwgc28gd2UgbmVlZCBub3QK ICAqIGNoZWNrIGZvciB0aGF0LgpAQCAtNDQzLDggKzQzOSw3IEBAIFdhaXRGb3JPbGRlclNuYXBz aG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqb2xkX3NuYXBzaG90czsKIAogCW9sZF9zbmFwc2hvdHMgPSBHZXRDdXJyZW50 VmlydHVhbFhJRHMobGltaXRYbWluLCB0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkgIFBST0NfSVNf QVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJCQkJICB8IFBST0NfSU5fU0FGRV9J QywKKwkJCQkJCQkJCQkgIFBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJ CQkJCQkJCSAgJm5fb2xkX3NuYXBzaG90cyk7CiAJaWYgKHByb2dyZXNzKQogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1dBSVRGT1JfVE9UQUwsIG5fb2xkX3NuYXBzaG90 cyk7CkBAIC00NjQsOCArNDU5LDcgQEAgV2FpdEZvck9sZGVyU25hcHNob3RzKFRyYW5zYWN0aW9u SWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCiAJCQluZXdlcl9zbmFwc2hvdHMgPSBHZXRD dXJyZW50VmlydHVhbFhJRHMobGltaXRYbWluLAogCQkJCQkJCQkJCQkJCXRydWUsIGZhbHNlLAot CQkJCQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJ CQkJCQkJfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVN IHwgUFJPQ19JTl9WQUNVVU0sCiAJCQkJCQkJCQkJCQkJJm5fbmV3ZXJfc25hcHNob3RzKTsKIAkJ CWZvciAoaiA9IGk7IGogPCBuX29sZF9zbmFwc2hvdHM7IGorKykKIAkJCXsKQEAgLTU3OSw3ICs1 NzMsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1v cHRpb25zOwogCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29sCQlwYXJ0aXRpb25lZDsKLQlib29sCQlz YWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25zOwogCWludDE2CSAgICpjb2xvcHRpb25zOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTExNTcsMTAgKzExNTAsNiBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJfQogCX0KIAotCS8qIElzIGluZGV4IHNhZmUgZm9yIG90aGVycyB0 byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKSAqLwotCXNhZmVfaW5kZXgg PSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zID09IE5JTCAmJgotCQlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSA9PSBOSUw7Ci0KIAkvKgogCSAqIFJlcG9ydCBpbmRleCBjcmVhdGlvbiBpZiBhcHBy b3ByaWF0ZSAoZGVsYXkgdGhpcyB0aWxsIGFmdGVyIG1vc3Qgb2YgdGhlCiAJICogZXJyb3IgY2hl Y2tzKQpAQCAtMTY0NywxMCArMTYzNiw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7Ci0KIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmlzaWJsZSwgc28gd2UgY2FuIHJlcG9y dCB0aGUgT0lELiAgV2hpbGUgb24gaXQsCiAJICogaW5jbHVkZSB0aGUgcmVwb3J0IGZvciB0aGUg YmVnaW5uaW5nIG9mIHBoYXNlIDIuCkBAIC0xNzA1LDkgKzE2OTAsNiBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yKTsKIAkvKgpAQCAtMTczNywxMCArMTcxOSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkvKgogCSAqIFBoYXNlIDMgb2YgY29uY3VycmVudCBpbmRleCBidWlsZAog CSAqCkBAIC0xNzY2LDkgKzE3NDQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0J LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4 ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KQEAgLTE3ODUsOSAr MTc2MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYg KHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKIAkvKiBXZSBzaG91 bGQgbm93IGRlZmluaXRlbHkgbm90IGJlIGFkdmVydGlzaW5nIGFueSB4bWluLiAqLwogCUFzc2Vy dChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwpAQCAtMTgyOCwxMCArMTgw MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNh ZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2Fj dGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCkBAIC0x ODUyLDEwICsxODIxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMg Ki8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAkvKiBOb3cgd2FpdCBmb3Ig YWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICov CkBAIC0zNjMwLDcgKzM1OTUsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlPaWQJCQlh dXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwotCQlib29sCQlzYWZl OwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCiAJfSBSZWluZGV4SW5kZXhJbmZv OwogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklkcyA9IE5JTDsKIAlMaXN0CSAgICppbmRleElkcyA9 IE5JTDsKQEAgLTQwMDIsMTcgKzM5NjYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwogCQlSZXN0cmljdFNlYXJjaFBhdGgo KTsKIAotCQkvKiBkZXRlcm1pbmUgc2FmZXR5IG9mIHRoaXMgaW5kZXggZm9yIHNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzICovCi0JCWlkeC0+c2FmZSA9IChSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWwpID09IE5JTCAmJgotCQkJCQkgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShp bmRleFJlbCkgPT0gTklMKTsKLQotI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JCWlmIChp ZHgtPnNhZmUpCi0JCQlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXgtY29uYy1pbmRleC1zYWZlIik7 Ci0JCWVsc2UKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl Iik7Ci0jZW5kaWYKLQogCQlpZHgtPnRhYmxlSWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWwp OwogCQlpZHgtPmFtSWQgPSBpbmRleFJlbC0+cmRfcmVsLT5yZWxhbTsKIApAQCAtNDA3Miw3ICs0 MDI1LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVj dChSZWluZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJ bmV3aWR4LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKLQkJbmV3aWR4LT5zYWZlID0gaWR4LT5z YWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9 IGlkeC0+YW1JZDsKIApAQCAtNDE2NSwxMSArNDExNyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhp cyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NB RkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSAyIG9mIFJFSU5ERVggQ09O Q1VSUkVOVExZCiAJICoKQEAgLTQyMDAsMTAgKzQxNDcsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYg KG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyogQnVp bGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAg c2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKIApAQCAtNDIxMiwxMSArNDE1 NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlz IHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FG RV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC00MjQxLDEwICs0MTc5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25j dXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlm IChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJ CSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3Jy ZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQyNjQsMTEgKzQxOTgsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMg dHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8KLQkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZF X0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0 cnVlKTsKQEAgLTQyODksMTAgKzQyMTgsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkg Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5k ZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+ c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQogCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCkBAIC00MzI1LDEwICs0MjUwLDYgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVh bGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQzNTYs OSArNDI3Nyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqIGludGVyZXN0aW5nIHR1 cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAogCQkg KiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90 cy4KLQkJICoKLQkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGlu IHRoaXMgdHJhbnNhY3Rpb24sCi0JCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF80KTsKQEAgLTQzODAsMTMgKzQyOTgsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlf YmVmb3JlX3N3YXAiKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBC ZWNhdXNlIHRoaXMgdHJhbnNhY3Rpb24gb25seSBkb2VzIGNhdGFsb2cgbWFuaXB1bGF0aW9ucyBh bmQgZG9lc24ndCBkbwotCSAqIGFueSBpbmRleCBvcGVyYXRpb25zLCB3ZSBjYW4gc2V0IHRoZSBQ Uk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlCi0JICogdW5jb25kaXRpb25hbGx5LgotCSAqLwotCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlmb3Jib3RoKGxjLCBpbmRleElkcywgbGMyLCBu ZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm9sZGlkeCA9IGxmaXJzdChsYyk7 CkBAIC00NDQyLDEyICs0MzUzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoK LQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQgUFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1 YWxpZmllZCwgdGhlcmUncyBubwotCSAqIHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBv bmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVyIHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQg bGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBwZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDUg b2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDUwOSwxMiArNDQxNCw2IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hpbGUgd2UgY291bGQgc2V0IFBST0Nf SU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQsIHRoZXJlJ3Mgbm8KLQkgKiByZWFs IG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1aXJlIGFuIFhpZCBhZnRlciB0aGUg d2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZvciBhIHZlcnkgc2hvcnQgcGVyaW9k LgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK QEAgLTQ3NzQsMzYgKzQ2NzMsMyBAQCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9u SWQsIGJvb2wgbmV3dmFsKQogCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIH0KIAotLyoKLSAqIFNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaW4gTXlQcm9jLT5z dGF0dXNGbGFncy4KLSAqCi0gKiBXaGVuIGRvaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3 ZSBjYW4gc2V0IHRoaXMgZmxhZwotICogdG8gdGVsbCBvdGhlciBwcm9jZXNzZXMgY29uY3VycmVu dGx5IHJ1bm5pbmcgQ1JFQVRFCi0gKiBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRFWCBDT05D VVJSRU5UTFkgdG8gaWdub3JlIHVzIHdoZW4KLSAqIGRvaW5nIHRoZWlyIHdhaXRzIGZvciBjb25j dXJyZW50IHNuYXBzaG90cy4gIE9uIG9uZSBoYW5kIGl0Ci0gKiBhdm9pZHMgcG9pbnRsZXNzbHkg d2FpdGluZyBmb3IgYSBwcm9jZXNzIHRoYXQncyBub3QgaW50ZXJlc3RpbmcKLSAqIGFueXdheTsg YnV0IG1vcmUgaW1wb3J0YW50bHkgaXQgYXZvaWRzIGRlYWRsb2NrcyBpbiBzb21lIGNhc2VzLgot ICoKLSAqIFRoaXMgY2FuIGJlIGRvbmUgc2FmZWx5IG9ubHkgZm9yIGluZGV4ZXMgdGhhdCBkb24n dCBleGVjdXRlIGFueQotICogZXhwcmVzc2lvbnMgdGhhdCBjb3VsZCBhY2Nlc3Mgb3RoZXIgdGFi bGVzLCBzbyBpbmRleCBtdXN0IG5vdCBiZQotICogZXhwcmVzc2lvbmFsIG5vciBwYXJ0aWFsLiAg Q2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBvbmx5IGNhbGxpbmcKLSAqIHRoaXMgcm91dGluZSB3 aGVuIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLgotICoKLSAqIChUaGUgZmxhZyBpcyByZXNl dCBhdXRvbWF0aWNhbGx5IGF0IHRyYW5zYWN0aW9uIGVuZCwgc28gaXQgbXVzdCBiZQotICogc2V0 IGZvciBlYWNoIHRyYW5zYWN0aW9uLikKLSAqLwotc3RhdGljIGlubGluZSB2b2lkCi1zZXRfaW5k ZXhzYWZlX3Byb2NmbGFncyh2b2lkKQotewotCS8qCi0JICogVGhpcyBzaG91bGQgb25seSBiZSBj YWxsZWQgYmVmb3JlIGluc3RhbGxpbmcgeGlkIG9yIHhtaW4gaW4gTXlQcm9jOwotCSAqIG90aGVy d2lzZSwgY29uY3VycmVudCBwcm9jZXNzZXMgY291bGQgc2VlIGFuIFhtaW4gdGhhdCBtb3ZlcyBi YWNrd2FyZHMuCi0JICovCi0JQXNzZXJ0KE15UHJvYy0+eGlkID09IEludmFsaWRUcmFuc2FjdGlv bklkICYmCi0JCSAgIE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7Ci0KLQlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JTXlQcm9jLT5zdGF0 dXNGbGFncyB8PSBQUk9DX0lOX1NBRkVfSUM7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbTXlQ cm9jLT5wZ3hhY3RvZmZdID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKLQlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCA1YTNkZDVkMmQ0MC4uYThlZTQxMjM5 N2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC01NiwxMCArNTYsNiBAQCBzdHJ1Y3QgWGlkQ2FjaGUKICAq LwogI2RlZmluZQkJUFJPQ19JU19BVVRPVkFDVVVNCTB4MDEJLyogaXMgaXQgYW4gYXV0b3ZhYyB3 b3JrZXI/ICovCiAjZGVmaW5lCQlQUk9DX0lOX1ZBQ1VVTQkJMHgwMgkvKiBjdXJyZW50bHkgcnVu bmluZyBsYXp5IHZhY3V1bSAqLwotI2RlZmluZQkJUFJPQ19JTl9TQUZFX0lDCQkweDA0CS8qIGN1 cnJlbnRseSBydW5uaW5nIENSRUFURSBJTkRFWAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBv ciBSRUlOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVOVExZIG9uIG5vbi1leHByZXNzaW9uYWws Ci0JCQkJCQkJCQkJICogbm9uLXBhcnRpYWwgaW5kZXggKi8KICNkZWZpbmUJCVBST0NfVkFDVVVN X0ZPUl9XUkFQQVJPVU5ECTB4MDgJLyogc2V0IGJ5IGF1dG92YWMgb25seSAqLwogI2RlZmluZQkJ UFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HCTB4MTAJLyogY3VycmVudGx5IGRvaW5nIGxvZ2ljYWwK IAkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG91dHNpZGUgeGFjdCAqLwpAQCAtNjksMTMgKzY1LDEz IEBAIHN0cnVjdCBYaWRDYWNoZQogCiAvKiBmbGFncyByZXNldCBhdCBFT1hhY3QgKi8KICNkZWZp bmUJCVBST0NfVkFDVVVNX1NUQVRFX01BU0sgXAotCShQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5f U0FGRV9JQyB8IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQorCShQUk9DX0lOX1ZBQ1VVTSB8 IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQogCiAvKgogICogWG1pbi1yZWxhdGVkIGZsYWdz LiBNYWtlIHN1cmUgYW55IGZsYWdzIHRoYXQgYWZmZWN0IGhvdyB0aGUgcHJvY2VzcycgWG1pbgog ICogdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYnkgVkFDVVVNIGFyZSBpbmNsdWRlZCBoZXJlLgogICov Ci0jZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9TQUZF X0lDKQorI2RlZmluZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSkKIAogLyoKICAq IFdlIGFsbG93IGEgbGltaXRlZCBudW1iZXIgb2YgIndlYWsiIHJlbGF0aW9uIGxvY2tzIChBY2Nl c3NTaGFyZUxvY2ssCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUK aW5kZXggMjIyNWNkMGJmODcuLmIyNTdhMDM0NGE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVj dGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAot UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hv dHMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGNpY19yZXNldF9zbmFwc2hvdHMKIFJFR1JF U1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAKIElT T0xBVElPTiA9IGJhc2ljIGlucGxhY2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0IGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGRiOGRlNGJiZTg1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dAorKysg L2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJF TlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLS0gQ2hlY2sgc2FmZXR5 IG9mIGluZGV4ZXMgd2l0aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwotIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwot IGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAot KDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotQ1JFQVRFIFNDSEVNQSByZWlu ZGV4X2luajsKLUNSRUFURSBUQUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXks IHVwZGF0ZWRfYXQgdGltZXN0YW1wKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBP TiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJl aW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiBy ZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5E RVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwg MikgPSAwOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3NpbXBs ZTsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4 LWNvbmMtaW5kZXgtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmou aW5kX2V4cHI7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi0t LSBDbGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2gg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLURST1AgVEFCTEUgcmVp bmRleF9pbmoudGJsOwotRFJPUCBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1EUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21l c29uLmJ1aWxkCmluZGV4IDQ0Y2MwMjhlODJmLi4xYjUwNjRhYzQ5NiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzQsNyArMzQsNiBAQCB0 ZXN0cyArPSB7CiAgICdyZWdyZXNzJzogewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9u X3BvaW50cycsCi0gICAgICAncmVpbmRleF9jb25jJywKICAgICAgICdjaWNfcmVzZXRfc25hcHNo b3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVp bGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNmNmMjExZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9u dWxsCkBAIC0xLDI4ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQot Q1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2Yg aW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNS RUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkg aW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUg SU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElO REVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJ TkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsK LUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJz KGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfc2ltcGxlOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRl eF9pbmouaW5kX2V4cHI7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5p bmRfcHJlZDsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHBy X3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVp bmRleC1jb25jLWluZGV4LXNhZmUnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRi bDsKLURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25f cG9pbnRzOwotLSAKMi40My4wCgo= --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v10-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hd1 RnJvbSBmMzM0MjIwMjU2YTRlZTUzYjE3YmFmYTk3NTVmOGYwOTM1ODg4YjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDExLzExXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCBkZTYzNjUyNzQ0NC4uMTIzY2Y3OWM5YTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MjksNiArMjkyOSwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDgyMDc0OTIzOWNhLi4wOGUxZTY5OTZlNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQzNCwxMSArNDM0LDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v10-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hh5 RnJvbSAxNzA4OWNmZWU3NDJiMjMxMWRlOGI1YzljZTM5ZGZkZjM4MzZhODk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDA2 LzExXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzYgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzgwIGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGZmN2NjMDdkZjk5Li4wMDdlZmM0ZWQwYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZjJj YTk0MzA1ODEuLmJlYzc5YjQ4Y2IyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0yNTM4LDYgKzI1MzgsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0yNTg5LDYgKzI1OTAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl bCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggNjJhMzcxZGI3 ZjcuLjYzZWUwZWYxMzRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBA IHN1YmRpcignbmJ0cmVlJykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScp CiBzdWJkaXIoJ3NwZ2lzdCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJk aXIoJ3RhYmxlc2FtcGxlJykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFr ZWZpbGUgZm9yIGFjY2Vzcy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlz dGlyLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCAr MSw1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL3N0aXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODNhYTI1NTE3NmYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzYgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2lu Y2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNs YXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2FtdmFsaWRhdGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2FtcHJvYy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWdwcm9jLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgor I2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qCisgKiBTdGlyIGhhbmRsZXIg ZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBtZXRob2QgcGFyYW1l dGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5kbGVyKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1ha2VOb2RlKEluZGV4 QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5IGFuZCBwcm9jZWR1 cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJUl9OU1RSQVRFR0lF UzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1yb3V0aW5lLT5hbW9w dHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRvZXNuJ3Qgc3VwcG9y dCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXIgPSBmYWxz ZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNh bmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9IGZhbHNlOworCWFt cm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5hbW9wdGlvbmFsa2V5 ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsKKwlhbXJvdXRpbmUt PmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFnZSA9IGZhbHNlOwor CWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1wcmVkbG9j a3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxzZTsKKwlhbXJvdXRp bmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5pbmNsdWRl ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVtID0gZmFsc2U7CisJ YW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNVVU1fT1BUSU9OX1BB UkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFOVVA7CisJYW1yb3V0 aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1bmN0aW9uIGNhbGxi YWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlhbXJvdXRpbmUtPmFt YnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1pbnNlcnQgPSBzdGly aW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+YW12YWN1dW1jbGVh bnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJldHVybiA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1hdGU7CisJYW1yb3V0 aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFtcHJvcGVydHkgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5h bXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1c3RtZW1iZXJzID0g TlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2NhbjsKKwlhbXJvdXRp bmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0dHVwbGUgPSBOVUxM OworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGluZS0+YW1lbmRzY2Fu ID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRlcGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5VTEw7CisJYW1yb3V0 aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9QT0lOVEVSKGFtcm91 dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3MgZm9yIFNUSVIgaW5k ZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFsaWRhdGlvIG1heSBi ZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3RlbmN5LgorICovCiti b29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCByZXN1bHQgPSB0cnVl OworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xhc3Nmb3JtOworCU9p ZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1fcGdfb3BmYW1pbHkg ZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3QgKnByb2NsaXN0LAor CQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGluZm9ybWF0aW9uICov CisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9w Y2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3MgJXUiLCBvcGNsYXNz b2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhc3N0dXAp OworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKworCisJLyogRmV0Y2gg b3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BG QU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1pbHlmb3JtID0gKEZv cm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3BmYW1pbHluYW1lID0g TmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFsbCBvcGVyYXRvcnMg YW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9wcmxpc3QgPSBTZWFy Y2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9p ZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NOVU0sIE9iamVjdElk R2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1YWwgb3BlcmF0b3Jz ICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsrKQorCXsKKwkJSGVh cFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKKwkJRm9ybV9wZ19h bW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVwKTsKKworCQkvKiBD aGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYgKG9wcmZvcm0tPmFt b3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+IFNUSVJfTlNUUkFU RUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMg Y29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRlZ3kpKSk7CisJCQly ZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBwb3J0IE9SREVSIEJZ IG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1PUF9TRUFSQ0gg fHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQorCQl7CisJCQllcmVw b3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5zIGludmFsaWQgT1JE RVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJCQkgICBvcGZhbWls eW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsK KwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Igc2lnbmF0dXJl IC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICghY2hlY2tfYW1vcF9z aWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJICBvcHJmb3JtLT5h bW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkpCisJCXsKKwkJ CWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgb3BlcmF0 b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZhbWlseW5hbWUsCisJ CQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCXJlc3Vs dCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KHByb2NsaXN0KTsK KwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXNDYWNoZShmYW1pbHl0 dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRleC4KKyAqIFRoZSBz a2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2lsbCBiZSBhY2NlcHRl ZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4 LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJNZXRhUGFnZURhdGEg Km1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01FVEEpOworCW1ldGFk YXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0YWRhdGEsIDAsIHNp emVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051bWJlciA9IFNUSVJf TUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lwSW5zZXJ0czsKKwko KFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0aXJNZXRhUGFnZURh dGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtZXRhcGFnZSBmb3Ig YSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4IGNyZWF0aW9uLgor ICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZv cmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsKKwlHZW5lcmlj WExvZ1N0YXRlICpzdGF0ZTsKKworCS8qCisJICogTWFrZSBhIG5ldyBwYWdlOyBzaW5jZSBpdCBp cyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGgKKwkgKiBibG9jayBudW1i ZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVkIHRvIGhvbGQgdGhlIGV4dGVuc2lv bgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUgY29uY3VycmVudCBpbnNlcnRlcnMg eWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIGZvcmtu dW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFC dWZmZXIpID09IFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCisJLyogSW5pdGlhbGl6ZSBjb250ZW50 cyBvZiBtZXRhIHBhZ2UgKi8KKwlzdGF0ZSA9IEdlbmVyaWNYTG9nU3RhcnQoaW5kZXgpOworCW1l dGFQYWdlID0gR2VuZXJpY1hMb2dSZWdpc3RlckJ1ZmZlcihzdGF0ZSwgbWV0YUJ1ZmZlciwKKwkJ CQkJCQkJCQkgR0VORVJJQ19YTE9HX0ZVTExfSU1BR0UpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5k ZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09IElOSVRfRk9SS05VTSk7CisJR2VuZXJpY1hMb2dGaW5p c2goc3RhdGUpOworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworLyoK KyAqIEluaXRpYWxpemUgYW55IHBhZ2Ugb2YgYSBzdGlyIGluZGV4LgorICovCit2b2lkCitTdGly SW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpCit7CisJU3RpclBhZ2VPcGFxdWUgb3Bh cXVlOworCisJUGFnZUluaXQocGFnZSwgQkxDS1NaLCBzaXplb2YoU3RpclBhZ2VPcGFxdWVEYXRh KSk7CisKKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShwYWdlKTsKKwlvcGFxdWUtPmZsYWdz ID0gZmxhZ3M7CisJb3BhcXVlLT5zdGlyX3BhZ2VfaWQgPSBTVElSX1BBR0VfSUQ7Cit9CisKKy8q CisgKiBBZGQgYSB0dXBsZSB0byBhIFNUSVIgcGFnZS4gUmV0dXJucyBmYWxzZSBpZiB0dXBsZSBk b2Vzbid0IGZpdC4KKyAqIFRoZSB0dXBsZSBpcyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBwYWdl LgorICovCitzdGF0aWMgYm9vbAorU3RpclBhZ2VBZGRJdGVtKFBhZ2UgcGFnZSwgU3RpclR1cGxl ICp0dXBsZSkKK3sKKwlTdGlyVHVwbGUgKml0dXA7CisJU3RpclBhZ2VPcGFxdWUgb3BhcXVlOwor CVBvaW50ZXIgcHRyOworCisJLyogV2Ugc2hvdWxkbid0IGJlIHBvaW50ZWQgdG8gYW4gaW52YWxp ZCBwYWdlICovCisJQXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJLyogRG9lcyBuZXcgdHVw bGUgZml0IG9uIHRoZSBwYWdlPyAqLworCWlmIChTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwg cGFnZSkgPCBzaXplb2YoU3RpclR1cGxlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ29weSBu ZXcgdHVwbGUgdG8gdGhlIGVuZCBvZiBwYWdlICovCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFx dWUocGFnZSk7CisJaXR1cCA9IFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5tYXhvZmYg KyAxKTsKKwltZW1jcHkoKFBvaW50ZXIpIGl0dXAsIChQb2ludGVyKSB0dXBsZSwgc2l6ZW9mKFN0 aXJUdXBsZSkpOworCisJLyogQWRqdXN0IG1heG9mZiBhbmQgcGRfbG93ZXIgKi8KKwlvcGFxdWUt Pm1heG9mZisrOworCXB0ciA9IChQb2ludGVyKSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1 ZS0+bWF4b2ZmICsgMSk7CisJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPSBwdHIgLSBw YWdlOworCisJLyogQXNzZXJ0IHdlIGRpZG4ndCBvdmVycnVuIGF2YWlsYWJsZSBzcGFjZSAqLwor CUFzc2VydCgoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA8PSAoKFBhZ2VIZWFkZXIpIHBh Z2UpLT5wZF91cHBlcik7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBuZXcg dHVwbGUgaW50byBhIFNUSVIgaW5kZXguCisgKi8KK2Jvb2wKK3N0aXJpbnNlcnQoUmVsYXRpb24g aW5kZXgsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJICBJdGVtUG9pbnRlciBodF9j dGlkLCBSZWxhdGlvbiBoZWFwUmVsLAorCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUs CisJCSAgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleElu Zm8pCit7CisJU3RpclR1cGxlICppdHVwOworCU1lbW9yeUNvbnRleHQgb2xkQ3R4OworCU1lbW9y eUNvbnRleHQgaW5zZXJ0Q3R4OworCVN0aXJNZXRhUGFnZURhdGEgKm1ldGFEYXRhOworCUJ1ZmZl ciBidWZmZXIsCisJCQltZXRhQnVmZmVyOworCVBhZ2UgcGFnZTsKKwlHZW5lcmljWExvZ1N0YXRl ICpzdGF0ZTsKKwl1aW50MTYgYmxrTm87CisKKwkvKiBDcmVhdGUgdGVtcG9yYXJ5IGNvbnRleHQg Zm9yIGluc2VydCBvcGVyYXRpb24gKi8KKwlpbnNlcnRDdHggPSBBbGxvY1NldENvbnRleHRDcmVh dGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkgICJTdGlyIGluc2VydCB0ZW1wb3Jh cnkgY29udGV4dCIsCisJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJb2xk Q3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluc2VydEN0eCk7CisKKwkvKiBDcmVhdGUgbmV3 IHR1cGxlIHdpdGggaGVhcCBwb2ludGVyICovCisJaXR1cCA9IChTdGlyVHVwbGUgKikgcGFsbG9j MChzaXplb2YoU3RpclR1cGxlKSk7CisJaXR1cC0+aGVhcFB0ciA9ICpodF9jdGlkOworCisJbWV0 YUJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCisJZm9y ICg7OykKKwl7CisJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwor CQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShCdWZmZXJHZXRQYWdlKG1ldGFCdWZmZXIpKTsK KwkJLyogQ2hlY2sgaWYgaW5zZXJ0cyBhcmUgYWxsb3dlZCAqLworCQlpZiAobWV0YURhdGEtPnNr aXBJbnNlcnRzKQorCQl7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisJCWJsa05vID0gbWV0YURhdGEtPmxhc3RCbGtObzsKKwkJLyog RG9uJ3QgaG9sZCBtZXRhYnVmZmVyIGxvY2sgd2hpbGUgZG9pbmcgaW5zZXJ0ICovCisJCUxvY2tC dWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQlpZiAoYmxrTm8gPiAw KQorCQl7CisJCQlidWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBibGtObyk7CisJCQlMb2NrQnVm ZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCQkJc3RhdGUgPSBHZW5lcmlj WExvZ1N0YXJ0KGluZGV4KTsKKwkJCXBhZ2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0 YXRlLCBidWZmZXIsIDApOworCisJCQlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkJCS8q IFRyeSB0byBhZGQgdHVwbGUgdG8gZXhpc3RpbmcgcGFnZSAqLworCQkJaWYgKFN0aXJQYWdlQWRk SXRlbShwYWdlLCBpdHVwKSkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzISAgQXBwbHkgdGhlIGNoYW5n ZSwgY2xlYW4gdXAsIGFuZCBleGl0ICovCisJCQkJR2VuZXJpY1hMb2dGaW5pc2goc3RhdGUpOwor CQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1ldGFC dWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9yeUNv bnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJCS8q IERpZG4ndCBmaXQsIG11c3QgdHJ5IG90aGVyIHBhZ2VzICovCisJCQlHZW5lcmljWExvZ0Fib3J0 KHN0YXRlKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJfQorCisJCS8qIE5l ZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1ldGEgcGFnZSAqLwor CQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKKwkJc3Rh dGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1l dGEoR2VuZXJpY1hMb2dSZWdpc3RlckJ1ZmZlcihzdGF0ZSwgbWV0YUJ1ZmZlciwgR0VORVJJQ19Y TE9HX0ZVTExfSU1BR0UpKTsKKwkJLyogQ2hlY2sgaWYgYW5vdGhlciBiYWNrZW5kIGFscmVhZHkg ZXh0ZW5kZWQgdGhlIGluZGV4ICovCisKKwkJaWYgKGJsa05vICE9IG1ldGFEYXRhLT5sYXN0Qmxr Tm8pCisJCXsKKwkJCUFzc2VydChibGtObyA8IG1ldGFEYXRhLT5sYXN0QmxrTm8pOworCQkJLyog U29tZW9uZSBlbHNlIGluc2VydGVkIHRoZSBuZXcgcGFnZSBpbnRvIHRoZSBpbmRleCwgbGV0cyB0 cnkgYWdhaW4gLworCQkJICovCisJCQlHZW5lcmljWExvZ0Fib3J0KHN0YXRlKTsKKwkJCUxvY2tC dWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCWNvbnRpbnVlOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyogTXVzdCBleHRlbmQgdGhlIGZpbGUgKi8KKwkJCWJ1ZmZlciA9 IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZPUktOVU0sIE5VTEwsCisJ CQkJCQkJCQkgICBFQl9MT0NLX0ZJUlNUKTsKKworCQkJcGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0 ZXJCdWZmZXIoc3RhdGUsIGJ1ZmZlciwgR0VORVJJQ19YTE9HX0ZVTExfSU1BR0UpOworCQkJU3Rp ckluaXRQYWdlKHBhZ2UsIDApOworCisJCQlpZiAoIVN0aXJQYWdlQWRkSXRlbShwYWdlLCBpdHVw KSkKKwkJCXsKKwkJCQkvKiBXZSBzaG91bGRuJ3QgYmUgaGVyZSBzaW5jZSB3ZSdyZSBpbnNlcnRp bmcgdG8gYW4gZW1wdHkgcGFnZSAqLworCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgYWRkIG5l dyBzdGlyIHR1cGxlIHRvIGVtcHR5IHBhZ2UiKTsKKwkJCX0KKworCQkJLyogVXBkYXRlIG1ldGEg cGFnZSB3aXRoIG5ldyBsYXN0IGJsb2NrIG51bWJlciAqLworCQkJbWV0YURhdGEtPmxhc3RCbGtO byA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CisJCQlHZW5lcmljWExvZ0ZpbmlzaChz dGF0ZSk7CisKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCVVubG9ja1JlbGVh c2VCdWZmZXIobWV0YUJ1ZmZlcik7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgp OworCQkJTWVtb3J5Q29udGV4dERlbGV0ZShpbnNlcnRDdHgpOworCisJCQlyZXR1cm4gZmFsc2U7 CisJCX0KKwl9Cit9CisKKy8qCisgKiBTVElSIGRvZXNuJ3Qgc3VwcG9ydCBzY2FucyAtIHRoZXNl IGZ1bmN0aW9ucyBhbGwgZXJyb3Igb3V0CisgKi8KK0luZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2Nh bihSZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJP UiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNc IiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZAorc3Rp cnJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5 cywKKwkJICBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJS T1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVz XCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQgc3Rp cmVuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEg bm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKKy8qCisgKiBCdWlsZCBhIFNUSVIg aW5kZXggLSBvbmx5IGFsbG93ZWQgZm9yIGF1eGlsaWFyeSBpbmRleGVzLgorICogSnVzdCBpbml0 aWFsaXplcyB0aGUgbWV0YSBwYWdlIHdpdGhvdXQgYW55IGhlYXAgc2NhbnMuCisgKi8KK0luZGV4 QnVpbGRSZXN1bHQgKnN0aXJidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJ CQkJCSAgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykKK3sKKwlJbmRleEJ1aWxkUmVzdWx0 ICpyZXN1bHQ7CisKKwlpZiAoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVS Uk9SLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiU1RJ UiBpbmRleGVzIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGJlIGJ1aWx0IikpKTsKKworCVN0aXJJbml0 TWV0YXBhZ2UoaW5kZXgsIE1BSU5fRk9SS05VTSk7CisKKwlyZXN1bHQgPSAoSW5kZXhCdWlsZFJl c3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKKwlyZXN1bHQtPmhlYXBf dHVwbGVzID0gMDsKKwlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IDA7CisJcmV0dXJuIHJlc3VsdDsK K30KKwordm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlySW5pdE1l dGFwYWdlKGluZGV4LCBJTklUX0ZPUktOVU0pOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCSBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNr IGNhbGxiYWNrLAorCQkJCQkJCQkJIHZvaWQgKmNhbGxiYWNrX3N0YXRlKQoreworCVJlbGF0aW9u IGluZGV4ID0gaW5mby0+aW5kZXg7CisJQmxvY2tOdW1iZXIgYmxrbm8sIG5wYWdlczsKKwlCdWZm ZXIgYnVmZmVyOworCVBhZ2UgcGFnZTsKKworCS8qIEZvciBub3JtYWwgVkFDVVVNLCBtYXJrIHRv IHNraXAgaW5zZXJ0cyBhbmQgd2FybiBhYm91dCBpbmRleCBkcm9wIG5lZWRlZCAqLworCWlmICgh aW5mby0+dmFsaWRhdGVfaW5kZXgpCisJeworCQlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5kZXgp OworCisJCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2Vl bXMgbGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCQly ZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAoc3RhdHMgPT0gTlVMTCkKKwkJc3RhdHMgPSAoSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkp OworCisJLyoKKwkgKiBJdGVyYXRlIG92ZXIgdGhlIHBhZ2VzLiBXZSBkb24ndCBjYXJlIGFib3V0 IGNvbmN1cnJlbnRseSBhZGRlZCBwYWdlcywKKwkgKiBiZWNhdXNlIGluZGV4IGlzIG1hcmtlZCBh cyBub3QtcmVhZHkgZm9yIHRoYXQgbW9tbWVudCBhbmQgaW5kZXggbm90CisJICogdXNlZCBmb3Ig aW5zZXJ0LgorCSAqLworCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXgp OworCWZvciAoYmxrbm8gPSBTVElSX0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysr KQorCXsKKwkJU3RpclR1cGxlICppdHVwLCAqaXR1cEVuZDsKKworCQl2YWN1dW1fZGVsYXlfcG9p bnQoKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdl OworCUdlbmVyaWNYTG9nU3RhdGUgKnN0YXRlOworCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXIo aW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCXN0YXRlID0gR2VuZXJpY1hMb2dTdGFydChpbmRleCk7 CisJbWV0YVBhZ2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVy LAorCQkJCQkJCQkJCSBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJbWV0YURhdGEgPSBTdGly UGFnZUdldE1ldGEobWV0YVBhZ2UpOworCWlmICghbWV0YURhdGEtPnNraXBJbnNlcnRzKQorCXsK KwkJbWV0YURhdGEtPnNraXBJbnNlcnRzID0gdHJ1ZTsKKwkJR2VuZXJpY1hMb2dGaW5pc2goc3Rh dGUpOworCX0KKwllbHNlCisJeworCQlHZW5lcmljWExvZ0Fib3J0KHN0YXRlKTsKKwl9CisJVW5s b2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKK3sKKwlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5m by0+aW5kZXgpOworCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVk LCBzZWVtcyBsaWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7 CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25z LCBib29sIHZhbGlkYXRlKQoreworCXJldHVybiBOVUxMOworfQorCit2b2lkIHN0aXJjb3N0ZXN0 aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJIGRvdWJsZSBs b29wX2NvdW50LCBDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJCQkgQ29zdCAqaW5kZXhUb3Rh bENvc3QsIFNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJCQkgZG91YmxlICppbmRl eENvcnJlbGF0aW9uLCBkb3VibGUgKmluZGV4UGFnZXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBu b3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNzM0NTRhY2NmNjEuLjdmZjdhYjZjNzJhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCkBAIC0zNDAzLDYgKzM0MDMsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLm1lc3NhZ2Vf bGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IGhlYXBSZWxhdGlvbi0+ cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gTlVMTDsKKwlpdmluZm8udmFs aWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVl cyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fu YWx5emUuYwppbmRleCA5YTU2ZGUyMjgyZi4uZDU0ZDMxMGJhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMKQEAgLTcxOCw2ICs3MTgsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWws IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7 CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsK IAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby52YWxpZGF0ZV9p bmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8s IE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA2N2NiYTE3 YTU2NC4uZTQzMjdiNGY3ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0aW1hdGVk X2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBf dHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBwdnMt PmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qIFVwZGF0 ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRl eCA3ZTVkZjdiZWE0ZC4uNDRhOGExZjI4NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04MjUs NiArODI1LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywg T2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxk IHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4t PmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkv KiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1v aWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9nZW5hbS5oCmluZGV4IDgxNjUzZmViYzE4Li4xOTRkYmJlMWQwZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dl bmFtLmgKQEAgLTUyLDYgKzUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJ Ym9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBsZXMgaXMgYW4gZXN0aW1hdGUg Ki8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBt ZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5n IGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyogdmFsaWRhdGluZyBjb25jdXJy ZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3k7CS8q IGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbG9wdGlvbnMuaAppbmRleCBkZjY5MjNjOWQ1MC4uMDk2NjM5N2QzNDQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBlZGVmIGVudW0gcmVsb3B0X2tp bmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVMT1BUX0tJTkRfQlJJTiA9ICgx IDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgxIDw8IDExKSwKKwlSRUxPUFRf S0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQgYSBuZXcga2luZCwgbWFrZSBz dXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0JUkVMT1BUX0tJTkRfTEFTVF9E RUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVMT1BUX0tJTkRfTEFTVF9ERUZB VUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBpbGVycyB0cmVhdCBlbnVtcyBh cyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEgKi8KIAlSRUxPUFRfS0lORF9N QVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUgZm9yIHBvc3RncmVzIHN0aXIg YWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisjaW5jbHVkZSAiYW1hcGkuaCIK KyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194bG9nLmgiCisjaW5jbHVkZSAi aXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCIK KworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9OUFJPQwkJ CQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBTVElSX05TVFJBVEVHSUVTCQkx CisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisvKiBNYWNyb3MgZm9yIGFjY2Vz c2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIocGFnZSkpCisjZGVm aW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+ bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBcCisJKChTdGlyUGFnZUdldE9w YXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisjZGVmaW5lIFN0aXJQYWdlR2V0 RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVudHMocGFnZSkpCisjZGVmaW5l IFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChTdGlyVHVwbGUgKikoUGFnZUdl dENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxlKSAqICgob2Zmc2V0KSAtIDEp KSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUpIFwKKwkoKFN0aXJUdXBsZSAq KSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkpKQorCisKKworLyogUHJlc2Vy dmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQQUdFX0JMS05PCSgwKQorI2Rl ZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRhIHBhZ2UgKi8KKworCisvKiBP cGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJQYWdlT3BhcXVlRGF0 YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIG9u IHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQgZGVmaW5pdGlvbnMgYmVsb3cg Ki8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0byBmb3JjZSBtYXhhbGlnbmlu ZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVlRGF0YSBhbmQgdG8gcGxhY2UK KwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhlIGVuZCBvZiBwYWdlICovCisJ dWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNhdGlvbiBvZiBTVElSIGluZGV4 ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGlyIHBhZ2UgZmxhZ3MgKi8KKyNk ZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGlyUGFnZU9wYXF1ZURhdGEgKlN0 aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJMHhGRjg0CisKKy8qIE1ldGFk YXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJNZXRhUGFnZURhdGEKK3sK Kwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RCbGtObzsKKwlib29sCQlza2lw SW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0IGFueSBpbnNlcnRzICovCit9 IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0byBkaXN0aW5ndWlzaCBzdGly IHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFHSUNLX05VTUJFUiAoMHhEQkFD MERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJKChTdGlyTWV0YVBhZ2VEYXRh ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBzdHJ1Y3QgU3RpclR1cGxlCit7 CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBsZTsKKworI2RlZmluZSBTdGly UGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENLU1ogLSBNQVhBTElHTihTaXpl T2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpICogKHNp emVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBQYWdl IG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0TWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7CitleHRlcm4gdm9pZCBTdGly SW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0ZXJuIHZvaWQgU3Rpck1hcmtB c1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5kZXggYWNjZXNzIG1ldGhvZCBp bnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGlydmFsaWRhdGUoT2lkIG9wY2xh c3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwgRGF0dW0gKnZh bHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24g aGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsCisJCQkJCSBib29s IGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKK2V4 dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRpb24gciwgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJCSBTY2FuS2V5IG9yZGVyYnlz LCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRzY2FuKEluZGV4U2NhbkRlc2Mg c2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsK K2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywK KwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLCBJbmRleEJ1bGtEZWxl dGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lkICpjYWxsYmFja19zdGF0ZSk7 CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZh Y3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0 cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFs aWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW0uZGF0CmluZGV4IGRiODc0OTAyODIwLi41MTM1MGRmMGJmMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5k YXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywgb2lkX3N5bWJvbCA9PiAnQlJJ Tl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBt ZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIgPT4gJ2JyaW5oYW5kbGVyJywg YW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRfc3ltYm9sID0+ICdTVElSX0FN X09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBt ZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIgPT4gJ3N0aXJoYW5kbGVyJywg YW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdAppbmRleCBm NTAzYzY1MmViYy4uYThmMGU2NmQxNWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdApA QCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNzIGZvciB0aGUgZ2VvbWV0cmlj IHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMgZm9yIFNUSVIKK3sgb3BjbWV0 aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJfT1BTX09JRCcsIG9wY25hbWUg PT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2FueV9vcHMnLCBvcGNpbnR5cGUg PT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4IGM4YWM4 YzczZGVmLi40MWVhMGMzY2E1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKQEAg LTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gnLCBvcGZuYW1lID0+ICdtdWx0 aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3BmbWV0aG9kID0+ICdnaXN0Jywg b3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9PiAnNTU1OCcsCisgIG9wZm1l dGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0sCiAKIF0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDJkY2MyZDQyZGFjLi4zNDU2NDEwOWU1MCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5oYW5kbGVy JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9oYW5kbGVy JywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluaGFuZGxlcicg fSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1l bnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9PiAnc3RpcmhhbmRsZXInLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3N0aXJoYW5kbGVyJyB9LAog eyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRhbG9uZSBzY2FuIG5ldyB0YWJs ZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXplX25ld192YWx1ZXMnLCBwcm92 b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAnaW50 NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDE1 OTBiNjQzOTIwLi43ZDRlNDMxNDhlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE3MiwxMiAr MTcyLDEzIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUJyb2tlbkhvdENoYWluCQlk aWQgd2UgZGV0ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAqCQlTdW1tYXJpemluZwkJCWlz IGl0IGEgc3VtbWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxXb3JrZXJzCQkjIG9mIHdvcmtl cnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4aWxpYXJ5CQkJIyBpbmRleC1o ZWxwZXIgZm9yIGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJCU9pZCBvZiBpbmRleCBBTQog ICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRl eHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0Nv bmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1 c2VkIG9ubHkKLSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGlp X0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBhcmUgdXNlZCBvbmx5IGR1cmlu ZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgog ICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KQEAgLTIw Niw2ICsyMDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlib29sCQlpaV9TdW1tYXJp emluZzsKIAlib29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50CQkJaWlfUGFyYWxsZWxXb3Jr ZXJzOworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9BbTsKIAl2b2lkCSAgICppaV9B bUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxm dW5jcy5oCmluZGV4IGE0MWNkMmI3ZmQ5Li42MWYzZDNkZWEwYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9pbmRl eF9zZWxmdW5jcy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4gdm9pZCBzcGdjb3N0ZXN0aW1h dGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNl bGVjdGl2aXR5LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKIAkJCQkJCQlkb3Vi bGUgKmluZGV4UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rlc3RpbWF0ZShzdHJ1Y3QgUGxh bm5lckluZm8gKnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJCQlk b3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJCQkJ CUNvc3QgKmluZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2 aXR5LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKKwkJCQkJCQlkb3VibGUgKmlu ZGV4UGFnZXMpOwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRoLAogCQkJCQkJCWRvdWJsZSBs b29wX2NvdW50LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKaW5kZXggN2FiNjEx M2M2MTkuLjkyYzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2FtdXRpbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQK QEAgLTE3Myw3ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJvcCwgcGdfaW5kZXhhbV9oYXNf cHJvcGVydHkoYS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBjYW5fZXhjbHVkZSAgIHwgdAog IHNwZ2lzdCB8IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwgYm9ndXMgICAgICAgICB8IAot KDM2IHJvd3MpCisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYKKyBzdGlyICAgfCBjYW5fdW5p cXVlICAgIHwgZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0Cisgc3RpciAgIHwgY2FuX2V4 Y2x1ZGUgICB8IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwgdAorIHN0aXIgICB8IGJvZ3Vz ICAgICAgICAgfCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRpb25hbCBjaGVja3MgZm9yIHBn X2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9z YW5pdHkub3V0CmluZGV4IGI2NzM2NDJhZDFkLi4yNjQ1ZDk3MDYyOSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTE5LDkgKzIxMTksMTAgQEAgRlJPTSBw Z19vcGNsYXNzIEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfYW1vcCBB UyBhMQogICAgICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFtaWx5ID0gYzEub3BjZmFtaWx5 CiAgICAgICAgICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2libGUoYzEub3BjaW50eXBlLCBh MS5hbW9wbGVmdHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5IAotLS0tLS0tLS0tKy0tLS0t LS0tLS0tCi0oMCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cpCiAKIC0tIENoZWNrIHRoYXQg ZWFjaCBvcGVyYXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4gYXNzb2NpYXRlZCBvcGNsYXNz LAogLS0gdGhhdCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNoZXMgb3BybGVmdCAocG9zc2li bHkgYnkgY29lcmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggMzZkYzMx YzE2YzQuLmE2ZDg2Y2I0Y2EwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTUw NzQsNyArNTA3NCw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZQog IGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5k ZXgKKyg5IHJvd3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01MDg4LDcg KzUwODksOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUKICBoZWFw MiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4Ciso OSByb3dzKQogCiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKQEAgLTUxMTMsOSArNTEx NSw5IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBleHRyYSBhcmd1bWVudCAiYmFy IiBpZ25vcmVkCiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNj ZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAg ICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAg ICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdl IGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIg ICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXgg fCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTI0 LDEyICs1MTI2LDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8 IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIg IHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3Bn aGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3Mp Cisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5k ZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykKIAogXGRBKyAqCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBU eXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAg ICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAg ICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBi cmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0 aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRl eCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8 IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTM4LDcgKzUxNDEsOCBAQCBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhl YXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hh bmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lT VCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3Rpcmhh bmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRo b2QKKyg5IHJvd3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNj ZXNzIG1ldGhvZHMKLS0gCjIuNDMuMAoK --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v10-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hj7 RnJvbSBhNDRkYTQ4MzM1NTVjZWU1NjY0OWQ0M2FlZmYzZWQ2Yzk4OWZkMGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDAz LzExXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHNuYXBz aG90cwoKTG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBsaWtlIHRob3NlIHVzZWQgYnkgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhvbGQgYmFj ayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgcHJldmVudGluZyBWQUNVVU0gZnJvbSBjbGVhbmlu ZyB1cCBkZWFkIHR1cGxlcyBhbmQgcG90ZW50aWFsbHkgbGVhZGluZyB0byB0cmFuc2FjdGlvbiBJ RCB3cmFwYXJvdW5kIGlzc3Vlcy4gSW4gUG9zdGdyZVNRTCAxNCwgY29tbWl0IGQ5ZDA3NjIyMmY1 YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBpbmRleGluZyB0cmFuc2FjdGlv bnMgd2l0aCBDT05DVVJSRU5UTFkgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0 aGlzIHdhcyByZXZlcnRlZCBpbiBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQg Y2F1c2UgaW5kZXhlcyB0byBtaXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBh bmQgSE9ULXBydW5lZCBkdXJpbmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4 IGNvcnJ1cHRpb24uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzYWZlIGFsdGVybmF0aXZlIGJ5 IHBlcmlvZGljYWxseSByZXNldHRpbmcgdGhlIHNuYXBzaG90IHVzZWQgZHVyaW5nIG5vbi11bmlx dWUsIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4gQnkgcmVzZXR0aW5nIHRo ZSBzbmFwc2hvdCBldmVyeSBOIHBhZ2VzIGR1cmluZyB0aGUgaGVhcCBzY2FuLCB3ZSBhbGxvdyB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2Ugd2l0aG91dCByaXNraW5nIGluZGV4IGNvcnJ1cHRp b24uIFRoaXMgYXBwcm9hY2ggaXMgc2FmZSBmb3Igbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMgYmVj YXVzZSB0aGV5IGRvIG5vdCBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMgdGhhdCByZXF1 aXJlIGEgY29uc2lzdGVudCBzbmFwc2hvdCBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgoKQ3VycmVu dGx5LCB0aGlzIHRlY2huaXF1ZSBpcyBhcHBsaWVkIHRvOgoKTm9uLXBhcmFsbGVsIGluZGV4IGJ1 aWxkczogUGFyYWxsZWwgaW5kZXggYnVpbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhbmQgd2ls bCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgY29tbWl0LgpOb24tdW5pcXVlIGluZGV4ZXM6IFVu aXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8g ZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCBhbmQgc3VwcG9ydCBmb3IgdGhlbSBtYXkg YmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KT25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhl IGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2Vz IGEgc2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcy4KClRvIGltcGxl bWVudCB0aGlzLCBhIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQU0hPVCBpcyBpbnRyb2R1 Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBiZSByZXNldCBldmVyeSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBo ZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhl IGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNhYmxlIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5k IG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgoKVGhpcyBhZGRyZXNzZXMgdGhlIGlzc3VlcyB0 aGF0IGxlZCB0byB0aGUgcmV2ZXJzaW9uIG9mIGNvbW1pdCBkOWQwNzYyMjJmNWIsIHByb3ZpZGlu ZyBhIHNhZmUgd2F5IHRvIGFsbG93IHhtaW4gYWR2YW5jZW1lbnQgZHVyaW5nIGxvbmctcnVubmlu ZyBub24tdW5pcXVlLCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgd2hpbGUg ZW5zdXJpbmcgaW5kZXggY29ycmVjdG5lc3MuCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBhZGRlZCB0 byB2ZXJpZnkgdGhlIGJlaGF2aW9yLgotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBs ZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTYgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxk LmMgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAg ICAgICAgICAgfCAgNDYgKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgICAgICB8ICA1NyArKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jICAgICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwog MTkgZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYwppbmRleCBmZmU0ZjcyMTY3Mi4uN2ZiMDUyY2UzZGUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYwpAQCAtNjg5LDcgKzY4OSw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVs KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJ CQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJ CQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0s/ICovCisJCQkJCQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBi ZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRp ZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bn c3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggNDhjYjhmNTljNGYuLmZmN2NjMDdkZjk5IDEw MDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0zMzIsNyArMzMyLDcgQEAgcGdzdGF0X2hl YXAoUmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJv bmx5IGhlYXAgQU0gaXMgc3VwcG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVj YXVzZSB3ZSBhc3N1bWUgd2Ugc2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4g PSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwg ZmFsc2UpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwg MCwgTlVMTCwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNj YW47CiAKIAlJbml0RGlydHlTbmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYwppbmRleCA5YWY0NDVjZGNkZC4uYmMxOGRiZDJhYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKQEAgLTEyMjQsNiArMTIyNCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4 X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJ CQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRlLCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHByb2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAq CkBAIC0xMjQzLDYgKzEyNDQsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0 YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJyUmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0 ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxl YXNlIHJlc291cmNlcyAqLwpAQCAtMjM2Niw2ICsyMzY4LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxs ZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xF QURFUl9QQVJUSUNJUEFUSU9OCkBAIC0yMzkxLDkgKzIzOTQsMTYgQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1 cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0g U25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAll bHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9C UklOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0yNDM2LDYgKzI0NDYsOCBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQg KGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYg KElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0yNTE1LDYgKzI1MjcsOCBA QCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3Nm dWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+ bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxl YWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBAIC0yNTMxLDYgKzI1NDUsOCBAQCBfYnJpbl9i ZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ug d2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggMzFl ZTU2NTA0MTcuLmMwNzU4ZTI0MTBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKIApAQCAtMzc1LDYgKzM3Niw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmFj Y3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZidWlsZHN0 YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCS8qCiAJICogRG8gdGhlIGhlYXAgc2Nh bi4gIFdlIGRpc2FsbG93IHN5bmMgc2NhbiBoZXJlIGJlY2F1c2UgZGF0YVBsYWNlVG9QYWdlCiAJ ICogcHJlZmVycyB0byByZWNlaXZlIHR1cGxlcyBpbiBUSUQgb3JkZXIuCkBAIC00MjMsNiArNDI1 LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAq aW5kZXhJbmZvKQogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5p bmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKIAorCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwog CXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXgg M2EyNzU5YjQ0NjguLjRhZDEwMjJlZGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQu YwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCBnaXN0YnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCWJ1 aWxkc3RhdGUuaW5kdHVwbGVzID0gMDsKIAlidWlsZHN0YXRlLmluZHR1cGxlc1NpemUgPSAwOwog CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eGlkKSk7CiAJaWYgKGJ1aWxkc3RhdGUuYnVpbGRNb2RlID09IEdJU1RfU09S VEVEX0JVSUxEKQogCXsKIAkJLyoKQEAgLTM1MCw2ICszNTIsNyBAQCBnaXN0YnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0 LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IChkb3Vi bGUpIGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJl c3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwppbmRleCA0MmM3M2VhNWViOS4uN2E3NDlmZThm NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKQEAgLTE5MSw2ICsxOTEsNyBAQCBoYXNoYnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJ cmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9 IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMzI5ZTcyN2Y4MGQuLmMyODYwZWJi ZjMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zcGNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAK IHN0YXRpYyBIZWFwVHVwbGUgaGVhcF9wcmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwKQEAgLTU2OCw2ICs1NjksMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2Fu KFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VO TE9DSyk7CiB9CiAKKy8qCisgKiBSZXNldCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNj YW4uCisgKiBUaGlzIGVuc3VyZXMgdGhlIHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBt YWludGFpbmluZyBzYWZlIHR1cGxlIHZpc2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFw c2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGlj IGlubGluZSB2b2lkCitoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2Nh bikKK3sKKwkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUu ICovCisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsK KwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8K KwlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3Rp dmVTbmFwc2hvdCgpOworCisJc3NjYW4tPnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAv KiBqdXN0IG90IGJlIHRpZHkgKi8KKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFw c2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBHb2FsIG9mIHNu YXBzaG90IHJlc2V0IGlzIHRvIGFsbG93IGhvcml6b24gdG8gYWR2YW5jZS4gKi8KKwlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworI2lmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCisJLyogSW4gc29tZSBjYXNlcyBpdCBpcyBzdGlsbCBub3QgcG9zc2libGUgZHVlIHhp ZCBhc3NpZ24uICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpCisJ CUlOSkVDVElPTl9QT0lOVCgiaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZSIpOwor I2VuZGlmCisKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc3Nj YW4tPnJzX3NuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKK30KKwogLyoKICAqIGhlYXBf ZmV0Y2hfbmV4dF9idWZmZXIgLSByZWFkIGFuZCBwaW4gdGhlIG5leHQgYmxvY2sgZnJvbSBNQUlO X0ZPUktOVU0uCiAgKgpAQCAtNjA5LDcgKzY0MCwxMyBAQCBoZWFwX2ZldGNoX25leHRfYnVmZmVy KEhlYXBTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAogCXNjYW4tPnJzX2NidWYg PSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzY2FuLT5yc19yZWFkX3N0cmVhbSwgTlVMTCk7CiAJ aWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCisJewogCQlzY2FuLT5yc19jYmxvY2sg PSBCdWZmZXJHZXRCbG9ja051bWJlcihzY2FuLT5yc19jYnVmKTsKKyNkZWZpbmUgU09fUkVTRVRf U05BUFNIT1RfRUFDSF9OX1BBR0UgNjQKKwkJaWYgKChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QpICYmCisJCQkoc2Nhbi0+cnNfY2Jsb2NrICUgU09fUkVTRVRfU05B UFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkpCisJCQloZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoKFRh YmxlU2NhbkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTEyMzYsNiArMTI3MywxNSBAQCBo ZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoc2Nhbi0+cnNfcGFyYWxsZWx3 b3JrZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSk7 CiAKKwlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKQorCXsK KwkJQXNzZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpKTsK KwkJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLwor CQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCQkv KiBBbmQgbWFrZSBzdXJlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCQlBc3NlcnQo R2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwl9CisKIAlpZiAoc2Nhbi0+ cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpCiAJCVVucmVnaXN0ZXJTbmFwc2hv dChzY2FuLT5yc19iYXNlLnJzX3NuYXBzaG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKaW5kZXggNTNmNTcyZjM4NGIuLmQ5ZmNlMDdlOGFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExOTAsNiArMTE5MCw4IEBAIGhl YXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHBy Q29udGV4dCAqZWNvbnRleHQ7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJl Z2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluOwogCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2Nr TnVtYmVyOwogCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBA IC0xMjI0LDkgKzEyMjYsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRv IGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0g c2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55 LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0 ZSwgZXN0YXRlKTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxh dGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBi ZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBA IC0xMjM2LDYgKzEyMzUsMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAorCS8qCisJICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNo b3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21l IGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4g d2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJl c2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBm b3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICov CiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEyNDQsMjQgKzEyNTIsNDEgQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2Vy aWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2Fu IGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFw c2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwog CQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9u U25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGlu IHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNo b3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4g Y2FzZSBvZiByZXNldHRpbmcgb2Ygc25hcHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlv biBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBj aGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFw c2hvdHMpCisJCQl7CisJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsK KwkJCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFB Y3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJ CQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBzaG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLwor CQkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90ID0gdHJ1ZTsKIAkJfQogCQllbHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50KTsKIAkJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJ CQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIg b2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1 ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMp OwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBP Sz8gKi8KKwkJCQkJCQkJCSByZXNldF9zbmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7 CiAJfQogCWVsc2UKIAl7CkBAIC0xMjc1LDYgKzEzMDAsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRf cmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQ cm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNj YW4tPnJzX3NuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVk X3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVz Yykgc2NhbjsKQEAgLTEyODksNiArMTMxNiwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90 QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rp b25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFu eSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFj dGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJl ZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5m by0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hv dCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJl c2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJs aXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3MjQs NiArMTc1OCw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0 IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFuZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAg LTE3OTYsNyArMTgzMiw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJ CQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRl eCA0YjRlYmZmNmExNy4uYTEwNGJhOWRmNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBA IC00NjMsNyArNDYzLDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkJICovCiAJCXN5c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJl bGF0aW9uLCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkg IHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNz Y2FuLT5pc2NhbiA9IE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmlu ZGV4IDI4NTIyYzBhYzFjLi4xMjE0OWJkOTYyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNj YW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xk ZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wg KmJ0c3Bvb2wsIEl0ZW1Qb2ludGVyIHNlbGYsCiAJCQkJCSAgRGF0dW0gKnZhbHVlcywgYm9vbCAq aXNudWxsKTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOwogc3RhdGljIHZv aWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERh dHVtICp2YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwg dm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3Jp dGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzIxLDE4ICszMjEsMjIgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwor CUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1Vu aXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5z cG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyAm JiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0 ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1 aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9w YXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAog CXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJl c3VsdCkpOwogCkBAIC00ODAsNiArNDg0LDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWVsc2UK IAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJ CQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRl eEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHBy b2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVy CkBAIC01MzUsNyArNTQyLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIEl0ZW1Qb2lu dGVyIHNlbGYsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKICAqIGNyZWF0ZSBhbiBlbnRp cmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0YXRl IHdzdGF0ZTsKIApAQCAtNTU3LDE4ICs1NjQsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFT RV9QRVJGT1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0 c3RhdGUpOwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJ d3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9ta3Nj YW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0 IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVx dWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICovCiAJ d3N0YXRlLmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJ CQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0X3Nu YXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0X2xv YWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDEwLDYgKzE0MjAsNyBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNh Z2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9v bAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAog I2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzUsOSArMTQ0NiwxNiBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8K IAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsK IAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g ZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwor CX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRS RUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkxLDYgKzE1MDksOCBAQCBfYnRfYmVnaW5f cGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50 IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQg KGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYg KElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg1LDYgKzE2MDUsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxs eSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndv cmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3Qp CisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsK IAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiArMTYyMyw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZv cmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlm IChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCAzMDVjZWQ0ZGVhNy4u NGI0MjdkYzg4YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMjQs NiArMjQsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKIApAQCAtMTQzLDYgKzE0NCw3IEBAIHNwZ2J1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlyZXN1bHQgPSAoSW5kZXhC dWlsZFJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CiAJcmVzdWx0 LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxk c3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggNjk3NjI0OWU5ZTkuLmM1YTkwMGYxYjI5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdy YWRlX3N1cHBvcnQgZnVuY3Rpb25zICovCiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4 X3BnX2NsYXNzX29pZCA9IEludmFsaWRPaWQ7CkBAIC0xNDkxLDggKzE0OTIsOCBAQCBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVs YXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1h a2Ugc3VyZSB0aGF0IGEgc25hcHNob3QgaXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBz aG90U2V0KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3Bl biBhbmQgbG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVf b3BlbihoZWFwUmVsYXRpb25JZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MTAs MTkgKzE1MTEsMjggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25J ZCwKIAogCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CiAKKwkvKiBCdWlsZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hv dCBmb3IgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQg dGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNpbmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1p dCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hlcmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVh dGVkIGF0CiAJICogdGhlIGNhdGFsb2cgbGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9w QWN0aXZlU25hcHNob3QoKTsKIAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRz KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJv a2VuSG90Q2hhaW4gPSBmYWxzZTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhl YXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJLyogSW52 YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJz IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGlu ZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwog CkBAIC0xNTMzLDEyICsxNTQzLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0 aGUgaW5kZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0 cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0 CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFu ZCBub24tSE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVs YXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0 aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIw Niw3ICszMjIzLDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8K LQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5l eHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMjY5LDEy ICszMjg3LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2Nh biksIHdoZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNl bnRseS1kZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0 aGUgaW5kZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUK LSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0 aGF0IGlzIHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9m IHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRl eCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRp ZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBw YXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4g IFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBh bnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAg KgorICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09f UkVTRVRfU05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hv dCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3Ig dGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxk IGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCA5MzI4NTRkNmM2MC4uNmMxZmNlOGVkMjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjcwLDIzICsxNjcwLDE3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxl IGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4 IGtleXMuCiAJICoKLQkgKiBXZSBub3cgdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRo ZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQKLQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNu YXBzaG90LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNp bmdsZSBvcgorCSAqIG11bHRpcGxlIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3Vy ZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBh dGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFu c2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0 ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRo ZXIgdGhlIGVuZCBvZiBpdHMKIAkgKiBIT1QtY2hhaW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUg Y2hhaW4gaXMgSE9ULXNhZmUgZm9yIHRoaXMgaW5kZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZl U25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0J UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJm b3JtIGNvbmN1cnJlbnQgYnVpbGQgb2YgaW5kZXggKi8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkKTsKIAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGgg b3VyIHNuYXBzaG90ICovCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0 IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgaW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4K IAkgKi8KQEAgLTQwODQsOSArNDA3OCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlm IChuZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qIFNl dCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQg aXQgKi8KLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0K IAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGgg dGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDEwMSw3ICs0MDky LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1 aWxkIG9mIG5ldyBpbmRleCAqLwogCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50 YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQpOwogCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IDc0Njg5NjFiMDE3Li4xZWY2YzcyMTZmNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNz LmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwog ZG91YmxlCQljdXJzb3JfdHVwbGVfZnJhY3Rpb24gPSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFD VElPTjsKQEAgLTY3NzgsNiArNjc3OSw3IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lk IHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJUmVsYXRpb24JaGVhcDsKIAlSZWxhdGlvbglpbmRl eDsKIAlSZWxPcHRJbmZvICpyZWw7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g ZmFsc2U7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKIAlCbG9ja051bWJlciBoZWFwX2Jsb2Nr czsKIAlkb3VibGUJCXJlbHR1cGxlczsKQEAgLTY4MzMsNiArNjgzNSwxMSBAQCBwbGFuX2NyZWF0 ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCWhlYXAgPSB0YWJs ZV9vcGVuKHRhYmxlT2lkLCBOb0xvY2spOwogCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleE9pZCwg Tm9Mb2NrKTsKIAorCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhl IGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KKwlpZiAoIUFjdGl2ZVNuYXBzaG90U2V0KCkpIHsKKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mg c2FmZSB0byBwcm9jZWVkLgogCSAqCkBAIC02ODkwLDYgKzY4OTcsOCBAQCBwbGFuX2NyZWF0ZV9p bmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3Jr ZXJzLS07CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9z ZShoZWFwLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiYjMyZGUxMWVhMC4uYTMy OGYzYWVhNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgog CiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiAr NzAsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBk YXRhIG1heSBiZSBuZWVkZWQsIHNldCBTT19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RV UExFUyA9IDEgPDwgMTAsCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hf Tl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFw c2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoK KwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICog R29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2Fy ZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJ ICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAv KgpAQCAtOTM1LDcgKzk0Nyw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nh bl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0J CQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxs b3dfc3RyYXQsIGJvb2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQog ewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsK IApAQCAtOTQzLDYgKzk1NiwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFs bG93X3N5bmMpCiAJCWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90 KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzIik7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8K KwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUg c25hcHNob3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGlu Zy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJ CWZsYWdzIHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7 CiB9CkBAIC0xNzc1LDYgKzE3OTcsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUo VGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhh cmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhl IGNoYWluIHRpcC4KICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0s IGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIu CisgKgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29u Y3VycmVudCBidWlsZAorICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNj YW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBh bGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQog dGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXggMDc1M2E5ZGY1OGMuLjIyMjVjZDBi Zjg3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZp bGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0x MCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rp b25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNp bGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMg cmVpbmRleF9jb25jCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2lj X3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIp L3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45NDhkMTIzMmFhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMCww ICsxLDEwNSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScs ICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOworIGluamVj dGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNl dF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jl c2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDAp IHMoaSk7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdz cWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAg ICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworQ1JFQVRFIEZVTkNUSU9OIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRB QkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VU RSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOwor LS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIp ID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRf c25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVT QyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklO KGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBv YmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRi bAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3Rh YmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50 czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRl eCA1OGYxOTAwMTE1Ny4uNDRjYzAyOGU4MmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM1LDYgKzM1LDcgQEAgdGVzdHMgKz0gewogICAg ICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAncmVpbmRleF9jb25j JywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2Fy Z3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3Mn XSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2Fi bGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsK KworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90 aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNf cmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFy eSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwg aSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJ T04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wg SU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAg RVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9 IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFO R1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJy ZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0K K0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7 CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0g MDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFt KCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxl bCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3Jr ZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChp LCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9u b19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExT IExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworRFJPUCBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0g CjIuNDMuMAoK --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v10-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hi6 RnJvbSBhODkxOGY0MmZiYTI4NmUzMzU1Y2NhMjFlYTQ0MDUwMGVjOGQ0ZmVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDUv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVp bGRzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZp eGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVu ZXNzIGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVw IGRlYWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNv bmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5p cXVlbmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNo ZWNrcyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9h ZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZh bHVlcwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5u aW5nIGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVu Zm9yY2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAg ICB8IDE5MiArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c3BsaXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1 dGlscy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAg ICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyAgICB8ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0Lmgg ICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3Rz Lm91dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygr KSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRl NDA3ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAg LTM4NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQg YmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5n IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUg aW5kZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAg QW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQg Zm9yd2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1Qg dXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3Ig dGhlIHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBh Ym92ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVw ZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUu Citmb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2gg aXMgdXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25h cHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAg KFRoZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUg YnJva2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEg cmVndWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5 IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkg dmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3Ig aW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdh aXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0 YWtlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA4MTQ0NzQz YzMzOC4uMGY3MDY1NTM2MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1 aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 CiAJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0 aGF0IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5l ZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1 cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9k aWNhbGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0 dXBsZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 ICYmCi0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9j YXRhbG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6 eSBWQUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA0 NTZkODZiNTFjOS4uMzFiNTkyNjVhMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVw LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBf c3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0 ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5i YXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2 ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRf Ym90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBS ZWwsCiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRf ZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlm IChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMg JiYKKwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVw LCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0 dXApKQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBw ZW5kaW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFs KFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0g UGFnZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdl dEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3 aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0 dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggMDM1OTBjOTgx NjguLjY3Y2ZkYzQ3MjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMs NiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwog CWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwog CWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0y MDMsMTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0 cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3Rf ZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAg ICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4 IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIg aW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAq IHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBh bmQgYnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8g c3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVj ay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0y NTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNw b29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJ dGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1z dGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYg QEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFU UyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1 aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBo ZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwot CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNv cnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxl cyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxz LiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxs ZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRl LnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVu dCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwg aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUu c3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWls ZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFy YWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxk UmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiAr Mzc5LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4Owog CWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworICAgIC8q CisgICAgICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mg aW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorICAgICAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1 c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisgICAgICovCisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8t PmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUt PnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2Fu KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwog CWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhf YnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRz dGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUo aGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNf bm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJ CQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVT T1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQyLDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkg KiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25k IHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdl IGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24n dCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJ biBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJl IHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRl ciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFz ZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlf VW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpi dHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAq LwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQog CkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBf YnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8t PmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAg UmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNw b29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251 bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIGlzY29uY3VycmVudCkKIHsKIAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01 NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVf UEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+ c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMs NyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBi b29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0Vf TEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2ws IGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwxMyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNv cnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVk dXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1 bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVN KTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0 c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4 KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVhZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBh YnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhp c3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGluZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVw bGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRk ZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVh ZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkK Kwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7 CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAor CQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hU YWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsK KworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKwor CQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3Rh dGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOwor CisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2Ug Ki8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3Rh dGUsIDApOworCisJCQlpZiAocHJldiAhPSBOVUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1 cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdh aW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhpbmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0 IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJCQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJE YXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMgdHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNf ZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZo YXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2Vl cF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251 bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLwor CQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJ dHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJ CQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZf dGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBw cmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShm ZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOwor CQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZh bHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5k ZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdh aW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVj dGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUp CisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9 IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRF WF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJ CQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJ CQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwg dmFsdWVzLCBpc251bGwpOworCisJCQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdp dGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNc IiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgp KSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQu Iiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0 LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJ CQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJ CQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYg KCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZf dGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBp dHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhU dXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJ CQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewog CQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdl IGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyArMTQzMyw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0 ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJ CQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRz X2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtl eXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1 cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQxOCw3ICsxNTMw LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAli b29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47 CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDIxICsxNTQ3 LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFk ZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZv ciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5 IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5j ZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBj b25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3Rp bGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVl bmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVu dCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICog U25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91 ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVD RU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2Ug YSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFj Y29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2Rp Y2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5 LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTgsMTYgKzE1NjAsMTYgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3Qp CisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBj YW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBo b3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QK KwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgor CQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91 ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNyw2 ICsxNjM5LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0g YnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9 IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9 IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBs ZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lk KCk7CkBAIC0xNTUxLDcgKzE2NTQsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRh YmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJ CQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsxNzM0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJl IHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVk IGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2Nv bmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsK IAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0Miw3ICsxNzQ1LDcgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1 bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZh aWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29uY3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMTc0NSw2ICsxODQ4LDcgQEAgX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRl cndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRlLT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2Vy LT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXIt Pm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGlu Y3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bv b2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKIAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwg aWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVhZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0x ODQ4LDExICsxOTUyLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wt PmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0 aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1 cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBs ZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJl bnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5 MzIsNiArMjAzNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJ CQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlxdWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51 bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdu b3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkg VFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTU0LDE0ICsyMDYwLDEyIEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29y ZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9 IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdp bl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNl LAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wt PmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3Jr X21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGlu IGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9jYWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3Vu aXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9 IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5z cG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5k ZXggMWY0MGQ0MDI2M2UuLmUyZWQ0NTM3MDI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5k U3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBh Z2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdlLCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBs ZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBf YnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlr ZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5l d2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5 YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNw bGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlk KCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwog CS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBhcyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUt Pm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVw bmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAtOTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShG aW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBw ZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhpZ2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNw bGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFs LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAg LTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0 UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBhZ2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNh dGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVneSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVk LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9E VVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERh dGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1J ZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkpOwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdl R2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5u ZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZB TFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5k U3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3Bs aXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsKIAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0 cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggYTUzMWQzNzkwOGEuLmU3MjliNGE0ZDdj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0xMDAsOCArMTAwLDYgQEAg c3RhdGljIGJvb2wgX2J0X2NoZWNrX3Jvd2NvbXBhcmUoU2NhbktleSBza2V5LAogCQkJCQkJCQkg U2NhbkRpcmVjdGlvbiBkaXIsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRf Y2hlY2trZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUg KnBzdGF0ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0 YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0 LAotCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkp OwogCiAKIC8qCkBAIC00Njc2LDcgKzQ2NzQsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFC VHJlZVR1cGxlSXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmln aHQpKTsKIAogCS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBp biB0cnVuY2F0ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxh c3RsZWZ0LCBmaXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0 dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYg REVCVUdfTk9fVFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZl IGZvciB0ZXN0aW5nIHB1cnBvc2VzICovCkBAIC00Nzk0LDE3ICs0NzkyLDI0IEBAIF9idF90cnVu Y2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKIC8qCiAgKiBfYnRfa2VlcF9uYXR0cyAtIGhvdyBtYW55IGtleSBhdHRyaWJ1dGVzIHRv IGtlZXAgd2hlbiB0cnVuY2F0aW5nLgogICoKKyAqIFRoaXMgaXMgZXhwb3J0ZWQgdG8gYmUgdXNl ZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiB1bmlxdWUgaW5k ZXggYnVpbGQgaW4gY2FzZSBfYnRfa2VlcF9uYXR0c19mYXN0IGlzIG5vdCBzdWl0YWJsZSBiZWNh dXNlCisgKiBjb2xsYXRpb24gaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNh ZmUuCisgKgogICogQ2FsbGVyIHByb3ZpZGVzIHR3byB0dXBsZXMgdGhhdCBlbmNsb3NlIGEgc3Bs aXQgcG9pbnQuICBDYWxsZXIncyBpbnNlcnRpb24KICAqIHNjYW5rZXkgaXMgdXNlZCB0byBjb21w YXJlIHRoZSB0dXBsZXM7IHRoZSBzY2Fua2V5J3MgYXJndW1lbnQgdmFsdWVzIGFyZQogICogbm90 IGNvbnNpZGVyZWQgaGVyZS4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBj YXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICogVGhpcyBjYW4gcmV0 dXJuIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgdGhhdCBpcyBvbmUgZ3JlYXRlciB0aGFuIHRoZQog ICogbnVtYmVyIG9mIGtleSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5kZXggcmVsYXRpb24uICBUaGlz IGluZGljYXRlcyB0aGF0IHRoZQogICogY2FsbGVyIG11c3QgdXNlIGEgaGVhcCBUSUQgYXMgYSB1 bmlxdWUtaWZpZXIgaW4gbmV3IHBpdm90IHR1cGxlLgogICovCi1zdGF0aWMgaW50CitpbnQKIF9i dF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0LAotCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KQorCQkJICAgQlRTY2Fu SW5zZXJ0IGl0dXBfa2V5LAorCQkJICAgYm9vbCAqaGFzbnVsbHMpCiB7CiAJaW50CQkJbmtleWF0 dHMgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CiAJVHVwbGVE ZXNjCWl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpAQCAtNDgzMCw2ICs0ODM1LDgg QEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRl eFR1cGxlIGZpcnN0cmlnaHQsCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwg YXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZp cnN0cmlnaHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQor CQkJKCpoYXNudWxscykgfD0gKGlzTnVsbDEgfHwgaXNOdWxsMik7CiAKIAkJaWYgKGlzTnVsbDEg IT0gaXNOdWxsMikKIAkJCWJyZWFrOwpAQCAtNDg0OSw3ICs0ODU2LDcgQEAgX2J0X2tlZXBfbmF0 dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCiAJICogZXhwZWN0ZWQgaW4gYW4gYWxsZXF1YWxpbWFnZSBpbmRleC4KIAkgKi8KIAlBc3Nl cnQoIWl0dXBfa2V5LT5hbGxlcXVhbGltYWdlIHx8Ci0JCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2Vl cF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpKTsKKwkJICAga2VlcG5hdHRz ID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCkp OwogCiAJcmV0dXJuIGtlZXBuYXR0czsKIH0KQEAgLTQ4NjAsNyArNDg2Nyw4IEBAIF9idF9rZWVw X25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAogICogVGhpcyBpcyBleHBvcnRlZCBzbyB0aGF0IGEgY2FuZGlkYXRlIHNwbGl0IHBv aW50IGNhbiBoYXZlIGl0cyBlZmZlY3Qgb24KICAqIHN1ZmZpeCB0cnVuY2F0aW9uIGluZXhwZW5z aXZlbHkgZXZhbHVhdGVkIGFoZWFkIG9mIHRpbWUgd2hlbiBmaW5kaW5nIGEKICAqIHNwbGl0IGxv Y2F0aW9uLiAgQSBuYWl2ZSBiaXR3aXNlIGFwcHJvYWNoIHRvIGRhdHVtIGNvbXBhcmlzb25zIGlz IHVzZWQgdG8KLSAqIHNhdmUgY3ljbGVzLgorICogc2F2ZSBjeWNsZXMuIEFsc28sIGl0IG1heSBi ZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1cnJlbnQKKyAqIGJ1aWxk IG9mIHVuaXF1ZSBpbmRleC4KICAqCiAgKiBUaGUgYXBwcm9hY2ggdGFrZW4gaGVyZSB1c3VhbGx5 IHByb3ZpZGVzIHRoZSBzYW1lIGFuc3dlciBhcyBfYnRfa2VlcF9uYXR0cwogICogd2lsbCAoZm9y IHRoZSBzYW1lIHBhaXIgb2YgdHVwbGVzIGZyb20gYSBoZWFwa2V5c3BhY2UgaW5kZXgpLCBzaW5j ZSB0aGUKQEAgLTQ4NjksNiArNDg3Nyw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGlt YWdlIiBjb2x1bW5zLCByb3V0aW5lIGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1 bHQgYXMKICAqIF9idF9rZWVwX25hdHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNl dCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAg KiBDYWxsZXJzIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVk IGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9i dF9rZWVwX25hdHRzLCBldmVuIHdoZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3Ig Y29sbGF0aW9uIHRoYXQgaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUu CkBAIC00ODc3LDcgKzQ4ODcsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4 VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIG1vcmUgYmFsYW5jZWQg c3BsaXQgcG9pbnQuCiAgKi8KIGludAotX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKK19idF9rZWVwX25h dHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZp cnN0cmlnaHQsCisJCQkJCWJvb2wgKmhhc251bGxzKQogewogCVR1cGxlRGVzYwlpdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAlpbnQJCQlrZXlzeiA9IEluZGV4UmVsYXRpb25HZXRO dW1iZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKQEAgLTQ4OTQsNiArNDkwNSw4IEBAIF9idF9rZWVw X25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQpCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0bnVt LCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0cmln aHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJKmhh c251bGxzIHw9IChpc051bGwxIHwgaXNOdWxsMik7CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RB dHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IGZjYjZlOTQwZmYyLi43MzQ1NGFjY2Y2MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBo ZWFwUmVsYXRpb25JZCwKIAogCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZv ciBhc3NlcnQgKi8KIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK KwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9s bCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlB dEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTMyOTMsOSArMzI5Myw5IEBA IEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaWYgd2UgdXNl ZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRl eCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxl IHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAqCi0gKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBv ZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCi0gKiBz Y2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkg c28gb2Z0ZW4uIFRoZSByZWFzb24KLSAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1p biBob3Jpem9uIGZvcndhcmQuCisgKiBGdXJ0aGVybW9yZSwgd2Ugc2V0IFNPX1JFU0VUX1NOQVBT SE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldworICogc25hcHNob3QgdG8gYmUgc2V0 IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbiAgZm9yIHRoYXQgaXMgdG8KKyAq IHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFy ayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5k CiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFn YWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA2YzFmY2U4 ZWQyNS4uYTAyNzI5OTExZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjcwLDgg KzE2NzAsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNy ZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBj aGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGlu ZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkg KiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkg SE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0 aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMu IFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVz IHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFk ZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBh cmUgbm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxl IHR1cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IGUwN2JhNGVhNGIxLi5lYjQ3YWFmZjU2NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwpAQCAtMzAsNiArMzAsNyBA QAogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog CiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9fc3RhcnQgcHJvYmVzICovCkBAIC0xMjMs NiArMTI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogCWJvb2wJCWVuZm9yY2VVbmlxdWU7CS8qIGNv bXBsYWluIGlmIHdlIGZpbmQgZHVwbGljYXRlIHR1cGxlcyAqLwogCWJvb2wJCXVuaXF1ZU51bGxz Tm90RGlzdGluY3Q7IC8qIHVuaXF1ZSBjb25zdHJhaW50IG51bGwgdHJlYXRtZW50ICovCisJYm9v bAkJdW5pcXVlRGVhZElnbm9yZWQ7IC8qIGlnbm9yZSBkZWFkIHR1cGxlcyBpbiB1bmlxdWUgY2hl Y2sgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJlZUFyZzsKIAogLyoKQEAgLTM0OSw2ICszNTEsNyBA QCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQlS ZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQlib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJYm9v bCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWJvb2wgdW5pcXVlRGVhZElnbm9yZWQs CiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJCQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwK IAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTM5MSw2ICszOTQsNyBAQCB0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmluZGV4LmluZGV4UmVsID0gaW5k ZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OworCWFyZy0+dW5pcXVl RGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdub3JlZDsKIAogCWluZGV4U2NhbktleSA9IF9idF9t a3NjYW5rZXkoaW5kZXhSZWwsIE5VTEwpOwogCkBAIC0xNTIwLDYgKzE1MjQsNyBAQCBjb21wYXJl dHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1 cGxlICpiLAogCQlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAkJYm9vbAkJaXNudWxs W0lOREVYX01BWF9LRVlTXTsKIAkJY2hhcgkgICAqa2V5X2Rlc2M7CisJCWJvb2wJCXVuaXF1ZUNo ZWNrRmFpbCA9IHRydWU7CiAKIAkJLyoKIAkJICogU29tZSByYXRoZXIgYnJhaW4tZGVhZCBpbXBs ZW1lbnRhdGlvbnMgb2YgcXNvcnQgKHN1Y2ggYXMgdGhlIG9uZSBpbgpAQCAtMTUyOSwxOCArMTUz NCw1OCBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAq YSwgY29uc3QgU29ydFR1cGxlICpiLAogCQkgKi8KIAkJQXNzZXJ0KHR1cGxlMSAhPSB0dXBsZTIp OwogCi0JCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwp OwotCi0JCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5p bmRleFJlbCwgdmFsdWVzLCBpc251bGwpOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo YXJnLT5pbmRleC5pbmRleFJlbCkpLAotCQkJCSBrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVz IGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKLQkJCQkgZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKLQkJCQkgZXJydGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJl bCwKLQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSkpOworCQkvKiBUaGlzIGlzIGZhaWwtZmFzdCBjaGVjaywgc2VlIF9idF9sb2FkIGZvciBkZXRh aWxzLiAqLworCQlpZiAoYXJnLT51bmlxdWVEZWFkSWdub3JlZCkKKwkJeworCQkJYm9vbAlhbnlf dHVwbGVfZGVhZCwKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlLAorCQkJCQlpZ25vcmVkOworCisJ CQlUdXBsZVRhYmxlU2xvdAkqc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlv bkdldERlc2NyKGFyZy0+aW5kZXguaGVhcFJlbCksCisJCQkJCQkJCQkJCQkJCQkgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkID0gdHVwbGUxLT50X3RpZDsK KworCQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bihhcmctPmluZGV4LmhlYXBSZWwpOworCQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhf ZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4s ICZpZ25vcmVkKTsKKworCQkJaWYgKCFhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQljYWxsX2Fn YWluID0gZmFsc2U7CisJCQkJdGlkID0gdHVwbGUyLT50X3RpZDsKKwkJCQlhbnlfdHVwbGVfZGVh ZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnR1cGxlMi0+dF90aWQsIFNuYXBz aG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sCisJCQkJCQkJCQkJCQkJCSAgJmlnbm9yZWQpOwor CQkJfQorCisJCQlpZiAoYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJZWxvZyhERUJVRzUsICJz a2lwcGluZyBkdXBsaWNhdGUgdmFsdWVzIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGFyZSBkZWFkOiAo JXUsJXUpIHZzICgldSwldSkiLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVw bGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUxLT50 X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTItPnRfdGlkKSwK KwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTItPnRfdGlkKSk7CisKKwkJ CQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsKKwkJCX0KKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qoc2xvdCk7CisJCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwkJfQorCQlpZiAodW5p cXVlQ2hlY2tGYWlsKQorCQl7CisJCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKKworCQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlw dGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCS8qIGtlZXAg dGhpcyBlcnJvciBtZXNzYWdlIGluIHN5bmMgd2l0aCB0aGUgc2FtZSBpbiBfYnRfbG9hZCAqLwor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIs CisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSwKKwkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwg a2V5X2Rlc2MpIDoKKwkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAor CQkJCQkJCWVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBSZWwsCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQl9 CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAppbmRleCAxMjNmYmE2MjRkYi4uNDIwMGQyYmQyMGUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEyOTcsOCArMTI5NywxMCBAQCBleHRlcm4gYm9vbCBidHBy b3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIGV4dGVybiBjaGFyICpidGJ1aWxkcGhh c2VuYW1lKGludDY0IHBoYXNlbnVtKTsKIGV4dGVybiBJbmRleFR1cGxlIF9idF90cnVuY2F0ZShS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCiAJCQkJCQkJICAgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOworZXh0ZXJuIGludAlfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKKwkJCQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgYm9vbCAqaGFzbnVsbHMpOwog ZXh0ZXJuIGludAlfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKLQkJCQkJCQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KTsKKwkJCQkJCQkJSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gYm9vbCBfYnRfY2hlY2tf bmF0dHMoUmVsYXRpb24gcmVsLCBib29sIGhlYXBrZXlzcGFjZSwgUGFnZSBwYWdlLAogCQkJCQkJ CU9mZnNldE51bWJlciBvZmZudW0pOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrX3RoaXJkX3BhZ2Uo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNjZlMWFk ODNmMWEuLjBlY2MzMTQ3YmJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE3OTksOSArMTc5OSw4 IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBm b3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVy IEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgY29uY3VycmVudCAgaW5k ZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZAotICogZm9yIHRoZSBzY2FuLiBU aGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWlu Ci0gKiBob3Jpem9uIHByb3BhZ2F0ZS4KKyAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBpbmRleCBi dWlsZCBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4KKyAqIFRoYXQg bGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9y aXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggY2Rl ODNmNjIwMTUuLmFlNWY0ZDI4ZmRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBs ZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtNDI4LDYgKzQy OCw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJ CQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdW5p cXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJvb2wJdW5pcXVlRGVhZElnbm9y ZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENvb3JkaW5hdGUgY29vcmRpbmF0 ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAq dHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVhcFJlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA1OTVhNDAwMGNlMC4uOWYwM2ZhMzAzM2MgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTQxLDcgKzQxLDExIEBAIEVO RDsgJCQ7CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtODYsNyArOTAsOSBAQCBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUnKTsKICgxIHJvdykKIAogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKLS0gCjIuNDMuMAoK --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v10-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hk8 RnJvbSBlZThmOGVlNmI2Nzc4MjA0YTAyMzcwMjgwZjNiNTQzN2ZkYjA0NzMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMDQv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDQ5ICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArLS0KIC4uLi9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1ICsrKysrKystCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgNyArKy0KIDEz IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggYmMxOGRiZDJhYjMuLmU4ZmY4ZmEwZThmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRl cgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29y dDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJV c2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyArMjMwLDcgQEAgc3Rh dGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBz dGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5M ZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBf YnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0 aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVp bGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRl X2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEyNDQsNyArMTI0Myw2 IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3Rh dGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0 KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBA IC0xMjU5LDYgKzEyNTcsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzU5LDcgKzIzNTgsNiBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBs ZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsK IAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzkwLDI1ICsy Mzg4LDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9m IHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAq IFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBv dXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJF Q0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtl IGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBh Y2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxh ciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRl eCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAor CSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVs c2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkg Ki8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hh cmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0 YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTI0NDgsOCArMjQ0Niw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBh cmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0yNDc0LDcgKzI0NzAsOCBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJ CQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hv dCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0 b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVk IHNwYWNlLgpAQCAtMjUyMCw3ICsyNTE3LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQli cmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNo YXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7 Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2Fn ZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAK QEAgLTI1MzYsNiArMjUzMiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBs ZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICov CiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRl ZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2Fu IG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9w YXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU0NCw3 ICsyNTQ3LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3 YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBz dXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIu CiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2Up OwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CkBAIC0yNTY3LDkgKzI1NzEsNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAq YnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlu bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2Fn ZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9u ZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkp Ci0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBh cmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9 CkBAIC0yNzY5LDE0ICsyNzcwLDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0 YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVp cmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJh c2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4g aW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9l c3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2Nh dGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVG RkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTI3OTgsNiArMjc5OSw3IEBA IF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlCiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwg cGFydGljaXBhbnRzICovCiAJX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0 ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJlZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRz b3J0LCBoZWFwLCBpbmRleCwgc29ydG1lbSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5i cmluc2hhcmVkLT5pc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTM4LDYgKzI5NDAsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxl bF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJ CQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFy ZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRh dGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IGQ5ZmNlMDdlOGFkLi44MTQ0NzQzYzMzOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hv dEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0 aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9E RUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0 cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRl dmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBs aXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBl dmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRl c3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5k ZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJ biBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJl cXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2gg aXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAs OCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9 CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCmluZGV4IDEyMTQ5YmQ5NjJhLi4wMzU5MGM5ODE2OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2Fu KGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoaW5kZXhJbmZv LT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlp X1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgog CSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNw b29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVl IHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwg aXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICov Ci0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7 CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJ CV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0 bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFzc2Vy dChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8 fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhC dWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJ CQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIxLDYgKzE0 MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwog CWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxl bjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzgsMTIgKzE0 MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICog Rm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2Fs bHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZh bmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBz dGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlx dWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJy ZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBv ZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkg KiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8g b3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBS RUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhh dCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24t dW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTEsNiAr MTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNl dF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBA IC0xNTExLDcgKzE1MjMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAm JiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2Rl KCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQt PmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUo YnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJ CQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29y dC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE0LDYg KzE2MjcsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5v dyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUt PmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0 YXRlKTsKQEAgLTE2MjIsNyArMTY0Miw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBDYWxs ZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4u ICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3Qg aGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ2LDcgKzE2NjcsNyBAQCBfYnRfZW5kX3BhcmFsbGVs KEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVy LT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxh c3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChidGxlYWRlci0+c25hcHNo b3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hv dCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQ YXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAg LTE4OTYsNiArMTkxNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJ QlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBzY2FuOworCVBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsKIAlJbmRleEluZm8gICpp bmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzIsMTUgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5k X3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJLyogSm9pbiBwYXJh bGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgp OwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0J c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFs bGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2FuID0gdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9p bmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleEluZm8s CiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJ CQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsK KwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2Yg dGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTkwLDQgKzIwMTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0 dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ aWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5k ZXggYmQ4NzE1YjY3OTcuLmNhYzdhOWVhODhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAotCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3osIEVzdGlt YXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IHNuYXBz aG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQzLDIxICsxNDMsMzYg QEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJl bCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsK IAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0 aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBzbmFwc2hv dF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICogSW5pdGlh bGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdpdGggYSBy ZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBpbmZvLiBG b3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhl IHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNz ZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25hcHNob3Rf YW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOworCQlJTkpF Q1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQorCWVsc2Ug aWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNu YXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNj YW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RB bnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9h bnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQog CkBAIC0xNzAsNyArMTg1LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVM b2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsK IAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhh dAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3Jk aW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3Rh dGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkv KiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdl dEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2Fu eSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJ c25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3Nu YXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCAwYTFl MDg5ZWMxZC4uZDQ5YzZlZTQxMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwu YwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRF CQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9V TkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZG MDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICov CiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIsMTAgQEAg SW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlw Y3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxf c2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhv dyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFt ZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzcy LDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVt c3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFw c2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXpl IHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkzLDE5IEBA IEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShl bnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50 c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUp OworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBp bmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlz bmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2Ms IG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsg aSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hv dF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihib29sKTsK KwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJfQorCQlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwg c25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vyc190b19s YXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0Miw2ICs1 NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQog CQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBjeHQtPnNl ZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBm YWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9S RVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsraSkK KwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAvKgpAQCAt NjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVycm9yIHF1 ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRvIGRvIHRo aXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBwYXJhbGxl bCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90LiBUaGlz IGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBlbnN1cmUg YWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9yZSBwcm9j ZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRoYXQgaWYg dGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51bWJlciBv ZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5pdGlhbGl6 ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVyIG9yIG5v dCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAgTGF1bmNo UGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhpcyBmdW5j dGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQ YXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFy YWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWludAkJCWk7 CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4dC0+d29y a2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAhPSBOVUxM KQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8K LQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJCSsrcGN4 dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3Qg fHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJCQkJCQkv KiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25v d25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRh Y2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0YXRlICpm cHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNob3RfcmVz dG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJY2hh cgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ4OSw2ICsxNTI3LDEwIEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wZ3By b2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNob3QgaXMg cmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICovCisJc25h cHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9T TkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQgd2hpY2gg dHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJICogc3lz dGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjNWE5MDBmMWIyOS4uZmNiNmU5NDBmZjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25h cHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwot CUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBm dW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDdjYjEyYTExYzJkLi4yOTA3YjM2Njc5MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yNjIsNyArMjYyLDggQEAgRXhlY1NlcVNj YW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwK LQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3Nu YXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5v ZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggMTAxYTAy YzViNjAuLjE1M2FjMjhkYjNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMjgzLDE0 ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAogR2V0TGF0 ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVsYXgg dGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5lZWRzIGl0 LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0JCQkgImNh bm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9u Iik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5nIHN1cHBv cnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNvZGluZywg YnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaAppbmRleCA2OWZmZTU0OThmOS4uOTY0YTdlOTQ1YmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o CkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5mbwogewog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJv cl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5m bzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4 dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwog ZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRl eHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFy YWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2 b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQs IGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95 UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCA4Y2E4Zjc4OTYx Ny4uZDgwMWFjYTgyYTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0b3IgcGhz X2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlwaHNfc3lu Y3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAlib29sCQlw aHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9kYXRhPyAq LworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBTSE9UPyAq LwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICovCiB9IFBh cmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBh MzI4ZjNhZWE2Yi4uNjZlMWFkODNmMWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4MCw3ICsx MTgwLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9u IHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3Qp OwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUg YmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk4LDkgKzE3OTksOSBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgot ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVu dCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRo YXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBhbGxvdyB4 bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJl bnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZvciB0aGUg c2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxs b3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91Ymxl CiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4uNTk1YTQwMDBjZTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEyIEBAIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7Cisg aW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUg aW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCA1MDcyNTM1YjM1 NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMyw3ICszLDcg QEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMn LCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkg a2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CiAKKy0tIERl dGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBs ZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBAIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK0RST1AgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAK Mi40My4wCgo= --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v10-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hl9 RnJvbSAwNTU5ZWM3YmM1YzkwYWE4NjhhMGQ0YWNmODg3YjdlMzU3Y2IyNmY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDAx LzExXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwog bWVyZ2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Yg c3RyZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAxMzUgKysrKysr KysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAg ICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA0MDQ5Y2UxYTEwZi4uOTMyODU0 ZDZjNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzY2LDYgKzE3NjYsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsK QEAgLTQyMDYsNyArNDIwNyw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNh bWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZy b20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5K RUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIp OwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI4NSw2ICs0Mjg2LDcg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0 YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJy ZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggZjBh NWY4ODc5YTkuLjgyMDc0OTIzOWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYg ZW51bQpAQCAtOTM2LDYgKzkzNyw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlz dGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4 Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFj b25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA3NjUxODg2 MjI5MS4uYWVlZWU0MWQ1ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTQ4Myw2ICs0ODMsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0 ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2Yg YmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBv cGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIg aW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxl LgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24J YXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJ bmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5m byAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9V bmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBp cyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJ aWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5m by0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRl ckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkg PCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJ CWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRr ZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJl c3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChs aXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxh dGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAh PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJ bml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBS ZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjkzLDYgKzczNSw4IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMg IT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5j ZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0g MDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+ cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzAzLDIzICs3NDcsNzQgQEAgRXhlY0luaXRQYXJ0aXRp b25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxp c3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3Jz KGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYg KGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJp dGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJ CWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0 X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJ bmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3Rv ciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIu ICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywg Y2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJ ICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21w YXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3 aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEg cGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBC b3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1 cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBz ZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJ CQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJ CQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJ CQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0 X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNl c3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOwor CQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9y SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMg dG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlp ZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29u dGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRp Y2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5k ZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJi aXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nb al07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmkt PnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBp bmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAq LworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVs YXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3Rvcklu ZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJ YXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJ CQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJ CQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJ CQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsK KworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVu Z3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBz aW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEg bm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBh biBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9s ZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0K KwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQor CQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJ LyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNv bWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJi aXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQg aW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhl cykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVh Zl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7 CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggYzQ0NWM0 MzNkZjQuLjY3YmVmYjZjYmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3Vw CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5U KCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkg KiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0 aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggYzMxY2MzZWU2OWYuLmI0 Zjk2NDFlNTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTQsMTIg KzcxNCwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlz dAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVy ZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0 ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBO b3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1h cHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFy Yml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExp c3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJ ICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgog CSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0 IGFuIGluZmVyZW5jZQpAQCAtNzU0LDggKzc1Niw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0J CQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Ig bm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsK KwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0 ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVx dWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAt NzY3LDMwICs3NjksNzYgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBl cnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFy ZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5m ZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJl ZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs YXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhp cyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQg dG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50 IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3Npbmcg YW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAob25j b25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29u c3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwog CiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAot CQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNz b2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1zZygiY29uc3RyYWludCBpbiBPTiBDT05GTElD VCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICog RmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVz IGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRv IGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZv cmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQo bCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlB dHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChp ZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJl IHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9n ZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJl ZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlO REVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBp ZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9 IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRu byAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVx dWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVt cyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZElu ZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkv KiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9zZShp ZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3Nl KGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAogCS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNl bnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICog dGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRleExp c3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC04MTMsNyArODYx LDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVs ID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBp ZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJ ICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5k ZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVj dXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMg dXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwKKwkJICogY29uY3VycmVudCB0 cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3Rv IG5leHQ7CiAKIAkJLyoKQEAgLTgzMywyNyArODg3LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBE TyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0K LQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsK LQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2sp OwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsK KwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAh PSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGlu ZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAqLwotCQkJZ290byBuZXh0OworCQkJLyogSW4g dGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tp cCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVl ICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5l eHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlv bmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRz KSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAq IHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5k aXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRl cmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkg KiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVk aWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlk eEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxl ZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJ ICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBza2lwIHRob3NlIHRvby4KQEAgLTg3Myw3ICs5 MjMsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAog CQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJ aWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1 YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAK IAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4 MSw2ICs5MzEsMTAgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQog CQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICop IGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFy ZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1lID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNl bnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3Qt PmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VF bGVtICopIGxmaXJzdChlbCk7CkBAIC05MTgsMjcgKzk3MiwzNSBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwg aW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIElu IGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQg dGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBu b3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRo ZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVh dCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkg YXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgor CQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFz IGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBp bmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMp ICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVy RWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFy dGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAq IENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25H ZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEp CiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAot CQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHByZWRFeHBycywgKExpc3QgKikgb25jb25mbGlj dC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGlu ZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1w bGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1w bGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdv dG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFp bnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3Ry YWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVk SW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3Vs dHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRW YWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVs LCBOb0xvY2spOwogCX0KQEAgLTk0Niw3ICsxMDA4LDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5k ZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRz ID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3Zh bGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8 ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUg b3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmlj YXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCA2ZWIyOWI5OTczNS4uMTAx YTAyYzViNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC02NCw2ICs2NCw3IEBACiAj aW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKIAogCiAvKgpAQCAtMzg4LDYgKzM4OSw3IEBAIEludmFsaWRhdGVDYXRhbG9nU25hcHNo b3Qodm9pZCkKIAkJcGFpcmluZ2hlYXBfcmVtb3ZlKCZSZWdpc3RlcmVkU25hcHNob3RzLCAmQ2F0 YWxvZ1NuYXBzaG90LT5waF9ub2RlKTsKIAkJQ2F0YWxvZ1NuYXBzaG90ID0gTlVMTDsKIAkJU25h cHNob3RSZXNldFhtaW4oKTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJpbnZhbGlkYXRlX2NhdGFsb2df c25hcHNob3RfZW5kIik7CiAJfQogfQogCi0tIAoyLjQzLjAKCg== --000000000000266f1f062aa7612d Content-Type: application/octet-stream; name="v10-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v10-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5e120hm10 RnJvbSAxMzIwMDJjMWE4NWI0ODBiNmM0MmVjMDUyY2Q1YTNjNDgwZmRjMGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDAy LzExXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxODkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDI5MmIzM2ViMDk0Li40YThmNGZiYzhiMCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YTk1NTlkYmUzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMTg5IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBp ZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2Rl LCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2sp KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50 IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1 bHQgMCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwK KwkJCQkJCQkJaWEgaW50NFtdLCBwIHBvaW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VM RUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJ CQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBs YXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlm IDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0 YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJl ZGljYXRlX3N0YWJsZSgpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChp LCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2Nv bnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4XzIgT04gdGJsKHByZWRpY2F0ZV9jb25zdChpKSk7CisJCQkJCVxlbGlmIDp2 YXJpYW50ID0gNQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0Ymwo aSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3Qo aSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4 X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRy dWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVw IDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhl ZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVH SU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20o KSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAx KTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZv ciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2go CisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRy YW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7 XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3Vu aXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChpKTsKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2so J2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJ CQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20o MSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhm bG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8g VVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93 X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9y ICBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAt LWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkg cHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJF SU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQ R0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3Ry eV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdv dGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVl IFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3Zh bHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJh bGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDQpCisJCQkJCVxpZiA6dmFyaWFu dCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5H IEdJTiAoaWEpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEdJU1QgKHApOworCQkJCQlcZWxpZiA6dmFy aWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVT SU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRf YXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIFNQR0lTVCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlc c2xlZXAgMTAgbXMKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJ CVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJ TlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9O IENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVD VCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCisk bm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK LS0gCjIuNDMuMAoK --000000000000266f1f062aa7612d--