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 1uADdI-00CMDj-Cq for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Apr 2025 20:02:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uADdG-00GByO-AL for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Apr 2025 20:02:15 +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 1uADdE-00GByF-Qd for pgsql-hackers@lists.postgresql.org; Wed, 30 Apr 2025 20:02:14 +0000 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uADdB-000PAy-1l for pgsql-hackers@postgresql.org; Wed, 30 Apr 2025 20:02:12 +0000 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-86fbc8717fcso61302241.2 for ; Wed, 30 Apr 2025 13:02:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746043329; x=1746648129; 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=QliKzLtWxFb7+ntew1B6uBtLtLGM6UY+Iy5sS1gmwxQ=; b=Z8Q9L6SCBcYetmgW95mW95LnoN3u4JUqA0eHU7L/DnGXnzXlJsxUqoTHbwQfJJwlmI G4L4k0VN2+4iJpst4Q5VnZ4WeP0QbrFS+vmCcadS0quNbX/vZr+hT16S3U4GG1Ynj2At b1sdUd1juqFI1e9YlWzLxlIqD41fNok17tmxf/L+X8wALCy8vtPTsHZ1nCAd/4uYWxed V0xm+jMQ9S6nB3BFHVc/pquY93u6MqN4eO9ZLMIGzK7dLfBCT5xRFGEQfvT8aEhl7tm0 VuR8wpockyF9JK+YNHpvX6kd0NnAKxhgROMn+A94vV3bQyLqk+OYxdjD/wIJSn1mIeXU 8I/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746043329; x=1746648129; 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=QliKzLtWxFb7+ntew1B6uBtLtLGM6UY+Iy5sS1gmwxQ=; b=VtRqNmmRg//FiAIcbOez21SrO7tKLS+z16e+NPMFs6xv0bK0cwf5yzsiiBqoZMZwjM 2395wd09LWxUnxLcYB1TLFaVS7AbGmPZm3GaJXVGvapc8uzdpj5gPHjDf1j11dK0KdND Fh/Gsb2xggJMOFTKOoqcIfHbd7OBtwaENZtaRdO/e5gQqS8FWu+mB3k+SP4x6bw2zaeB LDhJql0VSNQiroFDYhqqUx58IHmB+VML8jShK8R8qoS2HfBu+c37lh5lKkk9mxdkcHl5 C+NYThsRiGAyP/ewrFA6b0KhNEBi3Ro/aKDMIpUa1KDLbEUlK+n6cD5/UQktshJybyft kWdg== X-Forwarded-Encrypted: i=1; AJvYcCXmEA2f0ULHedAWBDYnpoKCksSNxQBLeV+CaC0DAScJ3dEFgSFi5tfUj4siH7VTLpAIb1tzCGkvikA93q+U@postgresql.org X-Gm-Message-State: AOJu0YzaJKtpJC4ZDrSuAcZ0l4SMnWejHFbfzTUTIlZB4gW2cfSMr48p 0/4HhdmLMQlhcH2qw+x/Gq+BrzYSdIGKPPzISjJuk93f+RCp27Rsx4QuzFo8/vqAsHTyqa9sX+o NfvRX23Ht30VxZszaClOOwlT+rS0= X-Gm-Gg: ASbGncsok/EcU+cT1LUWWf32wSnAqIyhjgzHn3uqBkG6G7ysx3zFqcIS+sCoq6dgILb 49G4tF9JUnPwnyeePX2BbXxX7uLJ2x5/RCpEEDNZnI9sv3pUt/RSs/RjjRNxKUQL9KbeQKmLOHT obmiLmzQ+lm61tUuY1ocn1sA== X-Google-Smtp-Source: AGHT+IEdoxrY1xvoPGvj3Gh5oZVcb2NVgeC2oGiwdjdLsSxJ8Cg4DPSZsIpwnS/OTVX38rGe1GIEcuycyaGVrUtxcqk= X-Received: by 2002:a05:6122:ca9:b0:520:60c2:3fd with SMTP id 71dfb90a1353d-52aceb4105amr3515132e0c.3.1746043321229; Wed, 30 Apr 2025 13:02:01 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Wed, 30 Apr 2025 22:01:24 +0200 X-Gm-Features: ATxdqUEMagwt-5PqBW2bC58QKKzPb_JEAeLO82fdTGKNScOqAuk9Sip2bPrqDSI Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Mihail Nikalayeu , Andres Freund Cc: alvherre@alvh.no-ip.org, Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000ed40670634046306" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ed40670634046306 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, Andres! This is a gentle ping [1] about the patch related to optimization of RE|CREATE INDEX CONCURRENTLY. Below is an explanation of the patch set. QUICK INTRO What patch set does in a few words: "CIC/RIC are 2x-3x faster and does not prevent xmin horizon to advance, without any dirty tricks, even with removing one of them". How it works in a few words: "Reset snapshot between pages during the first phase. Replaces the second phase using a special auxiliary index to collect TIDs of tuples that need to be inserted into the target index after the first phase". What are drawbacks: "some additional complexity + additional auxiliary index-like structure involved." SOME HISTORY In 2021 =C3=81lvaro proposed [2] and committed [3] the feature: VACUUM ignores snapshots involved into concurrent indexing operations. This was a great feature in PG14. But in 2022 a bug related to the tuples missing in indexes was detected, and a little bit later explained by Andres [4]. As a result, feature was reverted [5] with =C3=81lvaro's comment[6]: > Deciding to revert makes me sad, because this feature is extremely > valuable for users. However, I understand the danger and I don't > disagree with the rationale so I can't really object. There were some proposals, like introducing a special horizon for HOT-pruning or stopping it during the CIC, but after some discussions Andres said [7]: > I'm also doubtful it's the right approach. > The problem here comes from needing a snapshot for the entire duration of= the validation scan > ISTM that we should work on not needing that snapshot, rather than trying= to reduce the consequences of holding that snapshot. > I think it might be possible to avoid it. So, given these two ideas I began the work on the patch. STRUCTURE Patch itself contains 4 parts, some of them may be reviewed/committed separately. All commit messages are detailed and contain additional explanation of changes. To not confuse CFBot, commits are presented in the following way: part 1, 2, 3 and 4. If you want only part 3 to test/review =E2=80=93 check the files with "patch_" extensions. They differ a little bit, but changes are minor. PART 1 Test set (does not depend on anything) This is a set of stress tests and some fixes required for those tests to reliably succeed (even on current master branch). That part is not required for any other parts =E2=80=93 its goal is to make sure everything = is still working correctly while applying other parts/commits. It includes: - fixes related to races in case of ON CONFLICT UPDATE + REINDEX CONCURRENTLY (issue was discovered during testing of that patch) [8] - fixes in bt_index_parent_check (issue was discovered during testing of that patch with enormous amount of pain =E2=80=93 I was looking for mont= hs for error in patch because of single fail of bt_index_parent_check but it was an issue with bt_index_parent_check itself) [9]. PART 2 Resetting snapshots during the first phase of CIC (does not depend on anyth= ing) It is based on Matthias' idea [10] - to just reset snapshots every so often during a concurrent index build. It may work only during the first scan (because we'll miss some tuples anyway during validation scan with such approach). Logic is simple =E2=80=93 since the index built by the first scan already misses a lot of tuples =E2=80=93 we may not worry to miss a few more =E2=80= =93 the validation phase is going to fix it anyway. Of course it is not so simple in case of unique indexes, but still possible. Once committed: xmin is advanced at least during the first phase of concurrent index build. Commits are: - Reset snapshots periodically in non-unique non-parallel concurrent index builds Apply this technique to the simplest case =E2=80=93 non-unique and non-parallel. Snapshot is changed "between" pages. One possible place here to worry about =E2=80=93 to ensure xmin advanced we need to call InvalidateCatalogSnapshot during each snapshot switch. So, theoretically it may cause some issues, but the table is locked to changes during the process. At least commit [3] (which ignored xmin of CIC backend) did the same thing actually. Another more "clear" option here - we may just extract a separate catalog snapshot horizon (one more field near xmin specially only for catalog snapshot), it seems to be a pretty straightforward change). - Support snapshot resets in parallel concurrent index builds Extend that technique to parallel builds. It is mostly about ensuring workers have an initial snapshot restored from the leader before the leader goes to reset it. - Support snapshot resets in concurrent builds of unique indexes The most tricky commit in the second part =E2=80=93 apply that to unique indexes. Changing of snapshots may cause issues with validation of unique constraints. Currently validation is done during the sorting of tuples, but that doesn't work with tuples read with different snapshots (some of them are dead already). To deal with it: - in case we see two identical tuples during tuplesort =E2=80=93 ignore if some of them are dead according to SnapshotSelf, but fail if two are alive. It is not a required part, it is just mechanics for fail-fast behavior and may be removed. - to provide the guarantee =E2=80=93 during _bt_load compare the inserted index value with previously inserted. If they are equal =E2=80=93 make sure only a single SnapshotSelf alive tuple exists in the whole equal "group" (it may include more than two tuples in general). Theoretically it may affect performance of _bt_load because of _bt_keep_natts(_fast) call for each tuple, but I was unable to notice any significant difference here. Anyway it is compensated by Part 3 for sure. PART 3 STIR-based validation phase CIC (does not depend on anything) That part is about a way to replace the second phase of CIC in a more effective way (and with the ability to allow horizon advance as an additional bonus). The role of the second phase is to find tuples which are not present in the index built by the first scan, because: - some of them were too new for the snapshot used during the first phase - even if we were to use SnapshotSelf to accept all alive tuples =E2=80=93 some of them may be inserted in pages already visited by the scan The main idea is: - before starting the first scan lets prepare a special auxiliary super-lightweight index (it is not even an index or access method, just pretends to be) with the same columns, expressions and predicates - that access method (Short Term Index Replacement =E2=80=93 STIR) just appends TID of new coming tuples, without WAL, minimum locking, simplest append-only structure, without actual indexed data - it remembers all new TIDs inserted to the table during the first phase - once our main (target) index receives updates itself we may safely clear "ready" flag on STIR - if our first phase scan missed something =E2=80=93 it is guaranteed to be present in that STIR index - so, instead of requirement to compare the whole table to the index, we need only to compare to TIDs stored in the STIR - as a bonus we may reset snapshots during the comparison without risk of any issues caused by HOT pruning (the issue [4] caused revert of [3]). That approach provides a significant performance boost in terms of time required to build the index. STIR itself theoretically causes some performance impact, but I was not able to detect it. Also, some optimizations are applied to it (see below). Details of benchmarks are presented below as well. Commits are: - Add STIR access method and flags related to auxiliary indexes This one adds STIR code and some flags to distinguish real and auxiliary indexes. - Add Datum storage support to tuplestore Add ability to store Datum in tuplestore. It is used by the following commits to leverage performance boost from prefetching of the pages during validation phase. - Use auxiliary indexes for concurrent index operations The main part is here. It contains all the logic for creation of auxiliary index, managing its lifecycle, new validation phase and so on (including progress reporting, some documentation updates, ability to have unlogged index for logged table, etc). At the same time it still relies on a single referenced snapshot during the validation phase. - Track and drop auxiliary indexes in DROP/REINDEX That commit adds different techniques to avoid any additional administration requirements to deal with auxiliary indexes in case of error during the index build (junk auxiliary indexes). It adds dependency tracking, special logic for handling REINDEX calls and other small things to make administrator's life a little bit easier. - Optimize auxiliary index handling Since the STIR index does not contain any actual data we may skip preparation of that during tuple insert. Commit implements such optimization. - Refresh snapshot periodically during index validation Adds logic to the new validation phase to reset the snapshot every so often. Currently it does it every 4096 pages visited. PART 4 (depends on part 2 and part 3) Commits are: - Remove PROC_IN_SAFE_IC optimization This is a small part which makes sense in case both parts 2 and 3 were applied. Once it's done =E2=80=93 CIC does not prevent the horizon from advancing regularly. It makes the PROC_IN_SAFE_IC optimization [11] obsolete, because one CIC now has no issue waiting for the xmin of the other (because it advances regularly). BENCHMARKS I have spent a lot of time benchmarking the patch in different environments (local SSD, local SSD with 1ms delay, io2 AWS) and the results look impressive. I can't measure any performance (or significant space usage) degradation because of STIR index presence, but performance boost because of new validation phases gives up to 3x -4x time boost. And without any VACUUM-related issues during that time (so, other operations on the databases will benefit from that easily compensating additional STIR-related cost). Description of benchmarks are available here [12]. Some results are here: [13] and here [14], code is here [15]. There is also a Discord thread here [16]. Feel free to ask any question and request benchmarks for some scenarios. Best regards, Mikhail. [1]: https://discord.com/channels/1258108670710124574/1334565506149253150/1= 339368558408372264 [2]: https://www.postgresql.org/message-id/flat/20210115142926.GA19300%40al= vherre.pgsql#0988173cb0cf4b8eb710a6cdaa88fcac [3]: https://github.com/postgres/postgres/commit/d9d076222f5b94a85e0e318339= cfc44b8f26022d [4]: https://www.postgresql.org/message-id/flat/20220524190133.j6ee7zh4f5ed= t5je%40alap3.anarazel.de#1781408f40034c414ad6738140c118ef [5]: https://github.com/postgres/postgres/commit/e28bb885196916b0a3d898ae4f= 2be0e38108d81b [6]: https://www.postgresql.org/message-id/flat/202205251643.2py5jjpaw7wy%4= 0alvherre.pgsql#589508d30b480b905619dcb93dac8cf8 [7]: https://www.postgresql.org/message-id/flat/20220525170821.rf6r4dnbbu4b= aujp%40alap3.anarazel.de#accf63164fd552b6ad68ff0a870e60c0 [8]: https://commitfest.postgresql.org/patch/5160/ [9]: https://commitfest.postgresql.org/patch/5438/ [10]: https://www.postgresql.org/message-id/flat/CAEze2WgW6pj48xJhG_YLUE1QS= %2Bn9Yv0AZQwaWeb-r%2BX%3DHAxU_g%40mail.gmail.com#b3809c158de4481bb1b29894aa= a63fae [11]: https://github.com/postgres/postgres/commit/c98763bf51bf610b3ee7e209f= c76c3ff9a6b3163 [12]: https://www.postgresql.org/message-id/flat/CANtu0ojHAputNCH73TEYN_RUt= jLGYsEyW1aSXmsXyvwf%3D3U4qQ%40mail.gmail.com#b18fb8efab086bc22af1cb015e187c= b7 [13]: https://www.postgresql.org/message-id/flat/CANtu0ojiVez054rKvwZzKNhne= S2R69UXLnw8N9EdwQwqfEoFdQ%40mail.gmail.com#02b4ee45a5a5c1ccac6d168052173952 [14]: https://docs.google.com/spreadsheets/d/1UYaqpsWSfYdZdQxaqY4gVo0RW6KrT= 0d-U1VDNJB8lVk/edit?usp=3Dsharing [15]: https://gist.github.com/michail-nikolaev/b33fb0ac1f35729388c89f72db23= 4b0f [16]: https://discord.com/channels/1258108670710124574/1259884843165155471/= 1334565506149253150 --000000000000ed40670634046306 Content-Type: image/png; name="bench.png" Content-Disposition: attachment; filename="bench.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36bzpj17 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 2zVw4EBvIctkMmngwIGy2+0XPIJEOCssLNRnn32mPn36qFOnTv6T0YLFxsZqyJAh2rlzp/Ly8vwn A0DYMs2fP9+YM2eOf/sFO3TokBYuXKgrrrhCU6ZM8bafPXtWK1euVGZmpioqKmSz2TRgwABdf/31 6tixo89nlJWV6d1339XOnTtVVlamqKgoDR06VNdff70iIyOl6s6TvXv3avXq1crLy5PT6ZTZbFaH Dh30jW98Q6NGjfImQNu2bdMrr7yiO++803vHSKgMw9CLL76or776SrNnz/a5+2ndunVavXq1pk2b pssvv9xnOX81f++qVau8dxR37txZN9xwg/r16ycFiN3ixYu1b98+n9/tdru1detWrVu3TgUFBTKZ THU+q/bnTZs2TU6nU++//76Ki4tls9k0ZMgQ3XTTTYqKivLOV1lZ6V32kksu0axZs+r83W63Ww6H Q4MHD/b5PgLJy8vT/Pnz1adPH82cOdP7ndS3rqp+p967776rPXv2yOl01vvdq3q88o0bN2rTpk0q Li4O+N2HOl9jKC8v14IFCyRJ48eP19q1a5WXlyer1aoBAwZo6tSpiouL81kmlPVdvHixdu/e7V3G brfr+uuv17vvvlvvd6Z69qGa/c3/b9i2bZtef/11TZs2TR9//LFycnIUHx+vu+++W0lJSaqsrNQ/ //lPVVRU6P7777+od1QBQLhZsGCBGivHqjlv9u3b1+eJuYbkV/WpOXedPXtWP/jBD+qcp86n5u/q 16+fvv3tb3vPq4WFhfr73/8um82m+++/Xw6Hw39RH/7nrUDnw6NHj3r/zkAx8f+sQOfAxYsXq7Cw ULfddpvee+897d+/X263W/Hx8Zo6daq3M60mj6xt4sSJmjJlSp3fZbFY1LlzZ11//fU+OVlDNDR3 8v8bAq1vqDlRqPM1hgvJnUJZ3/pyp29/+9tavXq1jh075m1v3769d3sKNb8+X+5kGIaWLl2q/fv3 67777qPzEAAaUWPmVlVVVfrwww/1ySefqLi4WPHx8br55pt1+PBhffLJJ3X6f0K5dq99XpszZ463 vWbZ/fv3q6ysTJLq9KvUnOdTU1N17733ymKxeH+30+nUCy+8oMLCQj3wwAMhjy6watUqbdiwQTNm zNCIESO87RkZGXrppZd02WWXadq0aT7L1Md/3WNiYnTFFVdo/Pjxslqt9a53fX1Z/v1LhmEoLi5O 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 l1RaWuq/iI8vv/xS5eXluuqqq3yGaKwpPBYXF+vMmTM+y9THMAx98cUX3qcmaycj0dHRGj16tIqK inTgwAGf5bp27epT2LHb7erRo4eqqqp8hqgMpKKiQseOHZNR/R4Vq9Wq2bNn65FHHlHnzp39Z/eq eX+j3W6v8z35y87O1rFjx9SvXz/16tXLZ9qgQYOUmJio/fv3+7zH6MyZMzp9+rT33507d9Zjjz2m u+++2yc2oc7XWNq1a1dnuIihQ4eqU6dO3nW4kPUNRUFBgfbv319nH1L1e6ZSU1N19OhRnTp1qs40 u93u01ajffv2stlsOnr0qP8kAMDXpCH5VX3cbrfef/997d69Wz179tTYsWP9ZwlJVVWVXn/9de/T UtOmTdM111yjqKgorVy50ttZFEiouV8oLuQcaLVademll/rkAykpKXI4HKqoqPC2BZObm+sdLkyS BgwYoMcff1xTp071mS8UDcmdLmR9Q82JQp2vsYSSO13I+obiQvPrYLlTbGys7Ha7Tp48GfJ2BABo PhkZGTIMo87oCTXnk9ou9tr92muv1RNPPOEzHKWqz32JiYlyu93evpYBAwYoOjpau3btksvlkqqL dHv27FGnTp18hjwNRX5+vv7973+roKBAI0aM0O23364RI0bo7NmzevHFF5Wfn++/iI/c3FydOHGi zrpbrVaNGDFChmEoOzvbZ5lAMjIyVFZWVqdfzGq16rLLLpNhGMrIyPBZJjo6us4Tkz179pTdbvfJ vQK50L6sQM6cOaOSkhK1a9dOERER/pN9XMj6hppThjpfY+nVq5dPn6LVatVVV13lsw4Xsr6huJD9 z263B91XEhISVFZWppMnT/pPAoCw1OQFwpMnT6qsrEzJycl17mC3WCzqWj1u+OnTp3X69GmVlpYq Nja2znjgPXv21G9+8xufE55hGCosLNSuXbv0wQcfaOHChfq///s/nT171mfZi1FYWKjXXntNhmFo 1qxZuvHGG3XZZZdp1qxZuuWWW3TkyBGtWLHCm3DUJzc3Vzabrc6ThiaTSXfffXfIyUnNI/gWi0VH jhzR559/7vOTl5fnfSqstnbt2tWJvdlsVlVVVdDiZk3nnMvl0n/+8x89/vjjeumll5SZmamqqir/ 2euoqqpSRUWF2rdvX+f79FdQUKDKykq5XC5t3brVZ71qkvfi4mKVlJQoNjZWvXv31vHjx/X73/9e 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 IAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQA AAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAA AAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAA AADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADC CAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVC AAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAA AAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAA AAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAA IIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQ IAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIxQIAQAAAAAAAAAAADCCAVCAAAAAAAAAAAAIIw0a4Ew PT1dDodDJpNJJpNJqampys3NlSTl5uYqNTVVJpNJEyZMUHFxcZ1lVqxY4f2sefPmad68ed5/AwAA hCPyKwAAgMZFfgUAAMJBsxYIc3JydOmll6qoqEiGYSgrK0tJSUkqLi7WnXfeqe9///syDEOpqama O3euJOm5557T0qVLtXXrVi1cuFDFxcXKzc3VqlWrdPfdd/v/CgAAgLBCfgUAANC4yK8AAEA4aNYC YWZmplJTUxUTE+PTXlRUpIKCAk2ePFmSNH36dG3YsEH79+9XYWGhkpOTlZycrIKCAhUVFWnJkiWa MmWKkpKSfD4HAAAg3JBfAQAANC7yKwAAEA6avUC4ZMkS7xANNUMu5OTkSJKSk5O9/28YhgoLCxUb G6ucnBzl5OQoLi5OxcXFyszM9N6hBQAAEM7IrwAAABoX+RUAAAgHzVYgLC4uVlZWlp5++mkZhqHl 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 dv3zzu7duwe8h3/+8/8d/XMdgLGPAiEQo2699VbV19fL3dc7/eDBg7rvvvt8tvEuz8vLU3FxsVpb W32Cid1uV2VlpTZs2KANGzaosrIyaG8k742t9vZ21dbWqqioSM3NzfrFL36hpUuXqra21qeHeFpa mvbs2aN58+bpjTfe0LXXXtvv3aT9+/dr5cqVam9v18yZM/X444/r+PHjqq2t1datW+XqmzartLRU TU1Nam9vl0LcYOvv2LFj+vjjj2Wapk8v/qFyOp0qKipSbW2tTp8+rfPnz/tvMqgjR47o6aefVnt7 u7Kzs62biP3bs6ysTCdOnJD63fjbtWuXTNNUTk6OFRh37typyspKuVwu1dTUaMWKFXI4HP0+DQAA XAnyVXDkKwAAMNrWrl2r4uJibdq0SWvXrvVfrQMHDuj06dOqra1VeXm5MjMzrVxUU1Mj9eWFjIwM maZp5a9wOgft379fixYtsrJEeXm5/yZhCZZXhqK1tdXKj7t375bT6bTyzvr162Waps/2wfKfw+HQ 008/rfLycrndblVXV4fMrgDGHgqEQIxasGCB1BcovFNb3XLLLT7beJfPnTtXaWlpysjIUFNTk882 c+fOVXZ2trKzszV37lyfdV5ut1utra0qKyuT3W5Xbm6usrOzfXrYD9WNN96orKws2e12ZWRkaPXq 1UpLS1N6erqmTp0q9fXOnzVrlubOnSu73a6ysjK1trYOejNq2rRpWrNmjSSpuLhY58+f95n+K1xt bW3Kzs5Wbm6u9flD1X8/8/PzpSDtuXTpUkmy/n6ysrIkSWvWrNH58+fV3t6utLQ0lZWV6a677tLB gwfDupkHAADCR74KjnwFAADGuvz8fNntdqWnp2vevHkqLi62cpH6Og01NjaqsLBQkqz81dbW5vdO A914440qLi6W+rLEkSNH9MEHH/hvFlJHR0fQvDIU3v3MysrSnDlzpL6MNXXqVJ/fMZz85+2Mds89 92jRokV0lALGGQqEQIzqf0OqoaFBkydPlt2vh09DQ4P27t2rlJQUGYahmpqaAVMMVFVV6fz58zp/ /rw1DZa/9vZ2tbS0WP/dP1wN18yZM5WSkuK/eID9+/dbv/+yZcvU0tJi9XYKJjU1Venp6f6Lh+zo 0aP+i4Ys0H76t6e/EydOKD09XYZhKCsrS8eOHbPCam5urmbNmqWVK1cO+PsGAABXhnwVHPkKAACM dZmZmf6LAlq2bJkMw1BKSor2798fVj4JlD+GarC8Eq5A+9nW1qZz5875L7aEyn9r1qyRYRhWcRHA +EGBEIhhhYWFqq6uVn19vdX7ycvlcmnr1q2qra2VaZoyTVNtbW06cuSINXWC0+lUVVWVqqurVV1d raqqqoDTKqSkpGjmzJnWf3t7aF8NxcXF1u9vmqZaW1sHfcDz2bNnrRs+bW1tOnv2rP8mUhg3qAIF rkjwb09/S5cuVXt7u7XPHR0dVg+uqqoq3X777dZUWAAAILLIV4GRrwAAQDSYOnWqmpqafLJQoOlK /fUvqAUrxoXKSAojr1yJ/jNGBBIs/7ndbj399NN68MEHhz1tKoDRQ4EQiGFZWVk6fPiwWlparCmT vPynUlJfEJkyZYoaGhqsucm9c447HA6VlpYGfJ6Mt0d7ZWWl3G639u3bp0OHDikvL89nu0jLy8vT vn37rJtqJSUlYT0s+cyZM9b0XP2nUZCkQ4cOqbm52ZpWIpSsrCy1tLRo3759crvdqqys9N9kWLzT YfVvz/3790t+n6m+B3B7H37tdDp18OBBfec731FZWRnBDQCAEUC+Cox8BQAAxru0tDTNmzfPen6x 0+mUzWZTXV2d/6YDnDhxwsqCu3fvVk5OjmbMmGH9t/oy0pkzZ3xe15/NZguaV67U3LlzNWXKFOtZ i5s3b7aKmKHyX1VVlRYtWqRnnnlGksJqCwBjBwVCIIZ5ex7l5OQM6PXtDSv9l3tvnFRVVenhhx/W zJkzfZ6z4v1zoGeveKfHSklJ0bJly7Rr165B5yVPT0/XuXPntHDhQn300Uf+qwflcDhUVVWlrKws GYahxsZG7dy5c9Cpn+bMmaOTJ0/KMAxt3brVek1BQYEKCwuVlZWlhQsXatmyZf4v9ZGWlqZnn31W y5YtU0pKihYvXqwpU6b4bzYs3jZOSUlRZWWlvvjFL0p9n7lnzx4VFRXJMAxt2LBBe/bskSStXLlS Tz31lLUv6rvBBQAAIod8FRj5CgAAjAWZmZkqLy8f9vd1VVWVWltbrWnH169fb2WAUJYuXarq6moZ hqHW1lZVVVXJbrersrJSu3fvlmEYOnnypPVMwGCC5ZUr5f1dNmzYIMMwdM0111ijFYPlv3379qm+ vt76nTZt2qSnnnoq4OwXAMYmY9u2beaqVav8lwMAAOAKbN++XWQsAACAyCBbAQAARBYjCAHEFLfb rZycHBmGMeDHZrONeC+n0f58AACASBvtfDPanw8AAGKbd6pR/xxiGEZYU7FfqdH+fADjFyMIAQAA RgC93AEAACKHbAUAABBZjCAEAAAAAAAAAAAAYggFQgAAAAAAAAAAACCGUCAEAAAAAAAAAAAAYggF QgAAAAAAAAAAACCGUCAEAAAAAAAAAAAAYggFQgAAAAAAAAAAACCGUCAEAAAAAAAAAAAAYggFQgAA AAAAAAAAACCGUCAEAAAAAAAAAAAAYggFQgAAAAAAAAAAACCGUCAEAAAAAAAAAAAAYggFQgAAAAAA AAAAACCGUCAEAAAAAAAAAAAAYggFQgAAAAAAAAAAACCGUCAEAAAAAAAAAAAAYggFQgAAAAAAAAAA ACCGUCAEAAAAAAAAAAAAYsj/ByWNSt3jQFyMAAAADmVYSWZNTQAqAAAACAAAAAAAAADSU5MAAAAA SUVORK5CYII= --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Disposition: attachment; filename="v18-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezl3 RnJvbSBmNzVmZjUyNmZmY2MxYzI3MDgxNGQ2ZjVlODBjMzU5OTFjNmI1YWI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDQvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIHBhcmFsbGVsIGNvbmN1 cnJlbnQKIGluZGV4IGJ1aWxkcwoKRXh0ZW5kIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0IHN1cHBv cnQgdG8gcGFyYWxsZWwgYnVpbGRzLCBwcmV2aW91c2x5IGxpbWl0ZWQgdG8gbm9uLXBhcmFsbGVs IG9wZXJhdGlvbnMuIFRoaXMgYWxsb3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZSBkdXJp bmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgYXMgd2VsbC4KClRoZSBtYWluIGxp bWl0YXRpb24gb2YgYXBwbHlpbmcgdGhhdCB0ZWNobmljIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlcnMgcHJvY2Vzc2VzIHJlc3RvcmUgdGhl aXIgaW5pdGlhbCBzbmFwc2hvdCBmcm9tIGxlYWRlci4KClRvIGFkZHJlc3MgdGhpcywgZm9sbG93 aW5nIGNoYW5nZXMgYXBwbGllZDoKLSBhZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJhY2sgc25hcHNo b3QgcmVzdG9yYXRpb24gaW4gcGFyYWxsZWwgd29ya2VycwotIGV4dGVuZCBwYXJhbGxlbCBzY2Fu IGluaXRpYWxpemF0aW9uIHRvIHN1cHBvcnQgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzCi0gd2Fp dCBmb3IgcGFyYWxsZWwgd29ya2VycyB0byByZXN0b3JlIHRoZWlyIGluaXRpYWwgc25hcHNob3Rz IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggc2NhbgotIHJlbGF4IGxpbWl0YXRpb24gZm9yIHBhcmFs bGVsIHdvcmtlciB0byBjYWxsIEdldExhdGVzdFNuYXBzaG90Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgNTAgKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTAgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NTcgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA1MCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICA5ICstLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMjUgKysrKysrKy0KIC4uLi9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQogMTQgZmlsZXMgY2hhbmdlZCwgMjI1 IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRl eCBlNWE5NDVhMWIxNC4uNDIzNDI0ZTUxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0 Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJl ZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBz aG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxf ZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwg QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGlt YXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6 ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMg ZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBz dGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMTIyMSw3ICsxMjIwLDYgQEAgYnJpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVw bGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxl bChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxz ZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1NCw3ICsxMjUy LDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBz dGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3Rh cnQpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTEyNjksNiArMTI2Niw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gaWR4dHVwbGVzOworCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhp ZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNjgsNyArMjM2Niw2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2NhbnR1 cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3Ricmluc2hhcmVk OwogCVNpemUJCWVzdHNvcnQ7CiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKQEAgLTIzOTksMjUg KzIzOTYsMjUgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXgg UkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRh a2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1 bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGlu ZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0 CisJICogc25hcHNob3QgaXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQogCXsKIAkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1h dGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVh cCwgc25hcHNob3QpOworCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoaGVhcCk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Ricmluc2hhcmVkKTsKIAllc3Rzb3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2Fu dHVwbGVzb3J0c3RhdGVzKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0 b3IsIGVzdHNvcnQpOwpAQCAtMjQ1Nyw4ICsyNDU0LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwo QnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0 UGFyYWxsZWxNb2RlKCk7CiAJCXJldHVybjsKQEAgLTI0ODMsNyArMjQ3OCw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJ CQkJCQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBz aG90IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0yNTI5LDcgKzI1MjUsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ CWJyaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlicmlubGVhZGVyLT5icmlu c2hhcmVkID0gYnJpbnNoYXJlZDsKIAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29y dDsKLQlicmlubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwogCWJyaW5sZWFkZXItPndhbHVz YWdlID0gd2FsdXNhZ2U7CiAJYnJpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsK IApAQCAtMjU0NSw2ICsyNTQwLDEzIEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZl IGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwg Ki8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBicmlubGVhZGVyOwogCisJLyoKKwkgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBw ZXJpb2RpY2FsbHkuCisJICogV2UgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9y dGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNj YW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlLCBoZWFwLCBpbmRleCk7CkBAIC0yNTUz LDcgKzI1NTUsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFp c2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxz ZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIH0KQEAgLTI1NzYsOSArMjU3OSw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVy ICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJy aW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJh bGxlbFF1ZXJ5KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVz YWdlW2ldKTsKIAotCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYg b25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90 KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95 UGFyYWxsZWxDb250ZXh0KGJyaW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsK IH0KQEAgLTI3NzgsMTQgKzI3NzgsMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVx dWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQg YmFzZWQgb24gdGhlIHNuYXBzaG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJp biBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRl X3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVs X2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxv Y2F0ZSBhcyB0byB3aHkgQlVGRkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShC VUZGRVJBTElHTihzaXplb2YoQnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGlt YXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjgwNyw2ICsyODA3LDcg QEAgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmUKIAkvKiBQZXJmb3JtIHdvcmsgY29tbW9uIHRvIGFs bCBwYXJ0aWNpcGFudHMgKi8KIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmlubGVhZGVyLT5icmluc2hhcmVkLAogCQkJCQkJCQkgIGJyaW5sZWFkZXItPnNoYXJl ZHNvcnQsIGhlYXAsIGluZGV4LCBzb3J0bWVtLCB0cnVlKTsKKwlBc3NlcnQoIWJyaW5sZWFkZXIt PmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54aWQpKTsKIH0KIAogLyoKQEAgLTI5NDcsNiArMjk0OCwxMyBAQCBfYnJpbl9wYXJhbGxlbF9i dWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmluX3BhcmFs bGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoYnJpbnNo YXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eGlkKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5k ZXggOTBkNzNiOWY3MTIuLjI3NGMzOGQxMmJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMKQEAgLTEzMiw3ICsxMzIsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8KIAlH aW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0JU25h cHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODAsNyArMTc5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChHaW5M ZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUgX2dp bl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRTdGF0 ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3Rh dGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtl cihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzE3LDcgKzcxNiw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ cmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFy YWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQog CWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc0MSw3ICs3 MzksNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRTdGF0 cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7CkBA IC03NzEsNiArNzY4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05MDUsNyArOTAzLDYgQEAgX2dp bl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2Nh bnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5zaGFy ZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAtOTM1 LDI1ICs5MzIsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2Fu IG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQog CSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBk byBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4 IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0 YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVn dWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBp bmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhh dAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29u Y3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3Qg PSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQog CWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGlt YXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGdp bnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxl c29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Rzb3J0KTsKQEAgLTk5Myw4ICs5OTAsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXsKIAkJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0J CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxN b2RlKCk7CiAJCXJldHVybjsKQEAgLTEwMTgsNyArMTAxMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNu YXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNo YXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNl LgpAQCAtMTA2MCw3ICsxMDU2LDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJZ2lubGVhZGVy LT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJZ2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5z aGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKLQlnaW5sZWFkZXIt PnNuYXBzaG90ID0gc25hcHNob3Q7CiAJZ2lubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwog CWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKIApAQCAtMTA3Niw2ICsxMDcx LDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRo YXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNf bGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2Ug bmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3Qu CisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYg KGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTEwODQsNyArMTA4Niw4IEBAIF9naW5fYmVn aW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3 b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10 by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAgLTExMDcsOSArMTExMCw2 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1 c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVy ZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChnaW5sZWFk ZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdpbmxlYWRlci0+cGN4dCk7 CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTc3OCwxNCArMTc3OCwxNCBAQCBfZ2luX3Bh cmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXpl IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwK LSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNj YW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fZ2lu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hv dCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApCiB7CiAJLyog Yy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElHTiBpcyB1c2VkICovCiAJ cmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWlsZFNoYXJlZCkpLAotCQkJ CQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAv KgpAQCAtMTgwOCw2ICsxODA4LDcgQEAgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGEKIAlfZ2luX3Bh cmFsbGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGdpbmxlYWRlci0+Z2luc2hhcmVkLAog CQkJCQkJCQkgZ2lubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwKIAkJCQkJCQkJIHNv cnRtZW0sIHRydWUpOworCUFzc2VydCghZ2lubGVhZGVyLT5naW5zaGFyZWQtPmlzY29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIH0KIAogLyoKQEAgLTIx NjcsNiArMjE2OCwxMyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCiAJX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZCgmYnVpbGRz dGF0ZSwgZ2luc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWws IHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyogUmVwb3J0IFdBTC9i dWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA4YTU4NGRiNTk1YS4u NzI3M2IxYWVlMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtMTIzNSwxNCArMTIzNSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJp ZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNh dXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29u Y3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZD QyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRo YXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGls ZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBzbmFw c2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4gY2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNv bWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAotCSAqIHRvIHBlcmZvcm0gc2Nh biB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCiAJCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzA0LDggKzEzMDMsMTEgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9v dHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNo b3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK LQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hv dHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQogCiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCBmMzk4NmQwODZiNi4u MmY0NWFlOTZjMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0zMjEsMjIg KzMyMSwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJ cmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUs IGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2Vy cyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9v bCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3Rh dGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxl bChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWls ZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDg1LDgg KzQ4Myw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVs X2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5I b3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQg dGhlIGJsb2NrIG51bWJlcgpAQCAtMTQyMCw2ICsxNDE3LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVs KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0 KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMg PSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJ cmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURF Ul9QQVJUSUNJUEFUSU9OCkBAIC0xNDM3LDEyICsxNDM1LDIxIEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVz dCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0 ICsgMSA6IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cworCSAqIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRo ZXNlIGJ1aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KKyAgICAg Ki8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7 CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBh IG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBt dXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hl Y2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4g YQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3Qg YW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBl cmlvZGljYWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8KIAlpZiAo IWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDUwLDYgKzE0NTcsMTEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hv dCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUxMCw3ICsxNTIyLDcgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJCWlm IChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3Qp KQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29u dGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNyw3ICsxNTQ5LDggQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZhbHNlOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBz aG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAK IAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNo IHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxMyw2ICsxNjI2LDEzIEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdp bGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVyOwogCisJ LyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0 byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBv cnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFw IHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIxLDcgKzE2NDEsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBs YXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUg ZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkK KwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTY0 NSw3ICsxNjY2LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRl ci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBz aG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNu YXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qo YnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVhZGVyLT5w Y3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk1LDYgKzE5MTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0YXRlOwog CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91 YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ5LDExICsx OTcxLDE1IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9 IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSk7CisJcHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFw LCBwc2Nhbik7CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5o ZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jl c3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q IEV4ZWN1dGUgdGhpcyB3b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTk4OSw0ICsyMDE1LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5z b3J0c3RhdGUpOwogCWlmIChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29y dHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBz aG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGE1NmM1ZWNlYjE0Li4yNzdjNzlkZDU1 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0 YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCkKIHsKIAlTaXplCQlzeiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNo b3QpKQogCQlzeiA9IGFkZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3Qp KTsKIAllbHNlCi0JCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChz bmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwog CiAJc3ogPSBhZGRfc2l6ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1h dGUocmVsKSk7CiAKQEAgLTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3Rp bWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbiwKLQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25h cHNob3QsIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVs LT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKKwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlw dGlvbi4gRm9yIG5vcm1hbCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3Qs IHNlcmlhbGl6ZSB0aGUgc25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGlj CisJICogc25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLwor CWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25h cHNob3QpOworCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhz X3Jlc2V0X3NuYXBzaG90ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZSIpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCiAJewogCQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNjYW4gKyBw c2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gZmFs c2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsK IAkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNldF9zbmFw c2hvdCk7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcxLDcgKzE4NiwxOSBAQCB0YWJs ZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2Fu RGVzYyBwc2NhbikKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRf bG9jYXRvciwgcHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNfc25hcHNo b3RfYW55KQorCS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMgc25hcHNo b3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFjdGl2ZQor CSAqIHNuYXBzaG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nhbi0+cGhz X3Jlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQlm bGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50IGFjdGl2 ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCX0KKwll bHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hvdCB3YXMg c2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNuYXBzaG90 KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggOTRkYjFlYzMwMTIuLjA2NWVhOWQyNmY2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc3LDYgKzc3LDcgQEAKICNkZWZp bmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZG RkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlOVDY0Q09O U1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5UQ09OTklO Rk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFMTEVMX0tF WV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEwKQogCiAv KiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJh bGxlbFN0YXRlCkBAIC0zMDUsNiArMzA2LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAorCQkJCQkJ CSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZvciB0aGUg ZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3Rp bWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJsZW4ocGN4 dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3Niw2ICszODEsNyBAQCBJbml0aWFsaXplUGFy YWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBvaW50c3Rh dGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAqY2xpZW50 Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7CiAJCVNp emUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdlIGhhdmUg bG9hZGVkLiAqLwpAQCAtNDkxLDYgKzQ5NywxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFy YWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0LT5saWJy YXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAxLCBwY3h0 LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9L RVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3RhYmxpc2gg ZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1wb3J0aW5n CisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UgPQor CQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksIHBj eHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2VyczsgKytpKQor CQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBzbmFwc2hvdF9zZXRf ZmxhZ19zcGFjZSArIGkgKiBzaXplb2YoYm9vbCk7CisJCQkqcGN4dC0+d29ya2VyW2ldLnNuYXBz aG90X3Jlc3RvcmVkID0gZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3NwYWNlKTsK IAl9CiAKIAkvKiBVcGRhdGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNoYW5nZWQg bndvcmtlcnMgYWJvdmUuICovCkBAIC01NDYsNiArNTY1LDE3IEBAIFJlaW5pdGlhbGl6ZVBhcmFs bGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXBjeHQtPndvcmtlcltpXS5lcnJvcl9t cWggPSBzaG1fbXFfYXR0YWNoKG1xLCBwY3h0LT5zZWcsIE5VTEwpOwogCQl9CiAJfQorCisJLyog U2V0IHNuYXBzaG90IHJlc3RvcmVkIGZsYWcgdG8gZmFsc2UuICovCisJaWYgKHBjeHQtPm53b3Jr ZXJzID4gMCkKKwl7CisJCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOworCQlpbnQJ CQlpOworCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9CisJCQkJc2htX3RvY19sb29rdXAocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwkJZm9yIChp ID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFj ZVtpXSA9IGZhbHNlOworCX0KIH0KIAogLyoKQEAgLTY2MSw2ICs2OTEsMTAgQEAgTGF1bmNoUGFy YWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFsbCB3b3Jr ZXJzIHRvIGF0dGFjaCB0byB0aGVpciBlcnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBlcnJvciBp ZgogICogYW55IHdvcmtlciBmYWlscyB0byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9yX3NuYXBz aG90OiB0cmFjayB3aGV0aGVyIGVhY2ggcGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNzZnVsbHkg cmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hvdC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBwZXJp b2RpYyBzbmFwc2hvdCByZXNldHMgdG8gZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZlIGEgdmFs aWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2FuLgorICoK ICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNj ZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBudW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBwY3h0LT5u d29ya2Vyc19sYXVuY2hlZCBoYXZlIGluaXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQgdG8gdGhl aXIgZXJyb3IgcXVldWVzLiAgV2hldGhlciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUgZ3VhcmFu dGVlZApAQCAtNjkwLDcgKzcyNCw3IEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENv bnRleHQgKnBjeHQpCiAgKiBjYWxsIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2b2lkCi1X YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQorV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwgYm9vbCB3 YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlpbnQJCQlpOwogCkBAIC03MzQsOSArNzY4LDEyIEBAIFdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJ bXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBjeHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwogCQkJCWlm IChzaG1fbXFfZ2V0X3NlbmRlcihtcSkgIT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFllcywgc28g aXQgaXMga25vd24gdG8gYmUgYXR0YWNoZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0dGFjaGVk X3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJz OworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ldLnNuYXBz aG90X3Jlc3RvcmVkKSkKKwkJCQkJeworCQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBi ZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0 cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJfQogCQkJ CX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC0xMjk1LDYg KzEzMzIsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2htX3RvYyAg ICAqdG9jOwogCUZpeGVkUGFyYWxsZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9yX3F1ZXVl X3NwYWNlOworCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9tcQkgICAq bXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsKQEAgLTE0 OTksNiArMTUzNywxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJ CQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25hcHNob3Qo YXNuYXBzaG90KTsKIAorCS8qIFNuYXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0byBtYWtl IGxlYWRlciBrbm93IGFib3V0IGl0LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsK KwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0cnVlOwor CiAJLyoKIAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBhbmQgbXVz dCB0aGVyZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK aW5kZXggY2JkMGJhOWFhMDEuLjY0MzJlZjU1Y2RjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTMy LDcgKzE1MzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklk LAogCiAJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLwog CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFy YWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkg R1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VD KGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRl eCBlZDM1YzU4YzJjMy4uOGExNWRkNzJiOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwpAQCAtMzY3LDcgKzM2Nyw4IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3Rh dGUgKm5vZGUsCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+cHNj YW5fbGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCi0JCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFw c2hvdCk7CisJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJICBmYWxzZSk7 CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVf aWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IGRjZmUxNmE5ODI0Li41ODBhYzU0ODU2ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM0MiwxNCArMzQyLDYgQEAgR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBzaG90KHZvaWQpCiB7Ci0JLyoK LQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRoYXQgY291 bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8KLQlpZiAoSXNJblBhcmFsbGVs TW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBkYXRlIFNlY29uZGFyeVNuYXBz aG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJLyoKIAkgKiBTbyBmYXIgdGhl cmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBHZXRMYXRlc3RTbmFwc2hvdCgp CiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBoYXJkIHRv IGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxl bC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2OTAuLmE3 MzYyZjdiNDNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjYsNiArMjYsNyBAQCB0eXBlZGVm IHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpi Z3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWJvb2wJCSAgKnNuYXBzaG90 X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFs bGVsQ29udGV4dApAQCAtNjUsNyArNjYsNyBAQCBleHRlcm4gdm9pZCBJbml0aWFsaXplUGFyYWxs ZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBh cmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBSZWluaXRpYWxp emVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBpbnQgbndvcmtlcnNfdG9f bGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRl eHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KTsK IGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRl eHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENv bnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLjUwNDQxYzU4Y2VhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxzY2FuLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNj YW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNhbCByZWxh dGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9jYXRpb24g dG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyogU25hcHNo b3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRfc25hcHNo b3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNob3Rfb2Zm OwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhOwog dHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxUYWJsZVNj YW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggN2U4ZmE1ZTFiNTcuLjM4N2MzMDhlYzJmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExMzUsNyArMTEzNSw4IEBAIGV4dGVybiBTaXplIHRhYmxl X3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KTsK ICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCQkJ CSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJ CQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoKICAqIEJlZ2luIGEgcGFyYWxs ZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aApAQCAt MTc1Myw5ICsxNzU0LDkgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2Fu RGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5 IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVk CiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBp bmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKLSAqIFNPX1JFU0VUX1NOQVBT SE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFw c2hvdHMKLSAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KKyAq IEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19SRVNFVF9T TkFQU0hPVCBpcyBhcHBsaWVkCisgKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5n aW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KKyAqIGhvcml6b24gcHJvcGFn YXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihS ZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5k ZXggOTQ4ZDEyMzJhYTAuLjU5NWE0MDAwY2UwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFw c2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJwogIAog KDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNp Y19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmlt YXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBp LCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC03MiwzMCArNzgs NDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CistLSBEZXRh Y2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0 ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgVU5J UVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiks IGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGks IGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklO KGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NB REU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNo b3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0 X3NuYXBzaG90cy5zcWwKaW5kZXggNTA3MjUzNWIzNTUuLjI5NDFhYTdhZTM4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hv dHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jl c2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04gaW5qZWN0 aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25v dGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNp Y19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMsNiArNTMs OSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUg c2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VU IChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwg c2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwpA QCAtODMsNCArODYsNCBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiAKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiAKLURST1AgRVhURU5T SU9OIGluamVjdGlvbl9wb2ludHM7CitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Disposition: attachment; filename="v18-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezk2 RnJvbSAzNWFiZTEwMTQ5MjFhYmUyMGJkMjY2YjU1MDdkZjJlNGU4ZTY4NWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDAzLzEyXSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlx dWUKIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25h cHNob3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05D VVJSRU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5 ZDA3NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBz aG90cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVk IGluIGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRv IG1pc3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1 cmluZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRo aXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0 aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGlu ZyB0aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxs b3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlx dWUgaXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhl YXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEg c2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxl bCBpbmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93aW5nIGNvbW1pdHMKLSBub24tdW5p cXVlIGluZGV4ZXM6IFVuaXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3Rl bnQgc25hcHNob3QgdG8gZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCB3aWxsIGJlIGFk ZHJlc3NlZCBpbiBhIGZvbGxvd2luZyBjb21taXRzCgpBIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNF VF9TTkFQU0hPVCBpcyBpbnRyb2R1Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hv dCB0byBiZSByZXNldCAiYmV0d2VlbiIgZXZlcnkgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BB R0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVhcCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQg dG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBpbmRleCBidWlsZCBjb2RlIGlzIG1vZGlm aWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0 IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBub3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vy cy4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgfCAg IDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDE5 ICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAy MSArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICA0NSAr KysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDU3ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgMTQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAg ICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAg ICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAg ICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5z cWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwg NDI3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNo b3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpp bmRleCAzMDQ4ZTA0NGFlYy4uZTU5MTk3YmIzNWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpA QCAtNTU4LDcgKzU1OCw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVy IG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRy dWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSB0cnVlKTsgLyog c3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0s/ICovCisJCQkJ CQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0 IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRpZmYgLS1naXQgYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1 cGxlLmMKaW5kZXggMGQ5YzJiMGI2NTMuLmE2ZGFkNTRmZjU4IDEwMDY0NAotLS0gYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAgcGdzdGF0X2hlYXAoUmVsYXRpb24gcmVsLCBG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJvbmx5IGhlYXAgQU0gaXMgc3Vw cG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVjYXVzZSB3ZSBhc3N1bWUgd2Ug c2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f c3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOworCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFs c2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlJbml0RGlydHlT bmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwMWUxZGI3 Zjg1Ni4uZTVhOTQ1YTFiMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyMTYsMTEgKzEy MTYsMTIgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJc3RhdGUtPmJzX3NvcnRzdGF0ZSA9CiAJCQl0dXBsZXNvcnRfYmVn aW5faW5kZXhfYnJpbihtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJ CSAgIFRVUExFU09SVF9OT05FKTsKLQorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJ CS8qIHNjYW4gdGhlIHJlbGF0aW9uIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJ cmVsdHVwbGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9w YXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9 CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTIzMyw2 ICsxMjM0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiho ZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBicmluYnVp bGRDYWxsYmFjaywgc3RhdGUsIE5VTEwpOwogCisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAkJLyoKIAkJICogcHJvY2VzcyB0aGUgZmluYWwgYmF0Y2gKIAkJICoKQEAgLTEyNTIsNiAr MTI1NCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5n ZVN0YXJ0KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2Vz ICovCkBAIC0yMzc0LDYgKzIzNzcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRl cnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g dHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQ QVRJT04KQEAgLTIzOTksOSArMjQwMywxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgog CSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdv cmtzcGFjZS4KQEAgLTI0NDQsNiArMjQ1NSw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1 aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MjMsNiArMjUzNiw4IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVk LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxMKTsK IAkJcmV0dXJuOwogCX0KQEAgLTI1MzksNiArMjU1NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5n IGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOwor CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBhN2I3YjU5OTZlMy4uOTBk NzNiOWY3MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNjQ2LDYgKzY0Nyw4IEBAIGdpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0 YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZi dWlsZHN0YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 IGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhpZCkpOworCiAJLyogUmVwb3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNF LAogCQkJCQkJCQkgUFJPR1JFU1NfR0lOX1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAg LTcwOCwxMSArNzExLDEzIEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVh cCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAog CQkJCQkJCQkJICBUVVBMRVNPUlRfTk9ORSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBzY2FuIHRoZSByZWxhdGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdv cmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUp OwogCiAJCV9naW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQg Ki8KIAl7CkBAIC03MjIsNiArNzI3LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwK IAkJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVz IHRvIHRoZSBpbmRleCAqLwogCQlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRz dGF0ZS50bXBDdHgpOwpAQCAtNzM1LDYgKzc0MSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5s aXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxl dGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTkwNyw2ICs5MTQsNyBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05MzEsOSArOTM5LDE2IEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVs c2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK Kwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtOTc2LDYgKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJ CURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDUwLDYgKzEwNjcsOCBAQCBfZ2lu X2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1 bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJz X2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTEwNjYsNiArMTA4NSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFu ZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsK KwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA5ZTcwNzE2N2Q5OC4u NTY5ODExNDdhZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC00Myw2ICs0 Myw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5pbmR0 dXBsZXMgPSAwOwogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzU2l6ZSA9IDA7CiAKKwlBc3NlcnQoIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 aWQpKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJ ewogCQkvKgpAQCAtMzUwLDYgKzM1Miw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVz ID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0 ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCmluZGV4IDUzMDYxYzgxOWZiLi4zNzExYmFlYTA1MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2guYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBf dHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5p bmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCBjMWE0ZGUxNGE1OS4uNGU5OWI2ZjQ0YzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogc3RhdGljIEhl YXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLApAQCAtNjEyLDYgKzYxMywzNiBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2Fu RGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIH0K IAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3QgZHVyaW5nIGEgc2Nhbi4KKyAqIFRo aXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZhbmNlIHdoaWxlIG1haW50YWluaW5n IHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5vIG90aGVyIHNuYXBzaG90IHNob3Vs ZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgorICovCitzdGF0aWMgaW5saW5lIHZv aWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNjYW5EZXNjIHNzY2FuKQoreworCS8q IE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwlBc3Nl cnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCS8qIEFuZCBt YWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7IC8qIGp1c3Qgb3Qg YmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8qIEdvYWwgb2Ygc25hcHNob3QgcmVz ZXQgaXMgdG8gYWxsb3cgaG9yaXpvbiB0byBhZHZhbmNlLiAqLworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkv KiBJbiBzb21lIGNhc2VzIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSBkdWUgeGlkIGFzc2lnbi4g Ki8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSkKKwkJSU5KRUNUSU9O X1BPSU5UKCJoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlIik7CisjZW5kaWYKKwor CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzc2Nhbi0+cnNfc25h cHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworfQorCiAvKgogICogaGVhcF9mZXRjaF9uZXh0 X2J1ZmZlciAtIHJlYWQgYW5kIHBpbiB0aGUgbmV4dCBibG9jayBmcm9tIE1BSU5fRk9SS05VTS4K ICAqCkBAIC02NTMsNyArNjg0LDEyIEBAIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIoSGVhcFNjYW5E ZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJc2Nhbi0+cnNfY2J1ZiA9IHJlYWRfc3Ry ZWFtX25leHRfYnVmZmVyKHNjYW4tPnJzX3JlYWRfc3RyZWFtLCBOVUxMKTsKIAlpZiAoQnVmZmVy SXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwl7CiAJCXNjYW4tPnJzX2NibG9jayA9IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpOworCQlpZiAoKHNjYW4tPnJzX2Jhc2UucnNfZmxh Z3MgJiBTT19SRVNFVF9TTkFQU0hPVCkgJiYKKwkJCShzY2FuLT5yc19jYmxvY2sgJSBTT19SRVNF VF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAwKSkKKwkJCWhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpAQCAtMTMwNCw2ICsxMzQwLDE1 IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChzY2FuLT5yc19wYXJh bGxlbHdvcmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJk YXRhKTsKIAorCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05BUFNIT1Qp CisJeworCQlBc3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hP VCkpOworCQkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUu ICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7 CisJCS8qIEFuZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJCUFz c2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKwogCWlmIChz Y2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdpc3RlclNu YXBzaG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBhYzA4MmZlZmE3Ny4uOGE1ODRkYjU5NWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE5NCw2ICsxMTk0LDgg QEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlib29sCQluZWVk X3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25h cHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdHMgPSBmYWxzZTsKIAlUcmFuc2Fj dGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJbnZhbGlk QmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9ja051bWJl cjsKQEAgLTEyMjgsOSArMTIzMCw2IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVw bGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVw bGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBp ZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJl ZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNl IHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90 QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRp bWUKQEAgLTEyNDAsNiArMTIzOSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogSW4gY2FzZSBvZiBwYXJhbGxlbCBzY2Fu IHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAorCSAqIHRvIHBlcmZvcm0g c2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHkuCisJICov CisJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCisJCQkJCSAg IWluZGV4SW5mby0+aWlfVW5pcXVlICYmCisJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBq dXN0IGZvciB0aGUgY2FzZSAqLworCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhl cmUgKi8KIAlpZiAoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSAmJiAhaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50KQogCQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNh Y3Rpb25JZChoZWFwUmVsYXRpb24pOwpAQCAtMTI0OCwyNCArMTI1Niw0MSBAQCBoZWFwYW1faW5k ZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJewogCQkvKgogCQkg KiBTZXJpYWwgaW5kZXggYnVpbGQuCi0JCSAqCi0JCSAqIE11c3QgYmVnaW4gb3VyIG93biBoZWFw IHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bwotCQkgKiByZWdpc3RlciBh IHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJvbC4KIAkJ ICovCiAJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpCiAJCXsKLQkJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQkJ bmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCXNuYXBzaG90ID0gR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpOworCQkJLyoKKwkJCSAqIE11c3QgYmVnaW4gb3VyIG93biBoZWFwIHNj YW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bworCQkJICogcmVnaXN0ZXIgYSBz bmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCisJCQkg KiBJbiBjYXNlIG9mIHJlc2V0dGluZyBvZiBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4gcmVnaXN0 cmF0aW9uIGlzCisJCQkgKiBub3QgYWxsb3dlZCBiZWNhdXNlIHNuYXBzaG90IGlzIGdvaW5nIHRv IGJlIGNoYW5nZWQgZXZlcnkgc28KKwkJCSAqIG9mdGVuLgorCQkJICovCisJCQlpZiAoIXJlc2V0 X3NuYXBzaG90cykKKwkJCXsKKwkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOworCQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQl9CisJCQlBc3Nl cnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90 KTsKKwkJCS8qIHN0b3JlIGxpbmsgdG8gc25hcHNob3QgYmVjYXVzZSBpdCBtYXkgYmUgY29waWVk ICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNzZXJ0KCFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJfQogCiAJ CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxhdGlvbiAq LwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJCQkJIDAsIC8qIG51 bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJ CSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkgYWxsb3df c3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5bmMsCS8qIHN5bmNz Y2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNldCBzbmFwc2hvdHM/ ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNzksNiArMTMwNCw4IEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJc0Jvb3Rz dHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNuYXBzaG90 ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJ CW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJfQogCiAJaHNjYW4gPSAoSGVhcFNj YW5EZXNjKSBzY2FuOwpAQCAtMTI5Myw2ICsxMzIwLDEzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9y YW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlBc3NlcnQoc25hcHNob3QgPT0gU25h cHNob3RBbnkgPyBUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSA6CiAJCSAgICFUcmFu c2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSk7CiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8ICFhbnl2aXNpYmxlKTsKKwlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkg fHwgQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZv ciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KKwlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5k ZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJLyogQ2xlYXIgcmVmZXJlbmNlIHRvIHNu YXBzaG90IHNpbmNlIGl0IG1heSBiZSBjaGFuZ2VkIGJ5IHRoZSBzY2FuIGl0c2VsZi4gKi8KKwlp ZiAocmVzZXRfc25hcHNob3RzKQorCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKIAogCS8q IFB1Ymxpc2ggbnVtYmVyIG9mIGJsb2NrcyB0byBzY2FuICovCiAJaWYgKHByb2dyZXNzKQpAQCAt MTcyOCw2ICsxNzYyLDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKIAorCWlmIChuZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJLyogd2UgY2FuIG5vdyBm b3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVyZWQgYnkgdXMgKi8KIAlpZiAo bmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OwpAQCAtMTgwMCw3ICsxODM2LDggQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJ CQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNz IHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBPSyAqLwor CQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwog CWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5j CmluZGV4IDhmNTMyZTE0NTkwLi40MjkyMTAyMDMxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFt LmMKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkgKi8KIAkJc3lzc2Nhbi0+c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdCho ZWFwUmVsYXRpb24sIHNuYXBzaG90LAogCQkJCQkJCQkJCQkgIG5rZXlzLCBrZXksCi0JCQkJCQkJ CQkJCSAgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJ CXN5c3NjYW4tPmlzY2FuID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKaW5kZXggMzc5NGNjOTI0YWQuLmYzOTg2ZDA4NmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nwb29sc19o ZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lkIF9idF9z cG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2woQlRT cG9vbCAqYnRzcG9vbCwgSXRlbVBvaW50ZXIgc2VsZiwKIAkJCQkJICBEYXR1bSAqdmFsdWVzLCBi b29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CiBzdGF0 aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRp ZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0Fs aXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2Uo QlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjEsMTggKzMyMSwyMiBA QCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4 SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVwbGVz ID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5m byk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQg YnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGlu c2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRp bmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNz YXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWls ZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChidWlsZHN0 YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3Jr ZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWls ZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ry b3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRf ZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleEluZm8tPmlp X1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCiAJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJbmRleEJ1 aWxkUmVzdWx0KSk7CiAKQEAgLTQ4MCw2ICs0ODQsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJ ZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJ CQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8 IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIFNldCB0 aGUgcHJvZ3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBibG9jayBu dW1iZXIKQEAgLTUzNSw3ICs1NDIsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9vbCwgSXRl bVBvaW50ZXIgc2VsZiwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQogICogY3JlYXRlIGFu IGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIHsKIAlCVFdyaXRl U3RhdGUgd3N0YXRlOwogCkBAIC01NTcsMTggKzU2NCwyMSBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJIFBST0dSRVNTX0JUUkVF X1BIQVNFX1BFUkZPUk1TT1JUXzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRzcG9vbDIt PnNvcnRzdGF0ZSk7CiAJfQorCUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVh cDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKIAl3c3RhdGUuaW5za2V5ID0gX2J0 X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXkoKSB3b24n dCBzZXQgYWxsZXF1YWxpbWFnZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmluc2tleS0+ YWxsZXF1YWxpbWFnZSA9IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1ZSk7CisJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJLyogcmVzZXJ2ZSB0aGUgbWV0YXBhZ2Ug Ki8KIAl3c3RhdGUuYnR3c19wYWdlc19hbGxvY2VkID0gQlRSRUVfTUVUQVBBR0UgKyAxOwogCiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfU1VCUEhBU0Us CiAJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9MRUFGX0xPQUQpOworCUFzc2VydCghcmVz ZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAlf YnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAKQEAgLTE0MDksNiArMTQx OSw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZm ZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsK Kwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVu OwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMTQzNCw5ICsxNDQ1 LDE2IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0Lgog CSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0 KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tF WV9CVFJFRV9TSEFSRUQgd29ya3NwYWNlLCBhbmQKQEAgLTE0OTAsNiArMTUwOCw4IEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNr IG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTE1ODQsNiArMTYw NCw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vz c2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0 LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9idF9lbmRfcGFyYWxsZWwoYnRsZWFk ZXIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTYwMCw2ICsxNjIyLDggQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhh bmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7 CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCmluZGV4IDZhNjFlMDkz ZmEwLi4wNmMwMWNmMzM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCkBA IC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0xNDMsNiArMTQ0LDcgQEAgc3BnYnVpbGQoUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3VsdCA9IChJ bmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIAly ZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0g YnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3MzlhOTJiZGNjMS4uY2JkMGJhOWFhMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogLyogUG90ZW50aWFsbHkgc2V0IGJ5IHBn X3VwZ3JhZGVfc3VwcG9ydCBmdW5jdGlvbnMgKi8KIE9pZAkJCWJpbmFyeV91cGdyYWRlX25leHRf aW5kZXhfcGdfY2xhc3Nfb2lkID0gSW52YWxpZE9pZDsKQEAgLTE0OTIsOCArMTQ5Myw4IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJUmVsYXRpb24JaW5k ZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKLQkvKiBUaGlzIGhhZCBiZXR0 ZXIgbWFrZSBzdXJlIHRoYXQgYSBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KLQlBc3NlcnQoQWN0aXZl U25hcHNob3RTZXQoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAkv KiBPcGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbiAqLwogCWhlYXBSZWwgPSB0 YWJsZV9vcGVuKGhlYXBSZWxhdGlvbklkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwpAQCAt MTUxMSwxOSArMTUxMiwyOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxh dGlvbklkLAogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhSZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEJ1aWxkSW5kZXhJbmZvIG1heSByZXF1aXJlIGFzIHNu YXBzaG90IGZvciBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyAqLworCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICogV2UgaGF2ZSB0byByZS1i dWlsZCB0aGUgSW5kZXhJbmZvIHN0cnVjdCwgc2luY2UgaXQgd2FzIGxvc3QgaW4gdGhlCiAJICog Y29tbWl0IG9mIHRoZSB0cmFuc2FjdGlvbiB3aGVyZSB0aGlzIGNvbmN1cnJlbnQgaW5kZXggd2Fz IGNyZWF0ZWQgYXQKIAkgKiB0aGUgY2F0YWxvZyBsZXZlbC4KIAkgKi8KIAlpbmRleEluZm8gPSBC dWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwkvKiBEb25lIHdpdGggc25hcHNob3QgKi8K KwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUFzc2VydCghaW5kZXhJbmZvLT5paV9SZWFkeUZvcklu c2VydHMpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IHRydWU7CiAJaW5kZXhJbmZvLT5p aV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAkvKiBOb3cgYnVpbGQgdGhlIGluZGV4ICovCiAJaW5kZXhfYnVp bGQoaGVhcFJlbCwgaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSk7CiAKKwkv KiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQg YnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZl bCk7CiAKQEAgLTE1MzQsMTIgKzE1NDQsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9p ZCBoZWFwUmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwogCWluZGV4 X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2lu ZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBo YXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJvdyB0byBt YXJrIHRoZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNvbW1pdCB0 aGlzIHRyYW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhlIHRhYmxl IG11c3QKIAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGluc2VydGlv bnMgYW5kIG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoaW5k ZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4gZG8gYXdh eSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCkBA IC0zMjM2LDcgKzMyNTMsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkv KiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBP SyAqLwotCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0cnVlLCAv KiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxlX3NjYW5f Z2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsKQEAgLTMy OTksMTIgKzMzMTcsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRleF9idWls ZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBpbmNsdWRl IHJlY2VudGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3b24ndCBt YXJrIHRoZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgYmUg YWJsZQotICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24gZm9yIGRv aW5nIHRoYXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBP bmUgb2YgcmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMgdW5pcXVl LWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQog ICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVu IHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5vdCBjb250 YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRl eC4KICAqCisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IHdlIHNl dCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMgbmV3IHNu YXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24KKyAq IGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCisgKgog ICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJp bmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3Rh cnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQg Y291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGJiMDE1NWZkYzI0Li5kNjg3NjQ2ZWZlZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2OTQsMjMgKzE2OTQsMTcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcg dHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQg aW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIG5vdyB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbmQgYnVp bGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAotCSAqIGFyZSB2aXNpYmxlIGluIHRo aXMgc25hcHNob3QuICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bworCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgc2luZ2xlIG9yCisJICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBi ZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUg Y29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5 IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNv bW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlz IGVpdGhlciB0aGUgZW5kIG9mIGl0cwogCSAqIEhPVC1jaGFpbiBvciB0aGUgZXh0ZW5zaW9uIG9m IHRoZSBjaGFpbiBpcyBIT1Qtc2FmZSBmb3IgdGhpcyBpbmRleC4KIAkgKi8KIAotCS8qIFNldCBB Y3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQg Ki8KLQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQogCS8q IFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBpbmRleCAqLwogCWluZGV4X2NvbmN1cnJlbnRs eV9idWlsZCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQpOwogCi0JLyogd2UgY2FuIGRvIGF3YXkg d2l0aCBvdXIgc25hcHNob3QgKi8KLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJLyoKIAkgKiBD b21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRpc3JlYWR5IHVwZGF0ZSB2aXNp YmxlLgogCSAqLwpAQCAtNDA3Myw5ICs0MDY3LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJ LyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkg bmVlZCBpdCAqLwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwg d2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MDkwLDcg KzQwODEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKiBQZXJmb3JtIGNvbmN1cnJl bnQgYnVpbGQgb2YgbmV3IGluZGV4ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdp ZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsK IAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKaW5kZXggYmVhZmFjOGMwYjAuLmU2OTBkNmM2Y2VjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc2Vs ZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJz ICovCiBkb3VibGUJCWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09SX1RVUExF X0ZSQUNUSU9OOwpAQCAtNjg5Niw2ICs2ODk3LDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2Vy cyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJlbGF0aW9u CWluZGV4OwogCVJlbE9wdEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVyIGhlYXBf YmxvY2tzOwogCWRvdWJsZQkJcmVsdHVwbGVzOwpAQCAtNjk1MSw2ICs2OTUzLDExIEBAIHBsYW5f Y3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJaGVhcCA9 IHRhYmxlX29wZW4odGFibGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVuKGluZGV4 T2lkLCBOb0xvY2spOwogCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBp biB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RTZXQoKSkg eworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJbmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBEZXRlcm1pbmUgaWYg aXQncyBzYWZlIHRvIHByb2NlZWQuCiAJICoKQEAgLTcwMDgsNiArNzAxNSw4IEBAIHBsYW5fY3Jl YXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJCXBhcmFsbGVs X3dvcmtlcnMtLTsKIAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xvY2spOwogCXRhYmxl X2Nsb3NlKGhlYXAsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNDhmZTQzNGNkMy4u NmNhYWQ0MmVhNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDggQEAKICNkZWZpbmUg SEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9Q QUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NOQVBTSE9U X0VBQ0hfTl9QQUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEg KkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKIHN0cnVjdCBWYWN1dW1D dXRvZmZzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggODcxM2UxMmNiZmIuLjdlOGZhNWUxYjU3IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Jl YWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiAjZGVmaW5l IERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKQEAgLTYyLDYgKzYzLDE3IEBAIHR5 cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJLyogdW5yZWdpc3RlciBzbmFwc2hvdCBhdCBzY2Fu IGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9UID0gMSA8PCA5LAorCS8qCisJICogUmVzZXQgc2Nh biBhbmQgY2F0YWxvZyBzbmFwc2hvdCBldmVyeSBzbyBvZnRlbj8gSWYgc28sIGVhY2gKKwkgKiBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBhY3RpdmUgc25hcHNob3QgaXMgcG9w cGVkLAorCSAqIGNhdGFsb2cgc25hcHNob3QgaW52YWxpZGF0ZWQsIGxhdGVzdCBzbmFwc2hvdCBw dXNoZWQgYXMgYWN0aXZlLgorCSAqCisJICogQXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBzbmFwc2hv dCBpcyBub3QgcG9wcGVkLgorCSAqIEdvYWwgb2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1pbiBwcm9w YWdhdGluZyBob3Jpem9uIGZvcndhcmQuCisJICoKKwkgKiBzZWUgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90IGZvciBkZXRhaWxzLgorCSAqLworCVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8PCAxMCwK IH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAgLTg5Myw3ICs5MDUsOCBAQCBleHRlcm4gVGFibGVT Y2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhSZWxhdGlvbiByZWxhdGlvbiwgaW50IG5r ZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5fc3RyYXQo UmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJICBpbnQgbmtleXMsIHN0cnVj dCBTY2FuS2V5RGF0YSAqa2V5LAotCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wgYWxsb3df c3luYykKKwkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMsCisJCQkJCSAg Ym9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FO IHwgU09fQUxMT1dfUEFHRU1PREU7CiAKQEAgLTkwMSw2ICs5MTQsMTUgQEAgdGFibGVfYmVnaW5z Y2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJCWZsYWdzIHw9IFNP X0FMTE9XX1NUUkFUOwogCWlmIChhbGxvd19zeW5jKQogCQlmbGFncyB8PSBTT19BTExPV19TWU5D OworCWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUlOSkVDVElPTl9QT0lOVCgidGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cyIpOworCQkvKiBBY3RpdmUgc25hcHNob3QgaXMg cmVxdWlyZWQgb24gc3RhcnQuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNu YXBzaG90KTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IHNob3VsZCBub3QgYmUgcmVnaXN0ZXJlZCB0 byBrZWVwIHhtaW4gcHJvcGFnYXRpbmcuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgp LT5yZWdkX2NvdW50ID09IDApOworCQlmbGFncyB8PSAoU09fUkVTRVRfU05BUFNIT1QpOworCX0K IAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtl eXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQpAQCAtMTczMCw2ICsxNzUyLDEwIEBAIHRhYmxlX3Nj YW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAogICogdmVyeSBoYXJkIHRvIGRldGVjdCB3aGV0aGVyIHRoZXkncmUgcmVhbGx5 IGluY29tcGF0aWJsZSB3aXRoIHRoZSBjaGFpbiB0aXAuCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1h a2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAg KiBmb3Igb3RoZXIgQU1zIGxhdGVyLgorICoKKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRl eCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKKyAqIFNPX1JFU0VUX1NOQVBTSE9U IGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hv dHMKKyAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwog c3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24gdGFi bGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01h a2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4 IGU2ODA5OTFmOGQ0Li4xOWQyNjQwOGMyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25f cG9pbnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJp bmplY3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JF U1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jCitSRUdSRVNTID0gaW5q ZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyBjaWNfcmVzZXRfc25hcHNob3RzCiBS RUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwog CiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1wcnVuZWQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uOTQ4ZDEyMzJhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAg LTAsMCArMSwxMDUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworIGluamVjdGlvbl9wb2ludHNfc2V0X2xv Y2FsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKyBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNf cmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNp Y19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MjAwKSBzKGkpOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFi bGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBw bHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7 CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFURSBGVU5DVElPTiBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElN TVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVY RUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAk JDsKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChp LCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdI RVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jl c2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo TU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp IERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcg QlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgU0NIRU1B IGNpY19yZXNldF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3Ro ZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjaWNfcmVzZXRfc25h cC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25h cC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9w b2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQK aW5kZXggZDYxMTQ5NzEyZmQuLjg0NzZiZmU3MmE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNyw2ICszNyw3IEBAIHRlc3RzICs9IHsK ICAgICAgICdpbmplY3Rpb25fcG9pbnRzJywKICAgICAgICdoYXNoYWdnJywKICAgICAgICdyZWlu ZGV4X2NvbmMnLAorICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAgIF0sCiAgICAgJ3Jl Z3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5idWlsZF9yb290KCkgLyAnc3JjL3Rlc3Qv cmVncmVzcyddLAogICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNsdXN0ZXItd2lkZSwg c28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MDcyNTM1YjM1NQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKQEAgLTAsMCArMSw4NiBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25f cG9pbnRzOworCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKK1NFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKworCitDUkVBVEUgU0NI RU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGlu dCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNF TEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CisKK0NSRUFU RSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpIFJFVFVS TlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVH SU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBNT0Qo JDEsIDIpID0gMDsKK0VORDsgJCQ7CisKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5w cmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJ CQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0 eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsKKworLS0tLS0tLS0t LS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29y a2Vycz0wKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0Qo aSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVf bm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4o aSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKKy0tIFRoZSBzYW1lIGlu IHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9Mik7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hF UkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGop IFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVf c3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERF U0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBC UklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitEUk9QIFNDSEVN QSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworCitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwotLSAKMi40My4wCgo= --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v18-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35teza0 RnJvbSA3MjM4NjBlN2Q5NjUyMWVmYjM2YTUwMDNkOWQ3ODdiZTU5Y2UzNzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDAxLzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy81MC81MTYwLwogYW5kIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81 NDM4LyBtZXJnZWQgaW4gc2luZ2xlIGNvbW1pdC4gaXQKIGlzIHJlcXVpcmVkIGZvciBzdGFiaWxp dHkgb2Ygc3RyZXNzIHRlc3RzLgoKLS0tCiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDA2X2NpY19idF9pbmRleF9wYXJlbnRfY2hl Y2sucGwgICAgICAgIHwgIDM5ICsrKysrCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICAgICAgICAgfCAgNjggKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMgICAgICAgICAgfCAxMTkgKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGxhbmNhdC5jICAgICAgICAgIHwgMTM1ICsrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAgICAgICAgICAgIHwgICAyICsKIDkgZmls ZXMgY2hhbmdlZCwgMjg1IGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvYW1jaGVjay90LzAwNl9jaWNfYnRfaW5kZXhfcGFyZW50X2NoZWNr LnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkIGIvY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkCmluZGV4IGIzM2U4YzliMDYyLi5iMDQwMDAwZGQ1NSAxMDA2NDQK LS0tIGEvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvYW1jaGVjay9t ZXNvbi5idWlsZApAQCAtNDksNiArNDksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2lj XzJwYy5wbCcsCiAgICAgICAndC8wMDRfdmVyaWZ5X25idHJlZV91bmlxdWUucGwnLAogICAgICAg J3QvMDA1X3BpdHIucGwnLAorICAgICAgJ3QvMDA2X2NpY19idF9pbmRleF9wYXJlbnRfY2hlY2su cGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDZf Y2ljX2J0X2luZGV4X3BhcmVudF9jaGVjay5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwNl9jaWNf YnRfaW5kZXhfcGFyZW50X2NoZWNrLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi42ZTUyYzVlMzllYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90 LzAwNl9jaWNfYnRfaW5kZXhfcGFyZW50X2NoZWNrLnBsCkBAIC0wLDAgKzEsMzkgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisj IFRlc3QgYnRfaW5kZXhfcGFyZW50X2NoZWNrIHdpdGggaW5kZXggY3JlYXRlZCB3aXRoIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKworbXkgKCRub2RlLCAkcmVzdWx0KTsK KworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ0NJQ19idF9pbmRleF9wYXJlbnRfY2hlY2tfdGVzdCcpOworJG5vZGUtPmluaXQ7Cisk bm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVO U0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRB QkxFIHRibChpIGludCBwcmltYXJ5IGtleSkpKTsKKyMgSW5zZXJ0IHR3byByb3dzIGludG8gaW5k ZXgKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShJTlNFUlQgSU5UTyB0YmwgU0VMRUNU IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgcyhpKTspKTsKKworIyBzdGFydCBiYWNrZ3Jv dW5kIHRyYW5zYWN0aW9uCitteSAkaW5fcHJvZ3Jlc3NfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7CiskaW5fcHJvZ3Jlc3NfaC0+cXVlcnlfc2FmZShxKEJFR0lOOyBTRUxF Q1QgcGdfY3VycmVudF94YWN0X2lkKCk7KSk7CisKKyMgZGVsZXRlIG9uZSByb3cgZnJvbSB0YWJs ZSwgd2hpbGUgYmFja2dyb3VuZCB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxKERFTEVURSBGUk9NIHRibCBXSEVSRSBpID0gMTspKTsKKyMg Y3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSwgd2hpY2ggd2lsbCBza2lwIHRoZSBkZWxldGVkIHJv dworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIHRibChpKTspKTsKKworIyBjaGVjayBpbmRleCB1c2luZyBidF9pbmRleF9wYXJl bnRfY2hlY2sKKyRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBidF9p bmRleF9wYXJlbnRfY2hlY2soJ2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpKSk7Citpcygk cmVzdWx0LCAnMCcsICdidF9pbmRleF9wYXJlbnRfY2hlY2sgZm9yIENJQyBhZnRlciByZW1vdmVk IHJvdycpOworCiskaW5fcHJvZ3Jlc3NfaC0+cXVpdDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZjExYzQzYTBlZDcuLjMwNDhlMDQ0YWVjIDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKQEAgLTM4Miw3ICszODIsNiBAQCBidF9jaGVja19ldmVyeV9sZXZlbChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCUJUTWV0 YVBhZ2VEYXRhICptZXRhZDsKIAl1aW50MzIJCXByZXZpb3VzbGV2ZWw7CiAJQnRyZWVMZXZlbAlj dXJyZW50OwotCVNuYXBzaG90CXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAKIAlpZiAoIXJlYWRv bmx5KQogCQllbG9nKERFQlVHMSwgInZlcmlmeWluZyBjb25zaXN0ZW5jeSBvZiB0cmVlIHN0cnVj dHVyZSBmb3IgaW5kZXggXCIlc1wiIiwKQEAgLTQzMywzOCArNDMyLDM1IEBAIGJ0X2NoZWNrX2V2 ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3Bh Y2UsCiAJCXN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCA9IDA7CiAKIAkJLyoKLQkJICogUmVnaXN0 ZXIgb3VyIG93biBzbmFwc2hvdCBpbiAhcmVhZG9ubHkgY2FzZSwgcmF0aGVyIHRoYW4gYXNraW5n CisJCSAqIFJlZ2lzdGVyIG91ciBvd24gc25hcHNob3QgZm9yIGhlYXBhbGxpbmRleGVkLCByYXRo ZXIgdGhhbiBhc2tpbmcKIAkJICogdGFibGVfaW5kZXhfYnVpbGRfc2NhbigpIHRvIGRvIHRoaXMg Zm9yIHVzIGxhdGVyLiAgVGhpcyBuZWVkcyB0bwogCQkgKiBoYXBwZW4gYmVmb3JlIGluZGV4IGZp bmdlcnByaW50aW5nIGJlZ2lucywgc28gd2UgY2FuIGxhdGVyIGJlCiAJCSAqIGNlcnRhaW4gdGhh dCBpbmRleCBmaW5nZXJwcmludGluZyBzaG91bGQgaGF2ZSByZWFjaGVkIGFsbCB0dXBsZXMKIAkJ ICogcmV0dXJuZWQgYnkgdGFibGVfaW5kZXhfYnVpbGRfc2NhbigpLgogCQkgKi8KLQkJaWYgKCFz dGF0ZS0+cmVhZG9ubHkpCi0JCXsKLQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlzdGF0ZS0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAKLQkJCS8qCi0JCQkgKiBHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkgYWx3YXlzIGFjcXVpcmVzIGEgbmV3IE1WQ0Mgc25hcHNob3QgaW4KLQkJ CSAqIFJFQUQgQ09NTUlUVEVEIG1vZGUuICBBIG5ldyBzbmFwc2hvdCBpcyBndWFyYW50ZWVkIHRv IGhhdmUgYWxsCi0JCQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0aGUgaW5kZXguCi0J CQkgKgotCQkJICogV2UgbXVzdCBkZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCBh biBvbGQgeGFjdAotCQkJICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hlciBpc29sYXRp b24gbGV2ZWxzIHdoZW4gdGhhdAotCQkJICogc25hcHNob3QgaXMgbm90IHNhZmUgZm9yIGluZGV4 IHNjYW5zIG9mIHRoZSB0YXJnZXQgaW5kZXguICBUaGlzCi0JCQkgKiBpcyBwb3NzaWJsZSB3aGVu IHRoZSBzbmFwc2hvdCBzZWVzIHR1cGxlcyB0aGF0IGFyZSBiZWZvcmUgdGhlCi0JCQkgKiBpbmRl eCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBzaG91bGQg YmUKLQkJCSAqIHZlcnkgcmFyZS4gIEl0IGRvZXNuJ3Qgc2VlbSB3b3J0aCB1c2luZyBhIHNlY29u ZGFyeSBzbmFwc2hvdCB0bwotCQkJICogYXZvaWQgdGhpcy4KLQkJCSAqLwotCQkJaWYgKElzb2xh dGlvblVzZXNYYWN0U25hcHNob3QoKSAmJiByZWwtPnJkX2luZGV4LT5pbmRjaGVja3htaW4gJiYK LQkJCQkhVHJhbnNhY3Rpb25JZFByZWNlZGVzKEhlYXBUdXBsZUhlYWRlckdldFhtaW4ocmVsLT5y ZF9pbmRleHR1cGxlLT50X2RhdGEpLAotCQkJCQkJCQkJICAgc25hcHNob3QtPnhtaW4pKQotCQkJ CWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9O X0ZBSUxVUkUpLAotCQkJCQkJIGVycm1zZygiaW5kZXggXCIlc1wiIGNhbm5vdCBiZSB2ZXJpZmll ZCB1c2luZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCIsCi0JCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKSk7Ci0JCX0KLQl9CisJCS8qCisJCSAqIEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSBhbHdheXMgYWNxdWlyZXMgYSBuZXcgTVZDQyBzbmFwc2hvdCBpbgorCQkgKiBSRUFEIENP TU1JVFRFRCBtb2RlLiAgQSBuZXcgc25hcHNob3QgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGFsbAor CQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0aGUgaW5kZXguCisJCSAqCisJCSAqIFdl IG11c3QgZGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYW4gb2xkIHhhY3QKKwkJ ICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hlciBpc29sYXRpb24gbGV2ZWxzIHdoZW4g dGhhdAorCQkgKiBzbmFwc2hvdCBpcyBub3Qgc2FmZSBmb3IgaW5kZXggc2NhbnMgb2YgdGhlIHRh cmdldCBpbmRleC4gIFRoaXMKKwkJICogaXMgcG9zc2libGUgd2hlbiB0aGUgc25hcHNob3Qgc2Vl cyB0dXBsZXMgdGhhdCBhcmUgYmVmb3JlIHRoZQorCQkgKiBpbmRleCdzIGluZGNoZWNreG1pbiBo b3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBzaG91bGQgYmUKKwkJICogdmVyeSByYXJl LiAgSXQgZG9lc24ndCBzZWVtIHdvcnRoIHVzaW5nIGEgc2Vjb25kYXJ5IHNuYXBzaG90IHRvCisJ CSAqIGF2b2lkIHRoaXMuCisJCSAqLworCQlpZiAoSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgp ICYmIHJlbC0+cmRfaW5kZXgtPmluZGNoZWNreG1pbiAmJgorCQkJIVRyYW5zYWN0aW9uSWRQcmVj ZWRlcyhIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHJlbC0+cmRfaW5kZXh0dXBsZS0+dF9kYXRhKSwK KwkJCQkJCQkJICAgc3RhdGUtPnNuYXBzaG90LT54bWluKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCisJCQkJCSBl cnJtc2coImluZGV4IFwiJXNcIiBjYW5ub3QgYmUgdmVyaWZpZWQgdXNpbmcgdHJhbnNhY3Rpb24g c25hcHNob3QiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Cit9CiAK IAkvKgogCSAqIFdlIG5lZWQgYSBzbmFwc2hvdCB0byBjaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0 aGUgaW5kZXguIEZvciBiZXR0ZXIKQEAgLTQ3Niw5ICs0NzIsNyBAQCBidF9jaGVja19ldmVyeV9s ZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAog CQlzdGF0ZS0+aW5kZXhpbmZvID0gQnVpbGRJbmRleEluZm8oc3RhdGUtPnJlbCk7CiAJCWlmIChz dGF0ZS0+aW5kZXhpbmZvLT5paV9VbmlxdWUpCiAJCXsKLQkJCWlmIChzbmFwc2hvdCAhPSBTbmFw c2hvdEFueSkKLQkJCQlzdGF0ZS0+c25hcHNob3QgPSBzbmFwc2hvdDsKLQkJCWVsc2UKKwkJCWlm IChzdGF0ZS0+c25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KQogCQkJCXN0YXRlLT5zbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJfQogCX0K QEAgLTU1NSwxMyArNTQ5LDEyIEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCS8qCiAJCSAqIENyZWF0ZSBv dXIgb3duIHNjYW4gZm9yIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oKSwgcmF0aGVyIHRoYW4KIAkJ ICogZ2V0dGluZyBpdCB0byBkbyBzbyBmb3IgdXMuICBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQg d2UgY2FuCi0JCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZDQyBzbmFwc2hvdCByZWdpc3RlcmVkIGVh cmxpZXIgaW4gIXJlYWRvbmx5Ci0JCSAqIGNhc2UuCisJCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZD QyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIuCiAJCSAqCiAJCSAqIE5vdGUgdGhhdCB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKCkgY2FsbHMgaGVhcF9lbmRzY2FuKCkgZm9yIHVzLgogCQkgKi8K IAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChzdGF0ZS0+aGVhcHJlbCwJLyogcmVsYXRp b24gKi8KLQkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KKwkJCQkJCQkJCSBzdGF0 ZS0+c25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtl eXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRydWUsCS8q IGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KQEAgLTU2OSw3ICs1NjIsNyBAQCBidF9jaGVj a19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtl eXNwYWNlLAogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4g b2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCi0JCSAqIGJlaGF2ZXMgaW4gIXJlYWRvbmx5 IGNhc2UuCisJCSAqIGJlaGF2ZXMuCiAJCSAqCiAJCSAqIEl0J3Mgb2theSB0aGF0IHdlIGRvbid0 IGFjdHVhbGx5IHVzZSB0aGUgc2FtZSBsb2NrIHN0cmVuZ3RoIGZvciB0aGUKIAkJICogaGVhcCBy ZWxhdGlvbiBhcyBhbnkgb3RoZXIgaWlfQ29uY3VycmVudCBjYWxsZXIgd291bGQgaW4gIXJlYWRv bmx5CkBAIC01NzgsNyArNTcxLDcgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJICogdGhhdCBuZWVkcyB0 byBiZSBzdXJlIHRoYXQgdGhlcmUgd2FzIG5vIGNvbmN1cnJlbnQgcmVjeWNsaW5nIG9mCiAJCSAq IFRJRHMuCiAJCSAqLwotCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQgPSAhc3RhdGUtPnJlYWRv bmx5OworCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCiAJCS8qCiAJCSAqIERv bid0IHdhaXQgZm9yIHVuY29tbWl0dGVkIHR1cGxlIHhhY3QgY29tbWl0L2Fib3J0IHdoZW4gaW5k ZXggaXMgYQpAQCAtNjAyLDE0ICs1OTUsMTEgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJCQkJCQkJIHN0 YXRlLT5oZWFwdHVwbGVzcHJlc2VudCwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcHJlbCks CiAJCQkJCQkJCSAxMDAuMCAqIGJsb29tX3Byb3BfYml0c19zZXQoc3RhdGUtPmZpbHRlcikpKSk7 CiAKLQkJaWYgKHNuYXBzaG90ICE9IFNuYXBzaG90QW55KQotCQkJVW5yZWdpc3RlclNuYXBzaG90 KHNuYXBzaG90KTsKLQogCQlibG9vbV9mcmVlKHN0YXRlLT5maWx0ZXIpOwogCX0KIAogCS8qIEJl IHRpZHk6ICovCi0JaWYgKHNuYXBzaG90ID09IFNuYXBzaG90QW55ICYmIHN0YXRlLT5zbmFwc2hv dCAhPSBJbnZhbGlkU25hcHNob3QpCisJaWYgKHN0YXRlLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25h cHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzdGF0ZS0+c25hcHNob3QpOwogCU1lbW9yeUNv bnRleHREZWxldGUoc3RhdGUtPnRhcmdldGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwppbmRleCAzM2MyMTA2YzE3Yy4uYmIwMTU1ZmRjMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCkBAIC0xNzkwLDYgKzE3OTAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkg KiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91 dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4K IAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7 CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Us CiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xk ZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKQEAgLTQxOTUsNyArNDE5Niw3IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNhbWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25s eSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZyb20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRo ZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0 aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKIAkvKgpAQCAtNDI3NCw2ICs0Mjc1LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJ CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vy c011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggYmRmODYyYjI0MDYuLjZiMmU0NjJiNzBiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVk ZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5o IgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25f cG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3Vu aXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtOTQyLDYgKzk0Myw4IEBAIHJl dHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlzdGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0 KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWlu dF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFjb25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYwppbmRleCAzZjhhNGNiNTI0NC4uZjE3NTdkMDJmMWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTQ4Nyw2ICs0ODcsNDggQEAgRXhlY0ZpbmRQ YXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisv KgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRl eGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2YgYmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVy cyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBvcGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJ CXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUg dHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxlLgorICovCitzdGF0aWMgYm9vbAorSXNJbmRl eENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24JYXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJ CQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJbmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5k ZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5mbyAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsK KworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9VbmlxdWUgIT0gaW5kZXhJbmZvLT5paV9Vbmlx dWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBv ZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJaWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4 Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRlckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5p bmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJl dHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+ aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJCWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5k ZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9 IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRl ckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlm ZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24p LAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBO SUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChsaXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJ bmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxhdGlvbiksCisJCQkJCQlSZWxhdGlvbkdldElu ZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwly ZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJbml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sg dGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBSZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBv dGhlcgpAQCAtNjk3LDYgKzczOSw4IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZv LT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpj aGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5jZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkg ICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0gMDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRp b25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzA3 LDIzICs3NTEsNzQgQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10 c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxpc3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2Vz dG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxj Miwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlp ZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMs IGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFy Yml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJCWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVs SW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlz dF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVy SW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0K IAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3RvciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXgu IFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIuICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9 IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywgY2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShh bmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRl eGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21wYXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICog aW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRo aXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEgcGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vz c2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBCb3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUg Y29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFu c2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBzZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJ CWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJCQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFy dF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9v aWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nb aV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJCQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5j ZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2Nz W2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNlc3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9y cmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOworCQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9v aWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9ySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmlu ZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMgdG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBp bmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlpZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5p aV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7 IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRpY2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJ aWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFy dF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tqXS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQor CQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJiaXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3Bh cnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nbal07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJi aXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOwor CisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBpbmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJp dGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAqLworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBh dGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVsYXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJ CQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3RvckluZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5k ZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJYXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29p ZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJCQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0 aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJCQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJz Kys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJ CQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1 bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVuZ3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJ CQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlv biBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEgbm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJ CQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBhbiBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhl cyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9sZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJp X29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0KKwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5k ZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFy Yml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJLyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBs aXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNvbWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRo aXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJiaXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxk IG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQgaW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3Rf bGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9 Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVhZl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFy Yml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDZkNTMzYjcyODguLmIyZmEzYjk1ODU1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1 ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5 cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3VwCkBAIC0xMTc4LDYgKzExNzksNyBAQCBFeGVj SW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJ CQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5UKCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0 X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkgKiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9u IHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w bGFuY2F0LmMKaW5kZXggNTkyMzNiNjQ3MzAuLjBjNzIwZTQ1MGU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTYsMTIgKzcxNiwxNCBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlzdAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxs ICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVyZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVu Y2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlz dAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBOb3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0 ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1hcHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJz ID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAg ICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldo ZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkg ICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgogCSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3Ig T04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0IGFuIGluZmVyZW5jZQpAQCAtNzU2LDggKzc1 OCw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAo IUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0JCQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1 c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Igbm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFw cGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsKKwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwg anVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1 aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVxdWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4 cHIpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNzY5LDMwICs3NzEsNzYgQEAgaW5mZXJfYXJi aXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5k ZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlp bmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5mZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVy QXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJlZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0 dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhM aXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAg bmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhpcyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJu ZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJl ZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJl ZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQgdG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFz IHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5E RVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3NpbmcgYW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFt ZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAob25jb25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZh bGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9IGdldF9jb25zdHJhaW50X2lu ZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwogCiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJh aW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGlu IE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVy cm1zZygiY29uc3RyYWludCBpbiBPTiBDT05GTElDVCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQg aW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICogRmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBp bmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVzIGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBv cGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRvIGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQg b3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZvcmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJ CQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJ CQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlBdHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJl bCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9 IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChpZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJewor CQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJlIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5k ZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9nZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9p ZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJlZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGlu ZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICov CisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBpZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsr KQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRubyAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJi aXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVxdWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJ CQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJ CQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNz aW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJ bmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkvKiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRo ZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9zZShpZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFr OworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3NlKGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0K IAogCS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNlbnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRo ZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICogdGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQg ZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs YXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRleExpc3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9 IGxmaXJzdF9vaWQobCk7CkBAIC04MTUsNyArODYzLDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRl LT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBpZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICgh aWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJICogV2UgbmVlZCB0byBjb25zaWRlciBib3Ro IGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5kZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5 IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVjdXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVk CisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMgdXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBz YW1lIGZvciBhbGwKKwkJICogY29uY3VycmVudCB0cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAo IWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyoKQEAgLTgzNSwyNyAr ODg5LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBETyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRo IGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0KLQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChy ZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKLQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwot CQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2spOwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24s IE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsKKwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxz ZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBO byBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGluZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2Fz ZSAqLwotCQkJZ290byBuZXh0OworCQkJLyogSW4gdGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRf bmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tpcCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICov CisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBP TkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5leHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJ CSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlvbmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50 IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJh dGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVl CisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUpCisJCQkJZ290byBuZXh0Owog CQl9CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRlcmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNl IGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkgKiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVu ZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVkaWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQn cyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290 byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxlZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBX SVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBz byBza2lwIHRob3NlIHRvby4KQEAgLTg3NSw3ICs5MjUsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4 ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1 dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJaWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJz LCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFy Yml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVz IChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4Myw2ICs5MzMsMTAgQEAgaW5mZXJfYXJiaXRl cl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0g MSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAK KwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFyZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBu YW1lID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNlbnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJ ICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3QtPmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5m ZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VFbGVtICopIGxmaXJzdChlbCk7CkBAIC05MjAs MjcgKzk3NCwzNSBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJ CX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwgaW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0 Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIEluIGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBp bmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQgdGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVu dHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBub3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxv Z2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRoZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQog CQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVhdCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlm IGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhp biBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgorCQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBj b25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFzIGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNz aW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleC4KIAkJICovCi0JCWlmIChsaXN0X2Rp ZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMpICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVy ZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVyRWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4 dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFydGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBt dXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAqIENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgot CQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwog CQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEpCiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAq KSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAotCQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5 KHByZWRFeHBycywgKExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJ CS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGluZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJl bmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1wbGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJ Q1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9 PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1wbGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVk SW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdvdG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBh cnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFpbnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFs LiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3Rf ZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJ CWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBp ZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRWYWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlk OwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2spOwogCX0KQEAgLTk0OCw3ICsx MDEwLDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5kZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxh dGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRzID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJl ZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3ZhbGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5p bmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJ CQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUgb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0 Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmljYXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYwppbmRleCBlYTM1ZjMwZjQ5NC4uZGNmZTE2YTk4MjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jCkBAIC0xMjMsNiArMTIzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5o IgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIC8qCkBAIC00NDcsNiAr NDQ4LDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCh2b2lkKQogCQlwYWlyaW5naGVhcF9y ZW1vdmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMsICZDYXRhbG9nU25hcHNob3QtPnBoX25vZGUpOwog CQlDYXRhbG9nU25hcHNob3QgPSBOVUxMOwogCQlTbmFwc2hvdFJlc2V0WG1pbigpOworCQlJTkpF Q1RJT05fUE9JTlQoImludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQiKTsKIAl9CiB9CiAK LS0gCjIuNDMuMAoK --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Disposition: attachment; filename="v18-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezm4 RnJvbSBiNDdhZmQzN2ViNzI4NjAxYTQ5NzViNzQ5YTNjNWNlNGQyZjM5MDgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDUvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIGNvbmN1cnJlbnQgYnVp bGRzIG9mCiB1bmlxdWUgaW5kZXhlcwoKUHJldmlvdXNseSwgY29uY3VycmVudCBidWlsZHMgaWYg dW5pcXVlIGluZGV4IHVzZWQgYSBmaXhlZCBzbmFwc2hvdCBmb3IgdGhlIGVudGlyZSBzY2FuIHRv IGVuc3VyZSBwcm9wZXIgdW5pcXVlbmVzcyBjaGVja3MuCgpOb3cgcmVzZXQgc25hcHNob3RzIHBl cmlvZGljYWxseSBkdXJpbmcgY29uY3VycmVudCB1bmlxdWUgaW5kZXggYnVpbGRzLCB3aGlsZSBz dGlsbCBtYWludGFpbmluZyB1bmlxdWVuZXNzIGJ5OgotIGlnbm9yaW5nIFNuYXBzaG90U2VsZiBk ZWFkIHR1cGxlcyBkdXJpbmcgdW5pcXVlbmVzcyBjaGVja3MgaW4gdHVwbGVzb3J0IGFzIG5vdCBh IGd1YXJhbnRlZSwgYnV0IGEgZmFpbC1mYXN0IG1lY2hhbmljcwotIGFkZGluZyBhIHVuaXF1ZW5l c3MgY2hlY2sgaW4gX2J0X2xvYWQgdGhhdCBkZXRlY3RzIG11bHRpcGxlIGFsaXZlIHR1cGxlcyB3 aXRoIHRoZSBzYW1lIGtleSB2YWx1ZXMgYXMgYSBndWFyYW50ZWUgb2YgY29ycmVjdG5lc3MKClR1 cGxlcyBhcmUgU25hcHNob3RTZWxmIHRlc3RlZCBvbmx5IGluIHRoZSBjYXNlIG9mIGVxdWFsIGlu ZGV4IGtleSB2YWx1ZXMsIG92ZXJ3aXNlIF9idF9sb2FkIHdvcmtzIGxpa2UgYmVmb3JlLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDE5MiArKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAg IHwgIDMxICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyAgICB8 ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8 ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA3MjczYjFhZWUwMC4uMGVhYTRkZjU1 ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzNiwx NSArMTIzNiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCAwODg4NDExNmFlYy4uMzQ3 YjUwZDZlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsx NDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggMmY0NWFlOTZjMGMuLmQxODZjZTllYzM3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMsNiArODMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJ Ym9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9 IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFy ZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3Vy cmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDMsMTUgKzIwNSwxMyBA QCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3Rh dGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9v bAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8q Ci0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGlu ZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9v bCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVk ZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbGQgbm9uLWNv bmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQg b2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNw b29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNTgsNyArMjU4LDcgQEAg c3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsK IHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxm LAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRf bGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0 X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRf YnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZh bHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpz dGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRl ICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYgQEAgYnRidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0 VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRz dGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3Rh dGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3Rh dGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNj YW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29s IGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBh Z2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQg bWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0J X2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4 SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZi dWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9D b25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChi dWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7 CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0 ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJ bmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiArMzc5LDExIEBAIF9idF9z cG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5p cXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0 ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBp Z25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50 IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Yg c25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMg cHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4 ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlz bSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3Rh dGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3Rh dGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAor CQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5p cXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRz cG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVt LCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQy LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRl eCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91 dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bv b2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZl IGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQg ZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ug d2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBk dXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5p aV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpidHNwb29sMiA9IChCVFNwb29sICopIHBhbGxv YzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxM OwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28g d2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNv cnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZh bHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3Jk aW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQogCkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVz cyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAt NTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBz ZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0 cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCkKIHsK IAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFy ZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBi dHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwx MyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0 CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9y ZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRl LT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0 RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVh ZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJ ICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGlu ZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBm ZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9k dXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQor CWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZh bHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7 CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlx dWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRf Z2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJ CQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0 dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQor CQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJldiAhPSBO VUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNf bnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhp bmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJ CQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMg dHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5 LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxz ZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2 LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFu ZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUg aWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxs X2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxp dmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOwor CQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3Rp ZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBh cmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJ CQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9k ZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5p bmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZh bHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkv KiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9p bmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29u c3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93 X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJ c2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJ CV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJl ZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0 IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wg Zm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjAsNyAr MTQzMiw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJ CX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRl LT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5V TEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkK IAkJCXsKIAkJCQkvKgpAQCAtMTQxNyw3ICsxNTI5LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVz ZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9Q QVJUSUNJUEFUSU9OCkBAIC0xNDM1LDIxICsxNTQ2LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsg MSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5k ZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNl IGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBl bnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBz aG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8K LQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0K IAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5v cm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0 IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tz IChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQog CSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5k IGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0 IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11 bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFw c2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50 KQogCXsKQEAgLTE0NTcsMTYgKzE1NTksMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9y IGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBz aG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMg c2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQg dmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlk U25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAK IAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NI QVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNiw2ICsxNjM4LDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5p bmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFy ZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwli dHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9y ZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+ c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1 ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CkBAIC0xNTUwLDcgKzE2NTMsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9v bC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJ CQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQt cHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMCw3ICsx NzMzLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0J aWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNl bHZlcyAqLwpAQCAtMTY0MSw3ICsxNzQ0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENh bGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVy bi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5v dCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFyZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29u Y3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsK IAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpA QCAtMTc0NCw2ICsxODQ3LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRlcndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRl LT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2VyLT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNw b29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXItPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxk c3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGluY3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVf ZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwgaWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVh ZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0xODQ3LDExICsxOTUxLDEyIEBAIF9idF9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29s LT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5p cXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3Rf ZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlx dWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0 dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRz b3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7 CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5MzEsNiArMjAzNiw3IEBAIF9idF9wYXJhbGxl bF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJ CQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlx dWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJ CQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1l bSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkgVFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTUz LDE0ICsyMDU5LDEyIEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29yZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0x OwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+ c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFw LCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNl LAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3JrX21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJ CQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGluIGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9j YWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsK LQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlz dGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9 IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3 LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVt YmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdw YWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5y ZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19m YXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVw bmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3 IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJl ciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlkKCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0 ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwogCS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBh cyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7 CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAt OTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBwZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhp Z2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNwbGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0 ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFsLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAgLTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRl Z3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBh Z2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNhdGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVn eSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVkLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9EVVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3 LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0 cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkp OwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0 ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRl LT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZBTFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzEx NDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2lu dCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3BsaXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsK IAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJl dHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0 KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMK aW5kZXggOGIwMjU3OTYxMjcuLmFiZTJkOGQ3Zjk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCkBAIC02Niw4ICs2Niw2IEBAIHN0YXRpYyBib29sIF9idF9jaGVja19yb3djb21w YXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyLCBib29sIGZvcmNl bm9ucmVxdWlyZWQsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRfY2hlY2tr ZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0YXRpYyBp bnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJ CQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOwogCiAK IC8qCkBAIC0yNTE1LDcgKzI1MTMsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNj IHNjYW4sIEJUUmVhZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkg UGFnZUdldEl0ZW0ocHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJz dCBhdHRyaWJ1dGUgd2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCk7CisJZmlyc3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBm aXJzdHR1cCwgbGFzdHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJl ck9mS2V5czsgc3RhcnRpa2V5KyspCiAJewpAQCAtMzgwNSw3ICszODAzLDcgQEAgX2J0X3RydW5j YXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJp Z2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxl SXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRl cyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0 cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBO VUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0 byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMzkyMywxNyArMzky MSwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBr ZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4 cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVu dAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBu b3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIv ZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRo YXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5 IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZh bHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUg c2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoK ICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdy ZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4 IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBh IGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3Rh dGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tl eSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQog ewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRl cyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAg LTM5NTksNiArMzk2NCw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dl dGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0g aW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJ CWlmIChoYXNudWxscykKKwkJCSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwog CiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTM5NzgsNyArMzk4NSw3 IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5k ZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVw bmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7 CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZp cnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC0zOTg5LDcgKzM5 OTYsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQs IEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNh bmRpZGF0ZSBzcGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1 bmNhdGlvbiBpbmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGlu ZyBhCiAgKiBzcGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1 bSBjb21wYXJpc29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVz LiBBbHNvLCBpdCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25j dXJyZW50CisgKiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRh a2VuIGhlcmUgdXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0 dHMKICAqIHdpbGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNw YWNlIGluZGV4KSwgc2luY2UgdGhlCkBAIC0zOTk4LDYgKzQwMDYsOCBAQCBfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdo dCwKICAqICJlcXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdp dmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBo YXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBh bnkgdHVwbGUuCisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJp YnV0ZXMgY29uc2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFs IGFjY29yZGluZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAg KiBhbiBvcGNsYXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVk dXBsaWNhdGlvbi1zYWZlLgpAQCAtNDAwNiw3ICs0MDE2LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAg KiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zh c3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVm dCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBs ZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJ bmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC00MDIzLDYgKzQw MzQsOCBAQCBfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIo bGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhf Z2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmICho YXNudWxscykKKwkJCSpoYXNudWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBU dXBsZURlc2NDb21wYWN0QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVs bDEgIT0gaXNOdWxsMikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA2NDMyZWY1NWNkYy4uY2NhMWRiYjhl MzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzIsNyArMTUzMiw3IEBAIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cg c25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OwotCUFzc2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXgg ZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0z MzIzLDkgKzMzMjMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhl cm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNI T1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQg YXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNl dCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNu YXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZv ciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoK ICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAi aW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0 YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggZDY4NzY0NmVmZWQuLjc3OGQ5NTI4YzI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtMTY5NCw4ICsxNjk0LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICog Y2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVw bGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBi ZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVz aW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJl c2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwog CSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNl IGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBh Ym91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRo dXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCA1ZjcwZThkZGRhYy4uNzFh NWMyMWUwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFy aWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMK QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKIAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHBy b2JlcyAqLwpAQCAtMTMzLDYgKzEzNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZv cmNlVW5pcXVlOwkvKiBjb21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAli b29sCQl1bmlxdWVOdWxsc05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRy ZWF0bWVudCAqLworCWJvb2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBs ZXMgaW4gdW5pcXVlIGNoZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBA IC0zNTgsNiArMzYwLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhl YXBSZWwsCiAJCQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5p cXVlLAogCQkJCQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVu aXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGlu YXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDAsNiArNDAzLDcgQEAg dHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRl eC5pbmRleFJlbCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlx dWU7CiAJYXJnLT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5j dDsKKwlhcmctPnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRl eFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY1Myw2ICsx NjU3LDcgQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUg KmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107 CiAJCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOwor CQlib29sCQl1bmlxdWVDaGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVy IGJyYWluLWRlYWQgaW1wbGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4K QEAgLTE2NjIsMTggKzE2NjcsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhj b25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0 dXBsZTEgIT0gdHVwbGUyKTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0 aW9uKGFyZy0+aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1z ZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBl cnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRl dGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChh cmctPmluZGV4LmhlYXBSZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBf YnRfbG9hZCBmb3IgZGV0YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJ CXsKKwkJCWJvb2wJYW55X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJ CQkJaWdub3JlZDsKKworCQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJ CQkJCQkJICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9 IHR1cGxlMS0+dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVf aW5kZXhfZmV0Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFk ID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNs b3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJ CQl7CisJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJ CQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBs ZTItPnRfdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJ CQkgICZpZ25vcmVkKTsKKwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJ CWVsb2coREVCVUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2Yg dGhlbSBhcmUgZGVhZDogKCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigm dHVwbGUyLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUy LT50X3RpZCkpOworCisJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5k KGZldGNoKTsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CisJCX0KKwkJaWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxl KHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJ bmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwp OworCisJCQkvKiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUg aW4gX2J0X2xvYWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1 ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBp cyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFw UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSkpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZWJjYTAyNTg4 ZDMuLjM4NDcxZTkwYTBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzM5LDggKzEzMzksMTAgQEAg ZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4g Y2hhciAqYnRidWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBs ZSBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJ CSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVy biBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJv b2wgKmhhc251bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7 CisJCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJu IGJvb2wgX2J0X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBh Z2UgcGFnZSwKIAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9j aGVja190aGlyZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCmluZGV4IDM4N2MzMDhlYzJmLi41MTgyMDEzYWFiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBA IC0xNzU0LDkgKzE3NTQsOCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNj YW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFs bHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6 ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAq IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBm bHkgdG8gYWxsb3cgeG1pbgotICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNv bmN1cnJlbnQgaW5kZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhl IHNjYW4uCisgKiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0 byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJs ZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxl c29ydC5oCmluZGV4IGVmNzlmMjU5ZjkzLi5lYjliYzMwZTVkYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmgKQEAgLTQyOSw2ICs0MjksNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRp b24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJ CQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29s CXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29y ZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBS ZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAu LjlmMDNmYTMwMzNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00 MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcg KzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09O Q1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v18-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezi1 RnJvbSA4NTRkNWY5NTQ1ZDllZDVjZDg1YzJlM2RmZDFjODE3MzQ1OTY3YmUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDAyLzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zOgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVl LCBnaW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVu aXF1ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVz dCBib3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMg dmVyaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8w MDZfY2ljLnBsIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9w Z19hbWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9t ZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAzMTZlYTBk NDBiOC4uN2RmMTU0MzVmYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcg QEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJp ZnlfaGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAn dC8wMDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhYWQwZThkYWE4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIy MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9k aWZpY2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxk ZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMg VGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdS Q190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtleSwKKwkJCQkJ CQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJCQkJCWMzIG1v bmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlhIGludDRbXSwg cCBwb2ludCkpKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1 ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFV RU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOwor CisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJs ZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVH SU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJ RU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRF IEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxF CisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0g MDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMg Y29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVt IC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAw JywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3Vy cmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywK Kwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJCVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVy eSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRpY2F0ZV9zdGFibGUgaW1wbGVtZW50YXRp b24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9j ayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1 aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFudCByYW5kb20oMCwgNSkK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0 KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+ IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJ Q1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8g dGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09O RkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VM RUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRS RUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1Qg cGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxp ZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3Rf dmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxh c3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVl cCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5k ZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5s b2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5k b20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51 bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRl ZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJ CQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJV TkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSU4gd2l0aCB1cHNlcnRz Ciskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1l eGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHBy b2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlO REVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJ U1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdf dHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6 Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFs dWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3Rf dmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBh cmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0Ymwg VVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4 X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlm CisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQg bnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0 YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05G TElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0 dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4g Q0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJ U0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0 CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBB UyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJ XGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93 b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJ CVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBCUklOICh1cGRh dGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRfYXQpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVuZGlmCisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAg MTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYK KwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBu dW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+ c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NDMuMAoK --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Disposition: attachment; filename="v18-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezo5 RnJvbSBhZDY5YTczOWM3Mjc4MmQ3NDBmZTZlOTZjNDVlNDAwNmY4NTliOTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDA2LzEyXSBBZGQgU1RJUiBhY2Nlc3MgbWV0aG9kIGFuZCBmbGFncyByZWxhdGVk IHRvCiBhdXhpbGlhcnkgaW5kZXhlcwoKVGhpcyBwYXRjaCBwcm92aWRlcyBpbmZyYXN0cnVjdHVy ZSBmb3IgZm9sbG93aW5nIGVuaGFuY2VtZW50cyB0byBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBi eToKLSBpaV9BdXhpbGlhcnkgaW4gSW5kZXhJbmZvOiBpbmRpY2F0ZXMgdGhhdCBhbiBpbmRleCBp cyBhbiBhdXhpbGlhcnkgaW5kZXggdXNlZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZAot IHZhbGlkYXRlX2luZGV4IGluIEluZGV4VmFjdXVtSW5mbzogc2V0IGlmIGluZGV4X2J1bGtfZGVs ZXRlIGNhbGxlZCBkdXJpbmcgdGhlIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudCBpbmRl eCBidWlsZAotIFNUSVIoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhv ZCBpcyBpbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xlbHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlh cnkgdXNhZ2UKClNUSVIgZnVuY3Rpb25zIGRlc2lnbmVkIGFzIGFuIGVwaGVtZXJhbCBoZWxwZXIg ZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3JhcmlseSBzdG9yaW5nIFRJRHMg d2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2YgYSB0eXBpY2FsIGFjY2VzcyBt ZXRob2QuIEFzIHN1Y2gsIGl0IHJhaXNlcyB3YXJuaW5ncyBvciBlcnJvcnMgd2hlbiBhY2Nlc3Nl ZCBvdXRzaWRlIGl0cyBzcGVjaWFsaXplZCB1c2FnZSBwYXRoLgoKUGxhbm5lZCB0byBiZSB1c2Vk IGluIGZvbGxvd2luZyBjb21taXRzLgotLS0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVw bGUuYyAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlICAgICAgICAgfCAgMTggKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMgICAgICAgICAgIHwgNTczICsrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5o ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCAg ICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaCAgICAgICAgICAgICAg ICB8IDExNyArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgICAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0ICAgICAgIHwgICA0ICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0ICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9p bmRleF9zZWxmdW5jcy5oICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YW11dGlscy5vdXQgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nh bml0eS5vdXQgfCAgIDcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgICAg ICAgfCAgMjQgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDc3NyBpbnNlcnRpb25zKCspLCAxOCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1 aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUv cGdzdGF0dHVwbGUuYwppbmRleCBhNmRhZDU0ZmY1OC4uY2E1MjE0NDYxZTYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3RhdHR1 cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTI4NSw2ICsyODUsOSBAQCBwZ3N0YXRfcmVsYXRpb24oUmVs YXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCWNhc2UgU1BHSVNUX0FNX09J RDoKIAkJCQllcnIgPSAic3BnaXN0IGluZGV4IjsKIAkJCQlicmVhazsKKwkJCWNhc2UgU1RJUl9B TV9PSUQ6CisJCQkJZXJyID0gInN0aXIgaW5kZXgiOworCQkJCWJyZWFrOwogCQkJY2FzZSBCUklO X0FNX09JRDoKIAkJCQllcnIgPSAiYnJpbiBpbmRleCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKaW5kZXggMTkzMmQxMWQxNTQuLmNkNjUyNGE1NGFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlCkBAIC05 LDYgKzksNiBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTCSAgICA9IGJyaW4gY29tbW9uIGdpbiBn aXN0IGhhc2ggaGVhcCBpbmRleCBuYnRyZWUgcm1ncmRlc2Mgc3BnaXN0IFwKLQkJCSAgc2VxdWVu Y2UgdGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQorCQkJICBzdGlyIHNlcXVlbmNlIHRhYmxlIHRh Ymxlc2FtcGxlIHRyYW5zYW0KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2Nv bW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGYyODMyNmJhZDA5 Li4yMzJjODdlYzI2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMzA5 Miw2ICszMDkyLDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERFQlVH MjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVn eSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwog CiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpAQCAtMzE0Myw2 ICszMTQ0LDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52 YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNr IGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCmluZGV4IDdhMmQwZGRiNjg5Li5hMTU2 Y2RkZmYzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBzdWJkaXIo J25idHJlZScpCiBzdWJkaXIoJ3JtZ3JkZXNjJykKIHN1YmRpcignc2VxdWVuY2UnKQogc3ViZGly KCdzcGdpc3QnKQorc3ViZGlyKCdzdGlyJykKIHN1YmRpcigndGFibGUnKQogc3ViZGlyKCd0YWJs ZXNhbXBsZScpCiBzdWJkaXIoJ3RyYW5zYW0nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3N0aXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmFlNTg5OGI4ZDcKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpAQCAtMCwwICsxLDE4 IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxlIGZv ciBhY2Nlc3Mvc3RpcgorIworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9hY2Nl c3Mvc3Rpci9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKK09CSlMgPSBcCisJc3Rpci5vCisK K2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOWM2ZWNhODQ4ZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNSBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKwknc3Rpci5jJywKKykKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGly LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjAxZjNiNjYwZjRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCkBAIC0wLDAgKzEsNTczIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBzdGlyLmMKKyAqCSAgSW1wbGVtZW50YXRpb24gb2YgU2hvcnQtVGVybSBJ bmRleCBSZXBsYWNlbWVudC4KKyAqCisgKiBTVElSIGlzIGEgc3BlY2lhbGl6ZWQgYWNjZXNzIG1l dGhvZCB0eXBlIGRlc2lnbmVkIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZQorICogb2YgVElEIHZhbHVl cyBkdXJpbmcgY29uY3VyZXJudCBpbmRleCBidWlsZCBvcGVyYXRpb25zLgorICoKKyAqIFRoZSB0 eXBpY2FsIGxpZmVjeWNsZSBvZiBhIFNUSVIgaW5kZXggaXM6CisgKiAxLiBjcmVhdGVkIGFzIGFu IGF1eGlsaWFyeSBpbmRleCBmb3IgQ0lDL1JJQworICogMi4gYWNjZXB0cyBpbnNlcnRzIGZvciBh IHBlcmlvZAorICogMy4gc3RpcmJ1bGtkZWxldGUgY2FsbGVkIGR1cmluZyBpbmRleCB2YWxpZGF0 aW9uIHBoYXNlCisgKiA1LiBnZXRzIGRyb3BwZWQKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAi YWNjZXNzL3N0aXIuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv YW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9jYXRjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmRl eF9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcmVncHJvYy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBTdGly IGhhbmRsZXIgZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBtZXRo b2QgcGFyYW1ldGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5kbGVy KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1ha2VO b2RlKEluZGV4QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5IGFu ZCBwcm9jZWR1cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJUl9O U1RSQVRFR0lFUzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1yb3V0 aW5lLT5hbW9wdHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRvZXNu J3Qgc3VwcG9ydCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fub3Jk ZXIgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5hbW9w dGlvbmFsa2V5ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsKKwlh bXJvdXRpbmUtPmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFnZSA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1wcmVkbG9ja3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+YW1j YW5pbmNsdWRlID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVtID0g ZmFsc2U7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNVVU1f T1BUSU9OX1BBUkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFOVVA7 CisJYW1yb3V0aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1bmN0 aW9uIGNhbGxiYWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlhbXJv dXRpbmUtPmFtYnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1pbnNl cnQgPSBzdGlyaW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsKKwlh bXJvdXRpbmUtPmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+YW12 YWN1dW1jbGVhbnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJldHVy biA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1hdGU7 CisJYW1yb3V0aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFtcHJv cGVydHkgPSBOVUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1c3Rt ZW1iZXJzID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2NhbjsK KwlhbXJvdXRpbmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0dHVw bGUgPSBOVUxMOworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGluZS0+ YW1lbmRzY2FuID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxMOwor CWFtcm91dGluZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRlcGFy YWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9QT0lO VEVSKGFtcm91dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3MgZm9y IFNUSVIgaW5kZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFsaWRh dGlvIG1heSBiZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3RlbmN5 LgorICovCitib29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCByZXN1 bHQgPSB0cnVlOworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xhc3Nm b3JtOworCU9pZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1fcGdf b3BmYW1pbHkgZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3QgKnBy b2NsaXN0LAorCQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGluZm9y bWF0aW9uICovCisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdl dERhdHVtKG9wY2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3MgJXUi LCBvcGNsYXNzb2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1Qo Y2xhc3N0dXApOworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKworCisJ LyogRmV0Y2ggb3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hTeXND YWNoZTEoT1BGQU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1pbHlm b3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3BmYW1p bHluYW1lID0gTmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFsbCBv cGVyYXRvcnMgYW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9wcmxp c3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1bShv cGZhbWlseW9pZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NOVU0s IE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1YWwg b3BlcmF0b3JzICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsrKQor CXsKKwkJSGVhcFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKKwkJ Rm9ybV9wZ19hbW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVwKTsK KworCQkvKiBDaGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYgKG9w cmZvcm0tPmFtb3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+IFNU SVJfTlNUUkFURUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3Bm YW1pbHkgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51bWJl ciAlZCIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJh dG9yKG9wcmZvcm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRlZ3kp KSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBwb3J0 IE9SREVSIEJZIG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1P UF9TRUFSQ0ggfHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQorCQl7 CisJCQllcmVwb3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5zIGlu dmFsaWQgT1JERVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJCQkg ICBvcGZhbWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9w b3ByKSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Ig c2lnbmF0dXJlIC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICghY2hl Y2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJICBv cHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkp CisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFp bnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZhbWls eW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsK KwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KHBy b2NsaXN0KTsKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXNDYWNo ZShmYW1pbHl0dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRleC4K KyAqIFRoZSBza2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2lsbCBi ZSBhY2NlcHRlZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJlbGF0 aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJNZXRh UGFnZURhdGEgKm1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01FVEEp OworCW1ldGFkYXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0YWRh dGEsIDAsIHNpemVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051bWJl ciA9IFNUSVJfTUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lwSW5z ZXJ0czsKKwkoKFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0aXJN ZXRhUGFnZURhdGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtZXRh cGFnZSBmb3IgYSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4IGNy ZWF0aW9uLgorICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3Jr TnVtYmVyIGZvcmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsK KworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCS8qCisJICogTWFrZSBhIG5l dyBwYWdlOyBzaW5jZSBpdCBpcyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdp dGgKKwkgKiBibG9jayBudW1iZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVkIHRv IGhvbGQgdGhlIGV4dGVuc2lvbgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUgY29u Y3VycmVudCBpbnNlcnRlcnMgeWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyRXh0 ZW5kZWQoaW5kZXgsIGZvcmtudW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFCdWZmZXIpID09IFNUSVJf TUVUQVBBR0VfQkxLTk8pOworCisJbWV0YVBhZ2UgPSAgQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVy KTsKKwlTdGlyRmlsbE1ldGFwYWdlKGluZGV4LCBtZXRhUGFnZSwgZm9ya251bSA9PSBJTklUX0ZP UktOVU0pOworCisJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCUVORF9DUklUX1NFQ1RJ T04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICogSW5p dGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0UGFn ZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisK KwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsKKwor CW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBmbGFn czsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAqIEFk ZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNuJ3Qg Zml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisgKi8K K3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1cGxl KQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9pbnRl ciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBhZ2Ug Ki8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBmaXQg b24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSA8 IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0dXBs ZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShwYWdl KTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEpOwor CW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1cGxl KSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4b2Zm Kys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5tYXhv ZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7CisK KwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNzZXJ0 KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBk X3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBsZSBp bnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwg RGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQsIFJl bGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJICBi b29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykKK3sK KwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29udGV4 dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1ZmZl ciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCXVpbnQxNiBibGtObzsKKworCS8qIENy ZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3IgaW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2VydEN0 eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NTRVRf REVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5zZXJ0 Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVwbGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlpdHVw ID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNpemVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5oZWFw UHRyID0gKmh0X2N0aWQ7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsKKwlt ZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwlm b3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7 CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikp OworCQkvKiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0YS0+ c2tpcEluc2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7CisJ CQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOworCQkv KiBEb24ndCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJTG9j a0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtObyA+ IDApCisJCXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxvY2tC dWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7CisKKwkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkJCUFzc2VydCgh UGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5IHRvIGFkZCB0dXBsZSB0byBleGlzdGluZyBw YWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8q IFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBjbGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJCQlN YXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCQlV bmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQkJUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVy KTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCQlNZW1vcnlDb250ZXh0 RGVsZXRlKGluc2VydEN0eCk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCisJCQlFTkRfQ1JJ VF9TRUNUSU9OKCk7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCX0KKworCQkv KiBOZWVkIHRvIGFkZCBuZXcgcGFnZSAtIGdldCBleGNsdXNpdmUgbG9jayBvbiBtZXRhIHBhZ2Ug Ki8KKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJ CW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikpOwor CQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRlbmRlZCB0aGUgaW5kZXgg Ki8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykKKwkJeworCQkJQXNzZXJ0 KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21lb25lIGVsc2UgaW5zZXJ0 ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBhZ2FpbiAqLworCQkJTG9j a0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVmZmVy ID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVMTCwK KwkJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm ZmVyKTsKKwkJCVNUQVJUX0NSSVRfU0VDVElPTigpOworCisJCQlTdGlySW5pdFBhZ2UocGFnZSwg MCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8q IFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0byBhbiBlbXB0eSBw YWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0aXIgdHVwbGUgdG8g ZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdlIHdpdGggbmV3IGxh c3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmZmVyKTsKKworCQkJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCQkJ TWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJCUVORF9DUklUX1NFQ1RJT04oKTsKKworCQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRh QnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQlNZW1vcnlD b250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KK30K KworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVuY3Rpb25zIGFs bCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIs IGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5v dCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVzY2FuKEluZGV4 U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkgIFNjYW5L ZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBu b3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5kc2NhbihJbmRl eFNjYW5EZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50 ZWQiLCBfX2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRleCAtIG9ubHkg YWxsb3dlZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxpemVzIHRoZSBt ZXRhIHBhZ2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWlsZFJlc3VsdCAq c3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJICAgc3RydWN0 IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJlc3VsdDsKKwor CWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsIChlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGluZGV4ZXMgYXJl IG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRhcGFnZShpbmRl eCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBsZXMgPSAwOwor CXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHN0 aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBhZ2UoaW5kZXgs IElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxl dGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMsCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJ CQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfc3RhdGUpCit7CisJUmVsYXRpb24gaW5kZXggPSBpbmZv LT5pbmRleDsKKwlCbG9ja051bWJlciBibGtubywgbnBhZ2VzOworCUJ1ZmZlciBidWZmZXI7CisJ UGFnZSBwYWdlOworCisJLyogRm9yIG5vcm1hbCBWQUNVVU0sIG1hcmsgdG8gc2tpcCBpbnNlcnRz IGFuZCB3YXJuIGFib3V0IGluZGV4IGRyb3AgbmVlZGVkICovCisJaWYgKCFpbmZvLT52YWxpZGF0 ZV9pbmRleCkKKwl7CisJCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmRleCk7CisKKwkJZXJlcG9y dChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ ZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMg aW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJCXJldHVybiBOVUxMOwor CX0KKworCWlmIChzdGF0cyA9PSBOVUxMKQorCQlzdGF0cyA9IChJbmRleEJ1bGtEZWxldGVSZXN1 bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisKKwkvKgorCSAq IEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXMuIFdlIGRvbid0IGNhcmUgYWJvdXQgY29uY3VycmVudGx5 IGFkZGVkIHBhZ2VzLAorCSAqIGJlY2F1c2UgaW5kZXggaXMgbWFya2VkIGFzIG5vdC1yZWFkeSBm b3IgdGhhdCBtb21tZW50IGFuZCBpbmRleCBub3QKKwkgKiB1c2VkIGZvciBpbnNlcnQuCisJICov CisJbnBhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpbmRleCk7CisJZm9yIChibGtu byA9IFNUSVJfSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCisJeworCQlTdGly VHVwbGUgKml0dXAsICppdHVwRW5kOworCisJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CisK KwkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25v LAorCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCisJCUxvY2tCdWZmZXIo YnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CisKKwkJaWYgKFBhZ2VJc05ldyhwYWdlKSkKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOworCQkJY29udGludWU7CisJCX0KKworCQlpdHVwID0gU3RpclBhZ2VHZXRUdXBs ZShwYWdlLCBGaXJzdE9mZnNldE51bWJlcik7CisJCWl0dXBFbmQgPSBTdGlyUGFnZUdldFR1cGxl KHBhZ2UsIE9mZnNldE51bWJlck5leHQoU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkpKTsKKwkJ d2hpbGUgKGl0dXAgPCBpdHVwRW5kKQorCQl7CisJCQkvKiBEbyB3ZSBoYXZlIHRvIGRlbGV0ZSB0 aGlzIHR1cGxlPyAqLworCQkJaWYgKGNhbGxiYWNrKCZpdHVwLT5oZWFwUHRyLCBjYWxsYmFja19z dGF0ZSkpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLCBlcnJtc2coIndlIG5ldmVyIGRlbGV0ZSBpbiBzdGlyIikpKTsKKwkJ CX0KKworCQkJaXR1cCA9IFN0aXJQYWdlR2V0TmV4dFR1cGxlKGl0dXApOworCQl9CisKKwkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCX0KKworCXJldHVybiBzdGF0czsKK30KKworLyoK KyAqIE1hcmsgYSBTVElSIGluZGV4IHRvIHNraXAgZnV0dXJlIGluc2VydHMKKyAqLwordm9pZCBT dGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpCit7CisJU3Rpck1ldGFQYWdlRGF0 YSAqbWV0YURhdGE7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsKKworCUFz c2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVy KGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwltZXRhUGFn ZSA9IEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcik7CisJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1l dGEobWV0YVBhZ2UpOworCisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJeworCQltZXRh RGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7 CisJfQorCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKK0luZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJ CQkJCQkJCUluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCit7CisJU3Rpck1hcmtBc1NraXBJ bnNlcnRzKGluZm8tPmluZGV4KTsKKwllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9f ZnVuY19fKSkpOworCXJldHVybiBOVUxMOworfQorCitieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0g cmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSkKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBz dGlyY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsCisJCQkJ CSBkb3VibGUgbG9vcF9jb3VudCwgQ29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJIENvc3Qg KmluZGV4VG90YWxDb3N0LCBTZWxlY3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJIGRv dWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwgZG91YmxlICppbmRleFBhZ2VzKQoreworCWVyZXBvcnQo RVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJc IiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGNjYTFkYmI4ZTM3Li5lOWUy MmVjMGU4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQzMyw2ICszNDMzLDcgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5m by5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBoZWFw UmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMg aW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hbmFseXplLmMKaW5kZXggNGZmZmI3NmU1NTcuLjM4NjAyZTZhNzJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jCkBAIC03MjAsNiArNzIwLDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRp b24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gZWxldmVsOwogCQkJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVsLT5y ZWx0dXBsZXM7CiAJCQlpdmluZm8uc3RyYXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmluZm8u dmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xlYW51 cCgmaXZpbmZvLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5k ZXggMmI5ZDU0OGNkZWIuLjI4NmZjY2NlYzNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVf aW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZv LmVzdGltYXRlZF9jb3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZpbmZv Lm51bV9oZWFwX3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0 ZWd5ID0gcHZzLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAK IAkvKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1l ID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMKaW5kZXggZTJkOWU5YmU0MWEuLmU5N2UwOTQzZjViIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YwpAQCAtODc1LDYgKzg3NSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVt a2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBp bmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBm YWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOworCW4tPmlpX0F1eGlsaWFyeSA9IGZh bHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5p aV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA1YjJhYjE4MWI1Zi4uYjk5OTE2ZWRiNGEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9nZW5hbS5oCkBAIC03Myw2ICs3Myw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4VmFj dXVtSW5mbwogCWJvb2wJCWVzdGltYXRlZF9jb3VudDsJLyogbnVtX2hlYXBfdHVwbGVzIGlzIGFu IGVzdGltYXRlICovCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9ydCBsZXZlbCBmb3Ig cHJvZ3Jlc3MgbWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1cGxlczsJLyogdHVwbGVz IHJlbWFpbmluZyBpbiBoZWFwICovCisJYm9vbAkJdmFsaWRhdGVfaW5kZXg7IC8qIHZhbGlkYXRp bmcgY29uY3VycmVudGx5IGJ1aWx0IGluZGV4PyAqLwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCiB9IEluZGV4VmFjdXVtSW5m bzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKaW5kZXggZGZiYjRjODU0NjAuLmExMjFiNGQzMWM5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKQEAgLTUxLDggKzUxLDkgQEAgdHlwZWRlZiBlbnVt IHJlbG9wdF9raW5kCiAJUkVMT1BUX0tJTkRfVklFVyA9ICgxIDw8IDkpLAogCVJFTE9QVF9LSU5E X0JSSU4gPSAoMSA8PCAxMCksCiAJUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQgPSAoMSA8PCAxMSks CisJUkVMT1BUX0tJTkRfU1RJUiA9ICgxIDw8IDEyKSwKIAkvKiBpZiB5b3UgYWRkIGEgbmV3IGtp bmQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlICJsYXN0X2RlZmF1bHQiIHRvbyAqLwotCVJFTE9QVF9L SU5EX0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1BBUlRJVElPTkVELAorCVJFTE9QVF9LSU5E X0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1NUSVIsCiAJLyogc29tZSBjb21waWxlcnMgdHJl YXQgZW51bXMgYXMgc2lnbmVkIGludHMsIHNvIHdlIGNhbid0IHVzZSAxIDw8IDMxICovCiAJUkVM T1BUX0tJTkRfTUFYID0gKDEgPDwgMzApCiB9IHJlbG9wdF9raW5kOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3N0aXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5NDNjNDJhOTdlCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApAQCAtMCwwICsxLDExNyBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Rpci5oCisgKgkgIGhlYWRlciBmaWxlIGZvciBwb3N0 Z3JlcyBzdGlyIGFjY2VzcyBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgKgorICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgX1NUSVJfSF8KKyNkZWZpbmUgX1NUSVJfSF8KKworI2luY2x1ZGUg ImFtYXBpLmgiCisjaW5jbHVkZSAieGxvZy5oIgorI2luY2x1ZGUgImdlbmVyaWNfeGxvZy5oIgor I2luY2x1ZGUgIml0dXAuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvcGF0 aG5vZGVzLmgiCisKKy8qIFN1cHBvcnQgcHJvY2VkdXJlcyBudW1iZXJzICovCisjZGVmaW5lIFNU SVJfTlBST0MJCQkJMAorCisvKiBTY2FuIHN0cmF0ZWdpZXMgKi8KKyNkZWZpbmUgU1RJUl9OU1RS QVRFR0lFUwkJMQorCisjZGVmaW5lIFNUSVJfT1BUSU9OU19QUk9DCQkJCTAKKworLyogTWFjcm9z IGZvciBhY2Nlc3Npbmcgc3RpciBwYWdlIHN0cnVjdHVyZXMgKi8KKyNkZWZpbmUgU3RpclBhZ2VH ZXRPcGFxdWUocGFnZSkgKChTdGlyUGFnZU9wYXF1ZSkgUGFnZUdldFNwZWNpYWxQb2ludGVyKHBh Z2UpKQorI2RlZmluZSBTdGlyUGFnZUdldE1heE9mZnNldChwYWdlKSAoU3RpclBhZ2VHZXRPcGFx dWUocGFnZSktPm1heG9mZikKKyNkZWZpbmUgU3RpclBhZ2VJc01ldGEocGFnZSkgXAorCSgoU3Rp clBhZ2VHZXRPcGFxdWUocGFnZSktPmZsYWdzICYgU1RJUl9NRVRBKSAhPSAwKQorI2RlZmluZSBT dGlyUGFnZUdldERhdGEocGFnZSkJCSgoU3RpclR1cGxlICopUGFnZUdldENvbnRlbnRzKHBhZ2Up KQorI2RlZmluZSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9mZnNldCkgXAorCSgoU3RpclR1cGxl ICopKFBhZ2VHZXRDb250ZW50cyhwYWdlKSBcCisJCSsgc2l6ZW9mKFN0aXJUdXBsZSkgKiAoKG9m ZnNldCkgLSAxKSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TmV4dFR1cGxlKHR1cGxlKSBcCisJKChT dGlyVHVwbGUgKikoKFBvaW50ZXIpKHR1cGxlKSArIHNpemVvZihTdGlyVHVwbGUpKSkKKworCisK Ky8qIFByZXNlcnZlZCBwYWdlIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9NRVRBUEFHRV9CTEtO TwkoMCkKKyNkZWZpbmUgU1RJUl9IRUFEX0JMS05PCQkoMSkgLyogZmlyc3QgZGF0YSBwYWdlICov CisKKworLyogT3BhcXVlIGZvciBzdGlyIHBhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBTdGlyUGFn ZU9wYXF1ZURhdGEKK3sKKwlPZmZzZXROdW1iZXIgbWF4b2ZmOwkJLyogbnVtYmVyIG9mIGluZGV4 IHR1cGxlcyBvbiBwYWdlICovCisJdWludDE2CQlmbGFnczsJCQkvKiBzZWUgYml0IGRlZmluaXRp b25zIGJlbG93ICovCisJdWludDE2CQl1bnVzZWQ7CQkJLyogcGxhY2Vob2xkZXIgdG8gZm9yY2Ug bWF4YWxpZ25pbmcgb2Ygc2l6ZSBvZgorCQkJCQkJCQkgKiBTdGlyUGFnZU9wYXF1ZURhdGEgYW5k IHRvIHBsYWNlCisJCQkJCQkJCSAqIHN0aXJfcGFnZV9pZCBleGFjdGx5IGF0IHRoZSBlbmQgb2Yg cGFnZSAqLworCXVpbnQxNgkJc3Rpcl9wYWdlX2lkOwkvKiBmb3IgaWRlbnRpZmljYXRpb24gb2Yg U1RJUiBpbmRleGVzICovCit9IFN0aXJQYWdlT3BhcXVlRGF0YTsKKworLyogU3RpciBwYWdlIGZs YWdzICovCisjZGVmaW5lIFNUSVJfTUVUQQkJKDE8PDApCisKK3R5cGVkZWYgU3RpclBhZ2VPcGFx dWVEYXRhICpTdGlyUGFnZU9wYXF1ZTsKKworI2RlZmluZSBTVElSX1BBR0VfSUQJCTB4RkY4NAor CisvKiBNZXRhZGF0YSBvZiBzdGlyIGluZGV4ICovCit0eXBlZGVmIHN0cnVjdCBTdGlyTWV0YVBh Z2VEYXRhCit7CisJdWludDMyCQltYWdpY2tOdW1iZXI7CisJdWludDE2CQlsYXN0QmxrTm87CisJ Ym9vbAkJc2tpcEluc2VydHM7CS8qIHNob3VsZCB3ZSBqdXN0IGV4aXQgd2l0aG91dCBhbnkgaW5z ZXJ0cyAqLworfSBTdGlyTWV0YVBhZ2VEYXRhOworCisvKiBNYWdpYyBudW1iZXIgdG8gZGlzdGlu Z3Vpc2ggc3RpciBwYWdlcyBmcm9tIG90aGVycyAqLworI2RlZmluZSBTVElSX01BR0lDS19OVU1C RVIgKDB4REJBQzBERUYpCisKKyNkZWZpbmUgU3RpclBhZ2VHZXRNZXRhKHBhZ2UpCSgoU3Rpck1l dGFQYWdlRGF0YSAqKSBQYWdlR2V0Q29udGVudHMocGFnZSkpCisKK3R5cGVkZWYgc3RydWN0IFN0 aXJUdXBsZQoreworCUl0ZW1Qb2ludGVyRGF0YSBoZWFwUHRyOworfSBTdGlyVHVwbGU7CisKKyNk ZWZpbmUgU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIFwKKwkoQkxDS1NaIC0gTUFY QUxJR04oU2l6ZU9mUGFnZUhlYWRlckRhdGEpIFwKKwkJLSBTdGlyUGFnZUdldE1heE9mZnNldChw YWdlKSAqIChzaXplb2YoU3RpclR1cGxlKSkgXAorCQktIE1BWEFMSUdOKHNpemVvZihTdGlyUGFn ZU9wYXF1ZURhdGEpKSkKKworZXh0ZXJuIHZvaWQgU3RpckZpbGxNZXRhcGFnZShSZWxhdGlvbiBp bmRleCwgUGFnZSBtZXRhUGFnZSwgYm9vbCBza2lwSW5zZXJ0cyk7CitleHRlcm4gdm9pZCBTdGly SW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOworZXh0ZXJu IHZvaWQgU3RpckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKTsKK2V4dGVybiB2b2lk IFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCk7CisKKy8qIGluZGV4IGFjY2Vz cyBtZXRob2QgaW50ZXJmYWNlIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGJvb2wgc3RpcnZhbGlkYXRl KE9pZCBvcGNsYXNzb2lkKTsKK2V4dGVybiBib29sIHN0aXJpbnNlcnQoUmVsYXRpb24gaW5kZXgs IERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJCQkJIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCQkJCSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLAor CQkJCQkgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmluZGV4 SW5mbyk7CitleHRlcm4gSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGlu dCBua2V5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlycmVzY2FuKEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkJCQkgU2Nhbktl eSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlyZW5kc2NhbihJbmRl eFNjYW5EZXNjIHNjYW4pOworZXh0ZXJuIEluZGV4QnVpbGRSZXN1bHQgKnN0aXJidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJCQkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmlu ZGV4SW5mbyk7CitleHRlcm4gdm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCk7Citl eHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlyYnVsa2RlbGV0ZShJbmRleFZhY3V1bUlu Zm8gKmluZm8sCisJCQkJCQkJCQkJICAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywgSW5k ZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJICAgdm9pZCAqY2FsbGJh Y2tfc3RhdGUpOworZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFu dXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCQkgIEluZGV4QnVsa0RlbGV0ZVJl c3VsdCAqc3RhdHMpOworZXh0ZXJuIGJ5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25z LCBib29sIHZhbGlkYXRlKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtLmRhdAppbmRleCAyNmQxNTkyOGExNS4uYTVlY2Y5MjA4YWQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW0uZGF0CkBAIC0zMyw1ICszMyw4IEBACiB7IG9pZCA9PiAnMzU4MCcsIG9pZF9zeW1i b2wgPT4gJ0JSSU5fQU1fT0lEJywKICAgZGVzY3IgPT4gJ2Jsb2NrIHJhbmdlIGluZGV4IChCUklO KSBhY2Nlc3MgbWV0aG9kJywKICAgYW1uYW1lID0+ICdicmluJywgYW1oYW5kbGVyID0+ICdicmlu aGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKK3sgb2lkID0+ICc1NTU1Jywgb2lkX3N5bWJvbCA9 PiAnU1RJUl9BTV9PSUQnLAorICBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVu dCBhY2Nlc3MgbWV0aG9kJywKKyAgYW1uYW1lID0+ICdzdGlyJywgYW1oYW5kbGVyID0+ICdzdGly aGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19vcGNsYXNzLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5k YXQKaW5kZXggNGE5NjI0ODAyYWEuLjYyMjdjNTY1OGZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bj bGFzcy5kYXQKQEAgLTQ4OCw0ICs0ODgsOCBAQAogCiAjIG5vIGJyaW4gb3BjbGFzcyBmb3IgdGhl IGdlb21ldHJpYyB0eXBlcyBleGNlcHQgYm94CiAKKyMgYWxsb3cgYW55IHR5cGVzIGZvciBTVElS Cit7IG9wY21ldGhvZCA9PiAnc3RpcicsIG9pZF9zeW1ib2wgPT4gJ0FOWV9TVElSX09QU19PSUQn LCBvcGNuYW1lID0+ICdzdGlyX29wcycsCisgIG9wY2ZhbWlseSA9PiAnc3Rpci9hbnlfb3BzJywg b3BjaW50eXBlID0+ICdhbnknfSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGZhbWlseS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdApp bmRleCBmN2RjYjk2YjQzYy4uODM4YWQzMmM5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1p bHkuZGF0CkBAIC0zMDQsNSArMzA0LDcgQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFt ZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCiB7IG9pZCA9PiAnNjE1OCcsCiAgIG9wZm1ldGhvZCA9 PiAnZ2lzdCcsIG9wZm5hbWUgPT4gJ211bHRpcmFuZ2Vfb3BzJyB9LAoreyBvaWQgPT4gJzU1NTgn LAorICBvcGZtZXRob2QgPT4gJ3N0aXInLCBvcGZuYW1lID0+ICdhbnlfb3BzJyB9LAogCiBdCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2MmJlYjcxZGEyOC4uZjA1YTVlZWNkZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtOTM1LDYgKzkzNSwxMCBAQAogICBwcm9uYW1lID0+ICdi cmluaGFuZGxlcicsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAnaW5kZXhf YW1faGFuZGxlcicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCiAgIHByb3NyYyA9PiAnYnJp bmhhbmRsZXInIH0sCit7IG9pZCA9PiAnNTU1NicsIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4 IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QgaGFuZGxlcicsCisgIHByb25hbWUgPT4gJ3N0aXJo YW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9o YW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKKyAgcHJvc3JjID0+ICdzdGlyaGFu ZGxlcicgfSwKIHsgb2lkID0+ICczOTUyJywgZGVzY3IgPT4gJ2JyaW46IHN0YW5kYWxvbmUgc2Nh biBuZXcgdGFibGUgcGFnZXMnLAogICBwcm9uYW1lID0+ICdicmluX3N1bW1hcml6ZV9uZXdfdmFs dWVzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5 cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCA1YjZjYWRiNWE2Yy4uMzg1MGRkZTRhZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC0xODIsMTIgKzE4MiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQlCcm9rZW5I b3RDaGFpbgkJZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/CiAgKgkJU3VtbWFy aXppbmcJCQlpcyBpdCBhIHN1bW1hcml6aW5nIGluZGV4PwogICoJCVBhcmFsbGVsV29ya2VycwkJ IyBvZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQorICoJCUF1eGlsaWFyeQkJ CSMgaW5kZXgtaGVscGVyIGZvciBjb25jdXJyZW50IGJ1aWxkPwogICoJCUFtCQkJCQlPaWQgb2Yg aW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0K ICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAq Ci0gKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29y a2VycyBhcmUgdXNlZCBvbmx5Ci0gKiBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVu dGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhv dENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycworICogYXJlIHVzZWQg b25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90 aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJ bmZvCkBAIC0yMTYsNiArMjE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJYm9vbAkJ aWlfU3VtbWFyaXppbmc7CiAJYm9vbAkJaWlfV2l0aG91dE92ZXJsYXBzOwogCWludAkJCWlpX1Bh cmFsbGVsV29ya2VyczsKKwlib29sCQlpaV9BdXhpbGlhcnk7CiAJT2lkCQkJaWlfQW07CiAJdm9p ZAkgICAqaWlfQW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv aW5kZXhfc2VsZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvaW5kZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJuIHZvaWQgc3Bn Y29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlTZWxlY3Rpdml0 eSAqaW5kZXhTZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCiAJ CQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0ZXN0aW1hdGUo c3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgs CisJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhTdGFydHVwQ29z dCwKKwkJCQkJCQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rpdml0eSAqaW5k ZXhTZWxlY3Rpdml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCisJCQkJCQkJ ZG91YmxlICppbmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0ZShzdHJ1Y3Qg UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKIAkJCQkJ CQlkb3VibGUgbG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYW11dGlscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0Cmlu ZGV4IDdhYjYxMTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ft dXRpbHMub3V0CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHByb3AsIHBnX2lu ZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwgY2FuX2V4Y2x1 ZGUgICB8IHQKICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGJvZ3VzICAg ICAgICAgfCAKLSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBmCisgc3RpciAg IHwgY2FuX3VuaXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwgdAorIHN0aXIg ICB8IGNhbl9leGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8IHQKKyBzdGly ICAgfCBib2d1cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0aW9uYWwgY2hl Y2tzIGZvciBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNkZi4uZmMxMTZiODRhMjggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjEyMiw5ICsyMTIyLDEw IEBAIEZST00gcGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxFQ1QgMSBGUk9N IHBnX2Ftb3AgQVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IGMx Lm9wY2ZhbWlseQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNpYmxlKGMxLm9w Y2ludHlwZSwgYTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWlseSAKLS0tLS0t LS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWlseSAKKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93KQogCiAtLSBD aGVjayB0aGF0IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFuIGFzc29jaWF0 ZWQgb3BjbGFzcywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRjaGVzIG9wcmxl ZnQgKHBvc3NpYmx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0Cmlu ZGV4IGNmNDhhZTZkMGMyLi41MmRkZTU3NjgwZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0CkBAIC01MTM3LDcgKzUxMzcsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0 aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpA QCAtNTE1MSw3ICs1MTUyLDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRh YmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAg fCBJbmRleAorKDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01 MTc2LDkgKzUxNzgsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTogZXh0cmEgYXJn dW1lbnQgImJhciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAg ICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAg ICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBi bG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwg YnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAg ICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhv ZApAQCAtNTE4NywxMiArNTE4OSwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhv ZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJ bmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9k Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9y dCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsg KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0g IE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBEZXNj cmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwg VHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9u ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8 IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikg YWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBi LXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAg ICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTIwMSw3ICs1MjA0LDggQEAg TGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hh bmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhlYXBf dGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAgICAg ICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJbmRl eCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Disposition: attachment; filename="v18-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezp6 RnJvbSBmM2QyMWRlZmMzMjhjNDExOGM4NDY4YWRlODIxOTNjMmJlNjJlYjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDA3LzEyXSBBZGQgRGF0dW0gc3RvcmFnZSBzdXBwb3J0IHRvIHR1cGxlc3RvcmUK CiBFeHRlbmQgdHVwbGVzdG9yZSB0byBzdG9yZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlczoKLSBm aXhlZC1sZW5ndGggZGF0YXR5cGVzOiBzdG9yZSByYXcgYnl0ZXMgd2l0aG91dCBhIGxlbmd0aCBo ZWFkZXIKLSB2YXJpYWJsZS1sZW5ndGggZGF0YXR5cGVzOiBpbmNsdWRlIGEgbGVuZ3RoIGhlYWRl ciBhbmQgcGFkZGluZwotIGJ5LXZhbHVlIHR5cGVzOiBzdG9yZSBpbmxpbmUKClRoaXMgc3VwcG9y dCBlbmFibGVzIHVzYWdlcyB0dXBsZXN0b3JlIGZvciBub24tdHVwbGUgZGF0YSAoVElEcykgaW4g dGhlIG5leHQgY29tbWl0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5j IHwgMjcwICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc3RvcmUuaCAgICAgIHwgIDMzICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjQ0IGluc2VydGlv bnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKaW5k ZXggYzlhZWNhYjhkNjYuLjEyYWU3MDVjMDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9zb3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3Rv cmUuYwpAQCAtMSwxNiArMSwxOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdHVwbGVz dG9yZS5jCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3JhcnkgdHVwbGUgc3Rv cmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBzdG9yYWdlIG9m IHR1cGxlcyBhbmQgRGF0dW1zLgorICoKKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5 IHN0b3JhZ2Ugb2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZhbHVlcyBmb3Ig cHVycG9zZXMgc3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2gKKyAqIGZp bGVzLCBldGMuIEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBs ZXNvcnQuYzsKKyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNhbiBvbmx5IHN0 b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBIb3dldmVyLCBi ZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQKKyAqIHJl YWRpbmcgdGhlIHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4KKyAqCisg KiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1c2UgaXQgYWxs b3dzIHJhbmRvbSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24g b2YgYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5kZXJseWluZyBz Y2FuIHRvIGNvbXBsZXRpb24uCiAgKgotICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAqIGFzIE1hdGVyaWFsaXplIG5v ZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMgZXNzZW50aWFsbHkKLSAqIGEg ZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQgZG9lcyBubyBzb3J0aW5nIG9m IHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNl IG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0 IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVuY2UKLSAqIGJlZm9yZSBpdCBo YXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vy c29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3Mgd2l0aGluIHRoZSBhbHJl YWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9j ZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4KICAqIEFsc28sIGl0IGlzIHBv c3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQgcmVhZCBwb2ludGVycy4KICAq CiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlmIGl0IGV4 Y2VlZHMgdGhlCkBAIC02MSw2ICs2NCw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIK KyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIK IApAQCAtMTE1LDE2ICsxMjAsMTUgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCUJ1ZkZpbGUg ICAgKm15ZmlsZTsJCQkvKiB1bmRlcmx5aW5nIGZpbGUsIG9yIE5VTEwgaWYgbm9uZSAqLwogCU1l bW9yeUNvbnRleHQgY29udGV4dDsJCS8qIG1lbW9yeSBjb250ZXh0IGZvciBob2xkaW5nIHR1cGxl cyAqLwogCVJlc291cmNlT3duZXIgcmVzb3duZXI7CQkvKiByZXNvd25lciBmb3IgaG9sZGluZyB0 ZW1wIGZpbGVzICovCisJT2lkCQkJZGF0dW1UeXBlOwkJLyogSW52YWxpZE9pZCBvciBvaWQgb2Yg RGF0dW0ncyB0byBiZSBzdG9yZWQgKi8KKwlpbnQxNgkJZGF0dW1UeXBlTGVuOwkvKiB0eXBlbGVu IG9mIHRoYXQgRGF0dW0gKi8KKwlib29sCQlkYXR1bVR5cGVCeVZhbDsgLyogYnktdmFsdWUgb2Yg dGhhdCBhdHVtICovCiAKIAkvKgogCSAqIFRoZXNlIGZ1bmN0aW9uIHBvaW50ZXJzIGRlY291cGxl IHRoZSByb3V0aW5lcyB0aGF0IG11c3Qga25vdyB3aGF0IGtpbmQKIAkgKiBvZiB0dXBsZSB3ZSBh cmUgaGFuZGxpbmcgZnJvbSB0aGUgcm91dGluZXMgdGhhdCBkb24ndCBuZWVkIHRvIGtub3cgaXQu CiAJICogVGhleSBhcmUgc2V0IHVwIGJ5IHRoZSB0dXBsZXN0b3JlX2JlZ2luX3h4eCByb3V0aW5l cy4KIAkgKgotCSAqIChBbHRob3VnaCB0dXBsZXN0b3JlLmMgY3VycmVudGx5IG9ubHkgc3VwcG9y dHMgaGVhcCB0dXBsZXMsIEkndmUgY29waWVkCi0JICogdGhpcyBwYXJ0IG9mIHR1cGxlc29ydC5j IHNvIHRoYXQgZXh0ZW5zaW9uIHRvIG90aGVyIGtpbmRzIG9mIG9iamVjdHMKLQkgKiB3aWxsIGJl IGVhc3kgaWYgaXQncyBldmVyIG5lZWRlZC4pCi0JICoKIAkgKiBGdW5jdGlvbiB0byBjb3B5IGEg c3VwcGxpZWQgaW5wdXQgdHVwbGUgaW50byBwYWxsb2MnZCBzcGFjZS4gKE5COiB3ZQogCSAqIGFz c3VtZSB0aGF0IGEgc2luZ2xlIHBmcmVlKCkgaXMgZW5vdWdoIHRvIHJlbGVhc2UgdGhlIHR1cGxl IGxhdGVyLCBzbwogCSAqIHRoZSByZXByZXNlbnRhdGlvbiBtdXN0IGJlICJmbGF0IiBpbiBvbmUg cGFsbG9jIGNodW5rLikgc3RhdGUtPmF2YWlsTWVtCkBAIC0xNDMsMTIgKzE0NywxOCBAQCBzdHJ1 Y3QgVHVwbGVzdG9yZXN0YXRlCiAKIAkvKgogCSAqIEZ1bmN0aW9uIHRvIHJlYWQgYSBzdG9yZWQg dHVwbGUgZnJvbSB0YXBlIGJhY2sgaW50byBtZW1vcnkuICdsZW4nIGlzCi0JICogdGhlIGFscmVh ZHktcmVhZCBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBsZS4gIENyZWF0ZSBhbmQgcmV0dXJuIGEK LQkgKiBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWlsTWVtIGJ5IHRoZSBh bW91bnQgb2YgbWVtb3J5Ci0JICogc3BhY2UgY29uc3VtZWQuCisJICogdGhlIGFscmVhZHkta25v d24gKHJlYWQgb2YgY29uc3RhbnQpIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxlLgorCSAqIENy ZWF0ZSBhbmQgcmV0dXJuIGEgcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0YXRlLT5hdmFp bE1lbSBieSB0aGUKKwkgKiBhbW91bnQgb2YgbWVtb3J5IHNwYWNlIGNvbnN1bWVkLgogCSAqLwog CXZvaWQJICAgKigqcmVhZHR1cCkgKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGlu dCBsZW4pOwogCisJLyoKKwkgKiBGdW5jdGlvbiB0byBnZXQgbGVuZ2ggb2YgdHVwbGUgZnJvbSB0 YXBlLiBVc2VkIHRvIHByb3ZpZGUgJ2xlbicgYXJndW1lbnQKKwkgKiBmb3IgcmVhZHR1cCAoc2Vl IGFib3ZlKS4KKwkgKi8KKwl1bnNpZ25lZCBpbnQoKmxlbnR1cCkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgYm9vbCBlb2ZPSyk7CisKIAkvKgogCSAqIFRoaXMgYXJyYXkgaG9sZHMgcG9pbnRlcnMg dG8gdHVwbGVzIGluIG1lbW9yeSBpZiB3ZSBhcmUgaW4gc3RhdGUgSU5NRU0uCiAJICogSW4gc3Rh dGVzIFdSSVRFRklMRSBhbmQgUkVBREZJTEUgaXQncyBub3QgdXNlZC4KQEAgLTE4NSw2ICsxOTUs NyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAjZGVmaW5lIENPUFlUVVAoc3RhdGUsdHVwKQko KCooc3RhdGUpLT5jb3B5dHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVmaW5lIFdSSVRFVFVQKHN0YXRl LHR1cCkgKCgqKHN0YXRlKS0+d3JpdGV0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZpbmUgUkVBRFRV UChzdGF0ZSxsZW4pCSgoKihzdGF0ZSktPnJlYWR0dXApIChzdGF0ZSwgbGVuKSkKKyNkZWZpbmUg TEVOVFVQKHN0YXRlLGVvZk9LKQkoKCooc3RhdGUpLT5sZW50dXApIChzdGF0ZSwgZW9mT0spKQog I2RlZmluZSBMQUNLTUVNKHN0YXRlKQkJKChzdGF0ZSktPmF2YWlsTWVtIDwgMCkKICNkZWZpbmUg VVNFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtIC09IChhbXQpKQogI2RlZmluZSBG UkVFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtICs9IChhbXQpKQpAQCAtMTkzLDkg KzIwNCw5IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqCiAgKiBOT1RFUyBhYm91dCBvbi10 YXBlIHJlcHJlc2VudGF0aW9uIG9mIHR1cGxlczoKICAqCi0gKiBXZSByZXF1aXJlIHRoZSBmaXJz dCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZSB0byBiZSB0aGUgdG90YWwgc2l6ZQot ICogb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBpdHNlbGYgKHNvIGl0IGlzIG5ldmVy IHplcm8pLgotICogVGhlIHJlbWFpbmRlciBvZiB0aGUgc3RvcmVkIHR1cGxlCisgKiBJbiBjYXNl IG9mIHR1cGxlcyB3ZSB1c2UgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQgdHVwbGUK KyAqIHRvIGJlIHRoZSB0b3RhbCBzaXplIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNsdWRpbmcg aXRzZWxmCisgKiAoc28gaXQgaXMgbmV2ZXIgemVybykuIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0 b3JlZCB0dXBsZQogICogbWF5IG9yIG1heSBub3QgbWF0Y2ggdGhlIGluLW1lbW9yeSByZXByZXNl bnRhdGlvbiBvZiB0aGUgdHVwbGUgLS0tCiAgKiBhbnkgY29udmVyc2lvbiBuZWVkZWQgaXMgdGhl IGpvYiBvZiB0aGUgd3JpdGV0dXAgYW5kIHJlYWR0dXAgcm91dGluZXMuCiAgKgpAQCAtMjA2LDEw ICsyMTcsMTMgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICogc3RhdGUtPmJhY2t3YXJkIGlz IG5vdCBzZXQsIHRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIG1heSBvbWl0IHRoZSBleHRyYQogICog bGVuZ3RoIHdvcmQuCiAgKgorICogSW4gY2FzZSBvZiBEYXR1bSB3aXRoIGNvbnN0YW50IGxlbmdo dCBib3RoICJ1bnNpZ25lZCBpbnQiIGFyZSBvbW1pdHRlZC4KKyAqCiAgKiB3cml0ZXR1cCBpcyBl eHBlY3RlZCB0byB3cml0ZSBib3RoIGxlbmd0aCB3b3JkcyBhcyB3ZWxsIGFzIHRoZSB0dXBsZQog ICogZGF0YS4gIFdoZW4gcmVhZHR1cCBpcyBjYWxsZWQsIHRoZSB0YXBlIGlzIHBvc2l0aW9uZWQg anVzdCBhZnRlciB0aGUKLSAqIGZyb250IGxlbmd0aCB3b3JkOyByZWFkdHVwIG11c3QgcmVhZCB0 aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0Ci0gKiB0aGUgYmFjayBsZW5ndGggd29yZCAo aWYgcHJlc2VudCkuCisgKiBmcm9udCBsZW5ndGggd29yZCAoaWYgaXQgbm90IG9tbWl0dGVkIGxp a2UgaW4gY2FzZSBvZiBjb250YW50LXNpemUgRGF0dW0pOworICogcmVhZHR1cCBtdXN0IHJlYWQg dGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdCB0aGUgYmFjayBsZW5ndGggd29yZAorICog KGlmIHByZXNlbnQpLgogICoKICAqIFRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIGNhbiBtYWtlIHVz ZSBvZiB0aGUgdHVwbGUgZGVzY3JpcHRpb24gZGF0YQogICogc3RvcmVkIGluIHRoZSBUdXBsZXN0 b3Jlc3RhdGUgcmVjb3JkLCBpZiBuZWVkZWQuIFRoZXkgYXJlIGFsc28gZXhwZWN0ZWQKQEAgLTI0 MSwxMSArMjU1LDE2IEBAIHN0YXRpYyBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsCiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3B1dHR1cGxlX2NvbW1v bihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXBsZSk7CiBzdGF0aWMgdm9pZCBkdW1w dHVwbGVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgdHVwbGVzdG9yZV91 cGRhdGVtYXgoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgdW5zaWduZWQgaW50IGdl dGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKKworc3RhdGljIHVuc2ln bmVkIGludCBsZW50dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsK IHN0YXRpYyB2b2lkICpjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAq dHVwKTsKIHN0YXRpYyB2b2lkIHdyaXRldHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg dm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkICpyZWFkdHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2Rh dHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworc3RhdGljIHZvaWQgKmNv cHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0pOworc3RhdGlj IHZvaWQgd3JpdGV0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0p Oworc3RhdGljIHZvaWQgKnJlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5z aWduZWQgaW50IGxlbik7CiAKIC8qCiAgKgkJdHVwbGVzdG9yZV9iZWdpbl94eHgKQEAgLTI2OCw2 ICsyODcsMTIgQEAgdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oaW50IGVmbGFncywgYm9vbCBpbnRl clhhY3QsIGludCBtYXhLQnl0ZXMpCiAJc3RhdGUtPmFsbG93ZWRNZW0gPSBtYXhLQnl0ZXMgKiAo aW50NjQpIDEwMjQ7CiAJc3RhdGUtPmF2YWlsTWVtID0gc3RhdGUtPmFsbG93ZWRNZW07CiAJc3Rh dGUtPm15ZmlsZSA9IE5VTEw7CisJLyoKKwkgKiBTZXQgRGF0dW0gcmVsYXRlZCBkYXRhIHRvIGlu dmFsaWQgYnkgZGVmYXVsdC4KKwkgKi8KKwlzdGF0ZS0+ZGF0dW1UeXBlID0gSW52YWxpZE9pZDsK KwlzdGF0ZS0+ZGF0dW1UeXBlTGVuID0gIDA7CisJc3RhdGUtPmRhdHVtVHlwZUJ5VmFsID0gZmFs c2U7CiAKIAkvKgogCSAqIFRoZSBwYWxsb2MvcGZyZWUgcGF0dGVybiBmb3IgdHVwbGUgbWVtb3J5 IGlzIGluIGEgRklGTyBwYXR0ZXJuLiAgQQpAQCAtMzQ1LDYgKzM3MCwzNiBAQCB0dXBsZXN0b3Jl X2JlZ2luX2hlYXAoYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5 dGVzKQogCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9oZWFwOwogCXN0YXRlLT53cml0ZXR1cCA9 IHdyaXRldHVwX2hlYXA7CiAJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2hlYXA7CisJc3RhdGUt PmxlbnR1cCA9IGxlbnR1cF9oZWFwOworCisJcmV0dXJuIHN0YXRlOworfQorCisvKgorICogVGhl IHNhbWUgYXMgdHVwbGVzdG9yZV9iZWdpbl9oZWFwIGJ1dCBjcmVhdGUgc3RvcmUgZm9yIERhdHVt IHZhbHVlcy4KKyAqLworVHVwbGVzdG9yZXN0YXRlICoKK3R1cGxlc3RvcmVfYmVnaW5fZGF0dW0o T2lkIGRhdHVtVHlwZSwgYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4 S0J5dGVzKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqc3RhdGU7CisJaW50CQkJZWZsYWdzOworCisJ LyoKKwkgKiBUaGlzIGludGVycHJldGF0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHJhbmRvbUFjY2Vz cyBpcyBjb21wYXRpYmxlIHdpdGgKKwkgKiB0aGUgcHJlLTguMyBiZWhhdmlvciBvZiB0dXBsZXN0 b3Jlcy4KKwkgKi8KKwllZmxhZ3MgPSByYW5kb21BY2Nlc3MgPworCQkoRVhFQ19GTEFHX0JBQ0tX QVJEIHwgRVhFQ19GTEFHX1JFV0lORCkgOgorCQkoRVhFQ19GTEFHX1JFV0lORCk7CisKKwlzdGF0 ZSA9IHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGVmbGFncywgaW50ZXJYYWN0LCBtYXhLQnl0ZXMp OworCXN0YXRlLT5kYXR1bVR5cGUgPSBkYXR1bVR5cGU7CisJZ2V0X3R5cGxlbmJ5dmFsKHN0YXRl LT5kYXR1bVR5cGUsICZzdGF0ZS0+ZGF0dW1UeXBlTGVuLCAmc3RhdGUtPmRhdHVtVHlwZUJ5VmFs KTsKKworCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9kYXR1bTsKKwlzdGF0ZS0+d3JpdGV0dXAg PSB3cml0ZXR1cF9kYXR1bTsKKwlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfZGF0dW07CisJc3Rh dGUtPmxlbnR1cCA9IGxlbnR1cF9kYXR1bTsKIAogCXJldHVybiBzdGF0ZTsKIH0KQEAgLTc3Niw2 ICs4MzEsMjUgQEAgdHVwbGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBI ZWFwVHVwbGUgdHVwbGUpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8q CisgKiBMaWtlIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90IGJ1dCBmb3Igc2luZ2xlIERhdHVtLgor ICovCit2b2lkCit0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERh dHVtIGRhdHVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHN0YXRlLT5jb250ZXh0KTsKKworCS8qCisJICogQ29weSB0aGUgRGF0dW0uICAoTXVzdCBk byB0aGlzIGV2ZW4gaW4gV1JJVEVGSUxFIGNhc2UuICBOb3RlIHRoYXQKKwkgKiBDT1BZVFVQIGlu Y2x1ZGVzIFVTRU1FTSwgc28gd2UgbmVlZG4ndCBkbyB0aGF0IGhlcmUuKQorCSAqLworCWRhdHVt ID0gUG9pbnRlckdldERhdHVtKENPUFlUVVAoc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkp KTsKKworCXR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9uKHN0YXRlLCBEYXR1bUdldFBvaW50ZXIo ZGF0dW0pKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICog U2ltaWxhciB0byB0dXBsZXN0b3JlX3B1dHR1cGxlKCksIGJ1dCB3b3JrIGZyb20gdmFsdWVzICsg bnVsbHMgYXJyYXlzLgogICogVGhpcyBhdm9pZHMgYW4gZXh0cmEgdHVwbGUtY29uc3RydWN0aW9u IG9wZXJhdGlvbi4KQEAgLTEwMzAsNyArMTEwNCw3IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVw bGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJKnNob3VsZF9mcmVlID0gdHJ1 ZTsKIAkJCWlmIChmb3J3YXJkKQogCQkJewotCQkJCWlmICgodHVwbGVuID0gZ2V0bGVuKHN0YXRl LCB0cnVlKSkgIT0gMCkKKwkJCQlpZiAoKHR1cGxlbiA9IExFTlRVUChzdGF0ZSwgdHJ1ZSkpICE9 IDApCiAJCQkJewogCQkJCQl0dXAgPSBSRUFEVFVQKHN0YXRlLCB0dXBsZW4pOwogCQkJCQlyZXR1 cm4gdHVwOwpAQCAtMTA1OSw3ICsxMTMzLDcgQEAgdHVwbGVzdG9yZV9nZXR0dXBsZShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNh dGVkKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwg ZmFsc2UpOworCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBmYWxzZSk7CiAKIAkJCWlmIChyZWFk cHRyLT5lb2ZfcmVhY2hlZCkKIAkJCXsKQEAgLTEwOTAsNyArMTE2NCw3IEBAIHR1cGxlc3RvcmVf Z2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCQlBc3Nl cnQoIXN0YXRlLT50cnVuY2F0ZWQpOwogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9Ci0JCQkJdHVw bGVuID0gZ2V0bGVuKHN0YXRlLCBmYWxzZSk7CisJCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBm YWxzZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0xMTUyLDYgKzEyMjYsMjUgQEAgdHVwbGVzdG9yZV9n ZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCX0KIH0K IAorZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl LCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1bSAqcmVzdWx0 KQoreworCURhdHVtIGRhdHVtOworCSpzaG91bGRfZnJlZSA9IGZhbHNlOworCisJZGF0dW0gPSAo RGF0dW0pIHR1cGxlc3RvcmVfZ2V0dHVwbGUoc3RhdGUsIGZvcndhcmQsIHNob3VsZF9mcmVlKTsK KwlpZiAoZGF0dW0pCisJeworCQkqcmVzdWx0ID1kYXR1bTsKKwkJcmV0dXJuIHRydWU7CisJfQor CWVsc2UKKwl7CisJCSpyZXN1bHQgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCXJldHVybiBm YWxzZTsKKwl9Cit9CisKIC8qCiAgKiB0dXBsZXN0b3JlX2FkdmFuY2UgLSBleHBvcnRlZCBmdW5j dGlvbiB0byBhZGp1c3QgcG9zaXRpb24gd2l0aG91dCBmZXRjaGluZwogICoKQEAgLTE1NTYsMjUg KzE2NDksNiBAQCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKQog CXJldHVybiAoc3RhdGUtPnN0YXR1cyA9PSBUU1NfSU5NRU0pOwogfQogCi0KLS8qCi0gKiBUYXBl IGludGVyZmFjZSByb3V0aW5lcwotICovCi0KLXN0YXRpYyB1bnNpZ25lZCBpbnQKLWdldGxlbihU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQotewotCXVuc2lnbmVkIGludCBsZW47 Ci0Jc2l6ZV90CQluYnl0ZXM7Ci0KLQluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRl LT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7Ci0JaWYgKG5ieXRlcyA9PSAwKQot CQlyZXR1cm4gMDsKLQllbHNlCi0JCXJldHVybiBsZW47Ci19Ci0KLQogLyoKICAqIFJvdXRpbmVz IHNwZWNpYWxpemVkIGZvciBIZWFwVHVwbGUgY2FzZQogICoKQEAgLTE1ODUsNiArMTY1OSwxOSBA QCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKICAqIHRvIHdyaXRl IHRoYXQgc2VwYXJhdGVseS4KICAqLwogCitzdGF0aWMgdW5zaWduZWQgaW50CitsZW50dXBfaGVh cChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBs ZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0 YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAw KQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKIHN0YXRpYyB2b2lkICoK IGNvcHl0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXApCiB7CkBAIC0x NjMxLDMgKzE3MTgsOTggQEAgcmVhZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVu c2lnbmVkIGludCBsZW4pCiAJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJnR1cGxl biwgc2l6ZW9mKHR1cGxlbikpOwogCXJldHVybiB0dXBsZTsKIH0KKworLyoKKyAqIFJvdXRpbmVz IHNwZWNpYWxpemVkIGZvciBEYXR1bSBjYXNlLgorICoKKyAqIEhhbmRsZXMgYm90aCBmaXhlZCBh bmQgdmFyaWFibGUtbGVuZ3RoIERhdHVtcyBlZmZpY2llbnRseToKKyAqIC0gRml4ZWQtbGVuZ3Ro OiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAorICogLSBWYXJpYWJsZS1s ZW5ndGg6IGluY2x1ZGVzIGxlbmd0aCBwcmVmaXggKGFuZCBzdWZmaXggaWYgYmFja3dhcmQgc2Nh bikKKyAqIC0gQnktdmFsdWUgdHlwZXMgaGFuZGxlZCBpbmxpbmUgd2l0aG91dCBleHRyYSBjb3B5 aW5nCisgKi8KKworc3RhdGljIHVuc2lnbmVkIGludAorbGVudHVwX2RhdHVtKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCit7CisJdW5zaWduZWQgaW50IGxlbjsKKwlzaXplX3QJ CW5ieXRlczsKKworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCisJ aWYgKHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKQorCQlyZXR1cm4gc3RhdGUtPmRhdHVtVHlwZUxl bjsKKworCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwg c2l6ZW9mKGxlbiksIGVvZk9LKTsKKwlpZiAobmJ5dGVzID09IDApCisJCXJldHVybiAwOworCWVs c2UKKwkJcmV0dXJuIGxlbjsKK30KKworc3RhdGljIHZvaWQgKgorY29weXR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVt VHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCQlyZXR1 cm4gRGF0dW1HZXRQb2ludGVyKFBvaW50ZXJHZXREYXR1bShkYXR1bSkpOworCWVsc2UKKwl7CisJ CURhdHVtIGQgPSBkYXR1bUNvcHkoUG9pbnRlckdldERhdHVtKGRhdHVtKSwgc3RhdGUtPmRhdHVt VHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJVVNFTUVNKHN0YXRlLCBHZXRNZW1v cnlDaHVua1NwYWNlKERhdHVtR2V0UG9pbnRlcihkKSkpOworCQlyZXR1cm4gRGF0dW1HZXRQb2lu dGVyKGQpOworCX0KK30KKworc3RhdGljIHZvaWQKK3dyaXRldHVwX2RhdHVtKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIHZvaWQqIGRhdHVtKQoreworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9 IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwpCisJeworCQlBc3NlcnQo c3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApOworCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwg ZGF0dW0sIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCX0KKwllbHNlCisJeworCQlTaXplIHNpemUg PSBzdGF0ZS0+ZGF0dW1UeXBlTGVuOworCQlpZiAoc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJ CXsKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCAmc2l6ZSwgc2l6ZW9mKHNpemUpKTsK KwkJCXNpemUgPSBkYXR1bUdldFNpemUoUG9pbnRlckdldERhdHVtKGRhdHVtKSwgc3RhdGUtPmRh dHVtVHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJfQorCisJCUJ1ZkZpbGVXcml0 ZShzdGF0ZS0+bXlmaWxlLCBkYXR1bSwgc2l6ZSk7CisKKwkJLyogbmVlZCB0cmFpbGluZyBsZW5n dGggd29yZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAmJiBzdGF0ZS0+ZGF0dW1UeXBlTGVu IDwgMCkKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCAmc2l6ZSwgc2l6ZW9mKHNpemUp KTsKKworCQlGUkVFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVua1NwYWNlKGRhdHVtKSk7CisJCXBm cmVlKGRhdHVtKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkKgorcmVhZHR1cF9kYXR1bShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCUFzc2VydChzdGF0ZS0+ZGF0 dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwpCisJewor CQlEYXR1bSBkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwkJQXNzZXJ0KHN0YXRlLT5k YXR1bVR5cGVMZW4gPiAwKTsKKwkJQXNzZXJ0KGxlbiA9PSBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK KwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW0sIHN0YXRlLT5kYXR1bVR5 cGVMZW4pOworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKKwl9CisJZWxzZQorCXsK KwkJRGF0dW0gKmRhdHVtcyA9IHBhbGxvYyhsZW4pOworCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRl LT5teWZpbGUsICZkYXR1bXMsIGxlbik7CisKKwkJLyogbmVlZCB0cmFpbGluZyBsZW5ndGggd29y ZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAmJiBzdGF0ZS0+ZGF0dW1UeXBlTGVuIDwgMCkK KwkJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbikpOwor CisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoKmRhdHVtcyk7CisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz dG9yZS5oCmluZGV4IDg2NWJhN2I4MjY1Li4wMzQxYzQ3Yjg1MSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3Rv cmUuaApAQCAtMSwxNyArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdHVwbGVz dG9yZS5oCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3JhcnkgdHVwbGUgc3Rv cmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBzdG9yYWdlIG9m IHR1cGxlcyBhbmQgRGF0dW1zLgogICoKLSAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5 IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3NlcyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBu b2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBv ZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1 cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxy ZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJv Y2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCi0gKiBBbHNvLCBpdCBpcyBw b3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGluZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCisg KiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMg b3Igc2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxp emUgbm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxs eSBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNv cnRpbmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1 ZW5jZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVk LCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUg aXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRo aW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcg dG8gcHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKICAq IEEgdGVtcG9yYXJ5IGZpbGUgaXMgdXNlZCB0byBoYW5kbGUgdGhlIGRhdGEgaWYgaXQgZXhjZWVk cyB0aGUKICAqIHNwYWNlIGxpbWl0IHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLgpAQCAtMzksMTQg KzQwLDEzIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZSBUdXBsZXN0b3Jl c3RhdGU7CiAKLS8qCi0gKiBDdXJyZW50bHkgd2Ugb25seSBuZWVkIHRvIHN0b3JlIE1pbmltYWxU dXBsZXMsIGJ1dCBpdCB3b3VsZCBiZSBlYXN5Ci0gKiB0byBzdXBwb3J0IHRoZSBzYW1lIGJlaGF2 aW9yIGZvciBJbmRleFR1cGxlcyBhbmQvb3IgYmFyZSBEYXR1bXMuCi0gKi8KLQogZXh0ZXJuIFR1 cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNzLAog CQkJCQkJCQkJCQkgIGJvb2wgaW50ZXJYYWN0LAogCQkJCQkJCQkJCQkgIGludCBtYXhLQnl0ZXMp OworZXh0ZXJuIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShPaWQgZGF0 dW1UeXBlLAorCQkJCQkJCQkJCQkgYm9vbCByYW5kb21BY2Nlc3MsCisJCQkJCQkJCQkJCSBib29s IGludGVyWGFjdCwKKwkJCQkJCQkJCQkJIGludCBtYXhLQnl0ZXMpOwogCiBleHRlcm4gdm9pZCB0 dXBsZXN0b3JlX3NldF9lZmxhZ3MoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7 CiAKQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3Qo VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwKIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGUo VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKTsKIGV4dGVybiB2b2lkIHR1 cGxlc3RvcmVfcHV0dmFsdWVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIFR1cGxlRGVzYyB0ZGVz YywKIAkJCQkJCQkJIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCk7Citl eHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERh dHVtIGRhdHVtKTsKIAogZXh0ZXJuIGludAl0dXBsZXN0b3JlX2FsbG9jX3JlYWRfcG9pbnRlcihU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBpbnQgZWZsYWdzKTsKIApAQCAtNzIsNiArNzMsOCBAQCBl eHRlcm4gYm9vbCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsK IAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCQkJCQkJYm9vbCBjb3B5LCBUdXBsZVRhYmxlU2xvdCAq c2xvdCk7CitleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2dldGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIGJvb2wgZm9yd2FyZCwKKwkJCQkJCQkJYm9vbCAqc2hvdWxkX2ZyZWUsIERhdHVtICpy ZXN1bHQpOwogCiBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2FkdmFuY2UoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgYm9vbCBmb3J3YXJkKTsKIAotLSAKMi40My4wCgo= --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Disposition: attachment; filename="v18-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezr7 RnJvbSA4ODJlZTUwNWUyOTQzYzZkNmY1YmZhN2JlMWY0MTNiZDY2MDVkNWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDA4LzEyXSBVc2UgYXV4aWxpYXJ5IGluZGV4ZXMgZm9yIGNvbmN1cnJlbnQgaW5k ZXgKIG9wZXJhdGlvbnMKClJlcGxhY2UgdGhlIHNlY29uZCB0YWJsZSBmdWxsIHNjYW4gaW4gY29u Y3VycmVudCBpbmRleCBidWlsZHMgd2l0aCBhbiBhdXhpbGlhcnkgaW5kZXggYXBwcm9hY2g6Ci0g Y3JlYXRlIGEgU1RJUiAgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHNhbWUgcHJlZGljYXRlIChp ZiBleGlzdHMpIGFzIGluIG1haW4gaW5kZXgKLSB1c2UgaXQgdG8gdHJhY2sgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBtZXJnZSBhdXhpbGlhcnkgaW5kZXggd2l0aCBt YWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uIHRvIGNhdGNoIHVwIG5ldyBpbmRleCB3aXRoIGFu eSB0dXBsZXMgbWlzc2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBhdXRvbWF0aWNhbGx5IGRy b3AgYXV4aWxpYXJ5IHdoZW4gbWFpbiBpbmRleCBpcyByZWFkeQoKVG8gbWVyZ2UgbWFpbiBhbmQg YXV4aWxpYXJ5IGluZGV4ZXM6Ci0gaW5kZXhfYnVsa19kZWxldGUgY2FsbGVkIGZvciBib3RoLCBU SURzIHB1dCBpbnRvIHR1cGxlc29ydAotIGJvdGggdHVwbGVzb3J0IGFyZSBiZWluZyBzb3J0ZWQK LSBib3RoIHR1cGxlc29ydCBzY2FubmVkIHdpdGggdHdvIHBvaW50ZXJzIGxvb2tpbmcgZm9yIHRo ZSBUSURzIHByZXNlbnQgaW4gYXV4aWxpYXJ5IGluZGV4LCBidXQgYWJzZW50IGluIG1haW4gb25l Ci0gYWxsIHN1Y2ggVElEcyBhcmUgcHV0IGludG8gdHVwbGVzdG9yZQotIGFsbCBUSURzIGluIHR1 cGxlc3RvcmUgYXJlIGZldGNoZWQgdXNpbmcgdGhlIHN0cmVhbSwgdHVwbGVzdG9yZSB1c2VkIGlu IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQgdG8gcHJvdmlkZSB0 aGUgbmV4dCBwYWdlIHRvIHByZWZldGNoCi0gaWYgZmV0Y2hlZCB0dXBsZSBpcyBhbGl2ZSAtIGl0 IGlzIGluc2VydGVkIGludG8gdGhlIG1haW4gaW5kZXgKClRoaXMgZWxpbWluYXRlcyB0aGUgbmVl ZCBmb3IgYSBzZWNvbmQgZnVsbCB0YWJsZSBzY2FuIGR1cmluZyB2YWxpZGF0aW9uLCBpbXByb3Zp bmcgcGVyZm9ybWFuY2UgZXNwZWNpYWxseSBmb3IgbGFyZ2UgdGFibGVzLiBBZmZlY3RzIGJvdGgg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg b3BlcmF0aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAg ICAgfCAgMjYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8 ICAzNCArLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgIDQx ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgfCAgMTMgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICB8IDU0NSArKysrKysr KysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICB8IDI5MiArKysrKysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICB8 IDMzNyArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAg ICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgIHwg IDEyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAgICAgICAgICAgfCAgMTMg Ky0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8ICAgNCArLQog c3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAgNDIgKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgIHwgIDE3ICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgMjEgKwogMTkgZmlsZXMgY2hhbmdlZCwgMTEw NCBpbnNlcnRpb25zKCspLCAzNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXgg ZDc2OGVhMDY1YzUuLjY1Y2QxZGU1Mjk1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTYzMDUsNiAr NjMwNSwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8L2VudHJ5PgogICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciB3 cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5k PiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBm b3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0IGNhbiBwb3RlbnRp YWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBvZiBhdXhpbGlhcnkg aW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNhY3Rpb25zLgorICAg ICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50IG1vZGUuCisg ICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1Y3RuYW1lPiwgPHN0 cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFuZCA8c3RydWN0bmFt ZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzCisg ICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWlsZGluZyBpbmRleDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjM0NSwxMyArNjM1NywxMiBAQCBG Uk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgICA8L2Vu dHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbmRl eCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlczwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAgICAgIHRvIHZhbGlk YXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91cyB0d28gcGhhc2Vz LgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IG1l cmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFyZ2V0IGluZGV4Lgog ICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50IG1vZGUu Ci0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0cnVjdG5hbWU+IChz ZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFuZCA8c3RydWN0bmFt ZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRp b24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT50dXBsZXNfdG90 YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMgdG8gYmUgbWVyZ2Vk KQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0bmFtZT4gY29udGFp biB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8L2VudHJ5 PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzNjgsOCArNjM3OSw5IEBAIEZST00gcGdf c3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQ8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFuZD5SRUlOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCi0gICAg ICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMKKyAgICAgICAgd2l0 aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBtYXJraW5nIHRoZSBh dXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJF TlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5nIHRoZSBvbGQgaW5k ZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29u Y3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vyc190b3RhbDwv c3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFtZT4KICAgICAg ICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1lPiBjb250YWlu IHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXggMTQ3YThmNzU4 N2MuLmU3YTdhMTYwNzQyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKQEAgLTYyMCwx MCArNjIwLDEwIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0IHdyaXRlcy4gIFRo aXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8bGl0ZXJhbD5DT05D VVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1h bmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxl LCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBleGlzdGluZyB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBvciB1c2UgdGhlIGlu ZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRv dGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtlcworICAgIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHRhYmxlIHNjYW4g Zm9sbG93ZWQgYnkKKyAgICB2YWxpZGF0aW9uIHBoYXNlLCBhbmQgaW4gYWRkaXRpb24gaXQgbXVz dCB3YWl0IGZvciBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zCisgICAgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSBtb2RpZnkgb3IgdXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBUaHVzCisgICAg dGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRl eCBidWlsZCBhbmQgbWF5IHRha2UKICAgICBzaWduaWZpY2FudGx5IGxvbmdlciB0byBjb21wbGV0 ZS4gIEhvd2V2ZXIsIHNpbmNlIGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNv bnRpbnVlIHdoaWxlIHRoZSBpbmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZv cgogICAgIGFkZGluZyBuZXcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBP ZiBjb3Vyc2UsIHRoZSBleHRyYSBDUFUKQEAgLTYzMSwxNCArNjMxLDE0IEBAIENSRUFURSBbIFVO SVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFj ZWFibGUgY2xhc3M9CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIEluIGEgY29uY3VycmVu dCBpbmRleCBidWlsZCwgdGhlIGluZGV4IGlzIGFjdHVhbGx5IGVudGVyZWQgYXMgYW4KLSAgICA8 cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KLSAgICB0aGUgc3lzdGVtIGNhdGFsb2dz IGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gdGFibGUgc2NhbnMgb2NjdXIgaW4KLSAgICB0 d28gbW9yZSB0cmFuc2FjdGlvbnMuICBCZWZvcmUgZWFjaCB0YWJsZSBzY2FuLCB0aGUgaW5kZXgg YnVpbGQgbXVzdAorICAgIEluIGEgY29uY3VycmVudCBpbmRleCBidWlsZCwgdGhlIG1haW4gYW5k IGF1eGlsaWFyeSBpbmRleGVzIGlzIGFjdHVhbGx5CisgICAgZW50ZXJlZCBhcyBhbiA8cXVvdGU+ aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KKyAgICB0aGUgc3lzdGVtIGNhdGFsb2dzIGluIG9u ZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gcGhhc2VzIG9jY3VyIGluCisgICAgbXVsdGlwbGUgdHJh bnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggcGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0CiAgICAg d2FpdCBmb3IgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBtb2RpZmllZCB0aGUgdGFi bGUgdG8gdGVybWluYXRlLgotICAgIEFmdGVyIHRoZSBzZWNvbmQgc2NhbiwgdGhlIGluZGV4IGJ1 aWxkIG11c3Qgd2FpdCBmb3IgYW55IHRyYW5zYWN0aW9ucworICAgIEFmdGVyIHRoZSBzZWNvbmQg cGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKICAg ICB0aGF0IGhhdmUgYSBzbmFwc2hvdCAoc2VlIDx4cmVmIGxpbmtlbmQ9Im12Y2MiLz4pIHByZWRh dGluZyB0aGUgc2Vjb25kCi0gICAgc2NhbiB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2Fj dGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAorICAgIHBoYXNlIHRvIHRlcm1p bmF0ZSwgaW5jbHVkaW5nIHRyYW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBwaGFzZSBvZiBjb25jdXJy ZW50CiAgICAgaW5kZXggYnVpbGRzIG9uIG90aGVyIHRhYmxlcywgaWYgdGhlIGluZGV4ZXMgaW52 b2x2ZWQgYXJlIHBhcnRpYWwgb3IgaGF2ZQogICAgIGNvbHVtbnMgdGhhdCBhcmUgbm90IHNpbXBs ZSBjb2x1bW4gcmVmZXJlbmNlcy4KICAgICBUaGVuIGZpbmFsbHkgdGhlIGluZGV4IGNhbiBiZSBt YXJrZWQgPHF1b3RlPnZhbGlkPC9xdW90ZT4gYW5kIHJlYWR5IGZvciB1c2UsCkBAIC02NTEsMTAg KzY1MSwxMSBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJ RiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPHBhcmE+CiAgICAgSWYgYSBw cm9ibGVtIGFyaXNlcyB3aGlsZSBzY2FubmluZyB0aGUgdGFibGUsIHN1Y2ggYXMgYSBkZWFkbG9j ayBvciBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8 Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0 IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4LiBUaGlzIGluZGV4 Ci0gICAgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNhdXNlIGl0IG1p Z2h0IGJlIGluY29tcGxldGU7Ci0gICAgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBk YXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgotICAgIDxj b21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggYW4gaW5kZXggYXMg PGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxl YXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGFuZCBpdHMKKyAgICBh c3NvY2lhdGVkIGF1eGlsaWFyeSBpbmRleC4gVGhlc2UgaW5kZXhlcworICAgIHdpbGwgYmUgaWdu b3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIGluY29tcGxl dGU7CisgICAgaG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUgb3ZlcmhlYWQu IFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+CisgICAgPGNvbW1hbmQ+XGQ8L2Nv bW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQgc3VjaCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFM SUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAt NjY0LDExICs2NjUsMTIgQEAgcG9zdGdyZXM9IyBcZCB0YWIKICBjb2wgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfAogSW5kZXhlczoKICAgICAiaWR4IiBidHJlZSAoY29sKSBJ TlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8L3Byb2dyYW1saXN0 aW5nPgogCiAgICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0aG9kIGluIHN1Y2gg Y2FzZXMgaXMgdG8gZHJvcCB0aGUgaW5kZXggYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAg PGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uICAoQW5vdGhlciBw b3NzaWJpbGl0eSBpcworICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlc2Ug aW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKICAgICB0 byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPikuCiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNWIz Yzc2OTgwMGUuLjU3YzM0N2YyOTMwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5k ZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtMzY4LDkgKzM2 OCw4IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248 L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVT UUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVt IGxvY2tpbmcKICAgICBvZiB3cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNp ZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2Yg PGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2Vk LCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28g c2NhbnMgb2YgdGhlIHRhYmxlCi0gICAgZm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSBy ZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJtaW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVz ZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNl dmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2lu ZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJl cyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4CiAgICAgcmVidWlsZCBhbmQg dGFrZXMgc2lnbmlmaWNhbnRseSBsb25nZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2Fp dAogICAgIGZvciB1bmZpbmlzaGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IG1vZGlmeSB0aGUg aW5kZXguIEhvd2V2ZXIsIHNpbmNlCkBAIC0zODgsNyArMzg3LDcgQEAgUkVJTkRFWCBbICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdIHsgREEKICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJh PgotICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0aW9uIGlzIGFkZGVkIHRvIHRo ZSBjYXRhbG9nCisgICAgICAgQSBuZXcgdHJhbnNpZW50IGluZGV4IGRlZmluaXRpb24gYW5kIGFu IGF1eGlsaWFyeSBpbmRleCBhcmUgYWRkZWQgdG8gdGhlIGNhdGFsb2cKICAgICAgICA8bGl0ZXJh bD5wZ19pbmRleDwvbGl0ZXJhbD4uICBUaGlzIGRlZmluaXRpb24gd2lsbCBiZSB1c2VkIHRvIHJl cGxhY2UKICAgICAgICB0aGUgb2xkIGluZGV4LiAgQSA8bGl0ZXJhbD5TSEFSRSBVUERBVEUgRVhD TFVTSVZFPC9saXRlcmFsPiBsb2NrIGF0CiAgICAgICAgc2Vzc2lvbiBsZXZlbCBpcyB0YWtlbiBv biB0aGUgaW5kZXhlcyBiZWluZyByZWluZGV4ZWQgYXMgd2VsbCBhcyB0aGVpcgpAQCAtMzk4LDcg KzM5NywxNSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIEEgZmlyc3QgcGFzcyB0byBidWlsZCB0aGUgaW5kZXggaXMgZG9u ZSBmb3IgZWFjaCBuZXcgaW5kZXguICBPbmNlIHRoZQorICAgICAgIFRoZSBhdXhpbGlhcnkgaW5k ZXggaXMgbWFya2VkIGFzICJyZWFkeSBmb3IgaW5zZXJ0cyIsIG1ha2luZworICAgICAgIGl0IHZp c2libGUgdG8gb3RoZXIgc2Vzc2lvbnMuIFRoaXMgaW5kZXggZWZmaWNpZW50bHkgdHJhY2tzIGFs bCBuZXcKKyAgICAgICB0dXBsZXMgZHVyaW5nIHRoZSByZWluZGV4IHByb2Nlc3MuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIG5ldyBtYWluIGluZGV4IGlzIGJ1aWx0IGJ5IHNjYW5uaW5nIHRoZSB0YWJs ZS4gIE9uY2UgdGhlCiAgICAgICAgaW5kZXggaXMgYnVpbHQsIGl0cyBmbGFnIDxsaXRlcmFsPnBn X2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IGlzCiAgICAgICAgc3dpdGNoZWQgdG8gPHF1b3Rl PnRydWU8L3F1b3RlPiB0byBtYWtlIGl0IHJlYWR5IGZvciBpbnNlcnRzLCBtYWtpbmcgaXQKICAg ICAgICB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zIG9uY2UgdGhlIHRyYW5zYWN0aW9uIHRoYXQg cGVyZm9ybWVkIHRoZSBidWlsZApAQCAtNDA5LDkgKzQxNiw5IEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlbiBhIHNl Y29uZCBwYXNzIGlzIHBlcmZvcm1lZCB0byBhZGQgdHVwbGVzIHRoYXQgd2VyZSBhZGRlZCB3aGls ZSB0aGUKLSAgICAgICBmaXJzdCBwYXNzIHdhcyBydW5uaW5nLiAgVGhpcyBzdGVwIGlzIGFsc28g ZG9uZSBpbiBhIHNlcGFyYXRlCi0gICAgICAgdHJhbnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCisg ICAgICAgQSB2YWxpZGF0aW9uIHBoYXNlIG1lcmdlcyBhbnkgbWlzc2luZyBlbnRyaWVzIGZyb20g dGhlIGF1eGlsaWFyeSBpbmRleAorICAgICAgIGludG8gdGhlIG1haW4gaW5kZXgsIGVuc3VyaW5n IGFsbCBjb25jdXJyZW50IGNoYW5nZXMgYXJlIGNhcHR1cmVkLgorICAgICAgIFRoaXMgc3RlcCBp cyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbiBmb3IgZWFjaCBpbmRleC4KICAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KIApAQCAtNDI4LDcgKzQzNSw3IEBAIFJFSU5E RVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAg ICAgVGhlIG9sZCBpbmRleGVzIGhhdmUgPGxpdGVyYWw+cGdfaW5kZXguaW5kaXNyZWFkeTwvbGl0 ZXJhbD4gc3dpdGNoZWQgdG8KKyAgICAgICBUaGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBo YXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCiAg ICAgICAgPHF1b3RlPmZhbHNlPC9xdW90ZT4gdG8gcHJldmVudCBhbnkgbmV3IHR1cGxlIGluc2Vy dGlvbnMsIGFmdGVyIHdhaXRpbmcKICAgICAgICBmb3IgcnVubmluZyBxdWVyaWVzIHRoYXQgbWln aHQgcmVmZXJlbmNlIHRoZSBvbGQgaW5kZXggdG8gY29tcGxldGUuCiAgICAgICA8L3BhcmE+CkBA IC00MzYsNyArNDQzLDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlzdGl0 ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBUaGUgb2xkIGluZGV4ZXMgYXJlIGRyb3BwZWQuICBU aGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCisgICAgICAgVGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCiAgICAgICAgRVhD TFVTSVZFPC9saXRlcmFsPiBzZXNzaW9uIGxvY2tzIGZvciB0aGUgaW5kZXhlcyBhbmQgdGhlIHRh YmxlIGFyZQogICAgICAgIHJlbGVhc2VkLgogICAgICAgPC9wYXJhPgpAQCAtNDQ3LDExICs0NTQs MTEgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxl bSBhcmlzZXMgd2hpbGUgcmVidWlsZGluZyB0aGUgaW5kZXhlcywgc3VjaCBhcyBhCiAgICAgdW5p cXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5SRUlOREVY PC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1 b3RlPmludmFsaWQ8L3F1b3RlPiBuZXcgaW5kZXggaW4gYWRkaXRpb24gdG8KLSAgICB0aGUgcHJl LWV4aXN0aW5nIG9uZS4gVGhpcyBpbmRleCB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1 cnBvc2VzCi0gICAgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIGl0IHdp bGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUg YmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGFuZCBpdHMgYXV4aWxp YXJ5IGluZGV4IGluIGFkZGl0aW9uIHRvCisgICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoZXNl IGluZGV4ZXMgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcworICAgIGJlY2F1 c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIHRoZXkgd2lsbCBzdGlsbCBjb25z dW1lIHVwZGF0ZQogICAgIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0 aW9uPiA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydAotICAgIHN1Y2gg YW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgc3VjaCBpbmRleGVz IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0 Z3Jlcz0jIFxkIHRhYgpAQCAtNDYyLDEyICs0NjksMTQgQEAgcG9zdGdyZXM9IyBcZCB0YWIKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkKICAgICAiaWR4X2NjbmV3IiBidHJlZSAoY29s KSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECisKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAKICAgICBJZiB0aGUgaW5kZXggbWFya2VkIDxsaXRlcmFsPklOVkFMSUQ8L2xp dGVyYWw+IGlzIHN1ZmZpeGVkCi0gICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWw+LCB0aGVuIGl0 IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQKKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJh bCBvciA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhl IHRyYW5zaWVudCBvciBhdXhpbGlhcnkKICAgICBpbmRleCBjcmVhdGVkIGR1cmluZyB0aGUgY29u Y3VycmVudCBvcGVyYXRpb24sIGFuZCB0aGUgcmVjb21tZW5kZWQKLSAgICByZWNvdmVyeSBtZXRo b2QgaXMgdG8gZHJvcCBpdCB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKKyAg ICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIHVzaW5nIDxsaXRlcmFs PkRST1AgSU5ERVg8L2xpdGVyYWw+LAogICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFuZD5SRUlOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uCiAgICAgSWYgdGhlIGludmFsaWQgaW5kZXgg aXMgaW5zdGVhZCBzdWZmaXhlZCA8bGl0ZXJhbD5jY29sZDwvbGl0ZXJhbD4sCiAgICAgaXQgY29y cmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBkcm9wcGVk OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggODI5ZGFkMTE5NGUuLjZmNzE4ZmVi NmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM3NSw2ICszNzUsMTEgQEAg Y29uc3RyYWludCBvbiB3aGljaCB1cGRhdGVzIGNhbiBiZSBIT1QuICBPdGhlciB0cmFuc2FjdGlv bnMgbXVzdCBpbmNsdWRlCiBzdWNoIGFuIGluZGV4IHdoZW4gZGV0ZXJtaW5pbmcgSE9ULXNhZmV0 eSBvZiB1cGRhdGVzLCBldmVuIHRob3VnaCB0aGV5CiBtdXN0IGlnbm9yZSBpdCBmb3IgYm90aCBp bnNlcnRpb24gYW5kIHNlYXJjaGluZyBwdXJwb3Nlcy4KIAorQWxzbywgc3BlY2lhbCBhdXhpbGlh cnkgaW5kZXggaXMgY3JlYXRlZCB0aGUgc2FtZSB3YXkuIEl0IG1hcmtlZCBhcworInJlYWR5IGZv ciBpbnNlcnRzIiB3aXRob3V0IGFueSBhY3R1YWwgdGFibGUgc2Nhbi4gSXRzIHB1cnBvc2UgaXMg Y29sbGVjdAorbmV3IHR1cGxlcyBpbnNlcnRlZCBpbnRvIHRhYmxlIHdoaWxlIG91ciB0YXJnZXQg aW5kZXggaXMgc3RpbGwgIm5vdCByZWFkeQorZm9yIGluc2VydHMiCisKIFdlIG11c3QgZG8gdGhp cyB0byBhdm9pZCBtYWtpbmcgaW5jb3JyZWN0IGluZGV4IGVudHJpZXMuICBGb3IgZXhhbXBsZSwK IHN1cHBvc2Ugd2UgYXJlIGJ1aWxkaW5nIGFuIGluZGV4IG9uIGNvbHVtbiBYIGFuZCB3ZSBtYWtl IGFuIGluZGV4IGVudHJ5IGZvcgogYSBub24tSE9UIHR1cGxlIHdpdGggWD0xLiAgVGhlbiBzb21l IG90aGVyIGJhY2tlbmQsIHVuYXdhcmUgdGhhdCBYIGlzIGFuCkBAIC0zOTQsMTAgKzM5OSwxMCBA QCBBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9mIHRoZSBI T1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQogdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUgbGl2ZSB0 dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxsIG5v dCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KLXdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9ucyB3 aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCi1hIHNlY29uZCByZWZlcmVu Y2Ugc25hcHNob3QgYW5kIHZhbGlkYXRlIHRoZSBpbmRleC4gIFRoaXMgc2VhcmNoZXMgZm9yCi10 dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25l cy4gIEFnYWluLAotdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8g SE9ULWNoYWluIHJvb3QgVElEcywgYnV0Cit3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMg d2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gdmFsaWRhdGUKK3RoZSBpbmRleC4gIFRo aXMgc2VhcmNoZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4IGluIGF1eGlsaWFy eQoraW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMgaWYgdGhlbSB2aXNpYmxlIHRv IHJlZmVyZW5jZSBzbmFwc2hvdC4KK0FnYWluLCB0aGUgaW5kZXggZW50cmllcyBoYXZlIHRvIGhh dmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQKIHRoZSB2YWx1ZSB0byBi ZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2Fp dCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNvdWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRl ciB0aGFuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAwZWFh NGRmNTU4Mi4uNjMzYmMyNDVlMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgpAQCAtMTc4MSwyNDMgKzE3ODIsNDA1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2Fu KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlyZXR1cm4gcmVsdHVwbGVzOwogfQogCisvKgorICog Q2FsY3VsYXRlIHNldCBkaWZmZXJlbmNlIChyZWxhdGl2ZSBjb21wbGVtZW50KSBvZiBtYWluIGFu ZCBhdXgKKyAqIHNldHMuCisgKgorICogQWxsIHJlY29yZHMgd2hpY2ggYXJlIHByZXNlbnQgaW4g YXV4bGlhcnkgdHVwbGVzb3J0IGJ1dCBub3QgaXMKKyAqIG1haW4gYXJlIGFkZGVkIHRvIHRoZSBz dG9yZS4KKyAqCisgKiBJbiBzZXQgdGhlb3J5IG5vdGF0aW9uIHN0b3JlID0gYXV4IC0gbWFpbiBv ciBzdG9yZSA9IGF1eCAvIG1haW4uCisgKgorICogcmV0dXJucyBudW1iZXIgb2YgaXRlbXMgYWRk ZWQgdG8gc3RvcmUKKyAqLworc3RhdGljIGludAoraGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxl c29ydF9kaWZmZXJlbmNlKFR1cGxlc29ydHN0YXRlICAqbWFpbiwKKwkJCQkJCQkJCQkgICBUdXBs ZXNvcnRzdGF0ZSAgKmF1eCwKKwkJCQkJCQkJCQkgICBUdXBsZXN0b3Jlc3RhdGUgKnN0b3JlKQor eworCWludAkJCQludW0gPSAwOworCS8qIHN0YXRlIHZhcmlhYmxlcyBmb3IgdGhlIG1lcmdlICov CisJSXRlbVBvaW50ZXIgCWluZGV4Y3Vyc29yID0gTlVMTCwKKwkJCQkJYXV4aW5kZXhjdXJzb3Ig PSBOVUxMOworCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkLAorCQkJCQlhdXhkZWNvZGVkOworCWJv b2wJCQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZSwKKwkJCQkJYXV4dHVwbGVzb3J0X2VtcHR5ID0g ZmFsc2U7CisKKwkvKiBJbml0aWFsaXplIHBvaW50ZXJzLiAqLworCUl0ZW1Qb2ludGVyU2V0SW52 YWxpZCgmZGVjb2RlZCk7CisJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZhdXhkZWNvZGVkKTsKKwor CS8qCisJICogTWFpbiBsb29wOiB3ZSBzdGVwIHRocm91Z2ggdGhlIGF1eGlsaWFyeSBzb3J0IChh dXhTdGF0ZS0+dHVwbGVzb3J0KSwKKwkgKiB3aGljaCBob2xkcyBUSURzIHRoYXQgbXVzdCBjb21w YXJlZCB0byB0aG9zZSBmcm9tIHRoZSAibWFpbiIgc29ydAorCSAqIChzdGF0ZS0+dHVwbGVzb3J0 KS4KKwkgKi8KKwl3aGlsZSAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwl7CisJCURhdHVtCQl0c192 YWw7CisJCWJvb2wJCXRzX2lzbnVsbDsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkv KgorCQkqIEF0dGVtcHQgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20gdGhlIGF1eGlsaWFyeSBz b3J0LiBJZiBpdCdzCisJCSogZW1wdHksIHdlIHNldCBhdXhpbmRleGN1cnNvciB0byBOVUxMLgor CQkqLworCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVzb3J0X2dldGRhdHVtKGF1eCwgdHJ1 ZSwKKwkJCQkJCQkJCQkJCSBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKKwkJCQkJCQkJCQkJ CSBOVUxMKTsKKwkJQXNzZXJ0KGF1eHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKwkJ aWYgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCWl0ZW1wdHJfZGVjb2RlKCZhdXhkZWNv ZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOworCQkJYXV4aW5kZXhjdXJzb3IgPSAmYXV4ZGVj b2RlZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWF1eGluZGV4Y3Vyc29yID0gTlVMTDsKKwkJfQor CisJCS8qCisJCSogSWYgdGhlIGF1eGlsaWFyeSBzb3J0IGlzIG5vdCB5ZXQgZW1wdHksIHdlIG5v dyB0cnkgdG8gc3luY2hyb25pemUKKwkJKiB0aGUgIm1haW4iIHNvcnQgY3Vyc29yIChpbmRleGN1 cnNvcikgd2l0aCBhdXhpbmRleGN1cnNvci4gV2UgYWR2YW5jZQorCQkqIHRoZSBtYWluIHNvcnQg Y3Vyc29yIHVudGlsIHdlJ3ZlIHJlYWNoZWQgb3IgcGFzc2VkIHRoZSBhdXhpbGlhcnkgVElELgor CQkqLworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJLyoKKwkJCSAqIE1vdmUg dGhlIG1haW4gc29ydCBmb3J3YXJkIHdoaWxlOgorCQkJICogICAoMSkgSXQncyBub3QgZXhoYXVz dGVkICh0dXBsZXNvcnRfZW1wdHkgPT0gZmFsc2UpLCBhbmQKKwkJCSAqICAgKDIpIEVpdGhlciBp bmRleGN1cnNvciBpcyBOVUxMIChmaXJzdCBpdGVyYXRpb24pIG9yCisJCQkgKiAgICAgICBpbmRl eGN1cnNvciA8IGF1eGluZGV4Y3Vyc29yIGluIFRJRCBvcmRlci4KKwkJCSAqLworCQkJd2hpbGUg KCF0dXBsZXNvcnRfZW1wdHkgJiYgKGluZGV4Y3Vyc29yID09IE5VTEwgfHwgLyogbnVsbCBvbiBm aXJzdCB0aW1lIGhlcmUgKi8KKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwg YXV4aW5kZXhjdXJzb3IpIDwgMCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBHZXQgdGhlIG5leHQg VElEIGZyb20gdGhlIG1haW4gc29ydC4gSWYgaXQncyBlbXB0eSwKKwkJCQkgKiB3ZSBzZXQgaW5k ZXhjdXJzb3IgdG8gTlVMTC4KKwkJCQkgKi8KKwkJCQl0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVz b3J0X2dldGRhdHVtKG1haW4sIHRydWUsCisJCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwg JnRzX2lzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIE5VTEwpOworCQkJCUFzc2VydCh0dXBsZXNvcnRf ZW1wdHkgfHwgIXRzX2lzbnVsbCk7CisKKwkJCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKKwkJCQl7 CisJCQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOwor CQkJCQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJ CQlpbmRleGN1cnNvciA9IE5VTEw7CisJCQkJfQorCisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIE5vdywgaWYgZWl0aGVyOgorCQkJICogIC0gdGhlIG1h aW4gc29ydCBpcyBlbXB0eSwgb3IKKwkJCSAqICAtIGluZGV4Y3Vyc29yID4gYXV4aW5kZXhjdXJz b3IsCisJCQkgKgorCQkJICogdGhlbiBhdXhpbmRleGN1cnNvciBpZGVudGlmaWVzIGEgVElEIHRo YXQgZG9lc24ndCBhcHBlYXIgaW4KKwkJCSAqIHRoZSBtYWluIHNvcnQuIFdlIGxpa2VseSBuZWVk IHRvIGluc2VydCBpdAorCQkJICogaW50byB0aGUgdGFyZ2V0IGluZGV4IGlmIGl04oCZcyB2aXNp YmxlIGluIHRoZSBoZWFwLgorCQkJICovCisJCQlpZiAodHVwbGVzb3J0X2VtcHR5IHx8IEl0ZW1Q b2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgYXV4aW5kZXhjdXJzb3IpID4gMCkKKwkJCXsKKwkJ CQl0dXBsZXN0b3JlX3B1dGRhdHVtKHN0b3JlLCBJbnQ2NEdldERhdHVtKGl0ZW1wdHJfZW5jb2Rl KGF1eGluZGV4Y3Vyc29yKSkpOworCQkJCW51bSsrOworCQkJfQorCQl9CisJfQorCisJcmV0dXJu IG51bTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgVmFsaWRhdGVJbmRleFNjYW5TdGF0ZQoreworCVR1 cGxlc3RvcmVzdGF0ZQkJKnN0b3JlOworCUJsb2NrTnVtYmVyCQkJcHJldl9ibG9ja19udW1iZXI7 CisJT2Zmc2V0TnVtYmVyCQlwcmV2X29mZl9vZmZzZXRfbnVtYmVyOworfSBWYWxpZGF0ZUluZGV4 U2NhblN0YXRlOworCisvKgorICogVGhpcyBpcyBSZWFkU3RyZWFtQmxvY2tOdW1iZXJDQiBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBhcyBmb2xsb3dzOgorICoKKyAqIDEpIEl0IGl0ZXJhdGVz IG92ZXIgYSBzb3J0ZWQgdHVwbGVzdG9yZSwgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGFuIGVuY29k ZWQKKyAqICAgIEl0ZW1Qb2ludGVyCisgKgorICogMikgSXQgcmV0dXJucyB0aGUgY3VycmVudCBC bG9ja051bWJlciBhbmQgY29sbGVjdHMgYWxsIE9mZnNldE51bWJlcnMKKyAqICAgIGZvciB0aGF0 IGJsb2NrIGluIHBlcl9idWZmZXJfZGF0YS4KKyAqCisgKiAzKSBPbmNlIHRoZSBjb2RlIGVuY291 bnRlcnMgYSBuZXcgQmxvY2tOdW1iZXIsIGl0IHN0b3BzIHJlYWRpbmcgbW9yZQorICogICAgb2Zm c2V0cyBhbmQgc2F2ZXMgdGhlIE9mZnNldE51bWJlciBvZiB0aGUgbmV3IGJsb2NrIGZvciB0aGUg bmV4dCBjYWxsLgorICoKKyAqIDQpIFRoZSBsaXN0IG9mIG9mZnNldHMgZm9yIGEgYmxvY2sgaXMg YWx3YXlzIHRlcm1pbmF0ZWQgd2l0aCBJbnZhbGlkT2Zmc2V0TnVtYmVyLgorICoKKyAqIFRoaXMg ZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgcmVwZWF0ZWRseSBjYWxsZWQsIGVhY2ggdGltZSBy ZXR1cm5pbmcKKyAqIHRoZSBuZXh0IGJsb2NrIGFuZCBpdHMgY29ycmVzcG9uZGluZyBzZXQgb2Yg b2Zmc2V0cy4KKyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2Nhbl9yZWFkX3N0cmVhbV9uZXh0KAorCQkJCQkJCQkgIFJlYWRTdHJlYW0gKnN0cmVhbSwKKwkJ CQkJCQkJICB2b2lkICp2b2lkX2NhbGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJICB2b2lk ICp2b2lkX3Blcl9idWZmZXJfZGF0YQorCQkJCQkJCQkgICkKK3sKKwlib29sIHNob3VkX2ZyZWU7 CisJRGF0dW0gZGF0dW07CisJQmxvY2tOdW1iZXIgcmVzdWx0ID0gSW52YWxpZEJsb2NrTnVtYmVy OworCWludCBpID0gMDsKKworCS8qCisJICogUmV0cmlldmUgdGhlIHNwZWNpYWxpemVkIGNhbGxi YWNrIHN0YXRlIGFuZCB0aGUgb3V0cHV0IGJ1ZmZlci4KKwkgKiBjYWxsYmFja19wcml2YXRlX2Rh dGEga2VlcHMgdHJhY2sgb2YgdGhlIHByZXZpb3VzIGJsb2NrIGFuZCBvZmZzZXQKKwkgKiBmcm9t IGEgcHJpb3IgaW52b2NhdGlvbiwgaWYgYW55LgorCSAqLworCVZhbGlkYXRlSW5kZXhTY2FuU3Rh dGUgKmNhbGxiYWNrX3ByaXZhdGVfZGF0YSA9IHZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOwor CU9mZnNldE51bWJlciAqcGVyX2J1ZmZlcl9kYXRhID0gdm9pZF9wZXJfYnVmZmVyX2RhdGE7CisK KwkvKgorCSAqIElmIHRoZXJlIGlzIGEgImxlZnRvdmVyIiBvZmZzZXQgbnVtYmVyIGZyb20gdGhl IHByZXZpb3VzIGludm9jYXRpb24sCisJICogaXQgbWVhbnMgd2UgaGFkIHN3aXRjaGVkIHRvIGEg bmV3IGJsb2NrIGluIHRoZSBtaWRkbGUgb2YgdGhlIGxhc3QgY2FsbC4KKwkgKiBXZSBwbGFjZSB0 aGF0IGxlZnRvdmVyIG9mZnNldCBudW1iZXIgaW50byB0aGUgYnVmZmVyIGZpcnN0LgorCSAqLwor CWlmIChjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXIgIT0gSW52 YWxpZE9mZnNldE51bWJlcikKKwl7CisJCUFzc2VydChjYWxsYmFja19wcml2YXRlX2RhdGEtPnBy ZXZfYmxvY2tfbnVtYmVyICE9IEludmFsaWRCbG9ja051bWJlcik7CisJCS8qCisJCSAqICdyZXN1 bHQnIGlzIHRoZSBibG9jayBudW1iZXIgdG8gcmV0dXJuLiBXZSBzZXQgaXQgdG8gdGhlIGJsb2Nr CisJCSAqIGZyb20gdGhlIHByZXZpb3VzIGxlZnRvdmVyIG9mZnNldC4KKwkJICovCisJCXJlc3Vs dCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXI7CisJCS8qIFBsYWNl IGxlZnRvdmVyIG9mZnNldCBudW1iZXIgaW4gdGhlIG91dHB1dCBidWZmZXIuICovCisJCXBlcl9i dWZmZXJfZGF0YVtpKytdID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRf bnVtYmVyOworCQkvKgorCQkgKiBDbGVhciB0aGUgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBzbyBp dCB3b24ndCBiZSByZXVzZWQgdW5sZXNzCisJCSAqIHdlIGVuY291bnRlciBhbm90aGVyIGJsb2Nr IGNoYW5nZS4KKwkJICovCisJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0 X251bWJlciA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJfQorCisJLyoKKwkgKiBSZWFkIGZyb20g dGhlIHR1cGxlc3RvcmUgdW50aWwgd2UgZWl0aGVyIHJ1biBvdXQgb2YgdHVwbGVzIG9yIHdlCisJ ICogZW5jb3VudGVyIGEgYmxvY2sgY2hhbmdlLiBGb3IgZWFjaCB0dXBsZToKKwkgKgorCSAqICAg MSkgRGVjb2RlIGl0cyBibG9jay9vZmZzZXQgZnJvbSB0aGUgRGF0dW0uCisJICogICAyKSBJZiBp dCdzIHRoZSBmaXJzdCB0aW1lIGluIHRoaXMgY2FsbCAocHJldl9ibG9ja19udW1iZXIgPT0gSW52 YWxpZEJsb2NrTnVtYmVyKSwKKwkgKiAgICAgIGluaXRpYWxpemUgcHJldl9ibG9ja19udW1iZXIu CisJICogICAzKSBJZiB0aGUgYmxvY2sgbnVtYmVyIG1hdGNoZXMgdGhlIGN1cnJlbnQgYmxvY2ss IGNvbGxlY3QgdGhlIG9mZnNldC4KKwkgKiAgIDQpIElmIHRoZSBibG9jayBudW1iZXIgZGlmZmVy cywgc2F2ZSB0aGF0IG9mZnNldCBhcyBsZWZ0b3ZlciBhbmQgYnJlYWsKKwkgKiAgICAgIHNvIHRo YXQgdGhlIG5leHQgY2FsbCBjYW4gaGFuZGxlIHRoZSBuZXcgYmxvY2suCisJICovCisJd2hpbGUg KHR1cGxlc3RvcmVfZ2V0ZGF0dW0oY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5zdG9yZSwgdHJ1ZSwg JnNob3VkX2ZyZWUsICZkYXR1bSkpCisJeworCQlCbG9ja051bWJlciBuZXh0X2Jsb2NrX251bWJl cjsKKwkJSXRlbVBvaW50ZXJEYXRhIG5leHRfZGF0YTsKKworCQkvKiBEZWNvZGUgdGhlIGRhdHVt IGludG8gYW4gSXRlbVBvaW50ZXIgKGJsb2NrICsgb2Zmc2V0KS4gKi8KKwkJaXRlbXB0cl9kZWNv ZGUoJm5leHRfZGF0YSwgRGF0dW1HZXRJbnQ2NChkYXR1bSkpOworCQluZXh0X2Jsb2NrX251bWJl ciA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJLyoKKwkJICog SWYgd2UgaGF2ZW4ndCBzZXQgYSBibG9jayBudW1iZXIgeWV0IHRoaXMgcm91bmQsIGluaXRpYWxp emUgaXQKKwkJICogdXNpbmcgdGhlIGZpcnN0IHR1cGxlIHdlIHJlYWQuCisJCSAqLworCQlpZiAo Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlkQmxvY2tO dW1iZXIpCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4 dF9ibG9ja19udW1iZXI7CisKKwkJLyoKKwkJICogQWx3YXlzIHNldCB0aGUgcmVzdWx0IHRvIGJl IHRoZSAiY3VycmVudCIgYmxvY2sgbnVtYmVyCisJCSAqIHdlIGFyZSBmaWxsaW5nIG9mZnNldHMg Zm9yLgorCQkgKi8KKwkJcmVzdWx0ID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2Nr X251bWJlcjsKKworCQkvKgorCQkgKiBJZiB0aGlzIHR1cGxlIGlzIGZyb20gdGhlIHNhbWUgYmxv Y2ssIGp1c3Qgc3RvcmUgaXRzIG9mZnNldAorCQkgKiBpbiBvdXIgcGVyX2J1ZmZlcl9kYXRhIGFy cmF5LgorCQkgKi8KKwkJaWYgKG5leHRfYmxvY2tfbnVtYmVyID09IGNhbGxiYWNrX3ByaXZhdGVf ZGF0YS0+cHJldl9ibG9ja19udW1iZXIpCisJCXsKKwkJCXBlcl9idWZmZXJfZGF0YVtpKytdID0g SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8qIEZyZWUgdGhl IGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBmcmVlKERhdHVt R2V0UG9pbnRlcihkYXR1bSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIHRo ZSBibG9jayBqdXN0IGNoYW5nZWQsIHN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIG5ldyBibG9jawor CQkJICogYXMgbGVmdG92ZXIgZm9yIHRoZSBuZXh0IGludm9jYXRpb24gYW5kIGJyZWFrIG91dC4K KwkJCSAqLworCQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9IG5l eHRfYmxvY2tfbnVtYmVyOworCQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZz ZXRfbnVtYmVyID0gIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJ CQkvKiBGcmVlIHRoZSBkYXR1bSBpZiBuZWVkZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJ CQlwZnJlZShEYXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKworCQkJLyogQnJlYWsgdG8gbGV0IHRo ZSBuZXh0IGNhbGwgaGFuZGxlIHRoZSBuZXcgYmxvY2suICovCisJCQlicmVhazsKKwkJfQorCX0K KworCS8qCisJICogVGVybWluYXRlIHRoZSBsaXN0IG9mIG9mZnNldHMgZm9yIHRoaXMgYmxvY2sg d2l0aCBhbiBJbnZhbGlkT2Zmc2V0TnVtYmVyLgorCSAqLworCXBlcl9idWZmZXJfZGF0YVtpXSA9 IEludmFsaWRPZmZzZXROdW1iZXI7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIHZvaWQK IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgICBJbmRleEluZm8gKmluZGV4SW5m bywKIAkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0 YXRlICpzdGF0ZSkKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkg ICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbjsK LQlIZWFwU2NhbkRlc2MgaHNjYW47Ci0JSGVhcFR1cGxlCWhlYXBUdXBsZTsKIAlEYXR1bQkJdmFs dWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwotCUV4 cHJTdGF0ZSAgKnByZWRpY2F0ZTsKLQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlFU3RhdGUJICAg KmVzdGF0ZTsKLQlFeHByQ29udGV4dCAqZWNvbnRleHQ7Ci0JQmxvY2tOdW1iZXIgcm9vdF9ibGtu byA9IEludmFsaWRCbG9ja051bWJlcjsKLQlPZmZzZXROdW1iZXIgcm9vdF9vZmZzZXRzW01heEhl YXBUdXBsZXNQZXJQYWdlXTsKLQlib29sCQlpbl9pbmRleFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 Ci0JQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0KLQkv KiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLwotCUl0ZW1Qb2ludGVyIGluZGV4Y3Vy c29yID0gTlVMTDsKLQlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZDsKLQlib29sCQl0dXBsZXNvcnRf ZW1wdHkgPSBmYWxzZTsKKworCVR1cGxlVGFibGVTbG90ICAqc2xvdDsKKwlFU3RhdGUJCQkqZXN0 YXRlOworCUV4cHJDb250ZXh0CQkqZWNvbnRleHQ7CisJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0 cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKKworCWludAkJCQludW1f dG9fY2hlY2s7CisJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXNfZm9yX2NoZWNrOworCVZhbGlkYXRl SW5kZXhTY2FuU3RhdGUgY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJQnVmZmVyIGJ1ZjsKKwlP ZmZzZXROdW1iZXIqIHR1cGxlczsKKwlSZWFkU3RyZWFtICpyZWFkX3N0cmVhbTsKKworCS8qIFVz ZSAxMCUgb2YgbWVtb3J5IGZvciB0dXBsZSBzdG9yZS4gKi8KKwlpbnQJCXN0b3JlX3dvcmtfbWVt X3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21lbSAvIDEwOworCisJLyoKKwkgKiBFbmNvZGUgVElE cyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRp bmcKKwkgKiBpdGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIs IHByaW1hcmlseSBiZWNhdXNlIFRJRAorCSAqIGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBv biBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGludDggaXMKKwkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1v c3QgcGxhdGZvcm1zLgorCSAqLworCXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdp bl9kYXR1bShJTlQ4T0lELCBmYWxzZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOwogCiAJ LyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJICovCiAJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxh dGlvbi0+cmRfcmVsLT5yZWxhbSkpOwogCi0JLyoKLQkgKiBOZWVkIGFuIEVTdGF0ZSBmb3IgZXZh bHVhdGlvbiBvZiBpbmRleCBleHByZXNzaW9ucyBhbmQgcGFydGlhbC1pbmRleAotCSAqIHByZWRp Y2F0ZXMuICBBbHNvIGEgc2xvdCB0byBob2xkIHRoZSBjdXJyZW50IHR1cGxlLgotCSAqLworCW51 bV90b19jaGVjayA9IGhlYXBhbV9pbmRleF92YWxpZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShz dGF0ZS0+dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkgYXV4U3RhdGUtPnR1cGxlc29ydCwKKwkJ CQkJCQkJCQkJCQkJIHR1cGxlc19mb3JfY2hlY2spOworCisJLyogSXQgaXMgb3VyIHJlc3BvbnNp YmlsaXR5IHRvIGNsb3NlIHR1cGxlIHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8KKwl0dXBsZXNv cnRfZW5kKHN0YXRlLT50dXBsZXNvcnQpOworCXR1cGxlc29ydF9lbmQoYXV4U3RhdGUtPnR1cGxl c29ydCk7CisKKwlzdGF0ZS0+dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29ydCA9IE5VTEw7 CisKIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJU dXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xv dChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCi0JCQkJCQkJCQkmVFRTT3BzSGVhcFR1 cGxlKTsKKwkJCQkJCQkJCSZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOwogCiAJLyogQXJyYW5nZSBm b3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJ ZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24g c3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJl UXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwljYWxsYmFja19wcml2YXRl X2RhdGEucHJldl9ibG9ja19udW1iZXIgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJY2FsbGJhY2tf cHJpdmF0ZV9kYXRhLnN0b3JlID0gdHVwbGVzX2Zvcl9jaGVjazsKKwljYWxsYmFja19wcml2YXRl X2RhdGEucHJldl9vZmZfb2Zmc2V0X251bWJlciA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQkv KgotCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1 c3QgdGhvc2UgdHVwbGVzCi0JICogc2F0aXNmeWluZyB0aGUgcGFzc2VkLWluIHJlZmVyZW5jZSBz bmFwc2hvdC4gIFdlIG11c3QgZGlzYWJsZSBzeW5jc2NhbgotCSAqIGhlcmUsIGJlY2F1c2UgaXQn cyBjcml0aWNhbCB0aGF0IHdlIHJlYWQgZnJvbSBibG9jayB6ZXJvIGZvcndhcmQgdG8KLQkgKiBt YXRjaCB0aGUgc29ydGVkIFRJRHMuCi0JICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9uICovCi0JCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KLQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCi0JCQkJCQkJCSBOVUxM LAkvKiBzY2FuIGtleSAqLwotCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVn eSBPSyAqLwotCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLwotCQkJCQkJCQkg ZmFsc2UpOwotCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKKwlyZWFkX3N0cmVhbSA9IHJl YWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwgUkVBRF9T VFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCQkJCQkgYnN0cmF0ZWd5LAorCQkJCQkJCQkJ CQkJCQkgaGVhcFJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJCQkJCSBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0LAorCQkJCQkJCQkJCQkJCQkgJmNh bGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJCQkJIChNYXhIZWFwVHVwbGVzUGVyUGFn ZSArIDEpICogc2l6ZW9mKE9mZnNldE51bWJlcikpOwogCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKLQkJCQkJCQkJIGhzY2FuLT5yc19u YmxvY2tzKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9UVVBMRVNfVE9UQUwsIG51bV90b19jaGVjayk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIDApOwogCi0JLyoKLQkgKiBTY2Fu IGFsbCB0dXBsZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90LgotCSAqLwotCXdoaWxlICgoaGVhcFR1 cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkK Kwl3aGlsZSAoKGJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHJlYWRfc3RyZWFtLCAodm9p ZCopICZ0dXBsZXMpKSAhPSBJbnZhbGlkQnVmZmVyKQogCXsKLQkJSXRlbVBvaW50ZXIgaGVhcGN1 cnNvciA9ICZoZWFwVHVwbGUtPnRfc2VsZjsKLQkJSXRlbVBvaW50ZXJEYXRhIHJvb3RUdXBsZTsK LQkJT2Zmc2V0TnVtYmVyIHJvb3Rfb2ZmbnVtOworCQlIZWFwVHVwbGVEYXRhCWhlYXBfdHVwbGVf ZGF0YVtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJCWludCBpOworCQlPZmZzZXROdW1iZXIgb2Zm OworCQlCbG9ja051bWJlciBibG9ja19udW1iZXI7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NL X1NIQVJFKTsKKwkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKIAot CQlpZiAoKHByZXZpb3VzX2Jsa25vID09IEludmFsaWRCbG9ja051bWJlcikgfHwKLQkJCShoc2Nh bi0+cnNfY2Jsb2NrICE9IHByZXZpb3VzX2Jsa25vKSkKKwkJaSA9IDA7CisJCXdoaWxlICgob2Zm ID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQl7Ci0JCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX0RPTkUsCi0JCQkJCQkJCQkJ IGhzY2FuLT5yc19jYmxvY2spOwotCQkJcHJldmlvdXNfYmxrbm8gPSBoc2Nhbi0+cnNfY2Jsb2Nr OworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKwkJCWJvb2wJCWFsbF9kZWFkLCBmb3VuZDsKKwkJ CUl0ZW1Qb2ludGVyU2V0KCZ0aWQsIGJsb2NrX251bWJlciwgb2ZmKTsKKworCQkJZm91bmQgPSBo ZWFwX2hvdF9zZWFyY2hfYnVmZmVyKCZ0aWQsIGhlYXBSZWxhdGlvbiwgYnVmLCBzbmFwc2hvdCwK KwkJCQkJCQkJCQkgICAmaGVhcF90dXBsZV9kYXRhW2ldLCAmYWxsX2RlYWQsIHRydWUpOworCQkJ aWYgKCFmb3VuZCkKKwkJCQlJdGVtUG9pbnRlclNldEludmFsaWQoJmhlYXBfdHVwbGVfZGF0YVtp XS50X3NlbGYpOworCQkJaSsrOwogCQl9CisJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19V TkxPQ0spOwogCi0JCS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBpbiB0YWJsZV9pbmRleF9idWlsZF9z Y2FuLCB3ZSBzaG91bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAqIHR1cGxlcyB1bmRlciB0aGUgVElE cyBvZiB0aGVpciByb290IHR1cGxlczsgc28gd2hlbiB3ZSBhZHZhbmNlIG9udG8KLQkJICogYSBu ZXcgaGVhcCBwYWdlLCBidWlsZCBhIG1hcCBvZiByb290IGl0ZW0gb2Zmc2V0cyBvbiB0aGUgcGFn ZS4KLQkJICoKLQkJICogVGhpcyBjb21wbGljYXRlcyBtZXJnaW5nIGFnYWluc3QgdGhlIHR1cGxl c29ydCBvdXRwdXQ6IHdlIHdpbGwKLQkJICogdmlzaXQgdGhlIGxpdmUgdHVwbGVzIGluIG9yZGVy IGJ5IHRoZWlyIG9mZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkgKiBvZmZzZXRzIHRoYXQgd2UgbmVl ZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGluZGV4IGNvbnRlbnRzIG1pZ2h0IGJlCi0JCSAqIG9y ZGVyZWQgZGlmZmVyZW50bHkuICBTbyB3ZSBtaWdodCBoYXZlIHRvICJsb29rIGJhY2siIHdpdGhp biB0aGUKLQkJICogdHVwbGVzb3J0IG91dHB1dCwgYnV0IG9ubHkgd2l0aGluIHRoZSBjdXJyZW50 IHBhZ2UuICBXZSBoYW5kbGUgdGhhdAotCQkgKiBieSBrZWVwaW5nIGEgYm9vbCBhcnJheSBpbl9p bmRleFtdIHNob3dpbmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5LXBhc3NlZC1vdmVyIHR1cGxlc29y dCBvdXRwdXQgVElEcyBvZiB0aGUgY3VycmVudCBwYWdlLiBXZQotCQkgKiBjbGVhciB0aGF0IGFy cmF5IGhlcmUsIHdoZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcgaGVhcCBwYWdlLgotCQkgKi8KLQkJ aWYgKGhzY2FuLT5yc19jYmxvY2sgIT0gcm9vdF9ibGtubykKKwkJaSA9IDA7CisJCXdoaWxlICgo b2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQl7Ci0JCQlQYWdlCQlw YWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0KLQkJCUxvY2tCdWZmZXIoaHNj YW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKLQkJCWhlYXBfZ2V0X3Jvb3RfdHVwbGVz KHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZG RVJfTE9DS19VTkxPQ0spOwotCi0JCQltZW1zZXQoaW5faW5kZXgsIDAsIHNpemVvZihpbl9pbmRl eCkpOwotCi0JCQlyb290X2Jsa25vID0gaHNjYW4tPnJzX2NibG9jazsKLQkJfQotCi0JCS8qIENv bnZlcnQgYWN0dWFsIHR1cGxlIFRJRCB0byByb290IFRJRCAqLwotCQlyb290VHVwbGUgPSAqaGVh cGN1cnNvcjsKLQkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihoZWFw Y3Vyc29yKTsKLQotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpKQotCQl7Ci0J CQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFdOwotCQkJaWYgKCFP ZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJybXNnX2ludGVy bmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAo JXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tO dW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVy KGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVs YXRpb24pKSkpOwotCQkJSXRlbVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJnJvb3RUdXBsZSwgcm9v dF9vZmZudW0pOwotCQl9Ci0KLQkJLyoKLQkJICogIm1lcmdlIiBieSBza2lwcGluZyB0aHJvdWdo IHRoZSBpbmRleCB0dXBsZXMgdW50aWwgd2UgZmluZCBvciBwYXNzCi0JCSAqIHRoZSBjdXJyZW50 IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJgotCQkJICAg KCFpbmRleGN1cnNvciB8fAotCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJv b3RUdXBsZSkgPCAwKSkKLQkJewotCQkJRGF0dW0JCXRzX3ZhbDsKLQkJCWJvb2wJCXRzX2lzbnVs bDsKLQotCQkJaWYgKGluZGV4Y3Vyc29yKQorCQkJaWYgKEl0ZW1Qb2ludGVySXNWYWxpZCgmaGVh cF90dXBsZV9kYXRhW2ldLnRfc2VsZikpCiAJCQl7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHJvb3Rf dGlkOworCQkJCUl0ZW1Qb2ludGVyU2V0KCZyb290X3RpZCwgYmxvY2tfbnVtYmVyLCBvZmYpOwor CisJCQkJLyogUmVzZXQgdGhlIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBmb3IgdGhlIG5leHQg ZmV0Y2guICovCisJCQkJTWVtb3J5Q29udGV4dFJlc2V0KGVjb250ZXh0LT5lY3h0X3Blcl90dXBs ZV9tZW1vcnkpOworCQkJCUV4ZWNTdG9yZUJ1ZmZlckhlYXBUdXBsZSgmaGVhcF90dXBsZV9kYXRh W2ldLCBzbG90LCBidWYpOworCisJCQkJLyogQ29tcHV0ZSB0aGUga2V5IHZhbHVlcyBhbmQgbnVs bCBmbGFncyBmb3IgdGhpcyB0dXBsZS4gKi8KKwkJCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8s CisJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkgICBlc3RhdGUsCisJCQkJCQkJICAgdmFsdWVzLAor CQkJCQkJCSAgIGlzbnVsbCk7CisKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIGluZGV4IGl0ZW1z IHNlZW4gZWFybGllciBvbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UKKwkJCQkgKiBJbnNlcnQgdGhl IHR1cGxlIGludG8gdGhlIHRhcmdldCBpbmRleC4KIAkJCQkgKi8KLQkJCQlpZiAoSXRlbVBvaW50 ZXJHZXRCbG9ja051bWJlcihpbmRleGN1cnNvcikgPT0gcm9vdF9ibGtubykKLQkJCQkJaW5faW5k ZXhbSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaW5kZXhjdXJzb3IpIC0gMV0gPSB0cnVlOwor CQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAorCQkJCQkJCSB2YWx1ZXMsCisJCQkJCQkJ IGlzbnVsbCwKKwkJCQkJCQkgJnJvb3RfdGlkLCAvKiBpbnNlcnQgcm9vdCB0dXBsZSAqLworCQkJ CQkJCSBoZWFwUmVsYXRpb24sCisJCQkJCQkJIGluZGV4SW5mby0+aWlfVW5pcXVlID8KKwkJCQkJ CQkgVU5JUVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJCQkJCQkgZmFsc2UsCisJ CQkJCQkJIGluZGV4SW5mbyk7CiAJCQl9CiAKLQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNv cnRfZ2V0ZGF0dW0oc3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKLQkJCQkJCQkJCQkJCSAgZmFsc2Us ICZ0c192YWwsICZ0c19pc251bGwsCi0JCQkJCQkJCQkJCQkgIE5VTEwpOwotCQkJQXNzZXJ0KHR1 cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKLQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQot CQkJewotCQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkp OwotCQkJCWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJ LyogQmUgdGlkeSAqLwotCQkJCWluZGV4Y3Vyc29yID0gTlVMTDsKLQkJCX0KKwkJCXN0YXRlLT5o dHVwcyArPSAxOworCQkJcGdzdGF0X3Byb2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1RVUExFU19ET05FLCAxKTsKKwkJCWkrKzsKIAkJfQogCi0JCS8qCi0JCSAqIElmIHRoZSB0 dXBsZXNvcnQgaGFzIG92ZXJzaG90ICphbmQqIHdlIGRpZG4ndCBzZWUgYSBtYXRjaCBlYXJsaWVy LAotCQkgKiB0aGVuIHRoaXMgdHVwbGUgaXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgc28gaW5z ZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0dXBsZXNvcnRfZW1wdHkgfHwKLQkJCSBJdGVtUG9pbnRl ckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpID4gMCkgJiYKLQkJCSFpbl9pbmRleFty b290X29mZm51bSAtIDFdKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVj eHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRlIG9yIGV4 cHJlc3Npb24gZXZhbHVhdGlvbiAqLwotCQkJRXhlY1N0b3JlSGVhcFR1cGxlKGhlYXBUdXBsZSwg c2xvdCwgZmFsc2UpOwotCi0JCQkvKgotCQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJk IHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkgdGhlCi0JCQkgKiBwcmVkaWNhdGUuCi0JCQkgKi8K LQkJCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkKLQkJCXsKLQkJCQlpZiAoIUV4ZWNRdWFsKHByZWRp Y2F0ZSwgZWNvbnRleHQpKQotCQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJLyoKLQkJCSAqIEZv ciB0aGUgY3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFsbCB0aGUgYXR0cmlidXRlcyB3ZSB1 c2UKLQkJCSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdoaWNoIGFyZSBudWxsLiAgVGhpcyBh bHNvIHBlcmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFueSBleHByZXNzaW9ucyBuZWVkZWQu Ci0JCQkgKi8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKLQkJCQkJCSAgIHNsb3QsCi0J CQkJCQkgICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0JCQkJCQkgICBpc251bGwpOwotCi0J CQkvKgotCQkJICogWW91J2QgdGhpbmsgd2Ugc2hvdWxkIGdvIGFoZWFkIGFuZCBidWlsZCB0aGUg aW5kZXggdHVwbGUgaGVyZSwKLQkJCSAqIGJ1dCBzb21lIGluZGV4IEFNcyB3YW50IHRvIGRvIGZ1 cnRoZXIgcHJvY2Vzc2luZyBvbiB0aGUgZGF0YQotCQkJICogZmlyc3QuIFNvIHBhc3MgdGhlIHZh bHVlc1tdIGFuZCBpc251bGxbXSBhcnJheXMsIGluc3RlYWQuCi0JCQkgKi8KLQotCQkJLyoKLQkJ CSAqIElmIHRoZSB0dXBsZSBpcyBhbHJlYWR5IGNvbW1pdHRlZCBkZWFkLCB5b3UgbWlnaHQgdGhp bmsgd2UKLQkJCSAqIGNvdWxkIHN1cHByZXNzIHVuaXF1ZW5lc3MgY2hlY2tpbmcsIGJ1dCB0aGlz IGlzIG5vIGxvbmdlciB0cnVlCi0JCQkgKiBpbiB0aGUgcHJlc2VuY2Ugb2YgSE9ULCBiZWNhdXNl IHRoZSBpbnNlcnQgaXMgYWN0dWFsbHkgYSBwcm94eQotCQkJICogZm9yIGEgdW5pcXVlbmVzcyBj aGVjayBvbiB0aGUgd2hvbGUgSE9ULWNoYWluLiAgVGhhdCBpcywgdGhlCi0JCQkgKiB0dXBsZSB3 ZSBoYXZlIGhlcmUgY291bGQgYmUgZGVhZCBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5Ci0JCQkgKiBI T1QtdXBkYXRlZCwgYW5kIGlmIHNvIHRoZSB1cGRhdGluZyB0cmFuc2FjdGlvbiB3aWxsIG5vdCBo YXZlCi0JCQkgKiB0aG91Z2h0IGl0IHNob3VsZCBpbnNlcnQgaW5kZXggZW50cmllcy4gIFRoZSBp bmRleCBBTSB3aWxsCi0JCQkgKiBjaGVjayB0aGUgd2hvbGUgSE9ULWNoYWluIGFuZCBjb3JyZWN0 bHkgZGV0ZWN0IGEgY29uZmxpY3QgaWYKLQkJCSAqIHRoZXJlIGlzIG9uZS4KLQkJCSAqLwotCi0J CQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKLQkJCQkJCSB2YWx1ZXMsCi0JCQkJCQkgaXNu dWxsLAotCQkJCQkJICZyb290VHVwbGUsCi0JCQkJCQkgaGVhcFJlbGF0aW9uLAotCQkJCQkJIGlu ZGV4SW5mby0+aWlfVW5pcXVlID8KLQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVTIDogVU5JUVVFX0NI RUNLX05PLAotCQkJCQkJIGZhbHNlLAotCQkJCQkJIGluZGV4SW5mbyk7Ci0KLQkJCXN0YXRlLT50 dXBzX2luc2VydGVkICs9IDE7Ci0JCX0KKwkJUmVsZWFzZUJ1ZmZlcihidWYpOwogCX0KIAotCXRh YmxlX2VuZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp OwogCiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCXJlYWRfc3RyZWFtX2VuZChyZWFk X3N0cmVhbSk7CisJdHVwbGVzdG9yZV9lbmQodHVwbGVzX2Zvcl9jaGVjayk7CisKIAkvKiBUaGVz ZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBub3ctZ29uZSBlc3RhdGUgKi8KIAlpbmRl eEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNh dGVTdGF0ZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggZTllMjJlYzBlODQuLjZjMDljNmEy YjY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC03MTUsMTEgKzcxNSwxNiBAQCBVcGRhdGVJbmRleFJl bGF0aW9uKE9pZCBpbmRleG9pZCwKICAqCQkJYWxyZWFkeSBleGlzdHMuCiAgKgkJSU5ERVhfQ1JF QVRFX1BBUlRJVElPTkVEOgogICoJCQljcmVhdGUgYSBwYXJ0aXRpb25lZCBpbmRleCAodGFibGUg bXVzdCBiZSBwYXJ0aXRpb25lZCkKKyAqCQlJTkRFWF9DUkVBVEVfQVVYSUxJQVJZOgorICoJCQlt YXJrIGluZGV4IGFzIGF1eGlsaWFyeSBpbmRleAogICogY29uc3RyX2ZsYWdzOiBmbGFncyBwYXNz ZWQgdG8gaW5kZXhfY29uc3RyYWludF9jcmVhdGUKICAqCQkob25seSBpZiBJTkRFWF9DUkVBVEVf QUREX0NPTlNUUkFJTlQgaXMgc2V0KQogICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93 IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlzX2ludGVybmFsOiBpZiB0cnVlLCBw b3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBpbmRleAogICogY29uc3RyYWludElkOiBpZiBub3Qg TlVMTCwgcmVjZWl2ZXMgT0lEIG9mIGNyZWF0ZWQgY29uc3RyYWludAorICogcmVscGVyc2lzdGVu Y2U6IHBlcnNpc3RlbmNlIGxldmVsIHRvIHVzZSBmb3IgaW5kZXguIEluIG1vc3Qgb2YgdGhlCisg KgkJY2FzZXMgaXQgaXMgc2hvdWxkIGJlIGVxdWFsIHRvIHBlcnNpc3RlbmNlIGxldmVsIG9mIHRh YmxlLAorICoJCWF1eGlsaWFyeSBpbmRleGVzIGFyZSBvbmx5IGV4Y2VwdGlvbiBoZXJlLgogICoK ICAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUgY3JlYXRlZCBpbmRleC4KICAqLwpAQCAtNzQ0LDcg Kzc0OSw4IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkgYml0czE2 IGNvbnN0cl9mbGFncywKIAkJCSBib29sIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzLAogCQkJIGJv b2wgaXNfaW50ZXJuYWwsCi0JCQkgT2lkICpjb25zdHJhaW50SWQpCisJCQkgT2lkICpjb25zdHJh aW50SWQsCisJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSkKIHsKIAlPaWQJCQloZWFwUmVsYXRpb25J ZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbGF0aW9uKTsKIAlSZWxhdGlvbglwZ19jbGFzczsK QEAgLTc1NSwxMSArNzYxLDExIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJYm9vbAkJaXNfZXhjbHVzaW9uOwogCU9pZAkJCW5hbWVzcGFjZUlkOwogCWludAkJCWk7Ci0J Y2hhcgkJcmVscGVyc2lzdGVuY2U7CiAJYm9vbAkJaXNwcmltYXJ5ID0gKGZsYWdzICYgSU5ERVhf Q1JFQVRFX0lTX1BSSU1BUlkpICE9IDA7CiAJYm9vbAkJaW52YWxpZCA9IChmbGFncyAmIElOREVY X0NSRUFURV9JTlZBTElEKSAhPSAwOwogCWJvb2wJCWNvbmN1cnJlbnQgPSAoZmxhZ3MgJiBJTkRF WF9DUkVBVEVfQ09OQ1VSUkVOVCkgIT0gMDsKIAlib29sCQlwYXJ0aXRpb25lZCA9IChmbGFncyAm IElOREVYX0NSRUFURV9QQVJUSVRJT05FRCkgIT0gMDsKKwlib29sCQlhdXhpbGlhcnkgPSAoZmxh Z3MgJiBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZKSAhPSAwOwogCWNoYXIJCXJlbGtpbmQ7CiAJVHJh bnNhY3Rpb25JZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKQEAgLTc4 NSw3ICs3OTEsNiBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCW5hbWVz cGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UoaGVhcFJlbGF0aW9uKTsKIAlzaGFyZWRfcmVs YXRpb24gPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsaXNzaGFyZWQ7CiAJbWFwcGVkX3JlbGF0 aW9uID0gUmVsYXRpb25Jc01hcHBlZChoZWFwUmVsYXRpb24pOwotCXJlbHBlcnNpc3RlbmNlID0g aGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwogCiAJLyoKIAkgKiBjaGVjayBw YXJhbWV0ZXJzCkBAIC03OTMsNiArNzk4LDExIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJaWYgKGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyA8IDEpCiAJCWVsb2co RVJST1IsICJtdXN0IGluZGV4IGF0IGxlYXN0IG9uZSBjb2x1bW4iKTsKIAorCWlmIChpbmRleElu Zm8tPmlpX0FtID09IFNUSVJfQU1fT0lEICYmICFhdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJt c2coInVzZXItZGVmaW5lZCBpbmRleGVzIHdpdGggU1RJUiBhY2Nlc3MgbWV0aG9kIGFyZSBub3Qg c3VwcG9ydGVkIikpKTsKKwogCWlmICghYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgJiYKIAkJSXNT eXN0ZW1SZWxhdGlvbihoZWFwUmVsYXRpb24pICYmCiAJCUlzTm9ybWFsUHJvY2Vzc2luZ01vZGUo KSkKQEAgLTEzOTgsNyArMTQwOCw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJCQkJCWZhbHNlLAkvKiBu b3QgcmVhZHkgZm9yIGluc2VydHMgKi8KIAkJCQkJCQl0cnVlLAogCQkJCQkJCWluZGV4UmVsYXRp b24tPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRP dmVybGFwcyk7CisJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzLAorCQkJCQkJCWZh bHNlKTsKIAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRo ZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAtMTQ2Myw3ICsxNDc0LDggQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZElu ZGV4SWQsCiAJCQkJCQkJICAwLAogCQkJCQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFibGUgdG8gYmUg YSBzeXN0ZW0gY2F0YWxvZz8gKi8KIAkJCQkJCQkgIGZhbHNlLAkvKiBpc19pbnRlcm5hbD8gKi8K LQkJCQkJCQkgIE5VTEwpOworCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIGhlYXBSZWxhdGlvbi0+ cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAKIAkvKiBDbG9zZSB0aGUgcmVsYXRpb25zIHVzZWQg YW5kIGNsZWFuIHVwICovCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKQEAg LTE0NzMsNiArMTQ4NSwxNTUgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJcmV0dXJuIG5ld0luZGV4SWQ7CiB9 CiAKKy8qCisgKiBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eAorICoKKyAqIENyZWF0ZSBj b25jdXJyZW50bHkgYW4gYXV4aWxpYXJ5IGluZGV4IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIG9m IHRoZSBvbmUKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlci4gIFRoZSBpbmRleCBpcyBpbnNlcnRlZCBp bnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZQorICogYnVpbHQgbGF0ZXIgb24uIFRoaXMgaXMg Y2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4KKyAqCisgKiAidGFi bGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2UgdG8gdXNlIGZvciB0aGlzIGluZGV4LgorICov CitPaWQKK2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlv biwgT2lkIG1haW5JbmRleElkLAorCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLCBjb25zdCBj aGFyICpuZXdOYW1lKQoreworCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CisJSW5kZXhJbmZvICAq b2xkSW5mbywKKwkJCSpuZXdJbmZvOworCU9pZAkJCW5ld0luZGV4SWQgPSBJbnZhbGlkT2lkOwor CUhlYXBUdXBsZQlpbmRleFR1cGxlOworCisJTGlzdAkgICAqaW5kZXhDb2xOYW1lcyA9IE5JTDsK KwlMaXN0CSAgICppbmRleEV4cHJzID0gTklMOworCUxpc3QJICAgKmluZGV4UHJlZHMgPSBOSUw7 CisKKwlPaWQgKmF1eE9wY2xhc3NJZHM7CisJaW50MTYgKmF1eENvbG9wdGlvbnM7CisKKwlpbmRl eFJlbGF0aW9uID0gaW5kZXhfb3BlbihtYWluSW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CisK KwkvKiBUaGUgbmV3IGluZGV4IG5lZWRzIHNvbWUgaW5mb3JtYXRpb24gZnJvbSB0aGUgb2xkIGlu ZGV4ICovCisJb2xkSW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCisJLyoK KwkgKiBCdWlsZCBvZiBhbiBhdXhpbGlhcnkgaW5kZXggd2l0aCBleGNsdXNpb24gY29uc3RyYWlu dHMgaXMgbm90CisJICogc3VwcG9ydGVkLgorCSAqLworCWlmIChvbGRJbmZvLT5paV9FeGNsdXNp b25PcHMgIT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coImF1eGlsaWFyeSBpbmRleCBjcmVh dGlvbiBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJ LyogR2V0IHRoZSBhcnJheSBvZiBjbGFzcyBhbmQgY29sdW1uIG9wdGlvbnMgSURzIGZyb20gaW5k ZXggaW5mbyAqLworCWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2Jq ZWN0SWRHZXREYXR1bShtYWluSW5kZXhJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRl eFR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1 IiwgbWFpbkluZGV4SWQpOworCisKKwkvKgorCSAqIEZldGNoIHRoZSBsaXN0IG9mIGV4cHJlc3Np b25zIGFuZCBwcmVkaWNhdGVzIGRpcmVjdGx5IGZyb20gdGhlCisJICogY2F0YWxvZ3MuICBUaGlz IGNhbm5vdCByZWx5IG9uIHRoZSBpbmZvcm1hdGlvbiBmcm9tIEluZGV4SW5mbyBvZiB0aGUKKwkg KiBvbGQgaW5kZXggYXMgdGhlc2UgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBmb3IgdGhlIHBsYW5uZXIu CisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5JTCkKKwl7CisJCURhdHVt CQlleHByRGF0dW07CisJCWNoYXIJICAgKmV4cHJTdHJpbmc7CisKKwkJZXhwckRhdHVtID0gU3lz Q2FjaGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAg IEFudW1fcGdfaW5kZXhfaW5kZXhwcnMpOworCQlleHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0 cmluZyhleHByRGF0dW0pOworCQlpbmRleEV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4 cHJTdHJpbmcpOworCQlwZnJlZShleHByU3RyaW5nKTsKKwl9CisJaWYgKG9sZEluZm8tPmlpX1By ZWRpY2F0ZSAhPSBOSUwpCisJeworCQlEYXR1bQkJcHJlZERhdHVtOworCQljaGFyCSAgICpwcmVk U3RyaW5nOworCisJCXByZWREYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJ RCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3BnX2luZGV4X2luZHByZWQpOworCQlw cmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0pOworCQlpbmRleFByZWRz ID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcpOworCisJCS8qIEFsc28gY29udmVy dCB0byBpbXBsaWNpdC1BTkQgZm9ybWF0ICovCisJCWluZGV4UHJlZHMgPSBtYWtlX2FuZHNfaW1w bGljaXQoKEV4cHIgKikgaW5kZXhQcmVkcyk7CisJCXBmcmVlKHByZWRTdHJpbmcpOworCX0KKwor CS8qCisJICogQnVpbGQgdGhlIGluZGV4IGluZm9ybWF0aW9uIGZvciB0aGUgbmV3IGluZGV4LiAg Tm90ZSB0aGF0IHJlYnVpbGQgb2YKKwkgKiBpbmRleGVzIHdpdGggZXhjbHVzaW9uIGNvbnN0cmFp bnRzIGlzIG5vdCBzdXBwb3J0ZWQsIGhlbmNlIHRoZXJlIGlzIG5vCisJICogbmVlZCB0byBmaWxs IGFsbCB0aGUgaWlfRXhjbHVzaW9uKiBmaWVsZHMuCisJICovCisJbmV3SW5mbyA9IG1ha2VJbmRl eEluZm8ob2xkSW5mby0+aWlfTnVtSW5kZXhBdHRycywKKwkJCQkJCQlvbGRJbmZvLT5paV9OdW1J bmRleEtleUF0dHJzLAorCQkJCQkJCVNUSVJfQU1fT0lELCAvKiBzcGVjaWFsIEFNIGZvciBhdXgg aW5kZXhlcyAqLworCQkJCQkJCWluZGV4RXhwcnMsCisJCQkJCQkJaW5kZXhQcmVkcywKKwkJCQkJ CQlmYWxzZSwJLyogYXV4IGluZGV4IGFyZSBub3QgdW5pcXVlICovCisJCQkJCQkJb2xkSW5mby0+ aWlfTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlmYWxzZSwJLyogbm90IHJlYWR5IGZvciBpbnNl cnRzICovCisJCQkJCQkJdHJ1ZSwKKwkJCQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgc3VtbWFy aXppbmcgKi8KKwkJCQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgd2l0aG91dCBvdmVybGFwcyAq LworCQkJCQkJCXRydWUJLyogYXV4aWxpYXJ5ICovKTsKKworCS8qCisJICogRXh0cmFjdCB0aGUg bGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwor CSAqIGluZGV4IGluZm9ybWF0aW9uLiAgQWxsIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2Vk IGZvciB0aGUgaW5kZXgKKwkgKiBjcmVhdGlvbi4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8 IG9sZEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCVR1cGxlRGVzYwlpbmRleFR1 cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGluZGV4UmVsYXRpb24pOworCQlGb3JtX3BnX2F0dHJp YnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKGluZGV4VHVwRGVzYywgaSk7CisKKwkJaW5kZXhDb2xO YW1lcyA9IGxhcHBlbmQoaW5kZXhDb2xOYW1lcywgTmFtZVN0cihhdHQtPmF0dG5hbWUpKTsKKwkJ bmV3SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IG9sZEluZm8tPmlpX0luZGV4QXR0ck51 bWJlcnNbaV07CisJfQorCisJYXV4T3BjbGFzc0lkcyA9IHBhbGxvYzAoc2l6ZW9mKE9pZCkgKiBu ZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKwlhdXhDb2xvcHRpb25zID0gcGFsbG9jMChzaXpl b2YoaW50MTYpICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CisKKwkvKiBGaWxsIHdpdGgg ImFueSBvcHMiICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuZXdJbmZvLT5paV9OdW1JbmRleEF0 dHJzOyBpKyspCisJeworCQlhdXhPcGNsYXNzSWRzW2ldID0gQU5ZX1NUSVJfT1BTX09JRDsKKwkJ YXV4Q29sb3B0aW9uc1tpXSA9IDA7CisJfQorCisJbmV3SW5kZXhJZCA9IGluZGV4X2NyZWF0ZSho ZWFwUmVsYXRpb24sCisJCQkJCQkJICBuZXdOYW1lLAorCQkJCQkJCSAgSW52YWxpZE9pZCwgICAg LyogaW5kZXhSZWxhdGlvbklkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBwYXJlbnRJ bmRleFJlbGlkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBwYXJlbnRDb25zdHJhaW50 SWQgKi8KKwkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVyLCAvKiByZWxGaWxlTnVtYmVyICov CisJCQkJCQkJICBuZXdJbmZvLAorCQkJCQkJCSAgaW5kZXhDb2xOYW1lcywKKwkJCQkJCQkgIFNU SVJfQU1fT0lELAorCQkJCQkJCSAgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkgIGluZGV4UmVsYXRp b24tPnJkX2luZGNvbGxhdGlvbiwKKwkJCQkJCQkgIGF1eE9wY2xhc3NJZHMsCisJCQkJCQkJICBO VUxMLAorCQkJCQkJCSAgYXV4Q29sb3B0aW9ucywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICAo RGF0dW0pIDAsCisJCQkJCQkJICBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCB8IElOREVYX0NSRUFU RV9DT05DVVJSRU5UIHwgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSwKKwkJCQkJCQkgIDAsCisJCQkJ CQkJICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLworCQkJ CQkJCSAgZmFsc2UsICAgIC8qIGlzX2ludGVybmFsPyAqLworCQkJCQkJCSAgTlVMTCwKKwkJCQkJ CQkgIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKTsgLyogYXV4IGluZGV4ZXMgdW5sb2dnZWQgKi8K KworCS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KKwlpbmRleF9j bG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxl KTsKKworCXJldHVybiBuZXdJbmRleElkOworfQorCiAvKgogICogaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkCiAgKgpAQCAtMjQ2OSw3ICsyNjMwLDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24g aW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAogCQkJCQkgICBmYWxzZSwK IAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1 ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxp YXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUyOSw3ICsyNjkxLDggQEAgQnVpbGRE dW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz cmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVj dC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYg aW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9 PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBh dHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0z MzA2LDEyICszNDY5LDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogICoKICAqIFdlIGRvIGEgY29uY3VycmVudCBpbmRleCBidWlsZCBieSBmaXJzdCBpbnNl cnRpbmcgdGhlIGNhdGFsb2cgZW50cnkgZm9yIHRoZQogICogaW5kZXggdmlhIGluZGV4X2NyZWF0 ZSgpLCBtYXJraW5nIGl0IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZC4KKyAqIFRo ZW4gd2UgY3JlYXRlIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IHRoZSBzYW1lIHdheS4gSXQgYmFz ZWQgb24gU1RJUiBBTS4KICAqIFRoZW4gd2UgY29tbWl0IG91ciB0cmFuc2FjdGlvbiBhbmQgc3Rh cnQgYSBuZXcgb25lLCB0aGVuIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQg Y291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93Ci0g KiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxs IHNlZSB0aGUgaW5kZXggYW5kCisgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFy dGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSBpbmRleGVzIGFuZAogICogaG9ub3IgaXRzIGNvbnN0 cmFpbnRzIG9uIEhPVCB1cGRhdGVzOyBzbyB3aGlsZSBleGlzdGluZyBIT1QtY2hhaW5zIG1pZ2h0 CiAgKiBiZSBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHRoZSBpbmRleCwgbm8gY3VycmVudGx5IGxp dmUgdHVwbGUgd2lsbCBoYXZlIGFuCi0gKiBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZSBkb25lIHRv IGl0LiAgV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxseSB2aWEKKyAqIGluY29tcGF0aWJs ZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuCisgKgorICogQWZ0ZXIgd2UgYnVpbGQgYXV4aWxpYXJ5 IGluZGV4LiBJdCBpcyBmYXN0IG9wZXJhdGlvbiB3aXRob3V0IGFueSBhY3R1YWwKKyAqIHRhYmxl IHNjYW4uIEFzIHJlc3VsdCwgd2UgaGF2ZSBlbXB0eSBTVElSIGluZGV4LiBXZSBjb21taXQgdHJh bnNhY3Rpb24gYW5kCisgKiBhZ2FpbiB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgY291 bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUKKyAqIHRvIHRlcm1pbmF0ZS4gQXQgdGhh dCBtb21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8KKyAq IGF1eGlsaWFyeSBpbmRleC4KKyAqCisgKiBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5 IHZpYQogICogaW5kZXhfYnVpbGQoKSwgd2hpbGUgaG9sZGluZyBhIHdlYWsgbG9jayB0aGF0IGFs bG93cyBjb25jdXJyZW50CiAgKiBpbnNlcnQvdXBkYXRlL2RlbGV0ZS4gIEFsc28sIHdlIGluZGV4 IG9ubHkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNj YW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbApAQCAtMzMy MSwxOCArMzQ5MywyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERB VEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cg YXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhh dAotICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGls ZSB3ZSBidWlsdCB0aGUgaW5kZXguCisgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRk ZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleAorICogKGJ1dCB0aGVzZSB0 dXBsZXMgY29udGFpbmVkIGluIGF1eGlsaWFyeSBpbmRleCkuCiAgKgogICogRnVydGhlcm1vcmUs IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcK ICAqIHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFz b24gIGZvciB0aGF0IGlzIHRvCiAgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJk LgogICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxs IG5vdCAiaW5kaXN2YWxpZCIpIGFuZAotICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24g YW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKKyAqIGNvbW1pdCB0aGUg dGhpcmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgZm91cnRoLiAgQWdhaW4gd2Ugd2FpdCBmb3Ig YWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0 YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKICAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5 LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKLSAqIGluc2VydCB0 aGVpciBuZXcgdHVwbGVzIGludG8gaXQuICBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNu YXBzaG90Ci0gKiB3aGljaCBpcyBwYXNzZWQgdG8gdmFsaWRhdGVfaW5kZXgoKS4gIEFueSB0dXBs ZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCisgKiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBp bnRvIGl0LiBBdCB0aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImluZGlzcmVhZHkiIGZvcgorICog YXV4aWxpYXJ5IGluZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJlcXVpcmVkIHRvIGJlIHVwZGF0 ZWQuCisgKgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hvdCwgYW55IHR1 cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKICAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBu b3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4KICAqIChBbnkgdHVw bGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0 aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAgQW55IHR1cGxl cyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKQEAgLTMzNDAsMTIgKzM1MTUsMTQgQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiB0aGF0IG1pZ2h0IGNhcmUgYWJv dXQgdGhlbSBiZWZvcmUgd2UgbWFyayB0aGUgaW5kZXggdmFsaWQuKQogICoKICAqIHZhbGlkYXRl X2luZGV4KCkgd29ya3MgYnkgZmlyc3QgZ2F0aGVyaW5nIGFsbCB0aGUgVElEcyBjdXJyZW50bHkg aW4gdGhlCi0gKiBpbmRleCwgdXNpbmcgYSBidWxrZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBz dG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKKyAqIGluZGV4ZXMsIHVzaW5nIGEgYnVsa2RlbGV0 ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0CiAgKiBldmVy IHNheSAiZGVsZXRlIGl0Ii4gIChUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBhIHBsYWluIGlu ZGV4c2NhbjsKICAqIGFsc28sIG5vdCBhbGwgaW5kZXggQU1zIHN1cHBvcnQgZnVsbC1pbmRleCBp bmRleHNjYW4uKSAgVGhlbiB3ZSBzb3J0IHRoZQotICogVElEcywgYW5kIGZpbmFsbHkgc2NhbiB0 aGUgdGFibGUgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdCB0aGUgVElEIGxpc3QKLSAqIHRv IHNlZSB3aGljaCB0dXBsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXguICBUaHVzIHdlIHdp bGwgZW5zdXJlIHRoYXQKLSAqIGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSByZWZl cmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4KKyAqIFRJRHMgb2YgYm90aCBhdXhpbGlh cnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9pbmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAor ICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2ggdHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4 IGFyZSBtaXNzaW5nIGZyb20gdGhlCisgKiB0YXJnZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5z dXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlCisgKiByZWZlcmVuY2Ug c25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0 ZSBpbiB0aGUKKyAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxh c3QuCiAgKgogICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3 ZSBtaWdodCB0cnkgdG8gaW5zZXJ0IGEKICAqIHR1cGxlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIG9y IGlzIGluIHByb2Nlc3Mgb2YgYmVpbmcgZGVsZXRlZCwgYW5kIHdlCkBAIC0zMzYzLDIyICszNTQw LDI2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogbm90 IGluZGV4KS4gIFRoZW4gd2UgbWFyayB0aGUgaW5kZXggImluZGlzdmFsaWQiIGFuZCBjb21taXQu ICBTdWJzZXF1ZW50CiAgKiB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHVzZSBpdCBmb3Ig cXVlcmllcy4KICAqCi0gKiBEb2luZyB0d28gZnVsbCB0YWJsZSBzY2FucyBpcyBhIGJydXRlLWZv cmNlIHN0cmF0ZWd5LiAgV2UgY291bGQgdHJ5IHRvIGJlCi0gKiBjbGV2ZXJlciwgZWcgc3Rvcmlu ZyBuZXcgdHVwbGVzIGluIGEgc3BlY2lhbCBhcmVhIG9mIHRoZSB0YWJsZSAocGVyaGFwcwotICog bWFraW5nIHRoZSB0YWJsZSBhcHBlbmQtb25seSBieSBzZXR0aW5nIHVzZV9mc20pLiAgSG93ZXZl ciB0aGF0IHdvdWxkCi0gKiBhZGQgeWV0IG1vcmUgbG9ja2luZyBpc3N1ZXMuCisgKiBBbHNvLCBz b21lIGFjdGlvbnMgdG8gY29uY3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBl cmZvcm1lZC4KICAqLwogdm9pZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQordmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGlu ZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlSZWxhdGlvbglo ZWFwUmVsYXRpb24sCi0JCQkJaW5kZXhSZWxhdGlvbjsKKwkJCQlpbmRleFJlbGF0aW9uLAorCQkJ CWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwotCUluZGV4VmFjdXVt SW5mbyBpdmluZm87Ci0JVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlOworCUluZGV4VmFjdXVtSW5m byBpdmluZm8sIGF1eGl2aW5mbzsKKwlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRl OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJ c2F2ZV9uZXN0bGV2ZWw7CisJLyogVXNlIDgwJSBvZiBtYWludGVuYW5jZV93b3JrX21lbSB0byB0 YXJnZXQgaW5kZXggc29ydGluZyBhbmQKKwkgKiAxMCUgcmVzdCBmb3IgYXV4aWxpYXJ5LgorCSAq CisJICogUmVzdCAxMCUgd2lsbCBiZSB1c2VkIGZvciB0dXBsZXN0b3JlIGxhdGVyLiAqLworCWlu dDY0CQltYWluX3dvcmtfbWVtX3BhcnQgPSAoaW50NjQpIG1haW50ZW5hbmNlX3dvcmtfbWVtICog OCAvIDEwOworCWludAkJCWF1eF93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0g LyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CkBAIC0zNDExLDYg KzM1OTIsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAKIAlpbmRleFJlbGF0aW9uID0g aW5kZXhfb3BlbihpbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlhdXhJbmRleFJlbGF0aW9u ID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8qCiAJICog RmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4gIChZb3UgbWlnaHQgdGhpbmsgdGhp cyBzaG91bGQgYmUKQEAgLTM0MzUsMTUgKzM2MTcsMzAgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5zdHJhdGVneSA9 IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAorCS8qCisJICogQ29weSBh bGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcgb25seSByZWxhdGlvbi4KKwkgKi8K KwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmluZGV4ID0gYXV4SW5kZXhSZWxhdGlv bjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCBy YXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2Fu IGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKIAkgKiBpcyBh IHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlz CiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KIAkgKi8KKwlhdXhTdGF0ZS50 dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRv ciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBhdXhfd29y a19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CisJYXV4U3Rh dGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwor CisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCisJCQkJCQkJIHZh bGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4U3RhdGUpOworCiAJc3RhdGUudHVwbGVzb3J0ID0g dHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJ CQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwK KwkJCQkJCQkJCQkJKGludCkgbWFpbl93b3JrX21lbV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNf aW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDY2LDI3ICszNjYzLDMwIEBAIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7 CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29y dF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJLyoKLQkgKiBOb3cgc2NhbiB0 aGUgaGVhcCBhbmQgIm1lcmdlIiBpdCB3aXRoIHRoZSBpbmRleAorCSAqIE5vdyBtZXJnZSBib3Ro IGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9UQUJMRVNDQU4pOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRF X0lEWE1FUkdFKTsKIAl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBSZWxhdGlvbiwKIAkJ CQkJCQkgIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJICBpbmRleEluZm8sCiAJCQkJCQkJICBzbmFw c2hvdCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJICAmYXV4 U3RhdGUpOwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KLQl0dXBsZXNvcnRf ZW5kKHN0YXRlLnR1cGxlc29ydCk7CisJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5k ZXhfdmFsaWRhdGVfc2NhbiAqLworCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBh dXhTdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCk7CiAKIAkvKiBNYWtlIHN1cmUgdG8gcmVsZWFzZSBy ZXNvdXJjZXMgY2FjaGVkIGluIGluZGV4SW5mbyAoaWYgbmVlZGVkKS4gKi8KIAlpbmRleF9pbnNl cnRfY2xlYW51cChpbmRleFJlbGF0aW9uLCBpbmRleEluZm8pOwogCiAJZWxvZyhERUJVRzIsCi0J CSAidmFsaWRhdGVfaW5kZXggZm91bmQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBs ZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAotCQkgc3RhdGUuaHR1cHMsIHN0YXRl Lml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsKKwkJICJ2YWxpZGF0ZV9pbmRleCBmZXRjaGVk ICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVwbGVzOyIKKwkJCQkJCSIgJS4wZiBhdXgg aW5kZXggdHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKKwkJIHN0YXRlLmh0 dXBzLCBzdGF0ZS5pdHVwcywgYXV4U3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOwog CiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTM0OTUsNiAr MzY5NSw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3Nl Y19jb250ZXh0KTsKIAogCS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICovCisJaW5kZXhf Y2xvc2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0 aW9uLCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKIH0KQEAg LTM1NTUsNiArMzc1NiwxMSBAQCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIElu ZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pCiAJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2 YWxpZCk7CiAJCQlpbmRleEZvcm0tPmluZGlzdmFsaWQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNh c2UgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWToKKwkJCS8qIENsZWFyIGluZGlzcmVhZHkgZHVyaW5n IGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBzZXF1ZW5jZSAqLworCQkJQXNzZXJ0KCFpbmRl eEZvcm0tPmluZGlzdmFsaWQpOworCQkJaW5kZXhGb3JtLT5pbmRpc3JlYWR5ID0gZmFsc2U7CisJ CQlicmVhazsKIAkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1ZBTElEOgogCiAJCQkvKgpAQCAtMzgy Niw2ICs0MDMyLDEzIEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCBpbmRleElkLAogCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0cyA9IE5VTEw7CiAJfQog CisJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8K KwlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZWluZGV4 IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCiAJLyogU3VwcHJlc3MgdXNlIG9mIHRoZSB0YXJn ZXQgaW5kZXggd2hpbGUgcmVidWlsZGluZyBpdCAqLwogCVNldFJlaW5kZXhQcm9jZXNzaW5nKGhl YXBJZCwgaW5kZXhJZCk7CiAKQEAgLTQwNjgsNiArNDI4MSw3IEBAIHJlaW5kZXhfcmVsYXRpb24o Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogCXsKIAkJT2lk CQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFj ZUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhPaWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0 X3JlbF9yZWxhbShpbmRleE9pZCk7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRl eGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDA5Myw2ICs0MzA3 LDE4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxp ZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAoaW5kZXhBbSA9PSBTVElS X0FNX09JRCkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1l KGluZGV4TmFtZXNwYWNlSWQpLAorCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9pZCkpKSk7CisJ CQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3Zl UmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJY29udGludWU7CisJCX0KKwogCQlyZWluZGV4 X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RS QUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKaW5kZXggMTVlZmIwMmJhZGIuLmVkZDYxYzI5NGE2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjg4LDE2ICsxMjg4LDE3IEBAIENSRUFURSBW SUVXIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4IEFTCiAgICAgICAgICAgICAgICAgICAg ICAgRU5EIEFTIGNvbW1hbmQsCiAgICAgICAgIENBU0UgUy5wYXJhbTEwIFdIRU4gMCBUSEVOICdp bml0aWFsaXppbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5n IGZvciB3cml0ZXJzIGJlZm9yZSBidWlsZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAy IFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAorICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4JworICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDT0FMRVNDRSgoJzogJyB8fCBwZ19pbmRleGFtX3Byb2dyZXNz X3BoYXNlbmFtZShTLnBhcmFtOTo6b2lkLCBTLnBhcmFtMTEpKSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDMgVEhF TiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKLSAgICAgICAgICAgICAg ICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4Jwot ICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29y dGluZyB0dXBsZXMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2 YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZScKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCi0gICAgICAgICAgICAgICAgICAgICAg IFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCi0g ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJl Zm9yZSBkcm9wcGluZycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRp bmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCisgICAgICAgICAgICAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCcKKyAgICAgICAg ICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVw bGVzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlv bjogbWVyZ2luZyBpbmRleGVzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDggVEhFTiAn d2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5 IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKKyAgICAgICAg ICAgICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBk cm9wcGluZycKICAgICAgICAgICAgICAgICAgICAgICAgRU5EIGFzIHBoYXNlLAogICAgICAgICBT LnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLAogICAgICAgICBTLnBhcmFtNSBBUyBsb2NrZXJzX2Rv bmUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggODc0YThmYzg5YWQuLjBlZTJmZDVlN2RlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMjUsNyArMzI1LDggQEAgY3JlYXRlX3RvYXN0X3Rh YmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAkJCQkg QlRSRUVfQU1fT0lELAogCQkJCSByZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKIAkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBOVUxMLCBjb2xvcHRpb25zLCBOVUxMLCAoRGF0dW0pIDAs Ci0JCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZLCAwLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwkJ CQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUsIHRydWUsIE5VTEwsCisJCQkJIHRv YXN0X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAKIAl0YWJsZV9jbG9zZSh0b2FzdF9y ZWwsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNzc4ZDk1MjhjMjUu LjM4OGMzZjkyZGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTgyLDYgKzE4Miw3 IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGJvb2wgaXNXaXRob3V0 T3ZlcmxhcHMpCiB7CiAJYm9vbAkJaXNjb25zdHJhaW50OworCWJvb2wJCWlzYXV4aWxpYXJ5Owog CU9pZAkJICAgKnR5cGVJZHM7CiAJT2lkCQkgICAqY29sbGF0aW9uSWRzOwogCU9pZAkJICAgKm9w Y2xhc3NJZHM7CkBAIC0yMzIsNiArMjMzLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9s ZElkLAogCiAJYW1jYW5vcmRlciA9IGFtUm91dGluZS0+YW1jYW5vcmRlcjsKIAlhbXN1bW1hcml6 aW5nID0gYW1Sb3V0aW5lLT5hbXN1bW1hcml6aW5nOworCWlzYXV4aWxpYXJ5ID0gYWNjZXNzTWV0 aG9kSWQgPT0gU1RJUl9BTV9PSUQ7CiAKIAkvKgogCSAqIENvbXB1dGUgdGhlIG9wZXJhdG9yIGNs YXNzZXMsIGNvbGxhdGlvbnMsIGFuZCBleGNsdXNpb24gb3BlcmF0b3JzIGZvcgpAQCAtMjQzLDcg KzI0NSw4IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkgKi8KIAlpbmRleElu Zm8gPSBtYWtlSW5kZXhJbmZvKG51bWJlck9mQXR0cmlidXRlcywgbnVtYmVyT2ZBdHRyaWJ1dGVz LAogCQkJCQkJCSAgYWNjZXNzTWV0aG9kSWQsIE5JTCwgTklMLCBmYWxzZSwgZmFsc2UsCi0JCQkJ CQkJICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXppbmcsIGlzV2l0aG91dE92ZXJsYXBzKTsKKwkJ CQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywKKwkJCQkJCQkgIGlzV2l0aG91dE92 ZXJsYXBzLCBpc2F1eGlsaWFyeSk7CiAJdHlwZUlkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJl ck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVy T2ZBdHRyaWJ1dGVzKTsKIAlvcGNsYXNzSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZB dHRyaWJ1dGVzKTsKQEAgLTU1Myw2ICs1NTYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IHsKIAlib29sCQljb25jdXJyZW50OwogCWNoYXIJICAgKmluZGV4UmVsYXRpb25OYW1lOworCWNo YXIJICAgKmF1eEluZGV4UmVsYXRpb25OYW1lID0gTlVMTDsKIAljaGFyCSAgICphY2Nlc3NNZXRo b2ROYW1lOwogCU9pZAkJICAgKnR5cGVJZHM7CiAJT2lkCQkgICAqY29sbGF0aW9uSWRzOwpAQCAt NTYyLDYgKzU2Niw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCU9pZAkJCW5hbWVzcGFj ZUlkOwogCU9pZAkJCXRhYmxlc3BhY2VJZDsKIAlPaWQJCQljcmVhdGVkQ29uc3RyYWludElkID0g SW52YWxpZE9pZDsKKwlPaWQJCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBJbnZhbGlkT2lkOwogCUxp c3QJICAgKmluZGV4Q29sTmFtZXM7CiAJTGlzdAkgICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRp b24JcmVsOwpAQCAtNTgzLDYgKzU4OCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWlu dAkJCW51bWJlck9mS2V5QXR0cmlidXRlczsKIAlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlP YmplY3RBZGRyZXNzIGFkZHJlc3M7CisJT2JqZWN0QWRkcmVzcyBhdXhBZGRyZXNzOwogCUxvY2tS ZWxJZAloZWFwcmVsaWQ7CiAJTE9DS1RBRwkJaGVhcGxvY2t0YWc7CiAJTE9DS01PREUJbG9ja21v ZGU7CkBAIC04MzMsNiArODM5LDE1IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJ CQkJCQlzdG10LT5leGNsdWRlT3BOYW1lcywKIAkJCQkJCQkJCQkJc3RtdC0+cHJpbWFyeSwKIAkJ CQkJCQkJCQkJc3RtdC0+aXNjb25zdHJhaW50KTsKKwkvKgorCSAqIFNlbGVjdCBuYW1lIGZvciBh dXhpbGlhcnkgaW5kZXgKKwkgKi8KKwlpZiAoY29uY3VycmVudCkKKwkJYXV4SW5kZXhSZWxhdGlv bk5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlvbk5hbWUsCisJCQkJCQkJCQkJ CQkgIE5VTEwsCisJCQkJCQkJCQkJCQkgICJjY2F1eCIsCisJCQkJCQkJCQkJCQkgIG5hbWVzcGFj ZUlkLAorCQkJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkvKgogCSAqIGxvb2sgdXAgdGhlIGFjY2Vz cyBtZXRob2QsIHZlcmlmeSBpdCBjYW4gaGFuZGxlIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZXMKQEAg LTkyOCw3ICs5NDMsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkgICFjb25j dXJyZW50LAogCQkJCQkJCSAgY29uY3VycmVudCwKIAkJCQkJCQkgIGFtaXNzdW1tYXJpemluZywK LQkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkgIHN0bXQtPmlzd2l0 aG91dG92ZXJsYXBzLAorCQkJCQkJCSAgZmFsc2UpOwogCiAJdHlwZUlkcyA9IHBhbGxvY19hcnJh eShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0gcGFsbG9jX2FycmF5 KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTEyNTEsNyArMTI2Nyw4IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkgY29sb3B0aW9ucywgTlVMTCwgcmVsb3B0aW9ucywKIAkJ CQkJIGZsYWdzLCBjb25zdHJfZmxhZ3MsCiAJCQkJCSBhbGxvd1N5c3RlbVRhYmxlTW9kcywgIWNo ZWNrX3JpZ2h0cywKLQkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkKTsKKwkJCQkJICZjcmVhdGVk Q29uc3RyYWludElkLAorCQkJCQkgcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCU9i amVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBpbmRleFJlbGF0aW9u SWQpOwogCkBAIC0xNTkzLDYgKzE2MTAsMTYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ CXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1 aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJICovCisJaWYgKGNvbmN1cnJl bnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJdGFibGVzcGFjZUlkLCBhdXhJ bmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4QWRkcmVzcywgUmVsYXRp b25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0KKwogCUF0RU9YYWN0X0dVQyhm YWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChyb290 X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0xNjIxLDExICsxNjQ4 LDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICogRm9yIGEgY29uY3VycmVu dCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxvZyBlbnRyaWVzCiAJICog dmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRo ZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0 aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxsIGJlIG1hcmtlZCBub3Qg aW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8gb25lIGVsc2UKLQkgKiB0 cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVzLgorCSAq IHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4g TmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxsIGJlIG1hcmtlZCBub3Qg aW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28gdGhhdCBubyBvbmUgZWxzZSB0 cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVzLgogCSAq Ci0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUg aW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRyYW5zYWN0aW9u IHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2libGU7IHRoZW4gc3RhcnQgYW5v dGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3ZSBqdXN0CiAJICogYnVp bHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEgd2Uga2VlcCBwYXN0IGhl cmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MzUsNyArMTY2Miw3IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywgZXZlbiBpZiBzb21lb25lIGVs c2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJICogYWxyZWFkeSBoYXZlIHRo ZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkgKgotCSAqIE5vdGU6IHdlIGRv bid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUgaW5kZXgsCisJ ICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9u IHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9wZXJhdGlvbnMgdGhhdCBj b3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9sZCBsb2NrIG9uIHRoZSBwYXJl bnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVyLgogCSAqLwpAQCAtMTY3 NCw3ICsxNzAxLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogd2l0aCB0aGUgb2xk IGxpc3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29uc2lkZXIgcnVubmluZwogCSAq IHRyYW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQgd3JpdGluZyB0byB0aGUg dGFibGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgeGFjdHMgdGhh dCBvcGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAqIHRoaXMgcG9pbnQ7IHRoZXkg d2lsbCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBpdC4KKwkgKiB0aGlzIHBvaW50 OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkgb3BlbiBpdC4KIAkgKgog CSAqIE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2NrIGFjcXVpc2l0aW9uIGhlcmUs IHJhdGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJvY0FycmF5IGFuZCBzbGVlcGlu ZywgaXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY4NiwxNCArMTcxMywzOCBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgd2Ug YXJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlCi0JICogdGFi bGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4IGluIHRoZWly IGxpc3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBu ZXcgaW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhlcy4gIFdlIGhhdmUgd2FpdGVk IG91dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55IG5ldwotCSAqIHRyYW5z YWN0aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0LCBidXQgdGhlIGluZGV4 IGlzIHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiAgVGhlIGlu ZGV4IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSBib3RoIG5l dyBpbmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUgc3RpbGwKKwkgKiBtYXJrZWQg YXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFyZSBjb25zdWx0ZWQgd2hp bGUKIAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMgYXJyYW5nZW1lbnQgZW5z dXJlcyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhl IG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZl cmVudCBpbmRleCBrZXlzLgogCSAqCisJICogTm93IGNhbGwgYnVpbGQgb24gYXV4aWxpYXJ5IGlu ZGV4LiBJbmRleCB3aWxsIGJlIGNyZWF0ZWQgZW1wdHkgd2l0aG91dAorCSAqIGFueSBhY3R1YWwg aGVhcCBzY2FuLCBidXQgbWFya2VkIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBnb2FsIG9m CisJICogdGhhdCBpbmRleCBpcyBhY2N1bXVsYXRlIG5ldyB0dXBsZXMgd2hpbGUgbWFpbiBpbmRl eCBpcyBhY3R1YWxseSBidWlsdC4KKwkgKi8KKwlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFi bGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVf aW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogTm93IHdlIG5lZWQgdG8gZW5zdXJlIGFy ZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUgd2l0aCBhdXhpbGlhcnkgaW5kZXgKKwkgKiBtYXJr ZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJV2FpdEZvckxvY2tlcnMoaGVh cGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IHdl IGFyZSBzdXJlIHdoYXQgYWxsIG5ldyB0dXBsZXMgaW4gdGFibGUgYXJlIGluc2VydGVkIGludG8K KwkgKiBhdXhpbGlhcnkgaW5kZXguIE5vdyBpdCBpcyB0aW1lIHRvIGJ1aWxkIHRoZSB0YXJnZXQg aW5kZXggaXRzZWxmLgorCSAqCiAJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBs ZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQogCSAqIHJlZnJlc2hpbmcgc25hcHNo b3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1 cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVz IG1hZGUKQEAgLTE3MjIsOSArMTc3MywyOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkg KiB0aGUgaW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBkYXRlcy4KIAkgKi8KIAlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNo YXJlTG9jaywgdHJ1ZSk7CiAKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9s dmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25h cHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CisJLyoKKwkgKiBOb3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkiIGZvciBh bGwgdHJhbnNhY3Rpb25zLiBTbywgYXV4aWxpYXJ5CisJICogaW5kZXggaXMgbm90IG1vcmUgbmVl ZGVkLiBTbywgc3RhcnQgcmVtb3ZpbmcgcHJvY2VzcyBieSByZXZlcnRpbmcgInJlYWR5IgorCSAq IGZsYWcuCisJICovCisJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGF1eEluZGV4UmVsYXRpb25JZCwg SU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwor CiAJLyoKIAkgKiBOb3cgdGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJl IHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQogCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVz LiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluCkBAIC0xNzQyLDI0 ICsxODEyLDE0IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqLwogCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCVB1c2hBY3RpdmVT bmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkvKgotCSAqIFNjYW4gdGhlIGluZGV4IGFuZCB0aGUgaGVh cCwgaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCi0JICovCi0JdmFsaWRhdGVfaW5k ZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0KLQkvKgotCSAqIERyb3Ag dGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBv dXQgb3RoZXIKLQkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdh aW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwotCSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJS RU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCi0JICogdGhleSBtdXN0 IHdhaXQgZm9yLiAgQnV0IGZpcnN0LCBzYXZlIHRoZSBzbmFwc2hvdCdzIHhtaW4gdG8gdXNlIGFz Ci0JICogbGltaXRYbWluIGZvciBHZXRDdXJyZW50VmlydHVhbFhJRHMoKS4KKwkgKiBNZXJnZSBj b250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMgLSBpbnNlcnQgYW55IG1pc3Np bmcgaW5kZXggZW50cmllcy4KIAkgKi8KKwl2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJl bGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCwgc25hcHNob3QpOwogCWxpbWl0WG1pbiA9IHNu YXBzaG90LT54bWluOwogCiAJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOwotCiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0 aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdAogCSAqIGFyZSBob2xkaW5nIGJh Y2sgb3VyIHByb2Nlc3MncyBhZHZlcnRpc2VkIHhtaW47IGluIHBhcnRpY3VsYXIsIGlmCkBAIC0x Nzg2LDcgKzE4NDYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKi8KIAlJTkpFQ1RJ T05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzQpOwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUp OwogCiAJLyoKQEAgLTE4MTEsNiArMTg3MSw1MyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAkgKiB0byByZXBsYW47IHNvIHJlbGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRleCBpdHNlbGYgd2Fz IHN1ZmZpY2llbnQuKQogCSAqLwogCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxpZChoZWFw cmVsaWQucmVsSWQpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNSk7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBzZWUgYXV4aWxp YXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxv Y2t0YWcsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBtYXJrIGF1 eGlsaWFyeSBpbmRleCBhcyBkZWFkICovCisJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKHRh YmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CisJLyogTm93 IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5IGJlY2F1c2UgaXQg aXMgZGVhZCAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVM b2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIERyb3AgYXV4aWxpYXJ5IGluZGV4LgorCSAqCisJ ICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJv cCgpIHVzZXMgdGhlCisJICogcmlnaHQgbG9jayBsZXZlbC4KKwkgKi8KKwlwZXJmb3JtRGVsZXRp b24oJmF1eEFkZHJlc3MsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05f Q09OQ1VSUkVOVF9MT0NLIHwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CiAKIAkvKgogCSAq IExhc3QgdGhpbmcgdG8gZG8gaXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIHRo ZSBwYXJlbnQgdGFibGUuCkBAIC0zNTMxLDYgKzM2MzgsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCXR5cGVkZWYgc3RydWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJCWluZGV4 SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7 CiAJCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTM2 MzYsOCArMzc0NCwxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQlPaWQJCQljZWxs T2lkID0gbGZpcnN0X29pZChsYyk7CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRl eF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CisJCQkJCUluZGV4SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRl eFJlbGF0aW9uKTsKIAotCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3Zh bGlkKQorCisJCQkJCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCWVyZXBvcnQo V0FSTklORywoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJ IGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwK KwkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSks CisJCQkJCQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCWVsc2UgaWYgKCFpbmRl eFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBvcnQoV0FSTklORywK IAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCiAJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBc IiVzLiVzXCIiLApAQCAtMzY4OSw4ICszODA0LDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChsYzIpOwogCQkJCQkJUmVsYXRpb24J aW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIFNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9IEJ1 aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlmICghaW5kZXhSZWxh dGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9BdXhp bGlhcnkpCisJCQkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVp bmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCQkJZ2V0X25hbWVz cGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCQkJZ2V0X3Jl bF9uYW1lKGNlbGxPaWQpKSkpOworCQkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2lu ZGV4LT5pbmRpc3ZhbGlkKQogCQkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkJ IGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBA IC0zNzUxLDYgKzM4NzMsMTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJIGVycm1zZygiY2Fu bm90IHJlaW5kZXggaW52YWxpZCBpbmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7CiAKKwkJCQkvKiBB dXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCQkJCWlm IChnZXRfcmVsX3JlbGFtKHJlbGF0aW9uT2lkKSA9PSBTVElSX0FNX09JRCkKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3Vw cG9ydGVkIiwKKwkJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkpKTsKKwogCQkJCS8q CiAJCQkJICogQ2hlY2sgaWYgcGFyZW50IHJlbGF0aW9uIGNhbiBiZSBsb2NrZWQgYW5kIGlmIGl0 IGV4aXN0cywKIAkJCQkgKiB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhpcyBzdGFnZSBhcyB0 aGUgbGlzdCBvZiBpbmRleGVzCkBAIC0zODU0LDE1ICszOTgzLDE4IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCiAJewogCQljaGFyCSAgICpjb25jdXJy ZW50TmFtZTsKKwkJY2hhcgkgICAqYXV4Q29uY3VycmVudE5hbWU7CiAJCVJlaW5kZXhJbmRleElu Zm8gKmlkeCA9IGxmaXJzdChsYyk7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsKIAkJT2lk CQkJbmV3SW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7 CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwogCQlpbnQJCQlzYXZl X3NlY19jb250ZXh0OwogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5k ZXhSZWw7CisJCVJlbGF0aW9uCWF1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7 CiAJCU9pZAkJCXRhYmxlc3BhY2VpZDsKIApAQCAtMzkxMyw2ICs0MDQ1LDExIEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJCQkJCWdldF9yZWxf bmFtZXNwYWNlKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJCQkJCQkJCQlmYWxz ZSk7CisJCWF1eENvbmN1cnJlbnROYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGdldF9yZWxfbmFt ZShpZHgtPmluZGV4SWQpLAorCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkiY2NhdXgiLAor CQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlk KSwKKwkJCQkJCQkJCQkJZmFsc2UpOwogCiAJCS8qIENob29zZSB0aGUgbmV3IHRhYmxlc3BhY2Us IGluZGV4ZXMgb2YgdG9hc3QgdGFibGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJaWYgKE9pZElzVmFs aWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKSAmJgpAQCAtMzkyNiwxMiArNDA2MywxNyBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJZCwKIAkJCQkJCQkJ CQkJCQl0YWJsZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOworCQlhdXhJ bmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJlbCwKKwkJCQkJCQkJ CQkJCSAgIG5ld0luZGV4SWQsCisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJCQkJCQkJ CQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJl bGF0aW9uIG9mIHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFs c28gbmVlZGVkIG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0lu ZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0gaW5kZXhf b3BlbihhdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAq IFNhdmUgdGhlIGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC0z OTQwLDYgKzQwODIsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lkeCA9IHBh bGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9IG5ld0lu ZGV4SWQ7CisJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2Fm ZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdp ZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CkBAIC0zOTU4LDEwICs0MTAxLDE0IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJ KmxvY2tyZWxpZCA9IG5ld0luZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0 aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxvY2tyZWxp ZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eEluZGV4UmVs LT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0 aW9uTG9ja3MsIGxvY2tyZWxpZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShh dXhJbmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7 CiAKIAkJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5j dGlvbnMgKi8KQEAgLTQwNDIsMTMgKzQxODksNTYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkgKiBkb2luZyB0aGF0LCB3YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGNvdWxk IGhhdmUgdGhlIHRhYmxlIG9mCiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xkIGxpc3Qg b2YgaW5kZXhlcy4gIFNlZSAicGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZvciBtb3Jl IGRldGFpbHMuCisJKi8KKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8x KTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwor CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBOb3cgYnVpbGQgYWxsIGF1 eGlsaWFyeSBpbmRleGVzIGFuZCBtYXJrIHRoZW0gYXMgInJlYWR5LWZvci1pbnNlcnRzIi4KKwkg Ki8KKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5l d2lkeCA9IGxmaXJzdChsYyk7CisKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkv KgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBh IHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3Mg V0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBj bGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwor CQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFs aWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisKKwkJLyogQnVpbGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBh bnkgYWN0dWFsIGhlYXAgc2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KKwkJaW5kZXhfY29u Y3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKKwlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyoKKwkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0 aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKKwkgKiB0byBzZXQgdGhlIFBST0NfSU5f U0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzEpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7 CisJLyoKKwkgKiBXYWl0IHVudGlsIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhcmUgdGFrZW4gaW50 byBhY2NvdW50IGJ5IGFsbAorCSAqIHRyYW5zYWN0aW9ucy4KKwkgKi8KIAlXYWl0Rm9yTG9ja2Vy c011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwogCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCisJLyogTm93IGl0IGlzIHRpbWUgdG8gcGVyZm9ybSB0YXJnZXQgaW5kZXgg YnVpbGQuICovCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewogCQlSZWluZGV4SW5kZXhJ bmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDA5MSw2ICs0MjgxLDQxIEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFn IGhlcmUuCiAJICovCiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMp OworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IGFs bCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNlcnQiLiBTbywKKwkg KiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBpbmRl eGVzLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4 SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNp ZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2Vs ZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBh cmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2Nm bGFncygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9B U1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90 LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1Bf Q0xFQVJfUkVBRFkpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlOREVYIENPTkNVUlJF TlRMWQogCSAqCkBAIC00MDk4LDEyICs0MzIzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBwaGFzZS4gIFNlZSAicGhhc2Ug MyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCi0KLQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwotCVdhaXRGb3JMb2NrZXJzTXVs dGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleElu Zm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MTQxLDcgKzQzNjAsNyBAQCBSZWluZGV4UmVs YXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9p ZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVz c192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5k ZXhJZCwgc25hcHNob3QpOworCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lk eC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7CiAKIAkJLyoKIAkJICog V2UgY2FuIG5vdyBkbyBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVl ZCB0byBzYXZlCkBAIC00MTcwLDcgKzQzODksNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJ CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJCVdhaXRGb3JPbGRl clNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwpAQCAtNDI2MCwxNCArNDQ3OSwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8q CiAJICogUGhhc2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogTWFyayB0aGUg b2xkIGluZGV4ZXMgYXMgZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubyBydW5uaW5n Ci0JICogdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAg U2VlIGFsc28KKwkgKiBNYXJrIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFzIGRlYWQu IEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubworCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY291 bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KIAkgKiBpbmRleF9k cm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRl eF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzUpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vz c0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCkBAIC00Mjky LDYgKzQ1MTEsMjggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAl9CiAKKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRl eEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXIt cmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkg KiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRo YXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJ ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdf aW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkg KiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQo bmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJfQorCiAJLyogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgdXBk YXRlcyB2aXNpYmxlLiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CkBAIC00MzA1LDExICs0NTQ2LDExIEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK LQkgKiBEcm9wIHRoZSBvbGQgaW5kZXhlcy4KKwkgKiBEcm9wIHRoZSBvbGQgYW5kIGF1eGlsaWFy eSBpbmRleGVzLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF81KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCVdhaXRG b3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwog CiAJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC00MzI5 LDYgKzQ1NzAsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCWFkZF9leGFjdF9vYmpl Y3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKIAkJfQogCisJCWZvcmVhY2gobGMsIG5ld0lu ZGV4SWRzKQorCQl7CisJCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOworCQkJ T2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxh dGlvbklkOworCQkJb2JqZWN0Lm9iamVjdElkID0gaWR4LT5hdXhJbmRleElkOworCQkJb2JqZWN0 Lm9iamVjdFN1YklkID0gMDsKKworCQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3Qs IG9iamVjdHMpOworCQl9CisKIAkJLyoKIAkJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VS UkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCiAJCSAqIHJpZ2h0IGxvY2sg bGV2ZWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGU5N2UwOTQzZjViLi5iNTU2YmE0ODE3YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBJbmRleEluZm8gKgogbWFr ZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0 ICpleHByZXNzaW9ucywKIAkJCSAgTGlzdCAqcHJlZGljYXRlcywgYm9vbCB1bmlxdWUsIGJvb2wg bnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJICBib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwg Ym9vbCBzdW1tYXJpemluZywKLQkJCSAgYm9vbCB3aXRob3V0b3ZlcmxhcHMpCisJCQkgIGJvb2wg d2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKIHsKIAlJbmRleEluZm8gICpuID0gbWFr ZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUwLDYgKzg1MCw3IEBAIG1ha2VJbmRleEluZm8oaW50 IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMs CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlfU3VtbWFyaXppbmcgPSBz dW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CisJ bi0+aWlfQXV4aWxpYXJ5ID0gYXV4aWxpYXJ5OwogCiAJLyogc3VtbWFyaXppbmcgaW5kZXhlcyBj YW5ub3QgY29udGFpbiBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlBc3NlcnQoIXN1bW1hcml6aW5n IHx8IChudW1rZXlhdHRycyA9PSBudW1hdHRycykpOwpAQCAtODc1LDcgKzg3Niw2IEBAIG1ha2VJ bmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAq ZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0 ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtl cnMgPSAwOwotCW4tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3Nz aWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmgKaW5kZXggNTE4MjAxM2FhYmQuLmFiY2IxNDdkOWIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAg LTcwOCwxMSArNzA4LDEyIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJ CQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLwotCXZvaWQJCSgqaW5kZXhf dmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKLQkJCQkJCQkJCQlSZWxhdGlvbiBp bmRleF9yZWwsCi0JCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJ CQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0 YXRlICpzdGF0ZSk7CisJdm9pZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRh YmxlX3JlbCwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCXN0 cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hv dCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJ CQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0xODIwLDE5ICsxODIxLDI0IEBAIHRhYmxlX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh biAtIHNlY29uZCB0YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCiAgKgogICog U2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorICoKKyAqIE5vdGU6IGl0 IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8gY2xvc2Ugc29ydHN0YXRlcyBp bgorICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICovCiBzdGF0aWMgaW5saW5lIHZv aWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogCQkJCQkJ ICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4X2lu Zm8sCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJ bmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3Rh dGUsCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eHN0YXRlKQogewotCXRh YmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCi0JCQkJ CQkJCQkJCSAgIGluZGV4X3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfaW5mbywKLQkJCQkJCQkJ CQkJICAgc25hcHNob3QsCi0JCQkJCQkJCQkJCSAgIHN0YXRlKTsKKwlyZXR1cm4gdGFibGVfcmVs LT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJ CQkgIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X2luZm8sCisJCQkJCQkJCQkJCQkJ ICBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJCQkJCQkJCQkJCSAgYXV4c3Rh dGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZGFhOGJlZjVlZS4uNDcxM2YxOGU2OGQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBlbnVtCiB7CiAJSU5E RVhfQ1JFQVRFX1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VUX1ZBTElELAorCUlOREVYX0RS T1BfQ0xFQVJfUkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJRCwKIAlJTkRFWF9EUk9QX1NF VF9ERUFELAogfSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02NSw2ICs2Niw3IEBAIGV4dGVy biB2b2lkIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9uIGhlYXBSZWwsCiAjZGVmaW5l CUlOREVYX0NSRUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkKICNkZWZpbmUJSU5ERVhfQ1JF QVRFX1BBUlRJVElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5ERVhfQ1JFQVRFX0lOVkFMSUQJ CQkJKDEgPDwgNikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWQkJCQkoMSA8PCA3KQog CiBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkg Y29uc3QgY2hhciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC04Niw3ICs4OCw4IEBAIGV4dGVybiBP aWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSBiaXRzMTYgY29u c3RyX2ZsYWdzLAogCQkJCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkJCQkg Ym9vbCBpc19pbnRlcm5hbCwKLQkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCk7CisJCQkJCQkgT2lk ICpjb25zdHJhaW50SWQsCisJCQkJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSk7CiAKICNkZWZpbmUJ SU5ERVhfQ09OU1RSX0NSRUFURV9NQVJLX0FTX1BSSU1BUlkJKDEgPDwgMCkKICNkZWZpbmUJSU5E RVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFCQkoMSA8PCAxKQpAQCAtMTAwLDYgKzEwMywxMSBA QCBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAg Y29uc3QgY2hhciAqbmV3TmFtZSk7CiAKK2V4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgT2lkIG1haW5JbmRl eElkLAorCQkJCQkJCQkJCSAgT2lkIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJCQkJICBjb25zdCBj aGFyICpuZXdOYW1lKTsKKwogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9p ZCBoZWFwUmVsYXRpb25JZCwKIAkJCQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAt MTQ1LDcgKzE1Myw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJCQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4 dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCk7CitleHRlcm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogZXh0ZXJuIHZv aWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rp b24gYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3Mu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5kZXggN2M3MzZlN2IwM2IuLjZl MTQ1NzdlZjliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKQEAgLTk0LDE0ICs5NCwxNSBAQAog CiAvKiBQaGFzZXMgb2YgQ1JFQVRFIElOREVYIChhcyBhZHZlcnRpc2VkIHZpYSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UpICovCiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzEJCQkxCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTIKLSNkZWZp bmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJCTMKLSNkZWZpbmUgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNAotI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfVkFMSURBVEVfU09SVAkJNQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfVkFMSURBVEVfVEFCTEVTQ0FOCTYKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMwkJCTcKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJ CTIKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxECQkJMworI2RlZmluZSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNAorI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk1CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9WQUxJREFURV9TT1JUCQk2CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9WQUxJREFURV9JRFhNRVJHRQk3CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzQJCQk4CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUJCQk5Cisj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYJCQkxMAogCiAvKgogICogU3Vi cGhhc2VzIG9mIENSRUFURSBJTkRFWCwgZm9yIGluZGV4X2J1aWxkLgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAzODUwZGRlNGFkYi4uNzZmMjVlYzY4NmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC0xODcsOCArMTg3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJQW1DYWNoZQkJ CQlwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNCiAgKgkJQ29udGV4dAkJCQltZW1vcnkg Y29udGV4dCBob2xkaW5nIHRoaXMgSW5kZXhJbmZvCiAgKgotICogaWlfQ29uY3VycmVudCwgaWlf QnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCi0gKiBh cmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFu ZCBpaV9QYXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQgb25seQorICogZHVyaW5nIGluZGV4IGJ1aWxk OyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0t LS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApp bmRleCA1NDczY2U5YTI4OC4uNDkwNDc0OGY1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC05 OSw3ICs5OSw4IEBAIGV4dGVybiBJbmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50IG51bWF0dHJz LCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhwcmVzc2lvbnMs IExpc3QgKnByZWRpY2F0ZXMsCiAJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9k aXN0aW5jdCwKIAkJCQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCi0JCQkJCQkJ CWJvb2wgc3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkJYm9vbCBz dW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMsCisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5 KTsKIAogZXh0ZXJuIE5vZGUgKm1ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlv bik7CiBleHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBp bnQgbG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CmluZGV4IDlhZGU3YjgzNWU2Li5jYTc0ODQ0YjVjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5 IChmMSk9KGIpIGFscmVhZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBj cmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIp IGlzIGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0 IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJy ZW50bHkKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJf aGVhcChmMikgV0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJf aW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMTk3LDYgKzMxOTgs NyBAQCBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIp OwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBP TiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5p cXVlIGluZGV4ICJjb25jdXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlz IGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBS ZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFp bHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQg Y2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRl eF9pbmQ1OwpAQCAtMzIwOSw4ICszMjExLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBk dXBsaWNhdGVkLgogIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAog SW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElO VkFMSUQKKyAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQK ICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFM SUQKIAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBj b25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzIzOCw2ICszMjQyLDQ0IEBA IEluZGV4ZXM6CiAgICAgImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQog CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBh dXhpbGlhcnkgaW5kZXhlcworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOwor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlz IHRyaWNrIGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBp dAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4 X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXgg ImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitc ZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1 IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1 eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhf aW5kNl9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRl eCBhdXhpbGlhcnkgaW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitF UlJPUjogIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIg bm90IHN1cHBvcnRlZAorLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFy eSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFr ZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUg dmFsaWQuCitERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VS Uk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAg ICAgICAgICAgICAgICBeCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJ TkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlx dWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxp Y2F0ZWQuCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitS RUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lw cGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJ TlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5n IHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgi CitOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2Fu IGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAt LSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0 ZXMuICBUaGUKIC0tIGRlZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1h dGNoIHRoZSBvcmlnaW5hbAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5kZXhpbmcub3V0CmluZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0 IGluZGV4cmVsaWQ6OnJlZ2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAg fCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRf aWR4XzExICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBh cnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4 ICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3Zh bGlkX3RhYl8xMl9leHByX2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4 cHJfaWR4ICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2 YWxpZF9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYg cm93cykKIAogZHJvcCB0YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBv ZiByZXBsaWNhIGluZGV4ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDZjZjgyOGNhOGQwLi5lZDZjMjBhNDk1YyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwNDEsMTQgKzIwNDEsMTUgQEAgcGdfc3Rh dF9wcm9ncmVzc19jcmVhdGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBh cmFtMTAKICAgICAgICAgICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAg ICAgICAgICBXSEVOIDEgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0 ZXh0Ci0gICAgICAgICAgICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBD T0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5w YXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAg ICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRl eHQKLSAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1 cGxlcyc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBz Y2FubmluZyB0YWJsZSc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZv ciBvbGQgc25hcHNob3RzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcg Zm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4g OSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAg ICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkg aW5kZXgnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6 dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNl bmFtZSgocy5wYXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAg ICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBp bmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBz b3J0aW5nIHR1cGxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxp ZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAn d2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVO ICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAg ICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6 dGV4dAogICAgICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwK ICAgICBzLnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9p bmRleC5zcWwKaW5kZXggZTIxZmY0MjY1MTkuLjJjZmYxYWMyOWJlIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElO REVYIENPTkNVUlJFTlRMWSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hl YXAoZjEpOwogSU5TRVJUIElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNo ZWNrIGlmIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVh cChmMik7CitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhw cmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikg V0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9u IGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0xMzExLDEwICsxMzEyLDEyIEBAIENS RUFURSBUQUJMRSBjb25jdXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29u Y3VyX3JlaW5kZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3Jl YXRlcyBhbiBpbnZhbGlkIGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg Y29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElO REVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRs eSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBp bmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3Jl aW5kZXhfdGFiNAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJ TkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlv dXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVU RSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTMyNiw2ICsxMzI5 LDI0IEBAIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBc ZCBjb25jdXJfcmVpbmRleF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAK Ky0tIENoZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4 X2luZGV4X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMg KDEpLCAoMSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFu ZCBhdXhpbGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3Rh YjUKKy0tIE5vdCBhbGxvd2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElO REVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0 aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxp ZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hv dWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3Rh YjU7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlO REVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2lu ZGV4X3RhYjU7CisKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9u cyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5k ZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMu MAoK --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Disposition: attachment; filename="v18-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezs8 RnJvbSBmODAxNTdmOTFkNTFmMzc5YmZkYzdiYjkxYWQ5Yzg0ZmJmZjM5ZWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDA5LzEyXSBUcmFjayBhbmQgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyBpbiBEUk9Q L1JFSU5ERVgKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMsIGF1eGlsaWFyeSBp bmRleGVzIG1heSBiZSBsZWZ0IGFzIG9ycGhhbmVkIG9iamVjdHMgd2hlbiBlcnJvcnMgb2NjdXIg KGp1bmsgYXV4aWxpYXJ5IGluZGV4ZXMpLgoKVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgaGFuZGxp bmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKLSBhZGQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCBw YXJhbWV0ZXIgdG8gaW5kZXhfY3JlYXRlKCkgdG8gdHJhY2sgZGVwZW5kZW5jaWVzIGJldHdlZW4g bWFpbiBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMKLSBhdXRvbWF0aWNhbGx5IGRyb3AgYXV4aWxpYXJ5 IGluZGV4ZXMgd2hlbiB0aGUgbWFpbiBpbmRleCBpcyBkcm9wcGVkCi0gZGVsZXRlIGp1bmsgYXV4 aWxpYXJ5IGluZGV4ZXMgcHJvcGVybHkgZHVyaW5nIFJFSU5ERVggb3BlcmF0aW9ucwotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8ICAxNCArKy0KIGRvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAgICAgICB8ICAxOSArKy0tCiBzcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8ICA2NCArKysrKysrKysrLS0tCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jICAgICAgICAgICAgfCAgNTcgKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgIHwgIDM1ICsrKysrKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICB8ICA0OCArKysrKysrKyst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDEwNSArKysrKysrKysrKysrKysr KysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICB8ICA1NyAr KysrKysrKysrLQogMTIgZmlsZXMgY2hhbmdlZCwgMzYzIGluc2VydGlvbnMoKyksIDQyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4IGU3YTdhMTYwNzQyLi4y OThhMDkzZjU1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCkBAIC02NjgsMTAgKzY2 OCwxNiBAQCBJbmRleGVzOgogICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAogPC9w cm9ncmFtbGlzdGluZz4KIAotICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQotICAgIG1ldGhv ZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRv IHBlcmZvcm0KLSAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5k Pi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKLSAgICB0byByZWJ1aWxkIHRoZSBpbmRleCB3aXRo IDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPikuCisgICAgVGhl IHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhl IGluZGV4IHdpdGgKKyAgICA8Y29tbWFuZD5EUk9QIElOREVYPC9jb21tYW5kPi4gVGhlIGF1eGls aWFyeSBpbmRleCAoc3VmZml4ZWQgd2l0aAorICAgIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPikg d2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQgd2hlbiB0aGUgbWFpbgorICAgIGluZGV4IGlz IGRyb3BwZWQuIEFmdGVyIGRyb3BwaW5nIHRoZSBpbmRleGVzLCB5b3UgY2FuIHRyeSBhZ2FpbiB0 byBwZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRvCisgICAgcmVidWlsZCB0aGUgaW5kZXggd2l0 aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4sCisgICAgd2hp Y2ggd2lsbCBhbHNvIGhhbmRsZSBjbGVhbnVwIG9mIGFueSBpbnZhbGlkIGF1eGlsaWFyeSBpbmRl eGVzLikKKyAgICBJZiB0aGUgb25seSBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0 ZXJhbD5jY2F1eDwvbGl0ZXJhbD4KKyAgICByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMg anVzdCA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPgorICAgIGZvciB0aGF0IGluZGV4Lgog ICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVp bmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNTdjMzQ3ZjI5 MzAuLjYzNGJhNTVkMTg0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtNDc0LDE0ICs0NzQsMTcg QEAgSW5kZXhlczoKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICBJZiB0aGUgaW5kZXggbWFya2Vk IDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+IGlzIHN1ZmZpeGVkCi0gICAgPGxpdGVyYWw+Y2Nu ZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3Bv bmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5Ci0gICAgaW5kZXggY3JlYXRlZCBkdXJp bmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJlY29tbWVuZGVkCi0gICAgcmVj b3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9Q IElOREVYPC9saXRlcmFsPiwKLSAgICB0aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgotICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGlu c3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LAotICAgIGl0IGNvcnJlc3Bv bmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRleCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKLSAg ICB0aGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGp1c3QgZHJvcCBzYWlkIGlu ZGV4LCBzaW5jZSB0aGUKLSAgICByZWJ1aWxkIHByb3BlciBoYXMgYmVlbiBzdWNjZXNzZnVsLgor ICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUg dHJhbnNpZW50IGluZGV4CisgICAgY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0 aW9uLiBUaGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkKKyAgICBtZXRob2QgaXMgdG8gZHJvcCBpdCB1 c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwgdGhlbiBhdHRlbXB0CisgICAgPGNv bW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLiBUaGUgYXV4aWxpYXJ5 IGluZGV4CisgICAgKHN1ZmZpeGVkIHdpdGggPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+KSB3aWxs IGJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZAorICAgIGFsb25nIHdpdGggaXRzIG1haW4gaW5kZXgu IElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQKKyAgICA8bGl0ZXJhbD5j Y29sZDwvbGl0ZXJhbD4sIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRleCB3aGlj aAorICAgIGNvdWxkIG5vdCBiZSBkcm9wcGVkOyB0aGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0 aG9kIGlzIHRvIGp1c3QgZHJvcAorICAgIHNhaWQgaW5kZXgsIHNpbmNlIHRoZSByZWJ1aWxkIHBy b3BlciBoYXMgYmVlbiBzdWNjZXNzZnVsLiBJZiB0aGUgb25seQorICAgIGludmFsaWQgaW5kZXgg aXMgb25lIHN1ZmZpeGVkIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPiByZWNvbW1lbmRlZAorICAg IHJlY292ZXJ5IG1ldGhvZCBpcyBqdXN0IDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+IGZv ciB0aGF0IGluZGV4LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRl bmN5LmMKaW5kZXggMTgzMTZhMzk2OGIuLmFiNGMzZTJmYjRhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVu ZGVuY3kuYwpAQCAtMjg2LDcgKzI4Niw3IEBAIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJICogQWNxdWlyZSBkZWxldGlvbiBsb2NrIG9uIHRoZSB0YXJnZXQg b2JqZWN0LiAgKElkZWFsbHkgdGhlIGNhbGxlciBoYXMKIAkgKiBkb25lIHRoaXMgYWxyZWFkeSwg YnV0IG1hbnkgcGxhY2VzIGFyZSBzbG9wcHkgYWJvdXQgaXQuKQogCSAqLwotCUFjcXVpcmVEZWxl dGlvbkxvY2sob2JqZWN0LCAwKTsKKwlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgZmxhZ3Mp OwogCiAJLyoKIAkgKiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgdG8gZGVsZXRlIChpZSwg dGhlIGdpdmVuIG9iamVjdCBwbHVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNmMwOWM2YTJiNjcuLmJm MGJiNzk0NzRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC02ODgsNiArNjg4LDggQEAgVXBkYXRlSW5k ZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAgKgkJcGFyZW50IGluZGV4OyBvdGhlcndpc2UgSW52 YWxpZE9pZC4KICAqIHBhcmVudENvbnN0cmFpbnRJZDogaWYgY3JlYXRpbmcgYSBjb25zdHJhaW50 IG9uIGEgcGFydGl0aW9uLCB0aGUgT0lECiAgKgkJb2YgdGhlIGNvbnN0cmFpbnQgaW4gdGhlIHBh cmVudDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCisgKiBhdXhpbGlhcnlGb3JJbmRleElkOiBpZiBj cmVhdGluZyBhdXhpbGlhcnkgaW5kZXgsIHRoZSBPSUQgb2YgdGhlIG1haW4KKyAqCQlpbmRleDsg b3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiByZWxGaWxlTnVtYmVyOiBub3JtYWxseSwgcGFzcyBJ bnZhbGlkUmVsRmlsZU51bWJlciB0byBnZXQgbmV3IHN0b3JhZ2UuCiAgKgkJTWF5IGJlIG5vbnpl cm8gdG8gYXR0YWNoIGFuIGV4aXN0aW5nIHZhbGlkIGJ1aWxkLgogICogaW5kZXhJbmZvOiBzYW1l IGluZm8gZXhlY3V0b3IgdXNlcyB0byBpbnNlcnQgaW50byB0aGUgaW5kZXgKQEAgLTczNCw2ICs3 MzYsNyBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJIE9pZCBpbmRl eFJlbGF0aW9uSWQsCiAJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkgT2lkIHBhcmVudENv bnN0cmFpbnRJZCwKKwkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCSBSZWxGaWxlTnVt YmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkgY29uc3Qg TGlzdCAqaW5kZXhDb2xOYW1lcywKQEAgLTc3Niw2ICs3NzksOCBAQCBpbmRleF9jcmVhdGUoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQkgICAoKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FERF9DT05T VFJBSU5UKSAhPSAwKSk7CiAJLyogcGFydGl0aW9uZWQgaW5kZXhlcyBtdXN0IG5ldmVyIGJlICJi dWlsdCIgYnkgdGhlbXNlbHZlcyAqLwogCUFzc2VydCghcGFydGl0aW9uZWQgfHwgKGZsYWdzICYg SU5ERVhfQ1JFQVRFX1NLSVBfQlVJTEQpKTsKKwkvKiBhdXhpbGlhcnlGb3JJbmRleElkIGFuZCBJ TkRFWF9DUkVBVEVfQVVYSUxJQVJZIGFyZSByZXF1aXJlZCBib3RoIG9yIG5laXRoZXIgKi8KKwlB c3NlcnQoT2lkSXNWYWxpZChhdXhpbGlhcnlGb3JJbmRleElkKSA9PSBhdXhpbGlhcnkpOwogCiAJ cmVsa2luZCA9IHBhcnRpdGlvbmVkID8gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCA6IFJFTEtJ TkRfSU5ERVg7CiAJaXNfZXhjbHVzaW9uID0gKGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9 IE5VTEwpOwpAQCAtMTE3Nyw2ICsxMTgyLDE1IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERF UEVOREVOQ1lfUEFSVElUSU9OX1NFQyk7CiAJCX0KIAorCQkvKgorCQkgKiBSZWNvcmQgZGVwZW5k ZW5jeSBvbiB0aGUgbWFpbiBpbmRleCBpbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleC4KKwkJICov CisJCWlmIChPaWRJc1ZhbGlkKGF1eGlsaWFyeUZvckluZGV4SWQpKQorCQl7CisJCQlPYmplY3RB ZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgYXV4aWxpYXJ5Rm9ySW5k ZXhJZCk7CisJCQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVO REVOQ1lfQVVUTyk7CisJCX0KKwogCQkvKiBwbGFjZWhvbGRlciBmb3Igbm9ybWFsIGRlcGVuZGVu Y2llcyAqLwogCQlhZGRycyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CiAKQEAgLTE0NTksNiAr MTQ3Myw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogaW5kZXhSZWxh dGlvbklkICovCiAJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBwYXJlbnRJbmRleFJlbGlkICovCiAJ CQkJCQkJICBJbnZhbGlkT2lkLAkvKiBwYXJlbnRDb25zdHJhaW50SWQgKi8KKwkJCQkJCQkgIElu dmFsaWRPaWQsCS8qIGF1eGlsaWFyeUZvckluZGV4SWQgKi8KIAkJCQkJCQkgIEludmFsaWRSZWxG aWxlTnVtYmVyLCAvKiByZWxGaWxlTnVtYmVyICovCiAJCQkJCQkJICBuZXdJbmZvLAogCQkJCQkJ CSAgaW5kZXhDb2xOYW1lcywKQEAgLTE2MDksNiArMTYyNCw3IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfYXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG1haW5JbmRleElkLAogCQkJ CQkJCSAgSW52YWxpZE9pZCwgICAgLyogaW5kZXhSZWxhdGlvbklkICovCiAJCQkJCQkJICBJbnZh bGlkT2lkLCAgICAvKiBwYXJlbnRJbmRleFJlbGlkICovCiAJCQkJCQkJICBJbnZhbGlkT2lkLCAg ICAvKiBwYXJlbnRDb25zdHJhaW50SWQgKi8KKwkJCQkJCQkgIG1haW5JbmRleElkLCAgIC8qIGF1 eGlsaWFyeUZvckluZGV4SWQgKi8KIAkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVyLCAvKiBy ZWxGaWxlTnVtYmVyICovCiAJCQkJCQkJICBuZXdJbmZvLAogCQkJCQkJCSAgaW5kZXhDb2xOYW1l cywKQEAgLTM4NDIsNiArMzg1OCw3IEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCBpbmRleElkLAogCQkJCWhlYXBSZWxhdGlvbjsKIAlPaWQJCQloZWFwSWQ7CiAJ T2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJaW50CQkJc2F2ZV9z ZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAlJbmRleEluZm8gICppbmRleElu Zm87CkBAIC0zODk4LDYgKzM5MTUsMTkgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFy YW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCisJLyogQ2hlY2sgZm9y IHRoZSBhdXhpbGlhcnkgaW5kZXggZm9yIHRoYXQgaW5kZXgsIGl0IG5lZWRzIHRvIGRyb3BwZWQg Ki8KKwlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaW5kZXhJZCk7CisJaWYg KE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0 SWQgPSBqdW5rQXV4SW5kZXhJZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJcGVyZm9y bURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJCSBQRVJGT1JNX0RFTEVU SU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fUVVJRVRMWSk7CisJfQor CiAJLyoKIAkgKiBPcGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24gYW5kIGdldCBhbiBleGNs dXNpdmUgbG9jayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBvbmUgZWxzZSBpcyB0b3Vj aGluZyB0aGlzIHBhcnRpY3VsYXIgaW5kZXguCkBAIC00MTg2LDcgKzQyMTYsOCBAQCByZWluZGV4 X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywK IHsKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7Ci0JTGlzdAkgICAqaW5kZXhJ ZHM7CisJTGlzdAkgICAqaW5kZXhJZHMsCisJCQkgICAqYXV4SW5kZXhJZHMgPSBOSUw7CiAJY2hh cgkJcGVyc2lzdGVuY2U7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqaW5k ZXhJZDsKQEAgLTQyNzUsMTMgKzQzMDYsMzAgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJZWxzZQogCQlwZXJzaXN0ZW5j ZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAorCWZvcmVhY2goaW5kZXhJZCwgaW5k ZXhJZHMpCisJeworCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CisJCU9p ZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkvKiBBbGwgU1RJUiBp bmRleGVzIGFyZSBhdXhpbGlhcnkgaW5kZXhlcyAqLworCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FN X09JRCkKKwkJeworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNF KQorCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJCWF1eEluZGV4SWRzID0g bGFwcGVuZF9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKTsKKwkJfQorCX0KKwogCS8qIFJlaW5k ZXggYWxsIHRoZSBpbmRleGVzLiAqLwogCWkgPSAxOwogCWZvcmVhY2goaW5kZXhJZCwgaW5kZXhJ ZHMpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJ CWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7Ci0JCU9pZAkJ CWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkvKiBBdXhpbGlhcnkgaW5k ZXhlcyBhcmUgZ29pbmcgdG8gYmUgZHJvcHBlZCBkdXJpbmcgbWFpbiBpbmRleCByZWJ1aWxkICov CisJCWlmIChsaXN0X21lbWJlcl9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKSkKKwkJCWNvbnRp bnVlOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5kZXhlcyBvbiBhIFRPQVNUIHRh YmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQzMDcsMTggKzQzNTUsNiBAQCByZWluZGV4X3Jl bGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAkJ CWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCi0JCXsKLQkJ CWVyZXBvcnQoV0FSTklORywKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRl eCBcIiVzLiVzXCIiLAotCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShpbmRleE5hbWVzcGFjZUlk KSwKLQkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkpOwotCQkJaWYgKGZsYWdzICYgUkVJ TkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQotCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGlu ZGV4T2lkKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJcmVpbmRleF9pbmRleChzdG10LCBpbmRl eE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTKSwKIAkJCQkJICBw ZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19kZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKaW5kZXggYzhiMTFm ODg3ZTIuLjFjMjc1ZWYzNzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Rl cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKQEAgLTEwMzUsNiAr MTAzNSw2MyBAQCBnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCkKIAlyZXR1cm4gY29u c3RyYWludElkOwogfQogCisvKgorICogZ2V0X2F1eGlsaWFyeV9pbmRleAorICoJCUdpdmVuIHRo ZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGl0cyBhdXhpbGlhcnkKKyAqCQlp bmRleCwgb3IgSW52YWxpZE9pZCBpZiB0aGVyZSBpcyBubyBhdXhpbGlhcnkgaW5kZXguCisgKi8K K09pZAorZ2V0X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCkKK3sKKwlPaWQJCQlhdXhpbGlh cnlJbmRleE9pZCA9IEludmFsaWRPaWQ7CisJUmVsYXRpb24JZGVwUmVsOworCVNjYW5LZXlEYXRh IGtleVszXTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisKKwkvKiBTZWFy Y2ggdGhlIGRlcGVuZGVuY3kgdGFibGUgZm9yIHRoZSBpbmRleCAqLworCWRlcFJlbCA9IHRhYmxl X29wZW4oRGVwZW5kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0 KCZrZXlbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmY2xhc3NpZCwKKwkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvblJlbGF0 aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzFdLAorCQkJCUFudW1fcGdfZGVwZW5kX3JlZm9i amlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdl dERhdHVtKGluZGV4SWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzJdLAorCQkJCUFudW1fcGdfZGVw ZW5kX3JlZm9ianN1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9JTlQ0RVEsCisJ CQkJSW50MzJHZXREYXR1bSgwKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGRlcFJl bCwgRGVwZW5kUmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDMsIGtleSk7 CisKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJRm9ybV9wZ19kZXBlbmQgZGVwcmVjID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRT VFJVQ1QodHVwKTsKKworCQkvKgorCQkgKiBXZSBhc3N1bWUgYW55IEFVVE8gZGVwZW5kZW5jeSBv biBpbmRleCB3aXRoIHJlbF9raW5kCisJCSAqIG9mIFJFTEtJTkRfSU5ERVggaXMgdGhhdCB3ZSBh cmUgbG9va2luZyBmb3IuCisJCSAqLworCQlpZiAoZGVwcmVjLT5jbGFzc2lkID09IFJlbGF0aW9u UmVsYXRpb25JZCAmJgorCQkJKGRlcHJlYy0+ZGVwdHlwZSA9PSBERVBFTkRFTkNZX0FVVE8pICYm CisJCQlnZXRfcmVsX3JlbGtpbmQoZGVwcmVjLT5vYmppZCkgPT0gUkVMS0lORF9JTkRFWCkKKwkJ eworCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBkZXByZWMtPm9iamlkOworCQkJYnJlYWs7CisJCX0K Kwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBhdXhpbGlhcnlJbmRleE9pZDsKK30KKwogLyoKICAq IGdldF9pbmRleF9yZWZfY29uc3RyYWludHMKICAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4 LCByZXR1cm4gdGhlIE9JRCBvZiBhbGwgZm9yZWlnbiBrZXkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpp bmRleCAwZWUyZmQ1ZTdkZS4uMGVlOGNiZjRjYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAg LTMxOSw3ICszMTksNyBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9h c3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWNvbG9wdGlvbnNbMV0gPSAwOwogCiAJaW5kZXhf Y3JlYXRlKHRvYXN0X3JlbCwgdG9hc3RfaWR4bmFtZSwgdG9hc3RJbmRleE9pZCwgSW52YWxpZE9p ZCwKLQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkgSW52YWxpZE9pZCwgSW52YWxp ZE9pZCwgSW52YWxpZE9pZCwKIAkJCQkgaW5kZXhJbmZvLAogCQkJCSBsaXN0X21ha2UyKCJjaHVu a19pZCIsICJjaHVua19zZXEiKSwKIAkJCQkgQlRSRUVfQU1fT0lELApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYwppbmRleCAzODhjM2Y5MmRhZS4uMDU5MzhmZjk1ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAogCWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4UmVsYXRpb25O YW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCi0JCQkJCSBwYXJlbnRDb25zdHJh aW50SWQsCisJCQkJCSBwYXJlbnRDb25zdHJhaW50SWQsIEludmFsaWRPaWQsCiAJCQkJCSBzdG10 LT5vbGROdW1iZXIsIGluZGV4SW5mbywgaW5kZXhDb2xOYW1lcywKIAkJCQkJIGFjY2Vzc01ldGhv ZElkLCB0YWJsZXNwYWNlSWQsCiAJCQkJCSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIG9wY2xh c3NPcHRpb25zLApAQCAtMzYzOSw2ICszNjM5LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAl7CiAJCU9pZAkJCWluZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtB dXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZl OwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zOTg4LDYgKzM5ODksNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTk1LDYgKzM5OTcsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDY4LDEy ICs0MDcxLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwODMsNiArNDA5MSw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT5zYWZlID0gaWR4LT5zYWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxl SWQ7CiAJCW5ld2lkeC0+YW1JZCA9IGlkeC0+YW1JZDsKQEAgLTQxMDQsMTAgKzQxMTMsMTggQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2Nr UmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJ ZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsK KwkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBw YWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJCQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVs LT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxh dGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lk SXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWws IE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9j bG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsKIApAQCAtNDI4OCw3ICs0MzA1LDggQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBp bmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBm cmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICog d2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhl cyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5kZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwog CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKQEAgLTQzMTEsNiArNDMyOSw5IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5k ZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlz IG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJaWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4 SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJ ZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC00NTI5LDYgKzQ1NTAsOCBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlk LCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlpZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJ bmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQs IG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwogCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpA QCAtNDU4MCw2ICs0NjAzLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qu b2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwg b2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJ eworCisJCQkJb2JqZWN0Lm9iamVjdElkID0gaWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0 LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDI3MDVjZjExMzMwLi45MWMwNGU1YmYxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTE1MzIsNiArMTUzMiw4IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlM aXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZsYWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9 IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVtb3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJ CQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJPUCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBs b2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rpb25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQp CkBAIC0xNTkyLDkgKzE1OTQsMjAgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQog CQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9 CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3Jj ZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQorCSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBj YXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJvcCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBv ZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdvIGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICog d2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdzIG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xl YW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRlX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJCQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJ CQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKIAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJl bGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2JqZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBu ZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0 KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+b2JqZWN0cykKIAl7CkBAIC0xNjQ2LDYgKzE2NTks MzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9S TV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJCX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGlu ZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJ ICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxpYXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0 IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBjb25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBw ZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxldGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgs IGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAq IGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUgaXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9w LT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChmbGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VS UkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5hY3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVY KQorCQl7CisJCQlPaWQganVua0F1eEluZGV4T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxP aWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmpl Y3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25J ZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBqdW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9i amVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklD VCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJ CSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElP Tl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJblRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1Ag SU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50 IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQgd2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkg KiBlaXRoZXIuCkBAIC0xNjc0LDEyICsxNzE1LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3Rt dCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0gcmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAw OwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0 KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9s dmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJm b3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNz ZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkz MTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJu IExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50 aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5n X29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7Citl eHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5kZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlz dCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aAppbmRleCA0NzEzZjE4ZTY4ZC4uNTNiMmIxM2VmYzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTcz LDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9uSWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVs aWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5 Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxlTnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkg SW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCBjYTc0ODQ0 YjVjNi4uYWNhNmVjNTdhZDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9p bmRleC5vdXQKQEAgLTMyNjUsMjAgKzMyNjUsMTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhp bGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRl eCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVk CiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRl eCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVS RSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9uICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5v dCBleGlzdAotTElORSAxOiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMx ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgXgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUg V0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRy b3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGlu ZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJs aWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor SW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9Q IElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VS VCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlk IGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVu aXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVw bGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28g dGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBX SEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRF WCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUg aW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0 ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlO REVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGlu ZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6 ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBO T1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJl IHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMK K1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3Rh YjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMx ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAi YXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRl eF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK Ky0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAg ICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVF LCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVw bGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEp OworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09O Q1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjog IGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDog IEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMg ZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBG Uk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1 cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2lu ZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhf aW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7Cist LSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFM VUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChj MSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5k NiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0 aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxp ZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFp biBpbmRleCBDT05DVVJSRU5UTFkKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9p bmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2lu ZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2lu ZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIElu c2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMg KDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJ TkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsK K0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2Igor REVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4 IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGlj LmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwog RFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMg d2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2Yg dGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCAyY2ZmMWFjMjliZS4uZTE0NjRlYWE2N2MgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtMTM0MCwxMSArMTM0MCw2MiBA QCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFs c28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0g VGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2Fu IGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEg PSAxOworREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxk IGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4 X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9p bmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGlj YXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOwor LS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1h a2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21l IHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hv dWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3Rh YjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlO REVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBp cyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK Ky0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RS T1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJ TlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52 YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2lu ZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZp b3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxF VEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBl ZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg YXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1 eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVw bGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEp OworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09O Q1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlz IG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVj b21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0g RHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitc ZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0 IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSks ICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0g RHJvcCBtYWluIGluZGV4CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJl IGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBU QUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRo IGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCi0tIAoyLjQzLjAKCg== --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0010-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="v18-0010-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezu9 RnJvbSBmZDhiZDA5OWYxMDlkODViOWQ2ZWJjOWJmMjRiZmYyNTI1MDczYzZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDEwLzEyXSBPcHRpbWl6ZSBhdXhpbGlhcnkgaW5kZXggaGFuZGxpbmcKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClNraXAgdW5uZWNlc3NhcnkgY29tcHV0YXRpb25z IGZvciBhdXhpbGlhcnkgaW5kaWNlcyBieToKLSBpbiB0aGUgaW5kZXjigJBpbnNlcnQgcGF0aCwg ZGV0ZWN0IGF1eGlsaWFyeSBpbmRleGVzIGFuZCBieXBhc3MgRGF0dW0gdmFsdWUgY29tcHV0YXRp b24KLSBzZXQgaW5kZXhVbmNoYW5nZWQ9ZmFsc2UgZm9yIGF1eGlsaWFyeSBpbmRpY2VzIHRvIGF2 b2lkIHJlZHVuZGFudCBjaGVja3MKClRoZXNlIG9wdGltaXphdGlvbnMgcmVkdWNlIG92ZXJoZWFk IGR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBiZjBiYjc5 NDc0Yi4uZDFiOTY3MDNiYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI5MzIsNiArMjkzMiwxNyBA QCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRl eHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8qIEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVk IGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQgKi8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwgJiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDZi MmU0NjJiNzBiLi4wZDVmYTRkZDc5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK QEAgLTQ0MCwxMSArNDQwLDE0IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVyZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4g aW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhpcwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5n IGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlm IHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAq CisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9w dGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3Vu Y2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUs Ci0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZvLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRp b24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlf QXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRS ZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBlc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4 SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29u c3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRp b24gKi8KLS0gCjIuNDMuMAoK --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Disposition: attachment; filename="v18-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezv10 RnJvbSAxMjQ5ODkwZDRiZTgwMWRkMWI5MTQ2ODQ3ZGZhOGJkODhmNmUyZjY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxODozMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDExLzEyXSBSZWZyZXNoIHNuYXBzaG90IHBlcmlvZGljYWxseSBkdXJpbmcgaW5k ZXgKIHZhbGlkYXRpb24KCkVuaGFuY2VzIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudGx5 IGJ1aWx0IGluZGV4ZXMgYnkgcGVyaW9kaWNhbGx5IHJlZnJlc2hpbmcgc25hcHNob3RzIHJhdGhl ciB0aGFuIHVzaW5nIGEgc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdC4gVGhpcyBhZGRyZXNzZXMg aXNzdWVzIHdpdGggeG1pbiBwcm9wYWdhdGlvbiBkdXJpbmcgbG9uZy1ydW5uaW5nIHZhbGlkYXRp b25zLgoKVGhlIHZhbGlkYXRpb24gbm93IHRha2VzIGEgZnJlc2ggc25hcHNob3QgZXZlcnkgZmV3 IHBhZ2VzLCBhbGxvd2luZyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgcmVzdG9y ZXMgZmVhdHVyZSBvZiBjb21taXQgZDlkMDc2MjIyZjViLCB3aGljaCB3YXMgcmV2ZXJ0ZWQgaW4g Y29tbWl0IGUyOGJiODg1MTk2OS4gTmV3IFNUSVItYmFzZWQgYXBwcm9hY2ggaXMgbm90IGRlcGVu ZHMgb24gc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdCBhbnltb3JlLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICAgICB8IDExICsrLQogZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgICAgIHwgMTEgKystCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNzcgKysrKysrKysrKysrKysrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgICB8IDEyICsrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgNDIgKysrKysrKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgNTAgKyst LS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAg fCAgNyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCAgICAgICAgICAgICAgICAgIHwg MTUgKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI4 ICsrKysrKysKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICAxICsKIDEzIGZpbGVzIGNoYW5nZWQsIDE3OSBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAppbmRleCAyOThhMDkzZjU1NC4uNjIyMGE4 MDQ3NGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbApAQCAtODgxLDkgKzg4MSwxNCBA QCBJbmRleGVzOgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBMaWtlIGFueSBsb25nLXJ1bm5p bmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4gb24gYQotICAg dGFibGUgY2FuIGFmZmVjdCB3aGljaCB0dXBsZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVu dAotICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCisgICBE dWUgdG8gdGhlIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIHVzaW5nIHBlcmlvZGljYWxseSByZWZy ZXNoZWQgc25hcHNob3RzIGFuZAorICAgYXV4aWxpYXJ5IGluZGV4ZXMsIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGRzIGhhdmUgbWluaW1hbCBpbXBhY3Qgb24gY29uY3VycmVudAorICAgPGNvbW1hbmQ+ VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25zLiBUaGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWR2 YW5jZXMgaXRzCisgICBpbnRlcm5hbCB0cmFuc2FjdGlvbiBob3Jpem9uIGR1cmluZyB0aGUgYnVp bGQgcHJvY2VzcywgYWxsb3dpbmcKKyAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcmVt b3ZlIGRlYWQgdHVwbGVzIG9uIG90aGVyIHRhYmxlcyB3aXRob3V0CisgICBoYXZpbmcgdG8gd2Fp dCBmb3IgdGhlIGVudGlyZSBpbmRleCBidWlsZCB0byBjb21wbGV0ZS4gT25seSBkdXJpbmcgdmVy eSBicmllZgorICAgcGVyaW9kcyB3aGVuIHNuYXBzaG90cyBhcmUgYmVpbmcgcmVmcmVzaGVkIG1p Z2h0IHRoZXJlIGJlIGFueSB0ZW1wb3JhcnkgZWZmZWN0CisgICBvbiBjb25jdXJyZW50IDxjb21t YW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0aW9ucy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbAppbmRleCA2MzRiYTU1ZDE4NC4uYjg4NzU3NGYxMDYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCkBAIC00OTgsMTAgKzQ5OCwxMyBAQCBJbmRleGVzOgogICAgPC9wYXJhPgog CiAgICA8cGFyYT4KLSAgICBMaWtlIGFueSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21t YW5kPlJFSU5ERVg8L2NvbW1hbmQ+IG9uIGEgdGFibGUKLSAgICBjYW4gYWZmZWN0IHdoaWNoIHR1 cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICAgPGNvbW1hbmQ+VkFDVVVNPC9j b21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCi0gICA8L3BhcmE+CisgICAgPGNvbW1hbmQ+UkVJ TkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGhhcyBtaW5pbWFsCisgICAgaW1wYWN0IG9uIHdo aWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwv Y29tbWFuZD4KKyAgICBvcGVyYXRpb25zIG9uIG90aGVyIHRhYmxlcy4gVGhpcyBpcyBhY2hpZXZl ZCB0aHJvdWdoIHBlcmlvZGljIHNuYXBzaG90CisgICAgcmVmcmVzaGVzIGFuZCB0aGUgdXNlIG9m IGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZyB0aGUgcmVidWlsZCBwcm9jZXNzLAorICAgIGFsbG93 aW5nIHRoZSBzeXN0ZW0gdG8gYWR2YW5jZSBpdHMgdHJhbnNhY3Rpb24gaG9yaXpvbiByZWd1bGFy bHkgcmF0aGVyIHRoYW4KKyAgICBtYWludGFpbmluZyBhIHNpbmdsZSBsb25nLXJ1bm5pbmcgc25h cHNob3QuCisgIDwvcGFyYT4KIAogICAgPHBhcmE+CiAgICAgPGNvbW1hbmQ+UkVJTkRFWCBTWVNU RU08L2NvbW1hbmQ+IGRvZXMgbm90IHN1cHBvcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDZmNzE4ZmViNmQ1Li5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC00MDEsMTIgKzQwMSwxMiBAQCB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBs aXZlIHR1cGxlLgogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxs IG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB2YWxpZGF0ZQogdGhlIGluZGV4LiAg VGhpcyBzZWFyY2hlcyBmb3IgdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXggaW4gYXV4aWxp YXJ5Ci1pbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2libGUg dG8gcmVmZXJlbmNlIHNuYXBzaG90LgoraW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9u ZXMgaWYgdGhlbSB2aXNpYmxlIHRvIGZyZXNoIHNuYXBzaG90LgogQWdhaW4sIHRoZSBpbmRleCBl bnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1 dAogdGhlIHZhbHVlIHRvIGJlIGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBs ZS4KIAogVGhlbiB3ZSB3YWl0IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2 ZSBhIHNuYXBzaG90IG9sZGVyIHRoYW4KLXRoZSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGlz IGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlzCit0aGUgbGF0ZXN0IHVzZWQg c25hcHNob3QgaXMgZmluaXNoZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKIGFsaXZl IGFueSBsb25nZXIgd2hvIGNvdWxkIG5lZWQgdG8gc2VlIGFueSB0dXBsZXMgdGhhdCBtaWdodCBi ZSBtaXNzaW5nCiBmcm9tIHRoZSBpbmRleCwgYXMgd2VsbCBhcyBlbnN1cmluZyB0aGF0IG5vIG9u ZSBjYW4gc2VlIGFueSBpbmNvbnNpc3RlbnQKIHJvd3MgaW4gYSBicm9rZW4gSE9UIGNoYWluICh0 aGUgZmlyc3QgY29uZGl0aW9uIGlzIHN0cm9uZ2VyIHRoYW4gdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA2MzNiYzI0NWUyOC4uZGQ2OTk0ZWQ5OGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjAzNCwyMyArMjAz NCwyNiBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0KAogCXJl dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgVHJhbnNhY3Rpb25JZAogaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAg UmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAot CQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUg KnN0YXRlLAogCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICphdXhTdGF0ZSkKIHsKKwlUcmFu c2FjdGlvbklkIGxpbWl0WG1pbjsKKwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwog CWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAKKwlTbmFwc2hvdAkJc25hcHNob3Q7CiAJ VHVwbGVUYWJsZVNsb3QgICpzbG90OwogCUVTdGF0ZQkJCSplc3RhdGU7CiAJRXhwckNvbnRleHQJ CSplY29udGV4dDsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NT dHJhdGVneShCQVNfQlVMS1JFQUQpOwogCi0JaW50CQkJCW51bV90b19jaGVjazsKKwlpbnQJCQkJ bnVtX3RvX2NoZWNrLAorCQkJCQlwYWdlX3JlYWRfY291bnRlciA9IDE7IC8qIHNldCB0byAxIHRv IHNraXAgc25hcHNob3QgcmVzZXQgYXQgc3RhcnQgKi8KIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxl c19mb3JfY2hlY2s7CiAJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2Rh dGE7CiAKQEAgLTIwNjEsMTQgKzIwNjQsMTYgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIFVzZSAxMCUgb2YgbWVtb3J5IGZvciB0dXBsZSBz dG9yZS4gKi8KIAlpbnQJCXN0b3JlX3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21l bSAvIDEwOwogCi0JLyoKLQkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNv cnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKLQkgKiBpdGVtIHBvaW50ZXJzLiAgVGhp cyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAotCSAq IGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGlu dDggaXMKLQkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgotCSAqLworCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCiAJdHVwbGVzX2Zvcl9j aGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZhbHNlLCBmYWxzZSwgc3Rv cmVfd29ya19tZW1fcGFydCk7CiAKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBz aG90KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisK IAkvKgogCSAqIHNhbml0eSBjaGVja3MKIAkgKi8KQEAgLTIwODQsNiArMjA4OSwyOSBAQCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAlzdGF0ZS0+ dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29ydCA9IE5VTEw7CiAKKwkvKgorCSAqIE5vdyB0 YWtlIHRoZSBmaXJzdCBzbmFwc2hvdCB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2Fu ZGlkYXRlCisJICogdHVwbGVzLiBXZSBhcmUgZ29pbmcgdG8gcmVwbGFjZSBpdCBieSBuZXdlciBz bmFwc2hvdCBldmVyeSBzbyBvZnRlbgorCSAqIHRvIHByb3BhZ2F0ZSBob3Jpem9uLgorCSAqCisJ ICogQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluIHVzZSB0aGF0IHRy ZWF0IHNvbWUgdHJhbnNhY3Rpb24KKwkgKiBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciB0ZW1wb3Jh cnkgc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4KKwkgKgorCSAqIElmIHN1Y2ggYSByZWNl bnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24gZGVsZXRlZCB0dXBsZXMgaW4gdGhlIHRhYmxlLAor CSAqIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHlldCB0aG9zZSB0cmFu c2FjdGlvbnMgd2hpY2gKKwkgKiBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9n cmVzcyB3aWxsIGV4cGVjdCBzdWNoIHR1cGxlcyB0bworCSAqIGJlIHRoZXJlIG9uY2Ugd2UgbWFy ayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcg Zm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJlZm9yZQorCSAqIHdlIG1h cmsgdGhlIGluZGV4IGFzIHZhbGlkLCBmb3IgdGhhdCByZWFzb24gbGltaXRYbWluIGlzIHN1cHBv cnRlZC4KKwkgKgorCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwg c2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5CisJICogbmVlZCBhIHNuYXBzaG90LgorCSAq LworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWlu OworCiAJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVy VHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNs b3QoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pLApAQCAtMjExNyw2ICsyMTQ1LDcgQEAg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiAJCUxv Y2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CiAJCWJsb2NrX251bWJlciA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1Zik7CisJCXBhZ2VfcmVhZF9jb3VudGVyKys7CiAKIAkJaSA9IDA7 CiAJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQpAQCAt MjE3Miw2ICsyMjAxLDIwIEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJfQogCiAJCVJlbGVhc2VCdWZmZXIoYnVmKTsKKyNkZWZpbmUgVkFMSURB VEVfSU5ERVhfUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgNDA5NgorCQlpZiAocGFnZV9yZWFk X2NvdW50ZXIgJSBWQUxJREFURV9JTkRFWF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAw KQorCQl7CisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHRvIG1ha2Ugc3VyZSB3ZSBwcm9wYWdhdGUgeG1pbiAqLworCQkJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKworCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCS8q IHhtaW4gc2hvdWxkIG5vdCBnbyBiYWNrd2FyZHMsIGJ1dCBqdXN0IGZvciB0aGUgY2FzZSovCisJ CQlsaW1pdFhtaW4gPSBUcmFuc2FjdGlvbklkTmV3ZXIobGltaXRYbWluLCBzbmFwc2hvdC0+eG1p bik7CisJCX0KIAl9CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwpAQCAt MjE4MSw5ICsyMjI0LDI1IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAlyZWFkX3N0cmVhbV9lbmQocmVhZF9zdHJlYW0pOwogCXR1cGxlc3RvcmVf ZW5kKHR1cGxlc19mb3JfY2hlY2spOwogCisJLyoKKwkgKiBEcm9wIHRoZSBsYXRlc3Qgc25hcHNo b3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNo b3QgaG9sZGVycywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2Vz IGFsc28KKwkgKiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBz ZWUgb3VyIHNuYXBzaG90IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4KKwkgKi8KKwlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4gPT0gSW52YWxp ZFRyYW5zYWN0aW9uSWQpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYgKE15UHJvYy0+ eGlkID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZCIpOworI2VuZGlmCiAJLyogVGhlc2UgbWF5IGhhdmUg YmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9F eHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBO VUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggZDE4NmNlOWVjMzcuLjhkNzU1NDcwZThjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4o UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwK IAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0IHZlcnkgZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5 IHdvcmtfbWVtLgogCSAqCiAJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIGRlYWQgdHVw bGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAotCSAqIHNpbmNlIHdlIHdhaXQg Zm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ugc25hcHNob3QgZHVyaW5nIHRo ZQorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiBsYXRlc3Qg c25hcHNob3QgZHVyaW5nIHRoZQogCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCiAJaWYgKGlu ZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA4MTE3MWYzNTQ1MS4uZDcyMWZhNDVhMGMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtMTkxLDE0ICsxOTEsMTYg QEAgdmFjdXVtTGVhZlBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJlbGF0aW9uIGluZGV4 LCBCdWZmZXIgYnVmZmVyLAogCQkJICogQWRkIHRhcmdldCBUSUQgdG8gcGVuZGluZyBsaXN0IGlm IHRoZSByZWRpcmVjdGlvbiBjb3VsZCBoYXZlCiAJCQkgKiBoYXBwZW5lZCBzaW5jZSBWQUNVVU0g c3RhcnRlZC4gIChJZiB4aWQgaXMgaW52YWxpZCwgYXNzdW1lIGl0CiAJCQkgKiBtdXN0IGhhdmUg aGFwcGVuZWQgYmVmb3JlIFZBQ1VVTSBzdGFydGVkLCBzaW5jZSBSRUlOREVYCi0JCQkgKiBDT05D VVJSRU5UTFkgbG9ja3Mgb3V0IFZBQ1VVTS4pCisJCQkgKiBDT05DVVJSRU5UTFkgbG9ja3Mgb3V0 IFZBQ1VVTSwgaWYgbXlYbWluIGlzIGludmFsaWQgaXQgaXMKKwkJCSAqIHZhbGlkYXRpb24gc2Nh bi4pCiAJCQkgKgogCQkJICogTm90ZTogd2UgY291bGQgbWFrZSBhIHRpZ2h0ZXIgdGVzdCBieSBz ZWVpbmcgaWYgdGhlIHhpZCBpcwogCQkJICogInJ1bm5pbmciIGFjY29yZGluZyB0byB0aGUgYWN0 aXZlIHNuYXBzaG90OyBidXQgc25hcG1nci5jCiAJCQkgKiBkb2Vzbid0IGN1cnJlbnRseSBleHBv cnQgYSBzdWl0YWJsZSBBUEksIGFuZCBpdCdzIG5vdCBlbnRpcmVseQogCQkJICogY2xlYXIgdGhh dCBhIHRpZ2h0ZXIgdGVzdCBpcyB3b3J0aCB0aGUgY3ljbGVzIGFueXdheS4KIAkJCSAqLwotCQkJ aWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVhtaW4pKQor CQkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiZHMtPm15WG1pbikgfHwKKwkJCQkJVHJhbnNh Y3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlkLCBiZHMtPm15WG1pbikpCiAJCQkJc3BnQWRk UGVuZGluZ1RJRChiZHMsICZkdC0+cG9pbnRlcik7CiAJCX0KIAkJZWxzZQpAQCAtODA4LDcgKzgx MCw2IEBAIHNwZ3ZhY3V1bXNjYW4oc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJLyogRmluaXNo IHNldHRpbmcgdXAgc3BnQnVsa0RlbGV0ZVN0YXRlICovCiAJaW5pdFNwR2lzdFN0YXRlKCZiZHMt PnNwZ3N0YXRlLCBpbmRleCk7CiAJYmRzLT5wZW5kaW5nTGlzdCA9IE5VTEw7Ci0JYmRzLT5teVht aW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCWJkcy0+bGFzdEZpbGxlZEJsb2NrID0g U1BHSVNUX0xBU1RfRklYRURfQkxLTk87CiAKIAkvKgpAQCAtOTU4LDYgKzk1OSwxMCBAQCBzcGdi dWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cywKIAliZHMuc3RhdHMgPSBzdGF0czsKIAliZHMuY2FsbGJhY2sgPSBjYWxsYmFjazsKIAli ZHMuY2FsbGJhY2tfc3RhdGUgPSBjYWxsYmFja19zdGF0ZTsKKwlpZiAoaW5mby0+dmFsaWRhdGVf aW5kZXgpCisJCWJkcy5teVhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwllbHNlCisJCWJk cy5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCiAJc3BndmFjdXVtc2Nhbigm YmRzKTsKIApAQCAtOTk4LDYgKzEwMDMsNyBAQCBzcGd2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVt SW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJYmRzLnN0YXRzID0g c3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwogCQliZHMuY2FsbGJhY2tf c3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsK IAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBkMWI5Njcw M2JiYy4uZTcwN2IwMTJmNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1MzQsOCArMzUzNCw5IEBA IEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaW5zZXJ0IHRo ZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRp c3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1 aXJlZCB0byBiZSB1cGRhdGVkLgogICoKLSAqIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ug c25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCi0gKiB0byB0aGlz IHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5k ZXguCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUg dmFsaWQgYWNjb3JkaW5nCisgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRl eCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguIEluCisgKiBvcmRlciB0byBwcm9wYWdhdGUg eG1pbiB3ZSByZXNldCB0aGF0IHNuYXBzaG90IGV2ZXJ5IGZldyBzbyBvZnRlbi4KICAqIChBbnkg dHVwbGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0ZWQgaW50 byB0aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAgQW55IHR1 cGxlcyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKICAqIHRoZSBzbmFwIG5lZWQgbm90IGJlIGluZGV4 ZWQsIGJlY2F1c2Ugd2Ugd2lsbCB3YWl0IG91dCBhbGwgdHJhbnNhY3Rpb25zCkBAIC0zNTQ4LDcg KzM1NDksNyBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAq IFRJRHMgb2YgYm90aCBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9pbmcgYSAi bWVyZ2Ugam9pbiIgYWdhaW5zdAogICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2ggdHVwbGVz IGZyb20gYXV4aWxpYXJ5IGluZGV4IGFyZSBtaXNzaW5nIGZyb20gdGhlCiAgKiB0YXJnZXQgaW5k ZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcg dG8gdGhlCi0gKiByZWZlcmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdl IG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKKyAqIGxhdGVzdCBzbmFwc2hvdCBhcmUgaW4g dGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQogICogcGFy dGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4KICAqCiAgKiBCdWls ZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1pZ2h0IHRyeSB0byBp bnNlcnQgYQpAQCAtMzU2OSwxMyArMzU3MCwxNCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKICAqCiAgKiBBbHNvLCBzb21lIGFjdGlvbnMgdG8gY29uY3VycmVu dCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBlcmZvcm1lZC4KICAqLwotdm9pZAotdmFs aWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFw c2hvdCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbgloZWFwUmVsYXRpb24s CiAJCQkJaW5kZXhSZWxhdGlvbiwKIAkJCQlhdXhJbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAg KmluZGV4SW5mbzsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlJbmRleFZhY3V1bUluZm8g aXZpbmZvLCBhdXhpdmluZm87CiAJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhTdGF0ZTsK IAlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTM2MjUsOCArMzYyNywxMiBAQCB2YWxpZGF0ZV9pbmRl eChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBz aG90KQogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91IG1pZ2h0 IHRoaW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGluIGZyb20gRGVmaW5lSW5kZXgsIGJ1 dCBpdHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmluZwogCSAqIGJlZW4gYnVpbHQgaW4g YSBwcmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBXZSBtaWdodCBuZWVkIHNuYXBzaG90 IGZvciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgogCSAqLworCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCWluZGV4SW5mbyA9IEJ1aWxkSW5k ZXhJbmZvKGluZGV4UmVsYXRpb24pOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKiBtYXJr IGJ1aWxkIGlzIGNvbmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8KIAlpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgPSB0cnVlOwpAQCAtMzY2Miw2ICszNjY4LDkgQEAgdmFsaWRhdGVfaW5k ZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFw c2hvdCkKIAkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1 cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyog dHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUo JmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhT dGF0ZSk7CiAKQEAgLTM2NzEsNiArMzY4MCw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCQkJCQkJ CQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0g c3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKKwkvKiB0dXBsZXNvcnRfYmVnaW5fZGF0dW0gbWF5 IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwogCS8qIGFtYnVsa2RlbGV0ZSB1cGRhdGVzIHByb2dyZXNzIG1ldHJpY3MgKi8KIAkodm9p ZCkgaW5kZXhfYnVsa19kZWxldGUoJml2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5k ZXhfY2FsbGJhY2ssICZzdGF0ZSk7CkBAIC0zNjkwLDE5ICszNzAyLDI0IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25h cHNob3QpCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3Nf aW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUu dHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxv ZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCXR1cGxlc29y dF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOworCS8qIHR1cGxlc29ydF9wZXJmb3Jt c29ydCBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAkvKgogCSAqIE5vdyBtZXJnZSBib3RoIGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhNRVJHRSk7Ci0JdGFibGVfaW5kZXhfdmFs aWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLAotCQkJCQkJ CSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJICAmc3RhdGUsCi0JCQkJ CQkJICAmYXV4U3RhdGUpOworCWxpbWl0WG1pbiA9IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4o aGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGlu ZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkJCQkgICZhdXhTdGF0ZSk7CiAK IAkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuICovCiAJ QXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxMICYmIGF1eFN0YXRlLnR1cGxlc29ydCA9PSBO VUxMKTsKQEAgLTM3MjUsNiArMzc0Miw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9p ZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaW5kZXhfY2xv c2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKKworCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJcmV0dXJuIGxpbWl0WG1p bjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMDU5MzhmZjk1ZTQuLjZj NzkwNWEyNTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNTkyLDcgKzU5Miw2IEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUxvY2tSZWxJZAloZWFwcmVsaWQ7CiAJTE9DS1RB RwkJaGVhcGxvY2t0YWc7CiAJTE9DS01PREUJbG9ja21vZGU7Ci0JU25hcHNob3QJc25hcHNob3Q7 CiAJT2lkCQkJcm9vdF9zYXZlX3VzZXJpZDsKIAlpbnQJCQlyb290X3NhdmVfc2VjX2NvbnRleHQ7 CiAJaW50CQkJcm9vdF9zYXZlX25lc3RsZXZlbDsKQEAgLTE3OTQsMzIgKzE3OTMsMTEgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0 byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwogCWlmIChzYWZlX2luZGV4KQogCQlz ZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCi0JLyoKLQkgKiBOb3cgdGFrZSB0aGUgInJlZmVy ZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCSAq IHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwg YmUgc25hcHNob3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBp bi1wcm9ncmVzcyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29t bWl0dGVkLiAgSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgotCSAqIGRl bGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRo ZSBpbmRleDsgeWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRp bmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBleHBlY3Qgc3VjaCB0dXBsZXMg dG8gYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdl IHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRv IGV4aXQgYmVmb3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBX ZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBp biBpbmRleGVzIG1heQotCSAqIG5lZWQgYSBzbmFwc2hvdC4KLQkgKi8KLQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQlQdXNoQWN0aXZlU25h cHNob3Qoc25hcHNob3QpOwogCS8qCiAJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5k IHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCiAJICov Ci0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0 aW9uSWQsIHNuYXBzaG90KTsKLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKKwlsaW1pdFht aW4gPSB2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVs YXRpb25JZCk7CiAKLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNv bnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdAogCSAqIGFyZSBob2xkaW5nIGJhY2sgb3Vy IHByb2Nlc3MncyBhZHZlcnRpc2VkIHhtaW47IGluIHBhcnRpY3VsYXIsIGlmCkBAIC0xODQxLDgg KzE4MTksOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBpbmRleCBp cyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRseQog CSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0 dXBsZXMgZGVsZXRlZCBqdXN0Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3YXMgdGFr ZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQg aGF2ZSBvbGRlciBzbmFwc2hvdHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90IGR1cmlu ZyB2YWxpZGF0aW5nIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFueSB0cmFu c2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJTkpFQ1RJ T05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCkBAIC00MzQ4LDcgKzQz MjYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAq bmV3aWR4ID0gbGZpcnN0KGxjKTsKIAkJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47Ci0JCVNuYXBz aG90CXNuYXBzaG90OwogCiAJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKQEAgLTQzNjMs MTMgKzQzNDAsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZl KQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKgotCQkgKiBUYWtlIHRoZSAi cmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgp Ci0JCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLgotCQkgKi8KLQkJc25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVT bmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUg aW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9s dmVkLgpAQCAtNDM4MSwxNiArNDM1MSw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXBy b2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf bXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlk YXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eElu ZGV4SWQsIHNuYXBzaG90KTsKLQotCQkvKgotCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkgd2l0aCBv dXIgYWN0aXZlIHNuYXBzaG90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhdmUKLQkJICogdGhlIHhtaW4g bGltaXQgdG8gd2FpdCBmb3Igb2xkZXIgc25hcHNob3RzLgotCQkgKi8KLQkJbGltaXRYbWluID0g c25hcHNob3QtPnhtaW47Ci0KLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJVW5yZWdpc3RlclNu YXBzaG90KHNuYXBzaG90KTsKKwkJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50 YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkJLyoKIAkJICogVG8gZW5z dXJlIG5vIGRlYWRsb2Nrcywgd2UgbXVzdCBjb21taXQgYW5kIHN0YXJ0IHlldCBhbm90aGVyCkBA IC00NDAzLDcgKzQzNjUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKgogCQkgKiBU aGUgaW5kZXggaXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBj dXJyZW50bHkKIAkJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5v dCBjb250YWluIHR1cGxlcyBkZWxldGVkCi0JCSAqIGp1c3QgYmVmb3JlIHRoZSByZWZlcmVuY2Ug c25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55CisJCSAqIGp1c3QgYmVmb3Jl IHRoZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55CiAJCSAq IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCQkgKgogCQkg KiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4gdGhpcyB0cmFuc2Fj dGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGFiY2IxNDdkOWIzLi4zNTYwZWU0MThiMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCkBAIC03MDgsMTAgKzcwOCw5IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl QW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAq LwotCXZvaWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCisJ VHJhbnNhY3Rpb25JZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3Jl bCwKIAkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCQkJCQkJCXN0cnVjdCBJ bmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAogCQkJCQkJCQkJCQkJ c3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIApAQCAtMTgyNSwxOCArMTgy NCwxNiBAQCB0YWJsZV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwK ICAqIE5vdGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8gY2xvc2Ug c29ydHN0YXRlcyBpbgogICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICovCi1zdGF0 aWMgaW5saW5lIHZvaWQKK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAogdGFibGVfaW5kZXhf dmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4 X3JlbCwKIAkJCQkJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCiAJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRl LAogCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKIAlyZXR1 cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxlX3JlbCwK IAkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKIAkJCQkJCQkJCQkJCQkgIGluZGV4X2luZm8sCi0J CQkJCQkJCQkJCQkJICBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkgIHN0YXRlLAogCQkJCQkJCQkJ CQkJCSAgYXV4c3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXggN2Q4MmNkMmViNTYuLjE1 ZTM0NWM3YTE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM1NSw2ICszNTUsMjEgQEAgTm9ybWFs VHJhbnNhY3Rpb25JZE9sZGVyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQogCXJl dHVybiBiOwogfQogCisvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCitzdGF0 aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKK1RyYW5zYWN0aW9uSWROZXdlcihUcmFuc2FjdGlvbklk IGEsIFRyYW5zYWN0aW9uSWQgYikKK3sKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGEpKQor CQlyZXR1cm4gYjsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYikpCisJCXJldHVybiBh OworCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGEsIGIpKQorCQlyZXR1cm4gYTsKKwlyZXR1 cm4gYjsKK30KKwogLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdvIElEcyAqLwogc3RhdGlj IGlubGluZSBGdWxsVHJhbnNhY3Rpb25JZAogRnVsbFRyYW5zYWN0aW9uSWROZXdlcihGdWxsVHJh bnNhY3Rpb25JZCBhLCBGdWxsVHJhbnNhY3Rpb25JZCBiKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDUz YjJiMTNlZmMzLi44ZmUwYWNjMWU2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTU0LDcgKzE1NCw3 IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4dGVybiB2b2lkIHZh bGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25h cHNob3Qgc25hcHNob3QpOworZXh0ZXJuIFRyYW5zYWN0aW9uSWQgdmFsaWRhdGVfaW5kZXgoT2lk IGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKTsKIAogZXh0ZXJuIHZvaWQgaW5k ZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0 aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4 cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CmluZGV4IDlmMDNmYTMw MzNjLi43ODAzMTNmNDc3YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApA QCAtMjMsNiArMjMsMTIgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKICAKICgxIHJvdykKIAorU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194 aWQnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7 CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGlu dCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTQzLDMwICs0OSwzOCBAQCBBTFRFUiBU QUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9E KGksIDIpID0gMDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJl ZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKQEAgLTc2LDkgKzkwLDExIEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBh cmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9Mik7CkBAIC05MSwyMyArMTA3LDMxIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOwogCiBDUkVBVEUg VU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwog Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0 aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOwogTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRh dGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9u b19wYXJhbSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCkBAIC0xMTYsMTMgKzE0MCwxNyBAQCBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp IERFU0MgTlVMTFMgTEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9u b194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25v X3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCAyOTQxYWE3YWUz OC4uMjQ5ZDEwNjFhZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtNCw2ICs0LDcg QEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90 aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9u b194aWQnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVB VEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7Ci0t IAoyLjQzLjAKCg== --000000000000ed40670634046306 Content-Type: application/x-patch; name="v18-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v18-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma35tezx11 RnJvbSA0NGM1N2RiZWI3YzM5OGVkNGI3YjNmZjg5OWQ4YzAyNTg4OGM1MGY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4IDEyLzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKVGhp cyBvcHRpbWl6YXRpb24gYWxsb3dlZCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUg b3RoZXIgaW5kZXhlcyB3aXRob3V0IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuIFdpdGggdGhl IG5ldyBzbmFwc2hvdCBoYW5kbGluZyBhcHByb2FjaCB0aGF0IHBlcmlvZGljYWxseSByZWZyZXNo ZXMgc25hcHNob3RzLCB0aGlzIG9wdGltaXphdGlvbiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoK VGhlIGNoYW5nZSBzaW1wbGlmaWVzIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBy ZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lDIHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBlbGltaW5h dGluZyBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpIGNhbGxzIGFuZCByZWxhdGVkIGxvZ2ljCi0g cmVtb3Zpbmcgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGluIEdldEN1cnJlbnRWaXJ0dWFsWElEcygp Ci0gcmVtb3ZpbmcgcmVsYXRlZCB0ZXN0IGNhc2VzIGFuZCBpbmplY3Rpb24gcG9pbnRzCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTQyICstLS0tLS0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAg fCAgIDIgKy0KIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0ICAgICAgICAgICAgICAgICB8 ICA1MSAtLS0tLS0tCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVp bGQgfCAgIDEgLQogLi4uL2luamVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgICAg IHwgIDI4IC0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjM3IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IDQyMzQyNGU1MWEyLi45M2FkM2YzZjYzMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjg5MywxMSArMjg5Myw5IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07CiAKIAkv KgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0 aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFy ZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVs IHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJ ICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZv ciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggMjc0YzM4ZDEyYmIuLjNjY2QwNzk3NzI3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIwOTQsMTEgKzIwOTQsOSBAQCBfZ2luX3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07 CiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNl dCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRo ZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBh cmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkg fHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNz ZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3Ry aW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA4ZDc1NTQ3MGU4Yy4uMDBjODZiZmNmYzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTEwLDExICsxOTEwLDkgQEAgX2J0X3Bh cmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogI2VuZGlm CQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3Np YmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlz Ci0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMg ZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3Nl cnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxh Z3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0g MCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMg Zmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA2Yzc5MDVh MjUzNC4uYjc2ZTYwZWI0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTUsNyAr MTE1LDYgQEAgc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LAogCQkJCQkJCQkJCU9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQlj b25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFy dGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQg c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKIC8qCiAgKiBjYWxsYmFjayBhcmd1bWVu dCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KCkKQEAgLTQxOCwxMCAr NDE3LDcgQEAgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVtICpvcHRzMSwgY29uc3Qg RGF0dW0gKm9wdHMyLCBpbnQgbmF0dHMpCiAgKiBsYXp5IFZBQ1VVTXMsIGJlY2F1c2UgdGhleSB3 b24ndCBiZSBmYXplZCBieSBtaXNzaW5nIGluZGV4IGVudHJpZXMKICAqIGVpdGhlci4gIChNYW51 YWwgQU5BTFlaRXMsIGhvd2V2ZXIsIGNhbid0IGJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleQogICog bWlnaHQgYmUgd2l0aGluIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBkbyBhcmJpdHJh cnkgb3BlcmF0aW9ucwotICogbGF0ZXIuKSAgUHJvY2Vzc2VzIHJ1bm5pbmcgQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWQotICogb24gaW5kZXhlcyB0aGF0 IGFyZSBuZWl0aGVyIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbCBhcmUgYWxzbyBzYWZlIHRvCi0g KiBpZ25vcmUsIHNpbmNlIHdlIGtub3cgdGhhdCB0aG9zZSBwcm9jZXNzZXMgd29uJ3QgZXhhbWlu ZSBhbnkgZGF0YQotICogb3V0c2lkZSB0aGUgdGFibGUgdGhleSdyZSBpbmRleGluZy4KKyAqIGxh dGVyLikKICAqCiAgKiBBbHNvLCBHZXRDdXJyZW50VmlydHVhbFhJRHMgbmV2ZXIgcmVwb3J0cyBv dXIgb3duIHZ4aWQsIHNvIHdlIG5lZWQgbm90CiAgKiBjaGVjayBmb3IgdGhhdC4KQEAgLTQ0Miw4 ICs0MzgsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4s IGJvb2wgcHJvZ3Jlc3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKm9sZF9zbmFwc2hvdHM7CiAK IAlvbGRfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwgdHJ1ZSwg ZmFsc2UsCi0JCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTQot CQkJCQkJCQkJCSAgfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkgICZuX29sZF9zbmFwc2hvdHMpOwog CWlmIChwcm9ncmVzcykKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19X QUlURk9SX1RPVEFMLCBuX29sZF9zbmFwc2hvdHMpOwpAQCAtNDYzLDggKzQ1OCw3IEBAIFdhaXRG b3JPbGRlclNuYXBzaG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykK IAogCQkJbmV3ZXJfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwK IAkJCQkJCQkJCQkJCQl0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9WQUNV VU0gfCBQUk9DX0lOX1ZBQ1VVTQotCQkJCQkJCQkJCQkJCXwgUFJPQ19JTl9TQUZFX0lDLAorCQkJ CQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJCQkJCQkJ CQkJCSZuX25ld2VyX3NuYXBzaG90cyk7CiAJCQlmb3IgKGogPSBpOyBqIDwgbl9vbGRfc25hcHNo b3RzOyBqKyspCiAJCQl7CkBAIC01NzgsNyArNTcyLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKIAlib29sCQlleGNsdXNpb247CiAJ Ym9vbAkJcGFydGl0aW9uZWQ7Ci0JYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9u czsKIAlpbnQxNgkgICAqY29sb3B0aW9uczsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0x MTgxLDEwICsxMTc0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCX0KIAl9CiAKLQkv KiBJcyBpbmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVf cHJvY2ZsYWdzKCkgKi8KLQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9 PSBOSUwgJiYKLQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOwotCiAJLyoKIAkgKiBS ZXBvcnQgaW5kZXggY3JlYXRpb24gaWYgYXBwcm9wcmlhdGUgKGRlbGF5IHRoaXMgdGlsbCBhZnRl ciBtb3N0IG9mIHRoZQogCSAqIGVycm9yIGNoZWNrcykKQEAgLTE2NzEsMTAgKzE2NjAsNiBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4 KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMg bm93IHZpc2libGUsIHNvIHdlIGNhbiByZXBvcnQgdGhlIE9JRC4gIFdoaWxlIG9uIGl0LAogCSAq IGluY2x1ZGUgdGhlIHJlcG9ydCBmb3IgdGhlIGJlZ2lubmluZyBvZiBwaGFzZSAyLgpAQCAtMTcy OSw5ICsxNzE0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTE3NjEsMTAgKzE3NDMs NiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZl X2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBQaGFzZSAz IG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKIAkgKgpAQCAtMTc5MCw5ICsxNzY4LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWls ZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkK LQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTWVyZ2UgY29udGVudCBv ZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4 IGVudHJpZXMuCiAJICovCkBAIC0xODA5LDkgKzE3ODUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMs IGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZl X3Byb2NmbGFncygpOwogCiAJLyogV2Ugc2hvdWxkIG5vdyBkZWZpbml0ZWx5IG5vdCBiZSBhZHZl cnRpc2luZyBhbnkgeG1pbi4gKi8KIAlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFu c2FjdGlvbklkKTsKQEAgLTE4NTIsMTAgKzE4MjUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwog CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLwpAQCAtMTg3NiwxMCArMTg0NSw2IEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4 aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLwpAQCAtMzYyMCw3ICszNTg1LDYgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxl SWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRleEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9u SWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRzID0gTklMOwpAQCAtMzk5NCwxNyArMzk1OCw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVz dExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZl dHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5z YWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0J CQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJaWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNhZmUiKTsKLQkJZWxzZQotCQkJSU5KRUNUSU9OX1BP SU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUiKTsKLSNlbmRpZgotCiAJCWlkeC0+dGFi bGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCk7CiAJCWlkeC0+YW1JZCA9IGluZGV4UmVs LT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MDcwLDcgKzQwMjMsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOwogCQluZXdpZHgtPmF1eElu ZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPmp1bmtBdXhJbmRleElkID0ganVua0F1eElu ZGV4SWQ7Ci0JCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4LT50YWJsZUlkID0g aWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CiAKQEAgLTQxNzEsMTEg KzQxMjMsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1c2Ug d2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8g bmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KLQkgKi8KLQog CS8qCiAJICogUGhhc2UgMiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00MjA3LDEw ICs0MTU0LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1 cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qIEJ1aWxkIGF1eGlsaWFyeSBpbmRleCwgaXQgaXMg ZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4gZW1wdHkgaW5kZXgu ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+ YXV4SW5kZXhJZCk7CiAKQEAgLTQyMTksMTEgKzQxNjIsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB3 ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBu ZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJ CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKIAkvKgpAQCAtNDI0OCwx MCArNDE4Niw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25vcmUg dXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRo ZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52 b2x2ZWQuCkBAIC00MjcxLDExICs0MjA1LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAog CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1c2Ugd2UgZG9uJ3Qg dGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vCi0J ICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJ CQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdhaXRGb3JMb2NrZXJz TXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CkBAIC00Mjk3LDEwICs0MjI2LDYg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5k ZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOwotCiAJCS8qCiAJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUg VE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKIAkJICogaGF2ZSBhIHZhbGlkIHNuYXBz aG90LgpAQCAtNDMzNiwxMCArNDI2MSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAq LwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRl eGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5z YWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGUg cHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQK IAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MzY3LDkgKzQyODgsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQg bm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKIAkJICoganVzdCBiZWZvcmUgdGhlIGxhdGVzdCBz bmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICogdHJhbnNhY3Rpb25z IHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCi0JCSAqCi0JCSAqIEJlY2F1c2Ugd2Ug ZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLAotCQkgKiB0 aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCQkg Ki8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCiAJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CkBAIC00Mzkx LDEzICs0MzA5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlJTkpFQ1RJT05fUE9JTlQo InJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIik7CiAJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB0aGlzIHRyYW5zYWN0aW9uIG9u bHkgZG9lcyBjYXRhbG9nIG1hbmlwdWxhdGlvbnMgYW5kIGRvZXNuJ3QgZG8KLQkgKiBhbnkgaW5k ZXggb3BlcmF0aW9ucywgd2UgY2FuIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZQot CSAqIHVuY29uZGl0aW9uYWxseS4KLQkgKi8KLQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwot CiAJZm9yYm90aChsYywgaW5kZXhJZHMsIGxjMiwgbmV3SW5kZXhJZHMpCiAJewogCQlSZWluZGV4 SW5kZXhJbmZvICpvbGRpZHggPSBsZmlyc3QobGMpOwpAQCAtNDQ1MywxMiArNDM2NCw2IEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hpbGUgd2UgY291bGQgc2V0IFBS T0NfSU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQsIHRoZXJlJ3Mgbm8KLQkgKiBy ZWFsIG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1aXJlIGFuIFhpZCBhZnRlciB0 aGUgd2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZvciBhIHZlcnkgc2hvcnQgcGVy aW9kLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJ ICoKQEAgLTQ1MjIsMTIgKzQ0MjcsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkv KgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVfSUMgaWYgYWxsIGluZGV4ZXMg cXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZvciB0aGF0LCBiZWNhdXNlIHdl IG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMKLQkgKiBkb25lLCBhbmQgdGhh dCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8KLQogCS8qCiAJICogUGhhc2Ug NiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00Nzk1LDM2ICs0Njk0LDMgQEAgdXBk YXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCkKIAl0YWJsZV9j bG9zZShjbGFzc1JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKLS8qCi0gKiBTZXQgdGhlIFBS T0NfSU5fU0FGRV9JQyBmbGFnIGluIE15UHJvYy0+c3RhdHVzRmxhZ3MuCi0gKgotICogV2hlbiBk b2luZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgd2UgY2FuIHNldCB0aGlzIGZsYWcKLSAqIHRv IHRlbGwgb3RoZXIgcHJvY2Vzc2VzIGNvbmN1cnJlbnRseSBydW5uaW5nIENSRUFURQotICogSU5E RVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09OQ1VSUkVOVExZIHRvIGlnbm9yZSB1cyB3aGVu Ci0gKiBkb2luZyB0aGVpciB3YWl0cyBmb3IgY29uY3VycmVudCBzbmFwc2hvdHMuICBPbiBvbmUg aGFuZCBpdAotICogYXZvaWRzIHBvaW50bGVzc2x5IHdhaXRpbmcgZm9yIGEgcHJvY2VzcyB0aGF0 J3Mgbm90IGludGVyZXN0aW5nCi0gKiBhbnl3YXk7IGJ1dCBtb3JlIGltcG9ydGFudGx5IGl0IGF2 b2lkcyBkZWFkbG9ja3MgaW4gc29tZSBjYXNlcy4KLSAqCi0gKiBUaGlzIGNhbiBiZSBkb25lIHNh ZmVseSBvbmx5IGZvciBpbmRleGVzIHRoYXQgZG9uJ3QgZXhlY3V0ZSBhbnkKLSAqIGV4cHJlc3Np b25zIHRoYXQgY291bGQgYWNjZXNzIG90aGVyIHRhYmxlcywgc28gaW5kZXggbXVzdCBub3QgYmUK LSAqIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbC4gIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3Ig b25seSBjYWxsaW5nCi0gKiB0aGlzIHJvdXRpbmUgd2hlbiB0aGF0IGFzc3VtcHRpb24gaG9sZHMg dHJ1ZS4KLSAqCi0gKiAoVGhlIGZsYWcgaXMgcmVzZXQgYXV0b21hdGljYWxseSBhdCB0cmFuc2Fj dGlvbiBlbmQsIHNvIGl0IG11c3QgYmUKLSAqIHNldCBmb3IgZWFjaCB0cmFuc2FjdGlvbi4pCi0g Ki8KLXN0YXRpYyBpbmxpbmUgdm9pZAotc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCkKLXsK LQkvKgotCSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBpbnN0YWxsaW5nIHhp ZCBvciB4bWluIGluIE15UHJvYzsKLQkgKiBvdGhlcndpc2UsIGNvbmN1cnJlbnQgcHJvY2Vzc2Vz IGNvdWxkIHNlZSBhbiBYbWluIHRoYXQgbW92ZXMgYmFja3dhcmRzLgotCSAqLwotCUFzc2VydChN eVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCAmJgotCQkgICBNeVByb2MtPnhtaW4g PT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwotCi0JTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlMb2Nr LCBMV19FWENMVVNJVkUpOwotCU15UHJvYy0+c3RhdHVzRmxhZ3MgfD0gUFJPQ19JTl9TQUZFX0lD OwotCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW015UHJvYy0+cGd4YWN0b2ZmXSA9IE15UHJvYy0+ c3RhdHVzRmxhZ3M7Ci0JTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKLX0KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j LmgKaW5kZXggOWY5YjNmY2ZiZjEuLjVlMDc0NjZjNzM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNTYs MTAgKzU2LDYgQEAgc3RydWN0IFhpZENhY2hlCiAgKi8KICNkZWZpbmUJCVBST0NfSVNfQVVUT1ZB Q1VVTQkweDAxCS8qIGlzIGl0IGFuIGF1dG92YWMgd29ya2VyPyAqLwogI2RlZmluZQkJUFJPQ19J Tl9WQUNVVU0JCTB4MDIJLyogY3VycmVudGx5IHJ1bm5pbmcgbGF6eSB2YWN1dW0gKi8KLSNkZWZp bmUJCVBST0NfSU5fU0FGRV9JQwkJMHgwNAkvKiBjdXJyZW50bHkgcnVubmluZyBDUkVBVEUgSU5E RVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb3IgUkVJTkRFWAotCQkJCQkJCQkJCSAqIENP TkNVUlJFTlRMWSBvbiBub24tZXhwcmVzc2lvbmFsLAotCQkJCQkJCQkJCSAqIG5vbi1wYXJ0aWFs IGluZGV4ICovCiAjZGVmaW5lCQlQUk9DX1ZBQ1VVTV9GT1JfV1JBUEFST1VORAkweDA4CS8qIHNl dCBieSBhdXRvdmFjIG9ubHkgKi8KICNkZWZpbmUJCVBST0NfSU5fTE9HSUNBTF9ERUNPRElORwkw eDEwCS8qIGN1cnJlbnRseSBkb2luZyBsb2dpY2FsCiAJCQkJCQkJCQkJCQkgKiBkZWNvZGluZyBv dXRzaWRlIHhhY3QgKi8KQEAgLTY5LDEzICs2NSwxMyBAQCBzdHJ1Y3QgWGlkQ2FjaGUKIAogLyog ZmxhZ3MgcmVzZXQgYXQgRU9YYWN0ICovCiAjZGVmaW5lCQlQUk9DX1ZBQ1VVTV9TVEFURV9NQVNL IFwKLQkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lOX1NBRkVfSUMgfCBQUk9DX1ZBQ1VVTV9GT1Jf V1JBUEFST1VORCkKKwkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX1ZBQ1VVTV9GT1JfV1JBUEFST1VO RCkKIAogLyoKICAqIFhtaW4tcmVsYXRlZCBmbGFncy4gTWFrZSBzdXJlIGFueSBmbGFncyB0aGF0 IGFmZmVjdCBob3cgdGhlIHByb2Nlc3MnIFhtaW4KICAqIHZhbHVlIGlzIGludGVycHJldGVkIGJ5 IFZBQ1VVTSBhcmUgaW5jbHVkZWQgaGVyZS4KICAqLwotI2RlZmluZQkJUFJPQ19YTUlOX0ZMQUdT IChQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5fU0FGRV9JQykKKyNkZWZpbmUJCVBST0NfWE1JTl9G TEFHUyAoUFJPQ19JTl9WQUNVVU0pCiAKIC8qCiAgKiBXZSBhbGxvdyBhIGxpbWl0ZWQgbnVtYmVy IG9mICJ3ZWFrIiByZWxhdGlvbiBsb2NrcyAoQWNjZXNzU2hhcmVMb2NrLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IDE5ZDI2NDA4YzJhLi44MmFjZjMw MDZiZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2Vm aWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQpAQCAt MTEsNyArMTEsNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9pbnRzCiBEQVRBID0gaW5qZWN0 aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmplY3Rpb25fcG9pbnRzIC0gZmFj aWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRz IGhhc2hhZ2cgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hvdHMKK1JFR1JFU1MgPSBpbmpl Y3Rpb25fcG9pbnRzIGhhc2hhZ2cgY2ljX3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0g LS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0g YmFzaWMgaW5wbGFjZSBzeXNjYWNoZS11cGRhdGUtcHJ1bmVkCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dCBiL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0 CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhkZTRiYmU4NS4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uYy5vdXQKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0tLSBUZXN0cyBmb3IgUkVJ TkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0t IENoZWNrIHNhZmV0eSBvZiBpbmRleGVzIHdpdGggcHJlZGljYXRlcyBhbmQgZXhwcmVzc2lvbnMu Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKLSBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQot U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtc2FmZScs ICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdy ZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0gaW5qZWN0aW9uX3BvaW50 c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLUNSRUFU RSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkgaW50 IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci1DUkVBVEUgVU5JUVVFIElOREVY IGluZF9zaW1wbGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBp bmRfZXhwciBPTiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNSRUFURSBVTklRVUUgSU5ERVgg aW5kX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1DUkVB VEUgVU5JUVVFIElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGFicyhpKSkg V0hFUkUgbW9kKGksIDIpID0gMDsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhf aW5qLmluZF9zaW1wbGU7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgcmVpbmRleC1jb25jLWluZGV4LXNhZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IHJlaW5kZXhfaW5qLmluZF9leHByOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi1SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcl9wcmVkOwotTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRl eC1ub3Qtc2FmZQotLS0gQ2xlYW51cAotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdy ZWluZGV4LWNvbmMtaW5kZXgtc2FmZScpOwotIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZScpOwotIGluamVjdGlvbl9w b2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1E Uk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotRFJP UCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCA4NDc2YmZlNzJhNy4uYmRkZjIyZGYzYWMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM2 LDcgKzM2LDYgQEAgdGVzdHMgKz0gewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3Bv aW50cycsCiAgICAgICAnaGFzaGFnZycsCi0gICAgICAncmVpbmRleF9jb25jJywKICAgICAgICdj aWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxw YXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNx bCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNx bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNmMjExZTZkNWQuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25j LnNxbAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVY IENPTkNVUlJFTlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotCi0tLSBD aGVjayBzYWZldHkgb2YgaW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgot U0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAn bm90aWNlJyk7Ci0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVp bmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci0K LUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2luai50YmwoaSk7Ci1D UkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRibChBQlMoaSkpOwot Q1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50YmwoaSkgV0hFUkUg bW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJfcHJlZCBPTiByZWlu ZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotCi1SRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfc2ltcGxlOwotUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHI7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSByZWluZGV4X2luai5pbmRfcHJlZDsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5k ZXhfaW5qLmluZF9leHByX3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnKTsKLVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci1EUk9QIFRBQkxF IHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotCi1EUk9QIEVYVEVO U0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9w913 RnJvbSA3NzlhMTExMThlZmQ0YzI3YWQ4MmM2MzNmMzA4MTM5MDk5MWQzMzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDEvNl0gQWRkIFNUSVIgYWNjZXNzIG1ldGhvZCBhbmQgZmxh Z3MgcmVsYXRlZAogdG8gYXV4aWxpYXJ5IGluZGV4ZXMKClRoaXMgcGF0Y2ggcHJvdmlkZXMgaW5m cmFzdHJ1Y3R1cmUgZm9yIGZvbGxvd2luZyBlbmhhbmNlbWVudHMgdG8gY29uY3VycmVudCBpbmRl eCBidWlsZHMgYnk6Ci0gaWlfQXV4aWxpYXJ5IGluIEluZGV4SW5mbzogaW5kaWNhdGVzIHRoYXQg YW4gaW5kZXggaXMgYW4gYXV4aWxpYXJ5IGluZGV4IHVzZWQgZHVyaW5nIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQKLSB2YWxpZGF0ZV9pbmRleCBpbiBJbmRleFZhY3V1bUluZm86IHNldCBpZiBpbmRl eF9idWxrX2RlbGV0ZSBjYWxsZWQgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHBoYXNlIG9mIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQKLSBTVElSKFNob3J0LVRlcm0gSW5kZXggUmVwbGFjZW1lbnQpIGFj Y2VzcyBtZXRob2QgaXMgaW50cm9kdWNlZCwgaW50ZW5kZWQgc29sZWx5IGZvciBzaG9ydC1saXZl ZCwgYXV4aWxpYXJ5IHVzYWdlCgpTVElSIGZ1bmN0aW9ucyBkZXNpZ25lZCBhcyBhbiBlcGhlbWVy YWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVtcG9yYXJpbHkgc3Rv cmluZyBUSURzIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVzIG9mIGEgdHlwaWNh bCBhY2Nlc3MgbWV0aG9kLiBBcyBzdWNoLCBpdCByYWlzZXMgd2FybmluZ3Mgb3IgZXJyb3JzIHdo ZW4gYWNjZXNzZWQgb3V0c2lkZSBpdHMgc3BlY2lhbGl6ZWQgdXNhZ2UgcGF0aC4KClBsYW5uZWQg dG8gYmUgdXNlZCBpbiBmb2xsb3dpbmcgY29tbWl0cy4KLS0tCiBjb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdHR1cGxlLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSAgICAgICAgIHwgIDE4 ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkICAgICAgfCAgIDUgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jICAgICAgICAgICB8IDU3MyArKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nl c3MvZ2VuYW0uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxv cHRpb25zLmggICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmggICAg ICAgICAgICAgICAgfCAxMTcgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0ICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdCAgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgfCAgIDQgKwogc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1 ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2FtdXRpbHMub3V0ICAgIHwgICA4ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29wcl9zYW5pdHkub3V0IHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0ICAgICAgIHwgIDI0ICstCiAyMyBmaWxlcyBjaGFuZ2VkLCA3NzcgaW5zZXJ0aW9ucygr KSwgMTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNz L3N0aXIvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rp ci9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGly L3N0aXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKCmRp ZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bn c3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggMGQ5YzJiMGI2NTMuLjcyMGE4NzE5NzU1IDEw MDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0yODUsNiArMjg1LDkgQEAgcGdzdGF0X3Jl bGF0aW9uKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQljYXNlIFNQ R0lTVF9BTV9PSUQ6CiAJCQkJZXJyID0gInNwZ2lzdCBpbmRleCI7CiAJCQkJYnJlYWs7CisJCQlj YXNlIFNUSVJfQU1fT0lEOgorCQkJCWVyciA9ICJzdGlyIGluZGV4IjsKKwkJCQlicmVhazsKIAkJ CWNhc2UgQlJJTl9BTV9PSUQ6CiAJCQkJZXJyID0gImJyaW4gaW5kZXgiOwogCQkJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL01ha2VmaWxlCmluZGV4IDE5MzJkMTFkMTU0Li5jZDY1MjRhNTRhYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtl ZmlsZQpAQCAtOSw2ICs5LDYgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0 b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAogU1VCRElSUwkgICAgPSBicmluIGNv bW1vbiBnaW4gZ2lzdCBoYXNoIGhlYXAgaW5kZXggbmJ0cmVlIHJtZ3JkZXNjIHNwZ2lzdCBcCi0J CQkgIHNlcXVlbmNlIHRhYmxlIHRhYmxlc2FtcGxlIHRyYW5zYW0KKwkJCSAgc3RpciBzZXF1ZW5j ZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMv YmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBm MjgzMjZiYWQwOS4uMjMyYzg3ZWMyNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKQEAgLTMwOTIsNiArMzA5Miw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBp bmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2 ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmlu Zm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXgg PSBmYWxzZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4K QEAgLTMxNDMsNiArMzE0NCw3IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1 cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsK KwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9y IHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZAppbmRleCA3YTJkMGRk YjY4OS4uYTE1NmNkZGZmMzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcg QEAgc3ViZGlyKCduYnRyZWUnKQogc3ViZGlyKCdybWdyZGVzYycpCiBzdWJkaXIoJ3NlcXVlbmNl JykKIHN1YmRpcignc3BnaXN0JykKK3N1YmRpcignc3RpcicpCiBzdWJkaXIoJ3RhYmxlJykKIHN1 YmRpcigndGFibGVzYW1wbGUnKQogc3ViZGlyKCd0cmFuc2FtJykKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFr ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhZTU4OThiOGQ3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUKQEAg LTAsMCArMSwxOCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZpbGUtLQorIyAgICBN YWtlZmlsZSBmb3IgYWNjZXNzL3N0aXIKKyMKKyMgSURFTlRJRklDQVRJT04KKyMgICAgc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRp ciA9IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAorCitPQkpTID0gXAor CXN0aXIubworCitpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3N0aXIvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzljNmVjYTg0OGQKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApAQCAtMCww ICsxLDUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCitiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisJJ3N0aXIuYycsCispClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3N0aXIvc3Rpci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMWYzYjY2MGY0YgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpAQCAtMCwwICsxLDU3MyBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Rpci5jCisgKgkgIEltcGxlbWVudGF0aW9uIG9mIFNo b3J0LVRlcm0gSW5kZXggUmVwbGFjZW1lbnQuCisgKgorICogU1RJUiBpcyBhIHNwZWNpYWxpemVk IGFjY2VzcyBtZXRob2QgdHlwZSBkZXNpZ25lZCBmb3IgdGVtcG9yYXJ5IHN0b3JhZ2UKKyAqIG9m IFRJRCB2YWx1ZXMgZHVyaW5nIGNvbmN1cmVybnQgaW5kZXggYnVpbGQgb3BlcmF0aW9ucy4KKyAq CisgKiBUaGUgdHlwaWNhbCBsaWZlY3ljbGUgb2YgYSBTVElSIGluZGV4IGlzOgorICogMS4gY3Jl YXRlZCBhcyBhbiBhdXhpbGlhcnkgaW5kZXggZm9yIENJQy9SSUMKKyAqIDIuIGFjY2VwdHMgaW5z ZXJ0cyBmb3IgYSBwZXJpb2QKKyAqIDMuIHN0aXJidWxrZGVsZXRlIGNhbGxlZCBkdXJpbmcgaW5k ZXggdmFsaWRhdGlvbiBwaGFzZQorICogNS4gZ2V0cyBkcm9wcGVkCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIu YworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKwor I2luY2x1ZGUgImFjY2Vzcy9zdGlyLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2FtdmFsaWRhdGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbW9wLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNs YXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAidXRp bHMvY2F0Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAi dXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3JlZ3Byb2MuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisv KgorICogU3RpciBoYW5kbGVyIGZ1bmN0aW9uOiByZXR1cm4gSW5kZXhBbVJvdXRpbmUgd2l0aCBh Y2Nlc3MgbWV0aG9kIHBhcmFtZXRlcnMKKyAqIGFuZCBjYWxsYmFja3MuCisgKi8KK0RhdHVtCitz dGlyaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQoreworCUluZGV4QW1Sb3V0aW5lICphbXJvdXRp bmUgPSBtYWtlTm9kZShJbmRleEFtUm91dGluZSk7CisKKwkvKiBTZXQgU1RJUi1zcGVjaWZpYyBz dHJhdGVneSBhbmQgcHJvY2VkdXJlIG51bWJlcnMgKi8KKwlhbXJvdXRpbmUtPmFtc3RyYXRlZ2ll cyA9IFNUSVJfTlNUUkFURUdJRVM7CisJYW1yb3V0aW5lLT5hbXN1cHBvcnQgPSBTVElSX05QUk9D OworCWFtcm91dGluZS0+YW1vcHRzcHJvY251bSA9IFNUSVJfT1BUSU9OU19QUk9DOworCisJLyog U1RJUiBkb2Vzbid0IHN1cHBvcnQgbW9zdCBpbmRleCBvcGVyYXRpb25zICovCisJYW1yb3V0aW5l LT5hbWNhbm9yZGVyID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbm9yZGVyYnlvcCA9IGZhbHNl OworCWFtcm91dGluZS0+YW1jYW5iYWNrd2FyZCA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW51 bmlxdWUgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FubXVsdGljb2wgPSB0cnVlOworCWFtcm91 dGluZS0+YW1vcHRpb25hbGtleSA9IHRydWU7CisJYW1yb3V0aW5lLT5hbXNlYXJjaGFycmF5ID0g ZmFsc2U7CisJYW1yb3V0aW5lLT5hbXNlYXJjaG51bGxzID0gZmFsc2U7CisJYW1yb3V0aW5lLT5h bXN0b3JhZ2UgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2x1c3RlcmFibGUgPSBmYWxzZTsKKwlh bXJvdXRpbmUtPmFtcHJlZGxvY2tzID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnBhcmFsbGVs ID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbmJ1aWxkcGFyYWxsZWwgPSBmYWxzZTsKKwlhbXJv dXRpbmUtPmFtY2FuaW5jbHVkZSA9IHRydWU7CisJYW1yb3V0aW5lLT5hbXVzZW1haW50ZW5hbmNl d29ya21lbSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1wYXJhbGxlbHZhY3V1bW9wdGlvbnMgPQor CQkJVkFDVVVNX09QVElPTl9QQVJBTExFTF9CVUxLREVMIHwgVkFDVVVNX09QVElPTl9QQVJBTExF TF9DTEVBTlVQOworCWFtcm91dGluZS0+YW1rZXl0eXBlID0gSW52YWxpZE9pZDsKKworCS8qIFNl dCB1cCBmdW5jdGlvbiBjYWxsYmFja3MgKi8KKwlhbXJvdXRpbmUtPmFtYnVpbGQgPSBzdGlyYnVp bGQ7CisJYW1yb3V0aW5lLT5hbWJ1aWxkZW1wdHkgPSBzdGlyYnVpbGRlbXB0eTsKKwlhbXJvdXRp bmUtPmFtaW5zZXJ0ID0gc3Rpcmluc2VydDsKKwlhbXJvdXRpbmUtPmFtaW5zZXJ0Y2xlYW51cCA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1bGtkZWxldGUgPSBzdGlyYnVsa2RlbGV0ZTsKKwlhbXJv dXRpbmUtPmFtdmFjdXVtY2xlYW51cCA9IHN0aXJ2YWN1dW1jbGVhbnVwOworCWFtcm91dGluZS0+ YW1jYW5yZXR1cm4gPSBOVUxMOworCWFtcm91dGluZS0+YW1jb3N0ZXN0aW1hdGUgPSBzdGlyY29z dGVzdGltYXRlOworCWFtcm91dGluZS0+YW1vcHRpb25zID0gc3Rpcm9wdGlvbnM7CisJYW1yb3V0 aW5lLT5hbXByb3BlcnR5ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtYnVpbGRwaGFzZW5hbWUgPSBO VUxMOworCWFtcm91dGluZS0+YW12YWxpZGF0ZSA9IHN0aXJ2YWxpZGF0ZTsKKwlhbXJvdXRpbmUt PmFtYWRqdXN0bWVtYmVycyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJlZ2luc2NhbiA9IHN0aXJi ZWdpbnNjYW47CisJYW1yb3V0aW5lLT5hbXJlc2NhbiA9IHN0aXJyZXNjYW47CisJYW1yb3V0aW5l LT5hbWdldHR1cGxlID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZ2V0Yml0bWFwID0gTlVMTDsKKwlh bXJvdXRpbmUtPmFtZW5kc2NhbiA9IHN0aXJlbmRzY2FuOworCWFtcm91dGluZS0+YW1tYXJrcG9z ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtcmVzdHJwb3MgPSBOVUxMOworCWFtcm91dGluZS0+YW1l c3RpbWF0ZXBhcmFsbGVsc2NhbiA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWluaXRwYXJhbGxlbHNj YW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1wYXJhbGxlbHJlc2NhbiA9IE5VTEw7CisKKwlQR19S RVRVUk5fUE9JTlRFUihhbXJvdXRpbmUpOworfQorCisvKgorICogVmFsaWRhdGVzIG9wZXJhdG9y IGNsYXNzIGZvciBTVElSIGluZGV4LgorICoKKyAqIFNUSVIgaXMgbm90IGFuIHJlYWwgaW5kZXgs IHNvIHZhbGlkYXRpbyBtYXkgYmUgc2tpcHBlZC4KKyAqIEJ1dCB3ZSBkbyBpdCBqdXN0IGZvciBj b25zaXN0ZW5jeS4KKyAqLworYm9vbAorc3RpcnZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQorewor CWJvb2wgcmVzdWx0ID0gdHJ1ZTsKKwlIZWFwVHVwbGUgY2xhc3N0dXA7CisJRm9ybV9wZ19vcGNs YXNzIGNsYXNzZm9ybTsKKwlPaWQgb3BmYW1pbHlvaWQ7CisJSGVhcFR1cGxlIGZhbWlseXR1cDsK KwlGb3JtX3BnX29wZmFtaWx5IGZhbWlseWZvcm07CisJY2hhciAqb3BmYW1pbHluYW1lOworCUNh dENMaXN0ICpwcm9jbGlzdCwKKwkJCSpvcHJsaXN0OworCWludCBpOworCisJLyogRmV0Y2ggb3Bj bGFzcyBpbmZvcm1hdGlvbiAqLworCWNsYXNzdHVwID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwg T2JqZWN0SWRHZXREYXR1bShvcGNsYXNzb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNs YXNzdHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9y IGNsYXNzICV1Iiwgb3BjbGFzc29pZCk7CisJY2xhc3Nmb3JtID0gKEZvcm1fcGdfb3BjbGFzcykg R0VUU1RSVUNUKGNsYXNzdHVwKTsKKworCW9wZmFtaWx5b2lkID0gY2xhc3Nmb3JtLT5vcGNmYW1p bHk7CisKKworCS8qIEZldGNoIG9wZmFtaWx5IGluZm9ybWF0aW9uICovCisJZmFtaWx5dHVwID0g U2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5b2lk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGZhbWlseXR1cCkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBmYW1pbHkgJXUiLCBvcGZhbWlseW9pZCk7 CisJZmFtaWx5Zm9ybSA9IChGb3JtX3BnX29wZmFtaWx5KSBHRVRTVFJVQ1QoZmFtaWx5dHVwKTsK KworCW9wZmFtaWx5bmFtZSA9IE5hbWVTdHIoZmFtaWx5Zm9ybS0+b3BmbmFtZSk7CisKKwkvKiBG ZXRjaCBhbGwgb3BlcmF0b3JzIGFuZCBzdXBwb3J0IGZ1bmN0aW9ucyBvZiB0aGUgb3BmYW1pbHkg Ki8KKwlvcHJsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTU9QU1RSQVRFR1ksIE9iamVjdElk R2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlwcm9jbGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEo QU1QUk9DTlVNLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5b2lkKSk7CisKKwkvKiBDaGVjayBp bmRpdmlkdWFsIG9wZXJhdG9ycyAqLworCWZvciAoaSA9IDA7IGkgPCBvcHJsaXN0LT5uX21lbWJl cnM7IGkrKykKKwl7CisJCUhlYXBUdXBsZSBvcHJ0dXAgPSAmb3BybGlzdC0+bWVtYmVyc1tpXS0+ dHVwbGU7CisJCUZvcm1fcGdfYW1vcCBvcHJmb3JtID0gKEZvcm1fcGdfYW1vcCkgR0VUU1RSVUNU KG9wcnR1cCk7CisKKwkJLyogQ2hlY2sgaXQncyBhbGxvd2VkIHN0cmF0ZWd5IGZvciBzdGlyICov CisJCWlmIChvcHJmb3JtLT5hbW9wc3RyYXRlZ3kgPCAxIHx8CisJCQlvcHJmb3JtLT5hbW9wc3Ry YXRlZ3kgPiBTVElSX05TVFJBVEVHSUVTKQorCQl7CisJCQllcmVwb3J0KElORk8sCisJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNn KCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5zIG9wZXJhdG9yICVzIHdpdGggaW52YWxpZCBzdHJh dGVneSBudW1iZXIgJWQiLAorCQkJCQkJCQkgICBvcGZhbWlseW5hbWUsCisJCQkJCQkJCSAgIGZv cm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSwKKwkJCQkJCQkJICAgb3ByZm9ybS0+YW1v cHN0cmF0ZWd5KSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBzdGlyIGRvZXNu J3Qgc3VwcG9ydCBPUkRFUiBCWSBvcGVyYXRvcnMgKi8KKwkJaWYgKG9wcmZvcm0tPmFtb3BwdXJw b3NlICE9IEFNT1BfU0VBUkNIIHx8CisJCQlPaWRJc1ZhbGlkKG9wcmZvcm0tPmFtb3Bzb3J0ZmFt aWx5KSkKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBj b250YWlucyBpbnZhbGlkIE9SREVSIEJZIHNwZWNpZmljYXRpb24gZm9yIG9wZXJhdG9yICVzIiwK KwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3By Zm9ybS0+YW1vcG9wcikpKSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIENoZWNr IG9wZXJhdG9yIHNpZ25hdHVyZSAtLS0gc2FtZSBmb3IgYWxsIHN0aXIgc3RyYXRlZ2llcyAqLwor CQlpZiAoIWNoZWNrX2Ftb3Bfc2lnbmF0dXJlKG9wcmZvcm0tPmFtb3BvcHIsIEJPT0xPSUQsCisJ CQkJCQkJCSAgb3ByZm9ybS0+YW1vcGxlZnR0eXBlLAorCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3By aWdodHR5cGUpKQorCQl7CisJCQllcmVwb3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5 ICVzIGNvbnRhaW5zIG9wZXJhdG9yICVzIHdpdGggd3Jvbmcgc2lnbmF0dXJlIiwKKwkJCQkJCQkJ ICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1v cG9wcikpKSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCX0KKworCisJUmVsZWFzZUNhdENh Y2hlTGlzdChwcm9jbGlzdCk7CisJUmVsZWFzZUNhdENhY2hlTGlzdChvcHJsaXN0KTsKKwlSZWxl YXNlU3lzQ2FjaGUoZmFtaWx5dHVwKTsKKwlSZWxlYXNlU3lzQ2FjaGUoY2xhc3N0dXApOworCisJ cmV0dXJuIHJlc3VsdDsKK30KKworCisvKgorICogSW5pdGlhbGl6ZSBtZXRhcGFnZSBvZiBhIFNU SVIgaW5kZXguCisgKiBUaGUgc2tpcEluc2VydHMgZmxhZyBkZXRlcm1pbmVzIGlmIG5ldyBpbnNl cnRzIHdpbGwgYmUgYWNjZXB0ZWQgb3Igc2tpcHBlZC4KKyAqLwordm9pZAorU3RpckZpbGxNZXRh cGFnZShSZWxhdGlvbiBpbmRleCwgUGFnZSBtZXRhUGFnZSwgYm9vbCBza2lwSW5zZXJ0cykKK3sK KwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhZGF0YTsKKworCVN0aXJJbml0UGFnZShtZXRhUGFnZSwg U1RJUl9NRVRBKTsKKwltZXRhZGF0YSA9IFN0aXJQYWdlR2V0TWV0YShtZXRhUGFnZSk7CisJbWVt c2V0KG1ldGFkYXRhLCAwLCBzaXplb2YoU3Rpck1ldGFQYWdlRGF0YSkpOworCW1ldGFkYXRhLT5t YWdpY2tOdW1iZXIgPSBTVElSX01BR0lDS19OVU1CRVI7CisJbWV0YWRhdGEtPnNraXBJbnNlcnRz ID0gc2tpcEluc2VydHM7CisJKChQYWdlSGVhZGVyKSBtZXRhUGFnZSktPnBkX2xvd2VyICs9IHNp emVvZihTdGlyTWV0YVBhZ2VEYXRhKTsKK30KKworLyoKKyAqIENyZWF0ZSBhbmQgaW5pdGlhbGl6 ZSB0aGUgbWV0YXBhZ2UgZm9yIGEgU1RJUiBpbmRleC4KKyAqIFRoaXMgaXMgY2FsbGVkIGR1cmlu ZyBpbmRleCBjcmVhdGlvbi4KKyAqLwordm9pZAorU3RpckluaXRNZXRhcGFnZShSZWxhdGlvbiBp bmRleCwgRm9ya051bWJlciBmb3JrbnVtKQoreworCUJ1ZmZlciBtZXRhQnVmZmVyOworCVBhZ2Ug bWV0YVBhZ2U7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsKKwkvKgorCSAq IE1ha2UgYSBuZXcgcGFnZTsgc2luY2UgaXQgaXMgZmlyc3QgcGFnZSBpdCBzaG91bGQgYmUgYXNz b2NpYXRlZCB3aXRoCisJICogYmxvY2sgbnVtYmVyIDAgKFNUSVJfTUVUQVBBR0VfQkxLTk8pLiAg Tm8gbmVlZCB0byBob2xkIHRoZSBleHRlbnNpb24KKwkgKiBsb2NrIGJlY2F1c2UgdGhlcmUgY2Fu bm90IGJlIGNvbmN1cnJlbnQgaW5zZXJ0ZXJzIHlldC4KKwkgKi8KKwltZXRhQnVmZmVyID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBmb3JrbnVtLCBQX05FVywgUkJNX05PUk1BTCwgTlVMTCk7 CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOworCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihtZXRhQnVmZmVy KSA9PSBTVElSX01FVEFQQUdFX0JMS05PKTsKKworCW1ldGFQYWdlID0gIEJ1ZmZlckdldFBhZ2Uo bWV0YUJ1ZmZlcik7CisJU3RpckZpbGxNZXRhcGFnZShpbmRleCwgbWV0YVBhZ2UsIGZvcmtudW0g PT0gSU5JVF9GT1JLTlVNKTsKKworCU1hcmtCdWZmZXJEaXJ0eShtZXRhQnVmZmVyKTsKKwlFTkRf Q1JJVF9TRUNUSU9OKCk7CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKwor LyoKKyAqIEluaXRpYWxpemUgYW55IHBhZ2Ugb2YgYSBzdGlyIGluZGV4LgorICovCit2b2lkCitT dGlySW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpCit7CisJU3RpclBhZ2VPcGFxdWUg b3BhcXVlOworCisJUGFnZUluaXQocGFnZSwgQkxDS1NaLCBzaXplb2YoU3RpclBhZ2VPcGFxdWVE YXRhKSk7CisKKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShwYWdlKTsKKwlvcGFxdWUtPmZs YWdzID0gZmxhZ3M7CisJb3BhcXVlLT5zdGlyX3BhZ2VfaWQgPSBTVElSX1BBR0VfSUQ7Cit9CisK Ky8qCisgKiBBZGQgYSB0dXBsZSB0byBhIFNUSVIgcGFnZS4gUmV0dXJucyBmYWxzZSBpZiB0dXBs ZSBkb2Vzbid0IGZpdC4KKyAqIFRoZSB0dXBsZSBpcyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBw YWdlLgorICovCitzdGF0aWMgYm9vbAorU3RpclBhZ2VBZGRJdGVtKFBhZ2UgcGFnZSwgU3RpclR1 cGxlICp0dXBsZSkKK3sKKwlTdGlyVHVwbGUgKml0dXA7CisJU3RpclBhZ2VPcGFxdWUgb3BhcXVl OworCVBvaW50ZXIgcHRyOworCisJLyogV2Ugc2hvdWxkbid0IGJlIHBvaW50ZWQgdG8gYW4gaW52 YWxpZCBwYWdlICovCisJQXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJLyogRG9lcyBuZXcg dHVwbGUgZml0IG9uIHRoZSBwYWdlPyAqLworCWlmIChTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0 ZSwgcGFnZSkgPCBzaXplb2YoU3RpclR1cGxlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ29w eSBuZXcgdHVwbGUgdG8gdGhlIGVuZCBvZiBwYWdlICovCisJb3BhcXVlID0gU3RpclBhZ2VHZXRP cGFxdWUocGFnZSk7CisJaXR1cCA9IFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5tYXhv ZmYgKyAxKTsKKwltZW1jcHkoKFBvaW50ZXIpIGl0dXAsIChQb2ludGVyKSB0dXBsZSwgc2l6ZW9m KFN0aXJUdXBsZSkpOworCisJLyogQWRqdXN0IG1heG9mZiBhbmQgcGRfbG93ZXIgKi8KKwlvcGFx dWUtPm1heG9mZisrOworCXB0ciA9IChQb2ludGVyKSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9w YXF1ZS0+bWF4b2ZmICsgMSk7CisJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPSBwdHIg LSBwYWdlOworCisJLyogQXNzZXJ0IHdlIGRpZG4ndCBvdmVycnVuIGF2YWlsYWJsZSBzcGFjZSAq LworCUFzc2VydCgoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA8PSAoKFBhZ2VIZWFkZXIp IHBhZ2UpLT5wZF91cHBlcik7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBu ZXcgdHVwbGUgaW50byBhIFNUSVIgaW5kZXguCisgKi8KK2Jvb2wKK3N0aXJpbnNlcnQoUmVsYXRp b24gaW5kZXgsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJICBJdGVtUG9pbnRlciBo dF9jdGlkLCBSZWxhdGlvbiBoZWFwUmVsLAorCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlx dWUsCisJCSAgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRl eEluZm8pCit7CisJU3RpclR1cGxlICppdHVwOworCU1lbW9yeUNvbnRleHQgb2xkQ3R4OworCU1l bW9yeUNvbnRleHQgaW5zZXJ0Q3R4OworCVN0aXJNZXRhUGFnZURhdGEgKm1ldGFEYXRhOworCUJ1 ZmZlciBidWZmZXIsCisJCQltZXRhQnVmZmVyOworCVBhZ2UgcGFnZTsKKwl1aW50MTYgYmxrTm87 CisKKwkvKiBDcmVhdGUgdGVtcG9yYXJ5IGNvbnRleHQgZm9yIGluc2VydCBvcGVyYXRpb24gKi8K KwlpbnNlcnRDdHggPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQs CisJCQkJCQkJCQkgICJTdGlyIGluc2VydCB0ZW1wb3JhcnkgY29udGV4dCIsCisJCQkJCQkJCQkg IEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGluc2VydEN0eCk7CisKKwkvKiBDcmVhdGUgbmV3IHR1cGxlIHdpdGggaGVhcCBwb2ludGVy ICovCisJaXR1cCA9IChTdGlyVHVwbGUgKikgcGFsbG9jMChzaXplb2YoU3RpclR1cGxlKSk7CisJ aXR1cC0+aGVhcFB0ciA9ICpodF9jdGlkOworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGlu ZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxL Tk8pOworCisJZm9yICg7OykKKwl7CisJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xP Q0tfU0hBUkUpOworCQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShCdWZmZXJHZXRQYWdlKG1l dGFCdWZmZXIpKTsKKwkJLyogQ2hlY2sgaWYgaW5zZXJ0cyBhcmUgYWxsb3dlZCAqLworCQlpZiAo bWV0YURhdGEtPnNraXBJbnNlcnRzKQorCQl7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFC dWZmZXIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWJsa05vID0gbWV0YURhdGEtPmxhc3RC bGtObzsKKwkJLyogRG9uJ3QgaG9sZCBtZXRhYnVmZmVyIGxvY2sgd2hpbGUgZG9pbmcgaW5zZXJ0 ICovCisJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQlp ZiAoYmxrTm8gPiAwKQorCQl7CisJCQlidWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBibGtObyk7 CisJCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJCVNUQVJU X0NSSVRfU0VDVElPTigpOworCisJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCisJ CQlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkJCS8qIFRyeSB0byBhZGQgdHVwbGUgdG8g ZXhpc3RpbmcgcGFnZSAqLworCQkJaWYgKFN0aXJQYWdlQWRkSXRlbShwYWdlLCBpdHVwKSkKKwkJ CXsKKwkJCQkvKiBTdWNjZXNzISAgQXBwbHkgdGhlIGNoYW5nZSwgY2xlYW4gdXAsIGFuZCBleGl0 ICovCisJCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCQkJRU5EX0NSSVRfU0VDVElPTigp OworCisJCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJCVJlbGVhc2VCdWZmZXIo bWV0YUJ1ZmZlcik7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQkJTWVt b3J5Q29udGV4dERlbGV0ZShpbnNlcnRDdHgpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwor CQkJRU5EX0NSSVRfU0VDVElPTigpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwor CQl9CisKKwkJLyogTmVlZCB0byBhZGQgbmV3IHBhZ2UgLSBnZXQgZXhjbHVzaXZlIGxvY2sgb24g bWV0YSBwYWdlICovCisJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVT SVZFKTsKKworCQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShCdWZmZXJHZXRQYWdlKG1ldGFC dWZmZXIpKTsKKwkJLyogQ2hlY2sgaWYgYW5vdGhlciBiYWNrZW5kIGFscmVhZHkgZXh0ZW5kZWQg dGhlIGluZGV4ICovCisKKwkJaWYgKGJsa05vICE9IG1ldGFEYXRhLT5sYXN0QmxrTm8pCisJCXsK KwkJCUFzc2VydChibGtObyA8IG1ldGFEYXRhLT5sYXN0QmxrTm8pOworCQkJLyogU29tZW9uZSBl bHNlIGluc2VydGVkIHRoZSBuZXcgcGFnZSBpbnRvIHRoZSBpbmRleCwgbGV0cyB0cnkgYWdhaW4g Ki8KKwkJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCWNv bnRpbnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTXVzdCBleHRlbmQgdGhlIGZpbGUgKi8K KwkJCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZPUktO VU0sIE5VTEwsCisJCQkJCQkJCQkgICBFQl9MT0NLX0ZJUlNUKTsKKwkJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGJ1ZmZlcik7CisJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKworCQkJU3RpckluaXRQ YWdlKHBhZ2UsIDApOworCisJCQlpZiAoIVN0aXJQYWdlQWRkSXRlbShwYWdlLCBpdHVwKSkKKwkJ CXsKKwkJCQkvKiBXZSBzaG91bGRuJ3QgYmUgaGVyZSBzaW5jZSB3ZSdyZSBpbnNlcnRpbmcgdG8g YW4gZW1wdHkgcGFnZSAqLworCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgYWRkIG5ldyBzdGly IHR1cGxlIHRvIGVtcHR5IHBhZ2UiKTsKKwkJCX0KKworCQkJLyogVXBkYXRlIG1ldGEgcGFnZSB3 aXRoIG5ldyBsYXN0IGJsb2NrIG51bWJlciAqLworCQkJbWV0YURhdGEtPmxhc3RCbGtObyA9IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CisKKwkJCU1hcmtCdWZmZXJEaXJ0eShtZXRhQnVm ZmVyKTsKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCisJCQlFTkRfQ1JJVF9TRUNUSU9O KCk7CisKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCVVubG9ja1JlbGVhc2VC dWZmZXIobWV0YUJ1ZmZlcik7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOwor CQkJTWVtb3J5Q29udGV4dERlbGV0ZShpbnNlcnRDdHgpOworCisJCQlyZXR1cm4gZmFsc2U7CisJ CX0KKwl9Cit9CisKKy8qCisgKiBTVElSIGRvZXNuJ3Qgc3VwcG9ydCBzY2FucyAtIHRoZXNlIGZ1 bmN0aW9ucyBhbGwgZXJyb3Igb3V0CisgKi8KK0luZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2NhbihS ZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBp cyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZAorc3RpcnJl c2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywK KwkJICBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1Is IChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQgc3RpcmVu ZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90 IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKKy8qCisgKiBCdWlsZCBhIFNUSVIgaW5k ZXggLSBvbmx5IGFsbG93ZWQgZm9yIGF1eGlsaWFyeSBpbmRleGVzLgorICogSnVzdCBpbml0aWFs aXplcyB0aGUgbWV0YSBwYWdlIHdpdGhvdXQgYW55IGhlYXAgc2NhbnMuCisgKi8KK0luZGV4QnVp bGRSZXN1bHQgKnN0aXJidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJCQkJ CSAgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykKK3sKKwlJbmRleEJ1aWxkUmVzdWx0ICpy ZXN1bHQ7CisKKwlpZiAoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9S LCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiU1RJUiBp bmRleGVzIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGJlIGJ1aWx0IikpKTsKKworCVN0aXJJbml0TWV0 YXBhZ2UoaW5kZXgsIE1BSU5fRk9SS05VTSk7CisKKwlyZXN1bHQgPSAoSW5kZXhCdWlsZFJlc3Vs dCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKKwlyZXN1bHQtPmhlYXBfdHVw bGVzID0gMDsKKwlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IDA7CisJcmV0dXJuIHJlc3VsdDsKK30K Kwordm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlySW5pdE1ldGFw YWdlKGluZGV4LCBJTklUX0ZPUktOVU0pOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCSBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNrIGNh bGxiYWNrLAorCQkJCQkJCQkJIHZvaWQgKmNhbGxiYWNrX3N0YXRlKQoreworCVJlbGF0aW9uIGlu ZGV4ID0gaW5mby0+aW5kZXg7CisJQmxvY2tOdW1iZXIgYmxrbm8sIG5wYWdlczsKKwlCdWZmZXIg YnVmZmVyOworCVBhZ2UgcGFnZTsKKworCS8qIEZvciBub3JtYWwgVkFDVVVNLCBtYXJrIHRvIHNr aXAgaW5zZXJ0cyBhbmQgd2FybiBhYm91dCBpbmRleCBkcm9wIG5lZWRlZCAqLworCWlmICghaW5m by0+dmFsaWRhdGVfaW5kZXgpCisJeworCQlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5kZXgpOwor CisJCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2VlbXMg bGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCQlyZXR1 cm4gTlVMTDsKKwl9CisKKwlpZiAoc3RhdHMgPT0gTlVMTCkKKwkJc3RhdHMgPSAoSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOwor CisJLyoKKwkgKiBJdGVyYXRlIG92ZXIgdGhlIHBhZ2VzLiBXZSBkb24ndCBjYXJlIGFib3V0IGNv bmN1cnJlbnRseSBhZGRlZCBwYWdlcywKKwkgKiBiZWNhdXNlIGluZGV4IGlzIG1hcmtlZCBhcyBu b3QtcmVhZHkgZm9yIHRoYXQgbW9tbWVudCBhbmQgaW5kZXggbm90CisJICogdXNlZCBmb3IgaW5z ZXJ0LgorCSAqLworCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXgpOwor CWZvciAoYmxrbm8gPSBTVElSX0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQor CXsKKwkJU3RpclR1cGxlICppdHVwLCAqaXR1cEVuZDsKKworCQl2YWN1dW1fZGVsYXlfcG9pbnQo ZmFsc2UpOworCisJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JL TlVNLCBibGtubywKKwkJCQkJCQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKworCQlM b2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOworCisJCWlmIChQYWdlSXNOZXcocGFnZSkpCisJCXsKKwkJCVVubG9ja1Jl bGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaXR1cCA9IFN0aXJQ YWdlR2V0VHVwbGUocGFnZSwgRmlyc3RPZmZzZXROdW1iZXIpOworCQlpdHVwRW5kID0gU3RpclBh Z2VHZXRUdXBsZShwYWdlLCBPZmZzZXROdW1iZXJOZXh0KFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBh Z2UpKSk7CisJCXdoaWxlIChpdHVwIDwgaXR1cEVuZCkKKwkJeworCQkJLyogRG8gd2UgaGF2ZSB0 byBkZWxldGUgdGhpcyB0dXBsZT8gKi8KKwkJCWlmIChjYWxsYmFjaygmaXR1cC0+aGVhcFB0ciwg Y2FsbGJhY2tfc3RhdGUpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJ3ZSBuZXZlciBkZWxldGUgaW4gc3Rp ciIpKSk7CisJCQl9CisKKwkJCWl0dXAgPSBTdGlyUGFnZUdldE5leHRUdXBsZShpdHVwKTsKKwkJ fQorCisJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwlyZXR1cm4gc3RhdHM7 Cit9CisKKy8qCisgKiBNYXJrIGEgU1RJUiBpbmRleCB0byBza2lwIGZ1dHVyZSBpbnNlcnRzCisg Ki8KK3ZvaWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJN ZXRhUGFnZURhdGEgKm1ldGFEYXRhOworCUJ1ZmZlciBtZXRhQnVmZmVyOworCVBhZ2UgbWV0YVBh Z2U7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsKKwltZXRhQnVmZmVyID0g UmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisJTG9ja0J1ZmZlcihtZXRh QnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCVNUQVJUX0NSSVRfU0VDVElPTigpOwor CisJbWV0YVBhZ2UgPSBCdWZmZXJHZXRQYWdlKG1ldGFCdWZmZXIpOworCW1ldGFEYXRhID0gU3Rp clBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKworCWlmICghbWV0YURhdGEtPnNraXBJbnNlcnRzKQor CXsKKwkJbWV0YURhdGEtPnNraXBJbnNlcnRzID0gdHJ1ZTsKKwkJTWFya0J1ZmZlckRpcnR5KG1l dGFCdWZmZXIpOworCX0KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCitJ bmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAq aW5mbywKKwkJCQkJCQkJCQlJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQoreworCVN0aXJN YXJrQXNTa2lwSW5zZXJ0cyhpbmZvLT5pbmRleCk7CisJZXJlcG9ydChXQVJOSU5HLCAoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQllcnJtc2coIlwiJXNcIiBpcyBu b3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxpa2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRy b3BwZWQiLCBfX2Z1bmNfXykpKTsKKwlyZXR1cm4gTlVMTDsKK30KKworYnl0ZWEgKnN0aXJvcHRp b25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpCit7CisJcmV0dXJuIE5VTEw7Cit9 CisKK3ZvaWQgc3RpcmNvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpw YXRoLAorCQkJCQkgZG91YmxlIGxvb3BfY291bnQsIENvc3QgKmluZGV4U3RhcnR1cENvc3QsCisJ CQkJCSBDb3N0ICppbmRleFRvdGFsQ29zdCwgU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHks CisJCQkJCSBkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sIGRvdWJsZSAqaW5kZXhQYWdlcykKK3sK KwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks IGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOwor fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3MzlhOTJi ZGNjMS4uNzUzOWUwM2QzYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0MTEsNiArMzQxMSw3IEBA IHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hv dCkKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVw bGVzID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kg PSBOVUxMOworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKIAkvKgogCSAqIEVuY29k ZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkg c29ydGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IDRmZmZiNzZlNTU3Li4zODYwMmU2YTcy ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNzIwLDYgKzcyMCw3IEBAIGRvX2FuYWx5emVf cmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpdmluZm8ubWVz c2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBvbmVyZWwt PnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5Owor CQkJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkJCXN0YXRzID0gaW5kZXhfdmFj dXVtX2NsZWFudXAoJml2aW5mbywgTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCmluZGV4IDJiOWQ1NDhjZGViLi4yODZmY2NjZWMzZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCkBAIC04ODQsNiArODg0LDcgQEAgcGFyYWxsZWxfdmFjdXVtX3By b2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVs LAogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50 OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2 aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9 IGZhbHNlOwogCiAJLyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2 cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCmluZGV4IGUyZDllOWJlNDFhLi5lOTdlMDk0M2Y1YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMKQEAgLTg3NSw2ICs4NzUsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRy cywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGlu aXRpYWxpemUgaW5kZXgtYnVpbGQgc3RhdGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhv dENoYWluID0gZmFsc2U7CiAJbi0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKKwluLT5paV9BdXhp bGlhcnkgPSBmYWxzZTsKIAogCS8qIHNldCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFN ICovCiAJbi0+aWlfQW0gPSBhbW9pZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9n ZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggNWIyYWIxODFiNWYuLmI5 OTkxNmVkYjRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtNzMsNiArNzMsNyBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleFZhY3V1bUluZm8KIAlib29sCQllc3RpbWF0ZWRfY291bnQ7CS8qIG51bV9oZWFwX3R1 cGxlcyBpcyBhbiBlc3RpbWF0ZSAqLwogCWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBvcnQg bGV2ZWwgZm9yIHByb2dyZXNzIG1lc3NhZ2VzICovCiAJZG91YmxlCQludW1faGVhcF90dXBsZXM7 CS8qIHR1cGxlcyByZW1haW5pbmcgaW4gaGVhcCAqLworCWJvb2wJCXZhbGlkYXRlX2luZGV4OyAv KiB2YWxpZGF0aW5nIGNvbmN1cnJlbnRseSBidWlsdCBpbmRleD8gKi8KIAlCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLwogfSBJbmRl eFZhY3V1bUluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25z LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCmluZGV4IGRmYmI0Yzg1NDYwLi5h MTIxYjRkMzFjOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCkBAIC01MSw4ICs1MSw5IEBAIHR5 cGVkZWYgZW51bSByZWxvcHRfa2luZAogCVJFTE9QVF9LSU5EX1ZJRVcgPSAoMSA8PCA5KSwKIAlS RUxPUFRfS0lORF9CUklOID0gKDEgPDwgMTApLAogCVJFTE9QVF9LSU5EX1BBUlRJVElPTkVEID0g KDEgPDwgMTEpLAorCVJFTE9QVF9LSU5EX1NUSVIgPSAoMSA8PCAxMiksCiAJLyogaWYgeW91IGFk ZCBhIG5ldyBraW5kLCBtYWtlIHN1cmUgeW91IHVwZGF0ZSAibGFzdF9kZWZhdWx0IiB0b28gKi8K LQlSRUxPUFRfS0lORF9MQVNUX0RFRkFVTFQgPSBSRUxPUFRfS0lORF9QQVJUSVRJT05FRCwKKwlS RUxPUFRfS0lORF9MQVNUX0RFRkFVTFQgPSBSRUxPUFRfS0lORF9TVElSLAogCS8qIHNvbWUgY29t cGlsZXJzIHRyZWF0IGVudW1zIGFzIHNpZ25lZCBpbnRzLCBzbyB3ZSBjYW4ndCB1c2UgMSA8PCAz MSAqLwogCVJFTE9QVF9LSU5EX01BWCA9ICgxIDw8IDMwKQogfSByZWxvcHRfa2luZDsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rp ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTQzYzQyYTk3ZQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKQEAgLTAsMCArMSwx MTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuaAorICoJICBoZWFkZXIgZmls ZSBmb3IgcG9zdGdyZXMgc3RpciBhY2Nlc3MgbWV0aG9kIGltcGxlbWVudGF0aW9uLgorICoKKyAq CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaAorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIF9TVElSX0hfCisjZGVmaW5lIF9TVElSX0hfCisK KyNpbmNsdWRlICJhbWFwaS5oIgorI2luY2x1ZGUgInhsb2cuaCIKKyNpbmNsdWRlICJnZW5lcmlj X3hsb2cuaCIKKyNpbmNsdWRlICJpdHVwLmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUg Im5vZGVzL3BhdGhub2Rlcy5oIgorCisvKiBTdXBwb3J0IHByb2NlZHVyZXMgbnVtYmVycyAqLwor I2RlZmluZSBTVElSX05QUk9DCQkJCTAKKworLyogU2NhbiBzdHJhdGVnaWVzICovCisjZGVmaW5l IFNUSVJfTlNUUkFURUdJRVMJCTEKKworI2RlZmluZSBTVElSX09QVElPTlNfUFJPQwkJCQkwCisK Ky8qIE1hY3JvcyBmb3IgYWNjZXNzaW5nIHN0aXIgcGFnZSBzdHJ1Y3R1cmVzICovCisjZGVmaW5l IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpICgoU3RpclBhZ2VPcGFxdWUpIFBhZ2VHZXRTcGVjaWFs UG9pbnRlcihwYWdlKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKFN0aXJQ YWdlR2V0T3BhcXVlKHBhZ2UpLT5tYXhvZmYpCisjZGVmaW5lIFN0aXJQYWdlSXNNZXRhKHBhZ2Up IFwKKwkoKFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpLT5mbGFncyAmIFNUSVJfTUVUQSkgIT0gMCkK KyNkZWZpbmUgU3RpclBhZ2VHZXREYXRhKHBhZ2UpCQkoKFN0aXJUdXBsZSAqKVBhZ2VHZXRDb250 ZW50cyhwYWdlKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvZmZzZXQpIFwKKwko KFN0aXJUdXBsZSAqKShQYWdlR2V0Q29udGVudHMocGFnZSkgXAorCQkrIHNpemVvZihTdGlyVHVw bGUpICogKChvZmZzZXQpIC0gMSkpKQorI2RlZmluZSBTdGlyUGFnZUdldE5leHRUdXBsZSh0dXBs ZSkgXAorCSgoU3RpclR1cGxlICopKChQb2ludGVyKSh0dXBsZSkgKyBzaXplb2YoU3RpclR1cGxl KSkpCisKKworCisvKiBQcmVzZXJ2ZWQgcGFnZSBudW1iZXJzICovCisjZGVmaW5lIFNUSVJfTUVU QVBBR0VfQkxLTk8JKDApCisjZGVmaW5lIFNUSVJfSEVBRF9CTEtOTwkJKDEpIC8qIGZpcnN0IGRh dGEgcGFnZSAqLworCisKKy8qIE9wYXF1ZSBmb3Igc3RpciBwYWdlcyAqLwordHlwZWRlZiBzdHJ1 Y3QgU3RpclBhZ2VPcGFxdWVEYXRhCit7CisJT2Zmc2V0TnVtYmVyIG1heG9mZjsJCS8qIG51bWJl ciBvZiBpbmRleCB0dXBsZXMgb24gcGFnZSAqLworCXVpbnQxNgkJZmxhZ3M7CQkJLyogc2VlIGJp dCBkZWZpbml0aW9ucyBiZWxvdyAqLworCXVpbnQxNgkJdW51c2VkOwkJCS8qIHBsYWNlaG9sZGVy IHRvIGZvcmNlIG1heGFsaWduaW5nIG9mIHNpemUgb2YKKwkJCQkJCQkJICogU3RpclBhZ2VPcGFx dWVEYXRhIGFuZCB0byBwbGFjZQorCQkJCQkJCQkgKiBzdGlyX3BhZ2VfaWQgZXhhY3RseSBhdCB0 aGUgZW5kIG9mIHBhZ2UgKi8KKwl1aW50MTYJCXN0aXJfcGFnZV9pZDsJLyogZm9yIGlkZW50aWZp Y2F0aW9uIG9mIFNUSVIgaW5kZXhlcyAqLworfSBTdGlyUGFnZU9wYXF1ZURhdGE7CisKKy8qIFN0 aXIgcGFnZSBmbGFncyAqLworI2RlZmluZSBTVElSX01FVEEJCSgxPDwwKQorCit0eXBlZGVmIFN0 aXJQYWdlT3BhcXVlRGF0YSAqU3RpclBhZ2VPcGFxdWU7CisKKyNkZWZpbmUgU1RJUl9QQUdFX0lE CQkweEZGODQKKworLyogTWV0YWRhdGEgb2Ygc3RpciBpbmRleCAqLwordHlwZWRlZiBzdHJ1Y3Qg U3Rpck1ldGFQYWdlRGF0YQoreworCXVpbnQzMgkJbWFnaWNrTnVtYmVyOworCXVpbnQxNgkJbGFz dEJsa05vOworCWJvb2wJCXNraXBJbnNlcnRzOwkvKiBzaG91bGQgd2UganVzdCBleGl0IHdpdGhv dXQgYW55IGluc2VydHMgKi8KK30gU3Rpck1ldGFQYWdlRGF0YTsKKworLyogTWFnaWMgbnVtYmVy IHRvIGRpc3Rpbmd1aXNoIHN0aXIgcGFnZXMgZnJvbSBvdGhlcnMgKi8KKyNkZWZpbmUgU1RJUl9N QUdJQ0tfTlVNQkVSICgweERCQUMwREVGKQorCisjZGVmaW5lIFN0aXJQYWdlR2V0TWV0YShwYWdl KQkoKFN0aXJNZXRhUGFnZURhdGEgKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpKQorCit0eXBlZGVm IHN0cnVjdCBTdGlyVHVwbGUKK3sKKwlJdGVtUG9pbnRlckRhdGEgaGVhcFB0cjsKK30gU3RpclR1 cGxlOworCisjZGVmaW5lIFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSBcCisJKEJM Q0tTWiAtIE1BWEFMSUdOKFNpemVPZlBhZ2VIZWFkZXJEYXRhKSBcCisJCS0gU3RpclBhZ2VHZXRN YXhPZmZzZXQocGFnZSkgKiAoc2l6ZW9mKFN0aXJUdXBsZSkpIFwKKwkJLSBNQVhBTElHTihzaXpl b2YoU3RpclBhZ2VPcGFxdWVEYXRhKSkpCisKK2V4dGVybiB2b2lkIFN0aXJGaWxsTWV0YXBhZ2Uo UmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpOworZXh0ZXJu IHZvaWQgU3RpckluaXRNZXRhcGFnZShSZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVt KTsKK2V4dGVybiB2b2lkIFN0aXJJbml0UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncyk7Citl eHRlcm4gdm9pZCBTdGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpOworCisvKiBp bmRleCBhY2Nlc3MgbWV0aG9kIGludGVyZmFjZSBmdW5jdGlvbnMgKi8KK2V4dGVybiBib29sIHN0 aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCk7CitleHRlcm4gYm9vbCBzdGlyaW5zZXJ0KFJlbGF0 aW9uIGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCisJCQkJCSBJdGVtUG9pbnRl ciBodF9jdGlkLCBSZWxhdGlvbiBoZWFwUmVsLAorCQkJCQkgSW5kZXhVbmlxdWVDaGVjayBjaGVj a1VuaXF1ZSwKKwkJCQkJIGJvb2wgaW5kZXhVbmNoYW5nZWQsCisJCQkJCSBzdHJ1Y3QgSW5kZXhJ bmZvICppbmRleEluZm8pOworZXh0ZXJuIEluZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2NhbihSZWxh dGlvbiByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcnJlc2Nh bihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJ CQkJIFNjYW5LZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcmVu ZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKTsKK2V4dGVybiBJbmRleEJ1aWxkUmVzdWx0ICpzdGly YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkJCSBzdHJ1Y3QgSW5k ZXhJbmZvICppbmRleEluZm8pOworZXh0ZXJuIHZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24g aW5kZXgpOworZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxldGUoSW5k ZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCSAgIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMsIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNrIGNhbGxiYWNrLAorCQkJCQkJCQkJCSAgIHZv aWQgKmNhbGxiYWNrX3N0YXRlKTsKK2V4dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJ2 YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQkJICBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzKTsKK2V4dGVybiBieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0g cmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKaW5kZXggMjZkMTU5MjhhMTUuLmE1ZWNmOTIwOGFk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FtLmRhdApAQCAtMzMsNSArMzMsOCBAQAogeyBvaWQgPT4gJzM1ODAn LCBvaWRfc3ltYm9sID0+ICdCUklOX0FNX09JRCcsCiAgIGRlc2NyID0+ICdibG9jayByYW5nZSBp bmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZCcsCiAgIGFtbmFtZSA9PiAnYnJpbicsIGFtaGFuZGxl ciA9PiAnYnJpbmhhbmRsZXInLCBhbXR5cGUgPT4gJ2knIH0sCit7IG9pZCA9PiAnNTU1NScsIG9p ZF9zeW1ib2wgPT4gJ1NUSVJfQU1fT0lEJywKKyAgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXgg cmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZCcsCisgIGFtbmFtZSA9PiAnc3RpcicsIGFtaGFuZGxl ciA9PiAnc3RpcmhhbmRsZXInLCBhbXR5cGUgPT4gJ2knIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X29wY2xhc3MuZGF0CmluZGV4IDRhOTYyNDgwMmFhLi42MjI3YzU2NThmYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX29wY2xhc3MuZGF0CkBAIC00ODgsNCArNDg4LDggQEAKIAogIyBubyBicmluIG9wY2xh c3MgZm9yIHRoZSBnZW9tZXRyaWMgdHlwZXMgZXhjZXB0IGJveAogCisjIGFsbG93IGFueSB0eXBl cyBmb3IgU1RJUgoreyBvcGNtZXRob2QgPT4gJ3N0aXInLCBvaWRfc3ltYm9sID0+ICdBTllfU1RJ Ul9PUFNfT0lEJywgb3BjbmFtZSA9PiAnc3Rpcl9vcHMnLAorICBvcGNmYW1pbHkgPT4gJ3N0aXIv YW55X29wcycsIG9wY2ludHlwZSA9PiAnYW55J30sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZh bWlseS5kYXQKaW5kZXggZjdkY2I5NmI0M2MuLjgzOGFkMzJjOTMyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX29wZmFtaWx5LmRhdApAQCAtMzA0LDUgKzMwNCw3IEBACiAgIG9wZm1ldGhvZCA9PiAnaGFz aCcsIG9wZm5hbWUgPT4gJ211bHRpcmFuZ2Vfb3BzJyB9LAogeyBvaWQgPT4gJzYxNTgnLAogICBv cGZtZXRob2QgPT4gJ2dpc3QnLCBvcGZuYW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKK3sgb2lk ID0+ICc1NTU4JywKKyAgb3BmbWV0aG9kID0+ICdzdGlyJywgb3BmbmFtZSA9PiAnYW55X29wcycg fSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNjJiZWI3MWRhMjguLmYwNWE1ZWVj ZGRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTkzNSw2ICs5MzUsMTAgQEAKICAgcHJv bmFtZSA9PiAnYnJpbmhhbmRsZXInLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUg PT4gJ2luZGV4X2FtX2hhbmRsZXInLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9z cmMgPT4gJ2JyaW5oYW5kbGVyJyB9LAoreyBvaWQgPT4gJzU1NTYnLCBkZXNjciA9PiAnc2hvcnQg dGVybSBpbmRleCByZXBsYWNlbWVudCBhY2Nlc3MgbWV0aG9kIGhhbmRsZXInLAorICBwcm9uYW1l ID0+ICdzdGlyaGFuZGxlcicsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAn aW5kZXhfYW1faGFuZGxlcicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCisgIHByb3NyYyA9 PiAnc3RpcmhhbmRsZXInIH0sCiB7IG9pZCA9PiAnMzk1MicsIGRlc2NyID0+ICdicmluOiBzdGFu ZGFsb25lIHNjYW4gbmV3IHRhYmxlIHBhZ2VzJywKICAgcHJvbmFtZSA9PiAnYnJpbl9zdW1tYXJp emVfbmV3X3ZhbHVlcycsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3Un LCBwcm9yZXR0eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggNWI2Y2FkYjVhNmMuLjM4NTBkZGU0YWRiIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtMTgyLDEyICsxODIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAg KgkJQnJva2VuSG90Q2hhaW4JCWRpZCB3ZSBkZXRlY3QgYW55IGJyb2tlbiBIT1QgY2hhaW5zPwog ICoJCVN1bW1hcml6aW5nCQkJaXMgaXQgYSBzdW1tYXJpemluZyBpbmRleD8KICAqCQlQYXJhbGxl bFdvcmtlcnMJCSMgb2Ygd29ya2VycyByZXF1ZXN0ZWQgKGV4Y2x1ZGVzIGxlYWRlcikKKyAqCQlB dXhpbGlhcnkJCQkjIGluZGV4LWhlbHBlciBmb3IgY29uY3VycmVudCBidWlsZD8KICAqCQlBbQkJ CQkJT2lkIG9mIGluZGV4IEFNCiAgKgkJQW1DYWNoZQkJCQlwcml2YXRlIGNhY2hlIGFyZWEgZm9y IGluZGV4IEFNCiAgKgkJQ29udGV4dAkJCQltZW1vcnkgY29udGV4dCBob2xkaW5nIHRoaXMgSW5k ZXhJbmZvCiAgKgotICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFuZCBpaV9Q YXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQgb25seQotICogZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5 J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBp aV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMKKyAq IGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5 IHplcm9lZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHR5cGVkZWYgc3Ry dWN0IEluZGV4SW5mbwpAQCAtMjE2LDYgKzIxNyw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5m bwogCWJvb2wJCWlpX1N1bW1hcml6aW5nOwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAlp bnQJCQlpaV9QYXJhbGxlbFdvcmtlcnM7CisJYm9vbAkJaWlfQXV4aWxpYXJ5OwogCU9pZAkJCWlp X0FtOwogCXZvaWQJICAgKmlpX0FtQ2FjaGU7CiAJTWVtb3J5Q29udGV4dCBpaV9Db250ZXh0Owpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKaW5kZXggNmM2NGRiNmQ0NTYuLmUwZDkzOWQ2ODU3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKQEAgLTYyLDYgKzYyLDE0IEBAIGV4dGVy biB2b2lkIHNwZ2Nvc3Rlc3RpbWF0ZShzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ U2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHksCiAJCQkJCQkJZG91YmxlICppbmRleENvcnJl bGF0aW9uLAogCQkJCQkJCWRvdWJsZSAqaW5kZXhQYWdlcyk7CitleHRlcm4gdm9pZCBzdGlyY29z dGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQlzdHJ1Y3QgSW5kZXhQ YXRoICpwYXRoLAorCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50LAorCQkJCQkJCUNvc3QgKmluZGV4 U3RhcnR1cENvc3QsCisJCQkJCQkJQ29zdCAqaW5kZXhUb3RhbENvc3QsCisJCQkJCQkJU2VsZWN0 aXZpdHkgKmluZGV4U2VsZWN0aXZpdHksCisJCQkJCQkJZG91YmxlICppbmRleENvcnJlbGF0aW9u LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhQYWdlcyk7CiBleHRlcm4gdm9pZCBnaW5jb3N0ZXN0aW1h dGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBh dGgsCiAJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0 aWxzLm91dAppbmRleCA3YWI2MTEzYzYxOS4uOTJjMDMzYTIwMTAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dApAQCAtMTczLDcgKzE3MywxMyBAQCBzZWxlY3QgYW1uYW1lLCBw cm9wLCBwZ19pbmRleGFtX2hhc19wcm9wZXJ0eShhLm9pZCwgcHJvcCkgYXMgcAogIHNwZ2lzdCB8 IGNhbl9leGNsdWRlICAgfCB0CiAgc3BnaXN0IHwgY2FuX2luY2x1ZGUgICB8IHQKICBzcGdpc3Qg fCBib2d1cyAgICAgICAgIHwgCi0oMzYgcm93cykKKyBzdGlyICAgfCBjYW5fb3JkZXIgICAgIHwg ZgorIHN0aXIgICB8IGNhbl91bmlxdWUgICAgfCBmCisgc3RpciAgIHwgY2FuX211bHRpX2NvbCB8 IHQKKyBzdGlyICAgfCBjYW5fZXhjbHVkZSAgIHwgZgorIHN0aXIgICB8IGNhbl9pbmNsdWRlICAg fCB0Cisgc3RpciAgIHwgYm9ndXMgICAgICAgICB8IAorKDQyIHJvd3MpCiAKIC0tCiAtLSBhZGRp dGlvbmFsIGNoZWNrcyBmb3IgcGdfaW5kZXhfY29sdW1uX2hhc19wcm9wZXJ0eQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKaW5kZXggMjBiZjllYTljZGYuLmZjMTE2Yjg0 YTI4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTIxMjIs OSArMjEyMiwxMCBAQCBGUk9NIHBnX29wY2xhc3MgQVMgYzEKIFdIRVJFIE5PVCBFWElTVFMoU0VM RUNUIDEgRlJPTSBwZ19hbW9wIEFTIGExCiAgICAgICAgICAgICAgICAgIFdIRVJFIGExLmFtb3Bm YW1pbHkgPSBjMS5vcGNmYW1pbHkKICAgICAgICAgICAgICAgICAgICBBTkQgYmluYXJ5X2NvZXJj aWJsZShjMS5vcGNpbnR5cGUsIGExLmFtb3BsZWZ0dHlwZSkpOwotIG9wY25hbWUgfCBvcGNmYW1p bHkgCi0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KLSgwIHJvd3MpCisgb3BjbmFtZSAgfCBvcGNmYW1p bHkgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgc3Rpcl9vcHMgfCAgICAgIDU1NTgKKygxIHJv dykKIAogLS0gQ2hlY2sgdGhhdCBlYWNoIG9wZXJhdG9yIGxpc3RlZCBpbiBwZ19hbW9wIGhhcyBh biBhc3NvY2lhdGVkIG9wY2xhc3MsCiAtLSB0aGF0IGlzIG9uZSB3aG9zZSBvcGNpbnR5cGUgbWF0 Y2hlcyBvcHJsZWZ0IChwb3NzaWJseSBieSBjb2VyY2lvbikuCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dAppbmRleCBjZjQ4YWU2ZDBjMi4uNTJkZGU1NzY4MGQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dApAQCAtNTEzNyw3ICs1MTM3LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9k cwogIGhlYXAgICB8IFRhYmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDgg cm93cykKKyBzdGlyICAgfCBJbmRleAorKDkgcm93cykKIAogXGRBICoKIExpc3Qgb2YgYWNjZXNz IG1ldGhvZHMKQEAgLTUxNTEsNyArNTE1Miw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBo ZWFwICAgfCBUYWJsZQogIGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3Mp Cisgc3RpciAgIHwgSW5kZXgKKyg5IHJvd3MpCiAKIFxkQSBoKgogTGlzdCBvZiBhY2Nlc3MgbWV0 aG9kcwpAQCAtNTE3Niw5ICs1MTc4LDkgQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogCiBcZEE6 IGV4dHJhIGFyZ3VtZW50ICJiYXIiIGlnbm9yZWQKIFxkQSsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwotICBOYW1lICB8IFR5cGUgIHwgICAgICAg SGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAK LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAg ICAgICAgfCAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgCistLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBicmluICAgfCBJbmRleCB8IGJyaW5oYW5kbGVyICAg ICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBtZXRob2QKICBidHJlZSAg fCBJbmRleCB8IGJ0aGFuZGxlciAgICAgICAgICAgIHwgYi10cmVlIGluZGV4IGFjY2VzcyBtZXRo b2QKICBnaW4gICAgfCBJbmRleCB8IGdpbmhhbmRsZXIgICAgICAgICAgIHwgR0lOIGluZGV4IGFj Y2VzcyBtZXRob2QKQEAgLTUxODcsMTIgKzUxODksMTMgQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9k cwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCBoZWFwIHRhYmxlIGFj Y2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgCiAg c3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAgICAgICB8IFNQLUdpU1QgaW5kZXggYWNj ZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJbmRleCB8IHN0aXJoYW5kbGVyICAgICAg ICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBhY2Nlc3MgbWV0aG9kCisoOSByb3dz KQogCiBcZEErICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwotICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAg ICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAKLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwor ICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgICBE ZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBicmluICAgfCBJbmRleCB8IGJyaW5oYW5kbGVyICAgICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QKICBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxlciAgICAg ICAgICAgIHwgYi10cmVlIGluZGV4IGFjY2VzcyBtZXRob2QKICBnaW4gICAgfCBJbmRleCB8IGdp bmhhbmRsZXIgICAgICAgICAgIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKQEAgLTUyMDEsNyAr NTIwNCw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8IGhlYXBf dGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFi bGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3BnaGFuZGxl ciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3MpCisgc3Rp ciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5kZXggcmVw bGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykKIAogXGRBKyBoKgogICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwotLSAKMi40My4wCgo= --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9wg16 RnJvbSBkMDE0ZDgzN2MyYzJkNDNmNGNlZGM2YTkyODAzNzRhMGY1YjdlZGRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDQvNl0gVHJhY2sgYW5kIGRyb3AgYXV4aWxpYXJ5IGluZGV4 ZXMgaW4KIERST1AvUkVJTkRFWAoKRHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggb3BlcmF0aW9ucywg YXV4aWxpYXJ5IGluZGV4ZXMgbWF5IGJlIGxlZnQgYXMgb3JwaGFuZWQgb2JqZWN0cyB3aGVuIGVy cm9ycyBvY2N1ciAoanVuayBhdXhpbGlhcnkgaW5kZXhlcykuCgpUaGlzIHBhdGNoIGltcHJvdmVz IHRoZSBoYW5kbGluZyBvZiBzdWNoIGF1eGlsaWFyeSBpbmRleGVzOgotIGFkZCBhdXhpbGlhcnlG b3JJbmRleElkIHBhcmFtZXRlciB0byBpbmRleF9jcmVhdGUoKSB0byB0cmFjayBkZXBlbmRlbmNp ZXMgYmV0d2VlbiBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcwotIGF1dG9tYXRpY2FsbHkgZHJv cCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBtYWluIGluZGV4IGlzIGRyb3BwZWQKLSBkZWxl dGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9wZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRp b25zCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICAgIHwgIDE0 ICsrLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgIDE5ICsr LS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgIHwgIDY0ICsrKysrKysr KystLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgICAgICAgICAgICB8ICA1NyAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgfCAgMzUg KysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgIHwgIDQ4 ICsrKysrKysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgMTA1ICsrKysr KysrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAg ICAgIHwgIDU3ICsrKysrKysrKystCiAxMiBmaWxlcyBjaGFuZ2VkLCAzNjMgaW5zZXJ0aW9ucygr KSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXggZTdh N2ExNjA3NDIuLjI5OGEwOTNmNTU0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKQEAg LTY2OCwxMCArNjY4LDE2IEBAIEluZGV4ZXM6CiAgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJ TlZBTElECiA8L3Byb2dyYW1saXN0aW5nPgogCi0gICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 Ci0gICAgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIGFuZCB0 cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5U TFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcwotICAgIHRvIHJlYnVpbGQgdGhl IGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+ KS4KKyAgICBUaGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMg dG8gZHJvcCB0aGUgaW5kZXggd2l0aAorICAgIDxjb21tYW5kPkRST1AgSU5ERVg8L2NvbW1hbmQ+ LiBUaGUgYXV4aWxpYXJ5IGluZGV4IChzdWZmaXhlZCB3aXRoCisgICAgPGxpdGVyYWw+Y2NhdXg8 L2xpdGVyYWw+KSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCB3aGVuIHRoZSBtYWluCisg ICAgaW5kZXggaXMgZHJvcHBlZC4gQWZ0ZXIgZHJvcHBpbmcgdGhlIGluZGV4ZXMsIHlvdSBjYW4g dHJ5IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8KKyAgICByZWJ1aWxkIHRo ZSBpbmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5k PiwKKyAgICB3aGljaCB3aWxsIGFsc28gaGFuZGxlIGNsZWFudXAgb2YgYW55IGludmFsaWQgYXV4 aWxpYXJ5IGluZGV4ZXMuKQorICAgIElmIHRoZSBvbmx5IGludmFsaWQgaW5kZXggaXMgb25lIHN1 ZmZpeGVkIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPgorICAgIHJlY29tbWVuZGVkIHJlY292ZXJ5 IG1ldGhvZCBpcyBqdXN0IDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+CisgICAgZm9yIHRo YXQgaW5kZXguCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRl eCA1N2MzNDdmMjkzMC4uNjM0YmE1NWQxODQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00NzQs MTQgKzQ3NCwxNyBAQCBJbmRleGVzOgogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIElmIHRoZSBp bmRleCBtYXJrZWQgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD4gaXMgc3VmZml4ZWQKLSAgICA8 bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbCBvciA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4sIHRoZW4g aXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBvciBhdXhpbGlhcnkKLSAgICBpbmRleCBj cmVhdGVkIGR1cmluZyB0aGUgY29uY3VycmVudCBvcGVyYXRpb24sIGFuZCB0aGUgcmVjb21tZW5k ZWQKLSAgICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIHVzaW5nIDxs aXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+LAotICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFuZD5S RUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uCi0gICAgSWYgdGhlIGludmFsaWQg aW5kZXggaXMgaW5zdGVhZCBzdWZmaXhlZCA8bGl0ZXJhbD5jY29sZDwvbGl0ZXJhbD4sCi0gICAg aXQgY29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBk cm9wcGVkOwotICAgIHRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMgdG8ganVzdCBk cm9wIHNhaWQgaW5kZXgsIHNpbmNlIHRoZQotICAgIHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1 Y2Nlc3NmdWwuCisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3Bv bmRzIHRvIHRoZSB0cmFuc2llbnQgaW5kZXgKKyAgICBjcmVhdGVkIGR1cmluZyB0aGUgY29uY3Vy cmVudCBvcGVyYXRpb24uIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQorICAgIG1ldGhvZCBpcyB0 byBkcm9wIGl0IHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+LCB0aGVuIGF0dGVt cHQKKyAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uIFRo ZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAoc3VmZml4ZWQgd2l0aCA8bGl0ZXJhbD5jY2F1eDwvbGl0 ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVkCisgICAgYWxvbmcgd2l0aCBpdHMg bWFpbiBpbmRleC4gSWYgdGhlIGludmFsaWQgaW5kZXggaXMgaW5zdGVhZCBzdWZmaXhlZAorICAg IDxsaXRlcmFsPmNjb2xkPC9saXRlcmFsPiwgaXQgY29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFs IGluZGV4IHdoaWNoCisgICAgY291bGQgbm90IGJlIGRyb3BwZWQ7IHRoZSByZWNvbW1lbmRlZCBy ZWNvdmVyeSBtZXRob2QgaXMgdG8ganVzdCBkcm9wCisgICAgc2FpZCBpbmRleCwgc2luY2UgdGhl IHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWwuIElmIHRoZSBvbmx5CisgICAgaW52 YWxpZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+IHJlY29t bWVuZGVkCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwv bGl0ZXJhbD4gZm9yIHRoYXQgaW5kZXguCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwppbmRleCAxODMxNmEzOTY4Yi4uYWI0YzNlMmZiNGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvZGVwZW5kZW5jeS5jCkBAIC0yODYsNyArMjg2LDcgQEAgcGVyZm9ybURlbGV0aW9uKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkgKiBBY3F1aXJlIGRlbGV0aW9uIGxvY2sgb24g dGhlIHRhcmdldCBvYmplY3QuICAoSWRlYWxseSB0aGUgY2FsbGVyIGhhcwogCSAqIGRvbmUgdGhp cyBhbHJlYWR5LCBidXQgbWFueSBwbGFjZXMgYXJlIHNsb3BweSBhYm91dCBpdC4pCiAJICovCi0J QWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIDApOworCUFjcXVpcmVEZWxldGlvbkxvY2sob2Jq ZWN0LCBmbGFncyk7CiAKIAkvKgogCSAqIENvbnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB0byBk ZWxldGUgKGllLCB0aGUgZ2l2ZW4gb2JqZWN0IHBsdXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA4NWQy YjIwNGY0ZC4uMDdjYTNkYmM3MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTY4Nyw2ICs2ODcsOCBA QCBVcGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKICAqCQlwYXJlbnQgaW5kZXg7IG90 aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcGFyZW50Q29uc3RyYWludElkOiBpZiBjcmVhdGluZyBh IGNvbnN0cmFpbnQgb24gYSBwYXJ0aXRpb24sIHRoZSBPSUQKICAqCQlvZiB0aGUgY29uc3RyYWlu dCBpbiB0aGUgcGFyZW50OyBvdGhlcndpc2UgSW52YWxpZE9pZC4KKyAqIGF1eGlsaWFyeUZvcklu ZGV4SWQ6IGlmIGNyZWF0aW5nIGF1eGlsaWFyeSBpbmRleCwgdGhlIE9JRCBvZiB0aGUgbWFpbgor ICoJCWluZGV4OyBvdGhlcndpc2UgSW52YWxpZE9pZC4KICAqIHJlbEZpbGVOdW1iZXI6IG5vcm1h bGx5LCBwYXNzIEludmFsaWRSZWxGaWxlTnVtYmVyIHRvIGdldCBuZXcgc3RvcmFnZS4KICAqCQlN YXkgYmUgbm9uemVybyB0byBhdHRhY2ggYW4gZXhpc3RpbmcgdmFsaWQgYnVpbGQuCiAgKiBpbmRl eEluZm86IHNhbWUgaW5mbyBleGVjdXRvciB1c2VzIHRvIGluc2VydCBpbnRvIHRoZSBpbmRleApA QCAtNzMzLDYgKzczNSw3IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ CQkgT2lkIGluZGV4UmVsYXRpb25JZCwKIAkJCSBPaWQgcGFyZW50SW5kZXhSZWxpZCwKIAkJCSBP aWQgcGFyZW50Q29uc3RyYWludElkLAorCQkJIE9pZCBhdXhpbGlhcnlGb3JJbmRleElkLAogCQkJ IFJlbEZpbGVOdW1iZXIgcmVsRmlsZU51bWJlciwKIAkJCSBJbmRleEluZm8gKmluZGV4SW5mbywK IAkJCSBjb25zdCBMaXN0ICppbmRleENvbE5hbWVzLApAQCAtNzc1LDYgKzc3OCw4IEBAIGluZGV4 X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAgICgoZmxhZ3MgJiBJTkRFWF9DUkVB VEVfQUREX0NPTlNUUkFJTlQpICE9IDApKTsKIAkvKiBwYXJ0aXRpb25lZCBpbmRleGVzIG11c3Qg bmV2ZXIgYmUgImJ1aWx0IiBieSB0aGVtc2VsdmVzICovCiAJQXNzZXJ0KCFwYXJ0aXRpb25lZCB8 fCAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCkpOworCS8qIGF1eGlsaWFyeUZvcklu ZGV4SWQgYW5kIElOREVYX0NSRUFURV9BVVhJTElBUlkgYXJlIHJlcXVpcmVkIGJvdGggb3IgbmVp dGhlciAqLworCUFzc2VydChPaWRJc1ZhbGlkKGF1eGlsaWFyeUZvckluZGV4SWQpID09IGF1eGls aWFyeSk7CiAKIAlyZWxraW5kID0gcGFydGl0aW9uZWQgPyBSRUxLSU5EX1BBUlRJVElPTkVEX0lO REVYIDogUkVMS0lORF9JTkRFWDsKIAlpc19leGNsdXNpb24gPSAoaW5kZXhJbmZvLT5paV9FeGNs dXNpb25PcHMgIT0gTlVMTCk7CkBAIC0xMTc2LDYgKzExODEsMTUgQEAgaW5kZXhfY3JlYXRlKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVm ZXJlbmNlZCwgREVQRU5ERU5DWV9QQVJUSVRJT05fU0VDKTsKIAkJfQogCisJCS8qCisJCSAqIFJl Y29yZCBkZXBlbmRlbmN5IG9uIHRoZSBtYWluIGluZGV4IGluIGNhc2Ugb2YgYXV4aWxpYXJ5IGlu ZGV4LgorCQkgKi8KKwkJaWYgKE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9ySW5kZXhJZCkpCisJCXsK KwkJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhp bGlhcnlGb3JJbmRleElkKTsKKwkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJl bmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKKwkJfQorCiAJCS8qIHBsYWNlaG9sZGVyIGZvciBub3Jt YWwgZGVwZW5kZW5jaWVzICovCiAJCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKIApA QCAtMTQ1OCw2ICsxNDcyLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJICBJbnZhbGlkT2lkLAkv KiBpbmRleFJlbGF0aW9uSWQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIHBhcmVudEluZGV4 UmVsaWQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIHBhcmVudENvbnN0cmFpbnRJZCAqLwor CQkJCQkJCSAgSW52YWxpZE9pZCwJLyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCAqLwogCQkJCQkJCSAg SW52YWxpZFJlbEZpbGVOdW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KIAkJCQkJCQkgIG5ld0lu Zm8sCiAJCQkJCQkJICBpbmRleENvbE5hbWVzLApAQCAtMTYwOCw2ICsxNjIzLDcgQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbklu ZGV4SWQsCiAJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KIAkJ CQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KIAkJCQkJCQkgIElu dmFsaWRPaWQsICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgbWFpbkluZGV4 SWQsICAgLyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCAqLwogCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVO dW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KIAkJCQkJCQkgIG5ld0luZm8sCiAJCQkJCQkJICBp bmRleENvbE5hbWVzLApAQCAtMzgyMCw2ICszODM2LDcgQEAgcmVpbmRleF9pbmRleChjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCQkJaGVhcFJlbGF0aW9uOwogCU9pZAkJ CWhlYXBJZDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKKwlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAlp bnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwogCUluZGV4SW5m byAgKmluZGV4SW5mbzsKQEAgLTM4NzYsNiArMzg5MywxOSBAQCByZWluZGV4X2luZGV4KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9tdWx0aV9wYXJhbSgyLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192YWxzKTsKIAl9CiAKKwkv KiBDaGVjayBmb3IgdGhlIGF1eGlsaWFyeSBpbmRleCBmb3IgdGhhdCBpbmRleCwgaXQgbmVlZHMg dG8gZHJvcHBlZCAqLworCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChpbmRl eElkKTsKKwlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJeworCQlPYmplY3RBZGRy ZXNzIG9iamVjdDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9i amVjdC5vYmplY3RJZCA9IGp1bmtBdXhJbmRleElkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAw OworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJIFBF UkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlF VExZKTsKKwl9CisKIAkvKgogCSAqIE9wZW4gdGhlIHRhcmdldCBpbmRleCByZWxhdGlvbiBhbmQg Z2V0IGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LCB0bwogCSAqIGVuc3VyZSB0aGF0IG5vIG9uZSBl bHNlIGlzIHRvdWNoaW5nIHRoaXMgcGFydGljdWxhciBpbmRleC4KQEAgLTQxNjQsNyArNDE5NCw4 IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwg aW50IGZsYWdzLAogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQl0b2FzdF9yZWxpZDsKLQlMaXN0 CSAgICppbmRleElkczsKKwlMaXN0CSAgICppbmRleElkcywKKwkJCSAgICphdXhJbmRleElkcyA9 IE5JTDsKIAljaGFyCQlwZXJzaXN0ZW5jZTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKIAlMaXN0 Q2VsbCAgICppbmRleElkOwpAQCAtNDI1MywxMyArNDI4NCwzMCBAQCByZWluZGV4X3JlbGF0aW9u KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAllbHNlCiAJ CXBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwogCisJZm9yZWFjaChp bmRleElkLCBpbmRleElkcykKKwl7CisJCU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRl eElkKTsKKwkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOworCisJCS8q IEFsbCBTVElSIGluZGV4ZXMgYXJlIGF1eGlsaWFyeSBpbmRleGVzICovCisJCWlmIChpbmRleEFt ID09IFNUSVJfQU1fT0lEKQorCQl7CisJCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVT U19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJYXV4 SW5kZXhJZHMgPSBsYXBwZW5kX29pZChhdXhJbmRleElkcywgaW5kZXhPaWQpOworCQl9CisJfQor CiAJLyogUmVpbmRleCBhbGwgdGhlIGluZGV4ZXMuICovCiAJaSA9IDE7CiAJZm9yZWFjaChpbmRl eElkLCBpbmRleElkcykKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElk KTsKIAkJT2lkCQkJaW5kZXhOYW1lc3BhY2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lk KTsKLQkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOworCisJCS8qIEF1 eGlsaWFyeSBpbmRleGVzIGFyZSBnb2luZyB0byBiZSBkcm9wcGVkIGR1cmluZyBtYWluIGluZGV4 IHJlYnVpbGQgKi8KKwkJaWYgKGxpc3RfbWVtYmVyX29pZChhdXhJbmRleElkcywgaW5kZXhPaWQp KQorCQkJY29udGludWU7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRleGVzIG9u IGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDI4NSwxOCArNDMzMyw2IEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FNX09J RCkKLQkJewotCQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCi0JCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGluZGV4 TmFtZXNwYWNlSWQpLAotCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9pZCkpKSk7Ci0JCQlpZiAo ZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCi0JCQkJUmVtb3ZlUmVpbmRl eFBlbmRpbmcoaW5kZXhPaWQpOwotCQkJY29udGludWU7Ci0JCX0KLQogCQlyZWluZGV4X2luZGV4 KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMp LAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2RlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwpp bmRleCBjOGIxMWY4ODdlMi4uMWMyNzVlZjM3M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwpA QCAtMTAzNSw2ICsxMDM1LDYzIEBAIGdldF9pbmRleF9jb25zdHJhaW50KE9pZCBpbmRleElkKQog CXJldHVybiBjb25zdHJhaW50SWQ7CiB9CiAKKy8qCisgKiBnZXRfYXV4aWxpYXJ5X2luZGV4Cisg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgaXRzIGF1eGls aWFyeQorICoJCWluZGV4LCBvciBJbnZhbGlkT2lkIGlmIHRoZXJlIGlzIG5vIGF1eGlsaWFyeSBp bmRleC4KKyAqLworT2lkCitnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBpbmRleElkKQoreworCU9p ZAkJCWF1eGlsaWFyeUluZGV4T2lkID0gSW52YWxpZE9pZDsKKwlSZWxhdGlvbglkZXBSZWw7CisJ U2NhbktleURhdGEga2V5WzNdOworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cDsK KworCS8qIFNlYXJjaCB0aGUgZGVwZW5kZW5jeSB0YWJsZSBmb3IgdGhlIGluZGV4ICovCisJZGVw UmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ U2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZjbGFzc2lkLAorCQkJ CUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJl bGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0sCisJCQkJQW51bV9wZ19k ZXBlbmRfcmVmb2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CU9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMl0sCisJCQkJ QW51bV9wZ19kZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4oZGVwUmVsLCBEZXBlbmRSZWZlcmVuY2VJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVM TCwgMywga2V5KTsKKworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVf Z2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX2RlcGVuZCBkZXByZWMgPSAoRm9ybV9wZ19k ZXBlbmQpIEdFVFNUUlVDVCh0dXApOworCisJCS8qCisJCSAqIFdlIGFzc3VtZSBhbnkgQVVUTyBk ZXBlbmRlbmN5IG9uIGluZGV4IHdpdGggcmVsX2tpbmQKKwkJICogb2YgUkVMS0lORF9JTkRFWCBp cyB0aGF0IHdlIGFyZSBsb29raW5nIGZvci4KKwkJICovCisJCWlmIChkZXByZWMtPmNsYXNzaWQg PT0gUmVsYXRpb25SZWxhdGlvbklkICYmCisJCQkoZGVwcmVjLT5kZXB0eXBlID09IERFUEVOREVO Q1lfQVVUTykgJiYKKwkJCWdldF9yZWxfcmVsa2luZChkZXByZWMtPm9iamlkKSA9PSBSRUxLSU5E X0lOREVYKQorCQl7CisJCQlhdXhpbGlhcnlJbmRleE9pZCA9IGRlcHJlYy0+b2JqaWQ7CisJCQli cmVhazsKKwkJfQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2Uo ZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF1eGlsaWFyeUluZGV4T2lkOwor fQorCiAvKgogICogZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cwogICoJCUdpdmVuIHRoZSBPSUQg b2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGFsbCBmb3JlaWduIGtleQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90 b2FzdGluZy5jCmluZGV4IDBlZTJmZDVlN2RlLi4wZWU4Y2JmNGNhNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9h c3RpbmcuYwpAQCAtMzE5LDcgKzMxOSw3IEBAIGNyZWF0ZV90b2FzdF90YWJsZShSZWxhdGlvbiBy ZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJY29sb3B0aW9uc1sxXSA9IDA7 CiAKIAlpbmRleF9jcmVhdGUodG9hc3RfcmVsLCB0b2FzdF9pZHhuYW1lLCB0b2FzdEluZGV4T2lk LCBJbnZhbGlkT2lkLAotCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCSBJbnZhbGlk T2lkLCBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAogCQkJCSBpbmRleEluZm8sCiAJCQkJIGxpc3Rf bWFrZTIoImNodW5rX2lkIiwgImNodW5rX3NlcSIpLAogCQkJCSBCVFJFRV9BTV9PSUQsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDgwOGJlM2NmODNhLi44MjE0M2IyMzYwMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTEyNjAsNyArMTI2MCw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCiAJaW5kZXhSZWxhdGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5k ZXhSZWxhdGlvbk5hbWUsIGluZGV4UmVsYXRpb25JZCwgcGFyZW50SW5kZXhJZCwKLQkJCQkJIHBh cmVudENvbnN0cmFpbnRJZCwKKwkJCQkJIHBhcmVudENvbnN0cmFpbnRJZCwgSW52YWxpZE9pZCwK IAkJCQkJIHN0bXQtPm9sZE51bWJlciwgaW5kZXhJbmZvLCBpbmRleENvbE5hbWVzLAogCQkJCQkg YWNjZXNzTWV0aG9kSWQsIHRhYmxlc3BhY2VJZCwKIAkJCQkJIGNvbGxhdGlvbklkcywgb3BjbGFz c0lkcywgb3BjbGFzc09wdGlvbnMsCkBAIC0zNjUxLDYgKzM2NTEsNyBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCXsKIAkJT2lkCQkJaW5kZXhJZDsKIAkJT2lkCQkJYXV4SW5kZXhJZDsKKwkJ T2lkCQkJanVua0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJ CWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTQwMDAs NiArNDAwMSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCVJlaW5kZXhJbmRleEluZm8g Km5ld2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsKIAkJT2lkCQkJYXV4SW5kZXhJZDsKKwkJT2lk CQkJanVua0F1eEluZGV4SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlvbgloZWFw UmVsOwogCQlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTQwMDcsNiArNDAwOSw3IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCWludAkJCXNhdmVfbmVzdGxldmVsOwogCQlSZWxhdGlvbgluZXdJ bmRleFJlbDsKIAkJUmVsYXRpb24JYXV4SW5kZXhSZWw7CisJCVJlbGF0aW9uCWp1bmtBdXhJbmRl eFJlbDsKIAkJTG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0YWJsZXNwYWNlaWQ7CiAK QEAgLTQwODAsMTIgKzQwODMsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJ CQkJCSAgIHRhYmxlc3BhY2VpZCwKIAkJCQkJCQkJCQkJCSAgIGF1eENvbmN1cnJlbnROYW1lKTsK IAorCQkvKiBTZWFyY2ggZm9yIGF1eGlsaWFyeSBpbmRleCBmb3IgcmVpbmRleGVkIGluZGV4LCB0 byBkcm9wIGl0ICovCisJCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChpZHgt PmluZGV4SWQpOworCiAJCS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3 IGluZGV4LCBhIHNlc3Npb24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4K IAkJICovCiAJCW5ld0luZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0 ZUV4Y2x1c2l2ZUxvY2spOwogCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwg U2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4 SWQpKQorCQkJanVua0F1eEluZGV4UmVsID0gaW5kZXhfb3BlbihqdW5rQXV4SW5kZXhJZCwgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9J RHMgYW5kIGxvY2tzIGluIHByaXZhdGUgY29udGV4dApAQCAtNDA5NSw2ICs0MTAzLDcgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVjdChSZWluZGV4SW5k ZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJbmV3aWR4LT5hdXhJ bmRleElkID0gYXV4SW5kZXhJZDsKKwkJbmV3aWR4LT5qdW5rQXV4SW5kZXhJZCA9IGp1bmtBdXhJ bmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9 IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwpAQCAtNDExNiwxMCAr NDEyNSwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2NrcmVsaWQgPSBwYWxsb2Nf b2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0lu Zm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBs b2NrcmVsaWQpOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJCXsKKwkJCWxv Y2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKKwkJCSpsb2NrcmVsaWQgPSBqdW5r QXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKKwkJCXJlbGF0aW9uTG9ja3MgPSBs YXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCX0KIAogCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIE5vTG9jayk7 CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2Nsb3NlKGp1bmtB dXhJbmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7 CiAJCWluZGV4X2Nsb3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCkBAIC00MzA4LDcgKzQzMjUs OCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVudCBh bGwgdGFyZ2V0IGluZGV4ZXMgYXJlIG1hcmtlZCBhcyAicmVhZHktdG8taW5zZXJ0Ii4gU28sCi0J ICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5k ZXhlcy4KKwkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGls aWFyeSBpbmRleGVzIC0gaW5jbHVkaW5nCisJICoganVzdCBpbmRleGVzIGRldGVjdGVkIGVhcmxp ZXIuCiAJICovCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewpAQCAtNDMzMSw2ICs0MzQ5 LDkgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3 aWR4LT5hdXhJbmRleElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJLyogRW5zdXJlIGp1 c3QgaW5kZXggaXMgbWFya2VkIGFzIG5vbi1yZWFkeSAqLworCQlpZiAoT2lkSXNWYWxpZChuZXdp ZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmp1 bmtBdXhJbmRleElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKIAkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQ1NDksNiArNDU3MCw4 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwogCiAJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdp ZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCWlmIChPaWRJc1ZhbGlkKG5ld2lk eC0+anVua0F1eEluZGV4SWQpKQorCQkJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKG5ld2lk eC0+dGFibGVJZCwgbmV3aWR4LT5qdW5rQXV4SW5kZXhJZCk7CiAKIAkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAl9CkBAIC00NjAwLDYgKzQ2MjMsMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CiAKIAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVz cygmb2JqZWN0LCBvYmplY3RzKTsKKworCQkJaWYgKE9pZElzVmFsaWQoaWR4LT5qdW5rQXV4SW5k ZXhJZCkpCisJCQl7CisKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmp1bmtBdXhJbmRleElk OworCQkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJCQkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmplY3QsIG9iamVjdHMpOworCQkJfQogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggMjY1YjFjMzk3ZmIuLmYzMzUxNDk5NTBkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMTUzMiw2ICsxNTMyLDggQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10 ICpkcm9wKQogCUxpc3RDZWxsICAgKmNlbGw7CiAJaW50CQkJZmxhZ3MgPSAwOwogCUxPQ0tNT0RF CWxvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwlNZW1vcnlDb250ZXh0IHByaXZhdGVf Y29udGV4dCwKKwkJCQkgIG9sZGNvbnRleHQ7CiAKIAkvKiBEUk9QIENPTkNVUlJFTlRMWSB1c2Vz IGEgd2Vha2VyIGxvY2ssIGFuZCBoYXMgc29tZSByZXN0cmljdGlvbnMgKi8KIAlpZiAoZHJvcC0+ Y29uY3VycmVudCkKQEAgLTE1OTIsOSArMTU5NCwyMCBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0 bXQgKmRyb3ApCiAJCQlyZWxraW5kID0gMDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJ CWJyZWFrOwogCX0KKwkvKgorCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBz dXJ2aXZlIGZvcmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCisJICogbWF5IG5lZWQgdG8gZG8g YmVsb3cgKGluIGNhc2Ugb2YgY29uY3VycmVudCBpbmRleCBkcm9wKS4KKwkgKiBTaW5jZSBpdCBp cyBhIGNoaWxkIG9mIFBvcnRhbENvbnRleHQsIGl0IHdpbGwgZ28gYXdheSBldmVudHVhbGx5IGV2 ZW4gaWYKKwkgKiB3ZSBzdWZmZXIgYW4gZXJyb3I7IHRoZXJlJ3Mgbm8gbmVlZCBmb3Igc3BlY2lh bCBhYm9ydCBjbGVhbnVwIGxvZ2ljLgorCSAqLworCXByaXZhdGVfY29udGV4dCA9IEFsbG9jU2V0 Q29udGV4dENyZWF0ZShQb3J0YWxDb250ZXh0LAorCQkJCQkJCQkJCQkiUmVtb3ZlUmVsYXRpb25z IiwKKwkJCQkJCQkJCQkJQUxMT0NTRVRfU01BTExfU0laRVMpOwogCisJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRleHQpOwogCS8qIExvY2sgYW5kIHZhbGlk YXRlIGVhY2ggcmVsYXRpb247IGJ1aWxkIGEgbGlzdCBvZiBvYmplY3QgYWRkcmVzc2VzICovCiAJ b2JqZWN0cyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwogCiAJZm9yZWFjaChjZWxsLCBkcm9wLT5vYmplY3RzKQogCXsKQEAgLTE2 NDYsNiArMTY1OSwzNCBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJCQlmbGFn cyB8PSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWTsKIAkJfQogCisJCS8qCisJCSAqIENv bmN1cnJlbnQgaW5kZXggZHJvcCByZXF1aXJlcyB0byBiZSB0aGUgZmlyc3QgdHJhbnNhY3Rpb24u IEJ1dCBpbgorCQkgKiBjYXNlIHdlIGhhdmUganVuayBhdXhpbGlhcnkgaW5kZXggLSB3ZSB3YW50 IHRvIGRyb3AgaXQgdG9vIChhbmQgYWxzbworCQkgKiBpbiBhIGNvbmN1cnJlbnQgd2F5KS4gSW4g dGhpcyBjYXNlIHBlcmZvcm0gc2lsZW50IGludGVybmFsIGRlbGV0aW9uCisJCSAqIG9mIGF1eGls aWFyeSBpbmRleCwgYW5kIHJlc3RvcmUgdHJhbnNhY3Rpb24gc3RhdGUuIEl0IGlzIGZpbmUgdG8g ZG8gaXQKKwkJICogaW4gdGhlIGxvb3AgYmVjYXVzZSB0aGVyZSBpcyBvbmx5IHNpbmdsZSBlbGVt ZW50IGluIGRyb3AtPm9iamVjdHMuCisJCSAqLworCQlpZiAoKGZsYWdzICYgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkpICE9IDAgJiYKKwkJCXN0YXRlLmFjdHVhbF9yZWxraW5kID09IFJF TEtJTkRfSU5ERVgpCisJCXsKKwkJCU9pZCBqdW5rQXV4SW5kZXhPaWQgPSBnZXRfYXV4aWxpYXJ5 X2luZGV4KHJlbE9pZCk7CisJCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhPaWQpKQorCQkJ eworCQkJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRp b25SZWxhdGlvbklkOworCQkJCW9iamVjdC5vYmplY3RJZCA9IGp1bmtBdXhJbmRleE9pZDsKKwkJ CQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBE Uk9QX1JFU1RSSUNULAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWSB8 CisJCQkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayh0 cnVlLCAiRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkiKTsKKwkJCX0KKwkJfQorCiAJCS8qCiAJCSAq IENvbmN1cnJlbnQgaW5kZXggZHJvcCBjYW5ub3QgYmUgdXNlZCB3aXRoIHBhcnRpdGlvbmVkIGlu ZGV4ZXMsCiAJCSAqIGVpdGhlci4KQEAgLTE2NzQsMTIgKzE3MTUsMTcgQEAgUmVtb3ZlUmVsYXRp b25zKERyb3BTdG10ICpkcm9wKQogCQlvYmoub2JqZWN0SWQgPSByZWxPaWQ7CiAJCW9iai5vYmpl Y3RTdWJJZCA9IDA7CiAKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2 YXRlX2NvbnRleHQpOwogCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iaiwgb2JqZWN0cyk7 CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAl9CiAKKwkvKiBEZWxldGlv biBtYXkgaW52b2x2ZSBtdWx0aXBsZSBjb21taXRzLCBzbywgc3dpdGNoIHRvIG1lbW9yeSBjb250 ZXh0ICovCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRl eHQpOwogCXBlcmZvcm1NdWx0aXBsZURlbGV0aW9ucyhvYmplY3RzLCBkcm9wLT5iZWhhdmlvciwg ZmxhZ3MpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAotCWZyZWVfb2Jq ZWN0X2FkZHJlc3NlcyhvYmplY3RzKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHByaXZhdGVfY29u dGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVu Y3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQz Li4wMmJjZjVlOTMxNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5 LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTE4MCw2ICsxODAs NyBAQCBleHRlcm4gTGlzdCAqZ2V0T3duZWRTZXF1ZW5jZXMoT2lkIHJlbGlkKTsKIGV4dGVybiBP aWQJZ2V0SWRlbnRpdHlTZXF1ZW5jZShSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLCBi b29sIG1pc3Npbmdfb2spOwogCiBleHRlcm4gT2lkCWdldF9pbmRleF9jb25zdHJhaW50KE9pZCBp bmRleElkKTsKK2V4dGVybiBPaWQJZ2V0X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCk7CiAK IGV4dGVybiBMaXN0ICpnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzKE9pZCBpbmRleElkKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oCmluZGV4IDQ3MTNmMThlNjhkLi41M2IyYjEzZWZjMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaApAQCAtNzMsNiArNzMsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJCQkJCQkgT2lkIGluZGV4UmVsYXRpb25JZCwKIAkJCQkJCSBPaWQgcGFy ZW50SW5kZXhSZWxpZCwKIAkJCQkJCSBPaWQgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkJIE9p ZCBhdXhpbGlhcnlGb3JJbmRleElkLAogCQkJCQkJIFJlbEZpbGVOdW1iZXIgcmVsRmlsZU51bWJl ciwKIAkJCQkJCSBJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCSBjb25zdCBMaXN0ICppbmRl eENvbE5hbWVzLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0Cmlu ZGV4IGNhNzQ4NDRiNWM2Li5hY2E2ZWM1N2FkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMzI2NSwyMCArMzI2NSwxMDkgQEAgRVJST1I6ICByZWlu ZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0 ZWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogRVJS T1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5v dCBzdXBwb3J0ZWQKIC0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwg c28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCi1ERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRl eF90YWI0IFdIRVJFIGMxID0gMTsKLUVSUk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3Rh YjQiIGRvZXMgbm90IGV4aXN0Ci1MSU5FIDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3Rh YjQgV0hFUkUgYzEgPSAxOwotICAgICAgICAgICAgICAgICAgICBeCitERUxFVEUgRlJPTSBhdXhf aW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVp bmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ug c3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAg VGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAo YzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBh Z2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3Jl YXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5v dCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEp PSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBn byBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9p bmRleF90YWI1IFdIRVJFIGMxID0gMTsKIC0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWlu ZGV4Ci1SRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OwotRVJST1I6ICBjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCi1ERVRBSUw6ICBLZXkgKGMxKT0oMSkg aXMgZHVwbGljYXRlZC4KLS0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJl aW5kZXgKIFJFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OwogV0FSTklO RzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1eF9pbmRleF9p bmQ2IgogSElOVDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCiBXQVJOSU5HOiAg c2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5k Nl9jY2F1eCIKIE5PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4ZXMg dGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorLS0gTWFrZSBzdXJlIGl0IGlzIHN0 aWxsIGV4aXN0cworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5h dXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRl eGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAg ICAiYXV4X2luZGV4X2luZDZfY2NhdXgiIHN0aXIgKGMxKSBJTlZBTElECisKKy0tIFNob3VsZCBi ZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9p bmRleF90YWI1OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5k ZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9p bmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0t IEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxV RVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMx KTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2 IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBUaGlzIG1ha2VzIHRo ZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlk LgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVk CitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90 YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBj MSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAg ImF1eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkKKworRFJPUCBJTkRFWCBhdXhfaW5k ZXhfaW5kNjsKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5k ZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2Fpbgor Q1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2lu ZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1 eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBU aGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4g YmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwor LS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg YXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9v CitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90 YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBj MSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworRFJPUCBJTkRFWCBh dXhfaW5kZXhfaW5kNjsKK0VSUk9SOiAgaW5kZXggImF1eF9pbmRleF9pbmQ2IiBkb2VzIG5vdCBl eGlzdAorLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90 YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhf dGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2lu ZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIERyb3Ag bWFpbiBpbmRleAorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhp bGlhcnkgaW5kZXggZHJvcHBlZCB0b28KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRh YmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorCiBEUk9QIFRBQkxFIGF1eF9pbmRleF90YWI1OwogLS0gQ2hlY2sgaGFuZGxpbmcg b2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZp bml0aW9ucyBvZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCmluZGV4IDJjZmYxYWMyOWJlLi5lMTQ2 NGVhYTY3YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC0xMzQwLDEx ICsxMzQwLDYyIEBAIFJFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CiAtLSBDb25j dXJyZW50bHkgYWxzbwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZf Y2NhdXg7CiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRo ZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFi NCBXSEVSRSBjMSA9IDE7CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7 CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRF WCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBl ZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIElu c2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMg KDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJ TkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsK Ky0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4 IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9 IDE7CiAtLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKLS0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJl aW5kZXgKIFJFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworLS0gTWFr ZSBzdXJlIGl0IGlzIHN0aWxsIGV4aXN0cworXGQgYXV4X2luZGV4X3RhYjUKKy0tIFNob3VsZCBi ZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9p bmRleF90YWI1OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5k ZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0 ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0t IENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gVGhpcyBtYWtl cyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2 YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3Vs ZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJv cHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0t IEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxV RVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMx KTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGlu ZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBj MSA9IDE7CistLSBEcm9wIG1haW4gaW5kZXggQ09OQ1VSUkVOVExZCitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5kZXggZHJv cHBlZCB0b28KK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2Owor CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUg VkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBV TklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1 IChjMSk7CistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7Cist LSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFi NQorCiBEUk9QIFRBQkxFIGF1eF9pbmRleF90YWI1OwogCiAtLSBDaGVjayBoYW5kbGluZyBvZiBp bmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKLS0gCjIuNDMuMAoK --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9we15 RnJvbSA5NTQ4MzI2YjU5YWVkZjQ4MDQzMzljZDI0NTE2NDJiMWFiY2RlNjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDMvNl0gVXNlIGF1eGlsaWFyeSBpbmRleGVzIGZvciBjb25j dXJyZW50CiBpbmRleCBvcGVyYXRpb25zCgpSZXBsYWNlIHRoZSBzZWNvbmQgdGFibGUgZnVsbCBz Y2FuIGluIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdpdGggYW4gYXV4aWxpYXJ5IGluZGV4IGFw cHJvYWNoOgotIGNyZWF0ZSBhIFNUSVIgIGF1eGlsaWFyeSBpbmRleCB3aXRoIHRoZSBzYW1lIHBy ZWRpY2F0ZSAoaWYgZXhpc3RzKSBhcyBpbiBtYWluIGluZGV4Ci0gdXNlIGl0IHRvIHRyYWNrIHR1 cGxlcyBpbnNlcnRlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gbWVyZ2UgYXV4aWxpYXJ5IGlu ZGV4IHdpdGggbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbiB0byBjYXRjaCB1cCBuZXcgaW5k ZXggd2l0aCBhbnkgdHVwbGVzIG1pc3NlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gYXV0b21h dGljYWxseSBkcm9wIGF1eGlsaWFyeSB3aGVuIG1haW4gaW5kZXggaXMgcmVhZHkKClRvIG1lcmdl IG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzOgotIGluZGV4X2J1bGtfZGVsZXRlIGNhbGxlZCBm b3IgYm90aCwgVElEcyBwdXQgaW50byB0dXBsZXNvcnQKLSBib3RoIHR1cGxlc29ydCBhcmUgYmVp bmcgc29ydGVkCi0gYm90aCB0dXBsZXNvcnQgc2Nhbm5lZCB3aXRoIHR3byBwb2ludGVycyBsb29r aW5nIGZvciB0aGUgVElEcyBwcmVzZW50IGluIGF1eGlsaWFyeSBpbmRleCwgYnV0IGFic2VudCBp biBtYWluIG9uZQotIGFsbCBzdWNoIFRJRHMgYXJlIHB1dCBpbnRvIHR1cGxlc3RvcmUKLSBhbGwg VElEcyBpbiB0dXBsZXN0b3JlIGFyZSBmZXRjaGVkIHVzaW5nIHRoZSBzdHJlYW0sIHR1cGxlc3Rv cmUgdXNlZCBpbiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0IHRv IHByb3ZpZGUgdGhlIG5leHQgcGFnZSB0byBwcmVmZXRjaAotIGlmIGZldGNoZWQgdHVwbGUgaXMg YWxpdmUgLSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBtYWluIGluZGV4CgpUaGlzIGVsaW1pbmF0 ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2NhbiBkdXJpbmcgdmFsaWRhdGlv biwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4gQWZm ZWN0cyBib3RoIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIG9wZXJhdGlvbnMuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgIHwgIDI2ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s ICAgICAgICAgfCAgMzQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAg ICAgICB8ICA0MSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCA1 NDQgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAg ICAgICAgICAgICAgfCAyOTIgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5j ICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAg ICAgICAgICAgfCAzNDcgKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNz LmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAg ICAgICAgICAgICAgfCAgMjggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAg ICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAg ICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICB8ICAg MyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgIDQyICsr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICB8ICAxNyArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDIxICsKIDE5IGZpbGVzIGNo YW5nZWQsIDExMTQgaW5zZXJ0aW9ucygrKSwgMzUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5z Z21sCmluZGV4IGM0MjFkODllZGZmLi5iY2YwMmQ1MTFjNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBA IC02MzA1LDYgKzYzMDUsMTggQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMg YmFja2VuZGlkOwogICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgogICAgICAgPC9l bnRyeT4KICAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+d2Fp dGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4PC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRM WTwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlz IHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucworICAgICAgIHdpdGggd3JpdGUgbG9ja3MgdGhhdCBj YW4gcG90ZW50aWFsbHkgc2VlIHRoZSB0YWJsZSB0byBmaW5pc2gsIHRvIGVuc3VyZSB1c2Ugb2Yg YXV4aWxpYXJ5IGluZGV4IGZvciBuZXcgdHVwbGVzIGluCisgICAgICAgZnV0dXJlIHRyYW5zYWN0 aW9ucy4KKyAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29uY3VycmVu dCBtb2RlLgorICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vyc190b3RhbDwvc3RydWN0 bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFtZT4KKyAgICAgICBhbmQg PHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1lPiBjb250YWluIHRoZSBw cm9ncmVzcworICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAgICAgPC9lbnRy eT4KKyAgICAgPC9yb3c+CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+YnVpbGRp bmcgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KQEAgLTYzNDUsMTMgKzYz NTcsMTIgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwog ICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+Ci0gICAgICA8ZW50cnk+PGxp dGVyYWw+aW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXM8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyBzY2FubmluZyB0aGUgdGFibGUKLSAgICAg ICB0byB2YWxpZGF0ZSB0aGUgaW5kZXggdHVwbGVzIGNvbGxlY3RlZCBpbiB0aGUgcHJldmlvdXMg dHdvIHBoYXNlcy4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBtZXJnaW5nIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHRhcmdl dCBpbmRleC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29uY3Vy cmVudCBtb2RlLgotICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+YmxvY2tzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiAoc2V0IHRvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSB0YWJsZSkKLSAgICAgICBhbmQg PHN0cnVjdG5hbWU+YmxvY2tzX2RvbmU8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNz IGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+ dHVwbGVzX3RvdGFsPC9zdHJ1Y3RuYW1lPiAoc2V0IHRvIHRoZSBudW1iZXIgb2YgdHVwbGVzIHRv IGJlIG1lcmdlZCkKKyAgICAgICBhbmQgPHN0cnVjdG5hbWU+dHVwbGVzX2RvbmU8L3N0cnVjdG5h bWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgogICAg ICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+CkBAIC02MzY4LDggKzYzNzksOSBA QCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+d2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFy a2luZyBkZWFkPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgPGNvbW1h bmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHdhaXRpbmcgZm9yIHRyYW5zYWN0 aW9ucwotICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmluaXNoLCBiZWZv cmUgbWFya2luZyB0aGUgb2xkIGluZGV4IGRlYWQuCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisg ICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmluaXNoLCBiZWZvcmUgbWFy a2luZyB0aGUgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQuCisgICAgICAgPGNvbW1hbmQ+UkVJTkRF WCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIGFsc28gd2FpdGluZyBiZWZvcmUgbWFya2luZyB0 aGUgb2xkIGluZGV4IGFzIGRlYWQuCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4g bm90IGluIGNvbmN1cnJlbnQgbW9kZS4KICAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmxvY2tl cnNfdG90YWw8L3N0cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5sb2NrZXJzX2RvbmU8L3N0cnVjdG5h bWU+CiAgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmN1cnJlbnRfbG9ja2VyX3BpZDwvc3RydWN0bmFt ZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4 IDE0N2E4Zjc1ODdjLi5lN2E3YTE2MDc0MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJF TlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgIG91dCB3 cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxp dGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+Q1JFQVRFIElO REVYPC9jb21tYW5kPi4KICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQsCi0gICAgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gdHdvIHNjYW5zIG9m IHRoZSB0YWJsZSwgYW5kIGluCi0gICAgYWRkaXRpb24gaXQgbXVzdCB3YWl0IGZvciBhbGwgZXhp c3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkKLSAgICBtb2RpZnkgb3Ig dXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBUaHVzCi0gICAgdGhpcyBtZXRob2QgcmVxdWly ZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRleCBidWlsZCBhbmQgdGFrZXMK KyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0 YWJsZSBzY2FuIGZvbGxvd2VkIGJ5CisgICAgdmFsaWRhdGlvbiBwaGFzZSwgYW5kIGluIGFkZGl0 aW9uIGl0IG11c3Qgd2FpdCBmb3IgYWxsIGV4aXN0aW5nIHRyYW5zYWN0aW9ucworICAgIHRoYXQg Y291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IG9yIHVzZSB0aGUgaW5kZXggdG8gdGVybWluYXRlLiAg VGh1cworICAgIHRoaXMgbWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwgd29yayB0aGFuIGEgc3Rh bmRhcmQgaW5kZXggYnVpbGQgYW5kIG1heSB0YWtlCiAgICAgc2lnbmlmaWNhbnRseSBsb25nZXIg dG8gY29tcGxldGUuICBIb3dldmVyLCBzaW5jZSBpdCBhbGxvd3Mgbm9ybWFsCiAgICAgb3BlcmF0 aW9ucyB0byBjb250aW51ZSB3aGlsZSB0aGUgaW5kZXggaXMgYnVpbHQsIHRoaXMgbWV0aG9kIGlz IHVzZWZ1bCBmb3IKICAgICBhZGRpbmcgbmV3IGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmly b25tZW50LiAgT2YgY291cnNlLCB0aGUgZXh0cmEgQ1BVCkBAIC02MzEsMTQgKzYzMSwxNCBAQCBD UkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJbiBh IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVkIGFz IGFuCi0gICAgPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCi0gICAgdGhlIHN5c3Rl bSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHRhYmxlIHNjYW5zIG9jY3Vy IGluCi0gICAgdHdvIG1vcmUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggdGFibGUgc2Nhbiwg dGhlIGluZGV4IGJ1aWxkIG11c3QKKyAgICBJbiBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRo ZSBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBpcyBhY3R1YWxseQorICAgIGVudGVyZWQgYXMg YW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCisgICAgdGhlIHN5c3RlbSBjYXRh bG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBoYXNlcyBvY2N1ciBpbgorICAgIG11 bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQg bXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgbW9kaWZp ZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRlciB0aGUgc2Vjb25kIHNjYW4sIHRo ZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKKyAgICBBZnRlciB0 aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdCB3YWl0IGZvciBhbnkgdHJhbnNh Y3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNlZSA8eHJlZiBsaW5rZW5kPSJtdmNj Ii8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4gdG8gdGVybWluYXRlLCBpbmNsdWRp bmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9mIGNvbmN1cnJlbnQKKyAgICBwaGFz ZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ug b2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBvdGhlciB0YWJsZXMsIGlmIHRoZSBp bmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUKICAgICBjb2x1bW5zIHRoYXQgYXJl IG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAgVGhlbiBmaW5hbGx5IHRoZSBpbmRl eCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+IGFuZCByZWFkeSBmb3IgdXNlLApA QCAtNjUxLDEwICs2NTEsMTEgQEAgQ1JFQVRFIFsgVU5JUVVFIF0gSU5ERVggWyBDT05DVVJSRU5U TFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0KICAgIDxwYXJhPgog ICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5pbmcgdGhlIHRhYmxlLCBzdWNoIGFz IGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVlIGlu ZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2ls bCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleC4g VGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVj YXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhvd2V2ZXIgaXQgd2lsbCBzdGlsbCBj b25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlv bj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydCBzdWNoIGFu IGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgorICAgIGNvbW1hbmQgd2lsbCBm YWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBhbmQg aXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXguIFRoZXNlIGluZGV4ZXMKKyAgICB3 aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzIGJlY2F1c2UgdGhleSBtaWdodCBi ZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRl IG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgorICAgIDxjb21t YW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggaW5kZXhlcyBhcyA8bGl0 ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBc ZCB0YWIKQEAgLTY2NCwxMSArNjY1LDEyIEBAIHBvc3RncmVzPSMgXGQgdGFiCiAgY29sICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIEluZGV4ZXM6CiAgICAgImlkeCIgYnRy ZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAogPC9w cm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQotICAgIG1ldGhv ZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4IGFuZCB0cnkgYWdhaW4gdG8gcGVy Zm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAg KEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBk cm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCisgICAgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5 IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21s CmluZGV4IDViM2M3Njk4MDBlLi41N2MzNDdmMjkzMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAg LTM2OCw5ICszNjgsOCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogICAgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gc3VwcG9ydHMgcmVidWlsZGluZyBpbmRleGVzIHdp dGggbWluaW11bSBsb2NraW5nCiAgICAgb2Ygd3JpdGVzLiAgVGhpcyBtZXRob2QgaXMgaW52b2tl ZCBieSBzcGVjaWZ5aW5nIHRoZQogICAgIDxsaXRlcmFsPkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4g b3B0aW9uIG9mIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+LiBXaGVuIHRoaXMgb3B0aW9uCi0g ICAgaXMgdXNlZCwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBl cmZvcm0gdHdvIHNjYW5zIG9mIHRoZSB0YWJsZQotICAgIGZvciBlYWNoIGluZGV4IHRoYXQgbmVl ZHMgdG8gYmUgcmVidWlsdCBhbmQgd2FpdCBmb3IgdGVybWluYXRpb24gb2YKLSAgICBhbGwgZXhp c3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgdXNlIHRoZSBpbmRleC4K KyAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3Qg cGVyZm9ybSBzZXZlcmFsIHN0ZXBzIHRvIGVuc3VyZSBkYXRhCisgICAgY29uc2lzdGVuY3kgd2hp bGUgYWxsb3dpbmcgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUuCiAgICAgVGhpcyBtZXRo b2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRleAogICAgIHJl YnVpbGQgYW5kIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlIGFzIGl0IG5l ZWRzIHRvIHdhaXQKICAgICBmb3IgdW5maW5pc2hlZCB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBt b2RpZnkgdGhlIGluZGV4LiBIb3dldmVyLCBzaW5jZQpAQCAtMzg4LDcgKzM4Nyw3IEBAIFJFSU5E RVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0PgogICAgICA8bGlzdGl0ZW0+CiAg ICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5kZXggZGVmaW5pdGlvbiBpcyBh ZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0 aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRvIHRoZSBjYXRhbG9nCiAgICAg ICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBkZWZpbml0aW9uIHdpbGwgYmUg dXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4gIEEgPGxpdGVyYWw+U0hBUkUg VVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAgICAgIHNlc3Npb24gbGV2ZWwg aXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVkIGFzIHdlbGwgYXMgdGhlaXIK QEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlz dGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBhc3MgdG8gYnVpbGQgdGhlIGlu ZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0aGUKKyAgICAgICBUaGUgYXV4 aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGluc2VydHMiLCBtYWtpbmcKKyAg ICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlzIGluZGV4IGVmZmljaWVudGx5 IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0aGUgcmVpbmRleCBwcm9jZXNz LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBpcyBidWlsdCBieSBzY2Fubmlu ZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlzIGJ1aWx0LCBpdHMgZmxhZyA8 bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBpcwogICAgICAgIHN3aXRjaGVk IHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFkeSBmb3IgaW5zZXJ0cywgbWFr aW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9ucyBvbmNlIHRoZSB0cmFuc2Fj dGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5ICs0MTYsOSBAQCBSRUlOREVY IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAg IFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRkIHR1cGxlcyB0aGF0IHdlcmUg YWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMgcnVubmluZy4gIFRoaXMgc3Rl cCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRyYW5zYWN0aW9uIGZvciBlYWNo IGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJnZXMgYW55IG1pc3NpbmcgZW50 cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBpbnRvIHRoZSBtYWluIGluZGV4 LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBjYXB0dXJlZC4KKyAgICAgICBU aGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24gZm9yIGVhY2gg aW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAKQEAgLTQyOCw3ICs0MzUs NyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxw YXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlz cmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhlIG9sZCBhbmQgYXV4aWxpYXJ5 IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBzd2l0 Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRvIHByZXZlbnQgYW55IG5ldyB0 dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAgZm9yIHJ1bm5pbmcgcXVlcmll cyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRvIGNvbXBsZXRlLgogICAgICAg PC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAg ICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIG9sZCBpbmRleGVzIGFyZSBk cm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAgICAgIFRoZSBvbGQgYW5kIGF1 eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQog ICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2NrcyBmb3IgdGhlIGluZGV4ZXMg YW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAgICAgIDwvcGFyYT4KQEAgLTQ0 NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICA8cGFyYT4KICAgICBJ ZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhlIGluZGV4ZXMsIHN1Y2ggYXMg YQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1h bmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUgYmVo aW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGluIGFkZGl0aW9uIHRvCi0g ICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2lsbCBiZSBpZ25vcmVkIGZvciBx dWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQgYmUgaW5jb21wbGV0ZTsgaG93 ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAgY29tbWFuZCB3aWxsIGZhaWwg YnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IG5ldyBpbmRleCBhbmQg aXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAgIHRoZSBwcmUtZXhpc3Rpbmcg b25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMK KyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsgaG93ZXZlciB0aGV5IHdpbGwg c3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQK LSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgorICAgIHN1 Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0 aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5LDE0IEBAIHBvc3RncmVzPSMg XGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wpCiAgICAgImlkeF9jY25ldyIg YnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAor CiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5J TlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFs PiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50CisgICAgPGxpdGVyYWw+Y2Nu ZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3Bv bmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAgaW5kZXggY3JlYXRlZCBkdXJp bmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJlY29tbWVuZGVkCi0gICAgcmVj b3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyB1c2lu ZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0aGVuIGF0dGVtcHQgPGNvbW1h bmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgogICAgIElmIHRoZSBpbnZh bGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LAog ICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRleCB3aGljaCBjb3VsZCBub3Qg YmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0ZTQwN2YzNzVh Li4yOGUyYTE2MDRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zNzUsNiAr Mzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBjYW4gYmUgSE9ULiAgT3RoZXIg dHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRleCB3aGVuIGRldGVybWluaW5n IEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhleQogbXVzdCBpZ25vcmUgaXQg Zm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9zZXMuCiAKK0Fsc28sIHNwZWNp YWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUgd2F5LiBJdCBtYXJrZWQgYXMK KyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFsIHRhYmxlIHNjYW4uIEl0cyBw dXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQgaW50byB0YWJsZSB3aGlsZSBv dXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2ZvciBpbnNlcnRzIgorCiBXZSBt dXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBpbmRleCBlbnRyaWVzLiAgRm9y IGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBpbmRleCBvbiBjb2x1bW4gWCBh bmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhPVCB0dXBsZSB3aXRoIFg9MS4g IFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQgWCBpcyBhbgpAQCAtMzk0LDEw ICszOTksMTAgQEAgZW50cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0 IHdlIHVzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlCiBsaXZlIHR1cGxlLgogCiBXZSBtYXJrIHRo ZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJlYWR5IGZvciByZWFkcykg dGhlbgotd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxl IG9wZW4uICBUaGVuIHdlIHRha2UKLWEgc2Vjb25kIHJlZmVyZW5jZSBzbmFwc2hvdCBhbmQgdmFs aWRhdGUgdGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBmb3IKLXR1cGxlcyBtaXNzaW5nIGZyb20g dGhlIGluZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzLiAgQWdhaW4sCi10aGUgaW5k ZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURz LCBidXQKK3dlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJs ZSBvcGVuLiAgVGhlbiB2YWxpZGF0ZQordGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBmb3IgdHVw bGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXggaW4gYXV4aWxpYXJ5CitpbmRleCwgYW5kIGluc2Vy dHMgYW55IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2libGUgdG8gcmVmZXJlbmNlIHNuYXBzaG90 LgorQWdhaW4sIHRoZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhP VC1jaGFpbiByb290IFRJRHMsIGJ1dAogdGhlIHZhbHVlIHRvIGJlIGluc2VydGVkIGlzIHRoZSBv bmUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogVGhlbiB3ZSB3YWl0IHVudGlsIGV2ZXJ5IHRyYW5z YWN0aW9uIHRoYXQgY291bGQgaGF2ZSBhIHNuYXBzaG90IG9sZGVyIHRoYW4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGFjMDgyZmVmYTc3Li44ODdhMjQ1NWM0 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC00MSw2ICs0 MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0xNzQzLDI0MiArMTc0 NCw0MDUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCXJldHVybiByZWx0dXBsZXM7CiB9CiAKKy8qCisgKiBDYWxjdWxhdGUgc2V0IGRpZmZl cmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1haW4gYW5kIGF1eAorICogc2V0cy4KKyAq CisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2VudCBpbiBhdXhsaWFyeSB0dXBsZXNvcnQg YnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8gdGhlIHN0b3JlLgorICoKKyAqIEluIHNl dCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBtYWluIG9yIHN0b3JlID0gYXV4IC8gbWFp bi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVtcyBhZGRlZCB0byBzdG9yZQorICovCitz dGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2RpZmZlcmVuY2UoVHVw bGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAgIFR1cGxlc29ydHN0YXRlICAqYXV4LAor CQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCit7CisJaW50CQkJCW51bSA9IDA7 CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KKwlJdGVtUG9pbnRlciAJaW5k ZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5VTEw7CisJSXRlbVBvaW50 ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQ7CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0 eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKworCS8qIEluaXRp YWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZkZWNvZGVkKTsKKwlJ dGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCisJLyoKKwkgKiBNYWluIGxvb3A6 IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4aWxpYXJ5IHNvcnQgKGF1eFN0YXRlLT50dXBsZXNvcnQp LAorCSAqIHdoaWNoIGhvbGRzIFRJRHMgdGhhdCBtdXN0IGNvbXBhcmVkIHRvIHRob3NlIGZyb20g dGhlICJtYWluIiBzb3J0CisJICogKHN0YXRlLT50dXBsZXNvcnQpLgorCSAqLworCXdoaWxlICgh YXV4dHVwbGVzb3J0X2VtcHR5KQorCXsKKwkJRGF0dW0JCXRzX3ZhbDsKKwkJYm9vbAkJdHNfaXNu dWxsOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSogQXR0ZW1wdCB0byBm ZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxpYXJ5IHNvcnQuIElmIGl0J3MKKwkJKiBl bXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCSovCisJCWF1eHR1cGxlc29y dF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZh bHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJIE5VTEwpOworCQlBc3NlcnQo YXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCQlpZiAoIWF1eHR1cGxlc29ydF9l bXB0eSkKKwkJeworCQkJaXRlbXB0cl9kZWNvZGUoJmF1eGRlY29kZWQsIERhdHVtR2V0SW50NjQo dHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZhdXhkZWNvZGVkOworCQl9CisJCWVsc2UK KwkJeworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOworCQl9CisKKwkJLyoKKwkJKiBJZiB0aGUg YXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwgd2Ugbm93IHRyeSB0byBzeW5jaHJvbml6 ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGluZGV4Y3Vyc29yKSB3aXRoIGF1eGluZGV4 Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4gc29ydCBjdXJzb3IgdW50aWwgd2UndmUg cmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBUSUQuCisJCSovCisJCWlmICghYXV4dHVw bGVzb3J0X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogTW92ZSB0aGUgbWFpbiBzb3J0IGZvcndh cmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQgKHR1cGxlc29ydF9lbXB0 eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4Y3Vyc29yIGlzIE5VTEwg KGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vyc29yIDwgYXV4aW5kZXhj dXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAm JiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0IHRpbWUgaGVyZSAqLwor CQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPCAw KSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEdldCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgbWFpbiBz b3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJCSAqIHdlIHNldCBpbmRleGN1cnNvciB0byBOVUxMLgor CQkJCSAqLworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0obWFpbiwg dHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJ CQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxs KTsKKworCQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQorCQkJCXsKKwkJCQkJaXRlbXB0cl9kZWNv ZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQkJCWluZGV4Y3Vyc29yID0g JmRlY29kZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWluZGV4Y3Vyc29yID0gTlVM TDsKKwkJCQl9CisKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJfQorCisJCQkvKgor CQkJICogTm93LCBpZiBlaXRoZXI6CisJCQkgKiAgLSB0aGUgbWFpbiBzb3J0IGlzIGVtcHR5LCBv cgorCQkJICogIC0gaW5kZXhjdXJzb3IgPiBhdXhpbmRleGN1cnNvciwKKwkJCSAqCisJCQkgKiB0 aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50aWZpZXMgYSBUSUQgdGhhdCBkb2Vzbid0IGFwcGVhciBp bgorCQkJICogdGhlIG1haW4gc29ydC4gV2UgbGlrZWx5IG5lZWQgdG8gaW5zZXJ0IGl0CisJCQkg KiBpbnRvIHRoZSB0YXJnZXQgaW5kZXggaWYgaXTigJlzIHZpc2libGUgaW4gdGhlIGhlYXAuCisJ CQkgKi8KKwkJCWlmICh0dXBsZXNvcnRfZW1wdHkgfHwgSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4 Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPiAwKQorCQkJeworCQkJCXR1cGxlc3RvcmVfcHV0ZGF0 dW0oc3RvcmUsIEludDY0R2V0RGF0dW0oaXRlbXB0cl9lbmNvZGUoYXV4aW5kZXhjdXJzb3IpKSk7 CisJCQkJbnVtKys7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gbnVtOworfQorCit0eXBlZGVm IHN0cnVjdCBWYWxpZGF0ZUluZGV4U2NhblN0YXRlCit7CisJVHVwbGVzdG9yZXN0YXRlCQkqc3Rv cmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2X2Jsb2NrX251bWJlcjsKKwlPZmZzZXROdW1iZXIJCXBy ZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9IFZhbGlkYXRlSW5kZXhTY2FuU3RhdGU7CisKKy8qCisg KiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9ja051bWJlckNCIGltcGxlbWVudGF0aW9uIHdoaWNoIHdv cmtzIGFzIGZvbGxvd3M6CisgKgorICogMSkgSXQgaXRlcmF0ZXMgb3ZlciBhIHNvcnRlZCB0dXBs ZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYW4gZW5jb2RlZAorICogICAgSXRlbVBvaW50 ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5zIHRoZSBjdXJyZW50IEJsb2NrTnVtYmVyIGFuZCBjb2xs ZWN0cyBhbGwgT2Zmc2V0TnVtYmVycworICogICAgZm9yIHRoYXQgYmxvY2sgaW4gcGVyX2J1ZmZl cl9kYXRhLgorICoKKyAqIDMpIE9uY2UgdGhlIGNvZGUgZW5jb3VudGVycyBhIG5ldyBCbG9ja051 bWJlciwgaXQgc3RvcHMgcmVhZGluZyBtb3JlCisgKiAgICBvZmZzZXRzIGFuZCBzYXZlcyB0aGUg T2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcgYmxvY2sgZm9yIHRoZSBuZXh0IGNhbGwuCisgKgorICog NCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgYSBibG9jayBpcyBhbHdheXMgdGVybWluYXRlZCB3 aXRoIEludmFsaWRPZmZzZXROdW1iZXIuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRl ZCB0byBiZSByZXBlYXRlZGx5IGNhbGxlZCwgZWFjaCB0aW1lIHJldHVybmluZworICogdGhlIG5l eHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHNldCBvZiBvZmZzZXRzLgorICovCitzdGF0 aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25l eHQoCisJCQkJCQkJCSAgUmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJCQkgIHZvaWQgKnZvaWRf Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkgIHZvaWQgKnZvaWRfcGVyX2J1ZmZlcl9k YXRhCisJCQkJCQkJCSAgKQoreworCWJvb2wgc2hvdWRfZnJlZTsKKwlEYXR1bSBkYXR1bTsKKwlC bG9ja051bWJlciByZXN1bHQgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJaW50IGkgPSAwOworCisJ LyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3BlY2lhbGl6ZWQgY2FsbGJhY2sgc3RhdGUgYW5kIHRoZSBv dXRwdXQgYnVmZmVyLgorCSAqIGNhbGxiYWNrX3ByaXZhdGVfZGF0YSBrZWVwcyB0cmFjayBvZiB0 aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9mZnNldAorCSAqIGZyb20gYSBwcmlvciBpbnZvY2F0aW9u LCBpZiBhbnkuCisJICovCisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSAqY2FsbGJhY2tfcHJpdmF0 ZV9kYXRhID0gdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGE7CisJT2Zmc2V0TnVtYmVyICpwZXJf YnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9idWZmZXJfZGF0YTsKKworCS8qCisJICogSWYgdGhlcmUg aXMgYSAibGVmdG92ZXIiIG9mZnNldCBudW1iZXIgZnJvbSB0aGUgcHJldmlvdXMgaW52b2NhdGlv biwKKwkgKiBpdCBtZWFucyB3ZSBoYWQgc3dpdGNoZWQgdG8gYSBuZXcgYmxvY2sgaW4gdGhlIG1p ZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgorCSAqIFdlIHBsYWNlIHRoYXQgbGVmdG92ZXIgb2Zmc2V0 IG51bWJlciBpbnRvIHRoZSBidWZmZXIgZmlyc3QuCisJICovCisJaWYgKGNhbGxiYWNrX3ByaXZh dGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQor CXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgIT0g SW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJLyoKKwkJICogJ3Jlc3VsdCcgaXMgdGhlIGJsb2NrIG51 bWJlciB0byByZXR1cm4uIFdlIHNldCBpdCB0byB0aGUgYmxvY2sKKwkJICogZnJvbSB0aGUgcHJl dmlvdXMgbGVmdG92ZXIgb2Zmc2V0LgorCQkgKi8KKwkJcmVzdWx0ID0gY2FsbGJhY2tfcHJpdmF0 ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsKKwkJLyogUGxhY2UgbGVmdG92ZXIgb2Zmc2V0IG51 bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKwkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBj YWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXI7CisJCS8qCisJCSAq IENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIHNvIGl0IHdvbid0IGJlIHJldXNlZCB1 bmxlc3MKKwkJICogd2UgZW5jb3VudGVyIGFub3RoZXIgYmxvY2sgY2hhbmdlLgorCQkgKi8KKwkJ Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9m ZnNldE51bWJlcjsKKwl9CisKKwkvKgorCSAqIFJlYWQgZnJvbSB0aGUgdHVwbGVzdG9yZSB1bnRp bCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0dXBsZXMgb3Igd2UKKwkgKiBlbmNvdW50ZXIgYSBibG9j ayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxlOgorCSAqCisJICogICAxKSBEZWNvZGUgaXRzIGJsb2Nr L29mZnNldCBmcm9tIHRoZSBEYXR1bS4KKwkgKiAgIDIpIElmIGl0J3MgdGhlIGZpcnN0IHRpbWUg aW4gdGhpcyBjYWxsIChwcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlkQmxvY2tOdW1iZXIpLAor CSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2X2Jsb2NrX251bWJlci4KKwkgKiAgIDMpIElmIHRoZSBi bG9jayBudW1iZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBibG9jaywgY29sbGVjdCB0aGUgb2Zmc2V0 LgorCSAqICAgNCkgSWYgdGhlIGJsb2NrIG51bWJlciBkaWZmZXJzLCBzYXZlIHRoYXQgb2Zmc2V0 IGFzIGxlZnRvdmVyIGFuZCBicmVhaworCSAqICAgICAgc28gdGhhdCB0aGUgbmV4dCBjYWxsIGNh biBoYW5kbGUgdGhlIG5ldyBibG9jay4KKwkgKi8KKwl3aGlsZSAodHVwbGVzdG9yZV9nZXRkYXR1 bShjYWxsYmFja19wcml2YXRlX2RhdGEtPnN0b3JlLCB0cnVlLCAmc2hvdWRfZnJlZSwgJmRhdHVt KSkKKwl7CisJCUJsb2NrTnVtYmVyIG5leHRfYmxvY2tfbnVtYmVyOworCQlJdGVtUG9pbnRlckRh dGEgbmV4dF9kYXRhOworCisJCS8qIERlY29kZSB0aGUgZGF0dW0gaW50byBhbiBJdGVtUG9pbnRl ciAoYmxvY2sgKyBvZmZzZXQpLiAqLworCQlpdGVtcHRyX2RlY29kZSgmbmV4dF9kYXRhLCBEYXR1 bUdldEludDY0KGRhdHVtKSk7CisJCW5leHRfYmxvY2tfbnVtYmVyID0gSXRlbVBvaW50ZXJHZXRC bG9ja051bWJlcigmbmV4dF9kYXRhKTsKKworCQkvKgorCQkgKiBJZiB3ZSBoYXZlbid0IHNldCBh IGJsb2NrIG51bWJlciB5ZXQgdGhpcyByb3VuZCwgaW5pdGlhbGl6ZSBpdAorCQkgKiB1c2luZyB0 aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4KKwkJICovCisJCWlmIChjYWxsYmFja19wcml2YXRlX2Rh dGEtPnByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051bWJlcikKKwkJCWNhbGxiYWNr X3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Jsb2NrX251bWJlcjsKKwor CQkvKgorCQkgKiBBbHdheXMgc2V0IHRoZSByZXN1bHQgdG8gYmUgdGhlICJjdXJyZW50IiBibG9j ayBudW1iZXIKKwkJICogd2UgYXJlIGZpbGxpbmcgb2Zmc2V0cyBmb3IuCisJCSAqLworCQlyZXN1 bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyOworCisJCS8qCisJ CSAqIElmIHRoaXMgdHVwbGUgaXMgZnJvbSB0aGUgc2FtZSBibG9jaywganVzdCBzdG9yZSBpdHMg b2Zmc2V0CisJCSAqIGluIG91ciBwZXJfYnVmZmVyX2RhdGEgYXJyYXkuCisJCSAqLworCQlpZiAo bmV4dF9ibG9ja19udW1iZXIgPT0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251 bWJlcikKKwkJeworCQkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBJdGVtUG9pbnRlckdldE9mZnNl dE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0aGUgZGF0dW0gaWYgbmVlZGVkLiAq LworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7 CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlIGJsb2NrIGp1c3QgY2hhbmdl ZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgbmV3IGJsb2NrCisJCQkgKiBhcyBsZWZ0b3ZlciBm b3IgdGhlIG5leHQgaW52b2NhdGlvbiBhbmQgYnJlYWsgb3V0LgorCQkJICovCisJCQljYWxsYmFj a19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4dF9ibG9ja19udW1iZXI7CisJ CQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSAgSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8qIEZyZWUgdGhlIGRhdHVt IGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBmcmVlKERhdHVtR2V0UG9p bnRlcihkYXR1bSkpOworCisJCQkvKiBCcmVhayB0byBsZXQgdGhlIG5leHQgY2FsbCBoYW5kbGUg dGhlIG5ldyBibG9jay4gKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJLyoKKwkgKiBUZXJtaW5h dGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgdGhpcyBibG9jayB3aXRoIGFuIEludmFsaWRPZmZz ZXROdW1iZXIuCisJICovCisJcGVyX2J1ZmZlcl9kYXRhW2ldID0gSW52YWxpZE9mZnNldE51bWJl cjsKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgdm9pZAogaGVhcGFtX2luZGV4X3ZhbGlk YXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAgUmVsYXRpb24gaW5kZXhS ZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCQkJICAgU25hcHNo b3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJ ICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0 ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuOwotCUhlYXBTY2FuRGVzYyBoc2Nh bjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNd OwogCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107Ci0JRXhwclN0YXRlICAqcHJlZGljYXRl OwotCVR1cGxlVGFibGVTbG90ICpzbG90OwotCUVTdGF0ZQkgICAqZXN0YXRlOwotCUV4cHJDb250 ZXh0ICplY29udGV4dDsKLQlCbG9ja051bWJlciByb290X2Jsa25vID0gSW52YWxpZEJsb2NrTnVt YmVyOwotCU9mZnNldE51bWJlciByb290X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwot CWJvb2wJCWluX2luZGV4W01heEhlYXBUdXBsZXNQZXJQYWdlXTsKLQlCbG9ja051bWJlciBwcmV2 aW91c19ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsKLQotCS8qIHN0YXRlIHZhcmlhYmxlcyBm b3IgdGhlIG1lcmdlICovCi0JSXRlbVBvaW50ZXIgaW5kZXhjdXJzb3IgPSBOVUxMOwotCUl0ZW1Q b2ludGVyRGF0YSBkZWNvZGVkOwotCWJvb2wJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlOworCisJ VHVwbGVUYWJsZVNsb3QgICpzbG90OworCUVTdGF0ZQkJCSplc3RhdGU7CisJRXhwckNvbnRleHQJ CSplY29udGV4dDsKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NT dHJhdGVneShCQVNfQlVMS1JFQUQpOworCisJaW50CQkJCW51bV90b19jaGVjazsKKwlUdXBsZXN0 b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hlY2s7CisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxs YmFja19wcml2YXRlX2RhdGE7CisKKwlCdWZmZXIgYnVmOworCU9mZnNldE51bWJlciogdHVwbGVz OworCVJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtOworCisJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9y IHR1cGxlIHN0b3JlLiAqLworCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNl X3dvcmtfbWVtIC8gMTA7CisKKwkvKgorCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZworCSAqIGl0ZW0gcG9pbnRl cnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2Ug VElECisJICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdo ZXJlYXMgaW50OCBpcworCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCisJICov CisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZh bHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7CiAKIAkvKgogCSAqIHNhbml0eSBjaGVj a3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFt KSk7CiAKLQkvKgotCSAqIE5lZWQgYW4gRVN0YXRlIGZvciBldmFsdWF0aW9uIG9mIGluZGV4IGV4 cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWluZGV4Ci0JICogcHJlZGljYXRlcy4gIEFsc28gYSBzbG90 IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVwbGUuCi0JICovCisJbnVtX3RvX2NoZWNrID0gaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZmZXJlbmNlKHN0YXRlLT50dXBsZXNvcnQsCisJ CQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkgdHVwbGVz X2Zvcl9jaGVjayk7CisKKwkvKiBJdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gY2xvc2UgdHVw bGUgc29ydCBhcyBmYXN0IGFzIHdlIGNhbiAqLworCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxl c29ydCk7CisJdHVwbGVzb3J0X2VuZChhdXhTdGF0ZS0+dHVwbGVzb3J0KTsKKworCXN0YXRlLT50 dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0gTlVMTDsKKwogCWVzdGF0ZSA9IENyZWF0 ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0 YXRlKTsKIAlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Io aGVhcFJlbGF0aW9uKSwKLQkJCQkJCQkJCSZUVFNPcHNIZWFwVHVwbGUpOworCQkJCQkJCQkJJlRU U09wc0J1ZmZlckhlYXBUdXBsZSk7CiAKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4g dHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRl LCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlf UHJlZGljYXRlLCBlc3RhdGUpOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS5wcmV2X2Jsb2NrX251 bWJlciA9IEludmFsaWRCbG9ja051bWJlcjsKKwljYWxsYmFja19wcml2YXRlX2RhdGEuc3RvcmUg PSB0dXBsZXNfZm9yX2NoZWNrOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS5wcmV2X29mZl9vZmZz ZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCS8qCi0JICogUHJlcGFyZSBmb3Ig c2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIFdlIG5lZWQganVzdCB0aG9zZSB0dXBsZXMKLQkg KiBzYXRpc2Z5aW5nIHRoZSBwYXNzZWQtaW4gcmVmZXJlbmNlIHNuYXBzaG90LiAgV2UgbXVzdCBk aXNhYmxlIHN5bmNzY2FuCi0JICogaGVyZSwgYmVjYXVzZSBpdCdzIGNyaXRpY2FsIHRoYXQgd2Ug cmVhZCBmcm9tIGJsb2NrIHplcm8gZm9yd2FyZCB0bwotCSAqIG1hdGNoIHRoZSBzb3J0ZWQgVElE cy4KLQkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyog cmVsYXRpb24gKi8KLQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwotCQkJCQkJCQkg MCwgLyogbnVtYmVyIG9mIGtleXMgKi8KLQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCi0J CQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBm YWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBPSyAqLwotCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2Nh bjsKKwlyZWFkX3N0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFN X01BSU5URU5BTkNFIHwgUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCQkJCQkg YnN0cmF0ZWd5LAorCQkJCQkJCQkJCQkJCQkgaGVhcFJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sCisJ CQkJCQkJCQkJCQkJCSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0 LAorCQkJCQkJCQkJCQkJCQkgJmNhbGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJCQkJ IChNYXhIZWFwVHVwbGVzUGVyUGFnZSArIDEpICogc2l6ZW9mKE9mZnNldE51bWJlcikpOwogCi0J cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwK LQkJCQkJCQkJIGhzY2FuLT5yc19uYmxvY2tzKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfVE9UQUwsIG51bV90b19jaGVjayk7CisJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUs IDApOwogCi0JLyoKLQkgKiBTY2FuIGFsbCB0dXBsZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90Lgot CSAqLwotCXdoaWxlICgoaGVhcFR1cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2Fu RGlyZWN0aW9uKSkgIT0gTlVMTCkKKwl3aGlsZSAoKGJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVm ZmVyKHJlYWRfc3RyZWFtLCAodm9pZCopICZ0dXBsZXMpKSAhPSBJbnZhbGlkQnVmZmVyKQogCXsK LQkJSXRlbVBvaW50ZXIgaGVhcGN1cnNvciA9ICZoZWFwVHVwbGUtPnRfc2VsZjsKLQkJSXRlbVBv aW50ZXJEYXRhIHJvb3RUdXBsZTsKLQkJT2Zmc2V0TnVtYmVyIHJvb3Rfb2ZmbnVtOworCQlIZWFw VHVwbGVEYXRhCWhlYXBfdHVwbGVfZGF0YVtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJCWludCBp OworCQlPZmZzZXROdW1iZXIgb2ZmOworCQlCbG9ja051bWJlciBibG9ja19udW1iZXI7CiAKIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJTG9ja0J1 ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmKTsKIAotCQlpZiAoKHByZXZpb3VzX2Jsa25vID09IEludmFsaWRCbG9j a051bWJlcikgfHwKLQkJCShoc2Nhbi0+cnNfY2Jsb2NrICE9IHByZXZpb3VzX2Jsa25vKSkKKwkJ aSA9IDA7CisJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVy KQogCQl7Ci0JCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxP Q0tTX0RPTkUsCi0JCQkJCQkJCQkJIGhzY2FuLT5yc19jYmxvY2spOwotCQkJcHJldmlvdXNfYmxr bm8gPSBoc2Nhbi0+cnNfY2Jsb2NrOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKwkJCWJvb2wJ CWFsbF9kZWFkLCBmb3VuZDsKKwkJCUl0ZW1Qb2ludGVyU2V0KCZ0aWQsIGJsb2NrX251bWJlciwg b2ZmKTsKKworCQkJZm91bmQgPSBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKCZ0aWQsIGhlYXBSZWxh dGlvbiwgYnVmLCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgICAmaGVhcF90dXBsZV9kYXRhW2ldLCAm YWxsX2RlYWQsIHRydWUpOworCQkJaWYgKCFmb3VuZCkKKwkJCQlJdGVtUG9pbnRlclNldEludmFs aWQoJmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpOworCQkJaSsrOwogCQl9CisJCUxvY2tCdWZm ZXIoYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCi0JCS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBp biB0YWJsZV9pbmRleF9idWlsZF9zY2FuLCB3ZSBzaG91bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAq IHR1cGxlcyB1bmRlciB0aGUgVElEcyBvZiB0aGVpciByb290IHR1cGxlczsgc28gd2hlbiB3ZSBh ZHZhbmNlIG9udG8KLQkJICogYSBuZXcgaGVhcCBwYWdlLCBidWlsZCBhIG1hcCBvZiByb290IGl0 ZW0gb2Zmc2V0cyBvbiB0aGUgcGFnZS4KLQkJICoKLQkJICogVGhpcyBjb21wbGljYXRlcyBtZXJn aW5nIGFnYWluc3QgdGhlIHR1cGxlc29ydCBvdXRwdXQ6IHdlIHdpbGwKLQkJICogdmlzaXQgdGhl IGxpdmUgdHVwbGVzIGluIG9yZGVyIGJ5IHRoZWlyIG9mZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkg KiBvZmZzZXRzIHRoYXQgd2UgbmVlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGluZGV4IGNvbnRl bnRzIG1pZ2h0IGJlCi0JCSAqIG9yZGVyZWQgZGlmZmVyZW50bHkuICBTbyB3ZSBtaWdodCBoYXZl IHRvICJsb29rIGJhY2siIHdpdGhpbiB0aGUKLQkJICogdHVwbGVzb3J0IG91dHB1dCwgYnV0IG9u bHkgd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuICBXZSBoYW5kbGUgdGhhdAotCQkgKiBieSBrZWVw aW5nIGEgYm9vbCBhcnJheSBpbl9pbmRleFtdIHNob3dpbmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5 LXBhc3NlZC1vdmVyIHR1cGxlc29ydCBvdXRwdXQgVElEcyBvZiB0aGUgY3VycmVudCBwYWdlLiBX ZQotCQkgKiBjbGVhciB0aGF0IGFycmF5IGhlcmUsIHdoZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcg aGVhcCBwYWdlLgotCQkgKi8KLQkJaWYgKGhzY2FuLT5yc19jYmxvY2sgIT0gcm9vdF9ibGtubykK KwkJaSA9IDA7CisJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVt YmVyKQogCQl7Ci0JCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7 Ci0KLQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKLQkJ CWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQlMb2NrQnVmZmVy KGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwotCi0JCQltZW1zZXQoaW5faW5k ZXgsIDAsIHNpemVvZihpbl9pbmRleCkpOwotCi0JCQlyb290X2Jsa25vID0gaHNjYW4tPnJzX2Ni bG9jazsKLQkJfQotCi0JCS8qIENvbnZlcnQgYWN0dWFsIHR1cGxlIFRJRCB0byByb290IFRJRCAq LwotCQlyb290VHVwbGUgPSAqaGVhcGN1cnNvcjsKLQkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRl ckdldE9mZnNldE51bWJlcihoZWFwY3Vyc29yKTsKLQotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25s eShoZWFwVHVwbGUpKQotCQl7Ci0JCQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29m Zm51bSAtIDFdOwotCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCks Ci0JCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9y IGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJ IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOwotCQkJSXRlbVBvaW50ZXJTZXRPZmZzZXRO dW1iZXIoJnJvb3RUdXBsZSwgcm9vdF9vZmZudW0pOwotCQl9Ci0KLQkJLyoKLQkJICogIm1lcmdl IiBieSBza2lwcGluZyB0aHJvdWdoIHRoZSBpbmRleCB0dXBsZXMgdW50aWwgd2UgZmluZCBvciBw YXNzCi0JCSAqIHRoZSBjdXJyZW50IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3aGlsZSAoIXR1cGxl c29ydF9lbXB0eSAmJgotCQkJICAgKCFpbmRleGN1cnNvciB8fAotCQkJCUl0ZW1Qb2ludGVyQ29t cGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPCAwKSkKLQkJewotCQkJRGF0dW0JCXRzX3Zh bDsKLQkJCWJvb2wJCXRzX2lzbnVsbDsKLQotCQkJaWYgKGluZGV4Y3Vyc29yKQorCQkJaWYgKEl0 ZW1Qb2ludGVySXNWYWxpZCgmaGVhcF90dXBsZV9kYXRhW2ldLnRfc2VsZikpCiAJCQl7CisJCQkJ SXRlbVBvaW50ZXJEYXRhIHJvb3RfdGlkOworCQkJCUl0ZW1Qb2ludGVyU2V0KCZyb290X3RpZCwg YmxvY2tfbnVtYmVyLCBvZmYpOworCisJCQkJLyogUmVzZXQgdGhlIHBlci10dXBsZSBtZW1vcnkg Y29udGV4dCBmb3IgdGhlIG5leHQgZmV0Y2guICovCisJCQkJTWVtb3J5Q29udGV4dFJlc2V0KGVj b250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOworCQkJCUV4ZWNTdG9yZUJ1ZmZlckhlYXBU dXBsZSgmaGVhcF90dXBsZV9kYXRhW2ldLCBzbG90LCBidWYpOworCisJCQkJLyogQ29tcHV0ZSB0 aGUga2V5IHZhbHVlcyBhbmQgbnVsbCBmbGFncyBmb3IgdGhpcyB0dXBsZS4gKi8KKwkJCQlGb3Jt SW5kZXhEYXR1bShpbmRleEluZm8sCisJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkgICBlc3RhdGUs CisJCQkJCQkJICAgdmFsdWVzLAorCQkJCQkJCSAgIGlzbnVsbCk7CisKIAkJCQkvKgotCQkJCSAq IFJlbWVtYmVyIGluZGV4IGl0ZW1zIHNlZW4gZWFybGllciBvbiB0aGUgY3VycmVudCBoZWFwIHBh Z2UKKwkJCQkgKiBJbnNlcnQgdGhlIHR1cGxlIGludG8gdGhlIHRhcmdldCBpbmRleC4KIAkJCQkg Ki8KLQkJCQlpZiAoSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihpbmRleGN1cnNvcikgPT0gcm9v dF9ibGtubykKLQkJCQkJaW5faW5kZXhbSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaW5kZXhj dXJzb3IpIC0gMV0gPSB0cnVlOworCQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAorCQkJ CQkJCSB2YWx1ZXMsCisJCQkJCQkJIGlzbnVsbCwKKwkJCQkJCQkgJnJvb3RfdGlkLCAvKiBpbnNl cnQgcm9vdCB0dXBsZSAqLworCQkJCQkJCSBoZWFwUmVsYXRpb24sCisJCQkJCQkJIGluZGV4SW5m by0+aWlfVW5pcXVlID8KKwkJCQkJCQkgVU5JUVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19O TywKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIGluZGV4SW5mbyk7CiAJCQl9CiAKLQkJCXR1cGxl c29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oc3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwK LQkJCQkJCQkJCQkJCSAgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCi0JCQkJCQkJCQkJCQkg IE5VTEwpOwotCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKLQkJCWlm ICghdHVwbGVzb3J0X2VtcHR5KQotCQkJewotCQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBE YXR1bUdldEludDY0KHRzX3ZhbCkpOwotCQkJCWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7Ci0JCQl9 Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogQmUgdGlkeSAqLwotCQkJCWluZGV4Y3Vyc29yID0gTlVM TDsKLQkJCX0KKwkJCXN0YXRlLT5odHVwcyArPSAxOworCQkJcGdzdGF0X3Byb2dyZXNzX2luY3Jf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05FLCAxKTsKKwkJCWkrKzsKIAkJfQog Ci0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZXNvcnQgaGFzIG92ZXJzaG90ICphbmQqIHdlIGRpZG4n dCBzZWUgYSBtYXRjaCBlYXJsaWVyLAotCQkgKiB0aGVuIHRoaXMgdHVwbGUgaXMgbWlzc2luZyBm cm9tIHRoZSBpbmRleCwgc28gaW5zZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0dXBsZXNvcnRfZW1w dHkgfHwKLQkJCSBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpID4g MCkgJiYKLQkJCSFpbl9pbmRleFtyb290X29mZm51bSAtIDFdKQotCQl7Ci0JCQlNZW1vcnlDb250 ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCS8qIFNldCB1 cCBmb3IgcHJlZGljYXRlIG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwotCQkJRXhlY1N0b3Jl SGVhcFR1cGxlKGhlYXBUdXBsZSwgc2xvdCwgZmFsc2UpOwotCi0JCQkvKgotCQkJICogSW4gYSBw YXJ0aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkgdGhlCi0JCQkg KiBwcmVkaWNhdGUuCi0JCQkgKi8KLQkJCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkKLQkJCXsKLQkJ CQlpZiAoIUV4ZWNRdWFsKHByZWRpY2F0ZSwgZWNvbnRleHQpKQotCQkJCQljb250aW51ZTsKLQkJ CX0KLQotCQkJLyoKLQkJCSAqIEZvciB0aGUgY3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFs bCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJCSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdo aWNoIGFyZSBudWxsLiAgVGhpcyBhbHNvIHBlcmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFu eSBleHByZXNzaW9ucyBuZWVkZWQuCi0JCQkgKi8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5m bywKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0J CQkJCQkgICBpc251bGwpOwotCi0JCQkvKgotCQkJICogWW91J2QgdGhpbmsgd2Ugc2hvdWxkIGdv IGFoZWFkIGFuZCBidWlsZCB0aGUgaW5kZXggdHVwbGUgaGVyZSwKLQkJCSAqIGJ1dCBzb21lIGlu ZGV4IEFNcyB3YW50IHRvIGRvIGZ1cnRoZXIgcHJvY2Vzc2luZyBvbiB0aGUgZGF0YQotCQkJICog Zmlyc3QuIFNvIHBhc3MgdGhlIHZhbHVlc1tdIGFuZCBpc251bGxbXSBhcnJheXMsIGluc3RlYWQu Ci0JCQkgKi8KLQotCQkJLyoKLQkJCSAqIElmIHRoZSB0dXBsZSBpcyBhbHJlYWR5IGNvbW1pdHRl ZCBkZWFkLCB5b3UgbWlnaHQgdGhpbmsgd2UKLQkJCSAqIGNvdWxkIHN1cHByZXNzIHVuaXF1ZW5l c3MgY2hlY2tpbmcsIGJ1dCB0aGlzIGlzIG5vIGxvbmdlciB0cnVlCi0JCQkgKiBpbiB0aGUgcHJl c2VuY2Ugb2YgSE9ULCBiZWNhdXNlIHRoZSBpbnNlcnQgaXMgYWN0dWFsbHkgYSBwcm94eQotCQkJ ICogZm9yIGEgdW5pcXVlbmVzcyBjaGVjayBvbiB0aGUgd2hvbGUgSE9ULWNoYWluLiAgVGhhdCBp cywgdGhlCi0JCQkgKiB0dXBsZSB3ZSBoYXZlIGhlcmUgY291bGQgYmUgZGVhZCBiZWNhdXNlIGl0 IHdhcyBhbHJlYWR5Ci0JCQkgKiBIT1QtdXBkYXRlZCwgYW5kIGlmIHNvIHRoZSB1cGRhdGluZyB0 cmFuc2FjdGlvbiB3aWxsIG5vdCBoYXZlCi0JCQkgKiB0aG91Z2h0IGl0IHNob3VsZCBpbnNlcnQg aW5kZXggZW50cmllcy4gIFRoZSBpbmRleCBBTSB3aWxsCi0JCQkgKiBjaGVjayB0aGUgd2hvbGUg SE9ULWNoYWluIGFuZCBjb3JyZWN0bHkgZGV0ZWN0IGEgY29uZmxpY3QgaWYKLQkJCSAqIHRoZXJl IGlzIG9uZS4KLQkJCSAqLwotCi0JCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKLQkJCQkJ CSB2YWx1ZXMsCi0JCQkJCQkgaXNudWxsLAotCQkJCQkJICZyb290VHVwbGUsCi0JCQkJCQkgaGVh cFJlbGF0aW9uLAotCQkJCQkJIGluZGV4SW5mby0+aWlfVW5pcXVlID8KLQkJCQkJCSBVTklRVUVf Q0hFQ0tfWUVTIDogVU5JUVVFX0NIRUNLX05PLAotCQkJCQkJIGZhbHNlLAotCQkJCQkJIGluZGV4 SW5mbyk7Ci0KLQkJCXN0YXRlLT50dXBzX2luc2VydGVkICs9IDE7Ci0JCX0KKwkJUmVsZWFzZUJ1 ZmZlcihidWYpOwogCX0KIAotCXRhYmxlX2VuZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAor CXJlYWRfc3RyZWFtX2VuZChyZWFkX3N0cmVhbSk7CisJdHVwbGVzdG9yZV9lbmQodHVwbGVzX2Zv cl9jaGVjayk7CisKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBub3ct Z29uZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CiAJ aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXgg NzUzOWUwM2QzYmEuLjg1ZDJiMjA0ZjRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC03MTQsMTEgKzcx NCwxNiBAQCBVcGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKICAqCQkJYWxyZWFkeSBl eGlzdHMuCiAgKgkJSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEOgogICoJCQljcmVhdGUgYSBwYXJ0 aXRpb25lZCBpbmRleCAodGFibGUgbXVzdCBiZSBwYXJ0aXRpb25lZCkKKyAqCQlJTkRFWF9DUkVB VEVfQVVYSUxJQVJZOgorICoJCQltYXJrIGluZGV4IGFzIGF1eGlsaWFyeSBpbmRleAogICogY29u c3RyX2ZsYWdzOiBmbGFncyBwYXNzZWQgdG8gaW5kZXhfY29uc3RyYWludF9jcmVhdGUKICAqCQko b25seSBpZiBJTkRFWF9DUkVBVEVfQUREX0NPTlNUUkFJTlQgaXMgc2V0KQogICogYWxsb3dfc3lz dGVtX3RhYmxlX21vZHM6IGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlz X2ludGVybmFsOiBpZiB0cnVlLCBwb3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBpbmRleAogICog Y29uc3RyYWludElkOiBpZiBub3QgTlVMTCwgcmVjZWl2ZXMgT0lEIG9mIGNyZWF0ZWQgY29uc3Ry YWludAorICogcmVscGVyc2lzdGVuY2U6IHBlcnNpc3RlbmNlIGxldmVsIHRvIHVzZSBmb3IgaW5k ZXguIEluIG1vc3Qgb2YgdGhlCisgKgkJY2FzZXMgaXQgaXMgc2hvdWxkIGJlIGVxdWFsIHRvIHBl cnNpc3RlbmNlIGxldmVsIG9mIHRhYmxlLAorICoJCWF1eGlsaWFyeSBpbmRleGVzIGFyZSBvbmx5 IGV4Y2VwdGlvbiBoZXJlLgogICoKICAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUgY3JlYXRlZCBp bmRleC4KICAqLwpAQCAtNzQzLDcgKzc0OCw4IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkgYml0czE2IGNvbnN0cl9mbGFncywKIAkJCSBib29sIGFsbG93X3N5c3Rl bV90YWJsZV9tb2RzLAogCQkJIGJvb2wgaXNfaW50ZXJuYWwsCi0JCQkgT2lkICpjb25zdHJhaW50 SWQpCisJCQkgT2lkICpjb25zdHJhaW50SWQsCisJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSkKIHsK IAlPaWQJCQloZWFwUmVsYXRpb25JZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbGF0aW9uKTsK IAlSZWxhdGlvbglwZ19jbGFzczsKQEAgLTc1NCwxMSArNzYwLDExIEBAIGluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJaXNfZXhjbHVzaW9uOwogCU9pZAkJCW5hbWVz cGFjZUlkOwogCWludAkJCWk7Ci0JY2hhcgkJcmVscGVyc2lzdGVuY2U7CiAJYm9vbAkJaXNwcmlt YXJ5ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlkpICE9IDA7CiAJYm9vbAkJaW52 YWxpZCA9IChmbGFncyAmIElOREVYX0NSRUFURV9JTlZBTElEKSAhPSAwOwogCWJvb2wJCWNvbmN1 cnJlbnQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQ09OQ1VSUkVOVCkgIT0gMDsKIAlib29sCQlw YXJ0aXRpb25lZCA9IChmbGFncyAmIElOREVYX0NSRUFURV9QQVJUSVRJT05FRCkgIT0gMDsKKwli b29sCQlhdXhpbGlhcnkgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZKSAhPSAwOwog CWNoYXIJCXJlbGtpbmQ7CiAJVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0 SWQgcmVsbWlubXhpZDsKQEAgLTc4NCw3ICs3OTAsNiBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCW5hbWVzcGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UoaGVhcFJl bGF0aW9uKTsKIAlzaGFyZWRfcmVsYXRpb24gPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsaXNz aGFyZWQ7CiAJbWFwcGVkX3JlbGF0aW9uID0gUmVsYXRpb25Jc01hcHBlZChoZWFwUmVsYXRpb24p OwotCXJlbHBlcnNpc3RlbmNlID0gaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl OwogCiAJLyoKIAkgKiBjaGVjayBwYXJhbWV0ZXJzCkBAIC03OTIsNiArNzk3LDExIEBAIGluZGV4 X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJaWYgKGluZGV4SW5mby0+aWlfTnVtSW5k ZXhBdHRycyA8IDEpCiAJCWVsb2coRVJST1IsICJtdXN0IGluZGV4IGF0IGxlYXN0IG9uZSBjb2x1 bW4iKTsKIAorCWlmIChpbmRleEluZm8tPmlpX0FtID09IFNUSVJfQU1fT0lEICYmICFhdXhpbGlh cnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCSBlcnJtc2coInVzZXItZGVmaW5lZCBpbmRleGVzIHdpdGggU1RJUiBh Y2Nlc3MgbWV0aG9kIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKKwogCWlmICghYWxsb3dfc3lzdGVt X3RhYmxlX21vZHMgJiYKIAkJSXNTeXN0ZW1SZWxhdGlvbihoZWFwUmVsYXRpb24pICYmCiAJCUlz Tm9ybWFsUHJvY2Vzc2luZ01vZGUoKSkKQEAgLTEzOTcsNyArMTQwNyw4IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElk LAogCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KIAkJCQkJCQl0cnVl LAogCQkJCQkJCWluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJCQkJ CW9sZEluZm8tPmlpX1dpdGhvdXRPdmVybGFwcyk7CisJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91 dE92ZXJsYXBzLAorCQkJCQkJCWZhbHNlKTsKIAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlzdCBv ZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAtMTQ2 Miw3ICsxNDczLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJICAwLAogCQkJCQkJCSAgdHJ1ZSwg LyogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8KIAkJCQkJCQkgIGZhbHNl LAkvKiBpc19pbnRlcm5hbD8gKi8KLQkJCQkJCQkgIE5VTEwpOworCQkJCQkJCSAgTlVMTCwKKwkJ CQkJCQkgIGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAKIAkvKiBDbG9z ZSB0aGUgcmVsYXRpb25zIHVzZWQgYW5kIGNsZWFuIHVwICovCiAJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKQEAgLTE0NzIsNiArMTQ4NCwxNTUgQEAgaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJ cmV0dXJuIG5ld0luZGV4SWQ7CiB9CiAKKy8qCisgKiBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2F1eAorICoKKyAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gYXV4aWxpYXJ5IGluZGV4IGJhc2Vk IG9uIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBvbmUKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlci4gIFRo ZSBpbmRleCBpcyBpbnNlcnRlZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZQorICogYnVp bHQgbGF0ZXIgb24uIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJv Y2Vzc2luZy4KKyAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2UgdG8gdXNl IGZvciB0aGlzIGluZGV4LgorICovCitPaWQKK2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4 KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG1haW5JbmRleElkLAorCQkJCQkJCSAgIE9pZCB0 YWJsZXNwYWNlT2lkLCBjb25zdCBjaGFyICpuZXdOYW1lKQoreworCVJlbGF0aW9uCWluZGV4UmVs YXRpb247CisJSW5kZXhJbmZvICAqb2xkSW5mbywKKwkJCSpuZXdJbmZvOworCU9pZAkJCW5ld0lu ZGV4SWQgPSBJbnZhbGlkT2lkOworCUhlYXBUdXBsZQlpbmRleFR1cGxlOworCisJTGlzdAkgICAq aW5kZXhDb2xOYW1lcyA9IE5JTDsKKwlMaXN0CSAgICppbmRleEV4cHJzID0gTklMOworCUxpc3QJ ICAgKmluZGV4UHJlZHMgPSBOSUw7CisKKwlPaWQgKmF1eE9wY2xhc3NJZHM7CisJaW50MTYgKmF1 eENvbG9wdGlvbnM7CisKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihtYWluSW5kZXhJZCwg Um93RXhjbHVzaXZlTG9jayk7CisKKwkvKiBUaGUgbmV3IGluZGV4IG5lZWRzIHNvbWUgaW5mb3Jt YXRpb24gZnJvbSB0aGUgb2xkIGluZGV4ICovCisJb2xkSW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGlu ZGV4UmVsYXRpb24pOworCisJLyoKKwkgKiBCdWlsZCBvZiBhbiBhdXhpbGlhcnkgaW5kZXggd2l0 aCBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90CisJICogc3VwcG9ydGVkLgorCSAqLworCWlm IChvbGRJbmZvLT5paV9FeGNsdXNpb25PcHMgIT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2co ImF1eGlsaWFyeSBpbmRleCBjcmVhdGlvbiBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5v dCBzdXBwb3J0ZWQiKSkpOworCisJLyogR2V0IHRoZSBhcnJheSBvZiBjbGFzcyBhbmQgY29sdW1u IG9wdGlvbnMgSURzIGZyb20gaW5kZXggaW5mbyAqLworCWluZGV4VHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShtYWluSW5kZXhJZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChpbmRleFR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgbWFpbkluZGV4SWQpOworCisKKwkvKgorCSAqIEZldGNo IHRoZSBsaXN0IG9mIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzIGRpcmVjdGx5IGZyb20gdGhl CisJICogY2F0YWxvZ3MuICBUaGlzIGNhbm5vdCByZWx5IG9uIHRoZSBpbmZvcm1hdGlvbiBmcm9t IEluZGV4SW5mbyBvZiB0aGUKKwkgKiBvbGQgaW5kZXggYXMgdGhlc2UgaGF2ZSBiZWVuIGZsYXR0 ZW5lZCBmb3IgdGhlIHBsYW5uZXIuCisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4cHJlc3Npb25z ICE9IE5JTCkKKwl7CisJCURhdHVtCQlleHByRGF0dW07CisJCWNoYXIJICAgKmV4cHJTdHJpbmc7 CisKKwkJZXhwckRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRl eFR1cGxlLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMpOworCQlleHByU3Ry aW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQlpbmRleEV4cHJzID0gKExp c3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJTdHJpbmcpOworCQlwZnJlZShleHByU3RyaW5nKTsKKwl9 CisJaWYgKG9sZEluZm8tPmlpX1ByZWRpY2F0ZSAhPSBOSUwpCisJeworCQlEYXR1bQkJcHJlZERh dHVtOworCQljaGFyCSAgICpwcmVkU3RyaW5nOworCisJCXByZWREYXR1bSA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3Bn X2luZGV4X2luZHByZWQpOworCQlwcmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVk RGF0dW0pOworCQlpbmRleFByZWRzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcp OworCisJCS8qIEFsc28gY29udmVydCB0byBpbXBsaWNpdC1BTkQgZm9ybWF0ICovCisJCWluZGV4 UHJlZHMgPSBtYWtlX2FuZHNfaW1wbGljaXQoKEV4cHIgKikgaW5kZXhQcmVkcyk7CisJCXBmcmVl KHByZWRTdHJpbmcpOworCX0KKworCS8qCisJICogQnVpbGQgdGhlIGluZGV4IGluZm9ybWF0aW9u IGZvciB0aGUgbmV3IGluZGV4LiAgTm90ZSB0aGF0IHJlYnVpbGQgb2YKKwkgKiBpbmRleGVzIHdp dGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdCBzdXBwb3J0ZWQsIGhlbmNlIHRoZXJlIGlz IG5vCisJICogbmVlZCB0byBmaWxsIGFsbCB0aGUgaWlfRXhjbHVzaW9uKiBmaWVsZHMuCisJICov CisJbmV3SW5mbyA9IG1ha2VJbmRleEluZm8ob2xkSW5mby0+aWlfTnVtSW5kZXhBdHRycywKKwkJ CQkJCQlvbGRJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzLAorCQkJCQkJCVNUSVJfQU1fT0lELCAv KiBzcGVjaWFsIEFNIGZvciBhdXggaW5kZXhlcyAqLworCQkJCQkJCWluZGV4RXhwcnMsCisJCQkJ CQkJaW5kZXhQcmVkcywKKwkJCQkJCQlmYWxzZSwJLyogYXV4IGluZGV4IGFyZSBub3QgdW5pcXVl ICovCisJCQkJCQkJb2xkSW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlmYWxzZSwJ Lyogbm90IHJlYWR5IGZvciBpbnNlcnRzICovCisJCQkJCQkJdHJ1ZSwKKwkJCQkJCQlmYWxzZSwJ LyogYXV4IGFyZSBub3Qgc3VtbWFyaXppbmcgKi8KKwkJCQkJCQlmYWxzZSwJLyogYXV4IGFyZSBu b3Qgd2l0aG91dCBvdmVybGFwcyAqLworCQkJCQkJCXRydWUJLyogYXV4aWxpYXJ5ICovKTsKKwor CS8qCisJICogRXh0cmFjdCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4g bnVtYmVycyBmb3IgdGhlIG5ldworCSAqIGluZGV4IGluZm9ybWF0aW9uLiAgQWxsIHRoaXMgaW5m b3JtYXRpb24gd2lsbCBiZSB1c2VkIGZvciB0aGUgaW5kZXgKKwkgKiBjcmVhdGlvbi4KKwkgKi8K Kwlmb3IgKGludCBpID0gMDsgaSA8IG9sZEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7 CisJCVR1cGxlRGVzYwlpbmRleFR1cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGluZGV4UmVsYXRp b24pOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKGluZGV4VHVwRGVz YywgaSk7CisKKwkJaW5kZXhDb2xOYW1lcyA9IGxhcHBlbmQoaW5kZXhDb2xOYW1lcywgTmFtZVN0 cihhdHQtPmF0dG5hbWUpKTsKKwkJbmV3SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IG9s ZEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV07CisJfQorCisJYXV4T3BjbGFzc0lkcyA9IHBh bGxvYzAoc2l6ZW9mKE9pZCkgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKwlhdXhDb2xv cHRpb25zID0gcGFsbG9jMChzaXplb2YoaW50MTYpICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRy cyk7CisKKwkvKiBGaWxsIHdpdGggImFueSBvcHMiICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBu ZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCisJeworCQlhdXhPcGNsYXNzSWRzW2ldID0g QU5ZX1NUSVJfT1BTX09JRDsKKwkJYXV4Q29sb3B0aW9uc1tpXSA9IDA7CisJfQorCisJbmV3SW5k ZXhJZCA9IGluZGV4X2NyZWF0ZShoZWFwUmVsYXRpb24sCisJCQkJCQkJICBuZXdOYW1lLAorCQkJ CQkJCSAgSW52YWxpZE9pZCwgICAgLyogaW5kZXhSZWxhdGlvbklkICovCisJCQkJCQkJICBJbnZh bGlkT2lkLCAgICAvKiBwYXJlbnRJbmRleFJlbGlkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAg ICAvKiBwYXJlbnRDb25zdHJhaW50SWQgKi8KKwkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVy LCAvKiByZWxGaWxlTnVtYmVyICovCisJCQkJCQkJICBuZXdJbmZvLAorCQkJCQkJCSAgaW5kZXhD b2xOYW1lcywKKwkJCQkJCQkgIFNUSVJfQU1fT0lELAorCQkJCQkJCSAgdGFibGVzcGFjZU9pZCwK KwkJCQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX2luZGNvbGxhdGlvbiwKKwkJCQkJCQkgIGF1eE9w Y2xhc3NJZHMsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgYXV4Q29sb3B0aW9ucywKKwkJCQkJ CQkgIE5VTEwsCisJCQkJCQkJICAoRGF0dW0pIDAsCisJCQkJCQkJICBJTkRFWF9DUkVBVEVfU0tJ UF9CVUlMRCB8IElOREVYX0NSRUFURV9DT05DVVJSRU5UIHwgSU5ERVhfQ1JFQVRFX0FVWElMSUFS WSwKKwkJCQkJCQkgIDAsCisJCQkJCQkJICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5 c3RlbSBjYXRhbG9nPyAqLworCQkJCQkJCSAgZmFsc2UsICAgIC8qIGlzX2ludGVybmFsPyAqLwor CQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKTsgLyogYXV4 IGluZGV4ZXMgdW5sb2dnZWQgKi8KKworCS8qIENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQg Y2xlYW4gdXAgKi8KKwlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCVJlbGVh c2VTeXNDYWNoZShpbmRleFR1cGxlKTsKKworCXJldHVybiBuZXdJbmRleElkOworfQorCiAvKgog ICogaW5kZXhfY29uY3VycmVudGx5X2J1aWxkCiAgKgpAQCAtMjQ1Miw3ICsyNjEzLDggQEAgQnVp bGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3Jl YWR5LAogCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6 aW5nLAotCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlKTsKKwkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGlu ZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0g U1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0 cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUx Miw3ICsyNjc0LDggQEAgQnVpbGREdW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRl eC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4 Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBp bmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIg Ki8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkg PCBudW1BdHRzOyBpKyspCkBAIC0zMjg4LDEyICszNDUxLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNp b24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICoKICAqIFdlIGRvIGEgY29uY3VycmVudCBpbmRl eCBidWlsZCBieSBmaXJzdCBpbnNlcnRpbmcgdGhlIGNhdGFsb2cgZW50cnkgZm9yIHRoZQogICog aW5kZXggdmlhIGluZGV4X2NyZWF0ZSgpLCBtYXJraW5nIGl0IG5vdCBpbmRpc3JlYWR5IGFuZCBu b3QgaW5kaXN2YWxpZC4KKyAqIFRoZW4gd2UgY3JlYXRlIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4 IHRoZSBzYW1lIHdheS4gSXQgYmFzZWQgb24gU1RJUiBBTS4KICAqIFRoZW4gd2UgY29tbWl0IG91 ciB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBuZXcgb25lLCB0aGVuIHdlIHdhaXQgZm9yIGFsbAog ICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUg dG8gdGVybWluYXRlLiAgTm93Ci0gKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFy dGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCisgKiB3ZSBrbm93IHRoYXQg YW55IHN1YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSBpbmRleGVzIGFu ZAogICogaG9ub3IgaXRzIGNvbnN0cmFpbnRzIG9uIEhPVCB1cGRhdGVzOyBzbyB3aGlsZSBleGlz dGluZyBIT1QtY2hhaW5zIG1pZ2h0CiAgKiBiZSBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHRoZSBp bmRleCwgbm8gY3VycmVudGx5IGxpdmUgdHVwbGUgd2lsbCBoYXZlIGFuCi0gKiBpbmNvbXBhdGli bGUgSE9UIHVwZGF0ZSBkb25lIHRvIGl0LiAgV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxs eSB2aWEKKyAqIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuCisgKgorICogQWZ0 ZXIgd2UgYnVpbGQgYXV4aWxpYXJ5IGluZGV4LiBJdCBpcyBmYXN0IG9wZXJhdGlvbiB3aXRob3V0 IGFueSBhY3R1YWwKKyAqIHRhYmxlIHNjYW4uIEFzIHJlc3VsdCwgd2UgaGF2ZSBlbXB0eSBTVElS IGluZGV4LiBXZSBjb21taXQgdHJhbnNhY3Rpb24gYW5kCisgKiBhZ2FpbiB3YWl0IGZvciBhbGwg dHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUKKyAq IHRvIHRlcm1pbmF0ZS4gQXQgdGhhdCBtb21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRv IGJlIGluc2VydGVkIGludG8KKyAqIGF1eGlsaWFyeSBpbmRleC4KKyAqCisgKiBXZSBub3cgYnVp bGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQogICogaW5kZXhfYnVpbGQoKSwgd2hpbGUgaG9sZGlu ZyBhIHdlYWsgbG9jayB0aGF0IGFsbG93cyBjb25jdXJyZW50CiAgKiBpbnNlcnQvdXBkYXRlL2Rl bGV0ZS4gIEFsc28sIHdlIGluZGV4IG9ubHkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkCiAgKiBhcyBv ZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKSwgd2hl cmVhcyBhIG5vcm1hbApAQCAtMzMwMywxNCArMzQ3NSwxNyBAQCBJbmRleENoZWNrRXhjbHVzaW9u KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBk dWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJz aW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhl bSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAotICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCisgKiBkb2VzIG5vdCBj b250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBp bmRleAorICogKGJ1dCB0aGVzZSB0dXBsZXMgY29udGFpbmVkIGluIGF1eGlsaWFyeSBpbmRleCku CiAgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwg bm90ICJpbmRpc3ZhbGlkIikgYW5kCi0gKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBh bmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAorICogY29tbWl0IHRoZSB0 aGlyZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBmb3VydGguICBBZ2FpbiB3ZSB3YWl0IGZvciBh bGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRh YmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHkt c3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAotICogaW5zZXJ0IHRo ZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25h cHNob3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxpZGF0ZV9pbmRleCgpLiAgQW55IHR1cGxl cyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGlu dG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCisgKiBh dXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRl ZC4KKyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVw bGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5v dCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFueSB0dXBs ZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRo ZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVz IGNvbW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMxOCwxMiArMzQ5MywxNCBAQCBJbmRleENoZWNr RXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2FyZSBhYm91 dCB0aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFsaWRhdGVf aW5kZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJlbnRseSBp biB0aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0 b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxrZGVsZXRl IGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAqIGV2ZXIg c2F5ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxhaW4gaW5k ZXhzY2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWluZGV4IGlu ZGV4c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBzY2FuIHRo ZSB0YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAotICogdG8g c2VlIHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMgd2Ugd2ls bCBlbnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVy ZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1eGlsaWFy eSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0Cisg KiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXgg YXJlIG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1 cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVyZW5jZSBz bmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRl IGluIHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFz dC4KICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdl IG1pZ2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRlYWQgb3Ig aXMgaW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzNDEsMjIgKzM1MTgs MjYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBub3Qg aW5kZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNvbW1pdC4g IFN1YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBx dWVyaWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1dGUtZm9y Y2Ugc3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBzdG9yaW5n IG5ldyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBzCi0gKiBt YWtpbmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBIb3dldmVy IHRoYXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFsc28sIHNv bWUgYWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVy Zm9ybWVkLgogICovCiB2b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpCit2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5k ZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVJlbGF0aW9uCWhl YXBSZWxhdGlvbiwKLQkJCQlpbmRleFJlbGF0aW9uOworCQkJCWluZGV4UmVsYXRpb24sCisJCQkJ YXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87Ci0JSW5kZXhWYWN1dW1J bmZvIGl2aW5mbzsKLQlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGU7CisJSW5kZXhWYWN1dW1JbmZv IGl2aW5mbywgYXV4aXZpbmZvOworCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4U3RhdGU7 CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlz YXZlX25lc3RsZXZlbDsKKwkvKiBVc2UgODAlIG9mIG1haW50ZW5hbmNlX3dvcmtfbWVtIHRvIHRh cmdldCBpbmRleCBzb3J0aW5nIGFuZAorCSAqIDEwJSByZXN0IGZvciBhdXhpbGlhcnkuCisJICoK KwkgKiBSZXN0IDEwJSB3aWxsIGJlIHVzZWQgZm9yIHR1cGxlc3RvcmUgbGF0ZXIuICovCisJaW50 NjQJCW1haW5fd29ya19tZW1fcGFydCA9IChpbnQ2NCkgbWFpbnRlbmFuY2Vfd29ya19tZW0gKiA4 IC8gMTA7CisJaW50CQkJYXV4X3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21lbSAv IDEwOwogCiAJewogCQljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTMzODksNiAr MzU3MCw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVsYXRpb24g PSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKIAkgKiBG ZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGluayB0aGlz IHNob3VsZCBiZQpAQCAtMzQxMywxNSArMzU5NSwzMCBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKIAlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCisJLyoKKwkgKiBDb3B5IGFs bCBpbmZvIHRvIGF1eGlsaWFyeSBpbmZvLCBjaGFuZ2luZyBvbmx5IHJlbGF0aW9uLgorCSAqLwor CWF1eGl2aW5mbyA9IGl2aW5mbzsKKwlhdXhpdmluZm8uaW5kZXggPSBhdXhJbmRleFJlbGF0aW9u OworCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJh dGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKIAkgKiBpdGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4g YmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAogCSAqIGlzIGEg cGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGludDggaXMK IAkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgogCSAqLworCWF1eFN0YXRlLnR1 cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9y LAorCQkJCQkJCQkJCSAgIEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCSAgIGF1eF93b3Jr X21lbV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKKwlhdXhTdGF0 ZS5odHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CisK Kwkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKKwkJCQkJCQkgdmFs aWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisKIAlzdGF0ZS50dXBsZXNvcnQgPSB0 dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJCQkJCQkJ CQkJSW52YWxpZE9pZCwgZmFsc2UsCi0JCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLAor CQkJCQkJCQkJCQkoaW50KSBtYWluX3dvcmtfbWVtX3BhcnQsCiAJCQkJCQkJCQkJCU5VTEwsIFRV UExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0gc3RhdGUudHVwc19p bnNlcnRlZCA9IDA7CiAKQEAgLTM0NDQsMjcgKzM2NDEsMzAgQEAgdmFsaWRhdGVfaW5kZXgoT2lk IGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsK IAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CisJdHVwbGVzb3J0 X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CiAKIAkvKgotCSAqIE5vdyBzY2FuIHRo ZSBoZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdlIGJvdGgg aW5kZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRF X1RBQkxFU0NBTik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVf SURYTUVSR0UpOwogCXRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAogCQkJ CQkJCSAgaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkgIGluZGV4SW5mbywKIAkJCQkJCQkgIHNuYXBz aG90LAotCQkJCQkJCSAgJnN0YXRlKTsKKwkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkgICZhdXhT dGF0ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAqLwotCXR1cGxlc29ydF9l bmQoc3RhdGUudHVwbGVzb3J0KTsKKwkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJsZV9pbmRl eF92YWxpZGF0ZV9zY2FuICovCisJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxMICYmIGF1 eFN0YXRlLnR1cGxlc29ydCA9PSBOVUxMKTsKIAogCS8qIE1ha2Ugc3VyZSB0byByZWxlYXNlIHJl c291cmNlcyBjYWNoZWQgaW4gaW5kZXhJbmZvIChpZiBuZWVkZWQpLiAqLwogCWluZGV4X2luc2Vy dF9jbGVhbnVwKGluZGV4UmVsYXRpb24sIGluZGV4SW5mbyk7CiAKIAllbG9nKERFQlVHMiwKLQkJ ICJ2YWxpZGF0ZV9pbmRleCBmb3VuZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxl czsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCi0JCSBzdGF0ZS5odHVwcywgc3RhdGUu aXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOworCQkgInZhbGlkYXRlX2luZGV4IGZldGNoZWQg JS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IgorCQkJCQkJIiAlLjBmIGF1eCBp bmRleCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAorCQkgc3RhdGUuaHR1 cHMsIHN0YXRlLml0dXBzLCBhdXhTdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CiAK IAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9u cyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMzQ3Myw2ICsz NjczLDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90 IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2Vj X2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlpbmRleF9j bG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRp b24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwogfQpAQCAt MzUzMyw2ICszNzM0LDExIEBAIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5k ZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFzc2VydCghaW5kZXhGb3JtLT5pbmRpc3Zh bGlkKTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2Fz ZSBJTkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyogQ2xlYXIgaW5kaXNyZWFkeSBkdXJpbmcg YSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVlbmNlICovCisJCQlBc3NlcnQoIWluZGV4 Rm9ybS0+aW5kaXN2YWxpZCk7CisJCQlpbmRleEZvcm0tPmluZGlzcmVhZHkgPSBmYWxzZTsKKwkJ CWJyZWFrOwogCQljYXNlIElOREVYX0RST1BfQ0xFQVJfVkFMSUQ6CiAKIAkJCS8qCkBAIC0zODA0 LDYgKzQwMTAsMTMgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IGluZGV4SWQsCiAJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzID0gTlVMTDsKIAl9CiAK KwkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLwor CWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKIAkvKiBTdXBwcmVzcyB1c2Ugb2YgdGhlIHRhcmdl dCBpbmRleCB3aGlsZSByZWJ1aWxkaW5nIGl0ICovCiAJU2V0UmVpbmRleFByb2Nlc3NpbmcoaGVh cElkLCBpbmRleElkKTsKIApAQCAtNDA0Niw2ICs0MjU5LDcgQEAgcmVpbmRleF9yZWxhdGlvbihj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJewogCQlPaWQJ CQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNl SWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRf cmVsX3JlbGFtKGluZGV4T2lkKTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBpbnZhbGlkIGluZGV4 ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00MDcxLDYgKzQyODUs MTggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlk LCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChpbmRleEFtID09IFNUSVJf QU1fT0lEKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBv ZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUo aW5kZXhOYW1lc3BhY2VJZCksCisJCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4T2lkKSkpKTsKKwkJ CWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVS ZWluZGV4UGVuZGluZyhpbmRleE9pZCk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJlaW5kZXhf aW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9DSEVDS19DT05TVFJB SU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCAxNWVmYjAyYmFkYi4uZWRkNjFjMjk0YTYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyODgsMTYgKzEyODgsMTcgQEAgQ1JFQVRFIFZJ RVcgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXggQVMKICAgICAgICAgICAgICAgICAgICAg ICBFTkQgQVMgY29tbWFuZCwKICAgICAgICAgQ0FTRSBTLnBhcmFtMTAgV0hFTiAwIFRIRU4gJ2lu aXRpYWxpemluZycKICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcg Zm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxkJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIg VEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMiBU SEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnCisgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENPQUxFU0NFKCgnOiAnIHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3Nf cGhhc2VuYW1lKFMucGFyYW05OjpvaWQsIFMucGFyYW0xMSkpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVO ICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJwotICAgICAgICAgICAgICAg ICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnCi0g ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0 aW5nIHR1cGxlcycKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcg VEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKLSAgICAgICAgICAgICAgICAgICAgICAg V0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIGRyb3BwaW5nJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGlu ZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKKyAgICAgICAgICAgICAgICAgICAgICAg V0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4JworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBs ZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBtZXJnaW5nIGluZGV4ZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3 YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkg VEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRy b3BwaW5nJwogICAgICAgICAgICAgICAgICAgICAgICBFTkQgYXMgcGhhc2UsCiAgICAgICAgIFMu cGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCiAgICAgICAgIFMucGFyYW01IEFTIGxvY2tlcnNfZG9u ZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRhOGZjODlhZC4uMGVlMmZkNWU3ZGUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMyNSw3ICszMjUsOCBAQCBjcmVhdGVfdG9hc3RfdGFi bGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCQkJCSBC VFJFRV9BTV9PSUQsCiAJCQkJIHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJCSBjb2xs YXRpb25JZHMsIG9wY2xhc3NJZHMsIE5VTEwsIGNvbG9wdGlvbnMsIE5VTEwsIChEYXR1bSkgMCwK LQkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUsIHRydWUsIE5VTEwpOworCQkJ CSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1ZSwgTlVMTCwKKwkJCQkgdG9h c3RfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCXRhYmxlX2Nsb3NlKHRvYXN0X3Jl bCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBiYjAxNTVmZGMyNC4u ODA4YmUzY2Y4M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xODIsNiArMTgyLDcg QEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgYm9vbCBpc1dpdGhvdXRP dmVybGFwcykKIHsKIAlib29sCQlpc2NvbnN0cmFpbnQ7CisJYm9vbAkJaXNhdXhpbGlhcnk7CiAJ T2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CiAJT2lkCQkgICAqb3Bj bGFzc0lkczsKQEAgLTIzMiw2ICsyMzMsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xk SWQsCiAKIAlhbWNhbm9yZGVyID0gYW1Sb3V0aW5lLT5hbWNhbm9yZGVyOwogCWFtc3VtbWFyaXpp bmcgPSBhbVJvdXRpbmUtPmFtc3VtbWFyaXppbmc7CisJaXNhdXhpbGlhcnkgPSBhY2Nlc3NNZXRo b2RJZCA9PSBTVElSX0FNX09JRDsKIAogCS8qCiAJICogQ29tcHV0ZSB0aGUgb3BlcmF0b3IgY2xh c3NlcywgY29sbGF0aW9ucywgYW5kIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCkBAIC0yNDMsNyAr MjQ1LDggQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCSAqLwogCWluZGV4SW5m byA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVzLCBudW1iZXJPZkF0dHJpYnV0ZXMs CiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwKLQkJCQkJ CQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywgaXNXaXRob3V0T3ZlcmxhcHMpOworCQkJ CQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLAorCQkJCQkJCSAgaXNXaXRob3V0T3Zl cmxhcHMsIGlzYXV4aWxpYXJ5KTsKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVy T2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJP ZkF0dHJpYnV0ZXMpOwogCW9wY2xhc3NJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0 dHJpYnV0ZXMpOwpAQCAtNTUzLDYgKzU1Niw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog ewogCWJvb2wJCWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5kZXhSZWxhdGlvbk5hbWU7CisJY2hh cgkgICAqYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmFjY2Vzc01ldGhv ZE5hbWU7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CkBAIC01 NjIsNiArNTY2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJT2lkCQkJbmFtZXNwYWNl SWQ7CiAJT2lkCQkJdGFibGVzcGFjZUlkOwogCU9pZAkJCWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJ bnZhbGlkT2lkOworCU9pZAkJCWF1eEluZGV4UmVsYXRpb25JZCA9IEludmFsaWRPaWQ7CiAJTGlz dAkgICAqaW5kZXhDb2xOYW1lczsKIAlMaXN0CSAgICphbGxJbmRleFBhcmFtczsKIAlSZWxhdGlv bglyZWw7CkBAIC01ODMsNiArNTg4LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJaW50 CQkJbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzOwogCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCU9i amVjdEFkZHJlc3MgYWRkcmVzczsKKwlPYmplY3RBZGRyZXNzIGF1eEFkZHJlc3M7CiAJTG9ja1Jl bElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQloZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9k ZTsKQEAgLTgzMyw2ICs4MzksMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJ CQkJCXN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAogCQkJCQkJCQkJCQlzdG10LT5wcmltYXJ5LAogCQkJ CQkJCQkJCQlzdG10LT5pc2NvbnN0cmFpbnQpOworCS8qCisJICogU2VsZWN0IG5hbWUgZm9yIGF1 eGlsaWFyeSBpbmRleAorCSAqLworCWlmIChjb25jdXJyZW50KQorCQlhdXhJbmRleFJlbGF0aW9u TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShpbmRleFJlbGF0aW9uTmFtZSwKKwkJCQkJCQkJCQkJ CSAgTlVMTCwKKwkJCQkJCQkJCQkJCSAgImNjYXV4IiwKKwkJCQkJCQkJCQkJCSAgbmFtZXNwYWNl SWQsCisJCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAogCS8qCiAJICogbG9vayB1cCB0aGUgYWNjZXNz IG1ldGhvZCwgdmVyaWZ5IGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3RlZCBmZWF0dXJlcwpAQCAt OTI4LDcgKzk0Myw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCSAgIWNvbmN1 cnJlbnQsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1hcml6aW5nLAot CQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpOworCQkJCQkJCSAgc3RtdC0+aXN3aXRo b3V0b3ZlcmxhcHMsCisJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5 KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXko T2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMTI1MSw3ICsxMjY3LDggQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSBjb2xvcHRpb25zLCBOVUxMLCByZWxvcHRpb25zLAogCQkJ CQkgZmxhZ3MsIGNvbnN0cl9mbGFncywKIAkJCQkJIGFsbG93U3lzdGVtVGFibGVNb2RzLCAhY2hl Y2tfcmlnaHRzLAotCQkJCQkgJmNyZWF0ZWRDb25zdHJhaW50SWQpOworCQkJCQkgJmNyZWF0ZWRD b25zdHJhaW50SWQsCisJCQkJCSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwogCiAJT2Jq ZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4UmVsYXRpb25J ZCk7CiAKQEAgLTE1OTMsNiArMTYxMCwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJ cmV0dXJuIGFkZHJlc3M7CiAJfQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgLSBjcmVhdGUgYXV4aWxpYXJ5IGluZGV4IHJlY29yZC4KKwkgKi8KKwlpZiAoY29uY3VycmVu dCkKKwl7CisJCWF1eEluZGV4UmVsYXRpb25JZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVf YXV4KHJlbCwgaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJCQl0YWJsZXNwYWNlSWQsIGF1eElu ZGV4UmVsYXRpb25OYW1lKTsKKwkJT2JqZWN0QWRkcmVzc1NldChhdXhBZGRyZXNzLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJfQorCiAJQXRFT1hhY3RfR1VDKGZh bHNlLCByb290X3NhdmVfbmVzdGxldmVsKTsKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHJvb3Rf c2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTE2MjEsMTEgKzE2NDgs MTEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBGb3IgYSBjb25jdXJyZW50 IGJ1aWxkLCBpdCdzIGltcG9ydGFudCB0byBtYWtlIHRoZSBjYXRhbG9nIGVudHJpZXMKIAkgKiB2 aXNpYmxlIHRvIG90aGVyIHRyYW5zYWN0aW9ucyBiZWZvcmUgd2Ugc3RhcnQgdG8gYnVpbGQgdGhl IGluZGV4LiBUaGF0Ci0JICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRp YmxlIEhPVCB1cGRhdGVzLiAgVGhlIG5ldyBpbmRleAotCSAqIHdpbGwgYmUgbWFya2VkIG5vdCBp bmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwgc28gdGhhdCBubyBvbmUgZWxzZQotCSAqIHRy aWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMuCisJICog d2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1cGRhdGVzLiBO ZXcgaW5kZXhlcworCSAqIChtYWluIGFuZCBhdXhpbGlhcnkpIHdpbGwgYmUgbWFya2VkIG5vdCBp bmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwKKwkgKiBzbyB0aGF0IG5vIG9uZSBlbHNlIHRy aWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMuCiAJICoK LQkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBp bmRleCBiZWNvbWVzCisJICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24g c28gdGhhdCB0aGUgaW5kZXhlcyBiZWNvbWVzCiAJICogdmlzaWJsZTsgdGhlbiBzdGFydCBhbm90 aGVyLiAgTm90ZSB0aGF0IGFsbCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHdlIGp1c3QKIAkgKiBidWls dCBhcmUgbG9zdCBpbiB0aGUgY29tbWl0LiAgVGhlIG9ubHkgZGF0YSB3ZSBrZWVwIHBhc3QgaGVy ZSBhcmUgdGhlCiAJICogcmVsYXRpb24gSURzLgpAQCAtMTYzNSw3ICsxNjYyLDcgQEAgRGVmaW5l SW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2Fubm90IGJsb2NrLCBldmVuIGlmIHNvbWVvbmUgZWxz ZSBpcyB3YWl0aW5nIGZvciBhY2Nlc3MsIGJlY2F1c2Ugd2UKIAkgKiBhbHJlYWR5IGhhdmUgdGhl IHNhbWUgbG9jayB3aXRoaW4gb3VyIHRyYW5zYWN0aW9uLgogCSAqCi0JICogTm90ZTogd2UgZG9u J3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleCwKKwkg KiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxvY2sgb24g dGhlIGluZGV4ZXMsCiAJICogYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3BlcmF0aW9ucyB0aGF0IGNv dWxkIGNoYW5nZSBpdHMgc3RhdGUgd2hpbGUgd2UKIAkgKiBob2xkIGxvY2sgb24gdGhlIHBhcmVu dCB0YWJsZS4gIFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICovCkBAIC0xNjc0 LDcgKzE3MDEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB3aXRoIHRoZSBvbGQg bGlzdCBvZiBpbmRleGVzLiAgVXNlIFNoYXJlTG9jayB0byBjb25zaWRlciBydW5uaW5nCiAJICog dHJhbnNhY3Rpb25zIHRoYXQgaG9sZCBsb2NrcyB0aGF0IHBlcm1pdCB3cml0aW5nIHRvIHRoZSB0 YWJsZS4gIE5vdGUgd2UKIAkgKiBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCB4YWN0cyB0aGF0 IG9wZW4gdGhlIHRhYmxlIGZvciB3cml0aW5nIGFmdGVyCi0JICogdGhpcyBwb2ludDsgdGhleSB3 aWxsIHNlZSB0aGUgbmV3IGluZGV4IHdoZW4gdGhleSBvcGVuIGl0LgorCSAqIHRoaXMgcG9pbnQ7 IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleGVzIHdoZW4gdGhleSBvcGVuIGl0LgogCSAqCiAJ ICogTm90ZTogdGhlIHJlYXNvbiB3ZSB1c2UgYWN0dWFsIGxvY2sgYWNxdWlzaXRpb24gaGVyZSwg cmF0aGVyIHRoYW4ganVzdAogCSAqIGNoZWNraW5nIHRoZSBQcm9jQXJyYXkgYW5kIHNsZWVwaW5n LCBpcyB0aGF0IGRlYWRsb2NrIGlzIHBvc3NpYmxlIGlmCkBAIC0xNjg2LDE0ICsxNzEzLDQ0IEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVudCB3ZSBh cmUgc3VyZSB0aGF0IHRoZXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUKLQkgKiB0YWJs ZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXggaW4gdGhlaXIg bGlzdCBvZgorCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0aGlzIG5l dyBpbmRleGVzIGluIHRoZWlyIGxpc3Qgb2YKIAkgKiBpbmRleGVzLiAgV2UgaGF2ZSB3YWl0ZWQg b3V0IGFsbCB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIGFuZCBhbnkgbmV3Ci0JICogdHJhbnNh Y3Rpb24gd2lsbCBoYXZlIHRoZSBuZXcgaW5kZXggaW4gaXRzIGxpc3QsIGJ1dCB0aGUgaW5kZXgg aXMgc3RpbGwKLQkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuICBUaGUgaW5k ZXggaXMgY29uc3VsdGVkIHdoaWxlCisJICogdHJhbnNhY3Rpb24gd2lsbCBoYXZlIGJvdGggbmV3 IGluZGV4ZXMgaW4gaXRzIGxpc3QsIGJ1dCBpbmRleGVzIGFyZSBzdGlsbAorCSAqIG1hcmtlZCBh cyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGluZGV4ZXMgYXJlIGNvbnN1bHRlZCB3aGls ZQogCSAqIGRlY2lkaW5nIEhPVC1zYWZldHkgdGhvdWdoLiAgVGhpcyBhcnJhbmdlbWVudCBlbnN1 cmVzIHRoYXQgbm8gbmV3IEhPVAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUg bmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVy ZW50IGluZGV4IGtleXMuCiAJICoKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlhcnkgaW5k ZXguIEluZGV4IHdpbGwgYmUgY3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFjdHVhbCBo ZWFwIHNjYW4sIGJ1dCBtYXJrZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdvYWwgb2YK KwkgKiB0aGF0IGluZGV4IGlzIGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWluIGluZGV4 IGlzIGFjdHVhbGx5IGJ1aWx0LgorCSAqLworCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNl IGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0 aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMg Ki8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJ CQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJLyoKKwkgKiBOb3cgd2UgbmVl ZCB0byBlbnN1cmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3aXRoIHRoZSB3aXRoIGF1eGlsaWFyeSBp bmRleAorCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8KKwlXYWl0 Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVlKTsKKworCS8qCisJICogQXQg dGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgd2hhdCBhbGwgbmV3IHR1cGxlcyBpbiB0YWJsZSBhcmUg aW5zZXJ0ZWQgaW50bworCSAqIGF1eGlsaWFyeSBpbmRleC4gTm93IGl0IGlzIHRpbWUgdG8gYnVp bGQgdGhlIHRhcmdldCBpbmRleCBpdHNlbGYuCisJICoKIAkgKiBXZSBub3cgdGFrZSBhIG5ldyBz bmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQKIAkgKiBh cmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9U IHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhl IGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCkBAIC0xNzI4LDkgKzE3ODUsMjggQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdGhlIGluZGV4IG1hcmtlZCBhcyByZWFkLW9ubHkg Zm9yIHVwZGF0ZXMuCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdhaXRG b3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOwogCisJLyoKKwkgKiBVcGRh dGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJl IHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCS8qCisJICogTm93IHRhcmdldCBpbmRleCBp cyBtYXJrZWQgYXMgInJlYWR5IiBmb3IgYWxsIHRyYW5zYWN0aW9ucy4gU28sIGF1eGlsaWFyeQor CSAqIGluZGV4IGlzIG5vdCBtb3JlIG5lZWRlZC4gU28sIHN0YXJ0IHJlbW92aW5nIHByb2Nlc3Mg YnkgcmV2ZXJ0aW5nICJyZWFkeSIKKwkgKiBmbGFnLgorCSAqLworCWluZGV4X3NldF9zdGF0ZV9m bGFncyhhdXhJbmRleFJlbGF0aW9uSWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOworCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8g aWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0 X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTm93IHRha2UgdGhlICJyZWZlcmVu Y2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKIAkgKiB0 byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJl IHNuYXBzaG90cyBpbgpAQCAtMTc0OCwyNCArMTgyNCwxNCBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkgKi8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKIAlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJLyoKLQkgKiBT Y2FuIHRoZSBpbmRleCBhbmQgdGhlIGhlYXAsIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRy aWVzLgotCSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgc25h cHNob3QpOwotCi0JLyoKLQkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0 IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCi0JICogc25hcHNob3QgaG9sZGVycywg ZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KLQkgKiBk b2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBz aG90IGFzIG9uZQotCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUg c25hcHNob3QncyB4bWluIHRvIHVzZSBhcwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZp cnR1YWxYSURzKCkuCisJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBp bmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCiAJICovCisJdmFsaWRh dGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQsIHNu YXBzaG90KTsKIAlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKIAogCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQogCS8qCiAJICogVGhlIHNu YXBzaG90IHN1YnN5c3RlbSBjb3VsZCBzdGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25hcHNob3Rz IHRoYXQKIAkgKiBhcmUgaG9sZGluZyBiYWNrIG91ciBwcm9jZXNzJ3MgYWR2ZXJ0aXNlZCB4bWlu OyBpbiBwYXJ0aWN1bGFyLCBpZgpAQCAtMTc5Miw3ICsxODU4LDcgQEAgRGVmaW5lSW5kZXgoT2lk IHRhYmxlSWQsCiAJICovCiAJSU5KRUNUSU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3Nl dF92YWxpZCIpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJ CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlXYWl0Rm9yT2xkZXJT bmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCS8qCkBAIC0xODE3LDYgKzE4ODMsNTMgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdG8gcmVwbGFuOyBzbyByZWxjYWNoZSBmbHVz aCBvbiB0aGUgaW5kZXggaXRzZWxmIHdhcyBzdWZmaWNpZW50LikKIAkgKi8KIAlDYWNoZUludmFs aWRhdGVSZWxjYWNoZUJ5UmVsaWQoaGVhcHJlbGlkLnJlbElkKTsKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwor CWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOworCS8qIE5vdyB3YWl0IGZvciBhbGwg dHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9uLXJlYWR5IGZvciBpbnNlcnRzIiAq LworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVl KTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1Qg dGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJ ICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJLyog Tm93IGl0IGlzIHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZCAqLworCWluZGV4 X2NvbmN1cnJlbnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCVBv cEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxk cyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQor CQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzYpOworCS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gaWdu b3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFw bG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBEcm9w IGF1eGlsaWFyeSBpbmRleC4KKwkgKgorCSAqIFVzZSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJF TlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRoZQorCSAqIHJpZ2h0IGxvY2sgbGV2 ZWwuCisJICovCisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRyZXNzLCBEUk9QX1JFU1RSSUNULAor CQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyB8IFBFUkZPUk1fREVMRVRJ T05fSU5URVJOQUwpOwogCiAJLyoKIAkgKiBMYXN0IHRoaW5nIHRvIGRvIGlzIHJlbGVhc2UgdGhl IHNlc3Npb24tbGV2ZWwgbG9jayBvbiB0aGUgcGFyZW50IHRhYmxlLgpAQCAtMzUzNyw2ICszNjUw LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBlZGVmIHN0cnVjdCBSZWluZGV4SW5k ZXhJbmZvCiAJewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJCQlhdXhJbmRleElkOwogCQlPaWQJ CQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9yIHNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zNjQyLDggKzM3NTYsMTUgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMpOwogCQkJCQlSZWxh dGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxsT2lkLAogCQkJCQkJCQkJCQkJCQkg ICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9 IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJaWYgKCFpbmRleFJl bGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKKworCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9B dXhpbGlhcnkpCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0 X3JlbF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQp KSkpOworCQkJCQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQp CiAJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyBy ZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwKQEAgLTM2OTUsOCArMzgxNiwxNSBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJzdF9v aWQobGMyKTsKIAkJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGNlbGxP aWQsCiAJCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQkJ SW5kZXhJbmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5kZXhJbmZvKGluZGV4UmVsYXRpb24p OwogCi0JCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQorCQkJ CQkJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJCQkJCWVyZXBvcnQoV0FSTklORywK KwkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNc IiIsCisJCQkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxs T2lkKSksCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxsT2lkKSkpKTsKKwkJCQkJCWVsc2Ug aWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCQllcmVwb3J0 KFdBUk5JTkcsCiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52 YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzc1Nyw2ICszODg1LDEzIEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAogCQkJCQkJCSBlcnJtc2coImNhbm5vdCByZWluZGV4IGludmFsaWQgaW5kZXggb24gVE9B U1QgdGFibGUiKSkpOwogCisJCQkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5vdCBhbGxvd2Vk IHRvIGJlIHJlYnVpbHQgKi8KKwkJCQlpZiAoZ2V0X3JlbF9yZWxhbShyZWxhdGlvbk9pZCkgPT0g U1RJUl9BTV9PSUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJyZWluZGV4IG9mIGF1eGls aWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShy ZWxhdGlvbk9pZCkpKSk7CisKIAkJCQkvKgogCQkJCSAqIENoZWNrIGlmIHBhcmVudCByZWxhdGlv biBjYW4gYmUgbG9ja2VkIGFuZCBpZiBpdCBleGlzdHMsCiAJCQkJICogdGhpcyBuZWVkcyB0byBi ZSBkb25lIGF0IHRoaXMgc3RhZ2UgYXMgdGhlIGxpc3Qgb2YgaW5kZXhlcwpAQCAtMzg2MCwxNSAr Mzk5NSwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCWZvcmVhY2gobGMsIGluZGV4SWRz KQogCXsKIAkJY2hhcgkgICAqY29uY3VycmVudE5hbWU7CisJCWNoYXIJICAgKmF1eENvbmN1cnJl bnROYW1lOwogCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOwogCQlSZWluZGV4 SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4SWQ7CisJCU9pZAkJCWF1eEluZGV4 SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlvbgloZWFwUmVsOwogCQlPaWQJCQlz YXZlX3VzZXJpZDsKIAkJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAkJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOworCQlSZWxhdGlvbglhdXhJbmRleFJlbDsK IAkJTG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0YWJsZXNwYWNlaWQ7CiAKQEAgLTM5 MTksNiArNDA1NywxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCQkJCQkiY2Nu ZXciLAogCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmlu ZHJlbGlkKSwKIAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhDb25jdXJyZW50TmFtZSA9IENob29z ZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRleElkKSwKKwkJCQkJCQkJCQkJTlVM TCwKKwkJCQkJCQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJCQkJCWZhbHNlKTsKIAogCQkvKiBD aG9vc2UgdGhlIG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9mIHRvYXN0IHRhYmxlcyBhcmUgbm90 IG1vdmVkICovCiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkgJiYKQEAg LTM5MzIsMTIgKzQwNzUsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJCQkJ CQlpZHgtPmluZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVzcGFjZWlkLAogCQkJCQkJCQkJCQkJ CWNvbmN1cnJlbnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVh dGVfYXV4KGhlYXBSZWwsCisJCQkJCQkJCQkJCQkgICBuZXdJbmRleElkLAorCQkJCQkJCQkJCQkJ ICAgdGFibGVzcGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4Q29uY3VycmVudE5hbWUpOwogCiAJ CS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3IGluZGV4LCBhIHNlc3Np b24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4KIAkJICovCiAJCW5ld0lu ZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OworCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNs dXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9JRHMgYW5kIGxvY2tz IGluIHByaXZhdGUgY29udGV4dApAQCAtMzk0Niw2ICs0MDk0LDcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwog CQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOworCQluZXdpZHgtPmF1eEluZGV4SWQgPSBh dXhJbmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJ ZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwpAQCAtMzk2NCwx MCArNDExMywxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2NrcmVsaWQgPSBwYWxs b2Nfb2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBuZXdJbmRleFJlbC0+cmRfbG9j a0luZm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tz LCBsb2NrcmVsaWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOworCQlyZWxh dGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOwogCiAJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9zZShpbmRleFJlbCwg Tm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Ns b3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5n ZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBAIC00MDQ4LDEzICs0MjAxLDYwIEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcgdGhhdCwgd2FpdCB1bnRpbCBubyBy dW5uaW5nIHRyYW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0YWJsZSBvZgogCSAqIHRoZSBpbmRl eCBvcGVuIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBTZWUgInBoYXNlIDIiIGluCiAJ ICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgorCSovCisKKwlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2Nr VGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwor CS8qCisJICogTm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgbWFyayB0aGVtIGFz ICJyZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJ eworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVk IGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMg ZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICog c2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRv IGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJ CQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBz aW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KKwkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJLyogQnVpbGQgYXV4aWxp YXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAgc2NhbiwganVz dCBhbiBlbXB0eSBpbmRleC4gKi8KKwkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+ dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKKwlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyoKKwkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0 aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKKwkgKiB0byBzZXQgdGhlIFBST0NfSU5f U0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzEpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7 CisJLyoKKwkgKiBXYWl0IHVudGlsIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhcmUgdGFrZW4gaW50 byBhY2NvdW50IGJ5IGFsbAorCSAqIHRyYW5zYWN0aW9ucy4KKwkgKi8KIAlXYWl0Rm9yTG9ja2Vy c011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwogCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCisJLyogTm93IGl0IGlzIHRpbWUgdG8gcGVyZm9ybSB0YXJnZXQgaW5kZXgg YnVpbGQuICovCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewogCQlSZWluZGV4SW5kZXhJ bmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDEwMSw2ICs0MzAxLDQxIEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFn IGhlcmUuCiAJICovCiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMp OworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IGFs bCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNlcnQiLiBTbywKKwkg KiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBpbmRl eGVzLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4 SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNp ZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2Vs ZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBh cmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2Nm bGFncygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9B U1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90 LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1Bf Q0xFQVJfUkVBRFkpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlOREVYIENPTkNVUlJF TlRMWQogCSAqCkBAIC00MTA4LDEyICs0MzQzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBwaGFzZS4gIFNlZSAicGhhc2Ug MyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCi0KLQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwotCVdhaXRGb3JMb2NrZXJzTXVs dGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleElu Zm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MTUxLDcgKzQzODAsNyBAQCBSZWluZGV4UmVs YXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9p ZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVz c192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5k ZXhJZCwgc25hcHNob3QpOworCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lk eC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7CiAKIAkJLyoKIAkJICog V2UgY2FuIG5vdyBkbyBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVl ZCB0byBzYXZlCkBAIC00MTgwLDcgKzQ0MDksNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJ CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJCVdhaXRGb3JPbGRl clNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwpAQCAtNDI3MCwxNCArNDQ5OSwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8q CiAJICogUGhhc2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogTWFyayB0aGUg b2xkIGluZGV4ZXMgYXMgZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubyBydW5uaW5n Ci0JICogdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAg U2VlIGFsc28KKwkgKiBNYXJrIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFzIGRlYWQu IEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubworCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY291 bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KIAkgKiBpbmRleF9k cm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRl eF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzUpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vz c0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCkBAIC00MzAy LDYgKzQ1MzEsMjggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAl9CiAKKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRl eEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXIt cmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkg KiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRo YXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJ ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdf aW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkg KiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQo bmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJfQorCiAJLyogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgdXBk YXRlcyB2aXNpYmxlLiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CkBAIC00MzE1LDExICs0NTY2LDExIEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK LQkgKiBEcm9wIHRoZSBvbGQgaW5kZXhlcy4KKwkgKiBEcm9wIHRoZSBvbGQgYW5kIGF1eGlsaWFy eSBpbmRleGVzLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF81KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCVdhaXRG b3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwog CiAJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC00MzM5 LDYgKzQ1OTAsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCWFkZF9leGFjdF9vYmpl Y3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKIAkJfQogCisJCWZvcmVhY2gobGMsIG5ld0lu ZGV4SWRzKQorCQl7CisJCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOworCQkJ T2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxh dGlvbklkOworCQkJb2JqZWN0Lm9iamVjdElkID0gaWR4LT5hdXhJbmRleElkOworCQkJb2JqZWN0 Lm9iamVjdFN1YklkID0gMDsKKworCQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3Qs IG9iamVjdHMpOworCQl9CisKIAkJLyoKIAkJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VS UkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCiAJCSAqIHJpZ2h0IGxvY2sg bGV2ZWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGU5N2UwOTQzZjViLi5iNTU2YmE0ODE3YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBJbmRleEluZm8gKgogbWFr ZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0 ICpleHByZXNzaW9ucywKIAkJCSAgTGlzdCAqcHJlZGljYXRlcywgYm9vbCB1bmlxdWUsIGJvb2wg bnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJICBib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwg Ym9vbCBzdW1tYXJpemluZywKLQkJCSAgYm9vbCB3aXRob3V0b3ZlcmxhcHMpCisJCQkgIGJvb2wg d2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKIHsKIAlJbmRleEluZm8gICpuID0gbWFr ZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUwLDYgKzg1MCw3IEBAIG1ha2VJbmRleEluZm8oaW50 IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMs CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlfU3VtbWFyaXppbmcgPSBz dW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CisJ bi0+aWlfQXV4aWxpYXJ5ID0gYXV4aWxpYXJ5OwogCiAJLyogc3VtbWFyaXppbmcgaW5kZXhlcyBj YW5ub3QgY29udGFpbiBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlBc3NlcnQoIXN1bW1hcml6aW5n IHx8IChudW1rZXlhdHRycyA9PSBudW1hdHRycykpOwpAQCAtODc1LDcgKzg3Niw2IEBAIG1ha2VJ bmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAq ZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0 ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtl cnMgPSAwOwotCW4tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3Nz aWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmgKaW5kZXggODcxM2UxMmNiZmIuLmJkNDY3ODU4MDFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAg LTY5NiwxMSArNjk2LDEyIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJ CQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLwotCXZvaWQJCSgqaW5kZXhf dmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKLQkJCQkJCQkJCQlSZWxhdGlvbiBp bmRleF9yZWwsCi0JCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJ CQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0 YXRlICpzdGF0ZSk7CisJdm9pZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRh YmxlX3JlbCwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCXN0 cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hv dCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJ CQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0xNzk0LDE5ICsxNzk1LDI0IEBAIHRhYmxlX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh biAtIHNlY29uZCB0YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCiAgKgogICog U2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorICoKKyAqIE5vdGU6IGl0 IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8gY2xvc2Ugc29ydHN0YXRlcyBp bgorICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICovCiBzdGF0aWMgaW5saW5lIHZv aWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogCQkJCQkJ ICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4X2lu Zm8sCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJ bmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3Rh dGUsCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eHN0YXRlKQogewotCXRh YmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCi0JCQkJ CQkJCQkJCSAgIGluZGV4X3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfaW5mbywKLQkJCQkJCQkJ CQkJICAgc25hcHNob3QsCi0JCQkJCQkJCQkJCSAgIHN0YXRlKTsKKwlyZXR1cm4gdGFibGVfcmVs LT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJ CQkgIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X2luZm8sCisJCQkJCQkJCQkJCQkJ ICBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJCQkJCQkJCQkJCSAgYXV4c3Rh dGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZGFhOGJlZjVlZS4uNDcxM2YxOGU2OGQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBlbnVtCiB7CiAJSU5E RVhfQ1JFQVRFX1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VUX1ZBTElELAorCUlOREVYX0RS T1BfQ0xFQVJfUkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJRCwKIAlJTkRFWF9EUk9QX1NF VF9ERUFELAogfSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02NSw2ICs2Niw3IEBAIGV4dGVy biB2b2lkIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9uIGhlYXBSZWwsCiAjZGVmaW5l CUlOREVYX0NSRUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkKICNkZWZpbmUJSU5ERVhfQ1JF QVRFX1BBUlRJVElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5ERVhfQ1JFQVRFX0lOVkFMSUQJ CQkJKDEgPDwgNikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWQkJCQkoMSA8PCA3KQog CiBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkg Y29uc3QgY2hhciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC04Niw3ICs4OCw4IEBAIGV4dGVybiBP aWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSBiaXRzMTYgY29u c3RyX2ZsYWdzLAogCQkJCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkJCQkg Ym9vbCBpc19pbnRlcm5hbCwKLQkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCk7CisJCQkJCQkgT2lk ICpjb25zdHJhaW50SWQsCisJCQkJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSk7CiAKICNkZWZpbmUJ SU5ERVhfQ09OU1RSX0NSRUFURV9NQVJLX0FTX1BSSU1BUlkJKDEgPDwgMCkKICNkZWZpbmUJSU5E RVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFCQkoMSA8PCAxKQpAQCAtMTAwLDYgKzEwMywxMSBA QCBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAg Y29uc3QgY2hhciAqbmV3TmFtZSk7CiAKK2V4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgT2lkIG1haW5JbmRl eElkLAorCQkJCQkJCQkJCSAgT2lkIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJCQkJICBjb25zdCBj aGFyICpuZXdOYW1lKTsKKwogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9p ZCBoZWFwUmVsYXRpb25JZCwKIAkJCQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAt MTQ1LDcgKzE1Myw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJCQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4 dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCk7CitleHRlcm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogZXh0ZXJuIHZv aWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rp b24gYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3Mu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5kZXggN2M3MzZlN2IwM2IuLjZl MTQ1NzdlZjliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKQEAgLTk0LDE0ICs5NCwxNSBAQAog CiAvKiBQaGFzZXMgb2YgQ1JFQVRFIElOREVYIChhcyBhZHZlcnRpc2VkIHZpYSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UpICovCiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlU XzEJCQkxCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTIKLSNkZWZp bmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJCTMKLSNkZWZpbmUgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNAotI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfVkFMSURBVEVfU09SVAkJNQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfVkFMSURBVEVfVEFCTEVTQ0FOCTYKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMwkJCTcKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMgkJ CTIKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxECQkJMworI2RlZmluZSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNAorI2RlZmluZSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk1CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9WQUxJREFURV9TT1JUCQk2CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9WQUxJREFURV9JRFhNRVJHRQk3CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzQJCQk4CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUJCQk5Cisj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYJCQkxMAogCiAvKgogICogU3Vi cGhhc2VzIG9mIENSRUFURSBJTkRFWCwgZm9yIGluZGV4X2J1aWxkLgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAzODUwZGRlNGFkYi4uNzZmMjVlYzY4NmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC0xODcsOCArMTg3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJQW1DYWNoZQkJ CQlwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNCiAgKgkJQ29udGV4dAkJCQltZW1vcnkg Y29udGV4dCBob2xkaW5nIHRoaXMgSW5kZXhJbmZvCiAgKgotICogaWlfQ29uY3VycmVudCwgaWlf QnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCi0gKiBh cmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFu ZCBpaV9QYXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQgb25seQorICogZHVyaW5nIGluZGV4IGJ1aWxk OyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0t LS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApp bmRleCA1NDczY2U5YTI4OC4uNDkwNDc0OGY1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC05 OSw3ICs5OSw4IEBAIGV4dGVybiBJbmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50IG51bWF0dHJz LCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhwcmVzc2lvbnMs IExpc3QgKnByZWRpY2F0ZXMsCiAJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9k aXN0aW5jdCwKIAkJCQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCi0JCQkJCQkJ CWJvb2wgc3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkJYm9vbCBz dW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMsCisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5 KTsKIAogZXh0ZXJuIE5vZGUgKm1ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlv bik7CiBleHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBp bnQgbG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CmluZGV4IDlhZGU3YjgzNWU2Li5jYTc0ODQ0YjVjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5 IChmMSk9KGIpIGFscmVhZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBj cmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIp IGlzIGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0 IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJy ZW50bHkKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJf aGVhcChmMikgV0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJf aW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMTk3LDYgKzMxOTgs NyBAQCBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIp OwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBP TiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5p cXVlIGluZGV4ICJjb25jdXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlz IGR1cGxpY2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBS ZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFp bHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQg Y2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRl eF9pbmQ1OwpAQCAtMzIwOSw4ICszMjExLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBk dXBsaWNhdGVkLgogIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAog SW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElO VkFMSUQKKyAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQK ICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFM SUQKIAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBj b25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzIzOCw2ICszMjQyLDQ0IEBA IEluZGV4ZXM6CiAgICAgImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQog CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBh dXhpbGlhcnkgaW5kZXhlcworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOwor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlz IHRyaWNrIGNyZWF0ZXMgYW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBp dAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4 X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXgg ImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitc ZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1 IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1 eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhf aW5kNl9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRl eCBhdXhpbGlhcnkgaW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitF UlJPUjogIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIg bm90IHN1cHBvcnRlZAorLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFy eSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFr ZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUg dmFsaWQuCitERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VS Uk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAg ICAgICAgICAgICAgICBeCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJ TkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlx dWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxp Y2F0ZWQuCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitS RUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lw cGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJ TlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5n IHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgi CitOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2Fu IGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAt LSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0 ZXMuICBUaGUKIC0tIGRlZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1h dGNoIHRoZSBvcmlnaW5hbAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5kZXhpbmcub3V0CmluZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0 IGluZGV4cmVsaWQ6OnJlZ2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAg fCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRf aWR4XzExICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBh cnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4 ICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3Zh bGlkX3RhYl8xMl9leHByX2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIg fCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4 cHJfaWR4ICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2 YWxpZF9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYg cm93cykKIAogZHJvcCB0YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBv ZiByZXBsaWNhIGluZGV4ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDZjZjgyOGNhOGQwLi5lZDZjMjBhNDk1YyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwNDEsMTQgKzIwNDEsMTUgQEAgcGdfc3Rh dF9wcm9ncmVzc19jcmVhdGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBh cmFtMTAKICAgICAgICAgICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAg ICAgICAgICBXSEVOIDEgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0 ZXh0Ci0gICAgICAgICAgICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBD T0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5w YXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAg ICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRl eHQKLSAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1 cGxlcyc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBz Y2FubmluZyB0YWJsZSc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZv ciBvbGQgc25hcHNob3RzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcg Zm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4g OSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAg ICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkg aW5kZXgnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6 dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNl bmFtZSgocy5wYXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAg ICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBp bmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBz b3J0aW5nIHR1cGxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxp ZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAn d2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVO ICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAg ICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6 dGV4dAogICAgICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwK ICAgICBzLnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9p bmRleC5zcWwKaW5kZXggZTIxZmY0MjY1MTkuLjJjZmYxYWMyOWJlIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElO REVYIENPTkNVUlJFTlRMWSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hl YXAoZjEpOwogSU5TRVJUIElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNo ZWNrIGlmIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVh cChmMik7CitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhw cmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikg V0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9u IGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0xMzExLDEwICsxMzEyLDEyIEBAIENS RUFURSBUQUJMRSBjb25jdXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29u Y3VyX3JlaW5kZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3Jl YXRlcyBhbiBpbnZhbGlkIGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg Y29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElO REVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRs eSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBp bmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3Jl aW5kZXhfdGFiNAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJ TkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlv dXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVU RSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTMyNiw2ICsxMzI5 LDI0IEBAIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBc ZCBjb25jdXJfcmVpbmRleF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAK Ky0tIENoZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4 X2luZGV4X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMg KDEpLCAoMSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFu ZCBhdXhpbGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3Rh YjUKKy0tIE5vdCBhbGxvd2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElO REVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0 aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxp ZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hv dWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3Rh YjU7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlO REVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2lu ZGV4X3RhYjU7CisKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9u cyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5k ZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMu MAoK --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0005-Optimize-auxiliary-index-handling.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0005-Optimize-auxiliary-index-handling.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9wh17 RnJvbSA5ZWU1NmI5NDE3ZGRkNDEyN2Q1Zjk3NWEwZDgzNWNjOTFlZmJiMGI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDUvNl0gT3B0aW1pemUgYXV4aWxpYXJ5IGluZGV4IGhhbmRs aW5nCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpTa2lwIHVubmVjZXNzYXJ5IGNv bXB1dGF0aW9ucyBmb3IgYXV4aWxpYXJ5IGluZGljZXMgYnk6Ci0gaW4gdGhlIGluZGV44oCQaW5z ZXJ0IHBhdGgsIGRldGVjdCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgYnlwYXNzIERhdHVtIHZhbHVl IGNvbXB1dGF0aW9uCi0gc2V0IGluZGV4VW5jaGFuZ2VkPWZhbHNlIGZvciBhdXhpbGlhcnkgaW5k aWNlcyB0byBhdm9pZCByZWR1bmRhbnQgY2hlY2tzCgpUaGVzZSBvcHRpbWl6YXRpb25zIHJlZHVj ZSBvdmVyaGVhZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zLgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgIHwgMTEgKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTEgKysrKysrKy0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggMDdjYTNkYmM3MWYuLjI3NzE0MzRiZTFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0yOTE1LDYg KzI5MTUsMTcgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJTGlzdENl bGwgICAqaW5kZXhwcl9pdGVtOwogCWludAkJCWk7CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXggZG9l cyBub3QgbmVlZCBhbnkgdmFsdWVzIHRvIGJlIGNvbXB1dGVkICovCisJaWYgKHVubGlrZWx5KGlu ZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8t PmlpX051bUluZGV4QXR0cnM7IGkrKykKKwkJeworCQkJdmFsdWVzW2ldID0gUG9pbnRlckdldERh dHVtKE5VTEwpOworCQkJaXNudWxsW2ldID0gdHJ1ZTsKKwkJfQorCQlyZXR1cm47CisJfQorCiAJ aWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMICYmCiAJCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnNTdGF0ZSA9PSBOSUwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCA2YjJlNDYyYjcwYi4uMGQ1ZmE0ZGQ3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC00NDAsMTEgKzQ0MCwxNCBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdvaW5n IHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKIAkJICogaW5kZXguICBJZiB3 ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50LAogCQkgKiBj b25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBzaG91bGQgYmUgcGFz c2VkLgorCQkgKgorCQkgKiBJbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleCBhbHdheXMgcGFzcyBm YWxzZSBhcyBvcHRpbWlzYXRpb24uCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAm JiBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJ CQkgZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBp bmRleFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgbGlrZWx5KCFpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSkgJiYKKwkJCQkJCQkJCWluZGV4X3VuY2hhbmdlZF9ieV91cGRh dGUocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgZXN0YXRlLAorCQkJCQkJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24pOwogCiAJCXNh dGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sIC8qIGlu ZGV4IHJlbGF0aW9uICovCi0tIAoyLjQzLjAKCg== --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9wc14 RnJvbSA0ZDNhMTcwZjI2ZTQyOWNjNzRmYzkwOWMwOTAwNTIyNjJmNTAxMjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDIvNl0gQWRkIERhdHVtIHN0b3JhZ2Ugc3VwcG9ydCB0byB0 dXBsZXN0b3JlCgogRXh0ZW5kIHR1cGxlc3RvcmUgdG8gc3RvcmUgaW5kaXZpZHVhbCBEYXR1bSB2 YWx1ZXM6Ci0gZml4ZWQtbGVuZ3RoIGRhdGF0eXBlczogc3RvcmUgcmF3IGJ5dGVzIHdpdGhvdXQg YSBsZW5ndGggaGVhZGVyCi0gdmFyaWFibGUtbGVuZ3RoIGRhdGF0eXBlczogaW5jbHVkZSBhIGxl bmd0aCBoZWFkZXIgYW5kIHBhZGRpbmcKLSBieS12YWx1ZSB0eXBlczogc3RvcmUgaW5saW5lCgpU aGlzIHN1cHBvcnQgZW5hYmxlcyB1c2FnZXMgdHVwbGVzdG9yZSBmb3Igbm9uLXR1cGxlIGRhdGEg KFRJRHMpIGluIHRoZSBuZXh0IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1 cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVk ZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDI0 NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz dG9yZS5jCmluZGV4IGM5YWVjYWI4ZDY2Li4xMmFlNzA1YzA5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoK ICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5 IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBUaGlzIG1vZHVsZSBoYW5kbGVz IHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Igc2luZ2xlCisgKiBEYXR1bSB2 YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJh dGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBhIGR1bWJlZC1kb3duIHZlcnNp b24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzIGJ1dCBj YW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZQorICogb2YgdHVwbGVzLiAg SG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0 YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0 ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLCBiZWNh dXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5l ZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcworICogdGhlIHVu ZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRoaXMgbW9kdWxlIGhhbmRsZXMg dGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3NlcyBzdWNoCi0gKiBhcyBNYXRl cmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0Yy4gIEl0IGlzIGVzc2VudGlh bGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7IGl0IGRvZXMgbm8g c29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUg YSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVjYXVzZSBubyBzb3J0IGlzIHJl cXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIHNlcXVlbmNlCi0gKiBi ZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2Vm dWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzIHdpdGhp biB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEgcXVlcnkgd2l0aG91dCBoYXZp bmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCiAgKiBBbHNv LCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGluZGVwZW5kZW50IHJlYWQgcG9p bnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2VkIHRvIGhhbmRsZSB0aGUgZGF0 YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Jl c293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUK IAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBmaWxlLCBvciBOVUxMIGlmIG5v bmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1vcnkgY29udGV4dCBmb3IgaG9s ZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVyOwkJLyogcmVzb3duZXIgZm9y IGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlwZTsJCS8qIEludmFsaWRPaWQg b3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50MTYJCWRhdHVtVHlwZUxlbjsJ LyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0dW1UeXBlQnlWYWw7IC8qIGJ5 LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVzZSBmdW5jdGlvbiBwb2ludGVy cyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cgd2hhdCBraW5kCiAJICogb2Yg dHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVzIHRoYXQgZG9uJ3QgbmVlZCB0 byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUgdHVwbGVzdG9yZV9iZWdpbl94 eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVzdG9yZS5jIGN1cnJlbnRseSBv bmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAotCSAqIHRoaXMgcGFydCBvZiB0 dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBraW5kcyBvZiBvYmplY3RzCi0J ICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQotCSAqCiAJICogRnVuY3Rpb24g dG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFsbG9jJ2Qgc3BhY2UuIChOQjog d2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlzIGVub3VnaCB0byByZWxlYXNl IHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50YXRpb24gbXVzdCBiZSAiZmxh dCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1lbQpAQCAtMTQzLDEyICsxNDcs MTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkgKiBGdW5jdGlvbiB0byByZWFk IGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVtb3J5LiAnbGVuJyBpcwotCSAq IHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQgdHVwbGUuICBDcmVhdGUgYW5k IHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0YXRlLT5hdmFpbE1l bSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNvbnN1bWVkLgorCSAqIHRoZSBh bHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBs ZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNvcHksIGFuZCBkZWNyZWFzZSBz dGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1lbW9yeSBzcGFjZSBjb25zdW1l ZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1 bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24gdG8gZ2V0IGxlbmdoIG9mIHR1 cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFyZ3VtZW50CisJICogZm9yIHJl YWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50KCpsZW50dXApKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkgKiBUaGlzIGFycmF5IGhvbGRz IHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJlIGluIHN0YXRlIElOTUVNLgog CSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0J3Mgbm90IHVzZWQuCkBAIC0x ODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogI2RlZmluZSBDT1BZVFVQKHN0 YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0dXApKQogI2RlZmluZSBXUklU RVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVm aW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFkdHVwKSAoc3RhdGUsIGxlbikp CisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRlKS0+bGVudHVwKSAoc3RhdGUs IGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3RhdGUpLT5hdmFpbE1lbSA8IDAp CiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5hdmFpbE1lbSAtPSAoYW10KSkK ICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5hdmFpbE1lbSArPSAoYW10KSkK QEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAgKgogICogTk9URVMg YWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6CiAgKgotICogV2UgcmVxdWly ZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQgdHVwbGUgdG8gYmUgdGhlIHRv dGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNsdWRpbmcgaXRzZWxmIChzbyBp dCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0b3JlZCB0dXBsZQor ICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNpZ25lZCBpbnQiIG9mIGEgc3Rv cmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10YXBlIG9mIHRoZSB0dXBsZSwg aW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHplcm8pLiBUaGUgcmVtYWluZGVy IG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90IG1hdGNoIHRoZSBpbi1tZW1v cnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICogYW55IGNvbnZlcnNpb24gbmVl ZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFkdHVwIHJvdXRpbmVzLgogICoK QEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqIHN0YXRlLT5i YWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0aW5lcyBtYXkgb21pdCB0aGUg ZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ugb2YgRGF0dW0gd2l0aCBjb25z dGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21taXR0ZWQuCisgKgogICogd3Jp dGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGggd29yZHMgYXMgd2VsbCBhcyB0 aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2FsbGVkLCB0aGUgdGFwZSBpcyBw b3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5ndGggd29yZDsgcmVhZHR1cCBt dXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdAotICogdGhlIGJhY2sgbGVu Z3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3RoIHdvcmQgKGlmIGl0IG5vdCBv bW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERhdHVtKTsKKyAqIHJlYWR0dXAg bXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBhc3QgdGhlIGJhY2sgbGVuZ3Ro IHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3JpdGUvcmVhZCByb3V0aW5lcyBj YW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRhdGEKICAqIHN0b3JlZCBpbiB0 aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBUaGV5IGFyZSBhbHNvIGV4cGVj dGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0 b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZvaWQgdHVwbGVzdG9yZV9wdXR0 dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVwbGUpOwogc3RhdGlj IHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIHR1 cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwotc3RhdGljIHVuc2ln bmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CisKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0 ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVhZHR1cF9oZWFwKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitzdGF0aWMgdW5zaWduZWQgaW50 IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKK3N0YXRp YyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVt KTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZv aWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1cGxlc3RvcmVfYmVnaW5feHh4 CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGludCBlZmxhZ3Ms IGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRlLT5hbGxvd2VkTWVtID0gbWF4 S0J5dGVzICogKGludDY0KSAxMDI0OwogCXN0YXRlLT5hdmFpbE1lbSA9IHN0YXRlLT5hbGxvd2Vk TWVtOwogCXN0YXRlLT5teWZpbGUgPSBOVUxMOworCS8qCisJICogU2V0IERhdHVtIHJlbGF0ZWQg ZGF0YSB0byBpbnZhbGlkIGJ5IGRlZmF1bHQuCisJICovCisJc3RhdGUtPmRhdHVtVHlwZSA9IElu dmFsaWRPaWQ7CisJc3RhdGUtPmRhdHVtVHlwZUxlbiA9ICAwOworCXN0YXRlLT5kYXR1bVR5cGVC eVZhbCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGUgcGFsbG9jL3BmcmVlIHBhdHRlcm4gZm9yIHR1 cGxlIG1lbW9yeSBpcyBpbiBhIEZJRk8gcGF0dGVybi4gIEEKQEAgLTM0NSw2ICszNzAsMzYgQEAg dHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNzLCBib29sIGludGVyWGFjdCwg aW50IG1heEtCeXRlcykKIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfaGVhcDsKIAlzdGF0ZS0+ d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFwOwogCXN0YXRlLT5yZWFkdHVwID0gcmVhZHR1cF9oZWFw OworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfaGVhcDsKKworCXJldHVybiBzdGF0ZTsKK30KKwor LyoKKyAqIFRoZSBzYW1lIGFzIHR1cGxlc3RvcmVfYmVnaW5faGVhcCBidXQgY3JlYXRlIHN0b3Jl IGZvciBEYXR1bSB2YWx1ZXMuCisgKi8KK1R1cGxlc3RvcmVzdGF0ZSAqCit0dXBsZXN0b3JlX2Jl Z2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsIGJvb2wgcmFuZG9tQWNjZXNzLCBib29sIGludGVyWGFj dCwgaW50IG1heEtCeXRlcykKK3sKKwlUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlOworCWludAkJCWVm bGFnczsKKworCS8qCisJICogVGhpcyBpbnRlcnByZXRhdGlvbiBvZiB0aGUgbWVhbmluZyBvZiBy YW5kb21BY2Nlc3MgaXMgY29tcGF0aWJsZSB3aXRoCisJICogdGhlIHByZS04LjMgYmVoYXZpb3Ig b2YgdHVwbGVzdG9yZXMuCisJICovCisJZWZsYWdzID0gcmFuZG9tQWNjZXNzID8KKwkJKEVYRUNf RkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19SRVdJTkQpIDoKKwkJKEVYRUNfRkxBR19SRVdJTkQp OworCisJc3RhdGUgPSB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihlZmxhZ3MsIGludGVyWGFjdCwg bWF4S0J5dGVzKTsKKwlzdGF0ZS0+ZGF0dW1UeXBlID0gZGF0dW1UeXBlOworCWdldF90eXBsZW5i eXZhbChzdGF0ZS0+ZGF0dW1UeXBlLCAmc3RhdGUtPmRhdHVtVHlwZUxlbiwgJnN0YXRlLT5kYXR1 bVR5cGVCeVZhbCk7CisKKwlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfZGF0dW07CisJc3RhdGUt PndyaXRldHVwID0gd3JpdGV0dXBfZGF0dW07CisJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2Rh dHVtOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfZGF0dW07CiAKIAlyZXR1cm4gc3RhdGU7CiB9 CkBAIC03NzYsNiArODMxLDI1IEBAIHR1cGxlc3RvcmVfcHV0dHVwbGUoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwogfQogCisvKgorICogTGlrZSB0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCBidXQgZm9yIHNpbmds ZSBEYXR1bS4KKyAqLwordm9pZAordHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBEYXR1bSBkYXR1bSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhzdGF0ZS0+Y29udGV4dCk7CisKKwkvKgorCSAqIENvcHkgdGhlIERhdHVt LiAgKE11c3QgZG8gdGhpcyBldmVuIGluIFdSSVRFRklMRSBjYXNlLiAgTm90ZSB0aGF0CisJICog Q09QWVRVUCBpbmNsdWRlcyBVU0VNRU0sIHNvIHdlIG5lZWRuJ3QgZG8gdGhhdCBoZXJlLikKKwkg Ki8KKwlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShDT1BZVFVQKHN0YXRlLCBEYXR1bUdldFBvaW50 ZXIoZGF0dW0pKSk7CisKKwl0dXBsZXN0b3JlX3B1dHR1cGxlX2NvbW1vbihzdGF0ZSwgRGF0dW1H ZXRQb2ludGVyKGRhdHVtKSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30K KwogLyoKICAqIFNpbWlsYXIgdG8gdHVwbGVzdG9yZV9wdXR0dXBsZSgpLCBidXQgd29yayBmcm9t IHZhbHVlcyArIG51bGxzIGFycmF5cy4KICAqIFRoaXMgYXZvaWRzIGFuIGV4dHJhIHR1cGxlLWNv bnN0cnVjdGlvbiBvcGVyYXRpb24uCkBAIC0xMDMwLDcgKzExMDQsNyBAQCB0dXBsZXN0b3JlX2dl dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCSpzaG91bGRf ZnJlZSA9IHRydWU7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJCQlpZiAoKHR1cGxlbiA9IGdl dGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBsZW4gPSBMRU5UVVAoc3RhdGUs IHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRVUChzdGF0ZSwgdHVwbGVuKTsK IAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzMyw3IEBAIHR1cGxlc3RvcmVfZ2V0dHVw bGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCUFzc2VydCghc3Rh dGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9Ci0JCQl0dXBsZW4gPSBnZXRs ZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCiAJ CQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0xMDkwLDcgKzExNjQsNyBAQCB0 dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwK IAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJ fQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOworCQkJCXR1cGxlbiA9IExFTlRV UChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1Miw2ICsxMjI2LDI1IEBAIHR1 cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2Fy ZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0oVHVwbGVzdG9yZXN0 YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91bGRfZnJlZSwgRGF0 dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxkX2ZyZWUgPSBmYWxzZTsKKwor CWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0YXRlLCBmb3J3YXJkLCBzaG91 bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9ZGF0dW07CisJCXJldHVybiB0 cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVzdG9yZV9hZHZhbmNlIC0gZXhw b3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhvdXQgZmV0Y2hpbmcKICAqCkBA IC0xNTU2LDI1ICsxNjQ5LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNTX0lOTUVNKTsKIH0KIAotCi0v KgotICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1zdGF0aWMgdW5zaWduZWQgaW50 Ci1nZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKLXsKLQl1bnNpZ25l ZCBpbnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXli ZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOwotCWlmIChuYnl0 ZXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4gbGVuOwotfQotCi0KIC8qCiAg KiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNhc2UKICAqCkBAIC0xNTg1LDYg KzE2NTksMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCiAg KiB0byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3RhdGljIHVuc2lnbmVkIGludAor bGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNp Z25lZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRN YXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChu Ynl0ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCiBzdGF0 aWMgdm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVw KQogewpAQCAtMTYzMSwzICsxNzE4LDk4IEBAIHJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZp bGUsICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4gdHVwbGU7CiB9CisKKy8qCisg KiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4KKyAqCisgKiBIYW5kbGVzIGJv dGggZml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZmaWNpZW50bHk6CisgKiAtIEZp eGVkLWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxlbmd0aCBwcmVmaXgKKyAqIC0g VmFyaWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4IChhbmQgc3VmZml4IGlmIGJh Y2t3YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRsZWQgaW5saW5lIHdpdGhvdXQg ZXh0cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2xlbnR1cF9kYXR1bShU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBsZW47 CisJc2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlk T2lkKTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkKKwkJcmV0dXJuIHN0YXRlLT5k YXR1bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZp bGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAwKQorCQlyZXR1 cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkICoKK2NvcHl0dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0 YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0RGF0dW0oZGF0dW0pKTsKKwll bHNlCisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCVVTRU1FTShzdGF0 ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIoZCkpKTsKKwkJcmV0dXJuIERh dHVtR2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit3cml0ZXR1cF9kYXR1bShU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRh dHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsK KwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJQnVmRmlsZVdyaXRlKHN0YXRl LT5teWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwl9CisJZWxzZQorCXsKKwkJ U2l6ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYgKHN0YXRlLT5kYXR1bVR5cGVM ZW4gPCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVv ZihzaXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50ZXJHZXREYXR1bShkYXR1bSks IHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCX0KKworCQlC dWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUpOworCisJCS8qIG5lZWQgdHJh aWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRh dHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNp emVvZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShkYXR1 bSkpOworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMgdm9pZCoKK3JlYWR0dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlBc3NlcnQo c3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5 VmFsKQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCUFzc2Vy dChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChsZW4gPT0gc3RhdGUtPmRhdHVt VHlwZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtLCBzdGF0 ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisJfQor CWVsc2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVuKTsKKwkJQnVmRmlsZVJlYWRF eGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJCS8qIG5lZWQgdHJhaWxpbmcg bGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlw ZUxlbiA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVv ZihsZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpkYXR1bXMpOworCX0KK30KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3R1cGxlc3RvcmUuaAppbmRleCA4NjViYTdiODI2NS4uMDM0MWM0N2I4NTEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy90dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoK ICAqIHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5 IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVz IHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0 ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRp YWxseQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5v IHNvcnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRl IGEgc2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyBy ZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICog YmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRo aW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2 aW5nIHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgotICogQWxz bywgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBv aW50ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBlaXRo ZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBwdXJwb3NlcyBzdWNoIGFz IE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmlsZXMsIGV0Yy4gSXQgaXMg ZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOworICogaXQg ZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0 YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJlY2F1c2Ugbm8gc29ydCBp cyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVhZGluZyB0aGUgc2VxdWVu Y2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAqIFRoaXMgaXMgcGFydGlj dWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2Vz cworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZiBhIHF1ZXJ5IHdpdGhv dXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlv bi4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlm IGl0IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4K QEAgLTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUg VHVwbGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdlIG9ubHkgbmVlZCB0byBzdG9y ZSBNaW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQotICogdG8gc3VwcG9ydCB0aGUg c2FtZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJhcmUgRGF0dW1zLgotICovCi0K IGV4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5faGVhcChib29sIHJhbmRv bUFjY2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwKIAkJCQkJCQkJCQkJICBpbnQg bWF4S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5fZGF0 dW0oT2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFuZG9tQWNjZXNzLAorCQkJCQkJ CQkJCQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQgbWF4S0J5dGVzKTsKIAogZXh0 ZXJuIHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGlu dCBlZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0 dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRlcm4gdm9pZCB0dXBsZXN0b3Jl X3B1dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSk7CiBleHRl cm4gdm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBUdXBs ZURlc2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICpp c251bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVwbGVzdG9yZV9hbGxvY19yZWFk X3BvaW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7CiAKQEAgLTcyLDYg KzczLDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJCWJvb2wgY29weSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVl LCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9hZHZhbmNlKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0gCjIuNDMuMAoK --000000000000ed40670634046306 Content-Type: application/octet-stream; name="v18-only-part-3-0006-Refresh-snapshot-periodically-during.patch_" Content-Disposition: attachment; filename="v18-only-part-3-0006-Refresh-snapshot-periodically-during.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma36e9wj18 RnJvbSA4NTUxYzg0NWVmMzc4M2Q1ZTllMmI1MTVjOWIxYmYwY2FjNDI4ZWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxMTo1MyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjE4LW9ubHktcGFydC0zIDYvNl0gUmVmcmVzaCBzbmFwc2hvdCBwZXJpb2RpY2FsbHkg ZHVyaW5nCiBpbmRleCB2YWxpZGF0aW9uCgpFbmhhbmNlcyB2YWxpZGF0aW9uIHBoYXNlIG9mIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIGJ5IHBlcmlvZGljYWxseSByZWZyZXNoaW5nIHNuYXBz aG90cyByYXRoZXIgdGhhbiB1c2luZyBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuIFRoaXMg YWRkcmVzc2VzIGlzc3VlcyB3aXRoIHhtaW4gcHJvcGFnYXRpb24gZHVyaW5nIGxvbmctcnVubmlu ZyB2YWxpZGF0aW9ucy4KClRoZSB2YWxpZGF0aW9uIG5vdyB0YWtlcyBhIGZyZXNoIHNuYXBzaG90 IGV2ZXJ5IGZldyBwYWdlcywgYWxsb3dpbmcgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBU aGlzIHJlc3RvcmVzIGZlYXR1cmUgb2YgY29tbWl0IGQ5ZDA3NjIyMmY1Yiwgd2hpY2ggd2FzIHJl dmVydGVkIGluIGNvbW1pdCBlMjhiYjg4NTE5NjkuIE5ldyBTVElSLWJhc2VkIGFwcHJvYWNoIGlz IG5vdCBkZXBlbmRzIG9uIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QgYW55bW9yZS4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgfCA3MyArKysrKysrKysrKysrKysrKysr KystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKyst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgNDMgKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwg IDcgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysr KysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgfCAgMiArLQogOCBm aWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggMjhlMmExNjA0YzQuLjYwNGJkZGE1OWZmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTQwMSwxMiArNDAxLDEyIEBAIGxpdmUgdHVw bGUuCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJl YWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNo IGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCiB0aGUgaW5kZXguICBUaGlzIHNl YXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKLWlu ZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZl cmVuY2Ugc25hcHNob3QuCitpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0 aGVtIHZpc2libGUgdG8gZnJlc2ggc25hcHNob3QuCiBBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMg aGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUg dmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBU aGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25h cHNob3Qgb2xkZXIgdGhhbgotdGhlIHNlY29uZCByZWZlcmVuY2Ugc25hcHNob3QgaXMgZmluaXNo ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKK3RoZSBsYXRlc3QgdXNlZCBzbmFwc2hv dCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwogYWxpdmUgYW55IGxv bmdlciB3aG8gY291bGQgbmVlZCB0byBzZWUgYW55IHR1cGxlcyB0aGF0IG1pZ2h0IGJlIG1pc3Np bmcKIGZyb20gdGhlIGluZGV4LCBhcyB3ZWxsIGFzIGVuc3VyaW5nIHRoYXQgbm8gb25lIGNhbiBz ZWUgYW55IGluY29uc2lzdGVudAogcm93cyBpbiBhIGJyb2tlbiBIT1QgY2hhaW4gKHRoZSBmaXJz dCBjb25kaXRpb24gaXMgc3Ryb25nZXIgdGhhbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCmluZGV4IDg4N2EyNDU1YzQwLi4xNDQxYWE5M2NmYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xOTk2LDIzICsxOTk2LDI2IEBA IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQoCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBUcmFuc2FjdGlvbklkCiBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgICBSZWxhdGlv biBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8sCi0JCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUs CiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogeworCVRyYW5zYWN0aW9u SWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJ aXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAorCVNuYXBzaG90CQlzbmFwc2hvdDsKIAlUdXBsZVRh YmxlU2xvdCAgKnNsb3Q7CiAJRVN0YXRlCQkJKmVzdGF0ZTsKIAlFeHByQ29udGV4dAkJKmVjb250 ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1fdG9f Y2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tpcCBz bmFwc2hvdCByZXNldCBhdCBzdGFydCAqLwogCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9j aGVjazsKIAlWYWxpZGF0ZUluZGV4U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKIApA QCAtMjAyMywxNCArMjAyNiwxNiBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAq LwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7 CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0 aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBi ZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECi0JICogaXMgYSBw YXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcwot CSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKIAl0dXBsZXNfZm9yX2NoZWNrID0g IHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3Jr X21lbV9wYXJ0KTsKIAorCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qCiAJ ICogc2FuaXR5IGNoZWNrcwogCSAqLwpAQCAtMjA0Niw2ICsyMDUxLDI5IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXN0YXRlLT50dXBsZXNv cnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0gTlVMTDsKIAorCS8qCisJICogTm93IHRha2UgdGhl IGZpcnN0IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUK KwkgKiB0dXBsZXMuIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuCisJICogdG8gcHJvcGFnYXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdh cmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29t ZSB0cmFuc2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFw c2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNv bW1pdHRlZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ug d2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9u cyB3aGljaAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdp bGwgZXhwZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBp bmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxs IGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJICogd2UgbWFyayB0aGUg aW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNvbiBsaW1pdFhtaW4gaXMgc3VwcG9ydGVkLgor CSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBm dW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBuZWVkIGEgc25hcHNob3QuCisJICovCisJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCVB1c2hBY3Rp dmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisKIAll c3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4 cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxh dGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMDc5LDYgKzIxMDcsNyBAQCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAogCQlpID0gMDsKIAkJd2hp bGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCkBAIC0yMTM0LDYg KzIxNjMsMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworI2RlZmluZSBWQUxJREFURV9JTkRF WF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA0MDk2CisJCWlmIChwYWdlX3JlYWRfY291bnRl ciAlIFZBTElEQVRFX0lOREVYX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApCisJCXsK KwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyogeG1pbiBz aG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJCWxpbWl0 WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWluKTsKKwkJ fQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC0yMTQzLDkg KzIxODYsMjEgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCXJlYWRfc3RyZWFtX2VuZChyZWFkX3N0cmVhbSk7CiAJdHVwbGVzdG9yZV9lbmQodHVw bGVzX2Zvcl9jaGVjayk7CiAKKwkvKgorCSAqIERyb3AgdGhlIGxhdGVzdCBzbmFwc2hvdC4gIFdl IG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xk ZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwor CSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIg c25hcHNob3QgYXMgb25lCisJICogdGhleSBtdXN0IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCk7CiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdv bmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWlu ZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDgxMTcxZjM1 NDUxLi5kNzIxZmE0NWEwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBA IC0xOTEsMTQgKzE5MSwxNiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJk cywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJRCB0 byBwZW5kaW5nIGxpc3QgaWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhhcHBl bmVkIHNpbmNlIFZBQ1VVTSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUgaXQK IAkJCSAqIG11c3QgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNlIFJF SU5ERVgKLQkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENPTkNV UlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcworCQkJ ICogdmFsaWRhdGlvbiBzY2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtlIGEg dGlnaHRlciB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIgYWNj b3JkaW5nIHRvIHRoZSBhY3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRvZXNu J3QgY3VycmVudGx5IGV4cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGlyZWx5 CiAJCQkgKiBjbGVhciB0aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMgYW55 d2F5LgogCQkJICovCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlk LCBiZHMtPm15WG1pbikpCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlYbWlu KSB8fAorCQkJCQlUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+bXlY bWluKSkKIAkJCQlzcGdBZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQogCQll bHNlCkBAIC04MDgsNyArODEwLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkvKiBGaW5pc2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlpbml0 U3BHaXN0U3RhdGUoJmJkcy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0ID0g TlVMTDsKLQliZHMtPm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRzLT5s YXN0RmlsbGVkQmxvY2sgPSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05NTgs NiArOTU5LDEwIEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxsYmFj ayA9IGNhbGxiYWNrOwogCWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOworCWlm IChpbmZvLT52YWxpZGF0ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAK IAlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCkBAIC05OTgsNiArMTAwMyw3IEBAIHNwZ3ZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz KQogCQliZHMuc3RhdHMgPSBzdGF0czsKIAkJYmRzLmNhbGxiYWNrID0gZHVtbXlfY2FsbGJhY2s7 CiAJCWJkcy5jYWxsYmFja19zdGF0ZSA9IE5VTEw7CisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVT bmFwc2hvdCgpLT54bWluOwogCiAJCXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDI3NzE0MzRiZTFiLi5lMGMxN2I3M2UxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC0zNTEyLDggKzM1 MTMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlu c2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVh ciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1v cmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVm ZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICog dG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8g dGhlIGluZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRo YXQgYXJlIHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0 aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJv cGFnYXRlIHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAg KiAoQW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2Vy dGVkIGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4g IEFueSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBi ZSBpbmRleGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAt MzUyNiw3ICszNTI4LDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRv aW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNo IHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFy Z2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNj b3JkaW5nIHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5v dGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3Qg YXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUK ICAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgog ICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0 cnkgdG8gaW5zZXJ0IGEKQEAgLTM1NDcsMTMgKzM1NDksMTQgQEAgSW5kZXhDaGVja0V4Y2x1c2lv bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogQWxzbywgc29tZSBhY3Rpb25zIHRvIGNv bmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3JtZWQuCiAgKi8KLXZv aWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJl bGF0aW9uLAogCQkJCWluZGV4UmVsYXRpb24sCiAJCQkJYXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRl eEluZm8gICppbmRleEluZm87CisJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJSW5kZXhWYWN1 dW1JbmZvIGl2aW5mbywgYXV4aXZpbmZvOwogCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4 U3RhdGU7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CkBAIC0zNjAzLDggKzM2MDYsMTIgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlv dSBtaWdodCB0aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUlu ZGV4LCBidXQgaXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1 aWx0IGluIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBz bmFwc2hvdCBmb3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBC dWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJ LyogbWFyayBidWlsZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM2NDAsNiArMzY0Nyw5IEBAIHZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCWF1eFN0 YXRlLmh0dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVkID0gMDsK IAorCS8qIHR1cGxlc29ydF9iZWdpbl9kYXR1bSBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90 ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJKHZvaWQpIGluZGV4X2J1bGtf ZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNr LCAmYXV4U3RhdGUpOwogCkBAIC0zNjQ5LDYgKzM2NTksOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQog CQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5p dHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2Rh dHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7CisKIAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNzICov CiAJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlk YXRlX2luZGV4X2NhbGxiYWNrLCAmc3RhdGUpOwpAQCAtMzY2OCwxOSArMzY4MSwyNCBAQCB2YWxp ZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBz aG90IHNuYXBzaG90KQogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHBy b2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0 KHN0YXRlLnR1cGxlc29ydCk7CisJLyogdHVwbGVzb3J0X3BlcmZvcm1zb3J0IG1heSByZXF1aXJl IGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAl0 dXBsZXNvcnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRf cGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCiAJLyoKIAkgKiBOb3cgbWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJ CSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOwotCXRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwK LQkJCQkJCQkgIGluZGV4SW5mbywKLQkJCQkJCQkgIHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRl LAotCQkJCQkJCSAgJmF1eFN0YXRlKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3Rh dGUpOwogCiAJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh biAqLwogCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhTdGF0ZS50dXBsZXNv cnQgPT0gTlVMTCk7CkBAIC0zNzAzLDYgKzM3MjEsOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWlu ZGV4X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisK KwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCXJldHVybiBs aW1pdFhtaW47CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDgyMTQzYjIz NjAzLi42ZDFiNTk2Zjg0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTU5Miw3ICs1 OTIsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlMb2NrUmVsSWQJaGVhcHJlbGlkOwog CUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBzaG90CXNu YXBzaG90OwogCU9pZAkJCXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZlX3NlY19j b250ZXh0OwogCWludAkJCXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC0xODA2LDMyICsxODA1LDEx IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBi dWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KIAlpZiAoc2FmZV9pbmRl eCkKIAkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQotCS8qCi0JICogTm93IHRha2UgdGhl ICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4 KCkKLQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0 IHN0aWxsIGJlIHNuYXBzaG90cyBpbgotCSAqIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rp b24gYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgcmVmZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRz IGFzIGNvbW1pdHRlZC4gIElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24K LQkgKiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhl bSBpbiB0aGUgaW5kZXg7IHlldAotCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhl IGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2gg dHVwbGVzIHRvIGJlIHRoZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoK LQkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0 aW9ucyB0byBleGl0IGJlZm9yZQotCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAq Ci0JICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5j dGlvbnMgaW4gaW5kZXhlcyBtYXkKLQkgKiBuZWVkIGEgc25hcHNob3QuCi0JICovCi0Jc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKIAkvKgogCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxp YXJ5IGFuZCB0YXJnZXQgaW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVz LgogCSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5k ZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0JbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisJ bGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJ bmRleFJlbGF0aW9uSWQpOwogCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBz dGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKIAkgKiBhcmUgaG9sZGluZyBi YWNrIG91ciBwcm9jZXNzJ3MgYWR2ZXJ0aXNlZCB4bWluOyBpbiBwYXJ0aWN1bGFyLCBpZgpAQCAt MTg1Myw4ICsxODMxLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUg aW5kZXggaXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJy ZW50bHkKIAkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNv bnRhaW4gdHVwbGVzIGRlbGV0ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAg d2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0 IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hv dCBkdXJpbmcgdmFsaWRhdGluZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBh bnkgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJ SU5KRUNUSU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIpOwogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLApAQCAtNDM2 OCw3ICs0MzQ2LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCVJlaW5kZXhJbmRl eEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CiAJCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwot CQlTbmFwc2hvdAlzbmFwc2hvdDsKIAogCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBA IC00MzgzLDEzICs0MzYwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lk eC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJLyoKLQkJICogVGFr ZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVf aW5kZXgoKQotCQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4KLQkJICovCi0JCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBm b3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJs ZSBpbnZvbHZlZC4KQEAgLTQ0MDEsMTYgKzQzNzEsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAot CQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4 LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoKLQkJICogV2UgY2FuIG5vdyBkbyBhd2F5 IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVlZCB0byBzYXZlCi0JCSAqIHRo ZSB4bWluIGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNuYXBzaG90cy4KLQkJICovCi0JCWxpbWl0 WG1pbiA9IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCVVucmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4KG5l d2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJCS8qCiAJCSAq IFRvIGVuc3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3QgY29tbWl0IGFuZCBzdGFydCB5ZXQgYW5v dGhlcgpAQCAtNDQyMyw3ICs0Mzg1LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyoK IAkJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlu cyBhbGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBt aWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVm ZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkgKiBqdXN0 IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFu eQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJ ICoKIAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMg dHJhbnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiZDQ2Nzg1ODAxYy4uNDc2NmVmNWJi Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjk2LDEwICs2OTYsOSBAQCB0eXBlZGVmIHN0cnVj dCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkJCSAgIFRhYmxlU2NhbkRlc2Mgc2Nhbik7CiAKIAkv KiBzZWUgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFt ZXRlcnMgKi8KLQl2b2lkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVf cmVsLAorCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0 YWJsZV9yZWwsCiAJCQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkJCQkJCQlz dHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJCQkJCQkJU25hcHNob3Qgc25hcHNo b3QsCiAJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKIAkJCQkJ CQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eF9zdGF0ZSk7CiAKQEAgLTE3OTks MTggKzE3OTgsMTYgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJs ZV9yZWwsCiAgKiBOb3RlOiBpdCBpcyByZXNwb25zaWJpbGl0eSBvZiB0aGF0IGZ1bmN0aW9uIHRv IGNsb3NlIHNvcnRzdGF0ZXMgaW4KICAqIGJvdGggYHN0YXRlYCBhbmQgYGF1eHN0YXRlYC4KICAq Lwotc3RhdGljIGlubGluZSB2b2lkCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKIHRhYmxl X2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogCQkJCQkJICBSZWxhdGlv biBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJ CQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRl ICpzdGF0ZSwKIAkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4c3RhdGUpCiB7 CiAJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nhbih0YWJs ZV9yZWwsCiAJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCiAJCQkJCQkJCQkJCQkJICBpbmRleF9p bmZvLAotCQkJCQkJCQkJCQkJCSAgc25hcHNob3QsCiAJCQkJCQkJCQkJCQkJICBzdGF0ZSwKIAkJ CQkJCQkJCQkJCQkgIGF1eHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90cmFuc2FtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCmluZGV4IDdkODJjZDJl YjU2Li4xNWUzNDVjN2ExOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCkBAIC0zNTUsNiArMzU1LDIxIEBA IE5vcm1hbFRyYW5zYWN0aW9uSWRPbGRlcihUcmFuc2FjdGlvbklkIGEsIFRyYW5zYWN0aW9uSWQg YikKIAlyZXR1cm4gYjsKIH0KIAorLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdvIElEcyAq Lworc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCitUcmFuc2FjdGlvbklkTmV3ZXIoVHJhbnNh Y3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZChhKSkKKwkJcmV0dXJuIGI7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGIpKQorCQly ZXR1cm4gYTsKKworCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhhLCBiKSkKKwkJcmV0dXJuIGE7 CisJcmV0dXJuIGI7Cit9CisKIC8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8K IHN0YXRpYyBpbmxpbmUgRnVsbFRyYW5zYWN0aW9uSWQKIEZ1bGxUcmFuc2FjdGlvbklkTmV3ZXIo RnVsbFRyYW5zYWN0aW9uSWQgYSwgRnVsbFRyYW5zYWN0aW9uSWQgYikKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApp bmRleCA1M2IyYjEzZWZjMy4uOGZlMGFjYzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTE1NCw3 ICsxNTQsNyBAQCBleHRlcm4gdm9pZCBpbmRleF9idWlsZChSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQlib29sIGlzcmVpbmRleCwKIAkJCQkJCWJvb2wgcGFyYWxsZWwpOwogCi1leHRlcm4g dm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCk7CiAKIGV4dGVybiB2 b2lkIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0 aW9uIGFjdGlvbik7CiAKLS0gCjIuNDMuMAoK --000000000000ed40670634046306--