From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 23 Jun 2021 09:34:29 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lvxP3-0007Wl-6U for lore@lore.pengutronix.de; Wed, 23 Jun 2021 09:34:29 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lvxP2-00060S-Ld; Wed, 23 Jun 2021 09:34:28 +0200 Received: from mail.thorsis.com ([92.198.35.195]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lvxO0-0005IY-IS for ptxdist@pengutronix.de; Wed, 23 Jun 2021 09:33:36 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.thorsis.com (Postfix) with ESMTP id 748D310B2 for ; Wed, 23 Jun 2021 09:33:23 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.thorsis.com Received: from mail.thorsis.com ([127.0.0.1]) by localhost (mail.thorsis.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gV_qXmRWif0H for ; Wed, 23 Jun 2021 09:33:23 +0200 (CEST) Received: by mail.thorsis.com (Postfix, from userid 109) id 4428EDF1; Wed, 23 Jun 2021 09:33:23 +0200 (CEST) Received: from adahl by ada.ifak-system.com with local (Exim 4.92) (envelope-from ) id 1lvxNl-00060w-Cf for ptxdist@pengutronix.de; Wed, 23 Jun 2021 09:33:09 +0200 From: Alexander Dahl To: ptxdist@pengutronix.de Date: Wed, 23 Jun 2021 09:33:09 +0200 Message-Id: <20210623073309.23058-6-ada@thorsis.com> In-Reply-To: <20210623073309.23058-1-ada@thorsis.com> References: <20210623073309.23058-1-ada@thorsis.com> X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-1.5 required=4.0 tests=AWL,BAYES_00, PDS_OTHER_BAD_TLD,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 Subject: [ptxdist] [PATCH v3 5/5] ppp: version bump 2.4.7 -> 2.4.9 X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false LSBpbXBvcnRlZCB0d28gcG9zdCAyLjQuOSB1cHN0cmVhbSBwYXRjaGVzCi0gaW1wb3J0ZWQgRGVi aWFuIHBhdGNoZXMgZnJvbSBwYWNrYWdlIHBwcCAoMi40LjktMSsxKQotIGFkYXB0ZWQgcHR4IHBh dGNoZXMKClNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+Ci0t LQoKTm90ZXM6CiAgICBSRkMgLT4gdjIKICAgIC0tLS0tLS0tLQogICAgLSBVc2VkICdhcHBseS1k ZWJpYW4nIHNjcmlwdCB0byByZXdvcmsgZGViaWFuIHBhdGNoIHNlcmllcwogICAgCiAgICBMaW5r OiBodHRwczovL2xvcmUucHR4ZGlzdC5vcmcvcHR4ZGlzdC8yMDIxMDYxNjExNTM1NS5HTDgzOTk0 N0BwZW5ndXRyb25peC5kZS8yLWFwcGx5LWRlYmlhbgoKIC4uLjAwMS1hYm9ydC1vbi1lcnJvcnMt aW4tc3ViZGlyLWJ1aWxkcy5wYXRjaCB8ICAgNDggLQogLi4uMDAyLXNjcmlwdHMtQXZvaWQta2ls bGluZy13cm9uZy1wcHBkLnBhdGNoIHwgICAyOSAtCiAuLi50ZW5zaW9uLXdoZW4tZGlzcGxheWlu Zy1ieXRlcy1pbi1vY3QucGF0Y2ggfCAgIDMwIC0KIC4uLnNlLWVycm9yLW1lc3NhZ2Utb24tUFBQ b0UtZGlzY29ubmVjdC5wYXRjaCB8ICAgMzMgLQogLi4uLzAwMDUtU2VuZC1QQURULW9uLVBQUG9F LWRpc2Nvbm5lY3QucGF0Y2ggIHwgICAzNiAtCiAuLi5udC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1v dGUtcm91dGVyLW4ucGF0Y2ggfCAgIDMwIC0KIC4uLi8wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25z Lm1wcGUtdHlwZS5wYXRjaCB8ICAgMzAgLQogLi4uZW4tY2FsY3VsYXRlZC1zaXplLWlmLWJvdGgt ZGVmbGF0ZV9jLnBhdGNoIHwgICAzMyAtCiAuLi5pbi1jb21tZW50Li1EaWZmLWZyb20tWXV1aWNo aS1Tb21leWEucGF0Y2ggfCAgIDI0IC0KIC4uLm91bnQtb25seS1yZWxldmFudC1saW5lcy1mcm9t LXN5c2xvZy5wYXRjaCB8ICAgMjQgLQogLi4uLWluY2x1ZGUtZnJvbS1zeXMtZXJybm8uaC10by1l cnJuby5oLnBhdGNoIHwgICAzMyAtCiAuLi5sb3ctdXNlLW9mLWFyYml0cmFyeS1pbnRlcmZhY2Ut bmFtZXMucGF0Y2ggfCAgMjE0IC0tCiAuLi5SZW1vdmUtdW51c2VkLWRlY2xhcmF0aW9uLW9mLXR0 eW5hbWUucGF0Y2ggfCAgIDI1IC0KIC4uLm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2Nv dmVyeS5wYXRjaCB8ICAgNTIgLQogLi4uY2x1ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1p bi5oLnBhdGNoIHwgICA0OSAtCiBwYXRjaGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9z LnBhdGNoICAgfCAgIDcyIC0KIC4uLi9wcHAtMi40LjcvMDAxNy1NYWtlZmlsZXMtY2xlYW51cC5w YXRjaCAgICB8ICAyOTYgLS0KIC4uLmRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24t cC5wYXRjaCB8ICAgNDQgLQogLi4uaW5rcGlkZmlsZS1pcy1ub3QtY3JlYXRlZC11cG9uLWRldGFj LnBhdGNoIHwgICA0OCAtCiAuLi5zbWV0aWMtY2xlYW51cC1vZi10aGUtcHBwb2F0bS1wbHVnaW4u cGF0Y2ggfCAgIDkwIC0KIHBhdGNoZXMvcHBwLTIuNC43LzAwMjMtcHBwb2Vfbm9hZHMucGF0Y2gg ICAgICB8ICAgMjUgLQogLi4uNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBh dGNoIHwgICAyNyAtCiAuLi4vMDAyNS1Db3JyZWN0LXVua293bi11bmtub3duLXR5cG8ucGF0Y2gg ICAgfCAgIDQ2IC0KIC4uLi8wMDI2LXBwcG9lLWN1c3RvbS1ob3N0LXVuaXEtdGFnLnBhdGNoICAg ICB8ICAzMDIgLS0KIC4uLi8wMDI3LUFkZC1yZXBsYWNlZGVmYXVsdHJvdXRlLW9wdGlvbi5wYXRj aCB8ICAzMjQgLS0KIC4uLi1mb3ItdGhlLUZyYW1lZC1NVFUtUmFkaXVzLWF0dHJpYnV0ZS5wYXRj aCB8ICAgNDIgLQogcGF0Y2hlcy9wcHAtMi40LjcvMDAzMC0wMThfaXAtdXBfb3B0aW9uLnBhdGNo IHwgIDEwNiAtCiAuLi4vMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFpbi5wYXRjaCAgICAgICAg fCAgIDQ3IC0KIC4uLmV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2NyaXB0cy5wYXRjaCB8 ICAgMzggLQogLi4uL3BwcC0yLjQuNy8wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaCAgIHwg ICA3MyAtCiAuLi5idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2ggfCAg IDQzIC0KIC4uLjAwMzctRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1yY19ta3NpZC5wYXRjaCB8ICAg MzYgLQogLi4uUC1UTFMtYXV0aGVudGljYXRpb24tc3VwcG9ydC1mb3ItUFBQLnBhdGNoIHwgMzM4 MyAtLS0tLS0tLS0tLS0tLS0tLQogLi4uLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNy eXB0LnBhdGNoIHwgIDExNSAtCiBwYXRjaGVzL3BwcC0yLjQuNy9zZXJpZXMgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQ2IC0KIC4uLmlndXJlLUFsbG93LWNvbW1hcy1pbi10aGUtQ0ZMQUdTLTIy MC5wYXRjaCB8ICAgMjggKwogLi4udGlvbi13aXRoLW9sZGVyLWdsaWJjLW9yLWtlcm5lbC1oZWFk LnBhdGNoIHwgICA1NSArCiAuLi5pbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5w YXRjaH0gfCAgIDI3ICstCiAuLi51bm5lZWRlZC1jb2RlLWluLXRoZS1wcHBvYXRtLXBsdWdpbi5w YXRjaH0gfCAgIDE2ICstCiBwYXRjaGVzL3BwcC0yLjQuOS8wMTAyLXBwcG9lX25vYWRzLnBhdGNo ICAgICAgfCAgIDI0ICsKIC4uLml0aHViLmNvbS1wYXVsdXNtYWNrLXBwcC1pc3N1ZXMtMTg3LnBh dGNofSB8ICAgNjkgKy0KIC4uLi8wMTA0LXJlc29sdi5jb25mX25vX2xvZy5wYXRjaH0gICAgICAg ICAgICB8ICAgMTIgKy0KIC4uLi8wMTA1LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNofSAg ICAgICB8ICAgNTAgKy0KIC4uLmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5cHRvLnBh dGNofSB8ICAyMDkgKy0KIC4uLjAwLXBwcGQtbWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBh dGNofSB8ICAgMzQgKy0KIC4uLnRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBh dGNofSB8ICAgMTAgKy0KIHBhdGNoZXMvcHBwLTIuNC45L3NlcmllcyAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTcgKwogcnVsZXMvcHBwLm1ha2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNiArLQogNDggZmlsZXMgY2hhbmdlZCwgMzMwIGluc2VydGlvbnMoKyksIDYxMjAg ZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAwMS1h Ym9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHBhdGNoZXMvcHBwLTIuNC43LzAwMDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBwcGQu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDAzLXBwcGQtRml4 LXNpZ24tZXh0ZW5zaW9uLXdoZW4tZGlzcGxheWluZy1ieXRlcy1pbi1vY3QucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9y LW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBh dGNoZXMvcHBwLTIuNC43LzAwMDUtU2VuZC1QQURULW9uLVBQUG9FLWRpc2Nvbm5lY3QucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3AtUHJl dmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVyLW4ucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUt dHlwZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMDgtcHBw ZC1GaXgtY2NwX2NpbGVuLWNhbGN1bGF0ZWQtc2l6ZS1pZi1ib3RoLWRlZmxhdGVfYy5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMDktRml4LWEtdHlwby1pbi1j b21tZW50Li1EaWZmLWZyb20tWXV1aWNoaS1Tb21leWEucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1m cm9tLXN5c2xvZy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAw MTEtQ2hhbmdlLWluY2x1ZGUtZnJvbS1zeXMtZXJybm8uaC10by1lcnJuby5oLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAxMi1wcHBkLWFsbG93LXVzZS1vZi1h cmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hl cy9wcHAtMi40LjcvMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFt ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMTQtcHBwZC1Q cm92aWRlLWVycm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2NvdmVyeS5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMTUtcHBwb2UtaW5jbHVkZS1uZXRp bmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRj aGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAxNy1NYWtlZmlsZXMtY2xlYW51cC5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMTgtQnVnLTMwNjI2MS1wcHBkLWRvZXMt bm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHBhdGNoZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3BpZGZpbGUtaXMtbm90 LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvcHBw LTIuNC43LzAwMjItY29zbWV0aWMtY2xlYW51cC1vZi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDIzLXBwcG9lX25vYWRzLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRI X0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hl cy9wcHAtMi40LjcvMDAyNS1Db3JyZWN0LXVua293bi11bmtub3duLXR5cG8ucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDI2LXBwcG9lLWN1c3RvbS1ob3N0LXVu aXEtdGFnLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAyNy1B ZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBw YXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZvci10aGUtRnJhbWVkLU1UVS1SYWRp dXMtYXR0cmlidXRlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40Ljcv MDAzMC0wMThfaXAtdXBfb3B0aW9uLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9w cHAtMi40LjcvMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFpbi5wYXRjaAogZGVsZXRlIG1vZGUg MTAwNjQ0IHBhdGNoZXMvcHBwLTIuNC43LzAwMzItZXhwb3J0LUNBTExfRklMRS10by10aGUtbGlu ay1zY3JpcHRzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDAz My1pcHY2LWFjY2VwdC1yZW1vdGUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3Bw cC0yLjQuNy8wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQu Yy1yY19tYXAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDM3 LUZpeC1idWZmZXItb3ZlcmZsb3ctaW4tcmNfbWtzaWQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBwYXRjaGVzL3BwcC0yLjQuNy8wMDM4LUVBUC1UTFMtYXV0aGVudGljYXRpb24tc3VwcG9ydC1m b3ItUFBQLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjcvMDA0MC1w cHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40Ljcvc2VyaWVzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFzLWlu LXRoZS1DRkxBR1MtMjIwLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9wcHAtMi40 LjkvMDAwMi1wcHBkLUZpeC1jb21waWxhdGlvbi13aXRoLW9sZGVyLWdsaWJjLW9yLWtlcm5lbC1o ZWFkLnBhdGNoCiByZW5hbWUgcGF0Y2hlcy97cHBwLTIuNC43LzAwMjAtc3VwcG9ydC1idWlsZGlu Zy1wcHBkdW1wLXdpdGgtdGhlLXN5c3RlbS16bGliLnBhdGNoID0+IHBwcC0yLjQuOS8wMTAwLXN1 cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaH0gKDYzJSkK IHJlbmFtZSBwYXRjaGVzL3twcHAtMi40LjcvMDAyMS1kaXNhYmxlLXVubmVlZGVkLWNvZGUtaW4t dGhlLXBwcG9hdG0tcGx1Z2luLnBhdGNoID0+IHBwcC0yLjQuOS8wMTAxLWRpc2FibGUtdW5uZWVk ZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2h9ICg4OSUpCiBjcmVhdGUgbW9kZSAx MDA2NDQgcGF0Y2hlcy9wcHAtMi40LjkvMDEwMi1wcHBvZV9ub2Fkcy5wYXRjaAogcmVuYW1lIHBh dGNoZXMve3BwcC0yLjQuNy8wMDI4LXBwcC0yLjMuMTEtb2Vkb2QuZGlmLnBhdGNoID0+IHBwcC0y LjQuOS8wMTAzLUZvcndhcmRlZC1odHRwcy1naXRodWIuY29tLXBhdWx1c21hY2stcHBwLWlzc3Vl cy0xODcucGF0Y2h9ICg3MiUpCiByZW5hbWUgcGF0Y2hlcy97cHBwLTIuNC43LzAwMzUtcmVzb2x2 LmNvbmZfbm9fbG9nLnBhdGNoID0+IHBwcC0yLjQuOS8wMTA0LXJlc29sdi5jb25mX25vX2xvZy5w YXRjaH0gKDU2JSkKIHJlbmFtZSBwYXRjaGVzL3twcHAtMi40LjcvMDAzNi1EZWJpYW4tc3BlY2lm aWMtY2hhbmdlcy5wYXRjaCA9PiBwcHAtMi40LjkvMDEwNS1EZWJpYW4tc3BlY2lmaWMtY2hhbmdl cy5wYXRjaH0gKDYyJSkKIHJlbmFtZSBwYXRjaGVzL3twcHAtMi40LjcvMDAzOS1SZXBsYWNlLXZl bmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5cHRvLnBhdGNoID0+IHBwcC0yLjQuOS8w MTA2LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2h9 ICg5MiUpCiByZW5hbWUgcGF0Y2hlcy97cHBwLTIuNC43LzAxMDAtcHBwZC1tYWtlLW1ha2VmaWxl LXN5c3Jvb3QtYXdhcmUucGF0Y2ggPT4gcHBwLTIuNC45LzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxl LXN5c3Jvb3QtYXdhcmUucGF0Y2h9ICg2MyUpCiByZW5hbWUgcGF0Y2hlcy97cHBwLTIuNC43LzAx MDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoID0+ IHBwcC0yLjQuOS8wMjAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRlLWNvbmZpZ3VyZS1jcm9zcy1h d2FyZS5wYXRjaH0gKDg3JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL3BwcC0yLjQuOS9z ZXJpZXMKCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDAxLWFib3J0LW9uLWVycm9y cy1pbi1zdWJkaXItYnVpbGRzLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMS1hYm9ydC1v bi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYzZhNzZjZTY1Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMS1h Ym9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDQ4ICswLDAgQEAKLUZyb206IE1hcnRpbiB2b24gR2FnZXJuIDxNYXJ0aW4udkdhZ2VybkBnbXgu bmV0PgotRGF0ZTogU2F0LCA5IEF1ZyAyMDE0IDIyOjQ0OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFU Q0hdIGFib3J0IG9uIGVycm9ycyBpbiBzdWJkaXIgYnVpbGRzCi0KLVRoZSBjdXJyZW50IHJlY3Vy c2l2ZSBsb29wcyBkbyBub3QgY2hlY2sgdGhlIGV4aXQgc3RhdHVzIG9mIG1ha2UKLWluIHN1YmRp cnMgd2hpY2ggbGVhZHMgdG8gYG1ha2VgIHBhc3NpbmcgZXZlbiB3aGVuIGEgc3ViZGlyIGZhaWxl ZAotdG8gY29tcGlsZSBvciBpbnN0YWxsLgotCi1VUkw6IGh0dHBzOi8vYnVncy5nZW50b28ub3Jn LzMzNDcyNwotU2lnbmVkLW9mZi1ieTogTWFydGluIHZvbiBHYWdlcm4gPE1hcnRpbi52R2FnZXJu QGdteC5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5v cmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2ln bmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0t LS0KLSBwcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggfCA4ICsrKystLS0tCi0gMSBmaWxlIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Bw cGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAot aW5kZXggYWI4Y2Y1MGQ5NDcyLi44YTkwZTM5M2EwNTcgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdp bnMvTWFrZWZpbGUubGludXgKLSsrKyBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotQEAg LTI3LDcgKzI3LDcgQEAgaW5jbHVkZSAuZGVwZW5kCi0gZW5kaWYKLSAKLSBhbGw6CSQoUExVR0lO UykKLS0JZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGFs bDsgZG9uZQotKwlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQoTUZMQUdTKSAtQyAk JGQgYWxsIHx8IGV4aXQgJCQ/OyBkb25lCi0gCi0gJS5zbzogJS5jCi0gCSQoQ0MpIC1vICRAICQo TERGTEFHUykgJChDRkxBR1MpICReCi1AQCAtMzcsMTIgKzM3LDEyIEBAIFZFUlNJT04gPSAkKHNo ZWxsIGF3ayAtRiAnIicgJy9WRVJTSU9OLyB7IHByaW50ICQkMjsgfScgLi4vcGF0Y2hsZXZlbC5o KQotIGluc3RhbGw6ICQoUExVR0lOUykKLSAJJChJTlNUQUxMKSAtZCAkKExJQkRJUikKLSAJJChJ TlNUQUxMKSAkPyAkKExJQkRJUikKLS0JZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAk KE1GTEFHUykgLUMgJCRkIGluc3RhbGw7IGRvbmUKLSsJZm9yIGQgaW4gJChTVUJESVJTKTsgZG8g JChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGluc3RhbGwgfHwgZXhpdCAkJD87IGRvbmUKLSAKLSBj bGVhbjoKLSAJcm0gLWYgKi5vICouc28gKi5hCi0tCWZvciBkIGluICQoU1VCRElSUyk7IGRvICQo TUFLRSkgJChNRkxBR1MpIC1DICQkZCBjbGVhbjsgZG9uZQotKwlmb3IgZCBpbiAkKFNVQkRJUlMp OyBkbyAkKE1BS0UpICQoTUZMQUdTKSAtQyAkJGQgY2xlYW4gfHwgZXhpdCAkJD87IGRvbmUKLSAK LSBkZXBlbmQ6Ci0gCSQoQ1BQKSAtTSAkKENGTEFHUykgKi5jID4uZGVwZW5kCi0tCWZvciBkIGlu ICQoU1VCRElSUyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQkZCBkZXBlbmQ7IGRvbmUKLSsJ Zm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGRlcGVuZCB8 fCBleGl0ICQkPzsgZG9uZQpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMi1zY3Jp cHRzLUF2b2lkLWtpbGxpbmctd3JvbmctcHBwZC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAw MDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBwcGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGRjMjRjMjI4ZS4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIu NC43LzAwMDItc2NyaXB0cy1Bdm9pZC1raWxsaW5nLXdyb25nLXBwcGQucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tOiByYWRhaW1pbmcgPHJhZGFpbWluZ0BnbWFpbC5j b20+Ci1EYXRlOiBTYXQsIDEzIERlYyAyMDE0IDE0OjQyOjM0ICswODAwCi1TdWJqZWN0OiBbUEFU Q0hdIHNjcmlwdHM6IEF2b2lkIGtpbGxpbmcgd3JvbmcgcHBwZAotCi0gcG9mZiBjb3VsZCBraWxs IG90aGVyIHBwcGQgcHJvY2Vzc2VzIHdoZW4gdGhlcmUgYXJlIG1hbnkgcHBwZAotIHJ1bm5pbmcg b24gZGlmZmVyZW50IHNlcmlhbCBwb3J0LgotCi0gU2lnbmVkLW9mZi1ieTogTWluZyBEYWkgPHJh ZGFpbWluZ0BnbWFpbC5jb20+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlh bi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci0tLS0KLSBzY3JpcHRzL3BvZmYgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zY3JpcHRzL3Bv ZmYgYi9zY3JpcHRzL3BvZmYKLWluZGV4IDNmNTVhN2Y0MDAxMC4uNWI0NWQ5OGEyYjZhIDEwMDY0 NAotLS0tIGEvc2NyaXB0cy9wb2ZmCi0rKysgYi9zY3JpcHRzL3BvZmYKLUBAIC05MSw3ICs5MSw3 IEBAIGlmIHRlc3QgIiQjIiAtZXEgMCAtbyAiJE1PREUiID0gImFsbCIgOyB0aGVuCi0gZmkKLSAK LSAjIFRoZXJlIGlzIGFuIGFyZ3VtZW50LCBzbyBraWxsIHRoZSBwcHBkIHN0YXJ0ZWQgb24gdGhh dCBwcm92aWRlci4KLS1QSUQ9YHBzIGF4dyB8IGdyZXAgIlsgL11wcHBkIGNhbGwgJDEiIHwgYXdr ICd7cHJpbnQgJDF9J2AKLStQSUQ9YHBzIGF4dyB8IGdyZXAgIlsgL11wcHBkIGNhbGwgJDEiIHwg Z3JlcCAtdyAiJDEiIHwgYXdrICd7cHJpbnQgJDF9J2AKLSBpZiB0ZXN0IC1uICIkUElEIiA7IHRo ZW4KLSAgICAgJEtJTEwgLSRTSUcgJFBJRCB8fCB7Ci0gICAgICAgICBlY2hvICIkMDogJEtJTEwg ZmFpbGVkLiAgTm9uZSAke0RPTkV9LiIKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAw MDMtcHBwZC1GaXgtc2lnbi1leHRlbnNpb24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5w YXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDMtcHBwZC1GaXgtc2lnbi1leHRlbnNpb24td2hl bi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMmJkMjNiOTIxLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMy1w cHBkLUZpeC1zaWduLWV4dGVuc2lvbi13aGVuLWRpc3BsYXlpbmctYnl0ZXMtaW4tb2N0LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbTogIlBoaWxpcCBBLiBQcmluZGV2 aWxsZSIgPHBoaWxpcHBAcmVkZmlzaC1zb2x1dGlvbnMuY29tPgotRGF0ZTogRnJpLCAxOSBEZWMg MjAxNCAxNzo1Mjo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBwcHBkOiBGaXggc2lnbi1leHRl bnNpb24gd2hlbiBkaXNwbGF5aW5nIGJ5dGVzIGluIG9jdGFsCi0KLXByaW50X3N0cmluZygpIGRp c3BsYXlzIGNoYXJhY3RlcnMgYXMgXFwlLjAzbyBidXQgd2l0aG91dCBmaXJzdAotY2FzdGluZyBp dCBmcm9tICJjaGFyIiB0byAidW5zaWduZWQgY2hhciIgc28gaXQgZ2V0cyBzaWduLWV4dGVuZGVk Ci10byBhbiBpbnQuIFRoaXMgY2F1c2VzIG91dHB1dCBsaWtlIFwzNzc3Nzc3NzYzMCBpbnN0ZWFk IG9mIFwyMzAuCi0KLVNpZ25lZC1vZmYtYnk6IFBoaWxpcCBBLiBQcmluZGV2aWxsZSA8cGhpbGlw cEByZWRmaXNoLXNvbHV0aW9ucy5jb20+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4x LmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3V0aWxzLmMgfCAyICstCi0gMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBk L3V0aWxzLmMgYi9wcHBkL3V0aWxzLmMKLWluZGV4IDI5YmY5NzA5MDVkNS4uM2FjMWI2MDkyNmQy IDEwMDY0NAotLS0tIGEvcHBwZC91dGlscy5jCi0rKysgYi9wcHBkL3V0aWxzLmMKLUBAIC02MjUs NyArNjI1LDcgQEAgcHJpbnRfc3RyaW5nKHAsIGxlbiwgcHJpbnRlciwgYXJnKQotIAkJcHJpbnRl cihhcmcsICJcXHQiKTsKLSAJCWJyZWFrOwotIAkgICAgZGVmYXVsdDoKLS0JCXByaW50ZXIoYXJn LCAiXFwlLjNvIiwgYyk7Ci0rCQlwcmludGVyKGFyZywgIlxcJS4zbyIsICh1bnNpZ25lZCBjaGFy KSBjKTsKLSAJICAgIH0KLSAJfQotICAgICB9CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5w YXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDQtU3VwcHJlc3MtZmFsc2UtZXJyb3ItbWVzc2Fn ZS1vbi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2ZDRiZDVjMTAuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA0LVN1cHBy ZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb206IFNpbW9uIEZhcm5zd29ydGggPHNpbW9uQGZh cm56Lm9yZy51az4KLURhdGU6IFN1biwgMSBNYXIgMjAxNSAxMTo0OTowNiArMDAwMAotU3ViamVj dDogW1BBVENIXSBTdXBwcmVzcyBmYWxzZSBlcnJvciBtZXNzYWdlIG9uIFBQUG9FIGRpc2Nvbm5l Y3QKLQotT25jZSB0aGUga2VybmVsIGhhbmRsZXMgUFBQb0UgUEFEVHMgY29ycmVjdGx5WzFdLCBh IFBBRFQgdHJpZ2dlcmVkCi1kaXNjb25uZWN0IHdpbGwgcmVzdWx0IGluIEVBTFJFQURZIHdoZW4g cHBwZCB0cmllcyB0byBjbGVhciB0aGUgc2Vzc2lvbiBJRC4KLQotU2ltcGx5IGlnbm9yZSB0aGUg ZXJyb3IgaWYsIGFuZCBvbmx5IGlmLCB0aGUgZXJyb3IgaXMgRUFMUkVBRFkKLQotWzFdIGh0dHBz Oi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNDQ0NzE3LwotCi1TaWduZWQtb2ZmLWJ5OiBT aW1vbiBGYXJuc3dvcnRoIDxzaW1vbkBmYXJuei5vcmcudWs+Ci0KLUltcG9ydGVkIGZyb20gcHBw XzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJy aWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBw b2UvcGx1Z2luLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMg Yi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKLWluZGV4IGE4YzJiYjRmNGE2YS4uZGE1 MGNkZjJiOWQzIDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCi0r KysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKLUBAIC0yNzAsNyArMjcwLDcgQEAg UFBQT0VEaXNjb25uZWN0RGV2aWNlKHZvaWQpCi0gICAgIG1lbWNweShzcC5zYV9hZGRyLnBwcG9l LmRldiwgY29ubi0+aWZOYW1lLCBJRk5BTVNJWik7Ci0gICAgIG1lbWNweShzcC5zYV9hZGRyLnBw cG9lLnJlbW90ZSwgY29ubi0+cGVlckV0aCwgRVRIX0FMRU4pOwotICAgICBpZiAoY29ubmVjdChj b25uLT5zZXNzaW9uU29ja2V0LCAoc3RydWN0IHNvY2thZGRyICopICZzcCwKLS0JCXNpemVvZihz dHJ1Y3Qgc29ja2FkZHJfcHBwb3gpKSA8IDApCi0rCQlzaXplb2Yoc3RydWN0IHNvY2thZGRyX3Bw cG94KSkgPCAwICYmIGVycm5vICE9IEVBTFJFQURZKQotIAllcnJvcigiRmFpbGVkIHRvIGRpc2Nv bm5lY3QgUFBQb0Ugc29ja2V0OiAlZCAlbSIsIGVycm5vKTsKLSAgICAgY2xvc2UoY29ubi0+c2Vz c2lvblNvY2tldCk7Ci0gICAgIC8qIGRvbid0IHNlbmQgUEFEVD8/ICovCmRpZmYgLS1naXQgYS9w YXRjaGVzL3BwcC0yLjQuNy8wMDA1LVNlbmQtUEFEVC1vbi1QUFBvRS1kaXNjb25uZWN0LnBhdGNo IGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwNS1TZW5kLVBBRFQtb24tUFBQb0UtZGlzY29ubmVjdC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhlZmRmYzcxLi4wMDAwMDAwMDAK LS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwNS1TZW5kLVBBRFQtb24tUFBQb0UtZGlzY29ubmVj dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb206IFNpbW9uIEZhcm5z d29ydGggPHNpbW9uQGZhcm56Lm9yZy51az4KLURhdGU6IFN1biwgMSBNYXIgMjAxNSAxMTo1Mzo1 OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTZW5kIFBBRFQgb24gUFBQb0UgZGlzY29ubmVjdAot Ci1PbmNlIHdlJ3ZlIHRlcm1pbmF0ZWQgdGhlIFBQUCBzZXNzaW9uLCB0aGVyZSBpcyBubyBjaGFu Y2Ugb2YgYSBQUFAgbGF5ZXIKLWRpc2Nvbm5lY3QuIFNvbWUgUFBQb0UgcmVsYXlzIGRvbid0IGRl dGVjdCB0aGUgUFBQIHNlc3Npb24gZ29pbmcgZG93biwgYW5kCi1kZXBlbmQgb24gYSBsb25nIHRp bWVvdXQgb3IgYSBQUFBvRSBQQURUIHRvIHRlcm1pbmF0ZSB0aGUgc2Vzc2lvbi4KLQotU2VuZCBh IFBBRFQgb24gZGlzY29ubmVjdCB0byB3b3JrIGFyb3VuZCB0aGVzZSBidWdneSByZWxheXMuCi0K LVNpZ25lZC1vZmYtYnk6IFNpbW9uIEZhcm5zd29ydGggPHNpbW9uQGZhcm56Lm9yZy51az4KLQot SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQotIHBw cGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVn aW5zL3JwLXBwcG9lL3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCi1p bmRleCBkYTUwY2RmMmI5ZDMuLmM4OWJlOTQyNTBiYyAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lu cy9ycC1wcHBvZS9wbHVnaW4uYwotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5j Ci1AQCAtMjczLDkgKzI3MywxMCBAQCBQUFBPRURpc2Nvbm5lY3REZXZpY2Uodm9pZCkKLSAJCXNp emVvZihzdHJ1Y3Qgc29ja2FkZHJfcHBwb3gpKSA8IDAgJiYgZXJybm8gIT0gRUFMUkVBRFkpCi0g CWVycm9yKCJGYWlsZWQgdG8gZGlzY29ubmVjdCBQUFBvRSBzb2NrZXQ6ICVkICVtIiwgZXJybm8p OwotICAgICBjbG9zZShjb25uLT5zZXNzaW9uU29ja2V0KTsKLS0gICAgLyogZG9uJ3Qgc2VuZCBQ QURUPz8gKi8KLS0gICAgaWYgKGNvbm4tPmRpc2NvdmVyeVNvY2tldCA+PSAwKQotKyAgICBpZiAo Y29ubi0+ZGlzY292ZXJ5U29ja2V0ID49IDApIHsKLSsgICAgICAgIHNlbmRQQURUKGNvbm4sIE5V TEwpOwotIAljbG9zZShjb25uLT5kaXNjb3ZlcnlTb2NrZXQpOwotKyAgICB9Ci0gfQotIAotIHN0 YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3At UHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVyLW4ucGF0Y2ggYi9wYXRjaGVz L3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3AtUHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1v dGUtcm91dGVyLW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkOTgxMjdj Mi4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDYtcHBwZC1pcHhjcC1QcmV2 ZW50LWJ1ZmZlci1vdmVycnVuLW9uLXJlbW90ZS1yb3V0ZXItbi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDMwICswLDAgQEAKLUZyb206IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAc2FtYmEub3Jn PgotRGF0ZTogRnJpLCAxNCBBdWcgMjAxNSAxNzo1NjoyNiArMTAwMAotU3ViamVjdDogW1BBVENI XSBwcHBkOiBpcHhjcDogUHJldmVudCBidWZmZXIgb3ZlcnJ1biBvbiByZW1vdGUgcm91dGVyIG5h bWUKLQotVGhpcyBmaXhlcyBhbiBpZiBjb25kaXRpb24gdG8gcHJldmVudCBhIHBvc3NpYmxlIDEt Ynl0ZSBvdmVycnVuCi1vbiBpcHhjcF9oaXNvcHRpb25zWzBdLm5hbWUuCi0KLVJlcG9ydGVkLWJ5 OiAiU2FiYXMgUm9zYWxlcywgQmxhbmNhIEUiIDxibGFuY2EuZS5zYWJhcy5yb3NhbGVzQGludGVs LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAb3psYWJzLm9yZz4K LQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQt b2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQot IHBwcGQvaXB4Y3AuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvaXB4Y3AuYyBiL3BwcGQvaXB4Y3AuYwot aW5kZXggN2IyMzQzZTE1NTM3Li5hYWZmMTBmNzYyMDAgMTAwNjQ0Ci0tLS0gYS9wcHBkL2lweGNw LmMKLSsrKyBiL3BwcGQvaXB4Y3AuYwotQEAgLTExOTQsNyArMTE5NCw3IEBAIGlweGNwX3JlcWNp KGYsIGlucCwgbGVuLCByZWplY3RfaWZfZGlzYWdyZWUpCi0gCWNhc2UgSVBYX1JPVVRFUl9OQU1F OgotIAkgICAgaWYgKGNpbGVuID49IENJTEVOX05BTUUpIHsKLSAJCWludCBuYW1lX3NpemUgPSBj aWxlbiAtIENJTEVOX05BTUU7Ci0tCQlpZiAobmFtZV9zaXplID4gc2l6ZW9mIChoby0+bmFtZSkp Ci0rCQlpZiAobmFtZV9zaXplID49IHNpemVvZiAoaG8tPm5hbWUpKQotIAkJICAgIG5hbWVfc2l6 ZSA9IHNpemVvZiAoaG8tPm5hbWUpIC0gMTsKLSAJCW1lbXNldCAoaG8tPm5hbWUsIDAsIHNpemVv ZiAoaG8tPm5hbWUpKTsKLSAJCW1lbWNweSAoaG8tPm5hbWUsIHAsIG5hbWVfc2l6ZSk7CmRpZmYg LS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUt dHlwZS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDctcHBwZC1GaXgtY2NwX29wdGlvbnMu bXBwZS10eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzVlZGFlMjQu LjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQtRml4LWNjcF9vcHRp b25zLm1wcGUtdHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb206 IFN5bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5uZXQ+Ci1EYXRlOiBXZWQsIDI1IE1h ciAyMDE1IDAwOjI1OjE4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IEZpeCBjY3Bfb3B0 aW9ucy5tcHBlIHR5cGUKLQotVGhpcyBjb3JyZWN0cyB0aGUgdHlwZSBvZiBjY3Bfb3B0aW9ucy5t cHBlOyBpdCBpcyBhY3R1YWxseSBhIGJpdGZpZWxkIG9mCi1NUFBFX09QVF8qIGFuZCBub3QgYSBi b29sZWFuLgotCi1TaWduZWQtb2ZmLWJ5OiBTeWx2YWluIFJvY2hldCA8Z3JhZGF0b3JAZ3JhZGF0 b3IubmV0PgotU2lnbmVkLW9mZi1ieTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+ Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVk LW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0K LSBwcHBkL2NjcC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9jY3AuaCBiL3BwcGQvY2NwLmgKLWluZGV4 IDZmNGEyZmVlMGEyYy4uNzY0NDZkYjAwN2MwIDEwMDY0NAotLS0tIGEvcHBwZC9jY3AuaAotKysr IGIvcHBwZC9jY3AuaAotQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgY2NwX29wdGlv bnMgewotICAgICBib29sIHByZWRpY3Rvcl8yOwkJLyogZG8gUHJlZGljdG9yLTI/ICovCi0gICAg IGJvb2wgZGVmbGF0ZV9jb3JyZWN0OwkvKiB1c2UgY29ycmVjdCBjb2RlIGZvciBkZWZsYXRlPyAq LwotICAgICBib29sIGRlZmxhdGVfZHJhZnQ7CQkvKiB1c2UgZHJhZnQgUkZDIGNvZGUgZm9yIGRl ZmxhdGU/ICovCi0tICAgIGJvb2wgbXBwZTsJCQkvKiBkbyBNUFBFPyAqLwotKyAgICB1X2NoYXIg bXBwZTsJCS8qIE1QUEUgYml0ZmllbGQgKi8KLSAgICAgdV9zaG9ydCBic2RfYml0czsJCS8qICMg Yml0cy9jb2RlIGZvciBCU0QgQ29tcHJlc3MgKi8KLSAgICAgdV9zaG9ydCBkZWZsYXRlX3NpemU7 CS8qIGxnKHdpbmRvdyBzaXplKSBmb3IgRGVmbGF0ZSAqLwotICAgICBzaG9ydCBtZXRob2Q7CQkv KiBjb2RlIGZvciBjaG9zZW4gY29tcHJlc3Npb24gbWV0aG9kICovCmRpZmYgLS1naXQgYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDA4LXBwcGQtRml4LWNjcF9jaWxlbi1jYWxjdWxhdGVkLXNpemUtaWYt Ym90aC1kZWZsYXRlX2MucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDA4LXBwcGQtRml4LWNj cF9jaWxlbi1jYWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2MucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3M2I0ZGUzMi4uMDAwMDAwMDAwCi0tLSBhL3BhdGNoZXMv cHBwLTIuNC43LzAwMDgtcHBwZC1GaXgtY2NwX2NpbGVuLWNhbGN1bGF0ZWQtc2l6ZS1pZi1ib3Ro LWRlZmxhdGVfYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb206IFN5 bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5uZXQ+Ci1EYXRlOiBUdWUsIDI0IE1hciAy MDE1IDIxOjIxOjQwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IEZpeCBjY3BfY2lsZW4g Y2FsY3VsYXRlZCBzaXplIGlmIGJvdGggZGVmbGF0ZV9jb3JyZWN0Ci0gYW5kIGRlZmxhdGVfZHJh ZnQgYXJlIGVuYWJsZWQKLQotVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBjY3BfY2lsZW4oKSB3aWxs IHJldHVybiA0IGJ5dGVzIGxlc3MgdGhhbgotbmVjZXNzYXJ5IGZvciB0aGUgYWRkY2kgYnVmZmVy IGlmIGJvdGggZGVmbGF0ZV9jb3JyZWN0IGFuZAotZGVmbGF0ZV9kcmFmdCBhcmUgZW5hYmxlZC4K LQotU2lnbmVkLW9mZi1ieTogU3lsdmFpbiBSb2NoZXQgPGdyYWRhdG9yQGdyYWRhdG9yLm5ldD4K LVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAc2FtYmEub3JnPgotCi1JbXBv cnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9j Y3AuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9jY3AuYyBiL3BwcGQvY2NwLmMKLWluZGV4IDU4MTRm MzU4ZWI0NC4uN2Q3OTIyYWZjZmMwIDEwMDY0NAotLS0tIGEvcHBwZC9jY3AuYwotKysrIGIvcHBw ZC9jY3AuYwotQEAgLTY3Niw3ICs2NzYsOCBAQCBjY3BfY2lsZW4oZikKLSAgICAgY2NwX29wdGlv bnMgKmdvID0gJmNjcF9nb3RvcHRpb25zW2YtPnVuaXRdOwotIAotICAgICByZXR1cm4gKGdvLT5i c2RfY29tcHJlc3M/IENJTEVOX0JTRF9DT01QUkVTUzogMCkKLS0JKyAoZ28tPmRlZmxhdGU/IENJ TEVOX0RFRkxBVEU6IDApCi0rCSsgKGdvLT5kZWZsYXRlICYmIGdvLT5kZWZsYXRlX2NvcnJlY3Q/ IENJTEVOX0RFRkxBVEU6IDApCi0rCSsgKGdvLT5kZWZsYXRlICYmIGdvLT5kZWZsYXRlX2RyYWZ0 PyBDSUxFTl9ERUZMQVRFOiAwKQotIAkrIChnby0+cHJlZGljdG9yXzE/IENJTEVOX1BSRURJQ1RP Ul8xOiAwKQotIAkrIChnby0+cHJlZGljdG9yXzI/IENJTEVOX1BSRURJQ1RPUl8yOiAwKQotIAkr IChnby0+bXBwZT8gQ0lMRU5fTVBQRTogMCk7CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDA5LUZpeC1hLXR5cG8taW4tY29tbWVudC4tRGlmZi1mcm9tLVl1dWljaGktU29tZXlhLnBh dGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwOS1GaXgtYS10eXBvLWluLWNvbW1lbnQuLURpZmYt ZnJvbS1ZdXVpY2hpLVNvbWV5YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MzlhZjhjZjMzLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwOS1GaXgtYS10 eXBvLWluLWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNvbWV5YS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb206IFlBU1VPS0EgTWFzYWhpa28gPHlhc3Vva2FAeWFz dW9rYS5uZXQ+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDEzOjM5OjE5ICswOTAwCi1TdWJqZWN0 OiBbUEFUQ0hdIEZpeCBhIHR5cG8gaW4gY29tbWVudC4gRGlmZiBmcm9tIFl1dWljaGkgU29tZXlh LgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0t Ci0gcHBwZC9mc20uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvZnNtLmMgYi9wcHBkL2ZzbS5jCi1pbmRl eCBjMjAwY2MzYTg0MzguLmU5YmQzNGYwZThmNCAxMDA2NDQKLS0tLSBhL3BwcGQvZnNtLmMKLSsr KyBiL3BwcGQvZnNtLmMKLUBAIC00NjgsNyArNDY4LDcgQEAgZnNtX3Jjb25mcmVxKGYsIGlkLCBp bnAsIGxlbikKLSAJZi0+bmFrbG9vcHMgPSAwOwotIAotICAgICB9IGVsc2UgewotLQkvKiB3ZSBz ZW50IENPTkZBQ0sgb3IgQ09ORlJFSiAqLwotKwkvKiB3ZSBzZW50IENPTkZOQUsgb3IgQ09ORlJF SiAqLwotIAlpZiAoZi0+c3RhdGUgIT0gQUNLUkNWRCkKLSAJICAgIGYtPnN0YXRlID0gUkVRU0VO VDsKLSAJaWYoIGNvZGUgPT0gQ09ORk5BSyApCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5c2xvZy5wYXRjaCBi L3BhdGNoZXMvcHBwLTIuNC43LzAwMTAtcGxvZy1jb3VudC1vbmx5LXJlbGV2YW50LWxpbmVzLWZy b20tc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWQ1NmNkYmIu LjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQtb25seS1y ZWxldmFudC1saW5lcy1mcm9tLXN5c2xvZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICsw LDAgQEAKLUZyb206IERtaXRyeSBEZXNoZXZveSA8bWl0eWFkYUBnbWFpbC5jb20+Ci1EYXRlOiBU aHUsIDMxIE1hciAyMDE2IDIzOjM5OjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBsb2c6IGNv dW50IG9ubHkgcmVsZXZhbnQgbGluZXMgZnJvbSBzeXNsb2cKLQotQ2xvc2VzIHBhdWx1c21hY2sv cHBwIzQyCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQot U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Ci0tLS0KLSBzY3JpcHRzL3Bsb2cgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zY3JpcHRzL3Bsb2cgYi9zY3JpcHRz L3Bsb2cKLWluZGV4IDg0ZDJjNzM0MGNjNi4uN2NiNTMzNDY0MTNkIDEwMDY0NAotLS0tIGEvc2Ny aXB0cy9wbG9nCi0rKysgYi9zY3JpcHRzL3Bsb2cKLUBAIC0zLDUgKzMsNSBAQAotIGlmIFsgLXMg L3Zhci9sb2cvcHBwLmxvZyBdOyB0aGVuCi0gICBleGVjIHRhaWwgIiRAIiAvdmFyL2xvZy9wcHAu bG9nCi0gZWxzZQotLSAgZXhlYyB0YWlsICIkQCIgL3Zhci9sb2cvc3lzbG9nIHwgZ3JlcCAnIFwo cHBwZFx8Y2hhdFwpXFsnCi0rICBleGVjIGdyZXAgJyBcKHBwcGRcfGNoYXRcKVxbJyAvdmFyL2xv Zy9zeXNsb2cgfCB0YWlsICIkQCIKLSBmaQpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40Ljcv MDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9tLXN5cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuNy8wMDExLUNoYW5nZS1pbmNsdWRlLWZyb20tc3lzLWVycm5vLmgtdG8t ZXJybm8uaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzMTNlZWFhLi4w MDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9t LXN5cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCww IEBACi1Gcm9tOiBTdGVmYW4gTmlja2wgPFN0ZWZhbi5OaWNrbEBnbWFpbC5jb20+Ci1EYXRlOiBX ZWQsIDEwIEF1ZyAyMDE2IDIxOjMyOjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoYW5nZSBp bmNsdWRlIGZyb20gc3lzL2Vycm5vLmggdG8gZXJybm8uaAotCi1BY2NvcmRpbmcgdG8gUE9TSVgs IHRoZSBjYW5vbmljYWwgbG9jYXRpb24gZm9yIGVycm5vLmggaXMgb24gdGhlIHRvcCBsZXZlbC4K LQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIE5pY2tsIDxTdGVmYW4uTmlja2xAZ21haWwuY29tPgot Ci1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1v ZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0g cHBwZC9zeXMtbGludXguYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvc3lzLWxpbnV4LmMgYi9wcHBkL3N5 cy1saW51eC5jCi1pbmRleCBlNWU5YmFmODgyMWYuLjkwOGFhNGYyMjI5NyAxMDA2NDQKLS0tLSBh L3BwcGQvc3lzLWxpbnV4LmMKLSsrKyBiL3BwcGQvc3lzLWxpbnV4LmMKLUBAIC03MywxMiArNzMs MTIgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K LSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0gI2luY2x1 ZGUgPHN5cy9maWxlLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy91 dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAKLSsjaW5jbHVkZSA8ZXJy bm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1 ZGUgPHN5c2xvZy5oPgpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMi1wcHBkLWFs bG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBhdGNoIGIvcGF0Y2hlcy9wcHAt Mi40LjcvMDAxMi1wcHBkLWFsbG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmQ1NmRlMWQuLjAwMDAwMDAwMAot LS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEyLXBwcGQtYWxsb3ctdXNlLW9mLWFyYml0cmFyeS1p bnRlcmZhY2UtbmFtZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotRnJv bTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+Ci1EYXRlOiBUdWUsIDIzIEF1ZyAy MDE2IDE2OjEwOjIxICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IGFsbG93IHVzZSBvZiBh cmJpdHJhcnkgaW50ZXJmYWNlIG5hbWVzCi0KLVRoaXMgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9m IGEgcGF0Y2ggZnJvbSBvcGVuU1VTRSB0aGF0IGVuYWJsZXMgUFBQIGludGVyZmFjZXMKLXRvIGJl IGNhbGxlZCBhcmJpdHJhcnkgbmFtZXMsIHJhdGhlciB0aGFuIHNpbXBseSBwcHBYIHdoZXJlIFgg aXMgdGhlIHVuaXQKLW51bWJlci4KLQotVGhlIG1vZGlmaWNhdGlvbnMgZnJvbSB0aGUgc3RvY2sg b3BlblNVU0UgcGF0Y2ggYXJlOgotICByZWZyZXNoIHBhdGNoIG9uIHRvcCBvZiAwMThfaXAgdXBf b3B0aW9uLmRpZmYKLS0gZml4IGEgcHJpbnRmIGZvcm1hdC1zdHJpbmcgdnVsbmVyYWJpbGl0eSBp biBwcHBkL21haW4uYzpzZXRfaWZ1bml0KCkKLS0gY2xhcmlmeSB0aGUgcHBwZC44IG1hbnBhZ2Ug YWRkaXRpb25zCi0tIHBhdGNoIHBwcHN0YXRzL3BwcHN0YXRzLmMgdG8gcXVlcnkgcmVuYW1lZCBp bnRlcmZhY2VzIHdpdGhvdXQgY29tcGxhaW50Ci0KLU9yaWdpbjogU1VTRQotQnVnLURlYmlhbjog aHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ1ODY0Ngot Rm9yd2FyZGVkOiBubwotUmV2aWV3ZWQtYnk6IENocmlzIEJvb3QgPGJvb3RjQGRlYmlhbi5vcmc+ Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+Ci0KLUlt cG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1i eTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBk L21haW4uYyAgICAgICAgIHwgMTYgKysrKysrLS0tLS0tLS0tLQotIHBwcGQvb3B0aW9ucy5jICAg ICAgfCAgNSArKysrKwotIHBwcGQvcHBwZC44ICAgICAgICAgfCAgOCArKysrKysrLQotIHBwcGQv cHBwZC5oICAgICAgICAgfCAxMSArKysrKysrKysrKwotIHBwcGQvc3lzLWxpbnV4LmMgICAgfCAx NSArKysrKysrKysrKysrKysKLSBwcHBzdGF0cy9wcHBzdGF0cy5jIHwgMTIgKysrKysrLS0tLS0t Ci0gNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKLWluZGV4IDZkNTBkMWJhYzFk OS4uZjE5ODZlZDY4ZDBiIDEwMDY0NAotLS0tIGEvcHBwZC9tYWluLmMKLSsrKyBiL3BwcGQvbWFp bi5jCi1AQCAtMTI0LDcgKzEyNCw3IEBACi0gc3RhdGljIGNvbnN0IGNoYXIgcmNzaWRbXSA9IFJD U0lEOwotIAotIC8qIGludGVyZmFjZSB2YXJzICovCi0tY2hhciBpZm5hbWVbMzJdOwkJLyogSW50 ZXJmYWNlIG5hbWUgKi8KLStjaGFyIGlmbmFtZVtNQVhJRk5BTUVMRU5dOwkvKiBJbnRlcmZhY2Ug bmFtZSAqLwotIGludCBpZnVuaXQ7CQkJLyogSW50ZXJmYWNlIHVuaXQgbnVtYmVyICovCi0gCi0g c3RydWN0IGNoYW5uZWwgKnRoZV9jaGFubmVsOwotQEAgLTI5OCwxMyArMjk4LDYgQEAgc3RydWN0 IHByb3RlbnQgKnByb3RvY29sc1tdID0gewotICAgICBOVUxMCi0gfTsKLSAKLS0vKgotLSAqIElm IFBQUF9EUlZfTkFNRSBpcyBub3QgZGVmaW5lZCwgdXNlIHRoZSBkZWZhdWx0ICJwcHAiIGFzIHRo ZSBkZXZpY2UgbmFtZS4KLS0gKi8KLS0jaWYgIWRlZmluZWQoUFBQX0RSVl9OQU1FKQotLSNkZWZp bmUgUFBQX0RSVl9OQU1FCSJwcHAiCi0tI2VuZGlmIC8qICFkZWZpbmVkKFBQUF9EUlZfTkFNRSkg Ki8KLS0KLSBpbnQKLSBtYWluKGFyZ2MsIGFyZ3YpCi0gICAgIGludCBhcmdjOwotQEAgLTczNyw4 ICs3MzAsMTEgQEAgdm9pZAotIHNldF9pZnVuaXQoaXNrZXkpCi0gICAgIGludCBpc2tleTsKLSB7 Ci0tICAgIGluZm8oIlVzaW5nIGludGVyZmFjZSAlcyVkIiwgUFBQX0RSVl9OQU1FLCBpZnVuaXQp OwotLSAgICBzbHByaW50ZihpZm5hbWUsIHNpemVvZihpZm5hbWUpLCAiJXMlZCIsIFBQUF9EUlZf TkFNRSwgaWZ1bml0KTsKLSsgICAgaWYgKHJlcV9pZm5hbWVbMF0gIT0gJ1wwJykKLSsJc2xwcmlu dGYoaWZuYW1lLCBzaXplb2YoaWZuYW1lKSwgIiVzIiwgcmVxX2lmbmFtZSk7Ci0rICAgIGVsc2UK LSsJc2xwcmludGYoaWZuYW1lLCBzaXplb2YoaWZuYW1lKSwgIiVzJWQiLCBQUFBfRFJWX05BTUUs IGlmdW5pdCk7Ci0rICAgIGluZm8oIlVzaW5nIGludGVyZmFjZSAlcyIsIGlmbmFtZSk7Ci0gICAg IHNjcmlwdF9zZXRlbnYoIklGTkFNRSIsIGlmbmFtZSwgaXNrZXkpOwotICAgICBpZiAoaXNrZXkp IHsKLSAJY3JlYXRlX3BpZGZpbGUoZ2V0cGlkKCkpOwkvKiB3cml0ZSBwaWQgdG8gZmlsZSAqLwot ZGlmZiAtLWdpdCBhL3BwcGQvb3B0aW9ucy5jIGIvcHBwZC9vcHRpb25zLmMKLWluZGV4IGY2NmI3 NjU3YmMzMS4uOTFkYTUxNWFjNTMzIDEwMDY0NAotLS0tIGEvcHBwZC9vcHRpb25zLmMKLSsrKyBi L3BwcGQvb3B0aW9ucy5jCi1AQCAtMTE0LDYgKzExNCw3IEBAIGNoYXIJbGlua25hbWVbTUFYUEFU SExFTl07CS8qIGxvZ2ljYWwgbmFtZSBmb3IgbGluayAqLwotIGJvb2wJdHVuZV9rZXJuZWw7CQkv KiBtYXkgYWx0ZXIga2VybmVsIHNldHRpbmdzICovCi0gaW50CWNvbm5lY3RfZGVsYXkgPSAxMDAw OwkvKiB3YWl0IHRoaXMgbWFueSBtcyBhZnRlciBjb25uZWN0IHNjcmlwdCAqLwotIGludAlyZXFf dW5pdCA9IC0xOwkJLyogcmVxdWVzdGVkIGludGVyZmFjZSB1bml0ICovCi0rY2hhcglyZXFfaWZu YW1lW01BWElGTkFNRUxFTl07CS8qIHJlcXVlc3RlZCBpbnRlcmZhY2UgbmFtZSAqLwotIGJvb2wJ bXVsdGlsaW5rID0gMDsJCS8qIEVuYWJsZSBtdWx0aWxpbmsgb3BlcmF0aW9uICovCi0gY2hhcgkq YnVuZGxlX25hbWUgPSBOVUxMOwkvKiBidW5kbGUgbmFtZSBmb3IgbXVsdGlsaW5rICovCi0gYm9v bAlkdW1wX29wdGlvbnM7CQkvKiBwcmludCBvdXQgb3B0aW9uIHZhbHVlcyAqLwotQEAgLTI4Myw2 ICsyODQsMTAgQEAgb3B0aW9uX3QgZ2VuZXJhbF9vcHRpb25zW10gPSB7Ci0gICAgICAgIlBQUCBp bnRlcmZhY2UgdW5pdCBudW1iZXIgdG8gdXNlIGlmIHBvc3NpYmxlIiwKLSAgICAgICBPUFRfUFJJ TyB8IE9QVF9MTElNSVQsIDAsIDAgfSwKLSAKLSsgICAgeyAiaWZuYW1lIiwgb19zdHJpbmcsIHJl cV9pZm5hbWUsCi0rICAgICAgIlNldCBQUFAgaW50ZXJmYWNlIG5hbWUiLAotKyAgICAgIE9QVF9Q UklPIHwgT1BUX1BSSVYgfCBPUFRfU1RBVElDLCBOVUxMLCBNQVhJRk5BTUVMRU4gfSwKLSsKLSAg ICAgeyAiZHVtcCIsIG9fYm9vbCwgJmR1bXBfb3B0aW9ucywKLSAgICAgICAiUHJpbnQgb3V0IG9w dGlvbiB2YWx1ZXMgYWZ0ZXIgcGFyc2luZyBhbGwgb3B0aW9ucyIsIDEgfSwKLSAgICAgeyAiZHJ5 cnVuIiwgb19ib29sLCAmZHJ5cnVuLAotZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIvcHBwZC9w cHBkLjgKLWluZGV4IGUyNzY4YjEzNTI3My4uNjQ2NTljZjg2N2IyIDEwMDY0NAotLS0tIGEvcHBw ZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAtMTA3Myw3ICsxMDczLDEzIEBAIHVuZGVy IExpbnV4IGFuZCBGcmVlQlNEIDIuMi44IGFuZCBsYXRlci4KLSAuVFAKLSAuQiB1bml0IFxmSW51 bQotIFNldHMgdGhlIHBwcCB1bml0IG51bWJlciAoZm9yIGEgcHBwMCBvciBwcHAxIGV0YyBpbnRl cmZhY2UgbmFtZSkgZm9yIG91dGJvdW5kCi0tY29ubmVjdGlvbnMuCi0rY29ubmVjdGlvbnMuICBJ ZiB0aGUgdW5pdCBpcyBhbHJlYWR5IGluIHVzZSBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBudW1i ZXIgd2lsbAotK2JlIHVzZWQuCi0rLlRQCi0rLkIgaWZuYW1lIFxmSXN0cmluZwotK1NldCB0aGUg cHBwIGludGVyZmFjZSBuYW1lIGZvciBvdXRib3VuZCBjb25uZWN0aW9ucy4gIElmIHRoZSBpbnRl cmZhY2UgbmFtZSBpcwotK2FscmVhZHkgaW4gdXNlLCBvciBpZiB0aGUgbmFtZSBjYW5ub3QgYmUg dXNlZCBmb3IgYW55IG90aGVyIHJlYXNvbiwgcHBwZCB3aWxsCi0rdGVybWluYXRlLgotIC5UUAot IC5CIHVuc2V0IFxmSW5hbWUKLSBSZW1vdmUgYSB2YXJpYWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZSBmb3Igc2NyaXB0cyB0aGF0IGFyZQotZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC5o IGIvcHBwZC9wcHBkLmgKLWluZGV4IDI0N2ZhMTUzNzM5Yi4uMWExYmYwYjk5NTgyIDEwMDY0NAot LS0tIGEvcHBwZC9wcHBkLmgKLSsrKyBiL3BwcGQvcHBwZC5oCi1AQCAtODAsNiArODAsMTYgQEAK LSAjZGVmaW5lIE1BWEFSR1MJCTEJLyogbWF4ICMgYXJncyB0byBhIGNvbW1hbmQgKi8KLSAjZGVm aW5lIE1BWE5BTUVMRU4JMjU2CS8qIG1heCBsZW5ndGggb2YgaG9zdG5hbWUgb3IgbmFtZSBmb3Ig YXV0aCAqLwotICNkZWZpbmUgTUFYU0VDUkVUTEVOCTI1NgkvKiBtYXggbGVuZ3RoIG9mIHBhc3N3 b3JkIG9yIHNlY3JldCAqLwotKyNkZWZpbmUgTUFYSUZOQU1FTEVOCTMyCS8qIG1heCBsZW5ndGgg b2YgaW50ZXJmYWNlIG5hbWU7IG9yIHVzZSBJRk5BTVNJWiwgY2FuIHdlCi0rCQkJCSAgIGFsd2F5 cyBpbmNsdWRlIG5ldC9pZi5oPyAqLwotKwotKy8qCi0rICogSWYgUFBQX0RSVl9OQU1FIGlzIG5v dCBkZWZpbmVkLCB1c2UgdGhlIGRlZmF1bHQgInBwcCIgYXMgdGhlIGRldmljZSBuYW1lLgotKyAq IFdoZXJlIHNob3VsZCBQUFBfRFJWX05BTUUgY29tZSBmcm9tPyBEbyB3ZSBpbmNsdWRlIGl0IGhl cmU/Ci0rICovCi0rI2lmICFkZWZpbmVkKFBQUF9EUlZfTkFNRSkKLSsjZGVmaW5lIFBQUF9EUlZf TkFNRQkicHBwIgotKyNlbmRpZiAvKiAhZGVmaW5lZChQUFBfRFJWX05BTUUpICovCi0gCi0gLyoK LSAgKiBPcHRpb24gZGVzY3JpcHRvciBzdHJ1Y3R1cmUuCi1AQCAtMzE4LDYgKzMyOCw3IEBAIGV4 dGVybiBib29sCXR1bmVfa2VybmVsOwkvKiBNYXkgYWx0ZXIga2VybmVsIHNldHRpbmdzIGFzIG5l Y2Vzc2FyeSAqLwotIGV4dGVybiBpbnQJY29ubmVjdF9kZWxheTsJLyogVGltZSB0byBkZWxheSBh ZnRlciBjb25uZWN0IHNjcmlwdCAqLwotIGV4dGVybiBpbnQJbWF4X2RhdGFfcmF0ZTsJLyogbWF4 IGJ5dGVzL3NlYyB0aHJvdWdoIGNoYXJzaHVudCAqLwotIGV4dGVybiBpbnQJcmVxX3VuaXQ7CS8q IGludGVyZmFjZSB1bml0IG51bWJlciB0byB1c2UgKi8KLStleHRlcm4gY2hhcglyZXFfaWZuYW1l W01BWElGTkFNRUxFTl07IC8qIGludGVyZmFjZSBuYW1lIHRvIHVzZSAqLwotIGV4dGVybiBib29s CW11bHRpbGluazsJLyogZW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24gKi8KLSBleHRlcm4gYm9v bAlub2VuZHBvaW50OwkvKiBkb24ndCBzZW5kIG9yIGFjY2VwdCBlbmRwdC4gZGlzY3JpbS4gKi8K LSBleHRlcm4gY2hhcgkqYnVuZGxlX25hbWU7CS8qIGJ1bmRsZSBuYW1lIGZvciBtdWx0aWxpbmsg Ki8KLWRpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51eC5jIGIvcHBwZC9zeXMtbGludXguYwotaW5k ZXggOTA4YWE0ZjIyMjk3Li45YjJmMjkzMDI0YWMgMTAwNjQ0Ci0tLS0gYS9wcHBkL3N5cy1saW51 eC5jCi0rKysgYi9wcHBkL3N5cy1saW51eC5jCi1AQCAtNjQxLDYgKzY0MSwyMSBAQCBzdGF0aWMg aW50IG1ha2VfcHBwX3VuaXQoKQotIAl9Ci0gCWlmICh4IDwgMCkKLSAJCWVycm9yKCJDb3VsZG4n dCBjcmVhdGUgbmV3IHBwcCB1bml0OiAlbSIpOwotKwotKwlpZiAoeCA9PSAwICYmIHJlcV9pZm5h bWVbMF0gIT0gJ1wwJykgewotKwkJc3RydWN0IGlmcmVxIGlmcjsKLSsJCWNoYXIgdFtNQVhJRk5B TUVMRU5dOwotKwkJbWVtc2V0KCZpZnIsIDAsIHNpemVvZihzdHJ1Y3QgaWZyZXEpKTsKLSsJCXNs cHJpbnRmKHQsIHNpemVvZih0KSwgIiVzJWQiLCBQUFBfRFJWX05BTUUsIGlmdW5pdCk7Ci0rCQlz dHJuY3B5KGlmci5pZnJfbmFtZSwgdCwgSUZfTkFNRVNJWkUpOwotKwkJc3RybmNweShpZnIuaWZy X25ld25hbWUsIHJlcV9pZm5hbWUsIElGX05BTUVTSVpFKTsKLSsJCXggPSBpb2N0bChzb2NrX2Zk LCBTSU9DU0lGTkFNRSwgJmlmcik7Ci0rCQlpZiAoeCA8IDApCi0rCQkgICAgZXJyb3IoIkNvdWxk bid0IHJlbmFtZSBpbnRlcmZhY2UgJXMgdG8gJXM6ICVtIiwgdCwgcmVxX2lmbmFtZSk7Ci0rCQll bHNlCi0rCQkgICAgaW5mbygiUmVuYW1lZCBpbnRlcmZhY2UgJXMgdG8gJXMiLCB0LCByZXFfaWZu YW1lKTsKLSsJfQotKwotIAlyZXR1cm4geDsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvcHBwc3RhdHMv cHBwc3RhdHMuYyBiL3BwcHN0YXRzL3BwcHN0YXRzLmMKLWluZGV4IDYzNjc5ODhlYjk2Yi4uNDZj YjljMjQ5NDJiIDEwMDY0NAotLS0tIGEvcHBwc3RhdHMvcHBwc3RhdHMuYwotKysrIGIvcHBwc3Rh dHMvcHBwc3RhdHMuYwotQEAgLTg4LDcgKzg4LDYgQEAgaW50CWFmbGFnOwkJCS8qIHByaW50IGFi c29sdXRlIHZhbHVlcywgbm90IGRlbHRhcyAqLwotIGludAlkZmxhZzsJCQkvKiBwcmludCBkYXRh IHJhdGVzLCBub3QgYnl0ZXMgKi8KLSBpbnQJaW50ZXJ2YWwsIGNvdW50OwotIGludAlpbmZpbml0 ZTsKLS1pbnQJdW5pdDsKLSBpbnQJczsJCQkvKiBzb2NrZXQgb3IgL2Rldi9wcHAgZmlsZSBkZXNj cmlwdG9yICovCi0gaW50CXNpZ25hbGxlZDsJCS8qIHNldCBpZiBhbGFybSBnb2VzIG9mZiAiZWFy bHkiICovCi0gY2hhcgkqcHJvZ25hbWU7Ci1AQCAtNDQ5LDYgKzQ0OCw3IEBAIG1haW4oYXJnYywg YXJndikKLSB7Ci0gICAgIGludCBjOwotICNpZmRlZiBTVFJFQU1TCi0rICAgIGludCB1bml0Owot ICAgICBjaGFyICpkZXY7Ci0gI2VuZGlmCi0gCi1AQCAtNTA2LDExICs1MDYsNiBAQCBtYWluKGFy Z2MsIGFyZ3YpCi0gICAgIGlmIChhcmdjID4gMCkKLSAJaW50ZXJmYWNlID0gYXJndlswXTsKLSAK LS0gICAgaWYgKHNzY2FuZihpbnRlcmZhY2UsIFBQUF9EUlZfTkFNRSAiJWQiLCAmdW5pdCkgIT0g MSkgewotLQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIGludGVyZmFjZSAnJXMnIHNwZWNp ZmllZFxuIiwKLS0JCXByb2duYW1lLCBpbnRlcmZhY2UpOwotLSAgICB9Ci0tCi0gI2lmbmRlZiBT VFJFQU1TCi0gICAgIHsKLSAJc3RydWN0IGlmcmVxIGlmcjsKLUBAIC01MzUsNiArNTMwLDExIEBA IG1haW4oYXJnYywgYXJndikKLSAgICAgfQotIAotICNlbHNlCS8qIFNUUkVBTVMgKi8KLSsgICAg aWYgKHNzY2FuZihpbnRlcmZhY2UsIFBQUF9EUlZfTkFNRSAiJWQiLCAmdW5pdCkgIT0gMSkgewot KwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIGludGVyZmFjZSAnJXMnIHNwZWNpZmllZFxu IiwKLSsJCXByb2duYW1lLCBpbnRlcmZhY2UpOwotKyAgICB9Ci0rCi0gI2lmZGVmIF9fb3NmX18K LSAgICAgZGV2ID0gIi9kZXYvc3RyZWFtcy9wcHAiOwotICNlbHNlCmRpZmYgLS1naXQgYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDEzLXBwcGQtUmVtb3ZlLXVudXNlZC1kZWNsYXJhdGlvbi1vZi10dHlu YW1lLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQtZGVj bGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MjE5OWU3ZjdkLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMy1wcHBkLVJl bW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5bmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDI1ICswLDAgQEAKLUZyb206IEdlb3JnZSBCdXJnZXNzIElWIDxnZW9yZ2VAZ2Jpdi5uZXQ+ Ci1EYXRlOiBGcmksIDkgU2VwIDIwMTYgMTc6MzY6NTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0g cHBwZDogUmVtb3ZlIHVudXNlZCBkZWNsYXJhdGlvbiBvZiB0dHluYW1lLgotCi1TaWduZWQtb2Zm LWJ5OiBHZW9yZ2UgQnVyZ2VzcyBJViA8Z2VvcmdlQGdiaXYubmV0PgotCi1JbXBvcnRlZCBmcm9t IHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwg T2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9tYWluLmMgfCAx IC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9t YWluLmMgYi9wcHBkL21haW4uYwotaW5kZXggZjE5ODZlZDY4ZDBiLi43NmI2N2QyNDg1YjcgMTAw NjQ0Ci0tLS0gYS9wcHBkL21haW4uYwotKysrIGIvcHBwZC9tYWluLmMKLUBAIC0yNTcsNyArMjU3 LDYgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9kYiBfX1AoKHZvaWQpKTsKLSBzdGF0aWMgdm9pZCBo YW5kbGVfZXZlbnRzIF9fUCgodm9pZCkpOwotIHZvaWQgcHJpbnRfbGlua19zdGF0cyBfX1AoKHZv aWQpKTsKLSAKLS1leHRlcm4JY2hhcgkqdHR5bmFtZSBfX1AoKGludCkpOwotIGV4dGVybgljaGFy CSpnZXRsb2dpbiBfX1AoKHZvaWQpKTsKLSBpbnQgbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsK LSAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTQtcHBwZC1Qcm92aWRlLWVycm9y LWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2NvdmVyeS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIu NC43LzAwMTQtcHBwZC1Qcm92aWRlLWVycm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2Nv dmVyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlmYzNkNGY2Li4wMDAw MDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNC1wcHBkLVByb3ZpZGUtZXJyb3ItaW1w bGVtZW50YXRpb24taW4tcHBwb2UtZGlzY292ZXJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NTIgKzAsMCBAQAotRnJvbTogU3RlZmFuIE5pY2tsIDxTdGVmYW4uTmlja2xAZ21haWwuY29tPgot RGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxNjo1MjoxMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBw cHBkOiBQcm92aWRlIGVycm9yKCkgaW1wbGVtZW50YXRpb24gaW4gcHBwb2UtZGlzY292ZXJ5Ci0K LVRoZSBwcHBvZS1kaXNjb3ZlcnkgcHJvZ3JhbSBjYWxscyBlcnJvcigpIGZyb20gdGhlIENIRUNL X1JPT00gbWFjcm8KLWRlZmluZWQgaW4gcHBwb2UuaC4gU2luY2UgcHBwb2UtZGlzY292ZXJ5IGlz IGEgc3RhbmRhbG9uZSBwcm9ncmFtIG5vdAotbGlua2VkIHdpdGggdGhlIHJlc3Qgb2YgcHBwZCwg dGhlIG9ubHkgd2F5IHRoaXMgY291bGQgYnVpbGQgaXMgYnkKLWxpbmtpbmcgdG8gZ2xpYmMncyBw cm9wcmlldGFyeSBlcnJvcigzKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbgotb2Yg dGhlIHNhbWUgbmFtZSAoYnV0IHdpdGggZGlmZmVyZW50IGFyZ3VtZW50cykgZGVmaW5lZCBpbiBw cHBkL3V0aWxzLmMuCi0KLVNvIHdpdGggZ2xpYmMgdGhpcyBidWlsZHMsIGJ1dCB3aWxsIHByb2Jh Ymx5IGNyYXNoIHdoZW4gdGhlIGFzc2VydGlvbiBpcwotdHJpZ2dlcmVkLiBBcyB0aGUgYXNzZXJ0 aW9uIGlzIHVubGlrZWx5IHRvIGZhaWwsIG5vYm9keSBoYXMgbm90aWNlZC4KLQotVGhlIGJ1aWxk IGhvd2V2ZXIgZmFpbHMgd2l0aCBtdXNsIGxpYmMgb3IgdUNsaWJjIHNpbmNlIHRoZXkgZG9uJ3QK LXByb3ZpZGUgdGhlIGRvcHBlbGdhbmdlci4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIE5pY2ts IDxTdGVmYW4uTmlja2xAZ21haWwuY29tPgotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQu MS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJy aWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLWRp c2NvdmVyeS5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCsp Ci0KLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMg Yi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMKLWluZGV4IDNkM2JmNGVl Y2M4MS4uNTUwMzdkZmZiMDIzIDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3Bw cG9lLWRpc2NvdmVyeS5jCi0rKysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292 ZXJ5LmMKLUBAIC05LDYgKzksNyBAQAotICAqCi0gICovCi0gCi0rI2luY2x1ZGUgPHN0ZGFyZy5o PgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8 dW5pc3RkLmg+Ci1AQCAtNTUsNiArNTYsMTQgQEAgdm9pZCBkaWUoaW50IHN0YXR1cykKLSAJZXhp dChzdGF0dXMpOwotIH0KLSAKLSt2b2lkIGVycm9yKGNoYXIgKmZtdCwgLi4uKQotK3sKLSsgICAg dmFfbGlzdCBwdmFyOwotKyAgICB2YV9zdGFydChwdmFyLCBmbXQpOwotKyAgICB2ZnByaW50Zihz dGRlcnIsIGZtdCwgcHZhcik7Ci0rICAgIHZhX2VuZChwdmFyKTsKLSt9Ci0rCi0gLyogSW5pdGlh bGl6ZSBmcmFtZSB0eXBlcyB0byBSRkMgMjUxNiB2YWx1ZXMuICBTb21lIGJyb2tlbiBwZWVycyBh cHBhcmVudGx5Ci0gICAgdXNlIGRpZmZlcmVudCBmcmFtZSB0eXBlcy4uLiBzaWdoLi4uICovCi0g CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE1LXBwcG9lLWluY2x1ZGUtbmV0aW5l dC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNS1w cHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0ZTVlZjU4Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgt aW4uaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb206IEx1Ym9taXIg UmludGVsIDxsa3VuZHJha0B2My5zaz4KLURhdGU6IE1vbiwgOSBKYW4gMjAxNyAxMzozNDoyMyAr MDAwMAotU3ViamVjdDogW1BBVENIXSBwcHBvZTogaW5jbHVkZSBuZXRpbmV0L2luLmggYmVmb3Jl IGxpbnV4L2luLmgKLQotVGhpcyBmaXhlcyBidWlsZHMgd2l0aCBuZXdlciBrZXJuZWxzLiBCYXNp Y2FsbHksIDxuZXRpbmV0L2luLmg+IG5lZWRzIHRvIGJlCi1pbmNsdWRlZCBiZWZvcmUgPGxpbnV4 L2luLmg+IG90aGVyd2lzZSB0aGUgZWFybGllciwgdW5hd2FyZSBvZiB0aGUgbGF0dGVyLAotdHJp ZXMgdG8gcmVkZWZpbmUgc3ltYm9scyBhbmQgc3RydWN0dXJlcy4gQWxzbywgPGxpbnV4L2lmX3Bw cG94Lmg+IGRvZXNuJ3Qgd29yawotYWxvbmUgYW55bW9yZSwgc2luY2UgaXQgcHVsbHMgdGhlIGhl YWRlcnMgaW4gdGhlIHdyb25nIG9yZGVyLCBzbyB3ZSBiZXR0ZXIKLWluY2x1ZGUgPG5ldGluZXQv aW4uaD4gZWFybHkuCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIu eHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9u aXguZGU+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCB8IDcgKysrKy0tLQot IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCBiL3BwcGQvcGx1Z2lucy9ycC1w cHBvZS9wcHBvZS5oCi1pbmRleCA5YWIyZWVlMzkxNGMuLmM0YWFhNmU2ODg1NiAxMDA2NDQKLS0t LSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi0rKysgYi9wcHBkL3BsdWdpbnMvcnAt cHBwb2UvcHBwb2UuaAotQEAgLTQ3LDYgKzQ3LDEwIEBACi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQu aD4KLSAjZW5kaWYKLSAKLSsvKiBUaGlzIGhhcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgTGludXgg NC44J3MgbGludXgvaW4uaAotKyAqIGdldHMgZHJhZ2dlZCBpbi4gKi8KLSsjaW5jbHVkZSA8bmV0 aW5ldC9pbi5oPgotKwotIC8qIFVnbHkgaGVhZGVyIGZpbGVzIG9uIHNvbWUgTGludXggYm94ZXMu Li4gKi8KLSAjaWYgZGVmaW5lZChIQVZFX0xJTlVYX0lGX0gpCi0gI2luY2x1ZGUgPGxpbnV4L2lm Lmg+Ci1AQCAtODQsOCArODgsNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUlOVDMyX3Q7Ci0g I2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPG5ldGlu ZXQvaW4uaD4KLS0KLSAjaWZkZWYgSEFWRV9ORVRJTkVUX0lGX0VUSEVSX0gKLSAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+Ci0gCi1AQCAtOTgsNyArMTAwLDYgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25n IFVJTlQzMl90OwotICNlbmRpZgotIAotIAotLQotIC8qIEV0aGVybmV0IGZyYW1lIHR5cGVzIGFj Y29yZGluZyB0byBSRkMgMjUxNiAqLwotICNkZWZpbmUgRVRIX1BQUE9FX0RJU0NPVkVSWSAweDg4 NjMKLSAjZGVmaW5lIEVUSF9QUFBPRV9TRVNTSU9OICAgMHg4ODY0CmRpZmYgLS1naXQgYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40 LjcvMDAxNi1hZGFwdGl2ZV9lY2hvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggYzBmMjIyODI0Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNi1hZGFw dGl2ZV9lY2hvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb206IE1p Y2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBT ZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhZGFwdGl2ZV9lY2hvcwot Ci1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1v ZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0g cHBwZC9sY3AuYyAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gcHBwZC9wcHBkLjggfCAgNSAr KysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEv cHBwZC9sY3AuYyBiL3BwcGQvbGNwLmMKLWluZGV4IDhlZDI3NzhiZmI2Ny4uYzk3YTY0Yjc3NzRm IDEwMDY0NAotLS0tIGEvcHBwZC9sY3AuYwotKysrIGIvcHBwZC9sY3AuYwotQEAgLTczLDYgKzcz LDcgQEAgc3RhdGljIHZvaWQgbGNwX2RlbGF5ZWRfdXAgX19QKCh2b2lkICopKTsKLSAgKi8KLSBp bnQJbGNwX2VjaG9faW50ZXJ2YWwgPSAwOyAJLyogSW50ZXJ2YWwgYmV0d2VlbiBMQ1AgZWNoby1y ZXF1ZXN0cyAqLwotIGludAlsY3BfZWNob19mYWlscyA9IDA7CS8qIFRvbGVyYW5jZSB0byB1bmFu c3dlcmVkIGVjaG8tcmVxdWVzdHMgKi8KLStib29sCWxjcF9lY2hvX2FkYXB0aXZlID0gMDsJLyog cmVxdWVzdCBlY2hvIG9ubHkgaWYgdGhlIGxpbmsgd2FzIGlkbGUgKi8KLSBib29sCWxheF9yZWN2 ID0gMDsJCS8qIGFjY2VwdCBjb250cm9sIGNoYXJzIGluIGFzeW5jbWFwICovCi0gYm9vbAlub2Vu ZHBvaW50ID0gMDsJCS8qIGRvbid0IHNlbmQvYWNjZXB0IGVuZHBvaW50IGRpc2NyaW1pbmF0b3Ig Ki8KLSAKLUBAIC0xNTEsNiArMTUyLDggQEAgc3RhdGljIG9wdGlvbl90IGxjcF9vcHRpb25fbGlz dFtdID0gewotICAgICAgIE9QVF9QUklPIH0sCi0gICAgIHsgImxjcC1lY2hvLWludGVydmFsIiwg b19pbnQsICZsY3BfZWNob19pbnRlcnZhbCwKLSAgICAgICAiU2V0IHRpbWUgaW4gc2Vjb25kcyBi ZXR3ZWVuIExDUCBlY2hvIHJlcXVlc3RzIiwgT1BUX1BSSU8gfSwKLSsgICAgeyAibGNwLWVjaG8t YWRhcHRpdmUiLCBvX2Jvb2wsICZsY3BfZWNob19hZGFwdGl2ZSwKLSsgICAgICAiU3VwcHJlc3Mg TENQIGVjaG8gcmVxdWVzdHMgaWYgdHJhZmZpYyB3YXMgcmVjZWl2ZWQiLCAxIH0sCi0gICAgIHsg ImxjcC1yZXN0YXJ0Iiwgb19pbnQsICZsY3BfZnNtWzBdLnRpbWVvdXR0aW1lLAotICAgICAgICJT ZXQgdGltZSBpbiBzZWNvbmRzIGJldHdlZW4gTENQIHJldHJhbnNtaXNzaW9ucyIsIE9QVF9QUklP IH0sCi0gICAgIHsgImxjcC1tYXgtdGVybWluYXRlIiwgb19pbnQsICZsY3BfZnNtWzBdLm1heHRl cm10cmFuc21pdHMsCi1AQCAtMjMzMSw2ICsyMzM0LDIyIEBAIExjcFNlbmRFY2hvUmVxdWVzdCAo ZikKLSAJfQotICAgICB9Ci0gCi0rICAgIC8qCi0rICAgICAqIElmIGFkYXB0aXZlIGVjaG9zIGhh dmUgYmVlbiBlbmFibGVkLCBvbmx5IHNlbmQgdGhlIGVjaG8gcmVxdWVzdCBpZgotKyAgICAgKiBu byB0cmFmZmljIHdhcyByZWNlaXZlZCBzaW5jZSB0aGUgbGFzdCBvbmUuCi0rICAgICAqLwotKyAg ICBpZiAobGNwX2VjaG9fYWRhcHRpdmUpIHsKLSsJc3RhdGljIHVuc2lnbmVkIGludCBsYXN0X3Br dHNfaW4gPSAwOwotKwotKwl1cGRhdGVfbGlua19zdGF0cyhmLT51bml0KTsKLSsJbGlua19zdGF0 c192YWxpZCA9IDA7Ci0rCi0rCWlmIChsaW5rX3N0YXRzLnBrdHNfaW4gIT0gbGFzdF9wa3RzX2lu KSB7Ci0rCSAgICBsYXN0X3BrdHNfaW4gPSBsaW5rX3N0YXRzLnBrdHNfaW47Ci0rCSAgICByZXR1 cm47Ci0rCX0KLSsgICAgfQotKwotICAgICAvKgotICAgICAgKiBNYWtlIGFuZCBzZW5kIHRoZSBl Y2hvIHJlcXVlc3QgZnJhbWUuCi0gICAgICAqLwotZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIv cHBwZC9wcHBkLjgKLWluZGV4IDY0NjU5Y2Y4NjdiMi4uZWM4YmZkNWMwNjE3IDEwMDY0NAotLS0t IGEvcHBwZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAtNTU4LDYgKzU1OCwxMSBAQCB0 byAxKSBpZiB0aGUgXGZJcHJveHlhcnBcZlIgb3B0aW9uIGlzIHVzZWQsIGFuZCB3aWxsIGVuYWJs ZSB0aGUKLSBkeW5hbWljIElQIGFkZHJlc3Mgb3B0aW9uIChpLmUuIHNldCAvcHJvYy9zeXMvbmV0 L2lwdjQvaXBfZHluYWRkciB0bwotIDEpIGluIGRlbWFuZCBtb2RlIGlmIHRoZSBsb2NhbCBhZGRy ZXNzIGNoYW5nZXMuCi0gLlRQCi0rLkIgbGNwXC1lY2hvXC1hZGFwdGl2ZQotK0lmIHRoaXMgb3B0 aW9uIGlzIHVzZWQgd2l0aCB0aGUgXGZJbGNwXC1lY2hvXC1mYWlsdXJlXGZSIG9wdGlvbiB0aGVu Ci0rcHBwZCB3aWxsIHNlbmQgTENQIGVjaG9cLXJlcXVlc3QgZnJhbWVzIG9ubHkgaWYgbm8gdHJh ZmZpYyB3YXMgcmVjZWl2ZWQKLStmcm9tIHRoZSBwZWVyIHNpbmNlIHRoZSBsYXN0IGVjaG9cLXJl cXVlc3Qgd2FzIHNlbnQuCi0rLlRQCi0gLkIgbGNwXC1lY2hvXC1mYWlsdXJlIFxmSW4KLSBJZiB0 aGlzIG9wdGlvbiBpcyBnaXZlbiwgcHBwZCB3aWxsIHByZXN1bWUgdGhlIHBlZXIgdG8gYmUgZGVh ZAotIGlmIFxmSW5cZlIgTENQIGVjaG9cLXJlcXVlc3RzIGFyZSBzZW50IHdpdGhvdXQgcmVjZWl2 aW5nIGEgdmFsaWQgTENQCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE3LU1ha2Vm aWxlcy1jbGVhbnVwLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNy1NYWtlZmlsZXMtY2xl YW51cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5MDk2ZjcwLi4wMDAw MDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNy1NYWtlZmlsZXMtY2xlYW51cC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2gg PG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6 NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGVzIGNsZWFudXAKLQotRmFjdG9yLW91 dCAkQ09QVFMgYW5kICRMRE9QVFMgdG8gYWxsb3cgZGlzdHJpYnV0aW9ucyB0byBlYXNpbHkgb3Zl cnJpZGUKLXRoZW0uIFByb3Blcmx5IHVzZSAkTERGTEFHUyB3aGVuIGxpbmtpbmcgYW5kICRDRkxB R1Mgd2hlbiBjb21waWxpbmcuCi1EbyBub3Qgc3RyaXAgdGhlIGluc3RhbGxlZCBiaW5hcmllczog dGhpcyBzaG91bGQgYmUgZG9uZSBieSB0aGUKLXBhY2thZ2luZyBzeXN0ZW0gaWYgcmVxdWlyZWQu Ci0KLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWdu ZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0t LQotIGNoYXQvTWFrZWZpbGUubGludXggICAgICAgICAgICAgICAgICB8ICA1ICsrKy0tCi0gcHBw ZC9NYWtlZmlsZS5saW51eCAgICAgICAgICAgICAgICAgIHwgIDcgKysrKy0tLQotIHBwcGQvcGx1 Z2lucy9NYWtlZmlsZS5saW51eCAgICAgICAgICB8ICA0ICsrLS0KLSBwcHBkL3BsdWdpbnMvcHBw b2F0bS9NYWtlZmlsZS5saW51eCAgfCAgNCArKy0tCi0gcHBwZC9wbHVnaW5zL3BwcG9sMnRwL01h a2VmaWxlLmxpbnV4IHwgIDQgKystLQotIHBwcGQvcGx1Z2lucy9yYWRpdXMvTWFrZWZpbGUubGlu dXggICB8IDE2ICsrKysrKysrKy0tLS0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvTWFrZWZp bGUubGludXggfCAxMCArKysrKystLS0tCi0gcHBwZHVtcC9NYWtlZmlsZS5saW51eCAgICAgICAg ICAgICAgIHwgIDkgKysrKysrLS0tCi0gcHBwc3RhdHMvTWFrZWZpbGUubGludXggICAgICAgICAg ICAgIHwgIDcgKysrKy0tLQotIDkgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMjgg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jaGF0L01ha2VmaWxlLmxpbnV4IGIvY2hhdC9N YWtlZmlsZS5saW51eAotaW5kZXggMTA2NWFjNTE5NTc2Li5hNDFkNDg1YjQxNjggMTAwNjQ0Ci0t LS0gYS9jaGF0L01ha2VmaWxlLmxpbnV4Ci0rKysgYi9jaGF0L01ha2VmaWxlLmxpbnV4Ci1AQCAt MTIsMjAgKzEyLDIxIEBAIENERUZTPQkkKENERUYxKSAkKENERUYyKSAkKENERUYzKSAkKENERUY0 KQotIAotIENPUFRTPQktTzIgLWcgLXBpcGUKLSBDRkxBR1M9CSQoQ09QVFMpICQoQ0RFRlMpCi0r TERGTEFHUz0kKExET1BUUykKLSAKLSBJTlNUQUxMPSBpbnN0YWxsCi0gCi0gYWxsOgljaGF0Ci0g Ci0gY2hhdDoJY2hhdC5vCi0tCSQoQ0MpIC1vIGNoYXQgY2hhdC5vCi0rCSQoQ0MpICQoTERGTEFH UykgLW8gY2hhdCBjaGF0Lm8KLSAKLSBjaGF0Lm86CWNoYXQuYwotIAkkKENDKSAtYyAkKENGTEFH UykgLW8gY2hhdC5vIGNoYXQuYwotIAotIGluc3RhbGw6IGNoYXQKLSAJbWtkaXIgLXAgJChCSU5E SVIpICQoTUFORElSKQotLQkkKElOU1RBTEwpIC1zIC1jIGNoYXQgJChCSU5ESVIpCi0rCSQoSU5T VEFMTCkgLWMgY2hhdCAkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA2NDQgY2hhdC44ICQo TUFORElSKQotIAotIGNsZWFuOgotZGlmZiAtLWdpdCBhL3BwcGQvTWFrZWZpbGUubGludXggYi9w cHBkL01ha2VmaWxlLmxpbnV4Ci1pbmRleCBhNzRjOTE0ZmQzYWMuLjE2YjNlZTg3OTc5MSAxMDA2 NDQKLS0tLSBhL3BwcGQvTWFrZWZpbGUubGludXgKLSsrKyBiL3BwcGQvTWFrZWZpbGUubGludXgK LUBAIC04Myw2ICs4Myw3IEBAIElOQ0xVREVfRElSUz0gLUkuLi9pbmNsdWRlCi0gQ09NUElMRV9G TEFHUz0gLURIQVZFX1BBVEhTX0ggLURJUFhfQ0hBTkdFIC1ESEFWRV9NTUFQCi0gCi0gQ0ZMQUdT PSAkKENPUFRTKSAkKENPTVBJTEVfRkxBR1MpICQoSU5DTFVERV9ESVJTKSAnLURERVNURElSPSJA REVTVERJUkAiJwotK0xERkxBR1M9JChMRE9QVFMpCi0gCi0gaWZkZWYgQ0hBUE1TCi0gQ0ZMQUdT ICAgKz0gLURDSEFQTVM9MQotQEAgLTEwMiw3ICsxMDMsNyBAQCBpZmRlZiBVU0VfU1JQCi0gQ0ZM QUdTCSs9IC1EVVNFX1NSUCAtRE9QRU5TU0wgLUkvdXNyL2xvY2FsL3NzbC9pbmNsdWRlCi0gTElC UwkrPSAtbHNycCAtTC91c3IvbG9jYWwvc3NsL2xpYiAtbGNyeXB0bwotIFRBUkdFVFMJKz0gc3Jw LWVudHJ5Ci0tRVhUUkFJTlNUQUxMID0gJChJTlNUQUxMKSAtcyAtYyAtbSA1NTUgc3JwLWVudHJ5 ICQoQklORElSKS9zcnAtZW50cnkKLStFWFRSQUlOU1RBTEwgPSAkKElOU1RBTEwpIC1jIC1tIDU1 NSBzcnAtZW50cnkgJChCSU5ESVIpL3NycC1lbnRyeQotIE1BTlBBR0VTICs9IHNycC1lbnRyeS44 Ci0gRVhUUkFDTEVBTiArPSBzcnAtZW50cnkubwotIE5FRURERVM9eQotQEAgLTIwOCwxMyArMjA5 LDEzIEBAIGFsbDogJChUQVJHRVRTKQotIGluc3RhbGw6IHBwcGQKLSAJbWtkaXIgLXAgJChCSU5E SVIpICQoTUFORElSKQotIAkkKEVYVFJBSU5TVEFMTCkKLS0JJChJTlNUQUxMKSAtcyAtYyAtbSA1 NTUgcHBwZCAkKEJJTkRJUikvcHBwZAotKwkkKElOU1RBTEwpIC1jIC1tIDU1NSBwcHBkICQoQklO RElSKS9wcHBkCi0gCWlmIGNoZ3JwIHBwcHVzZXJzICQoQklORElSKS9wcHBkIDI+L2Rldi9udWxs OyB0aGVuIFwKLSAJICBjaG1vZCBvLXJ4LHUrcyAkKEJJTkRJUikvcHBwZDsgZmkKLSAJJChJTlNU QUxMKSAtYyAtbSA0NDQgcHBwZC44ICQoTUFORElSKQotIAotIHBwcGQ6ICQoUFBQRE9CSlMpCi0t CSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vIHBwcGQgJChQUFBET0JKUykgJChMSUJTKQot KwkkKENDKSAkKExERkxBR1MpIC1vIHBwcGQgJChQUFBET0JKUykgJChMSUJTKQotIAotIHNycC1l bnRyeToJc3JwLWVudHJ5LmMKLSAJJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLW8gJEAgc3Jw LWVudHJ5LmMgJChMSUJTKQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51 eCBiL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotaW5kZXggOGE5MGUzOTNhMDU3Li4wZjlk MzdkMjk1M2IgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKLSsrKyBi L3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAotQEAgLTEsNyArMSw3IEBACi0gI0NDCT0gZ2Nj Ci0gQ09QVFMJPSAtTzIgLWcKLSBDRkxBR1MJPSAkKENPUFRTKSAtSS4uIC1JLi4vLi4vaW5jbHVk ZSAtZlBJQwotLUxERkxBR1MJPSAtc2hhcmVkCi0rTERGTEFHUwk9ICQoTERPUFRTKQotIElOU1RB TEwJPSBpbnN0YWxsCi0gCi0gREVTVERJUiA9ICQoSU5TVFJPT1QpQERFU1RESVJACi1AQCAtMzAs NyArMzAsNyBAQCBhbGw6CSQoUExVR0lOUykKLSAJZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChN QUtFKSAkKE1GTEFHUykgLUMgJCRkIGFsbCB8fCBleGl0ICQkPzsgZG9uZQotIAotICUuc286ICUu YwotLQkkKENDKSAtbyAkQCAkKExERkxBR1MpICQoQ0ZMQUdTKSAkXgotKwkkKENDKSAtbyAkQCAk KExERkxBR1MpIC1zaGFyZWQgJChDRkxBR1MpICReCi0gCi0gVkVSU0lPTiA9ICQoc2hlbGwgYXdr IC1GICciJyAnL1ZFUlNJT04vIHsgcHJpbnQgJCQyOyB9JyAuLi9wYXRjaGxldmVsLmgpCi0gCi1k aWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGludXggYi9wcHBkL3Bs dWdpbnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eAotaW5kZXggMjBmNjJlNjMxZDIzLi4wMDI2MDNj NmNiZWYgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eAot KysrIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGludXgKLUBAIC0xLDcgKzEsNyBA QAotICNDQwk9IGdjYwotIENPUFRTCT0gLU8yIC1nCi0gQ0ZMQUdTCT0gJChDT1BUUykgLUkuLi8u LiAtSS4uLy4uLy4uL2luY2x1ZGUgLWZQSUMKLS1MREZMQUdTCT0gLXNoYXJlZAotK0xERkxBR1MJ PSAkKExET1BUUykKLSBJTlNUQUxMCT0gaW5zdGFsbAotIAotICMqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQEAg LTMzLDcgKzMzLDcgQEAgZW5kaWYKLSBhbGw6ICQoUExVR0lOKQotIAotICQoUExVR0lOKTogJChQ TFVHSU5fT0JKUykKLS0JJChDQykgJChDRkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChMSUJTKQot KwkkKENDKSAkKExERkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChMSUJTKQotIAotIGluc3RhbGw6 IGFsbAotIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKExJQkRJUikKLWRpZmYgLS1naXQgYS9wcHBk L3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvcHBwb2wydHAv TWFrZWZpbGUubGludXgKLWluZGV4IGVhMzUzOGUyMmQ1Ni4uZGU1Y2MxMmU3OWMzIDEwMDY0NAot LS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9sMnRwL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL3Bs dWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXgKLUBAIC0xLDcgKzEsNyBAQAotICNDQwk9IGdj YwotIENPUFRTCT0gLU8yIC1nCi0gQ0ZMQUdTCT0gJChDT1BUUykgLUkuIC1JLi4vLi4gLUkuLi8u Li8uLi9pbmNsdWRlIC1mUElDCi0tTERGTEFHUwk9IC1zaGFyZWQKLStMREZMQUdTCT0gJChMRE9Q VFMpCi0gSU5TVEFMTAk9IGluc3RhbGwKLSAKLSAjKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUBAIC0xNiw3ICsx Niw3IEBAIFBMVUdJTlMgOj0gcHBwb2wydHAuc28gb3BlbmwydHAuc28KLSBhbGw6ICQoUExVR0lO UykKLSAKLSAlLnNvOiAlLm8KLS0JJChDQykgJChDRkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChM SUJTKQotKwkkKENDKSAkKExERkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChMSUJTKQotIAotIGlu c3RhbGw6IGFsbAotIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKExJQkRJUikKLWRpZmYgLS1naXQg YS9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9wbHVnaW5zL3JhZGl1 cy9NYWtlZmlsZS5saW51eAotaW5kZXggMjRlZDNlNTgwYzRkLi40MzZmZjJmZDBjMjMgMTAwNjQ0 Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL3Bs dWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4Ci1AQCAtMTIsNyArMTIsOSBAQCBWRVJTSU9OID0g JChzaGVsbCBhd2sgLUYgJyInICcvVkVSU0lPTi8geyBwcmludCAkJDI7IH0nIC4uLy4uL3BhdGNo bGV2ZWwuaCkKLSBJTlNUQUxMCT0gaW5zdGFsbAotIAotIFBMVUdJTj1yYWRpdXMuc28gcmFkYXR0 ci5zbyByYWRyZWFsbXMuc28KLS1DRkxBR1M9LUkuIC1JLi4vLi4gLUkuLi8uLi8uLi9pbmNsdWRl IC1PMiAtZlBJQyAtRFJDX0xPR19GQUNJTElUWT1MT0dfREFFTU9OCi0rQ09QVFM9LWcgLU8yCi0r Q0ZMQUdTID0gJChDT1BUUykgLUkuIC1JLi4vLi4gLUkuLi8uLi8uLi9pbmNsdWRlIC1mUElDIC1E UkNfTE9HX0ZBQ0lMSVRZPUxPR19EQUVNT04KLStMREZMQUdTPSAkKExET1BUUykKLSAKLSAjIFVu Y29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0J3MK LSAjIE1TLUNIQVAgYXV0aGVudGljYXRpb24gcHJvdG9jb2wuCi1AQCAtMzYsMjAgKzM4LDIwIEBA IGFsbDogJChQTFVHSU4pCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1 ICQoTElCRElSKQotLQkkKElOU1RBTEwpIC1zIC1jIC1tIDc1NSByYWRpdXMuc28gJChMSUJESVIp Ci0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNzU1IHJhZGF0dHIuc28gJChMSUJESVIpCi0tCSQoSU5T VEFMTCkgLXMgLWMgLW0gNzU1IHJhZHJlYWxtcy5zbyAkKExJQkRJUikKLSsJJChJTlNUQUxMKSAt YyAtbSA3NTUgcmFkaXVzLnNvICQoTElCRElSKQotKwkkKElOU1RBTEwpIC1jIC1tIDc1NSByYWRh dHRyLnNvICQoTElCRElSKQotKwkkKElOU1RBTEwpIC1jIC1tIDc1NSByYWRyZWFsbXMuc28gJChM SUJESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcGQtcmFkaXVzLjggJChNQU5ESVIpCi0g CSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcGQtcmFkYXR0ci44ICQoTUFORElSKQotIAotIHJhZGl1 cy5zbzogcmFkaXVzLm8gbGlicmFkaXVzY2xpZW50LmEKLS0JJChDQykgLW8gcmFkaXVzLnNvIC1z aGFyZWQgcmFkaXVzLm8gbGlicmFkaXVzY2xpZW50LmEKLSsJJChDQykgJChMREZMQUdTKSAtbyBy YWRpdXMuc28gLXNoYXJlZCByYWRpdXMubyBsaWJyYWRpdXNjbGllbnQuYQotIAotIHJhZGF0dHIu c286IHJhZGF0dHIubwotLQkkKENDKSAtbyByYWRhdHRyLnNvIC1zaGFyZWQgcmFkYXR0ci5vCi0r CSQoQ0MpICQoTERGTEFHUykgLW8gcmFkYXR0ci5zbyAtc2hhcmVkIHJhZGF0dHIubwotIAotIHJh ZHJlYWxtcy5zbzogcmFkcmVhbG1zLm8KLS0JJChDQykgLW8gcmFkcmVhbG1zLnNvIC1zaGFyZWQg cmFkcmVhbG1zLm8KLSsJJChDQykgJChMREZMQUdTKSAtbyByYWRyZWFsbXMuc28gLXNoYXJlZCBy YWRyZWFsbXMubwotIAotIENMSUVOVE9CSlMgPSBhdnBhaXIubyBidWlsZHJlcS5vIGNvbmZpZy5v IGRpY3QubyBpcF91dGlsLm8gXAotIAljbGllbnRpZC5vIHNlbmRzZXJ2ZXIubyBsb2NrLm8gdXRp bC5vIG1kNS5vCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL01ha2VmaWxlLmxp bnV4IGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL01ha2VmaWxlLmxpbnV4Ci1pbmRleCA1ZDdhMjcx OTU0NWQuLjAwZTBhZjZkYTIwYyAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9N YWtlZmlsZS5saW51eAotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL01ha2VmaWxlLmxpbnV4 Ci1AQCAtMjcsMTAgKzI3LDEyIEBAIFJQX1ZFUlNJT049My44cAotIAotIENPUFRTPS1PMiAtZwot IENGTEFHUz0kKENPUFRTKSAtSS4uLy4uLy4uL2luY2x1ZGUgJy1EUlBfVkVSU0lPTj0iJChSUF9W RVJTSU9OKSInCi0rTERGTEFHUz0kKExET1BUUykKLSsKLSBhbGw6IHJwLXBwcG9lLnNvIHBwcG9l LWRpc2NvdmVyeQotIAotIHBwcG9lLWRpc2NvdmVyeTogcHBwb2UtZGlzY292ZXJ5Lm8gZGVidWcu bwotLQkkKENDKSAtbyBwcHBvZS1kaXNjb3ZlcnkgcHBwb2UtZGlzY292ZXJ5Lm8gZGVidWcubwot KwkkKENDKSAkKExERkxBR1MpIC1vIHBwcG9lLWRpc2NvdmVyeSBwcHBvZS1kaXNjb3ZlcnkubyBk ZWJ1Zy5vCi0gCi0gcHBwb2UtZGlzY292ZXJ5Lm86IHBwcG9lLWRpc2NvdmVyeS5jCi0gCSQoQ0Mp ICQoQ0ZMQUdTKSAtYyAtbyBwcHBvZS1kaXNjb3ZlcnkubyBwcHBvZS1kaXNjb3ZlcnkuYwotQEAg LTM5LDEzICs0MSwxMyBAQCBkZWJ1Zy5vOiBkZWJ1Zy5jCi0gCSQoQ0MpICQoQ0ZMQUdTKSAtYyAt byBkZWJ1Zy5vIGRlYnVnLmMKLSAKLSBycC1wcHBvZS5zbzogcGx1Z2luLm8gZGlzY292ZXJ5Lm8g aWYubyBjb21tb24ubwotLQkkKENDKSAtbyBycC1wcHBvZS5zbyAtc2hhcmVkIHBsdWdpbi5vIGRp c2NvdmVyeS5vIGlmLm8gY29tbW9uLm8KLSsJJChDQykgJChMREZMQUdTKSAtbyBycC1wcHBvZS5z byAtc2hhcmVkICReCi0gCi0gaW5zdGFsbDogYWxsCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQo TElCRElSKQotLQkkKElOU1RBTEwpIC1zIC1jIC1tIDQ1NTAgcnAtcHBwb2Uuc28gJChMSUJESVIp Ci0rCSQoSU5TVEFMTCkgLWMgLW0gNDU1MCBycC1wcHBvZS5zbyAkKExJQkRJUikKLSAJJChJTlNU QUxMKSAtZCAtbSA3NTUgJChCSU5ESVIpCi0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNTU1IHBwcG9l LWRpc2NvdmVyeSAkKEJJTkRJUikKLSsJJChJTlNUQUxMKSAtYyAtbSA1NTUgcHBwb2UtZGlzY292 ZXJ5ICQoQklORElSKQotIAotIGNsZWFuOgotIAlybSAtZiAqLm8gKi5zbyBwcHBvZS1kaXNjb3Zl cnkKLWRpZmYgLS1naXQgYS9wcHBkdW1wL01ha2VmaWxlLmxpbnV4IGIvcHBwZHVtcC9NYWtlZmls ZS5saW51eAotaW5kZXggYWMwMjhmNmJmNGYwLi42NWU1YzE0OTE0ZmIgMTAwNjQ0Ci0tLS0gYS9w cHBkdW1wL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Ci1AQCAt Miw3ICsyLDEwIEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAotIEJJTkRJUiA9ICQo REVTVERJUikvc2JpbgotIE1BTkRJUiA9ICQoREVTVERJUikvc2hhcmUvbWFuL21hbjgKLSAKLS1D RkxBR1M9IC1PIC1JLi4vaW5jbHVkZS9uZXQKLStDT1BUUz0tTzIgLWcKLStDRkxBR1M9ICQoQ09Q VFMpIC1JLi4vaW5jbHVkZS9uZXQKLStMREZMQUdTPSQoTERPUFRTKQotKwotIE9CSlMgPSBwcHBk dW1wLm8gYnNkLWNvbXAubyBkZWZsYXRlLm8gemxpYi5vCi0gCi0gSU5TVEFMTD0gaW5zdGFsbAot QEAgLTEwLDEyICsxMywxMiBAQCBJTlNUQUxMPSBpbnN0YWxsCi0gYWxsOglwcHBkdW1wCi0gCi0g cHBwZHVtcDogJChPQkpTKQotLQkkKENDKSAtbyBwcHBkdW1wICQoT0JKUykKLSsJJChDQykgJChM REZMQUdTKSAtbyBwcHBkdW1wICQoT0JKUykKLSAKLSBjbGVhbjoKLSAJcm0gLWYgcHBwZHVtcCAk KE9CSlMpICp+Ci0gCi0gaW5zdGFsbDoKLSAJbWtkaXIgLXAgJChCSU5ESVIpICQoTUFORElSKQot LQkkKElOU1RBTEwpIC1zIC1jIHBwcGR1bXAgJChCSU5ESVIpCi0rCSQoSU5TVEFMTCkgLWMgcHBw ZHVtcCAkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA0NDQgcHBwZHVtcC44ICQoTUFORElS KQotZGlmZiAtLWdpdCBhL3BwcHN0YXRzL01ha2VmaWxlLmxpbnV4IGIvcHBwc3RhdHMvTWFrZWZp bGUubGludXgKLWluZGV4IGNjYTZmMGY2MWQ4Ny4uOWVjOGU4MDM2NjVhIDEwMDY0NAotLS0tIGEv cHBwc3RhdHMvTWFrZWZpbGUubGludXgKLSsrKyBiL3BwcHN0YXRzL01ha2VmaWxlLmxpbnV4Ci1A QCAtMTAsMjMgKzEwLDI0IEBAIFBQUFNUQVRTUkNTID0gcHBwc3RhdHMuYwotIFBQUFNUQVRPQkpT ID0gcHBwc3RhdHMubwotIAotICNDQyA9IGdjYwotLUNPUFRTID0gLU8KLStDT1BUUyA9IC1PMiAt ZwotIENPTVBJTEVfRkxBR1MgPSAtSS4uL2luY2x1ZGUKLSBMSUJTID0KLSAKLSBJTlNUQUxMPSBp bnN0YWxsCi0gCi0gQ0ZMQUdTID0gJChDT1BUUykgJChDT01QSUxFX0ZMQUdTKQotK0xERkxBR1M9 ICQoTERPUFRTKQotIAotIGFsbDogcHBwc3RhdHMKLSAKLSBpbnN0YWxsOiBwcHBzdGF0cwotIAkt bWtkaXIgLXAgJChNQU5ESVIpCi0tCSQoSU5TVEFMTCkgLXMgLWMgcHBwc3RhdHMgJChCSU5ESVIp Ci0rCSQoSU5TVEFMTCkgLWMgcHBwc3RhdHMgJChCSU5ESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0g NDQ0IHBwcHN0YXRzLjggJChNQU5ESVIpCi0gCi0gcHBwc3RhdHM6ICQoUFBQU1RBVFNSQ1MpCi0t CSQoQ0MpICQoQ0ZMQUdTKSAtbyBwcHBzdGF0cyBwcHBzdGF0cy5jICQoTElCUykKLSsJJChDQykg JChMREZMQUdTKSAkKENGTEFHUykgLW8gcHBwc3RhdHMgcHBwc3RhdHMuYyAkKExJQlMpCi0gCi0g Y2xlYW46Ci0gCXJtIC1mIHBwcHN0YXRzICp+ICMqIGNvcmUKZGlmZiAtLWdpdCBhL3BhdGNoZXMv cHBwLTIuNC43LzAwMTgtQnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRl di1wcHAtb24tcC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTgtQnVnLTMwNjI2MS1wcHBk LWRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNDE2NjlkMTJhLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAt Mi40LjcvMDAxOC1CdWctMzA2MjYxLXBwcGQtZG9lcy1ub3QtcHJvcGVybHktY2xvc2UtZGV2LXBw cC1vbi1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbTogU2ltb24g UGV0ZXIgPGRuLnRscEBnbXgubmV0PgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSAr MDIwMAotU3ViamVjdDogW1BBVENIXSBCdWcjMzA2MjYxOiBwcHBkIGRvZXMgbm90IHByb3Blcmx5 IGNsb3NlIC9kZXYvcHBwIG9uIHBlcnNpc3QKLQotV2hlbiB1c2luZyB0aGUga2VybmVsIFBQUG9F IGRyaXZlciwgcHBwZCBuZXZlcgotY2xvc2VzIC9kZXYvcHBwIHdoZW4gdGhlIGxpbmsgaGFzIGNv bWUgZG93bi4KLQotSXQgb3BlbnMgc3VwZXJmbHVvdXMgZmRzIHRvIHRoZSBkZXZpY2UgZWFjaCB0 aW1lIGl0IHJlLW9wZW5zIHRoZQotY29ubmVjdGlvbiwgd2l0aCB0aGUgdW5jbG9zZWQgb25lcyBm YWxzZWx5IHJlcG9ydGVkIGFsd2F5cyByZWFkeSBmb3IKLWRhdGEgYnkgc2VsZWN0KCkuCi0KLVRo aXMgbWFrZXMgcHBwZCBlYXQgdXAgMTAwJSBDUFUgdGltZSBhZnRlciB0aGUgZmlyc3QgcGVyc2lz dCBiZWNhdXNlIG9mCi10aGUgYWx3YXlzIGluc3RhbnRseSByZXR1cm5pbmcgc2VsZWN0KCkgb24g dGhlIHVuY2xvc2VkIGZkcy4KLQotVGhlIHByb2JsZW0gYWxzbyBvY2N1cnMgd2l0aCB0aGUgdXBz dHJlYW0gdmVyc2lvbiwgYnV0IGRvZXMgbm90IG9jY3VyCi13aGVuIGEgcHR5L3R0eSBkZXZpY2Ug aXMgdXNlZCBmb3IgdGhlIHBwcCBjb25uZWN0aW9uLgotCi0KLQotSW1wb3J0ZWQgZnJvbSBwcHBf Mi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJp Y2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQotIHBwcGQvc3lzLWxpbnV4LmMgfCA3 ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQg YS9wcHBkL3N5cy1saW51eC5jIGIvcHBwZC9zeXMtbGludXguYwotaW5kZXggOWIyZjI5MzAyNGFj Li42ZDI5ZGM4ZTg1OTQgMTAwNjQ0Ci0tLS0gYS9wcHBkL3N5cy1saW51eC5jCi0rKysgYi9wcHBk L3N5cy1saW51eC5jCi1AQCAtNDU4LDYgKzQ1OCwxMyBAQCBpbnQgZ2VuZXJpY19lc3RhYmxpc2hf cHBwIChpbnQgZmQpCi0gICAgIGlmIChuZXdfc3R5bGVfZHJpdmVyKSB7Ci0gCWludCBmbGFnczsK LSAKLSsgICAgICAgIC8qIGlmIGEgcHBwX2ZkIGlzIGFscmVhZHkgb3BlbiwgY2xvc2UgaXQgZmly c3QgKi8KLSsgICAgICAgIGlmKHBwcF9mZCA+IDApIHsKLSsgICAgICAgICAgY2xvc2UocHBwX2Zk KTsKLSsgICAgICAgICAgcmVtb3ZlX2ZkKHBwcF9mZCk7Ci0rICAgICAgICAgIHBwcF9mZCA9IC0x OwotKyAgICAgICAgfQotKwotIAkvKiBPcGVuIGFuIGluc3RhbmNlIG9mIC9kZXYvcHBwIGFuZCBj b25uZWN0IHRoZSBjaGFubmVsIHRvIGl0ICovCi0gCWlmIChpb2N0bChmZCwgUFBQSU9DR0NIQU4s ICZjaGluZGV4KSA9PSAtMSkgewotIAkgICAgZXJyb3IoIkNvdWxkbid0IGdldCBjaGFubmVsIG51 bWJlcjogJW0iKTsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4 Mi1wcHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaCBiL3BhdGNo ZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0 ZWQtdXBvbi1kZXRhYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4NWM3 NWQ4Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxOS1CdWctMjg0MzgyLXBw cC1saW5rcGlkZmlsZS1pcy1ub3QtY3JlYXRlZC11cG9uLWRldGFjLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbTogImhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdSIg PGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6 MTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIzI4NDM4MjogcHBwOiBsaW5rcGlkZmls ZSBpcyBub3QgY3JlYXRlZCB1cG9uIGRldGFjaG1lbnQKLQotUGFja2FnZTogcHBwCi1WZXJzaW9u OiAyLjQuMisyMDA0MDQyOC0yCi1TZXZlcml0eTogd2lzaGxpc3QKLQotV2hlbiBwcHBkIGRldGFj aGVzIGZyb20gdGhlIHBhcmVudCBub3JtYWxseSwgdGhhdCBpcywgd2l0aG91dCBub2RldGFjaAot b3IgdXBkZXRhY2ggc2V0LCB0aGUgbGlua3BpZGZpbGUgaXMgbm90IGNyZWF0ZWQgZXZlbiB3aGVu IGxpbmtuYW1lIGlzCi1zZXQuCi0KLVRoaXMgaXMgYmVjYXVzZSB0aGUgY3JlYXRlX2xpbmtwaWRm aWxlIGNhbGwgaW4gZGV0YWNoKCkgaXMgb25seSBtYWRlCi1pZiB0aGUgbGlua3BpZGZpbGUgaXMg ZmlsbGVkIGluLiAgSG93ZXZlciwgbGlua3BpZGZpbGUgaXMgbmV2ZXIgZmlsbGVkCi1pbiB1bnRp bCBjcmVhdGVfbGlua3BpZGZpbGUgaGFzIGJlZW4gY2FsbGVkLgotCi1JTUhPIHRoZSBjYWxsIHNo b3VsZCBiZSBtYWRlIHVuY29uZHRpb25hbGx5IGluIGRldGFjaCgpIHNpbmNlCi1jcmVhdGVfbGlu a3BpZGZpbGUgZG9lcyBpdHMgb3duIGNoZWNrIG9uIGxpbmtuYW1lIGFueXdheS4KLQotUGxlYXNl IG5vdGUgdGhhdCB0aGUgdmVyc2lvbiBvZiBwcHBkIGluIHdvb2R5IGFsd2F5cyB3cm90ZSB0aGUK LWxpbmtwaWRmaWxlIGFmdGVyIGRldGFjaGluZy4gIEl0IGRpZCBzbyBpbiBtYWluKCkgaG93ZXZl ci4gIFRoYXQKLWNhbGwgaGFzIG5vdyBiZWVuIHJlbW92ZWQgd2hpY2ggaXMgd2h5IEknbSBzZWVp bmcgdGhpcyBwcm9ibGVtLgotCi1bLi4uXQotCi0tLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQu Ny0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8 bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9tYWluLmMgfCAzICstLQotIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKLWluZGV4IDc2YjY3ZDI0ODViNy4uOGUzMTM2 NWYwYzU4IDEwMDY0NAotLS0tIGEvcHBwZC9tYWluLmMKLSsrKyBiL3BwcGQvbWFpbi5jCi1AQCAt NzY1LDggKzc2NSw3IEBAIGRldGFjaCgpCi0gCS8qIHVwZGF0ZSBwaWQgZmlsZXMgaWYgdGhleSBo YXZlIGJlZW4gd3JpdHRlbiBhbHJlYWR5ICovCi0gCWlmIChwaWRmaWxlbmFtZVswXSkKLSAJICAg IGNyZWF0ZV9waWRmaWxlKHBpZCk7Ci0tCWlmIChsaW5rcGlkZmlsZVswXSkKLS0JICAgIGNyZWF0 ZV9saW5rcGlkZmlsZShwaWQpOwotKwljcmVhdGVfbGlua3BpZGZpbGUocGlkKTsKLSAJZXhpdCgw KTsJCS8qIHBhcmVudCBkaWVzICovCi0gICAgIH0KLSAgICAgc2V0c2lkKCk7CmRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIyLWNvc21ldGljLWNsZWFudXAtb2YtdGhlLXBwcG9hdG0t cGx1Z2luLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMi1jb3NtZXRpYy1jbGVhbnVwLW9m LXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZWUyMmM3NGI2Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMi1jb3NtZXRp Yy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDkwICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4 LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BB VENIXSBjb3NtZXRpYyBjbGVhbnVwIG9mIHRoZSBwcHBvYXRtIHBsdWdpbgotCi1SZW1vdmVkIHNv bWUgZGVidWdnaW5nIG1lc3NhZ2VzIGFuZCBnZW5lcmFsbHkgY2xlYW5lZCB1cCB0aGUgc291cmNl LgotCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2ln bmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0t LS0KLSBwcHBkL3BsdWdpbnMvcHBwb2F0bS9wcHBvYXRtLmMgfCAyMyArKysrKysrKysrKysrLS0t LS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYyBiL3BwcGQv cGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwotaW5kZXggYTc1NjBlOWZiMGM2Li45MGQwYzlhODVk OWYgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcHBwb2F0bS9wcHBvYXRtLmMKLSsrKyBiL3Bw cGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwotQEAgLTcwLDE4ICs3MCwyMCBAQCBzdGF0aWMg aW50IHNldGRldm5hbWVfcHBwb2F0bShjb25zdCBjaGFyICpjcCwgY29uc3QgY2hhciAqKmFyZ3Ys IGludCBkb2l0KQotIHsKLSAJc3RydWN0IHNvY2thZGRyX2F0bXB2YyBhZGRyOwotIAlleHRlcm4g c3RydWN0IHN0YXQgZGV2c3RhdDsKLSsKLSAJaWYgKGRldmljZV9nb3Rfc2V0KQotIAkJcmV0dXJu IDA7Ci0tCS8vaW5mbygiUFBQb0FUTSBzZXRkZXZuYW1lX3BwcG9hdG06ICclcyciLCBjcCk7Ci0r Ci0gCW1lbXNldCgmYWRkciwgMCwgc2l6ZW9mIGFkZHIpOwotIAlpZiAodGV4dDJhdG0oY3AsIChz dHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsIHNpemVvZihhZGRyKSwKLS0JICAgIFQyQV9QVkMgfCBU MkFfTkFNRSkgPCAwKSB7Ci0tICAgICAgICAgICAgICAgaWYoZG9pdCkKLS0gICAgICAgICAgICAg ICAgICAgaW5mbygiYXRtIGRvZXMgbm90IHJlY29nbml6ZTogJXMiLCBjcCk7Ci0rCSAgICBUMkFf UFZDIHwgVDJBX05BTUUgfCBUMkFfV0lMRENBUkQpIDwgMCkgewotKwkJaWYgKGRvaXQpCi0rCQkJ aW5mbygiY2Fubm90IHBhcnNlIHRoZSBBVE0gYWRkcmVzczogJXMiLCBjcCk7Ci0gCQlyZXR1cm4g MDsKLS0gICAgICAgICAgIH0KLS0JaWYgKCFkb2l0KSByZXR1cm4gMTsKLS0JLy9pZiAoIWRldl9z ZXRfb2soKSkgcmV0dXJuIC0xOwotKwl9Ci0rCWlmICghZG9pdCkKLSsJCXJldHVybiAxOwotKwot IAltZW1jcHkoJnB2Y2FkZHIsICZhZGRyLCBzaXplb2YgcHZjYWRkcik7Ci0gCXN0cmxjcHkoZGV2 bmFtLCBjcCwgc2l6ZW9mIGRldm5hbSk7Ci0gCWRldnN0YXQuc3RfbW9kZSA9IFNfSUZTT0NLOwot QEAgLTkzLDcgKzk1LDYgQEAgc3RhdGljIGludCBzZXRkZXZuYW1lX3BwcG9hdG0oY29uc3QgY2hh ciAqY3AsIGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgZG9pdCkKLSAJCWxjcF9hbGxvd29wdGlvbnNb MF0ubmVnX2FzeW5jbWFwID0gMDsKLSAJCWxjcF93YW50b3B0aW9uc1swXS5uZWdfcGNvbXByZXNz aW9uID0gMDsKLSAJfQotLQlpbmZvKCJQUFBvQVRNIHNldGRldm5hbWVfcHBwb2F0bSAtIFNVQ0NF U1M6JXMiLCBjcCk7Ci0gCWRldmljZV9nb3Rfc2V0ID0gMTsKLSAJcmV0dXJuIDE7Ci0gfQotQEAg LTEwOCw2ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBub19kZXZpY2VfZ2l2ZW5fcHBwb2F0bSh2b2lk KQotIHN0YXRpYyB2b2lkIHNldF9saW5lX2Rpc2NpcGxpbmVfcHBwb2F0bShpbnQgZmQpCi0gewot IAlzdHJ1Y3QgYXRtX2JhY2tlbmRfcHBwIGJlOwotKwotIAliZS5iYWNrZW5kX251bSA9IEFUTV9C QUNLRU5EX1BQUDsKLSAJaWYgKCFsbGNfZW5jYXBzKQotIAkJYmUuZW5jYXBzID0gUFBQT0FUTV9F TkNBUFNfVkM7Ci1AQCAtMTE1LDYgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHNldF9saW5lX2Rpc2Np cGxpbmVfcHBwb2F0bShpbnQgZmQpCi0gCQliZS5lbmNhcHMgPSBQUFBPQVRNX0VOQ0FQU19MTEM7 Ci0gCWVsc2UKLSAJCWJlLmVuY2FwcyA9IFBQUE9BVE1fRU5DQVBTX0FVVE9ERVRFQ1Q7Ci0rCi0g CWlmIChpb2N0bChmZCwgQVRNX1NFVEJBQ0tFTkQsICZiZSkgPCAwKQotIAkJZmF0YWwoImlvY3Rs KEFUTV9TRVRCQUNLRU5EKTogJW0iKTsKLSB9Ci1AQCAtMTcyLDcgKzE3NSw3IEBAIHN0YXRpYyB2 b2lkIGRpc2Nvbm5lY3RfcHBwb2F0bSh2b2lkKQotIAotIHZvaWQgcGx1Z2luX2luaXQodm9pZCkK LSB7Ci0tI2lmIGRlZmluZWQoX19saW51eF9fKQotKyNpZmRlZiBsaW51eAotIAlleHRlcm4gaW50 IG5ld19zdHlsZV9kcml2ZXI7CS8qIEZyb20gc3lzLWxpbnV4LmMgKi8KLSAJaWYgKCFwcHBfYXZh aWxhYmxlKCkgJiYgIW5ld19zdHlsZV9kcml2ZXIpCi0gCQlmYXRhbCgiS2VybmVsIGRvZXNuJ3Qg c3VwcG9ydCBwcHBfZ2VuZXJpYyAtICIKLUBAIC0xODAsOSArMTgzLDkgQEAgdm9pZCBwbHVnaW5f aW5pdCh2b2lkKQotICNlbHNlCi0gCWZhdGFsKCJObyBQUFBvQVRNIHN1cHBvcnQgb24gdGhpcyBP UyIpOwotICNlbmRpZgotLQlpbmZvKCJQUFBvQVRNIHBsdWdpbl9pbml0Iik7Ci0gCWFkZF9vcHRp b25zKHBwcG9hX29wdGlvbnMpOwotIH0KLSsKLSBzdHJ1Y3QgY2hhbm5lbCBwcHBvYV9jaGFubmVs ID0gewotICAgICBvcHRpb25zOiBwcHBvYV9vcHRpb25zLAotICAgICBwcm9jZXNzX2V4dHJhX29w dGlvbnM6IE5VTEwsCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIzLXBwcG9lX25v YWRzLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMy1wcHBvZV9ub2Fkcy5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ3MTJkZTE3Li4wMDAwMDAwMDAKLS0tIGEvcGF0 Y2hlcy9wcHAtMi40LjcvMDAyMy1wcHBvZV9ub2Fkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDI1ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4 LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BB VENIXSBwcHBvZV9ub2FkcwotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4u dGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIHwgMyAtLS0K LSAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1 Z2lucy9ycC1wcHBvZS9wbHVnaW4uYyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYwot aW5kZXggYzg5YmU5NDI1MGJjLi43ODA0YjE4NGYwY2IgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdp bnMvcnAtcHBwb2UvcGx1Z2luLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4u YwotQEAgLTM3Nyw5ICszNzcsNiBAQCBwbHVnaW5faW5pdCh2b2lkKQotICAgICB9Ci0gCi0gICAg IGFkZF9vcHRpb25zKE9wdGlvbnMpOwotLQotLSAgICBpbmZvKCJSUC1QUFBvRSBwbHVnaW4gdmVy c2lvbiAlcyBjb21waWxlZCBhZ2FpbnN0IHBwcGQgJXMiLAotLQkgUlBfVkVSU0lPTiwgVkVSU0lP Tik7Ci0gfQotIAotIHZvaWQgcHBwb2VfY2hlY2tfb3B0aW9ucyh2b2lkKQpkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxl LnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxk LXJlYWRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTdiMTY5MDEu LjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI0LW1ha2UtX1BBVEhfQ09OTkVS UlMtd29ybGQtcmVhZGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1G cm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNh dCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZSBfUEFU SF9DT05ORVJSUyB3b3JsZCByZWFkYWJsZQotCi1UaGVyZSBpcyBub3RoaW5nIHNlY3VyaXR5LXNl bnNpdGl2ZSB0aGVyZS4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4u dGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgotLS0tCi0gcHBwZC9tYWluLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL21haW4uYyBi L3BwcGQvbWFpbi5jCi1pbmRleCA4ZTMxMzY1ZjBjNTguLmVkNTQ0MzE1YzFkZiAxMDA2NDQKLS0t LSBhL3BwcGQvbWFpbi5jCi0rKysgYi9wcHBkL21haW4uYwotQEAgLTE2NzMsNyArMTY3Myw3IEBA IGRldmljZV9zY3JpcHQocHJvZ3JhbSwgaW4sIG91dCwgZG9udF93YWl0KQotICAgICBpZiAobG9n X3RvX2ZkID49IDApCi0gCWVycmZkID0gbG9nX3RvX2ZkOwotICAgICBlbHNlCi0tCWVycmZkID0g b3BlbihfUEFUSF9DT05ORVJSUywgT19XUk9OTFkgfCBPX0FQUEVORCB8IE9fQ1JFQVQsIDA2MDAp OwotKwllcnJmZCA9IG9wZW4oX1BBVEhfQ09OTkVSUlMsIE9fV1JPTkxZIHwgT19BUFBFTkQgfCBP X0NSRUFULCAwNjQ0KTsKLSAKLSAgICAgKytjb25uX3J1bm5pbmc7Ci0gICAgIHBpZCA9IHNhZmVf Zm9yayhpbiwgb3V0LCBlcnJmZCk7CmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI1 LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAw MjUtQ29ycmVjdC11bmtvd24tdW5rbm93bi10eXBvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBmZWJmYWY4NjkuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDQ2ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4 LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIwMAotU3ViamVjdDogW1BB VENIXSBDb3JyZWN0IHVua293biA9PiB1bmtub3duIHR5cG8KLQotQXV0aG9yOiBDaHJpcyBCb290 IDxib290Y0BkZWJpYW4ub3JnPgotTGFzdC1VcGRhdGU6IDIwMTMtMDktMDkKLQotCi1JbXBvcnRl ZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1p Y2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVn aW5zL3JhZGl1cy9jb25maWcuYyB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9yYWRp dXMvY29uZmlnLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL2NvbmZpZy5jCi1pbmRleCBhMjllNWU4 ZGE5MDkuLmY4OTJjYTdiMWJmNSAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvY29u ZmlnLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY29uZmlnLmMKLUBAIC0yNzEsNyArMjcx LDcgQEAgY2hhciAqcmNfY29uZl9zdHIoY2hhciAqb3B0bmFtZSkKLSAJb3B0aW9uID0gZmluZF9v cHRpb24ob3B0bmFtZSwgT1RfU1RSKTsKLSAKLSAJaWYgKG9wdGlvbiA9PSBOVUxMKQotLQkJZmF0 YWwoInJjX2NvbmZfc3RyOiB1bmtvd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0 bmFtZSk7Ci0rCQlmYXRhbCgicmNfY29uZl9zdHI6IHVua25vd24gY29uZmlnIG9wdGlvbiByZXF1 ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0gCQlyZXR1cm4gKGNoYXIgKilvcHRpb24tPnZhbDsKLSB9 Ci0gCi1AQCAtMjgyLDcgKzI4Miw3IEBAIGludCByY19jb25mX2ludChjaGFyICpvcHRuYW1lKQot IAlvcHRpb24gPSBmaW5kX29wdGlvbihvcHRuYW1lLCBPVF9JTlR8T1RfQVVPKTsKLSAKLSAJaWYg KG9wdGlvbiA9PSBOVUxMKQotLQkJZmF0YWwoInJjX2NvbmZfaW50OiB1bmtvd24gY29uZmlnIG9w dGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0rCQlmYXRhbCgicmNfY29uZl9pbnQ6IHVu a25vd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Ci0gCXJldHVybiAq KChpbnQgKilvcHRpb24tPnZhbCk7Ci0gfQotIAotQEAgLTI5Myw3ICsyOTMsNyBAQCBTRVJWRVIg KnJjX2NvbmZfc3J2KGNoYXIgKm9wdG5hbWUpCi0gCW9wdGlvbiA9IGZpbmRfb3B0aW9uKG9wdG5h bWUsIE9UX1NSVik7Ci0gCi0gCWlmIChvcHRpb24gPT0gTlVMTCkKLS0JCWZhdGFsKCJyY19jb25m X3NydjogdW5rb3duIGNvbmZpZyBvcHRpb24gcmVxdWVzdGVkOiAlcyIsIG9wdG5hbWUpOwotKwkJ ZmF0YWwoInJjX2NvbmZfc3J2OiB1bmtub3duIGNvbmZpZyBvcHRpb24gcmVxdWVzdGVkOiAlcyIs IG9wdG5hbWUpOwotIAlyZXR1cm4gKFNFUlZFUiAqKW9wdGlvbi0+dmFsOwotIH0KLSAKZGlmZiAt LWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjYtcHBwb2UtY3VzdG9tLWhvc3QtdW5pcS10YWcu cGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDI2LXBwcG9lLWN1c3RvbS1ob3N0LXVuaXEtdGFn LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2YyNjZkMTAuLjAwMDAwMDAw MAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI2LXBwcG9lLWN1c3RvbS1ob3N0LXVuaXEtdGFn LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAyICswLDAgQEAKLUZyb206IE1hdHRlbyBDcm9j ZSA8bWF0dGVvQG9wZW53cnQub3JnPgotRGF0ZTogU2F0LCAyMSBOb3YgMjAxNSAxODo0NTo0MyAr MDEwMAotU3ViamVjdDogW1BBVENIXSBwcHBvZTogY3VzdG9tIGhvc3QtdW5pcSB0YWcKLQotQWRk IHBwcG9lICdob3N0LXVuaXEnIG9wdGlvbiB0byBzZXQgYW4gYXJiaXRyYXJ5Ci1ob3N0LXVuaXEg dGFnIGluc3RlYWQgb2YgdGhlIHBwcGQgcGlkLgotU29tZSBJU1BzIHVzZSBzdWNoIHRhZyB0byBh dXRoZW50aWNhdGUgdGhlIENQRSwKLXNvIGl0IG11c3QgYmUgc2V0IHRvIGEgcHJvcGVyIHZhbHVl IHRvIGNvbm5lY3QuCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHRlbyBDcm9jZSA8bWF0dGVvQG9wZW53 cnQub3JnPgotU2lnbmVkLW9mZi1ieTogSm8tUGhpbGlwcCBXaWNoIDxqb3dAb3BlbndydC5vcmc+ Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVk LW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0K LSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvY29tbW9uLmMgICAgICAgICAgfCAxNCArKysrLS0tLS0K LSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvZGlzY292ZXJ5LmMgICAgICAgfCA1MSArKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMg ICAgICAgICAgfCAgNyArKysrLQotIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3Zl cnkuYyB8IDM4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLQotIHBwcGQvcGx1Z2lucy9ycC1wcHBv ZS9wcHBvZS5oICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKystCi0gNSBmaWxlcyBj aGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9j b21tb24uYwotaW5kZXggODljNjMzYzc3M2Y5Li44ZjE3NWVjZTM0NWIgMTAwNjQ0Ci0tLS0gYS9w cHBkL3BsdWdpbnMvcnAtcHBwb2UvY29tbW9uLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBv ZS9jb21tb24uYwotQEAgLTExOSwxNSArMTE5LDExIEBAIHNlbmRQQURUKFBQUG9FQ29ubmVjdGlv biAqY29ubiwgY2hhciBjb25zdCAqbXNnKQotICAgICBjb25uLT5zZXNzaW9uID0gMDsKLSAKLSAg ICAgLyogSWYgd2UncmUgdXNpbmcgSG9zdC1VbmlxLCBjb3B5IGl0IG92ZXIgKi8KLS0gICAgaWYg KGNvbm4tPnVzZUhvc3RVbmlxKSB7Ci0tCVBQUG9FVGFnIGhvc3RVbmlxOwotLQlwaWRfdCBwaWQg PSBnZXRwaWQoKTsKLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwotLQlo b3N0VW5pcS5sZW5ndGggPSBodG9ucyhzaXplb2YocGlkKSk7Ci0tCW1lbWNweShob3N0VW5pcS5w YXlsb2FkLCAmcGlkLCBzaXplb2YocGlkKSk7Ci0tCW1lbWNweShjdXJzb3IsICZob3N0VW5pcSwg c2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwotLQljdXJzb3IgKz0gc2l6ZW9mKHBpZCkgKyBU QUdfSERSX1NJWkU7Ci0tCXBsZW4gKz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Ci0rICAg IGlmIChjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHsKLSsJaW50IGxlbiA9IG50b2hzKGNvbm4tPmhv c3RVbmlxLmxlbmd0aCk7Ci0rCW1lbWNweShjdXJzb3IsICZjb25uLT5ob3N0VW5pcSwgbGVuICsg VEFHX0hEUl9TSVpFKTsKLSsJY3Vyc29yICs9IGxlbiArIFRBR19IRFJfU0laRTsKLSsJcGxlbiAr PSBsZW4gKyBUQUdfSERSX1NJWkU7Ci0gICAgIH0KLSAKLSAgICAgLyogQ29weSBlcnJvciBtZXNz YWdlICovCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL2Rpc2NvdmVyeS5jIGIv cHBwZC9wbHVnaW5zL3JwLXBwcG9lL2Rpc2NvdmVyeS5jCi1pbmRleCAwNDg3N2NiODI5NWYuLjVk YjhkMGRlZmMzNyAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9kaXNjb3Zlcnku YwotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL2Rpc2NvdmVyeS5jCi1AQCAtODAsMTMgKzgw LDEwIEBAIHN0YXRpYyB2b2lkCi0gcGFyc2VGb3JIb3N0VW5pcShVSU5UMTZfdCB0eXBlLCBVSU5U MTZfdCBsZW4sIHVuc2lnbmVkIGNoYXIgKmRhdGEsCi0gCQkgdm9pZCAqZXh0cmEpCi0gewotLSAg ICBpbnQgKnZhbCA9IChpbnQgKikgZXh0cmE7Ci0tICAgIGlmICh0eXBlID09IFRBR19IT1NUX1VO SVEgJiYgbGVuID09IHNpemVvZihwaWRfdCkpIHsKLS0JcGlkX3QgdG1wOwotLQltZW1jcHkoJnRt cCwgZGF0YSwgbGVuKTsKLS0JaWYgKHRtcCA9PSBnZXRwaWQoKSkgewotLQkgICAgKnZhbCA9IDE7 Ci0tCX0KLSsgICAgUFBQb0VUYWcgKnRhZyA9IGV4dHJhOwotKwotKyAgICBpZiAodHlwZSA9PSBU QUdfSE9TVF9VTklRICYmIGxlbiA9PSBudG9ocyh0YWctPmxlbmd0aCkpIHsKLSsJdGFnLT5sZW5n dGggPSBtZW1jbXAoZGF0YSwgdGFnLT5wYXlsb2FkLCBsZW4pOwotICAgICB9Ci0gfQotIAotQEAg LTEwNCwxNiArMTAxLDE2IEBAIHBhcnNlRm9ySG9zdFVuaXEoVUlOVDE2X3QgdHlwZSwgVUlOVDE2 X3QgbGVuLCB1bnNpZ25lZCBjaGFyICpkYXRhLAotIHN0YXRpYyBpbnQKLSBwYWNrZXRJc0Zvck1l KFBQUG9FQ29ubmVjdGlvbiAqY29ubiwgUFBQb0VQYWNrZXQgKnBhY2tldCkKLSB7Ci0tICAgIGlu dCBmb3JNZSA9IDA7Ci0rICAgIFBQUG9FVGFnIGhvc3RVbmlxID0gY29ubi0+aG9zdFVuaXE7Ci0g Ci0gICAgIC8qIElmIHBhY2tldCBpcyBub3QgZGlyZWN0ZWQgdG8gb3VyIE1BQyBhZGRyZXNzLCBm b3JnZXQgaXQgKi8KLSAgICAgaWYgKG1lbWNtcChwYWNrZXQtPmV0aEhkci5oX2Rlc3QsIGNvbm4t Pm15RXRoLCBFVEhfQUxFTikpIHJldHVybiAwOwotIAotICAgICAvKiBJZiB3ZSdyZSBub3QgdXNp bmcgdGhlIEhvc3QtVW5pcXVlIHRhZywgdGhlbiBhY2NlcHQgdGhlIHBhY2tldCAqLwotLSAgICBp ZiAoIWNvbm4tPnVzZUhvc3RVbmlxKSByZXR1cm4gMTsKLSsgICAgaWYgKCFjb25uLT5ob3N0VW5p cS5sZW5ndGgpIHJldHVybiAxOwotIAotLSAgICBwYXJzZVBhY2tldChwYWNrZXQsIHBhcnNlRm9y SG9zdFVuaXEsICZmb3JNZSk7Ci0tICAgIHJldHVybiBmb3JNZTsKLSsgICAgcGFyc2VQYWNrZXQo cGFja2V0LCBwYXJzZUZvckhvc3RVbmlxLCAmaG9zdFVuaXEpOwotKyAgICByZXR1cm4gIWhvc3RV bmlxLmxlbmd0aDsKLSB9Ci0gCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUBAIC0zMDEsMTYgKzI5OCwxMiBA QCBzZW5kUEFESShQUFBvRUNvbm5lY3Rpb24gKmNvbm4pCi0gICAgIH0KLSAKLSAgICAgLyogSWYg d2UncmUgdXNpbmcgSG9zdC1VbmlxLCBjb3B5IGl0IG92ZXIgKi8KLS0gICAgaWYgKGNvbm4tPnVz ZUhvc3RVbmlxKSB7Ci0tCVBQUG9FVGFnIGhvc3RVbmlxOwotLQlwaWRfdCBwaWQgPSBnZXRwaWQo KTsKLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwotLQlob3N0VW5pcS5s ZW5ndGggPSBodG9ucyhzaXplb2YocGlkKSk7Ci0tCW1lbWNweShob3N0VW5pcS5wYXlsb2FkLCAm cGlkLCBzaXplb2YocGlkKSk7Ci0tCUNIRUNLX1JPT00oY3Vyc29yLCBwYWNrZXQucGF5bG9hZCwg c2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwotLQltZW1jcHkoY3Vyc29yLCAmaG9zdFVuaXEs IHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsKLS0JY3Vyc29yICs9IHNpemVvZihwaWQpICsg VEFHX0hEUl9TSVpFOwotLQlwbGVuICs9IHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFOwotKyAg ICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Ci0rCWludCBsZW4gPSBudG9ocyhjb25uLT5o b3N0VW5pcS5sZW5ndGgpOwotKwlDSEVDS19ST09NKGN1cnNvciwgcGFja2V0LnBheWxvYWQsIGxl biArIFRBR19IRFJfU0laRSk7Ci0rCW1lbWNweShjdXJzb3IsICZjb25uLT5ob3N0VW5pcSwgbGVu ICsgVEFHX0hEUl9TSVpFKTsKLSsJY3Vyc29yICs9IGxlbiArIFRBR19IRFJfU0laRTsKLSsJcGxl biArPSBsZW4gKyBUQUdfSERSX1NJWkU7Ci0gICAgIH0KLSAKLSAgICAgLyogQWRkIG91ciBtYXhp bXVtIE1UVS9NUlUgKi8KLUBAIC00NzgsMTYgKzQ3MSwxMiBAQCBzZW5kUEFEUihQUFBvRUNvbm5l Y3Rpb24gKmNvbm4pCi0gICAgIGN1cnNvciArPSBuYW1lbGVuICsgVEFHX0hEUl9TSVpFOwotIAot ICAgICAvKiBJZiB3ZSdyZSB1c2luZyBIb3N0LVVuaXEsIGNvcHkgaXQgb3ZlciAqLwotLSAgICBp ZiAoY29ubi0+dXNlSG9zdFVuaXEpIHsKLS0JUFBQb0VUYWcgaG9zdFVuaXE7Ci0tCXBpZF90IHBp ZCA9IGdldHBpZCgpOwotLQlob3N0VW5pcS50eXBlID0gaHRvbnMoVEFHX0hPU1RfVU5JUSk7Ci0t CWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQpKTsKLS0JbWVtY3B5KGhvc3RVbmlx LnBheWxvYWQsICZwaWQsIHNpemVvZihwaWQpKTsKLS0JQ0hFQ0tfUk9PTShjdXJzb3IsIHBhY2tl dC5wYXlsb2FkLCBzaXplb2YocGlkKStUQUdfSERSX1NJWkUpOwotLQltZW1jcHkoY3Vyc29yLCAm aG9zdFVuaXEsIHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsKLS0JY3Vyc29yICs9IHNpemVv ZihwaWQpICsgVEFHX0hEUl9TSVpFOwotLQlwbGVuICs9IHNpemVvZihwaWQpICsgVEFHX0hEUl9T SVpFOwotKyAgICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Ci0rCWludCBsZW4gPSBudG9o cyhjb25uLT5ob3N0VW5pcS5sZW5ndGgpOwotKwlDSEVDS19ST09NKGN1cnNvciwgcGFja2V0LnBh eWxvYWQsIGxlbitUQUdfSERSX1NJWkUpOwotKwltZW1jcHkoY3Vyc29yLCAmY29ubi0+aG9zdFVu aXEsIGxlbiArIFRBR19IRFJfU0laRSk7Ci0rCWN1cnNvciArPSBsZW4gKyBUQUdfSERSX1NJWkU7 Ci0rCXBsZW4gKz0gbGVuICsgVEFHX0hEUl9TSVpFOwotICAgICB9Ci0gCi0gICAgIC8qIEFkZCBv dXIgbWF4aW11bSBNVFUvTVJVICovCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9l L3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCi1pbmRleCA3ODA0YjE4 NGYwY2IuLjEyNzc4ZDBkOTk5MSAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9w bHVnaW4uYwotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCi1AQCAtNjgsNiAr NjgsNyBAQCBzdGF0aWMgY2hhciAqZXhpc3RpbmdTZXNzaW9uID0gTlVMTDsKLSBzdGF0aWMgaW50 IHByaW50QUNOYW1lcyA9IDA7Ci0gc3RhdGljIGNoYXIgKnBwcG9lX3JlcWRfbWFjID0gTlVMTDsK LSB1bnNpZ25lZCBjaGFyIHBwcG9lX3JlcWRfbWFjX2FkZHJbNl07Ci0rc3RhdGljIGNoYXIgKmhv c3RfdW5pcSA9IE5VTEw7Ci0gCi0gc3RhdGljIGludCBQUFBvRURldm5hbWVIb29rKGNoYXIgKmNt ZCwgY2hhciAqKmFyZ3YsIGludCBkb2l0KTsKLSBzdGF0aWMgb3B0aW9uX3QgT3B0aW9uc1tdID0g ewotQEAgLTg1LDYgKzg2LDggQEAgc3RhdGljIG9wdGlvbl90IE9wdGlvbnNbXSA9IHsKLSAgICAg ICAiQmUgdmVyYm9zZSBhYm91dCBkaXNjb3ZlcmVkIGFjY2VzcyBjb25jZW50cmF0b3JzIn0sCi0g ICAgIHsgInBwcG9lLW1hYyIsIG9fc3RyaW5nLCAmcHBwb2VfcmVxZF9tYWMsCi0gICAgICAgIk9u bHkgY29ubmVjdCB0byBzcGVjaWZpZWQgTUFDIGFkZHJlc3MiIH0sCi0rICAgIHsgImhvc3QtdW5p cSIsIG9fc3RyaW5nLCAmaG9zdF91bmlxLAotKyAgICAgICJTcGVjaWZ5IGN1c3RvbSBIb3N0LVVu aXEiIH0sCi0gICAgIHsgTlVMTCB9Ci0gfTsKLSBpbnQgKCpPbGREZXZuYW1lSG9vaykoY2hhciAq Y21kLCBjaGFyICoqYXJndiwgaW50IGRvaXQpID0gTlVMTDsKLUBAIC0xMTAsNyArMTEzLDYgQEAg UFBQT0VJbml0RGV2aWNlKHZvaWQpCi0gICAgIGNvbm4tPmlmTmFtZSA9IGRldm5hbTsKLSAgICAg Y29ubi0+ZGlzY292ZXJ5U29ja2V0ID0gLTE7Ci0gICAgIGNvbm4tPnNlc3Npb25Tb2NrZXQgPSAt MTsKLS0gICAgY29ubi0+dXNlSG9zdFVuaXEgPSAxOwotICAgICBjb25uLT5wcmludEFDTmFtZXMg PSBwcmludEFDTmFtZXM7Ci0gICAgIGNvbm4tPmRpc2NvdmVyeVRpbWVvdXQgPSBQQURJX1RJTUVP VVQ7Ci0gICAgIHJldHVybiAxOwotQEAgLTE2Niw2ICsxNjgsOSBAQCBQUFBPRUNvbm5lY3REZXZp Y2Uodm9pZCkKLSAgICAgaWYgKGxjcF93YW50b3B0aW9uc1swXS5tcnUgPiBpZnIuaWZyX210dSAt IFRPVEFMX09WRVJIRUFEKQotIAlsY3Bfd2FudG9wdGlvbnNbMF0ubXJ1ID0gaWZyLmlmcl9tdHUg LSBUT1RBTF9PVkVSSEVBRDsKLSAKLSsgICAgaWYgKGhvc3RfdW5pcSAmJiAhcGFyc2VIb3N0VW5p cShob3N0X3VuaXEsICZjb25uLT5ob3N0VW5pcSkpCi0rCWZhdGFsKCJJbGxlZ2FsIHZhbHVlIGZv ciBob3N0LXVuaXEgb3B0aW9uIik7Ci0rCi0gICAgIGNvbm4tPmFjTmFtZSA9IGFjTmFtZTsKLSAg ICAgY29ubi0+c2VydmljZU5hbWUgPSBwcHBkX3BwcG9lX3NlcnZpY2U7Ci0gICAgIHN0cmxjcHko cHBwX2Rldm5hbSwgZGV2bmFtLCBzaXplb2YocHBwX2Rldm5hbSkpOwotZGlmZiAtLWdpdCBhL3Bw cGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYyBiL3BwcGQvcGx1Z2lucy9ycC1w cHBvZS9wcHBvZS1kaXNjb3ZlcnkuYwotaW5kZXggNTUwMzdkZmZiMDIzLi5mZjRjNDg3ZmZhYTkg MTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMKLSsr KyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYwotQEAgLTM1Niw3ICsz NTYsNyBAQCBwYWNrZXRJc0Zvck1lKFBQUG9FQ29ubmVjdGlvbiAqY29ubiwgUFBQb0VQYWNrZXQg KnBhY2tldCkKLSAgICAgaWYgKG1lbWNtcChwYWNrZXQtPmV0aEhkci5oX2Rlc3QsIGNvbm4tPm15 RXRoLCBFVEhfQUxFTikpIHJldHVybiAwOwotIAotICAgICAvKiBJZiB3ZSdyZSBub3QgdXNpbmcg dGhlIEhvc3QtVW5pcXVlIHRhZywgdGhlbiBhY2NlcHQgdGhlIHBhY2tldCAqLwotLSAgICBpZiAo IWNvbm4tPnVzZUhvc3RVbmlxKSByZXR1cm4gMTsKLSsgICAgaWYgKCFjb25uLT5ob3N0VW5pcS5s ZW5ndGgpIHJldHVybiAxOwotIAotICAgICBwYXJzZVBhY2tldChwYWNrZXQsIHBhcnNlRm9ySG9z dFVuaXEsICZmb3JNZSk7Ci0gICAgIHJldHVybiBmb3JNZTsKLUBAIC00ODIsMTYgKzQ4MiwxMiBA QCBzZW5kUEFESShQUFBvRUNvbm5lY3Rpb24gKmNvbm4pCi0gICAgIGN1cnNvciArPSBuYW1lbGVu ICsgVEFHX0hEUl9TSVpFOwotIAotICAgICAvKiBJZiB3ZSdyZSB1c2luZyBIb3N0LVVuaXEsIGNv cHkgaXQgb3ZlciAqLwotLSAgICBpZiAoY29ubi0+dXNlSG9zdFVuaXEpIHsKLS0JUFBQb0VUYWcg aG9zdFVuaXE7Ci0tCXBpZF90IHBpZCA9IGdldHBpZCgpOwotLQlob3N0VW5pcS50eXBlID0gaHRv bnMoVEFHX0hPU1RfVU5JUSk7Ci0tCWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQp KTsKLS0JbWVtY3B5KGhvc3RVbmlxLnBheWxvYWQsICZwaWQsIHNpemVvZihwaWQpKTsKLS0JQ0hF Q0tfUk9PTShjdXJzb3IsIHBhY2tldC5wYXlsb2FkLCBzaXplb2YocGlkKSArIFRBR19IRFJfU0la RSk7Ci0tCW1lbWNweShjdXJzb3IsICZob3N0VW5pcSwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJ WkUpOwotLQljdXJzb3IgKz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Ci0tCXBsZW4gKz0g c2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Ci0rICAgIGlmIChjb25uLT5ob3N0VW5pcS5sZW5n dGgpIHsKLSsJaW50IGxlbiA9IG50b2hzKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCk7Ci0rCUNIRUNL X1JPT00oY3Vyc29yLCBwYWNrZXQucGF5bG9hZCwgbGVuICsgVEFHX0hEUl9TSVpFKTsKLSsJbWVt Y3B5KGN1cnNvciwgJmNvbm4tPmhvc3RVbmlxLCBsZW4gKyBUQUdfSERSX1NJWkUpOwotKwljdXJz b3IgKz0gbGVuICsgVEFHX0hEUl9TSVpFOwotKwlwbGVuICs9IGxlbiArIFRBR19IRFJfU0laRTsK LSAgICAgfQotIAotICAgICBwYWNrZXQubGVuZ3RoID0gaHRvbnMocGxlbik7Ci1AQCAtNjUzLDcg KzY0OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gICAgIG1lbXNl dChjb25uLCAwLCBzaXplb2YoUFBQb0VDb25uZWN0aW9uKSk7Ci0gCi0tICAgIHdoaWxlICgob3B0 ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJJOkQ6VlVBUzpDOmgiKSkgPiAwKSB7Ci0rICAgIHdoaWxl ICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJJOkQ6VlVXOkFTOkM6aCIpKSA+IDApIHsKLSAJ c3dpdGNoKG9wdCkgewotIAljYXNlICdTJzoKLSAJICAgIGNvbm4tPnNlcnZpY2VOYW1lID0geHN0 cmR1cChvcHRhcmcpOwotQEAgLTY2Miw3ICs2NTgsMjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKLSAJICAgIGNvbm4tPmFjTmFtZSA9IHhzdHJkdXAob3B0YXJnKTsKLSAJICAg IGJyZWFrOwotIAljYXNlICdVJzoKLS0JICAgIGNvbm4tPnVzZUhvc3RVbmlxID0gMTsKLSsJICAg IGlmKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCkgewotKwkJZnByaW50ZihzdGRlcnIsICItVSBhbmQg LVcgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuIik7Ci0rCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0r CSAgICB9Ci0rICAgICAgICAgICAgY2hhciBwaWRidWZbNV07Ci0rICAgICAgICAgICAgc25wcmlu dGYocGlkYnVmLCBzaXplb2YocGlkYnVmKSwgIiUwNHgiLCBnZXRwaWQoKSk7Ci0rICAgICAgICAg ICAgcGFyc2VIb3N0VW5pcShwaWRidWYsICZjb25uLT5ob3N0VW5pcSk7Ci0rCSAgICBicmVhazsK LSsJY2FzZSAnVyc6Ci0rCSAgICBpZihjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHsKLSsJCWZwcmlu dGYoc3RkZXJyLCAiLVUgYW5kIC1XIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcbiIpOwotKwkJZXhp dChFWElUX0ZBSUxVUkUpOwotKwkgICAgfQotKwkgICAgaWYgKCFwYXJzZUhvc3RVbmlxKG9wdGFy ZywgJmNvbm4tPmhvc3RVbmlxKSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkludmFsaWQgaG9zdC11bmlxIGFyZ3VtZW50OiAlc1xuIiwgb3B0YXJnKTsKLSsgICAgICAgICAg ICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotKyAgICAgICAgICAgIH0KLSAJICAgIGJyZWFrOwot IAljYXNlICdEJzoKLSAJICAgIGNvbm4tPmRlYnVnRmlsZSA9IGZvcGVuKG9wdGFyZywgInciKTsK LWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCBiL3BwcGQvcGx1Z2lu cy9ycC1wcHBvZS9wcHBvZS5oCi1pbmRleCBjNGFhYTZlNjg4NTYuLjA4MDI2ZjU3NzAyOCAxMDA2 NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCi0rKysgYi9wcHBkL3BsdWdp bnMvcnAtcHBwb2UvcHBwb2UuaAotQEAgLTIxLDYgKzIxLDggQEAKLSAKLSAjaW5jbHVkZSA8c3Rk aW8uaD4JCS8qIEZvciBGSUxFICovCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgkJLyogRm9yIHBp ZF90ICovCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotIC8q IEhvdyBkbyB3ZSBhY2Nlc3MgcmF3IEV0aGVybmV0IGRldmljZXM/ICovCi0gI3VuZGVmIFVTRV9M SU5VWF9QQUNLRVQKLUBAIC0yMzYsNyArMjM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUFBQb0VDb25u ZWN0aW9uU3RydWN0IHsKLSAgICAgY2hhciAqc2VydmljZU5hbWU7CQkvKiBEZXNpcmVkIHNlcnZp Y2UgbmFtZSwgaWYgYW55ICovCi0gICAgIGNoYXIgKmFjTmFtZTsJCS8qIERlc2lyZWQgQUMgbmFt ZSwgaWYgYW55ICovCi0gICAgIGludCBzeW5jaHJvbm91czsJCS8qIFVzZSBzeW5jaHJvbm91cyBQ UFAgKi8KLS0gICAgaW50IHVzZUhvc3RVbmlxOwkJLyogVXNlIEhvc3QtVW5pcSB0YWcgKi8KLSsg ICAgUFBQb0VUYWcgaG9zdFVuaXE7CQkvKiBVc2UgSG9zdC1VbmlxIHRhZyAqLwotICAgICBpbnQg cHJpbnRBQ05hbWVzOwkJLyogSnVzdCBwcmludCBBQyBuYW1lcyAqLwotICAgICBGSUxFICpkZWJ1 Z0ZpbGU7CQkvKiBEZWJ1ZyBmaWxlIGZvciBkdW1waW5nIHBhY2tldHMgKi8KLSAgICAgaW50IG51 bVBBRE9zOwkJLyogTnVtYmVyIG9mIFBBRE8gcGFja2V0cyByZWNlaXZlZCAqLwotQEAgLTI5Miw2 ICsyOTQsMzMgQEAgdm9pZCBwcHBvZV9wcmludHBrdChQUFBvRVBhY2tldCAqcGFja2V0LAotIAkJ ICAgIHZvaWQgKCpwcmludGVyKSh2b2lkICosIGNoYXIgKiwgLi4uKSwgdm9pZCAqYXJnKTsKLSB2 b2lkIHBwcG9lX2xvZ19wYWNrZXQoY29uc3QgY2hhciAqcHJlZml4LCBQUFBvRVBhY2tldCAqcGFj a2V0KTsKLSAKLStzdGF0aWMgaW5saW5lIGludCBwYXJzZUhvc3RVbmlxKGNvbnN0IGNoYXIgKnVu aXEsIFBQUG9FVGFnICp0YWcpCi0rewotKyAgICBpbnQgaSwgbGVuID0gc3RybGVuKHVuaXEpOwot KwotKyNkZWZpbmUgaGV4KHgpIFwKLSsgICAgKCgoeCkgPD0gJzknKSA/ICgoeCkgLSAnMCcpIDog XAotKyAgICAgICAgKCgoeCkgPD0gJ0YnKSA/ICgoeCkgLSAnQScgKyAxMCkgOiBcCi0rICAgICAg ICAgICAgKCh4KSAtICdhJyArIDEwKSkpCi0rCi0rICAgIGlmIChsZW4gJSAyKQotKyAgICAgICAg cmV0dXJuIDA7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMikKLSsgICAgewot KyAgICAgICAgaWYgKCFpc3hkaWdpdCh1bmlxW2ldKSB8fCAhaXN4ZGlnaXQodW5pcVtpKzFdKSkK LSsgICAgICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICAgIHRhZy0+cGF5bG9hZFtpIC8gMl0g PSAoY2hhcikoMTYgKiBoZXgodW5pcVtpXSkgKyBoZXgodW5pcVtpKzFdKSk7Ci0rICAgIH0KLSsK LSsjdW5kZWYgaGV4Ci0rCi0rICAgIHRhZy0+dHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwot KyAgICB0YWctPmxlbmd0aCA9IGh0b25zKGxlbiAvIDIpOwotKyAgICByZXR1cm4gMTsKLSt9Ci0r Ci0gI2RlZmluZSBTRVRfU1RSSU5HKHZhciwgdmFsKSBkbyB7IGlmICh2YXIpIGZyZWUodmFyKTsg dmFyID0gc3RyRHVwKHZhbCk7IH0gd2hpbGUoMCk7Ci0gCi0gI2RlZmluZSBDSEVDS19ST09NKGN1 cnNvciwgc3RhcnQsIGxlbikgXApkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNy1B ZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8w MDI3LUFkZC1yZXBsYWNlZGVmYXVsdHJvdXRlLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMTlmOTMxYjEyLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40 LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzMjQgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIEFkZCByZXBsYWNlZGVmYXVsdHJvdXRlIG9wdGlvbgotCi1BZGRzIGFuIG9w dGlvbiB0byBwcHBkIHRvIGNvbnRyb2wgd2hldGhlciB0byByZXBsYWNlIGV4aXN0aW5nIGRlZmF1 bHQgcm91dGVzCi13aGVuIHVzaW5nIHRoZSAnZGVmYXVsdHJvdXRlJyBvcHRpb24uCi0KLUlmIGRl ZmF1bHRyb3V0ZSBhbmQgcmVwbGFjZWRlZmF1bHRyb3V0ZSBhcmUgYm90aCBzZXQsIHBwcGQgcmVw bGFjZXMgYW4gZXhpc3RpbmcKLWRlZmF1bHQgcm91dGUgd2l0aCB0aGUgbmV3IGRlZmF1bHQgcm91 dGUuIFRoZSBvbGQgZGVmYXVsdCByb3V0ZSBpcyByZXN0b3JlZCB3aGVuCi10aGUgY29ubmVjdGlv biBpcyB0YWtlbiBkb3duLgotCi1PcmlnaW46IHZlbmRvciwgaHR0cHM6Ly9idWlsZC5vcGVuc3Vz ZS5vcmcvc291cmNlL25ldHdvcmsvcHBwL3BwcC0yLjQuMi1jaWZkZWZyb3V0ZS5kaWZmP3Jldj03 YTBmZGVmZjBiMjk0MzdkZDdmNDU4MWM5NWM3MjU1YQotRm9yd2FyZGVkOiBubwotUmV2aWV3ZWQt Ynk6IENocmlzIEJvb3QgPGJvb3RjQGRlYmlhbi5vcmc+Ci1MYXN0LVVwZGF0ZTogMjAxNC0wMS0y NgotCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2ln bmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0t LS0KLSBwcHBkL2lwY3AuYyAgICAgIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQotIHBwcGQvaXBjcC5oICAgICAgfCAgMSArCi0gcHBwZC9wcHBkLjggICAgICB8IDEyICsrKysr KysrLQotIHBwcGQvcHBwZC5oICAgICAgfCAgNCArKysKLSBwcHBkL3N5cy1saW51eC5jIHwgODIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0K LSA1IGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL3BwcGQvaXBjcC5jIGIvcHBwZC9pcGNwLmMKLWluZGV4IGU5NzM4ZmU0ZDg5 NC4uYzhmZTI3OWQ0ZWRlIDEwMDY0NAotLS0tIGEvcHBwZC9pcGNwLmMKLSsrKyBiL3BwcGQvaXBj cC5jCi1AQCAtMTk4LDYgKzE5OCwxNiBAQCBzdGF0aWMgb3B0aW9uX3QgaXBjcF9vcHRpb25fbGlz dFtdID0gewotICAgICAgICJkaXNhYmxlIGRlZmF1bHRyb3V0ZSBvcHRpb24iLCBPUFRfQUxJQVMg fCBPUFRfQTJDTFIsCi0gICAgICAgJmlwY3Bfd2FudG9wdGlvbnNbMF0uZGVmYXVsdF9yb3V0ZSB9 LAotIAotKyNpZmRlZiBfX2xpbnV4X18KLSsgICAgeyAicmVwbGFjZWRlZmF1bHRyb3V0ZSIsIG9f Ym9vbCwKLSsJCQkJJmlwY3Bfd2FudG9wdGlvbnNbMF0ucmVwbGFjZV9kZWZhdWx0X3JvdXRlLAot KyAgICAgICJSZXBsYWNlIGRlZmF1bHQgcm91dGUiLCAxCi0rICAgIH0sCi0rICAgIHsgIm5vcmVw bGFjZWRlZmF1bHRyb3V0ZSIsIG9fYm9vbCwKLSsJCQkJJmlwY3BfYWxsb3dvcHRpb25zWzBdLnJl cGxhY2VfZGVmYXVsdF9yb3V0ZSwKLSsgICAgICAiTmV2ZXIgcmVwbGFjZSBkZWZhdWx0IHJvdXRl IiwgT1BUX0EyQ09QWSwKLSsJCQkJJmlwY3Bfd2FudG9wdGlvbnNbMF0ucmVwbGFjZV9kZWZhdWx0 X3JvdXRlIH0sCi0rI2VuZGlmCi0gICAgIHsgInByb3h5YXJwIiwgb19ib29sLCAmaXBjcF93YW50 b3B0aW9uc1swXS5wcm94eV9hcnAsCi0gICAgICAgIkFkZCBwcm94eSBBUlAgZW50cnkiLCBPUFRf RU5BQkxFfDEsICZpcGNwX2FsbG93b3B0aW9uc1swXS5wcm94eV9hcnAgfSwKLSAgICAgeyAibm9w cm94eWFycCIsIG9fYm9vbCwgJmlwY3BfYWxsb3dvcHRpb25zWzBdLnByb3h5X2FycCwKLUBAIC0y NzEsNyArMjgxLDcgQEAgc3RydWN0IHByb3RlbnQgaXBjcF9wcm90ZW50ID0gewotICAgICBpcF9h Y3RpdmVfcGt0Ci0gfTsKLSAKLS1zdGF0aWMgdm9pZCBpcGNwX2NsZWFyX2FkZHJzIF9fUCgoaW50 LCB1X2ludDMyX3QsIHVfaW50MzJfdCkpOwotK3N0YXRpYyB2b2lkIGlwY3BfY2xlYXJfYWRkcnMg X19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90LCBib29sKSk7Ci0gc3RhdGljIHZvaWQgaXBj cF9zY3JpcHQgX19QKChjaGFyICosIGludCkpOwkvKiBSdW4gYW4gdXAvZG93biBzY3JpcHQgKi8K LSBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdF9kb25lIF9fUCgodm9pZCAqKSk7Ci0gCi1AQCAtMTc2 MSw3ICsxNzcxLDEyIEBAIGlwX2RlbWFuZF9jb25mKHUpCi0gICAgIGlmICghc2lmbnBtb2RlKHUs IFBQUF9JUCwgTlBNT0RFX1FVRVVFKSkKLSAJcmV0dXJuIDA7Ci0gICAgIGlmICh3by0+ZGVmYXVs dF9yb3V0ZSkKLSsjaWZuZGVmIF9fbGludXhfXwotIAlpZiAoc2lmZGVmYXVsdHJvdXRlKHUsIHdv LT5vdXJhZGRyLCB3by0+aGlzYWRkcikpCi0rI2Vsc2UKLSsJaWYgKHNpZmRlZmF1bHRyb3V0ZSh1 LCB3by0+b3VyYWRkciwgd28tPmhpc2FkZHIsCi0rCQkJCQkgICAgd28tPnJlcGxhY2VfZGVmYXVs dF9yb3V0ZSkpCi0rI2VuZGlmCi0gCSAgICBkZWZhdWx0X3JvdXRlX3NldFt1XSA9IDE7Ci0gICAg IGlmICh3by0+cHJveHlfYXJwKQotIAlpZiAoc2lmcHJveHlhcnAodSwgd28tPmhpc2FkZHIpKQot QEAgLTE4NDksNyArMTg2NCw4IEBAIGlwY3BfdXAoZikKLSAgICAgICovCi0gICAgIGlmIChkZW1h bmQpIHsKLSAJaWYgKGdvLT5vdXJhZGRyICE9IHdvLT5vdXJhZGRyIHx8IGhvLT5oaXNhZGRyICE9 IHdvLT5oaXNhZGRyKSB7Ci0tCSAgICBpcGNwX2NsZWFyX2FkZHJzKGYtPnVuaXQsIHdvLT5vdXJh ZGRyLCB3by0+aGlzYWRkcik7Ci0rCSAgICBpcGNwX2NsZWFyX2FkZHJzKGYtPnVuaXQsIHdvLT5v dXJhZGRyLCB3by0+aGlzYWRkciwKLSsJCQkJICAgICAgd28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0 ZSk7Ci0gCSAgICBpZiAoZ28tPm91cmFkZHIgIT0gd28tPm91cmFkZHIpIHsKLSAJCXdhcm4oIkxv Y2FsIElQIGFkZHJlc3MgY2hhbmdlZCB0byAlSSIsIGdvLT5vdXJhZGRyKTsKLSAJCXNjcmlwdF9z ZXRlbnYoIk9MRElQTE9DQUwiLCBpcF9udG9hKHdvLT5vdXJhZGRyKSwgMCk7Ci1AQCAtMTg3NCw3 ICsxODkwLDEyIEBAIGlwY3BfdXAoZikKLSAKLSAJICAgIC8qIGFzc2lnbiBhIGRlZmF1bHQgcm91 dGUgdGhyb3VnaCB0aGUgaW50ZXJmYWNlIGlmIHJlcXVpcmVkICovCi0gCSAgICBpZiAoaXBjcF93 YW50b3B0aW9uc1tmLT51bml0XS5kZWZhdWx0X3JvdXRlKSAKLSsjaWZuZGVmIF9fbGludXhfXwot IAkJaWYgKHNpZmRlZmF1bHRyb3V0ZShmLT51bml0LCBnby0+b3VyYWRkciwgaG8tPmhpc2FkZHIp KQotKyNlbHNlCi0rCQlpZiAoc2lmZGVmYXVsdHJvdXRlKGYtPnVuaXQsIGdvLT5vdXJhZGRyLCBo by0+aGlzYWRkciwKLSsJCQkJCSAgICAgd28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSkpCi0rI2Vu ZGlmCi0gCQkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbZi0+dW5pdF0gPSAxOwotIAotIAkgICAgLyog TWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCi1AQCAtMTkyNCw3ICsxOTQ1 LDEyIEBAIGlwY3BfdXAoZikKLSAKLSAJLyogYXNzaWduIGEgZGVmYXVsdCByb3V0ZSB0aHJvdWdo IHRoZSBpbnRlcmZhY2UgaWYgcmVxdWlyZWQgKi8KLSAJaWYgKGlwY3Bfd2FudG9wdGlvbnNbZi0+ dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCi0rI2lmbmRlZiBfX2xpbnV4X18KLSAJICAgIGlmIChzaWZk ZWZhdWx0cm91dGUoZi0+dW5pdCwgZ28tPm91cmFkZHIsIGhvLT5oaXNhZGRyKSkKLSsjZWxzZQot KwkgICAgaWYgKHNpZmRlZmF1bHRyb3V0ZShmLT51bml0LCBnby0+b3VyYWRkciwgaG8tPmhpc2Fk ZHIsCi0rCQkJCQkgd28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSkpCi0rI2VuZGlmCi0gCQlkZWZh dWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7Ci0gCi0gCS8qIE1ha2UgYSBwcm94eSBBUlAgZW50 cnkgaWYgcmVxdWVzdGVkLiAqLwotQEAgLTIwMDIsNyArMjAyOCw3IEBAIGlwY3BfZG93bihmKQot IAlzaWZucG1vZGUoZi0+dW5pdCwgUFBQX0lQLCBOUE1PREVfRFJPUCk7Ci0gCXNpZmRvd24oZi0+ dW5pdCk7Ci0gCWlwY3BfY2xlYXJfYWRkcnMoZi0+dW5pdCwgaXBjcF9nb3RvcHRpb25zW2YtPnVu aXRdLm91cmFkZHIsCi0tCQkJIGlwY3BfaGlzb3B0aW9uc1tmLT51bml0XS5oaXNhZGRyKTsKLSsJ CQkgaXBjcF9oaXNvcHRpb25zW2YtPnVuaXRdLmhpc2FkZHIsIDApOwotICAgICB9Ci0gCi0gICAg IC8qIEV4ZWN1dGUgdGhlIGlwLWRvd24gc2NyaXB0ICovCi1AQCAtMjAxOCwxNiArMjA0NCwyNSBA QCBpcGNwX2Rvd24oZikKLSAgKiBwcm94eSBhcnAgZW50cmllcywgZXRjLgotICAqLwotIHN0YXRp YyB2b2lkCi0taXBjcF9jbGVhcl9hZGRycyh1bml0LCBvdXJhZGRyLCBoaXNhZGRyKQotK2lwY3Bf Y2xlYXJfYWRkcnModW5pdCwgb3VyYWRkciwgaGlzYWRkciwgcmVwbGFjZWRlZmF1bHRyb3V0ZSkK LSAgICAgaW50IHVuaXQ7Ci0gICAgIHVfaW50MzJfdCBvdXJhZGRyOyAgLyogbG9jYWwgYWRkcmVz cyAqLwotICAgICB1X2ludDMyX3QgaGlzYWRkcjsgIC8qIHJlbW90ZSBhZGRyZXNzICovCi0rICAg IGJvb2wgcmVwbGFjZWRlZmF1bHRyb3V0ZTsKLSB7Ci0gICAgIGlmIChwcm94eV9hcnBfc2V0W3Vu aXRdKSB7Ci0gCWNpZnByb3h5YXJwKHVuaXQsIGhpc2FkZHIpOwotIAlwcm94eV9hcnBfc2V0W3Vu aXRdID0gMDsKLSAgICAgfQotLSAgICBpZiAoZGVmYXVsdF9yb3V0ZV9zZXRbdW5pdF0pIHsKLSsg ICAgLyogSWYgcmVwbGFjZWRlZmF1bHRyb3V0ZSwgc2lmZGVmYXVsdHJvdXRlIHdpbGwgYmUgY2Fs bGVkIHNvb24KLSsgICAgICogd2l0aCByZXBsYWNlZGVmYXVsdHJvdXRlIHNldCBhbmQgdGhhdCB3 aWxsIG92ZXJ3cml0ZSB0aGUgY3VycmVudAotKyAgICAgKiBkZWZhdWx0IHJvdXRlLiBUaGlzIGlz IHRoZSBjYXNlIG9ubHkgd2hlbiBkb2luZyBkZW1hbmQsIG90aGVyd2lzZQotKyAgICAgKiBkdXJp bmcgZGVtYW5kLCB0aGlzIGNpZmRlZmF1bHRyb3V0ZSB3b3VsZCByZXN0b3JlIHRoZSBvbGQgZGVm YXVsdAotKyAgICAgKiByb3V0ZSB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50IGluIHRoaXMgY2Fz ZS4gSW4gdGhlIG5vbi1kZW1hbmQKLSsgICAgICogY2FzZSwgd2UnbGwgZGVsZXRlIHRoZSBkZWZh dWx0IHJvdXRlIGFuZCByZXN0b3JlIHRoZSBvbGQgaWYgdGhlcmUKLSsgICAgICogaXMgb25lIHNh dmVkIGJ5IGFuIHNpZmRlZmF1bHRyb3V0ZSB3aXRoIHJlcGxhY2VkZWZhdWx0cm91dGUuCi0rICAg ICAqLwotKyAgICBpZiAoIXJlcGxhY2VkZWZhdWx0cm91dGUgJiYgZGVmYXVsdF9yb3V0ZV9zZXRb dW5pdF0pIHsKLSAJY2lmZGVmYXVsdHJvdXRlKHVuaXQsIG91cmFkZHIsIGhpc2FkZHIpOwotIAlk ZWZhdWx0X3JvdXRlX3NldFt1bml0XSA9IDA7Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9wcHBkL2lw Y3AuaCBiL3BwcGQvaXBjcC5oCi1pbmRleCA2Y2YxNGM5OTA1NzguLjdlY2ZhNzlkODY2OCAxMDA2 NDQKLS0tLSBhL3BwcGQvaXBjcC5oCi0rKysgYi9wcHBkL2lwY3AuaAotQEAgLTcwLDYgKzcwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgaXBjcF9vcHRpb25zIHsKLSAgICAgYm9vbCBvbGRfYWRkcnM7CQkv KiBVc2Ugb2xkIChJUC1BZGRyZXNzZXMpIG9wdGlvbj8gKi8KLSAgICAgYm9vbCByZXFfYWRkcjsJ CS8qIEFzayBwZWVyIHRvIHNlbmQgSVAgYWRkcmVzcz8gKi8KLSAgICAgYm9vbCBkZWZhdWx0X3Jv dXRlOwkJLyogQXNzaWduIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpbnRlcmZhY2U/ICovCi0rICAg IGJvb2wgcmVwbGFjZV9kZWZhdWx0X3JvdXRlOwkvKiBSZXBsYWNlIGRlZmF1bHQgcm91dGUgdGhy b3VnaCBpbnRlcmZhY2U/ICovCi0gICAgIGJvb2wgcHJveHlfYXJwOwkJLyogTWFrZSBwcm94eSBB UlAgZW50cnkgZm9yIHBlZXI/ICovCi0gICAgIGJvb2wgbmVnX3ZqOwkJLyogVmFuIEphY29ic29u IENvbXByZXNzaW9uPyAqLwotICAgICBib29sIG9sZF92ajsJCS8qIHVzZSBvbGQgKHNob3J0KSBm b3JtIG9mIFZKIG9wdGlvbj8gKi8KLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuOCBiL3BwcGQvcHBw ZC44Ci1pbmRleCBlYzhiZmQ1YzA2MTcuLjQ4MWFhOGJlNjcyYiAxMDA2NDQKLS0tLSBhL3BwcGQv cHBwZC44Ci0rKysgYi9wcHBkL3BwcGQuOAotQEAgLTEyMSw2ICsxMjEsMTEgQEAgdGhlIGdhdGV3 YXksIHdoZW4gSVBDUCBuZWdvdGlhdGlvbiBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLgotIFRo aXMgZW50cnkgaXMgcmVtb3ZlZCB3aGVuIHRoZSBQUFAgY29ubmVjdGlvbiBpcyBicm9rZW4uICBU aGlzIG9wdGlvbgotIGlzIHByaXZpbGVnZWQgaWYgdGhlIFxmSW5vZGVmYXVsdHJvdXRlXGZSIG9w dGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0gLlRQCi0rLkIgcmVwbGFjZWRlZmF1bHRyb3V0ZQot K1RoaXMgb3B0aW9uIGlzIGEgZmxhZyB0byB0aGUgZGVmYXVsdHJvdXRlIG9wdGlvbi4gSWYgZGVm YXVsdHJvdXRlIGlzCi0rc2V0IGFuZCB0aGlzIGZsYWcgaXMgYWxzbyBzZXQsIHBwcGQgcmVwbGFj ZXMgYW4gZXhpc3RpbmcgZGVmYXVsdCByb3V0ZQotK3dpdGggdGhlIG5ldyBkZWZhdWx0IHJvdXRl LgotKy5UUAotIC5CIGRpc2Nvbm5lY3QgXGZJc2NyaXB0Ci0gRXhlY3V0ZSB0aGUgY29tbWFuZCBz cGVjaWZpZWQgYnkgXGZJc2NyaXB0XGZSLCBieSBwYXNzaW5nIGl0IHRvIGEKLSBzaGVsbCwgYWZ0 ZXIKLUBAIC03MzksNyArNzQ0LDEyIEBAIGRpc2FibGUgYm90aCBmb3JtcyBvZiBoYXJkd2FyZSBm bG93IGNvbnRyb2wuCi0gLlRQCi0gLkIgbm9kZWZhdWx0cm91dGUKLSBEaXNhYmxlIHRoZSBcZklk ZWZhdWx0cm91dGVcZlIgb3B0aW9uLiAgVGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHdobwotLXdp c2hlcyB0byBwcmV2ZW50IHVzZXJzIGZyb20gY3JlYXRpbmcgZGVmYXVsdCByb3V0ZXMgd2l0aCBw cHBkCi0rd2lzaGVzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSBhZGRpbmcgYSBkZWZhdWx0IHJvdXRl IHdpdGggcHBwZAotK2NhbiBkbyBzbyBieSBwbGFjaW5nIHRoaXMgb3B0aW9uIGluIHRoZSAvZXRj L3BwcC9vcHRpb25zIGZpbGUuCi0rLlRQCi0rLkIgbm9yZXBsYWNlZGVmYXVsdHJvdXRlCi0rRGlz YWJsZSB0aGUgXGZJcmVwbGFjZWRlZmF1bHRyb3V0ZVxmUiBvcHRpb24uIFRoZSBzeXN0ZW0gYWRt aW5pc3RyYXRvciB3aG8KLSt3aXNoZXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHJlcGxhY2luZyBh IGRlZmF1bHQgcm91dGUgd2l0aCBwcHBkCi0gY2FuIGRvIHNvIGJ5IHBsYWNpbmcgdGhpcyBvcHRp b24gaW4gdGhlIC9ldGMvcHBwL29wdGlvbnMgZmlsZS4KLSAuVFAKLSAuQiBub2RlZmxhdGUKLWRp ZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1pbmRleCAxYTFiZjBiOTk1ODIu Ljc0OTVkZjY1N2ZlOSAxMDA2NDQKLS0tLSBhL3BwcGQvcHBwZC5oCi0rKysgYi9wcHBkL3BwcGQu aAotQEAgLTY3Niw3ICs2NzYsMTEgQEAgaW50ICBzaWY2YWRkciBfX1AoKGludCwgZXVpNjRfdCwg ZXVpNjRfdCkpOwotIGludCAgY2lmNmFkZHIgX19QKChpbnQsIGV1aTY0X3QsIGV1aTY0X3QpKTsK LSAJCQkJLyogUmVtb3ZlIGFuIElQdjYgYWRkcmVzcyBmcm9tIGkvZiAqLwotICNlbmRpZgotKyNp Zm5kZWYgX19saW51eF9fCi0gaW50ICBzaWZkZWZhdWx0cm91dGUgX19QKChpbnQsIHVfaW50MzJf dCwgdV9pbnQzMl90KSk7Ci0rI2Vsc2UKLStpbnQgIHNpZmRlZmF1bHRyb3V0ZSBfX1AoKGludCwg dV9pbnQzMl90LCB1X2ludDMyX3QsIGJvb2wgcmVwbGFjZV9kZWZhdWx0X3J0KSk7Ci0rI2VuZGlm Ci0gCQkJCS8qIENyZWF0ZSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggaS9mICovCi0gaW50ICBjaWZk ZWZhdWx0cm91dGUgX19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90KSk7Ci0gCQkJCS8qIERl bGV0ZSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggaS9mICovCi1kaWZmIC0tZ2l0IGEvcHBwZC9zeXMt bGludXguYyBiL3BwcGQvc3lzLWxpbnV4LmMKLWluZGV4IDZkMjlkYzhlODU5NC4uM2YwYmJjMzNj NjA1IDEwMDY0NAotLS0tIGEvcHBwZC9zeXMtbGludXguYwotKysrIGIvcHBwZC9zeXMtbGludXgu YwotQEAgLTIwNyw2ICsyMDcsOCBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciBpbmJ1Zls1MTJdOyAv KiBidWZmZXIgZm9yIGNoYXJzIHJlYWQgZnJvbSBsb29wYmFjayAqLwotIHN0YXRpYyBpbnQJaWZf aXNfdXA7CS8qIEludGVyZmFjZSBoYXMgYmVlbiBtYXJrZWQgdXAgKi8KLSBzdGF0aWMgaW50CWlm Nl9pc191cDsJLyogSW50ZXJmYWNlIGhhcyBiZWVuIG1hcmtlZCB1cCBmb3IgSVB2NiwgdG8gaGVs cCBkaWZmZXJlbnRpYXRlICovCi0gc3RhdGljIGludAloYXZlX2RlZmF1bHRfcm91dGU7CS8qIEdh dGV3YXkgZm9yIGRlZmF1bHQgcm91dGUgYWRkZWQgKi8KLStzdGF0aWMgc3RydWN0IHJ0ZW50cnkg b2xkX2RlZl9ydDsgICAgICAgLyogT2xkIGRlZmF1bHQgcm91dGUgKi8KLStzdGF0aWMgaW50ICAg ICAgIGRlZmF1bHRfcnRfcmVwbF9yZXN0OyAgLyogcmVwbGFjZSBhbmQgcmVzdG9yZSBvbGQgZGVm YXVsdCBydCAqLwotIHN0YXRpYyB1X2ludDMyX3QgcHJveHlfYXJwX2FkZHI7CS8qIEFkZHIgZm9y IHByb3h5IGFycCBlbnRyeSBhZGRlZCAqLwotIHN0YXRpYyBjaGFyIHByb3h5X2FycF9kZXZbMTZd OwkJLyogRGV2aWNlIGZvciBwcm94eSBhcnAgZW50cnkgKi8KLSBzdGF0aWMgdV9pbnQzMl90IG91 cl9vbGRfYWRkcjsJCS8qIGZvciBkZXRlY3RpbmcgYWRkcmVzcyBjaGFuZ2VzICovCi1AQCAtMTU2 Nyw2ICsxNTY5LDkgQEAgc3RhdGljIGludCByZWFkX3JvdXRlX3RhYmxlKHN0cnVjdCBydGVudHJ5 ICpydCkKLSAJcCA9IE5VTEw7Ci0gICAgIH0KLSAKLSsgICAgU0VUX1NBX0ZBTUlMWSAocnQtPnJ0 X2RzdCwgICAgIEFGX0lORVQpOwotKyAgICBTRVRfU0FfRkFNSUxZIChydC0+cnRfZ2F0ZXdheSwg QUZfSU5FVCk7Ci0rCi0gICAgIFNJTl9BRERSKHJ0LT5ydF9kc3QpID0gc3RydG91bChjb2xzW3Jv dXRlX2Rlc3RfY29sXSwgTlVMTCwgMTYpOwotICAgICBTSU5fQUREUihydC0+cnRfZ2F0ZXdheSkg PSBzdHJ0b3VsKGNvbHNbcm91dGVfZ3dfY29sXSwgTlVMTCwgMTYpOwotICAgICBTSU5fQUREUihy dC0+cnRfZ2VubWFzaykgPSBzdHJ0b3VsKGNvbHNbcm91dGVfbWFza19jb2xdLCBOVUxMLCAxNik7 Ci1AQCAtMTYzNiwyMiArMTY0MSw1MyBAQCBpbnQgaGF2ZV9yb3V0ZV90byh1X2ludDMyX3QgYWRk cikKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLSAgKgotICAqIHNpZmRlZmF1bHRyb3V0ZSAtIGFzc2lnbiBhIGRl ZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgYWRkcmVzcyBnaXZlbi4KLS0gKi8KLS0KLS1pbnQgc2lm ZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFkZHIsIHVfaW50MzJfdCBnYXRl d2F5KQotLXsKLS0gICAgc3RydWN0IHJ0ZW50cnkgcnQ7Ci0tCi0tICAgIGlmIChkZWZhdWx0cm91 dGVfZXhpc3RzKCZydCkgJiYgc3RyY21wKHJ0LnJ0X2RldiwgaWZuYW1lKSAhPSAwKSB7Ci0tCWlm IChydC5ydF9mbGFncyAmIFJURl9HQVRFV0FZKQotLQkgICAgZXJyb3IoIm5vdCByZXBsYWNpbmcg ZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSB2aWEgJUkiLAotLQkJICBTSU5fQUREUihydC5ydF9nYXRl d2F5KSk7Ci0tCWVsc2UKLS0JICAgIGVycm9yKCJub3QgcmVwbGFjaW5nIGV4aXN0aW5nIGRlZmF1 bHQgcm91dGUgdGhyb3VnaCAlcyIsCi0tCQkgIHJ0LnJ0X2Rldik7Ci0tCXJldHVybiAwOwotKyAq Ci0rICogSWYgdGhlIGdsb2JhbCBkZWZhdWx0X3J0X3JlcGxfcmVzdCBmbGFnIGlzIHNldCwgdGhl biB0aGlzIGZ1bmN0aW9uCi0rICogYWxyZWFkeSByZXBsYWNlZCB0aGUgb3JpZ2luYWwgc3lzdGVt IGRlZmF1bHRyb3V0ZSB3aXRoIHNvbWUgb3RoZXIKLSsgKiByb3V0ZSBhbmQgaXQgc2hvdWxkIGp1 c3QgcmVwbGFjZSB0aGUgY3VycmVudCBkZWZhdWx0cm91dGUgd2l0aAotKyAqIGFub3RoZXIgb25l LCB3aXRob3V0IHNhdmluZyB0aGUgY3VycmVudCByb3V0ZS4gVXNlOiBkZW1hbmQgbW9kZSwKLSsg KiB3aGVuIHBwcGQgc2V0cyBmaXJzdCBhIGRlZmF1bHRyb3V0ZSBpdCBpdCdzIHRlbXBvcmFyeSBw cHAwIGFkZHJlc3NlcwotKyAqIGFuZCB0aGVuIGNoYW5nZXMgdGhlIHRlbXBvcmFyeSBhZGRyZXNz ZXMgdG8gdGhlIGFkZHJlc3NlcyBmb3IgdGhlIHJlYWwKLSsgKiBwcHAgY29ubmVjdGlvbiB3aGVu IGl0IGhhcyBjb21lIHVwLgotKyAqLwotKwotK2ludCBzaWZkZWZhdWx0cm91dGUgKGludCB1bml0 LCB1X2ludDMyX3Qgb3VyYWRkciwgdV9pbnQzMl90IGdhdGV3YXksIGJvb2wgcmVwbGFjZSkKLSt7 Ci0rICAgIHN0cnVjdCBydGVudHJ5IHJ0LCB0bXBfcnQ7Ci0rICAgIHN0cnVjdCBydGVudHJ5ICpk ZWxfcnQgPSBOVUxMOwotKwotKyAgICBpZiAoZGVmYXVsdF9ydF9yZXBsX3Jlc3QpIHsKLSsgICAg ICAgLyogV2UgaGF2ZSBhbHJlYWR5IHJlY2xhY2VkIHRoZSBvcmlnaW5hbCBkZWZhdWx0cm91dGUs IGlmIHdlCi0rICAgICAgICAgKiBhcmUgY2FsbGVkIGFnYWluLCB3ZSB3aWxsIGRlbGV0ZSB0aGUg Y3VycmVudCBkZWZhdWx0IHJvdXRlCi0rICAgICAgICAgKiBhbmQgc2V0IHRoZSBuZXcgZGVmYXVs dCByb3V0ZSBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgICAgICAgICogLSB0aGlzIGlzIG5vcm1hbGx5 IG9ubHkgdGhlIGNhc2UgdGhlIGRvaW5nIGRlbWFuZDogKi8KLSsgICAgICAgaWYgKGRlZmF1bHRy b3V0ZV9leGlzdHMoICZ0bXBfcnQgKSkKLSsgICAgICAgICAgICAgICBkZWxfcnQgPSAmdG1wX3J0 OwotKyAgICB9IGVsc2UgaWYgKCBkZWZhdWx0cm91dGVfZXhpc3RzKCAmb2xkX2RlZl9ydCAgICAg ICAgICAgICAgICApICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNtcCggIG9s ZF9kZWZfcnQucnRfZGV2LCBpZm5hbWUgKSAhPSAwKSB7Ci0rICAgICAgIC8qIFdlIGRpZCBub3Qg eWV0IHJlcGxhY2UgYW4gZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSwgbGV0J3MKLSsgICAgICAgICog Y2hlY2sgaWYgd2Ugc2hvdWxkIHNhdmUgYW5kIHJlcGxhY2UgYSBkZWZhdWx0IHJvdXRlOgotKyAg ICAgICAgICovCi0rICAgICAgIHVfaW50MzJfdCBvbGRfZ2F0ZXdheSA9IFNJTl9BRERSKG9sZF9k ZWZfcnQucnRfZ2F0ZXdheSk7Ci0rCi0rICAgICAgIGlmIChvbGRfZ2F0ZXdheSAhPSBnYXRld2F5 KSB7Ci0rICAgICAgICAgICBpZiAoIXJlcGxhY2UpIHsKLSsgICAgICAgICAgICAgICBlcnJvcigi bm90IHJlcGxhY2luZyBkZWZhdWx0IHJvdXRlIHRvICVzIFslSV0iLAotKyAgICAgICAgICAgICAg ICAgICAgICAgb2xkX2RlZl9ydC5ydF9kZXYsIG9sZF9nYXRld2F5KTsKLSsgICAgICAgICAgICAg ICByZXR1cm4gMDsKLSsgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgLy8gd2Ug bmVlZCB0byBjb3B5IHJ0X2RldiBiZWNhdXNlIHdlIG5lZWQgaXQgcGVybWFuZW50IHRvbzoKLSsg ICAgICAgICAgICAgICBjaGFyICogdG1wX2RldiA9IG1hbGxvYyhzdHJsZW4ob2xkX2RlZl9ydC5y dF9kZXYpKzEpOwotKyAgICAgICAgICAgICAgIHN0cmNweSh0bXBfZGV2LCBvbGRfZGVmX3J0LnJ0 X2Rldik7Ci0rICAgICAgICAgICAgICAgb2xkX2RlZl9ydC5ydF9kZXYgPSB0bXBfZGV2OwotKwot KyAgICAgICAgICAgICAgIG5vdGljZSgicmVwbGFjaW5nIG9sZCBkZWZhdWx0IHJvdXRlIHRvICVz IFslSV0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RlZl9ydC5ydF9kZXYsIG9sZF9n YXRld2F5KTsKLSsgICAgICAgICAgICAgICBkZWZhdWx0X3J0X3JlcGxfcmVzdCA9IDE7Ci0rICAg ICAgICAgICAgICAgZGVsX3J0ID0gJm9sZF9kZWZfcnQ7Ci0rICAgICAgICAgICB9Ci0rICAgICAg IH0KLSAgICAgfQotLQotICAgICBtZW1zZXQgKCZydCwgMCwgc2l6ZW9mIChydCkpOwotICAgICBT RVRfU0FfRkFNSUxZIChydC5ydF9kc3QsIEFGX0lORVQpOwotIAotQEAgLTE2NjgsNiArMTcwNCwx MiBAQCBpbnQgc2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFkZHIsIHVf aW50MzJfdCBnYXRld2F5KQotIAkgICAgZXJyb3IoImRlZmF1bHQgcm91dGUgaW9jdGwoU0lPQ0FE RFJUKTogJW0iKTsKLSAJcmV0dXJuIDA7Ci0gICAgIH0KLSsgICAgaWYgKGRlZmF1bHRfcnRfcmVw bF9yZXN0ICYmIGRlbF9ydCkKLSsgICAgICAgIGlmIChpb2N0bChzb2NrX2ZkLCBTSU9DREVMUlQs IGRlbF9ydCkgPCAwKSB7Ci0rCSAgICBpZiAoICEgb2tfZXJyb3IgKCBlcnJubyApKQotKwkgICAg ICAgIGVycm9yKCJkZWwgb2xkIGRlZmF1bHQgcm91dGUgaW9jdGwoU0lPQ0RFTFJUKTogJW0oJWQp IiwgZXJybm8pOwotKwkgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCi0gICAgIGhhdmVfZGVm YXVsdF9yb3V0ZSA9IDE7Ci0gICAgIHJldHVybiAxOwotQEAgLTE3MDMsNiArMTc0NSwxNiBAQCBp bnQgY2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFkZHIsIHVfaW50MzJf dCBnYXRld2F5KQotIAkgICAgcmV0dXJuIDA7Ci0gCX0KLSAgICAgfQotKyAgICBpZiAoZGVmYXVs dF9ydF9yZXBsX3Jlc3QpIHsKLSsJbm90aWNlKCJyZXN0b3Jpbmcgb2xkIGRlZmF1bHQgcm91dGUg dG8gJXMgWyVJXSIsCi0rCQkJb2xkX2RlZl9ydC5ydF9kZXYsIFNJTl9BRERSKG9sZF9kZWZfcnQu cnRfZ2F0ZXdheSkpOwotKyAgICAgICAgaWYgKGlvY3RsKHNvY2tfZmQsIFNJT0NBRERSVCwgJm9s ZF9kZWZfcnQpIDwgMCkgewotKwkgICAgaWYgKCAhIG9rX2Vycm9yICggZXJybm8gKSkKLSsJICAg ICAgICBlcnJvcigicmVzdG9yZSBkZWZhdWx0IHJvdXRlIGlvY3RsKFNJT0NBRERSVCk6ICVtKCVk KSIsIGVycm5vKTsKLSsJICAgIHJldHVybiAwOwotKyAgICAgICAgfQotKyAgICAgICAgZGVmYXVs dF9ydF9yZXBsX3Jlc3QgPSAwOwotKyAgICB9Ci0gCi0gICAgIHJldHVybiAxOwotIH0KZGlmZiAt LWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjktYWRkLXN1cHBvcnQtZm9yLXRoZS1GcmFtZWQt TVRVLVJhZGl1cy1hdHRyaWJ1dGUucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFkZC1z dXBwb3J0LWZvci10aGUtRnJhbWVkLU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2QxYjc4ZTcuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZvci10aGUtRnJhbWVkLU1UVS1SYWRpdXMtYXR0 cmlidXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbTogTWljaGFl bCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAy MDE5IDA4OjExOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFkZCBzdXBwb3J0IGZvciB0aGUg RnJhbWVkLU1UVSBSYWRpdXMgYXR0cmlidXRlCi0KLWh0dHA6Ly9wcHAuc2FtYmEub3JnL2NnaS1i aW4vcHBwLWJ1Z3MvaW5jb21pbmc/aWQ9MTUzMgotCi1Gcm9tOiBrbGVwaWtvdl9hQHVwLnVhCi1U bzogcHBwLWJ1Z3NAcHBwLnNhbWJhLm9yZwotU3ViamVjdDogUmFkaXVzIHBsdWdpbiBkb2VzIG5v dCBzZXQgTVRVIG9uIHBwcCBpbnRlcmZhY2UKLURhdGU6IE1vbiwgMjIgSmFuIDIwMDcgMTI6MzY6 NTkgKzAwMDAgKEdNVCkKLQotRnVsbF9OYW1lOiBBbGV4YW5kZXIgS2xlcGlrb3YKLVZlcnNpb246 IDIuNC4zCi1PUzogcmhsIDcuMyAoMi40LjIwLTI4LjdiaWdtZW0pCi1TdWJtaXNzaW9uIGZyb206 IChOVUxMKSAoMjEzLjEzMC4yMS43MykKLQotCi1UaGlzIHBhdGNoIGFsbG93cyByYWRpdXMgcGx1 Z2luIHRvIGRlYWwgd2l0aCBGcmFtZWQtTVRVIFJhZGl1cyBhdHRyaWJ1dGUgYW5kIHRvCi1zZXQg TVRVIG9uIGludGVyZmFjZS4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBl bmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYyB8IDMgKysr Ci0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9w bHVnaW5zL3JhZGl1cy9yYWRpdXMuYyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvcmFkaXVzLmMKLWlu ZGV4IDRiYTVmNTIzZWEwNy4uMDZlMDA1OTBiNjM1IDEwMDY0NAotLS0tIGEvcHBwZC9wbHVnaW5z L3JhZGl1cy9yYWRpdXMuYwotKysrIGIvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYwotQEAg LTY1MSw2ICs2NTEsOSBAQCByYWRpdXNfc2V0cGFyYW1zKFZBTFVFX1BBSVIgKnZwLCBjaGFyICpt c2csIFJFUVVFU1RfSU5GTyAqcmVxX2luZm8sCi0gCQkgICAgbWVtY3B5KHJzdGF0ZS5jbGFzcywg dnAtPnN0cnZhbHVlLCByc3RhdGUuY2xhc3NfbGVuKTsKLSAJCX0gLyogZWxzZSB0b28gYmlnIGZv ciBvdXIgYnVmZmVyIC0gaWdub3JlIGl0ICovCi0gCQlicmVhazsKLSsJICAgIGNhc2UgUFdfRlJB TUVEX01UVToKLSsJCW5ldGlmX3NldF9tdHUocnN0YXRlLmNsaWVudF9wb3J0LE1JTihuZXRpZl9n ZXRfbXR1KHJzdGF0ZS5jbGllbnRfcG9ydCksdnAtPmx2YWx1ZSkpOwotKwkJYnJlYWs7Ci0gCSAg ICB9Ci0gCi0gCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMwLTAxOF9pcC11cF9v cHRpb24ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDMwLTAxOF9pcC11cF9vcHRpb24ucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Y2IyZTViYi4uMDAwMDAwMDAwCi0t LSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzAtMDE4X2lwLXVwX29wdGlvbi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAK LVN1YmplY3Q6IFtQQVRDSF0gMDE4X2lwIHVwX29wdGlvbgotCi1JbXBvcnRlZCBmcm9tIHBwcF8y LjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmlj aCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gcHBwZC9pcGNwLmMgICAgfCA4ICsr KystLS0tCi0gcHBwZC9tYWluLmMgICAgfCAzICsrKwotIHBwcGQvb3B0aW9ucy5jIHwgOSArKysr KysrKysKLSBwcHBkL3BwcGQuaCAgICB8IDIgKysKLSA0IGZpbGVzIGNoYW5nZWQsIDE4IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL2lwY3AuYyBiL3Bw cGQvaXBjcC5jCi1pbmRleCBkY2VjYTgwNzU0MmEuLmQ2ZTBlMmE2OTlmZSAxMDA2NDQKLS0tLSBh L3BwcGQvaXBjcC5jCi0rKysgYi9wcHBkL2lwY3AuYwotQEAgLTE5ODQsNyArMTk4NCw3IEBAIGlw Y3BfdXAoZikKLSAgICAgICovCi0gICAgIGlmIChpcGNwX3NjcmlwdF9zdGF0ZSA9PSBzX2Rvd24g JiYgaXBjcF9zY3JpcHRfcGlkID09IDApIHsKLSAJaXBjcF9zY3JpcHRfc3RhdGUgPSBzX3VwOwot LQlpcGNwX3NjcmlwdChfUEFUSF9JUFVQLCAwKTsKLSsJaXBjcF9zY3JpcHQocGF0aF9pcHVwLCAw KTsKLSAgICAgfQotIH0KLSAKLUBAIC0yMDM0LDcgKzIwMzQsNyBAQCBpcGNwX2Rvd24oZikKLSAg ICAgLyogRXhlY3V0ZSB0aGUgaXAtZG93biBzY3JpcHQgKi8KLSAgICAgaWYgKGlwY3Bfc2NyaXB0 X3N0YXRlID09IHNfdXAgJiYgaXBjcF9zY3JpcHRfcGlkID09IDApIHsKLSAJaXBjcF9zY3JpcHRf c3RhdGUgPSBzX2Rvd247Ci0tCWlwY3Bfc2NyaXB0KF9QQVRIX0lQRE9XTiwgMCk7Ci0rCWlwY3Bf c2NyaXB0KHBhdGhfaXBkb3duLCAwKTsKLSAgICAgfQotIH0KLSAKLUBAIC0yMDk3LDEzICsyMDk3 LDEzIEBAIGlwY3Bfc2NyaXB0X2RvbmUoYXJnKQotICAgICBjYXNlIHNfdXA6Ci0gCWlmIChpcGNw X2ZzbVswXS5zdGF0ZSAhPSBPUEVORUQpIHsKLSAJICAgIGlwY3Bfc2NyaXB0X3N0YXRlID0gc19k b3duOwotLQkgICAgaXBjcF9zY3JpcHQoX1BBVEhfSVBET1dOLCAwKTsKLSsJICAgIGlwY3Bfc2Ny aXB0KHBhdGhfaXBkb3duLCAwKTsKLSAJfQotIAlicmVhazsKLSAgICAgY2FzZSBzX2Rvd246Ci0g CWlmIChpcGNwX2ZzbVswXS5zdGF0ZSA9PSBPUEVORUQpIHsKLSAJICAgIGlwY3Bfc2NyaXB0X3N0 YXRlID0gc191cDsKLS0JICAgIGlwY3Bfc2NyaXB0KF9QQVRIX0lQVVAsIDApOwotKwkgICAgaXBj cF9zY3JpcHQocGF0aF9pcHVwLCAwKTsKLSAJfQotIAlicmVhazsKLSAgICAgfQotZGlmZiAtLWdp dCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKLWluZGV4IGVkNTQ0MzE1YzFkZi4uOTE2NGEx ZWIwZjk1IDEwMDY0NAotLS0tIGEvcHBwZC9tYWluLmMKLSsrKyBiL3BwcGQvbWFpbi5jCi1AQCAt MzA4LDYgKzMwOCw5IEBAIG1haW4oYXJnYywgYXJndikKLSAgICAgc3RydWN0IHByb3RlbnQgKnBy b3RwOwotICAgICBjaGFyIG51bWJ1ZlsxNl07Ci0gCi0rICAgIHN0cmxjcHkocGF0aF9pcHVwLCBf UEFUSF9JUFVQLCBzaXplb2YocGF0aF9pcHVwKSk7Ci0rICAgIHN0cmxjcHkocGF0aF9pcGRvd24s IF9QQVRIX0lQRE9XTiwgc2l6ZW9mKHBhdGhfaXBkb3duKSk7Ci0rCi0gICAgIGxpbmtfc3RhdHNf dmFsaWQgPSAwOwotICAgICBuZXdfcGhhc2UoUEhBU0VfSU5JVElBTElaRSk7Ci0gCi1kaWZmIC0t Z2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29wdGlvbnMuYwotaW5kZXggOTFkYTUxNWFjNTMz Li5hOGYzYWE0NTkwYTMgMTAwNjQ0Ci0tLS0gYS9wcHBkL29wdGlvbnMuYwotKysrIGIvcHBwZC9v cHRpb25zLmMKLUBAIC0xMTQsNiArMTE0LDggQEAgY2hhcglsaW5rbmFtZVtNQVhQQVRITEVOXTsJ LyogbG9naWNhbCBuYW1lIGZvciBsaW5rICovCi0gYm9vbAl0dW5lX2tlcm5lbDsJCS8qIG1heSBh bHRlciBrZXJuZWwgc2V0dGluZ3MgKi8KLSBpbnQJY29ubmVjdF9kZWxheSA9IDEwMDA7CS8qIHdh aXQgdGhpcyBtYW55IG1zIGFmdGVyIGNvbm5lY3Qgc2NyaXB0ICovCi0gaW50CXJlcV91bml0ID0g LTE7CQkvKiByZXF1ZXN0ZWQgaW50ZXJmYWNlIHVuaXQgKi8KLStjaGFyCXBhdGhfaXB1cFtNQVhQ QVRITEVOXTsJLyogcGF0aG5hbWUgb2YgaXAtdXAgc2NyaXB0ICovCi0rY2hhcglwYXRoX2lwZG93 bltNQVhQQVRITEVOXTsvKiBwYXRobmFtZSBvZiBpcC1kb3duIHNjcmlwdCAqLwotIGNoYXIJcmVx X2lmbmFtZVtNQVhJRk5BTUVMRU5dOwkvKiByZXF1ZXN0ZWQgaW50ZXJmYWNlIG5hbWUgKi8KLSBi b29sCW11bHRpbGluayA9IDA7CQkvKiBFbmFibGUgbXVsdGlsaW5rIG9wZXJhdGlvbiAqLwotIGNo YXIJKmJ1bmRsZV9uYW1lID0gTlVMTDsJLyogYnVuZGxlIG5hbWUgZm9yIG11bHRpbGluayAqLwot QEAgLTMwNCw2ICszMDYsMTMgQEAgb3B0aW9uX3QgZ2VuZXJhbF9vcHRpb25zW10gPSB7Ci0gICAg ICAgIlVuc2V0IHVzZXIgZW52aXJvbm1lbnQgdmFyaWFibGUiLAotICAgICAgIE9QVF9BMlBSSU5U RVIgfCBPUFRfTk9QUklOVCwgKHZvaWQgKil1c2VyX3Vuc2V0cHJpbnQgfSwKLSAKLSsgICAgeyAi aXAtdXAtc2NyaXB0Iiwgb19zdHJpbmcsIHBhdGhfaXB1cCwKLSsgICAgICAiU2V0IHBhdGhuYW1l IG9mIGlwLXVwIHNjcmlwdCIsCi0rICAgICAgT1BUX1BSSVZ8T1BUX1NUQVRJQywgTlVMTCwgTUFY UEFUSExFTiB9LAotKyAgICB7ICJpcC1kb3duLXNjcmlwdCIsIG9fc3RyaW5nLCBwYXRoX2lwZG93 biwKLSsgICAgICAiU2V0IHBhdGhuYW1lIG9mIGlwLWRvd24gc2NyaXB0IiwKLSsgICAgICBPUFRf UFJJVnxPUFRfU1RBVElDLCBOVUxMLCBNQVhQQVRITEVOIH0sCi0rCi0gI2lmZGVmIEhBVkVfTVVM VElMSU5LCi0gICAgIHsgIm11bHRpbGluayIsIG9fYm9vbCwgJm11bHRpbGluaywKLSAgICAgICAi RW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24iLCBPUFRfUFJJTyB8IDEgfSwKLWRpZmYgLS1naXQg YS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1pbmRleCBlNjUxMDZkNGMxMjYuLmIxMTY3MDU4 NjI0NCAxMDA2NDQKLS0tLSBhL3BwcGQvcHBwZC5oCi0rKysgYi9wcHBkL3BwcGQuaAotQEAgLTMy OCw2ICszMjgsOCBAQCBleHRlcm4gYm9vbAl0dW5lX2tlcm5lbDsJLyogTWF5IGFsdGVyIGtlcm5l bCBzZXR0aW5ncyBhcyBuZWNlc3NhcnkgKi8KLSBleHRlcm4gaW50CWNvbm5lY3RfZGVsYXk7CS8q IFRpbWUgdG8gZGVsYXkgYWZ0ZXIgY29ubmVjdCBzY3JpcHQgKi8KLSBleHRlcm4gaW50CW1heF9k YXRhX3JhdGU7CS8qIG1heCBieXRlcy9zZWMgdGhyb3VnaCBjaGFyc2h1bnQgKi8KLSBleHRlcm4g aW50CXJlcV91bml0OwkvKiBpbnRlcmZhY2UgdW5pdCBudW1iZXIgdG8gdXNlICovCi0rZXh0ZXJu IGNoYXIJcGF0aF9pcHVwW01BWFBBVEhMRU5dOyAvKiBwYXRobmFtZSBvZiBpcC11cCBzY3JpcHQg Ki8KLStleHRlcm4gY2hhcglwYXRoX2lwZG93bltNQVhQQVRITEVOXTsgLyogcGF0aG5hbWUgb2Yg aXAtZG93biBzY3JpcHQgKi8KLSBleHRlcm4gY2hhcglyZXFfaWZuYW1lW01BWElGTkFNRUxFTl07 IC8qIGludGVyZmFjZSBuYW1lIHRvIHVzZSAqLwotIGV4dGVybiBib29sCW11bHRpbGluazsJLyog ZW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24gKi8KLSBleHRlcm4gYm9vbAlub2VuZHBvaW50Owkv KiBkb24ndCBzZW5kIG9yIGFjY2VwdCBlbmRwdC4gZGlzY3JpbS4gKi8KZGlmZiAtLWdpdCBhL3Bh dGNoZXMvcHBwLTIuNC43LzAwMzEtcHBwLTIuNC4yLXN0cmlwTVNkb21haW4ucGF0Y2ggYi9wYXRj aGVzL3BwcC0yLjQuNy8wMDMxLXBwcC0yLjQuMi1zdHJpcE1TZG9tYWluLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjYyOTAyNmMuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDMxLXBwcC0yLjQuMi1zdHJpcE1TZG9tYWluLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIHBwcC0yLjQuMi1zdHJpcE1TZG9tYWluCi0KLUltcG9ydGVkIGZyb20gcHBw XzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJy aWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL2NoYXAtbmV3LmMgfCAx MSArKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCi0KLWRpZmYg LS1naXQgYS9wcHBkL2NoYXAtbmV3LmMgYi9wcHBkL2NoYXAtbmV3LmMKLWluZGV4IDI3MTRiZmY2 NDc4NS4uN2ZkNzA4N2E1ZTJjIDEwMDY0NAotLS0tIGEvcHBwZC9jaGFwLW5ldy5jCi0rKysgYi9w cHBkL2NoYXAtbmV3LmMKLUBAIC01OCw2ICs1OCw3IEBAIGludCAoKmNoYXBfdmVyaWZ5X2hvb2sp KGNoYXIgKm5hbWUsIGNoYXIgKm91cm5hbWUsIGludCBpZCwKLSBpbnQgY2hhcF90aW1lb3V0X3Rp bWUgPSAzOwotIGludCBjaGFwX21heF90cmFuc21pdHMgPSAxMDsKLSBpbnQgY2hhcF9yZWNoYWxs ZW5nZV90aW1lID0gMDsKLStpbnQgY2hhcG1zX3N0cmlwX2RvbWFpbiA9IDA7Ci0gCi0gLyoKLSAg KiBDb21tYW5kLWxpbmUgb3B0aW9ucy4KLUBAIC02OSw2ICs3MCw4IEBAIHN0YXRpYyBvcHRpb25f dCBjaGFwX29wdGlvbl9saXN0W10gPSB7Ci0gCSAgIlNldCBtYXggI3htaXRzIGZvciBjaGFsbGVu Z2UiLCBPUFRfUFJJTyB9LAotIAl7ICJjaGFwLWludGVydmFsIiwgb19pbnQsICZjaGFwX3JlY2hh bGxlbmdlX3RpbWUsCi0gCSAgIlNldCBpbnRlcnZhbCBmb3IgcmVjaGFsbGVuZ2UiLCBPUFRfUFJJ TyB9LAotKwl7ICJjaGFwbXMtc3RyaXAtZG9tYWluIiwgb19ib29sLCAmY2hhcG1zX3N0cmlwX2Rv bWFpbiwKLSsJICAiU3RyaXAgdGhlIGRvbWFpbiBwcmVmaXggYmVmb3JlIHRoZSBVc2VybmFtZSIs IDEgfSwKLSAJeyBOVUxMIH0KLSB9OwotIAotQEAgLTMzNiw2ICszMzksMTQgQEAgY2hhcF9oYW5k bGVfcmVzcG9uc2Uoc3RydWN0IGNoYXBfc2VydmVyX3N0YXRlICpzcywgaW50IGlkLAotIAkJCS8q IE51bGwgdGVybWluYXRlIGFuZCBjbGVhbiByZW1vdGUgbmFtZS4gKi8KLSAJCQlzbHByaW50Zihy bmFtZSwgc2l6ZW9mKHJuYW1lKSwgIiUuKnYiLCBsZW4sIG5hbWUpOwotIAkJCW5hbWUgPSBybmFt ZTsKLSsKLSsJCQkvKiBzdHJpcCB0aGUgTVMgZG9tYWluIG5hbWUgKi8KLSsJCQlpZiAoY2hhcG1z X3N0cmlwX2RvbWFpbiAmJiBzdHJyY2hyKHJuYW1lLCAnXFwnKSkgewotKwkJCQljaGFyIHRtcFtN QVhOQU1FTEVOKzFdOwotKwotKwkJCQlzdHJjcHkodG1wLCBzdHJyY2hyKHJuYW1lLCAnXFwnKSAr IDEpOwotKwkJCQlzdHJjcHkocm5hbWUsIHRtcCk7Ci0rCQkJfQotIAkJfQotIAotIAkJaWYgKGNo YXBfdmVyaWZ5X2hvb2spCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMyLWV4cG9y dC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2NyaXB0cy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43 LzAwMzItZXhwb3J0LUNBTExfRklMRS10by10aGUtbGluay1zY3JpcHRzLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTJlMTcwODguLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDMyLWV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2NyaXB0cy5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8 bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1 MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBleHBvcnQgJENBTExfRklMRSB0byB0aGUgbGluayBz Y3JpcHRzCi0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKLQot U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Ci0tLS0KLSBwcHBkL29wdGlvbnMuYyB8IDEgKwotIHBwcGQvcHBwZC44ICAgIHwgMyArKysKLSAy IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9vcHRp b25zLmMgYi9wcHBkL29wdGlvbnMuYwotaW5kZXggYThmM2FhNDU5MGEzLi4zNDA3OTczODZkZDYg MTAwNjQ0Ci0tLS0gYS9wcHBkL29wdGlvbnMuYwotKysrIGIvcHBwZC9vcHRpb25zLmMKLUBAIC0x NDgyLDYgKzE0ODIsNyBAQCBjYWxsZmlsZShhcmd2KQotICAgICBpZiAoKGZuYW1lID0gKGNoYXIg KikgbWFsbG9jKGwpKSA9PSBOVUxMKQotIAlub3ZtKCJjYWxsIGZpbGUgbmFtZSIpOwotICAgICBz bHByaW50ZihmbmFtZSwgbCwgIiVzJXMiLCBfUEFUSF9QRUVSRklMRVMsIGFyZyk7Ci0rICAgIHNj cmlwdF9zZXRlbnYoIkNBTExfRklMRSIsIGFyZywgMCk7Ci0gCi0gICAgIG9rID0gb3B0aW9uc19m cm9tX2ZpbGUoZm5hbWUsIDEsIDEsIDEpOwotIAotZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIv cHBwZC9wcHBkLjgKLWluZGV4IDQ4MWFhOGJlNjcyYi4uODQ4Y2E4YTE2Yjc3IDEwMDY0NAotLS0t IGEvcHBwZC9wcHBkLjgKLSsrKyBiL3BwcGQvcHBwZC44Ci1AQCAtMTY2Miw2ICsxNjYyLDkgQEAg dGhlIGNvbm5lY3Rpb24uCi0gLkIgTElOS05BTUUKLSBUaGUgbG9naWNhbCBuYW1lIG9mIHRoZSBs aW5rLCBzZXQgd2l0aCB0aGUgXGZJbGlua25hbWVcZlIgb3B0aW9uLgotIC5UUAotKy5CIENBTExf RklMRQotK1RoZSB2YWx1ZSBvZiB0aGUgXGZJY2FsbFxmUiBvcHRpb24uCi0rLlRQCi0gLkIgRE5T MQotIElmIHRoZSBwZWVyIHN1cHBsaWVzIEROUyBzZXJ2ZXIgYWRkcmVzc2VzLCB0aGlzIHZhcmlh YmxlIGlzIHNldCB0byB0aGUKLSBmaXJzdCBETlMgc2VydmVyIGFkZHJlc3Mgc3VwcGxpZWQgKHdo ZXRoZXIgb3Igbm90IHRoZSB1c2VwZWVyZG5zCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMzMt aXB2Ni1hY2NlcHQtcmVtb3RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MTM3NmNmMTQuLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMzLWlwdjYtYWNj ZXB0LXJlbW90ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb206IE1p Y2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogU2F0LCAyOCBT ZXAgMjAxOSAwODoxMTo1MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBpcHY2LWFjY2VwdC1yZW1v dGUKLQotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWdu ZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0t LQotIHBwcGQvaXB2NmNwLmMgfCA1ICsrKystCi0gcHBwZC9pcHY2Y3AuaCB8IDMgKystCi0gcHBw ZC9wcHBkLjggICB8IDUgKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcHBkL2lwdjZjcC5jIGIvcHBwZC9pcHY2 Y3AuYwotaW5kZXggYzE2MDJmNDFjMjA2Li40MzIxNzA0NjIxOTYgMTAwNjQ0Ci0tLS0gYS9wcHBk L2lwdjZjcC5jCi0rKysgYi9wcHBkL2lwdjZjcC5jCi1AQCAtMjQ1LDYgKzI0NSw4IEBAIHN0YXRp YyBvcHRpb25fdCBpcHY2Y3Bfb3B0aW9uX2xpc3RbXSA9IHsKLSAKLSAgICAgeyAiaXB2NmNwLWFj Y2VwdC1sb2NhbCIsIG9fYm9vbCwgJmlwdjZjcF9hbGxvd29wdGlvbnNbMF0uYWNjZXB0X2xvY2Fs LAotICAgICAgICJBY2NlcHQgcGVlcidzIGludGVyZmFjZSBpZGVudGlmaWVyIGZvciB1cyIsIDEg fSwKLSsgICAgeyAiaXB2NmNwLWFjY2VwdC1yZW1vdGUiLCBvX2Jvb2wsICZpcHY2Y3BfYWxsb3dv cHRpb25zWzBdLmFjY2VwdF9yZW1vdGUsCi0rICAgICAgIkFjY2VwdCBwZWVyJ3MgaW50ZXJmYWNl IGlkZW50aWZpZXIgZm9yIGl0c2VsZiIsIDEgfSwKLSAKLSAgICAgeyAiaXB2NmNwLXVzZS1pcGFk ZHIiLCBvX2Jvb2wsICZpcHY2Y3BfYWxsb3dvcHRpb25zWzBdLnVzZV9pcCwKLSAgICAgICAiVXNl IChkZWZhdWx0KSBJUHY0IGFkZHJlc3MgYXMgaW50ZXJmYWNlIGlkZW50aWZpZXIiLCAxIH0sCi1A QCAtNDM1LDYgKzQzNyw3IEBAIGlwdjZjcF9pbml0KHVuaXQpCi0gICAgIG1lbXNldChhbywgMCwg c2l6ZW9mKCphbykpOwotIAotICAgICB3by0+YWNjZXB0X2xvY2FsID0gMTsKLSsgICAgd28tPmFj Y2VwdF9yZW1vdGUgPSAxOwotICAgICB3by0+bmVnX2lmYWNlaWQgPSAxOwotICAgICBhby0+bmVn X2lmYWNlaWQgPSAxOwotIAotQEAgLTk2MCw3ICs5NjMsNyBAQCBpcHY2Y3BfcmVxY2koZiwgaW5w LCBsZW4sIHJlamVjdF9pZl9kaXNhZ3JlZSkKLSAJCW9yYyA9IENPTkZSRUo7CQkvKiBSZWplY3Qg Q0kgKi8KLSAJCWJyZWFrOwotIAkgICAgfQotLQkgICAgaWYgKCFldWk2NF9pc3plcm8od28tPmhp c2lkKSAmJiAKLSsJICAgIGlmICghZXVpNjRfaXN6ZXJvKHdvLT5oaXNpZCkgJiYgIXdvLT5hY2Nl cHRfcmVtb3RlICYmCi0gCQkhZXVpNjRfZXF1YWxzKGlmYWNlaWQsIHdvLT5oaXNpZCkgJiYgCi0g CQlldWk2NF9pc3plcm8oZ28tPmhpc2lkKSkgewotIAkJICAgIAotZGlmZiAtLWdpdCBhL3BwcGQv aXB2NmNwLmggYi9wcHBkL2lwdjZjcC5oCi1pbmRleCAyZjRjMDZkZGMxODkuLjE2MTc3MDdlYmJk ZSAxMDA2NDQKLS0tLSBhL3BwcGQvaXB2NmNwLmgKLSsrKyBiL3BwcGQvaXB2NmNwLmgKLUBAIC0x NTAsNyArMTUwLDggQEAKLSB0eXBlZGVmIHN0cnVjdCBpcHY2Y3Bfb3B0aW9ucyB7Ci0gICAgIGlu dCBuZWdfaWZhY2VpZDsJCS8qIE5lZ290aWF0ZSBpbnRlcmZhY2UgaWRlbnRpZmllcj8gKi8KLSAg ICAgaW50IHJlcV9pZmFjZWlkOwkJLyogQXNrIHBlZXIgdG8gc2VuZCBpbnRlcmZhY2UgaWRlbnRp Zmllcj8gKi8KLS0gICAgaW50IGFjY2VwdF9sb2NhbDsJCS8qIGFjY2VwdCBwZWVyJ3MgdmFsdWUg Zm9yIGlmYWNlIGlkPyAqLwotKyAgICBpbnQgYWNjZXB0X2xvY2FsOwkJLyogYWNjZXB0IHBlZXIn cyB2YWx1ZSBmb3Igb3VyIGlmYWNlIGlkPyAqLwotKyAgICBpbnQgYWNjZXB0X3JlbW90ZTsJCS8q IGFjY2VwdCBwZWVyJ3MgdmFsdWUgZm9yIGhpcyBpZmFjZSBpZD8gKi8KLSAgICAgaW50IG9wdF9s b2NhbDsJCS8qIG91cnRva2VuIHNldCBieSBvcHRpb24gKi8KLSAgICAgaW50IG9wdF9yZW1vdGU7 CQkvKiBoaXN0b2tlbiBzZXQgYnkgb3B0aW9uICovCi0gICAgIGludCB1c2VfaXA7CQkJLyogdXNl IElQIGFzIGludGVyZmFjZSBpZGVudGlmaWVyICovCi1kaWZmIC0tZ2l0IGEvcHBwZC9wcHBkLjgg Yi9wcHBkL3BwcGQuOAotaW5kZXggODQ4Y2E4YTE2Yjc3Li42NWJiZTcyMWY3NjEgMTAwNjQ0Ci0t LS0gYS9wcHBkL3BwcGQuOAotKysrIGIvcHBwZC9wcHBkLjgKLUBAIC00NjMsNiArNDYzLDExIEBA IFdpdGggdGhpcyBvcHRpb24sIHBwcGQgd2lsbCBhY2NlcHQgdGhlIHBlZXIncyBpZGVhIG9mIG91 ciBsb2NhbCBJUHY2Ci0gaW50ZXJmYWNlIGlkZW50aWZpZXIsIGV2ZW4gaWYgdGhlIGxvY2FsIElQ djYgaW50ZXJmYWNlIGlkZW50aWZpZXIKLSB3YXMgc3BlY2lmaWVkIGluIGFuIG9wdGlvbi4KLSAu VFAKLSsuQiBpcHY2Y3BcLWFjY2VwdFwtcmVtb3RlCi0rV2l0aCB0aGlzIG9wdGlvbiwgcHBwZCB3 aWxsIGFjY2VwdCB0aGUgcGVlcidzIGlkZWEgb2YgaXRzIChyZW1vdGUpCi0rSVB2NiBpbnRlcmZh Y2UgaWRlbnRpZmllciwgZXZlbiBpZiB0aGUgcmVtb3RlIElQdjYgaW50ZXJmYWNlCi0raWRlbnRp ZmllciB3YXMgc3BlY2lmaWVkIGluIGFuIG9wdGlvbi4KLSsuVFAKLSAuQiBpcHY2Y3BcLW1heFwt Y29uZmlndXJlIFxmSW4KLSBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIElQdjZDUCBjb25maWd1 cmUtcmVxdWVzdCB0cmFuc21pc3Npb25zIHRvCi0gXGZJblxmUiAoZGVmYXVsdCAxMCkuCmRpZmYg LS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3Zl cmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDM0 LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOGEwMjlkZi4uMDAwMDAwMDAwCi0t LSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzQtZml4LWEtcG90ZW50aWFsLWJ1ZmZlci1vdmVyZmxv dy1pbi1jbGllbnRpZC5jLXJjX21hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAg QEAKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0 ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaXgg YSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGluIGNsaWVudGlkLmM6cmNfbWFwMmlkKCkKLQot VGhpcyBmaXhlcyB0aGUgZm9sbG93aW5nIGNvbXBpbGUtdGltZSB3YXJuaW5nIHdoZW4gYnVpbGRp bmcgd2l0aAotLURfRk9SVElGWV9TT1VSQ0U9MjoKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91 c3IvaW5jbHVkZS9zdHJpbmcuaDo2Mzg6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1 ZGVzLmg6MjYsCi0gICAgICAgICAgICAgICAgIGZyb20gY2xpZW50aWQuYzoxMjoKLUluIGZ1bmN0 aW9uICdzdHJuY2F0JywKLSAgICBpbmxpbmVkIGZyb20gJ3JjX21hcDJpZCcgYXQgY2xpZW50aWQu YzoxMTM6OToKLS91c3IvaW5jbHVkZS9pMzg2LWxpbnV4LWdudS9iaXRzL3N0cmluZzMuaDoxNTA6 Mzogd2FybmluZzogY2FsbCB0bwotX19idWlsdGluX19fc3RybmNhdF9jaGsgbWlnaHQgb3ZlcmZs b3cgZGVzdGluYXRpb24gYnVmZmVyIFtlbmFibGVkIGJ5IGRlZmF1bHRdCi0gICByZXR1cm4gX19i dWlsdGluX19fc3RybmNhdF9jaGsgKF9fZGVzdCwgX19zcmMsIF9fbGVuLCBfX2JvcyAoX19kZXN0 KSk7Ci0gICBeCi0KLU9yaWdpbjogdmVuZG9yLCBodHRwczovL2J1aWxkLm9wZW5zdXNlLm9yZy9z b3VyY2UvbmV0d29yay9wcHAvcHBwLTIuNC40LXN0cm5jYXRmaXgucGF0Y2g/cmV2PTdhMGZkZWZm MGIyOTQzN2RkN2Y0NTgxYzk1YzcyNTVhCi1Gb3J3YXJkZWQ6IG5vCi1SZXZpZXdlZC1ieTogQ2hy aXMgQm9vdCA8Ym9vdGNAZGViaWFuLm9yZz4KLUxhc3QtVXBkYXRlOiAyMDE0LTAxLTEyCi0KLQot SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQotIHBw cGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9y YWRpdXMvY2xpZW50aWQuYyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYwotaW5kZXgg ZDQ5NTc5YzQzY2MzLi43ZGUwMjExMzliNTYgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcmFk aXVzL2NsaWVudGlkLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYwotQEAg LTExMCw3ICsxMTAsNyBAQCBVSU5UNCByY19tYXAyaWQoY2hhciAqbmFtZSkKLSAJaWYgKCpuYW1l ICE9ICcvJykKLSAJCXN0cmNweSh0dHluYW1lLCAiL2Rldi8iKTsKLSAKLS0Jc3RybmNhdCh0dHlu YW1lLCBuYW1lLCBzaXplb2YodHR5bmFtZSkpOwotKwlzdHJuY2F0KHR0eW5hbWUsIG5hbWUsIHNp emVvZih0dHluYW1lKS1zdHJsZW4odHR5bmFtZSktMSk7Ci0gCi0gCWZvcihwID0gbWFwMmlkX2xp c3Q7IHA7IHAgPSBwLT5uZXh0KQotIAkJaWYgKCFzdHJjbXAodHR5bmFtZSwgcC0+bmFtZSkpIHJl dHVybiBwLT5pZDsKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzctRml4LWJ1ZmZl ci1vdmVyZmxvdy1pbi1yY19ta3NpZC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMzctRml4 LWJ1ZmZlci1vdmVyZmxvdy1pbi1yY19ta3NpZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZTIxZjEyOWFkLi4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAz Ny1GaXgtYnVmZmVyLW92ZXJmbG93LWluLXJjX21rc2lkLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMzYgKzAsMCBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9u aXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUwICswMjAwCi1TdWJqZWN0OiBb UEFUQ0hdIEZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gcmNfbWtzaWQoKQotCi0gcmNfbWtzaWQgY29u dmVydHMgdGhlIFBJRCBvZiBwcHBkIHRvIGhleCB0byBnZW5lcmF0ZSBhIHBzZXVkby11bmlxdWUg c3RyaW5nLgotIC4KLSBJZiB0aGUgcHJvY2VzcyBpZCBpcyBiaWdnZXIgdGhhbiA2NTUzNSAoRkZG RiksIGl0cyBoZXggcmVwcmVzZW50YXRpb24gd2lsbCBiZQotIGxvbmdlciB0aGFuIDQgY2hhcmFj dGVycywgcmVzdWx0aW5nIGluIGEgYnVmZmVyIG92ZXJmbG93LgotIC4KLSBUaGUgYnVnIGNhbiBi ZSBleHBsb2l0ZWQgdG8gY2F1c2UgYSByZW1vdGUgRG9TLgotIC4KLUF1dGhvcjogRW1hbnVlbGUg Um9jY2EgPGVtYUBkZWJpYW4ub3JnPgotQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5v cmcvNzgyNDUwCi1MYXN0LVVwZGF0ZTogPDIwMTUtMDQtMTQ+Ci0KLQotSW1wb3J0ZWQgZnJvbSBw cHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9s YnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLS0tLQotIHBwcGQvcGx1Z2lucy9yYWRp dXMvdXRpbC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JhZGl1cy91dGlsLmMgYi9wcHBk L3BsdWdpbnMvcmFkaXVzL3V0aWwuYwotaW5kZXggNmY5NzZhNzEyOTUxLi4xNjZiZDVmMzFkN2Eg MTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcmFkaXVzL3V0aWwuYwotKysrIGIvcHBwZC9wbHVn aW5zL3JhZGl1cy91dGlsLmMKLUBAIC03Nyw3ICs3Nyw3IEBAIHJjX21rc2lkICh2b2lkKQotICAg c3RhdGljIHVuc2lnbmVkIHNob3J0IGludCBjbnQgPSAwOwotICAgc3ByaW50ZiAoYnVmLCAiJTA4 bFglMDRYJTAyaFgiLAotIAkgICAodW5zaWduZWQgbG9uZyBpbnQpIHRpbWUgKE5VTEwpLAotLQkg ICAodW5zaWduZWQgaW50KSBnZXRwaWQgKCksCi0rCSAgICh1bnNpZ25lZCBpbnQpIGdldHBpZCAo KSAlIDY1NTM1LAotIAkgICBjbnQgJiAweEZGKTsKLSAgIGNudCsrOwotICAgcmV0dXJuIGJ1ZjsK ZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzgtRUFQLVRMUy1hdXRoZW50aWNhdGlv bi1zdXBwb3J0LWZvci1QUFAucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDM4LUVBUC1UTFMt YXV0aGVudGljYXRpb24tc3VwcG9ydC1mb3ItUFBQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBiZDQ2MmQ0ZjguLjAwMDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDM4LUVBUC1UTFMtYXV0aGVudGljYXRpb24tc3VwcG9ydC1mb3ItUFBQLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzM4MyArMCwwIEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NTAgKzAyMDAK LVN1YmplY3Q6IFtQQVRDSF0gRUFQLVRMUyBhdXRoZW50aWNhdGlvbiBzdXBwb3J0IGZvciBQUFAK LQotT3JpZ2luOiBodHRwczovL3d3dy5uaWtoZWYubmwvfmphbmp1c3QvcHBwL2Rvd25sb2FkLmh0 bWwKLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzYwMjUwMwotQnVnLVVidW50 dTogaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2J1Z3MvNjQzNDE3Ci1Gb3J3YXJkZWQ6IG5vdC1uZWVk ZWQKLUF1dGhvcjogSmFuIEp1c3QgS2VpanNlciA8amFuanVzdEBuaWtoZWYubmw+Ci1MYXN0LVVw ZGF0ZTogMjAxOC0xMS0wNAotCi1UaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHBwcC0yLjQuNy1lYXB0 bHMtbXBwZS0xLjEwMi5wYXRjaCwgd2l0aCB0aGUgZm9sbG93aW5nCi1jaGFuZ2VzOgotCi0gLSBQ YXRjaCByZWZyZXNoZWQgdG8gcmVtb3ZlIGZ1enouCi0gLSBUcmFpbGluZyBzcGFjZXMgcmVtb3Zl ZC4KLQotCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Ci0KLVNp Z25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgot LS0tCi0gUkVBRE1FLmVhcC10bHMgICAgICAgICAgICAgIHwgIDI5MSArKysrKysrKysKLSBldGMu cHBwL2VhcHRscy1jbGllbnQgICAgICAgfCAgIDEwICsKLSBldGMucHBwL2VhcHRscy1zZXJ2ZXIg ICAgICAgfCAgIDExICsKLSBldGMucHBwL29wZW5zc2wuY25mICAgICAgICAgfCAgIDE0ICsKLSBs aW51eC9NYWtlZmlsZS50b3AgICAgICAgICAgfCAgICA2ICstCi0gcHBwZC9NYWtlZmlsZS5saW51 eCAgICAgICAgIHwgICAxMiArCi0gcHBwZC9hdXRoLmMgICAgICAgICAgICAgICAgIHwgIDQxMyAr KysrKysrKysrKystCi0gcHBwZC9jY3AuYyAgICAgICAgICAgICAgICAgIHwgICAyMCArLQotIHBw cGQvY2hhcC1tZDUuYyAgICAgICAgICAgICB8ICAgIDQgKwotIHBwcGQvZWFwLXRscy5jICAgICAg ICAgICAgICB8IDEzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwotIHBwcGQvZWFwLXRscy5oICAgICAgICAgICAgICB8ICAxMDcgKysrKwotIHBwcGQvZWFwLmMg ICAgICAgICAgICAgICAgICB8ICA0NjMgKysrKysrKysrKysrKystCi0gcHBwZC9lYXAuaCAgICAg ICAgICAgICAgICAgIHwgICAzMiArLQotIHBwcGQvbWQ1LmMgICAgICAgICAgICAgICAgICB8ICAg IDQgKwotIHBwcGQvbWQ1LmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwotIHBwcGQvcGF0aG5h bWVzLmggICAgICAgICAgICB8ICAgIDcgKwotIHBwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eCB8 ICAgIDMgKwotIHBwcGQvcGx1Z2lucy9wYXNzcHJvbXB0LmMgICB8ICAgIDMgKwotIHBwcGQvcGx1 Z2lucy9wYXNzd29yZGZkLmMgICB8ICAgIDQgKwotIHBwcGQvcHBwZC44ICAgICAgICAgICAgICAg ICB8ICAgMzMgKysKLSBwcHBkL3BwcGQuaCAgICAgICAgICAgICAgICAgfCAgICA5ICsKLSAyMSBm aWxlcyBjaGFuZ2VkLCAyODI1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0gY3JlYXRl IG1vZGUgMTAwNjQ0IFJFQURNRS5lYXAtdGxzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGV0Yy5wcHAv ZWFwdGxzLWNsaWVudAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBldGMucHBwL2VhcHRscy1zZXJ2ZXIK LSBjcmVhdGUgbW9kZSAxMDA2NDQgZXRjLnBwcC9vcGVuc3NsLmNuZgotIGNyZWF0ZSBtb2RlIDEw MDY0NCBwcHBkL2VhcC10bHMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcHBkL2VhcC10bHMuaAot Ci1kaWZmIC0tZ2l0IGEvUkVBRE1FLmVhcC10bHMgYi9SRUFETUUuZWFwLXRscwotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uMTA3ZTg0ZGI1ZTgxCi0tLS0gL2Rldi9u dWxsCi0rKysgYi9SRUFETUUuZWFwLXRscwotQEAgLTAsMCArMSwyOTEgQEAKLStFQVAtVExTIGF1 dGhlbnRpY2F0aW9uIHN1cHBvcnQgZm9yIFBQUAotKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0rCi0rMS4gSW50cm8KLSsKLSsgICAgVGhlIEV4dGVuc2libGUgQXV0aGVu dGljYXRpb24gUHJvdG9jb2wgKEVBUDsgUkZDIDM3NDgpIGlzIGEKLSsgICAgc2VjdXJpdHkgcHJv dG9jb2wgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBQUC4gIEl0IHByb3ZpZGVzIGEgbWVhbnMKLSsg ICAgdG8gcGx1ZyBpbiBtdWx0aXBsZSBvcHRpb25hbCBhdXRoZW50aWNhdGlvbiBtZXRob2RzLgot KwotKyAgICBUcmFuc3BvcnQgTGV2ZWwgU2VjdXJpdHkgKFRMUzsgUkZDIDUyMTYpIHByb3ZpZGVz IGZvciBtdXR1YWwKLSsgICAgYXV0aGVudGljYXRpb24sIGludGVncml0eS1wcm90ZWN0ZWQgY2lw aGVyc3VpdGUgbmVnb3RpYXRpb24gYW5kCi0rICAgIGtleSBleGNoYW5nZSBiZXR3ZWVuIHR3byBl bmRwb2ludHMuICBJdCBhbHNvIHByb3ZpZGVzIGZvciBvcHRpb25hbAotKyAgICBNUFBFIGVuY3J5 cHRpb24uCi0rCi0rICAgIEVBUC1UTFMgKFJGQyAyNzE2KSBpbmNhcHN1bGF0ZXMgdGhlIFRMUyBt ZXNzYWdlcyBpbiBFQVAgcGFja2V0cywKLSsgICAgYWxsb3dpbmcgVExTIG11dHVhbCBhdXRoZW50 aWNhdGlvbiB0byBiZSB1c2VkIGFzIGEgZ2VuZXJpYyBFQVAKLSsgICAgbWVjaGFuaXNtLiBJdCBh bHNvIHByb3ZpZGVzIG9wdGlvbmFsIGVuY3J5cHRpb24gdXNpbmcgdGhlIE1QUEUKLSsgICAgcHJv dG9jb2wuCi0rCi0rICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSBFQVAtVExTIHN1cHBvcnQgdG8gcHBw ZC4KLSsgICAgVGhpcyBhdXRoZW50aWNhdGlvbiBtZXRob2QgY2FuIGJlIHVzZWQgaW4gYm90aCBj bGllbnQgb3Igc2VydmVyCi0rICAgIG1vZGUuCi0rCi0rMi4gQnVpbGRpbmcKLSsKLSsgICAgVG8g YnVpbGQgcHBwZCB3aXRoIEVBUC1UTFMgc3VwcG9ydCwgT3BlblNTTCAoaHR0cDovL3d3dy5vcGVu c3NsLm9yZykKLSsgICAgaXMgcmVxdWlyZWQuIEFueSB2ZXJzaW9uIGZyb20gMC45Ljcgc2hvdWxk IHdvcmsuCi0rCi0rICAgIENvbmZpZ3VyZSwgY29tcGlsZSwgYW5kIGluc3RhbGwgYXMgdXN1YWwu Ci0rCi0rMy4gQ29uZmlndXJhdGlvbgotKwotKyAgICBPbiB0aGUgY2xpZW50IHNpZGUgdGhlcmUg YXJlIHR3byB3YXlzIHRvIGNvbmZpZ3VyZSBFQVAtVExTOgotKwotKyAgICAxLiBzdXBwbHkgdGhl IGFwcHJvcHJpYXRlICdjYScsICdjZXJ0JyBhbmQgJ2tleScgY29tbWFuZC1saW5lIHBhcmFtZXRl cnMKLSsKLSsgICAgMi4gZWRpdCB0aGUgL2V0Yy9wcHAvZWFwdGxzLWNsaWVudCBmaWxlLgotKyAg ICBJbnNlcnQgYSBsaW5lIGZvciBlYWNoIHN5c3RlbSB3aXRoIHdoaWNoIHlvdSB1c2UgRUFQLVRM Uy4KLSsgICAgVGhlIGxpbmUgaXMgY29tcG9zZWQgb2YgdGhpcyBmaWVsZHMgc2VwYXJhdGVkIGJ5 IHRhYjoKLSsKLSsgICAgICAtIENsaWVudCBuYW1lCi0rICAgICAgICBUaGUgbmFtZSB1c2VkIGJ5 IHRoZSBjbGllbnQgZm9yIGF1dGhlbnRpY2F0aW9uLCBjYW4gYmUgKgotKyAgICAgIC0gU2VydmVy IG5hbWUKLSsgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXIsIGNhbiBiZSAqCi0rICAgICAg LSBDbGllbnQgY2VydGlmaWNhdGUgZmlsZQotKyAgICAgICAgVGhlIGZpbGUgY29udGFpbmluZyB0 aGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHRoZQotKyAgICAgICAgY2xpZW50IGluIFBFTSBmb3Jt YXQKLSsgICAgICAtIFNlcnZlciBjZXJ0aWZpY2F0ZSBmaWxlCi0rICAgICAgICBJZiB5b3Ugd2Fu dCB0byBzcGVjaWZ5IHRoZSBjZXJ0aWZpY2F0ZSB0aGF0IHRoZQotKyAgICAgICAgc2VydmVyIGlz IGFsbG93ZWQgdG8gdXNlLCBwdXQgdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZS4KLSsgICAgICAg IEVsc2UgcHV0IGEgZGFzaCAnLScuCi0rICAgICAgLSBDQSBjZXJ0aWZpY2F0ZSBmaWxlCi0rICAg ICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSB0cnVzdGVkIENBIGNlcnRpZmljYXRlcyBpbiBQ RU0KLSsgICAgICAgIGZvcm1hdC4KLSsgICAgICAtIENsaWVudCBwcml2YXRlIGtleSBmaWxlCi0r ICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGllbnQgcHJpdmF0ZSBrZXkgaW4gUEVN IGZvcm1hdC4KLSsKLSsKLSsgICAgT24gdGhlIHNlcnZlciBzaWRlIGVkaXQgdGhlIC9ldGMvcHBw L2VhcHRscy1zZXJ2ZXIgZmlsZS4KLSsgICAgSW5zZXJ0IGEgbGluZSBmb3IgZWFjaCBzeXN0ZW0g d2l0aCB3aGljaCB5b3UgdXNlIEVBUC1UTFMuCi0rICAgIFRoZSBsaW5lIGlzIGNvbXBvc2VkIG9m IHRoaXMgZmllbGRzIHNlcGFyYXRlZCBieSB0YWI6Ci0rCi0rICAgICAgLSBDbGllbnQgbmFtZQot KyAgICAgICAgVGhlIG5hbWUgdXNlZCBieSB0aGUgY2xpZW50IGZvciBhdXRoZW50aWNhdGlvbiwg Y2FuIGJlICoKLSsgICAgICAtIFNlcnZlciBuYW1lCi0rICAgICAgICBUaGUgbmFtZSBvZiB0aGUg c2VydmVyLCBjYW4gYmUgKgotKyAgICAgIC0gQ2xpZW50IGNlcnRpZmljYXRlIGZpbGUKLSsgICAg ICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhlIGNlcnRpZmljYXRlIHRoYXQgdGhlCi0rICAg ICAgICBjbGllbnQgaXMgYWxsb3dlZCB0byB1c2UsIHB1dCB0aGUgY2VydGlmaWNhdGUgZmlsZSBu YW1lLgotKyAgICAgICAgRWxzZSBwdXQgYSBkYXNoICctJy4KLSsgICAgICAtIFNlcnZlciBjZXJ0 aWZpY2F0ZSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0 ZSBjaGFpbiBmb3IgdGhlCi0rICAgICAgICBzZXJ2ZXIgaW4gUEVNIGZvcm1hdAotKyAgICAgIC0g Q0EgY2VydGlmaWNhdGUgZmlsZQotKyAgICAgICAgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgdHJ1 c3RlZCBDQSBjZXJ0aWZpY2F0ZXMgaW4gUEVNIGZvcm1hdC4KLSsgICAgICAtIENsaWVudCBwcml2 YXRlIGtleSBmaWxlCi0rICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBzZXJ2ZXIgcHJp dmF0ZSBrZXkgaW4gUEVNIGZvcm1hdC4KLSsgICAgICAtIGFkZHJlc3NlcwotKyAgICAgICAgQSBs aXN0IG9mIElQIGFkZHJlc3NlcyB0aGUgY2xpZW50IGlzIGFsbG93ZWQgdG8gdXNlLgotKwotKwot KyAgICBPcGVuU1NMIGVuZ2luZSBzdXBwb3J0IGlzIGluY2x1ZGVkIHN0YXJ0aW5nIHdpdGggdjAu OTUgb2YgdGhpcyBwYXRjaC4KLSsgICAgQ3VycmVudGx5IHRoZSBvbmx5IGVuZ2luZSB0ZXN0ZWQg aXMgdGhlICdwa2NzMTEnIGVuZ2luZSAoaGFyZHdhcmUgdG9rZW4KLSsgICAgc3VwcG9ydCkuIFRv IHVzZSB0aGUgJ3Brc2MxMScgZW5naW5lOgotKyAgICAgIC0gVXNlIGEgc3BlY2lhbCBwcml2YXRl IGtleSBmaWxlaW5hbWUgaW4gdGhlIC9ldGMvcHBwL2VhcHRscy1jbGllbnQgZmlsZToKLSsgICAg ICAgICAgPGVuZ2luZT46PGlkZW50aWZpZXI+Ci0rICAgICAgICBlLmcuCi0rICAgICAgICAgIHBr Y3MxMToxMjM0NTYKLSsKLSsgICAgICAtIFRoZSBjZXJ0aWZpY2F0ZSBjYW4gYWxzbyBiZSBsb2Fk ZWQgZnJvbSB0aGUgJ3BrY3MxMScgZW5naW5lIHVzaW5nCi0rICAgICAgICBhIHNwZWNpYWwgY2xp ZW50IGNlcnRpZmljYXRlIGZpbGVuYW1lIGluIHRoZSAvZXRjL3BwcC9lYXB0bHMtY2xpZW50IGZp bGU6Ci0rICAgICAgICAgIDxlbmdpbmU+OjxpZGVudGlmaWVyPgotKyAgICAgICAgZS5nLgotKyAg ICAgICAgICBwa2NzMTE6MTIzNDU2Ci0rCi0rICAgICAgLSBDcmVhdGUgYW4gL2V0Yy9wcHAvb3Bl bnNzbC5jbmYgZmlsZSB0byBsb2FkIHRoZSByaWdodCBPcGVuU1NMIGVuZ2luZSBwcmlvcgotKyAg ICAgICAgdG8gc3RhcnRpbmcgJ3BwcGQnLiBBIHNhbXBsZSBvcGVuc3NsLmNuZiBmaWxlIGlzCi0r Ci0rICAgICAgICBvcGVuc3NsX2NvbmYgPSBvcGVuc3NsX2RlZgotKwotKyAgICAgICAgWyBvcGVu c3NsX2RlZiBdCi0rICAgICAgICBlbmdpbmVzID0gZW5naW5lX3NlY3Rpb24KLSsKLSsgICAgICAg IFsgZW5naW5lX3NlY3Rpb24gXQotKyAgICAgICAgcGtjczExID0gcGtjczExX3NlY3Rpb24KLSsK LSsgICAgICAgIFsgcGtjczExX3NlY3Rpb24gXQotKyAgICAgICAgZW5naW5lX2lkID0gcGtjczEx Ci0rICAgICAgICBkeW5hbWljX3BhdGggPSAvdXNyL2xpYjY0L29wZW5zc2wvZW5naW5lcy9lbmdp bmVfcGtjczExLnNvCi0rICAgICAgICBNT0RVTEVfUEFUSCA9IC91c3IvbGliNjQvbGliZVRQa2Nz MTEuc28KLSsgICAgICAgIGluaXQgPSAwCi0rCi0rICAgICAgLSBUaGVyZSBhcmUgdHdvIHdheXMg dG8gc3BlY2lmeSBhIHBhc3N3b3JkL1BJTiBmb3IgdGhlIFBLQ1MxMSBlbmdpbmU6Ci0rICAgICAg ICAgIC0gaW5zaWRlIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHVzaW5nCi0rICAgICAgICAgICAgICBQ SU4gPSB5b3VyLXNlY3JldC1waW4KLSsgICAgICAgICAgICBOb3RlIFRoZSBrZXl3b3JkICdQSU4n IGlzIGNhc2Ugc2Vuc2l0aXZlIQotKyAgICAgICAgICAtIFVzaW5nIHRoZSAncGFzc3dvcmQnIGlu IHRoZSBwcHAgb3B0aW9ucyBmaWxlLgotKyAgICAgICAgRnJvbSB2MC45NyBvZiB0aGUgZWFwLXRs cyBwYXRjaCB0aGUgcGFzc3dvcmQgY2FuIGFsc28gYmUgc3VwcGxpZWQKLSsgICAgICAgIHVzaW5n IHRoZSBhcHByb3ByaWF0ZSAnZWFwdGxzX3Bhc3N3ZF9ob29rJyAoc2VlIHBsdWdpbnMvcGFzc3By b21wdC5jCi0rICAgICAgICBmb3IgYW4gZXhhbXBsZSkuCi0rCi0rCi0rNC4gT3B0aW9ucwotKwot KyAgICBUaGVzZSBwcHBkIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKLSsKLSsgICAgICBjYSA8Y2Et ZmlsZT4KLSsgICAgICAgIFVzZSB0aGUgQ0EgcHVibGljIGNlcnRpZmljYXRlIGZvdW5kIGluIDxj YS1maWxlPiBpbiBQRU0gZm9ybWF0Ci0rICAgICAgY2VydCA8Y2VydC1maWxlPgotKyAgICAgICAg VXNlIHRoZSBjbGllbnQgcHVibGljIGNlcnRpZmljYXRlIGZvdW5kIGluIDxjZXJ0LWZpbGU+IGlu IFBFTSBmb3JtYXQKLSsgICAgICAgIG9yIGluIGVuZ2luZTplbmdpbmVfaWQgZm9ybWF0Ci0rICAg ICAga2V5IDxrZXktZmlsZT4KLSsgICAgICAgIFVzZSB0aGUgY2xpZW50IHByaXZhdGUga2V5IGZv dW5kIGluIDxrZXktZmlsZT4gaW4gUEVNIGZvcm1hdAotKyAgICAgICAgb3IgaW4gZW5naW5lOmVu Z2luZV9pZCBmb3JtYXQKLSsgICAgICBjcmwgPGNybC1maWxlPgotKyAgICAgICAgVXNlIHRoZSBD ZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgKENSTCkgZmlsZSA8Y3JsLWZpbGU+IGluIFBFTSBm b3JtYXQuCi0rICAgICAgY3JsLWRpciA8ZGlyPgotKyAgICAgICAgVXNlIENSTCBmaWxlcyBmcm9t IGRpcmVjdG9yeSA8ZGlyPi4gSXQgY29udGFpbnMgQ1JMIGZpbGVzIGluIFBFTQotKyAgICAgICAg Zm9ybWF0IGFuZCBlYWNoIGZpbGUgY29udGFpbnMgYSBDUkwuIFRoZSBmaWxlcyBhcmUgbG9va2Vk IHVwCi0rICAgICAgICBieSB0aGUgaXNzdWVyIG5hbWUgaGFzaCB2YWx1ZS4gVXNlIHRoZSBjX3Jl aGFzaCB1dGlsaXR5Ci0rICAgICAgICB0byBjcmVhdGUgbmVjZXNzYXJ5IGxpbmtzLgotKyAgICAg IG5lZWQtcGVlci1lYXAKLSsgICAgICAgIElmIHRoZSBwZWVyIGRvZXNuJ3QgYXNrIHVzIHRvIGF1 dGhlbnRpY2F0ZSBvciBkb2Vzbid0IHVzZSBlYXAKLSsgICAgICAgIHRvIGF1dGhlbnRpY2F0ZSB1 cywgZGlzY29ubmVjdC4KLSsKLSsgICAgTm90ZToKLSsgICAgICBwYXNzd29yZC1lbmNyeXB0ZWQg Y2VydGlmaWNhdGVzIGNhbiBiZSB1c2VkIGFzIG9mIHYwLjk0IG9mIHRoaXMKLSsgICAgICBwYXRj aC4gVGhlIHBhc3N3b3JkIGZvciB0aGUgZWFwLXRscy5rZXkgZmlsZSBpcyBzcGVjaWZpZWQgdXNp bmcKLSsgICAgICB0aGUgcmVndWxhcgotKyAgICAgICAgICBwYXNzd29yZCAuLi4uCi0rICAgICAg c3RhdGVtZW50IGluIHRoZSBwcHAgb3B0aW9ucyBmaWxlLCBvciBieSB1c2luZyB0aGUgYXBwcm9w cmlhdGUKLSsgICAgICBwbHVnaW4gd2hpY2ggc3VwcGxpZXMgYSAnZWFwdGxzX3Bhc3N3ZF9ob29r JyByb3V0aW5lLgotKwotKzUuIENvbm5lY3RpbmcKLSsKLSsgICAgSWYgeW91J3JlIHNldHRpbmcg dXAgYSBwcHBkIHNlcnZlciwgZWRpdCB0aGUgRUFQLVRMUyBjb25maWd1cmF0aW9uIGZpbGUKLSsg ICAgYXMgd3JpdHRlbiBhYm92ZSBhbmQgdGhlbiBydW4gcHBwZCB3aXRoIHRoZSAnYXV0aCcgb3B0 aW9uIHRvIGF1dGhlbnRpY2F0ZQotKyAgICB0aGUgY2xpZW50LiBUaGUgRUFQLVRMUyBtZXRob2Qg d2lsbCBiZSB1c2VkIGlmIHRoZSBvdGhlciBlYXAgbWV0aG9kcyBjYW4ndAotKyAgICBiZSB1c2Vk IChubyBzZWNyZXRzKS4KLSsKLSsgICAgSWYgeW91J3JlIHNldHRpbmcgdXAgYSBjbGllbnQsIGVk aXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgdGhlbiBydW4KLSsgICAgcHBwZCB3aXRoICdy ZW1vdGVuYW1lJyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgc2VydmVyIG5hbWUuIEFkZCB0aGUKLSsg ICAgJ25lZWQtcGVlci1lYXAnIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBiZSBzdXJlIHRoZSBwZWVy IGFzayB5b3UgdG8KLSsgICAgYXV0aGVudGljYXRlIChhbmQgdG8gdXNlIGVhcCkgYW5kIHRvIGRp c2Nvbm5lY3QgaWYgaXQgZG9lc24ndC4KLSsKLSs2LiBFeGFtcGxlCi0rCi0rICAgIFRoZSBmb2xs b3dpbmcgZXhhbXBsZSBjYW4gYmUgdXNlZCB0byBjb25uZWN0IGEgTGludXggY2xpZW50IHdpdGgg dGhlICdwcHRwJwotKyAgICBwYWNrYWdlIHRvIGEgTGludXggc2VydmVyIHJ1bm5pbmcgdGhlICdw cHRwZCcgKFBvUFRvUCkgcGFja2FnZS4gVGhlIHNlcnZlcgotKyAgICB3YXMgY29uZmlndXJlZCB3 aXRoIGEgY2VydGlmaWNhdGUgd2l0aCBuYW1lIChDTikgJ3BwdHAtc2VydmVyJywgdGhlIGNsaWVu dAotKyAgICB3YXMgY29uZmlndXJlZCB3aXRoIGEgY2VydGlmaWNhdGUgd2l0aCBuYW1lIChDTikg J3BwdHAtY2xpZW50JywgYm90aAotKyAgICBzaWduZWQgYnkgdGhlIHNhbWUgQ2VydGlmaWNhdGUg QXV0aG9yaXR5IChDQSkuCi0rCi0rICAgIFNlcnZlciBzaWRlOgotKyAgICAgIC0gL2V0Yy9wcHRw ZC5jb25mIGZpbGU6Ci0rICAgICAgICAgIG9wdGlvbiAvZXRjL3BwcC9vcHRpb25zLXBwdHBkLWVh cHRscwotKyAgICAgICAgICBsb2NhbGlwIDE3Mi4xNi4xLjEKLSsgICAgICAgICAgcmVtb3RlaXAg MTcyLjE2LjEuMTAtMjAKLSsgICAgICAtIC9ldGMvcHBwL29wdGlvbnMtcHB0cGQtZWFwdGxzIGZp bGU6Ci0rICAgICAgICAgIG5hbWUgcHB0cC1zZXJ2ZXIKLSsgICAgICAgICAgbG9jawotKyAgICAg ICAgICBtdHUgMTUwMAotKyAgICAgICAgICBtcnUgMTQ1MAotKyAgICAgICAgICBhdXRoCi0rICAg ICAgICAgIGxjcC1lY2hvLWZhaWx1cmUgMwotKyAgICAgICAgICBsY3AtZWNoby1pbnRlcnZhbCA1 Ci0rICAgICAgICAgIG5vZGVmbGF0ZQotKyAgICAgICAgICBub2JzZGNvbXAKLSsgICAgICAgICAg bm9wcmVkaWN0b3IxCi0rICAgICAgICAgIG5vcGNvbXAKLSsgICAgICAgICAgbm9hY2NvbXAKLSsK LSsgICAgICAgICAgcmVxdWlyZS1lYXAKLSsgICAgICAgICAgcmVxdWlyZS1tcHBlLTEyOAotKwot KyAgICAgICAgICBjcmwgL2hvbWUvamFuanVzdC9wcHAva2V5cy9jcmwucGVtCi0rCi0rICAgICAg ICAgIGRlYnVnCi0rICAgICAgICAgIGxvZ2ZpbGUgL3RtcC9wcHBkLmxvZwotKwotKyAgICAgIC0g L2V0Yy9wcHAvZWFwdGxzLXNlcnZlciBmaWxlOgotKyAgICAgICAgICAgKiBwcHRwLXNlcnZlciAt IC9ldGMvcHBwL3BwdHAtc2VydmVyLmNydCAvZXRjL3BwcC9jYS5jcnQgL2V0Yy9wcHAvcHB0cC1z ZXJ2ZXIua2V5ICoKLSsKLSsgICAgICAtIE9uIHRoZSBzZXJ2ZXIsIHJ1bgotKyAgICAgICAgICBw cHRkcCAtLWNvbmYgL2V0Yy9wcHRwZC5jb25mCi0rCi0rICAgIENsaWVudCBzaWRlOgotKyAgICAg IC0gUnVuCi0rICAgICAgICAgIHBwcGQgbm9hdXRoIHJlcXVpcmUtZWFwIHJlcXVpcmUtbXBwZS0x MjggXAotKyAgICAgICAgICAgIGlwY3AtYWNjZXB0LWxvY2FsIGlwY3AtYWNjZXB0LXJlbW90ZSBu b2lwZGVmYXVsdCBcCi0rICAgICAgICAgICAgY2VydCAgL2V0Yy9wcHAva2V5cy9wcHRwLWNsaWVu dC5jcnQgXAotKyAgICAgICAgICAgIGtleSAgIC9ldGMvcHBwL2tleXMvcHB0cC1jbGllbnQua2V5 IFwKLSsgICAgICAgICAgICBjYSAgICAvZXRjL3BwcC9rZXlzL2NhLmNydCBcCi0rICAgICAgICAg ICAgbmFtZSBwcHRwLWNsaWVudCByZW1vdGVuYW1lIHBwdHAtc2VydmVyIFwKLSsgICAgICAgICAg ICBkZWJ1ZyBsb2dmaWxlIC90bXAvcHBwZC5sb2cKLSsgICAgICAgICAgICBwdHkgInBwdHAgcHB0 cC1zZXJ2ZXIuZXhhbXBsZS5jb20gLS1ub2xhdW5jaHBwcGQiCi0rCi0rICAgIENoZWNrIC92YXIv bG9nL21lc3NhZ2VzIGFuZCB0aGUgZmlsZXMgL3RtcC9wcHBkLmxvZyBvbiBib3RoIHNpZGVzIGZv ciBkZWJ1Z2dpbmcgaW5mby4KLSsKLSs3LiBOb3RlcwotKwotKyAgICBUaGlzIGlzIGV4cGVyaW1l bnRhbCBjb2RlLgotKyAgICBTZW5kIHN1Z2dlc3Rpb25zIGFuZCBjb21tZW50cyB0byBKYW4gSnVz dCBLZWlqc2VyIDxqYW5qdXN0QG5pa2hlZi5ubD4KLSsKLSs4LiBDaGFuZ2Vsb2cgb2YgcHBwLTw+ LWVhcHRscy1tcHBlLSogcGF0Y2hlcwotKwotK3YwLjcgICAgICgyMi1Ob3YtMjAwNSkKLSsgLSBG aXJzdCB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB0byBpbmNsdWRlIE1QUEUgc3VwcG9ydAotKyAtIHBw cC0yLjQuMyBvbmx5Ci0rdjAuOSAgICAgKDI1LUp1bC0yMDA2KQotKyAtIEJ1ZyBmaXhlcwotKyAt IEZpcnN0IHZlcnNpb24gZm9yIHBwcC0yLjQuNAotK3YwLjkxICAgICgwMy1TZXAtMjAwNikKLSsg LSBBZGRlZCBtaXNzaW5nICNpbmNsdWRlIGZvciBtZDUuaAotKyAtIExhc3QgdmVyc2lvbiBmb3Ig cHBwLTIuNC4zCi0rdjAuOTIgICAgKDIyLUFwci0yMDA4KQotKyAtIEZpeCBmb3Igb3BlbnNzbCAw LjkuOCBpc3N1ZSB3aXRoIG1kNSBmdW5jdGlvbiBvdmVybG9hZC4KLSt2MC45MyAgICAoMTQtQXVn LTIwMDgpCi0rIC0gTWFrZSBzdXJlICdub2F1dGgnIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBieXBh c3Mgc2VydmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4KLSt2MC45NCAgICAoMTUtT2N0LTIw MDgpCi0rIC0gQWRkZWQgc3VwcG9ydCBmb3IgcGFzc3dvcmQtcHJvdGVjdGVkIHByaXZhdGUga2V5 cyBieSAoYWIpdXNpbmcgdGhlICdwYXNzd29yZCcgZmllbGQuCi0rdjAuOTUgICAgKDIzLURlYy0y MDA5KQotKyAtIEZpcnN0IHZlcnNpb24gd2l0aCBPcGVuU1NMIGVuZ2luZSBzdXBwb3J0LgotK3Yw Ljk2ICAgICgyNy1KYW4tMjAxMCkKLSsgLSBBZGRlZCBmdWxseSBmdW5jdGlvbmFsIHN1cHBvcnQg Zm9yIE9wZW5TU0wgZW5naW5lcyAoUEtDUyMxMSkKLSsgLSBGaXJzdCB2ZXJzaW9uIGZvciBwcHAt Mi40LjUKLSt2MC45NyAgICAoMjAtQXByLTIwMTApCi0rIC0gU29tZSBidWcgZml4ZXMgZm9yIHYw Ljk2Ci0rIC0gQWRkZWQgc3VwcG9ydCBmb3IgZW50ZXJpbmcgdGhlIHBhc3N3b3JkIHZpYSBhIHBs dWdpbi4gVGhlIHNhbXBsZSBwbHVnaW4KLSsgICAgIC4uLi9wcHBkL3BsdWdpbnMvcGFzc3Byb21w dC5jIGhhcyBiZWVuIGV4dGVuZGVkIHdpdGggRUFQLVRMUyBzdXBwb3J0LgotKyAgIFRoZSAib2xk IiBtZXRob2RzIHVzaW5nIHRoZSBwYXNzd29yZCBvcHRpb24gb3IgdGhlIC9ldGMvcHBwL29wZW5z c2wuY25mIGZpbGUgc3RpbGwgd29yay4KLSsgLSBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5n IHRoZSBjbGllbnQgQ0EsIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBvbiB0aGUgY29tbWFu ZC1saW5lCi0rICAgb3IgdmlhIHRoZSBwcHAgY29uZmlnIGZpbGUuCi0rdjAuOTggICAgKDIwLUFw ci0yMDEwKQotKyAtIEZpeCBpbml0aWFsaXNhdGlvbiBidWcgd2hlbiB1c2luZyBjYS9jZXJ0L2tl eSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KLSsgLSBMYXN0IHZlcnNpb24gZm9yIHBwcC0yLjQuNAot K3YwLjk5ICAgICgwNS1PY3QtMjAxMCkKLSsgLSBGaXggY29yZWR1bXAgd2hlbiB1c2luZyBtdWx0 aWxpbmsgb3B0aW9uLgotK3YwLjk5MSAgICgwOC1BdWctMjAxMSkKLSsgLSBGaXggY29tcGlsYXRp b24gaXNzdWUgd2l0aCBvcGVuc3NsIDEuMC4KLSt2MC45OTIgICAoMDEtRGVjLTIwMTEpCi0rIC0g Rml4IGNvbXBpbGF0aW9uIGlzc3VlIHdpdGggZWFwdGxzX2NoZWNrX2hvb2sgYW5kIHBhc3N3b3Jk ZmQgcGx1Z2luLgotK3YwLjk5MyAgICgyNC1BcHItMjAxMikKLSsgLSBGaXggY29tcGlsYXRpb24g aXNzdWUgd2hlbiBFQVBfVExTPW4gaW4gcHBwZC9NYWtlZmlsZS4KLSt2MC45OTQgICAoMTEtSnVu LTIwMTIpCi0rIC0gRml4IGNvbXBpbGF0aW9uIGlzc3VlIG9uIFVidW50dSAxMS4xMC4KLSt2MC45 OTUgICAoMjctTWF5LTIwMTQpCi0rIC0gQWRkIHN1cHBvcnQgZm9yIGEgQ1JMIGZpbGUgdXNpbmcg dGhlIGNvbW1hbmQtbGluZSBvcHRpb24gJ2NybCcKLSsgICAocHJpb3Igb25seSAnY3JsLWRpcicg d2FzIHN1cHBvcnRlZCkuCi0rIC0gRml4IHNlZ2ZhdWx0IHdoZW4gcGtjczExIGVuZ2luZW5hbWUg d2FzIG5vdCBzcGVjaWZpZWQgY29ycmVjdGx5LgotKyAtIEZpeCBzZWdmYXVsdCB3aGVuIGNsaWVu dCB3YXMgbWlzY29uZmlndXJlZC4KLSsgLSBEaXNhYmxlIFNTTCBTZXNzaW9uIFRpY2tldCBzdXBw b3J0IGFzIFdpbmRvd3MgOCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMuCi0rdjAuOTk2ICAgKDI4LU1h eS0yMDE0KQotKyAtIEZpeCBtaW5vciBidWcgd2hlcmUgU2Vzc2lvblRpY2tldCBtZXNzYWdlIHdh cyBwcmludGVkIGFzICdVbmtub3duIFNTTDMgY29kZSA0JwotKyAtIEFkZCBFQVAtVExTLXNwZWNp ZmljIG9wdGlvbnMgdG8gcHBwZC44IG1hbnVhbCBwYWdlLgotKyAtIFVwZGF0ZWQgUkVBRE1FLmVh cC10bHMgZmlsZSB3aXRoIG5ldyBvcHRpb25zIGFuZCBwcm92aWRlIGFuIGV4YW1wbGUuCi0rdjAu OTk3ICAgKDE5LUp1bi0yMDE0KQotKyAtIENoYW5nZSBTU0xfT1BfTk9fVElDS0VUUyB0byBTU0xf T1BfTk9fVElDS0VUCi0rIC0gRml4IGJ1ZyBpbiBpbml0aWFsaXNhdGlvbiBjb2RlIHdpdGggZnJh Z21lbnRlZCBwYWNrZXRzLgotK3YwLjk5OCAgICgxMy1NYXItMjAxNSkKLSsgLSBBZGQgZml4IGZv ciBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEwMjM2MjAKLSt2 MC45OTkgICAoMTEtTWF5LTIwMTcpCi0rIC0gQWRkIHN1cHBvcnQgZm9yIE9wZW5TU0wgMS4xOiB0 aGUgY29kZSB3aWxsIG5vdyBjb21waWxlIGFnYWluc3QgT3BlblNTTCAxLjAueCBvciAxLjEueC4K LSt2MS4xMDEgKDEtSnVuLTIwMTgpCi0rIC0gRml4IHZ1bG5lcmFiaWxpdGllcyBDVkUtMjAxOC0x MTU3NC4KLSt2MS4xMDIgKDItTm92LTIwMTgpCi0rIC0gQWRkIFRMUyAxLjIgc3VwcG9ydC4gV2lu ZG93cyA3Lzggd2lsbCBjb25uZWN0IHVzaW5nIFRMUyAxLjAsIFdpbmRvd3MgMTAgY2xpZW50cyB1 c2luZyBUTFMgMS4yLgotKyAgIFRoaXMgd29ya3MgYm90aCB3aGVuIGNvbXBpbGluZyBhZ2FpbnN0 IE9wZW5TU0wgMS4wLjErIGFuZCAxLjErLgotKyAtIFByaW50IHdhcm5pbmcgd2hlbiBjZXJ0aWZp Y2F0ZSBpcyBlaXRoZXIgbm90IHlldCB2YWxpZCBvciBoYXMgZXhwaXJlZC4KLSsgLSBQZXJmb3Jt IGJldHRlciBwZWVyIGNlcnRpZmljYXRlIGNoZWNrcy4KLSsgLSBBbGxvdyBjZXJ0aWZpY2F0ZSBj aGFpbiBmaWxlcyB0byBiZSB1c2VkLgotZGlmZiAtLWdpdCBhL2V0Yy5wcHAvZWFwdGxzLWNsaWVu dCBiL2V0Yy5wcHAvZWFwdGxzLWNsaWVudAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAwMDAwMC4uNzc4MmYwZTJhMDY1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9ldGMucHBwL2Vh cHRscy1jbGllbnQKLUBAIC0wLDAgKzEsMTAgQEAKLSsjIFBhcmFtZXRlcnMgZm9yIGF1dGhlbnRp Y2F0aW9uIHVzaW5nIEVBUC1UTFMgKGNsaWVudCkKLSsKLSsjIGNsaWVudCBuYW1lIChjYW4gYmUg KikKLSsjIHNlcnZlciBuYW1lIChjYW4gYmUgKikKLSsjIGNsaWVudCBjZXJ0aWZpY2F0ZSBmaWxl IChyZXF1aXJlZCkKLSsjIHNlcnZlciBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbCwgaWYgdW51 c2VkIHB1dCAnLScpCi0rIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChyZXF1aXJlZCkKLSsjIGNsaWVu dCBwcml2YXRlIGtleSBmaWxlIChyZXF1aXJlZCkKLSsKLSsjY2xpZW50CXNlcnZlcgkvcm9vdC9j ZXJ0L2NsaWVudC5jcnQJLQkvcm9vdC9jZXJ0L2NhLmNydAkvcm9vdC9jZXJ0L2NsaWVudC5rZXkK LWRpZmYgLS1naXQgYS9ldGMucHBwL2VhcHRscy1zZXJ2ZXIgYi9ldGMucHBwL2VhcHRscy1zZXJ2 ZXIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmZhNTNjYmQxOTdj ZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZXRjLnBwcC9lYXB0bHMtc2VydmVyCi1AQCAtMCwwICsx LDExIEBACi0rIyBQYXJhbWV0ZXJzIGZvciBhdXRoZW50aWNhdGlvbiB1c2luZyBFQVAtVExTIChz ZXJ2ZXIpCi0rCi0rIyBjbGllbnQgbmFtZSAoY2FuIGJlICopCi0rIyBzZXJ2ZXIgbmFtZSAoY2Fu IGJlICopCi0rIyBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwsIGlmIHVudXNlZCBw dXQgJy0nKQotKyMgc2VydmVyIGNlcnRpZmljYXRlIGZpbGUgKHJlcXVpcmVkKQotKyMgQ0EgY2Vy dGlmaWNhdGUgZmlsZSAocmVxdWlyZWQpCi0rIyBzZXJ2ZXIgcHJpdmF0ZSBrZXkgZmlsZSAocmVx dWlyZWQpCi0rIyBhbGxvd2VkIGFkZHJlc3NlcyAocmVxdWlyZWQsIGNhbiBiZSAqKQotKwotKyNj bGllbnQJc2VydmVyCS0JL3Jvb3QvY2VydC9zZXJ2ZXIuY3J0CS9yb290L2NlcnQvY2EuY3J0CS9y b290L2NlcnQvc2VydmVyLmtleQkxOTIuMTY4LjEuMC8yNAotZGlmZiAtLWdpdCBhL2V0Yy5wcHAv b3BlbnNzbC5jbmYgYi9ldGMucHBwL29wZW5zc2wuY25mCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwMDAwLi5kZDMyZjMwNWQ2ODAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2V0 Yy5wcHAvb3BlbnNzbC5jbmYKLUBAIC0wLDAgKzEsMTQgQEAKLStvcGVuc3NsX2NvbmYgPSBvcGVu c3NsX2RlZgotKwotK1sgb3BlbnNzbF9kZWYgXQotK2VuZ2luZXMgPSBlbmdpbmVfc2VjdGlvbgot KwotK1sgZW5naW5lX3NlY3Rpb24gXQotK3BrY3MxMSA9IHBrY3MxMV9zZWN0aW9uCi0rCi0rWyBw a2NzMTFfc2VjdGlvbiBdCi0rZW5naW5lX2lkID0gcGtjczExCi0rZHluYW1pY19wYXRoID0gL3Vz ci9saWI2NC9vcGVuc3NsL2VuZ2luZXMvZW5naW5lX3BrY3MxMS5zbwotK01PRFVMRV9QQVRIID0g L3Vzci9saWI2NC9saWJlVFBrY3MxMS5zbwotK2luaXQgPSAwCi0rCi1kaWZmIC0tZ2l0IGEvbGlu dXgvTWFrZWZpbGUudG9wIGIvbGludXgvTWFrZWZpbGUudG9wCi1pbmRleCBmNjNkNDVlNThhNzgu Ljg5NGY4ZjMyYzllNCAxMDA2NDQKLS0tLSBhL2xpbnV4L01ha2VmaWxlLnRvcAotKysrIGIvbGlu dXgvTWFrZWZpbGUudG9wCi1AQCAtMjYsNyArMjYsNyBAQCBpbnN0YWxsLXByb2dzOgotIAljZCBw cHBkdW1wOyAkKE1BS0UpICQoTUZMQUdTKSBpbnN0YWxsCi0gCi0gaW5zdGFsbC1ldGNwcHA6ICQo RVRDRElSKSAkKEVUQ0RJUikvb3B0aW9ucyAkKEVUQ0RJUikvcGFwLXNlY3JldHMgXAotLQkkKEVU Q0RJUikvY2hhcC1zZWNyZXRzCi0rCSQoRVRDRElSKS9jaGFwLXNlY3JldHMgJChFVENESVIpL2Vh cHRscy1zZXJ2ZXIgJChFVENESVIpL2VhcHRscy1jbGllbnQKLSAKLSBpbnN0YWxsLWRldmVsOgot IAljZCBwcHBkOyAkKE1BS0UpICQoTUZMQUdTKSBpbnN0YWxsLWRldmVsCi1AQCAtMzcsNiArMzcs MTAgQEAgJChFVENESVIpL3BhcC1zZWNyZXRzOgotIAkkKElOU1RBTEwpIC1jIC1tIDYwMCBldGMu cHBwL3BhcC1zZWNyZXRzICRACi0gJChFVENESVIpL2NoYXAtc2VjcmV0czoKLSAJJChJTlNUQUxM KSAtYyAtbSA2MDAgZXRjLnBwcC9jaGFwLXNlY3JldHMgJEAKLSskKEVUQ0RJUikvZWFwdGxzLXNl cnZlcjoKLSsJJChJTlNUQUxMKSAtYyAtbSA2MDAgZXRjLnBwcC9lYXB0bHMtc2VydmVyICRACi0r JChFVENESVIpL2VhcHRscy1jbGllbnQ6Ci0rCSQoSU5TVEFMTCkgLWMgLW0gNjAwIGV0Yy5wcHAv ZWFwdGxzLWNsaWVudCAkQAotIAotICQoQklORElSKToKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUg JEAKLWRpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5saW51 eAotaW5kZXggNTU0OTE0NWU1NzkxLi40YTExZDVmZWE3NDggMTAwNjQ0Ci0tLS0gYS9wcHBkL01h a2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL01ha2VmaWxlLmxpbnV4Ci1AQCAtNzYsNiArNzYsOSBA QCBDQkNQPXkKLSAjIFVzZSBsaWJ1dGlsCi0gVVNFX0xJQlVUSUw9eQotIAotKyMgRW5hYmxlIEVB UC1UTFMgYXV0aGVudGljYXRpb24gKHJlcXVpcmVzIGxpYnNzbCBhbmQgbGliY3J5cHRvKQotK1VT RV9FQVBUTFM9eQotKwotIE1BWE9DVEVUUz15Ci0gCi0gSU5DTFVERV9ESVJTPSAtSS4uL2luY2x1 ZGUKLUBAIC0xMTYsNiArMTE5LDE1IEBAIEhFQURFUlMgKz0gc2hhMS5oCi0gUFBQRE9CSlMgKz0g c2hhMS5vCi0gZW5kaWYKLSAKLSsjIEVBUC1UTFMKLStpZmRlZiBVU0VfRUFQVExTCi0rQ0ZMQUdT ICs9IC1EVVNFX0VBUFRMUz0xIC1JL3Vzci9rZXJiZXJvcy9pbmNsdWRlCi0rTElCUyArPSAtbHNz bCAtbGNyeXB0bwotK1BQUERTUkMgKz0gZWFwLXRscy5jCi0rSEVBREVSUyArPSBlYXAtdGxzLmgK LStQUFBET0JKUyArPSBlYXAtdGxzLm8KLStlbmRpZgotKwotIGlmZGVmIEhBU19TSEFET1cKLSBD RkxBR1MgICArPSAtREhBU19TSEFET1cKLSAjTElCUyAgICAgKz0gLWxzaGFkb3cgJChMSUJTKQot ZGlmZiAtLWdpdCBhL3BwcGQvYXV0aC5jIGIvcHBwZC9hdXRoLmMKLWluZGV4IDQyNzFhZjY4NzEw Mi4uNDUwNjVjNThiZmNjIDEwMDY0NAotLS0tIGEvcHBwZC9hdXRoLmMKLSsrKyBiL3BwcGQvYXV0 aC5jCi1AQCAtMTA5LDYgKzEwOSw5IEBACi0gI2luY2x1ZGUgInVwYXAuaCIKLSAjaW5jbHVkZSAi Y2hhcC1uZXcuaCIKLSAjaW5jbHVkZSAiZWFwLmgiCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsjaW5j bHVkZSAiZWFwLXRscy5oIgotKyNlbmRpZgotICNpZmRlZiBDQkNQX1NVUFBPUlQKLSAjaW5jbHVk ZSAiY2JjcC5oIgotICNlbmRpZgotQEAgLTE4Myw2ICsxODYsMTEgQEAgaW50ICgqY2hhcF9jaGVj a19ob29rKSBfX1AoKHZvaWQpKSA9IE5VTEw7Ci0gLyogSG9vayBmb3IgYSBwbHVnaW4gdG8gZ2V0 IHRoZSBDSEFQIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGluZyB1cyAqLwotIGludCAoKmNoYXBf cGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFzc3dkKSkgPSBOVUxMOwotIAot KyNpZmRlZiBVU0VfRUFQVExTCi0rLyogSG9vayBmb3IgYSBwbHVnaW4gdG8gZ2V0IHRoZSBFQVAt VExTIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGluZyB1cyAqLwotK2ludCAoKmVhcHRsc19wYXNz d2RfaG9vaykgX19QKChjaGFyICp1c2VyLCBjaGFyICpwYXNzd2QpKSA9IE5VTEw7Ci0rI2VuZGlm Ci0rCi0gLyogSG9vayBmb3IgYSBwbHVnaW4gdG8gc2F5IHdoZXRoZXIgaXQgaXMgT0sgaWYgdGhl IHBlZXIKLSAgICByZWZ1c2VzIHRvIGF1dGhlbnRpY2F0ZS4gKi8KLSBpbnQgKCpudWxsX2F1dGhf aG9vaykgX19QKChzdHJ1Y3Qgd29yZGxpc3QgKipwYWRkcnMsCi1AQCAtMjM4LDYgKzI0NiwxNCBA QCBib29sIGV4cGxpY2l0X3JlbW90ZSA9IDA7CS8qIFVzZXIgc3BlY2lmaWVkIGV4cGxpY2l0IHJl bW90ZSBuYW1lICovCi0gYm9vbCBleHBsaWNpdF91c2VyID0gMDsJCS8qIFNldCBpZiAidXNlciIg b3B0aW9uIHN1cHBsaWVkICovCi0gYm9vbCBleHBsaWNpdF9wYXNzd2QgPSAwOwkvKiBTZXQgaWYg InBhc3N3b3JkIiBvcHRpb24gc3VwcGxpZWQgKi8KLSBjaGFyIHJlbW90ZV9uYW1lW01BWE5BTUVM RU5dOwkvKiBQZWVyJ3MgbmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi8KLSsjaWZkZWYgVVNFX0VB UFRMUwotK2NoYXIgKmNhY2VydF9maWxlICA9IE5VTEw7CS8qIENBIGNlcnRpZmljYXRlIGZpbGUg KHBlbSBmb3JtYXQpICovCi0rY2hhciAqY2VydF9maWxlICAgID0gTlVMTDsJLyogY2xpZW50IGNl cnRpZmljYXRlIGZpbGUgKHBlbSBmb3JtYXQpICovCi0rY2hhciAqcHJpdmtleV9maWxlID0gTlVM TDsJLyogY2xpZW50IHByaXZhdGUga2V5IGZpbGUgKHBlbSBmb3JtYXQpICovCi0rY2hhciAqY3Js X2RpciAgICAgID0gTlVMTDsJLyogZGlyZWN0b3J5IGNvbnRhaW5pbmcgQ1JMIGZpbGVzICovCi0r Y2hhciAqY3JsX2ZpbGUgICAgID0gTlVMTDsJLyogQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBMaXN0 IChDUkwpIGZpbGUgKHBlbSBmb3JtYXQpICovCi0rYm9vbCBuZWVkX3BlZXJfZWFwID0gMDsJCQkv KiBSZXF1aXJlIHBlZXIgdG8gYXV0aGVudGljYXRlIHVzICovCi0rI2VuZGlmCi0gCi0gc3RhdGlj IGNoYXIgKnVhZm5hbWU7CQkvKiBuYW1lIG9mIG1vc3QgcmVjZW50ICt1YSBmaWxlICovCi0gCi1A QCAtMjU0LDYgKzI3MCwxOSBAQCBzdGF0aWMgaW50ICBoYXZlX3BhcF9zZWNyZXQgX19QKChpbnQg KikpOwotIHN0YXRpYyBpbnQgIGhhdmVfY2hhcF9zZWNyZXQgX19QKChjaGFyICosIGNoYXIgKiwg aW50LCBpbnQgKikpOwotIHN0YXRpYyBpbnQgIGhhdmVfc3JwX3NlY3JldCBfX1AoKGNoYXIgKmNs aWVudCwgY2hhciAqc2VydmVyLCBpbnQgbmVlZF9pcCwKLSAgICAgaW50ICpsYWNrc19pcHApKTsK LSsKLSsjaWZkZWYgVVNFX0VBUFRMUwotK3N0YXRpYyBpbnQgIGhhdmVfZWFwdGxzX3NlY3JldF9z ZXJ2ZXIKLStfX1AoKGNoYXIgKmNsaWVudCwgY2hhciAqc2VydmVyLCBpbnQgbmVlZF9pcCwgaW50 ICpsYWNrc19pcHApKTsKLStzdGF0aWMgaW50ICBoYXZlX2VhcHRsc19zZWNyZXRfY2xpZW50IF9f UCgoY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIpKTsKLStzdGF0aWMgaW50ICBzY2FuX2F1dGhm aWxlX2VhcHRscyBfX1AoKEZJTEUgKiBmLCBjaGFyICpjbGllbnQsIGNoYXIgKnNlcnZlciwKLSsJ CQkgICAgICAgY2hhciAqY2xpX2NlcnQsIGNoYXIgKnNlcnZfY2VydCwKLSsJCQkgICAgICAgY2hh ciAqY2FfY2VydCwgY2hhciAqcGssCi0rCQkJICAgICAgIHN0cnVjdCB3b3JkbGlzdCAqKiBhZGRy cywKLSsJCQkgICAgICAgc3RydWN0IHdvcmRsaXN0ICoqIG9wdHMsCi0rCQkJICAgICAgIGNoYXIg KmZpbGVuYW1lLCBpbnQgZmxhZ3MpKTsKLSsjZW5kaWYKLSsKLSBzdGF0aWMgaW50ICBpcF9hZGRy X2NoZWNrIF9fUCgodV9pbnQzMl90LCBzdHJ1Y3QgcGVybWl0dGVkX2lwICopKTsKLSBzdGF0aWMg aW50ICBzY2FuX2F1dGhmaWxlIF9fUCgoRklMRSAqLCBjaGFyICosIGNoYXIgKiwgY2hhciAqLAot IAkJCSAgICAgICBzdHJ1Y3Qgd29yZGxpc3QgKiosIHN0cnVjdCB3b3JkbGlzdCAqKiwKLUBAIC00 MDEsNiArNDMwLDE1IEBAIG9wdGlvbl90IGF1dGhfb3B0aW9uc1tdID0gewotICAgICAgICJTZXQg dGVsZXBob25lIG51bWJlcihzKSB3aGljaCBhcmUgYWxsb3dlZCB0byBjb25uZWN0IiwKLSAgICAg ICBPUFRfUFJJViB8IE9QVF9BMkxJU1QgfSwKLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAgICB7 ICJjYSIsIG9fc3RyaW5nLCAmY2FjZXJ0X2ZpbGUsICAgIkVBUC1UTFMgQ0EgY2VydGlmaWNhdGUg aW4gUEVNIGZvcm1hdCIgfSwKLSsgICAgeyAiY2VydCIsIG9fc3RyaW5nLCAmY2VydF9maWxlLCAg ICJFQVAtVExTIGNsaWVudCBjZXJ0aWZpY2F0ZSBpbiBQRU0gZm9ybWF0IiB9LAotKyAgICB7ICJr ZXkiLCBvX3N0cmluZywgJnByaXZrZXlfZmlsZSwgIkVBUC1UTFMgY2xpZW50IHByaXZhdGUga2V5 IGluIFBFTSBmb3JtYXQiIH0sCi0rICAgIHsgImNybC1kaXIiLCBvX3N0cmluZywgJmNybF9kaXIs ICAiVXNlIENSTHMgaW4gZGlyZWN0b3J5IiB9LAotKyAgICB7ICJjcmwiLCBvX3N0cmluZywgJmNy bF9maWxlLCAgICAgIlVzZSBzcGVjaWZpYyBDUkwgZmlsZSIgfSwKLSsgICAgeyAibmVlZC1wZWVy LWVhcCIsIG9fYm9vbCwgJm5lZWRfcGVlcl9lYXAsCi0rICAgICAgIlJlcXVpcmUgdGhlIHBlZXIg dG8gYXV0aGVudGljYXRlIHVzIiwgMSB9LAotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0gICAg IHsgTlVMTCB9Ci0gfTsKLSAKLUBAIC03MzAsNiArNzY4LDkgQEAgbGlua19lc3RhYmxpc2hlZCh1 bml0KQotICAgICBsY3Bfb3B0aW9ucyAqd28gPSAmbGNwX3dhbnRvcHRpb25zW3VuaXRdOwotICAg ICBsY3Bfb3B0aW9ucyAqZ28gPSAmbGNwX2dvdG9wdGlvbnNbdW5pdF07Ci0gICAgIGxjcF9vcHRp b25zICpobyA9ICZsY3BfaGlzb3B0aW9uc1t1bml0XTsKLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAg ICBsY3Bfb3B0aW9ucyAqYW8gPSAmbGNwX2FsbG93b3B0aW9uc1t1bml0XTsKLSsjZW5kaWYKLSAg ICAgaW50IGk7Ci0gICAgIHN0cnVjdCBwcm90ZW50ICpwcm90cDsKLSAKLUBAIC03NjQsNiArODA1 LDIyIEBAIGxpbmtfZXN0YWJsaXNoZWQodW5pdCkKLSAJfQotICAgICB9Ci0gCi0rI2lmZGVmIFVT RV9FQVBUTFMKLSsgICAgaWYgKG5lZWRfcGVlcl9lYXAgJiYgIWFvLT5uZWdfZWFwKSB7Ci0rCXdh cm4oImVhcCByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgdXMgYnV0IG5vIHN1aXRhYmxlIHNlY3Jl dHMiKTsKLSsJbGNwX2Nsb3NlKHVuaXQsICJjb3VsZG4ndCBuZWdvdGlhdGUgZWFwIik7Ci0rCXN0 YXR1cyA9IEVYSVRfQVVUSF9UT1BFRVJfRkFJTEVEOwotKwlyZXR1cm47Ci0rICAgIH0KLSsKLSsg ICAgaWYgKG5lZWRfcGVlcl9lYXAgJiYgIWhvLT5uZWdfZWFwKSB7Ci0rCXdhcm4oInBlZXIgZG9l c24ndCB3YW50IHRvIGF1dGhlbnRpY2F0ZSB1cyB3aXRoIGVhcCIpOwotKwlsY3BfY2xvc2UodW5p dCwgImNvdWxkbid0IG5lZ290aWF0ZSBlYXAiKTsKLSsJc3RhdHVzID0gRVhJVF9QRUVSX0FVVEhf RkFJTEVEOwotKwlyZXR1cm47Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgbmV3X3BoYXNlKFBI QVNFX0FVVEhFTlRJQ0FURSk7Ci0gICAgIGF1dGggPSAwOwotICAgICBpZiAoZ28tPm5lZ19lYXAp IHsKLUBAIC0xMjc3LDYgKzEzMzQsMTUgQEAgYXV0aF9jaGVja19vcHRpb25zKCkKLSAJCQkJICAg IG91cl9uYW1lLCAxLCAmbGFja3NfaXApOwotICAgICB9Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMK LSsgICAgaWYgKCFjYW5fYXV0aCAmJiB3by0+bmVnX2VhcCkgewotKwljYW5fYXV0aCA9Ci0rCSAg ICBoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKChleHBsaWNpdF9yZW1vdGUgPyByZW1vdGVfbmFt ZSA6Ci0rCQkJCSAgICAgICBOVUxMKSwgb3VyX25hbWUsIDEsICZsYWNrc19pcCk7Ci0rCi0rICAg IH0KLSsjZW5kaWYKLSsKLSAgICAgaWYgKGF1dGhfcmVxdWlyZWQgJiYgIWNhbl9hdXRoICYmIG5v YXV0aF9hZGRycyA9PSBOVUxMKSB7Ci0gCWlmIChkZWZhdWx0X2F1dGgpIHsKLSAJICAgIG9wdGlv bl9lcnJvcigKLUBAIC0xMzMxLDcgKzEzOTcsMTEgQEAgYXV0aF9yZXNldCh1bml0KQotIAlwYXNz d2RbMF0gIT0gMCB8fAotIAkoaGFkY2hhcCA9PSAxIHx8IChoYWRjaGFwID09IC0xICYmIGhhdmVf Y2hhcF9zZWNyZXQodXNlciwKLSAJICAgIChleHBsaWNpdF9yZW1vdGU/IHJlbW90ZV9uYW1lOiBO VUxMKSwgMCwgTlVMTCkpKSB8fAotLQloYXZlX3NycF9zZWNyZXQodXNlciwgKGV4cGxpY2l0X3Jl bW90ZT8gcmVtb3RlX25hbWU6IE5VTEwpLCAwLCBOVUxMKSk7Ci0rCWhhdmVfc3JwX3NlY3JldCh1 c2VyLCAoZXhwbGljaXRfcmVtb3RlPyByZW1vdGVfbmFtZTogTlVMTCksIDAsIE5VTEwpCi0rI2lm ZGVmIFVTRV9FQVBUTFMKLSsJCXx8IGhhdmVfZWFwdGxzX3NlY3JldF9jbGllbnQodXNlciwgKGV4 cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwpKQotKyNlbmRpZgotKwkpOwotIAotICAg ICBoYWRjaGFwID0gLTE7Ci0gICAgIGlmIChnby0+bmVnX3VwYXAgJiYgIXVzZWxvZ2luICYmICFo YXZlX3BhcF9zZWNyZXQoTlVMTCkpCi1AQCAtMTM0Niw4ICsxNDE2LDE0IEBAIGF1dGhfcmVzZXQo dW5pdCkKLSAJICAgICFoYXZlX2NoYXBfc2VjcmV0KChleHBsaWNpdF9yZW1vdGU/IHJlbW90ZV9u YW1lOiBOVUxMKSwgb3VyX25hbWUsCi0gCQkxLCBOVUxMKSkpICYmCi0gCSFoYXZlX3NycF9zZWNy ZXQoKGV4cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwpLCBvdXJfbmFtZSwgMSwKLS0J ICAgIE5VTEwpKQotKwkgICAgTlVMTCkKLSsjaWZkZWYgVVNFX0VBUFRMUwotKwkgJiYgIWhhdmVf ZWFwdGxzX3NlY3JldF9zZXJ2ZXIoKGV4cGxpY2l0X3JlbW90ZT8gcmVtb3RlX25hbWU6IE5VTEwp LAotKwkJCQkgICBvdXJfbmFtZSwgMSwgTlVMTCkKLSsjZW5kaWYKLSsJCSkKLSAJZ28tPm5lZ19l YXAgPSAwOwotKwotIH0KLSAKLSAKLUBAIC0xNzA3LDYgKzE3ODMsNyBAQCBoYXZlX3NycF9zZWNy ZXQoY2xpZW50LCBzZXJ2ZXIsIG5lZWRfaXAsIGxhY2tzX2lwcCkKLSB9Ci0gCi0gCi0rCi0gLyoK LSAgKiBnZXRfc2VjcmV0IC0gb3BlbiB0aGUgQ0hBUCBzZWNyZXQgZmlsZSBhbmQgcmV0dXJuIHRo ZSBzZWNyZXQKLSAgKiBmb3IgYXV0aGVudGljYXRpbmcgdGhlIGdpdmVuIGNsaWVudCBvbiB0aGUg Z2l2ZW4gc2VydmVyLgotQEAgLTIzNTksMyArMjQzNiwzMzUgQEAgYXV0aF9zY3JpcHQoc2NyaXB0 KQotIAotICAgICBhdXRoX3NjcmlwdF9waWQgPSBydW5fcHJvZ3JhbShzY3JpcHQsIGFyZ3YsIDAs IGF1dGhfc2NyaXB0X2RvbmUsIE5VTEwsIDApOwotIH0KLSsKLSsKLSsjaWZkZWYgVVNFX0VBUFRM UwotK3N0YXRpYyBpbnQKLStoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKGNsaWVudCwgc2VydmVy LCBuZWVkX2lwLCBsYWNrc19pcHApCi0rICAgIGNoYXIgKmNsaWVudDsKLSsgICAgY2hhciAqc2Vy dmVyOwotKyAgICBpbnQgbmVlZF9pcDsKLSsgICAgaW50ICpsYWNrc19pcHA7Ci0rewotKyAgICBG SUxFICpmOwotKyAgICBpbnQgcmV0OwotKyAgICBjaGFyICpmaWxlbmFtZTsKLSsgICAgc3RydWN0 IHdvcmRsaXN0ICphZGRyczsKLSsgICAgY2hhciBzZXJ2Y2VydGZpbGVbTUFYV09SRExFTl07Ci0r ICAgIGNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0rICAgIGNoYXIgY2FjZXJ0ZmlsZVtN QVhXT1JETEVOXTsKLSsgICAgY2hhciBwa2ZpbGVbTUFYV09SRExFTl07Ci0rCi0rICAgIGZpbGVu YW1lID0gX1BBVEhfRUFQVExTU0VSVkZJTEU7Ci0rICAgIGYgPSBmb3BlbihmaWxlbmFtZSwgInIi KTsKLSsgICAgaWYgKGYgPT0gTlVMTCkKLSsJCXJldHVybiAwOwotKwotKyAgICBpZiAoY2xpZW50 ICE9IE5VTEwgJiYgY2xpZW50WzBdID09IDApCi0rCQljbGllbnQgPSBOVUxMOwotKyAgICBlbHNl IGlmIChzZXJ2ZXIgIT0gTlVMTCAmJiBzZXJ2ZXJbMF0gPT0gMCkKLSsJCXNlcnZlciA9IE5VTEw7 Ci0rCi0rICAgIHJldCA9Ci0rCXNjYW5fYXV0aGZpbGVfZWFwdGxzKGYsIGNsaWVudCwgc2VydmVy LCBjbGljZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLAotKwkJCSAgICAgY2FjZXJ0ZmlsZSwgcGtmaWxl LCAmYWRkcnMsIE5VTEwsIGZpbGVuYW1lLAotKwkJCSAgICAgMCk7Ci0rCi0rICAgIGZjbG9zZShm KTsKLSsKLSsvKgotKyAgICBpZiAocmV0ID49IDAgJiYgIWVhcHRsc19pbml0X3NzbCgxLCBjYWNl cnRmaWxlLCBzZXJ2Y2VydGZpbGUsCi0rCQkJCWNsaWNlcnRmaWxlLCBwa2ZpbGUpKQotKwkJcmV0 ID0gLTE7Ci0rKi8KLSsKLSsJaWYgKHJldCA+PSAwICYmIG5lZWRfaXAgJiYgIXNvbWVfaXBfb2so YWRkcnMpKSB7Ci0rCQlpZiAobGFja3NfaXBwICE9IDApCi0rCQkJKmxhY2tzX2lwcCA9IDE7Ci0r CQlyZXQgPSAtMTsKLSsgICAgfQotKyAgICBpZiAoYWRkcnMgIT0gMCkKLSsJCWZyZWVfd29yZGxp c3QoYWRkcnMpOwotKwotKyAgICByZXR1cm4gcmV0ID49IDA7Ci0rfQotKwotKwotK3N0YXRpYyBp bnQKLStoYXZlX2VhcHRsc19zZWNyZXRfY2xpZW50KGNsaWVudCwgc2VydmVyKQotKyAgICBjaGFy ICpjbGllbnQ7Ci0rICAgIGNoYXIgKnNlcnZlcjsKLSt7Ci0rICAgIEZJTEUgKmY7Ci0rICAgIGlu dCByZXQ7Ci0rICAgIGNoYXIgKmZpbGVuYW1lOwotKyAgICBzdHJ1Y3Qgd29yZGxpc3QgKmFkZHJz ID0gTlVMTDsKLSsgICAgY2hhciBzZXJ2Y2VydGZpbGVbTUFYV09SRExFTl07Ci0rICAgIGNoYXIg Y2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0rICAgIGNoYXIgY2FjZXJ0ZmlsZVtNQVhXT1JETEVO XTsKLSsgICAgY2hhciBwa2ZpbGVbTUFYV09SRExFTl07Ci0rCi0rICAgIGlmIChjbGllbnQgIT0g TlVMTCAmJiBjbGllbnRbMF0gPT0gMCkKLSsJCWNsaWVudCA9IE5VTEw7Ci0rICAgIGVsc2UgaWYg KHNlcnZlciAhPSBOVUxMICYmIHNlcnZlclswXSA9PSAwKQotKwkJc2VydmVyID0gTlVMTDsKLSsK LSsJaWYgKGNhY2VydF9maWxlICYmIGNlcnRfZmlsZSAmJiBwcml2a2V5X2ZpbGUpCi0rCQlyZXR1 cm4gMTsKLSsKLSsgICAgZmlsZW5hbWUgPSBfUEFUSF9FQVBUTFNDTElGSUxFOwotKyAgICBmID0g Zm9wZW4oZmlsZW5hbWUsICJyIik7Ci0rICAgIGlmIChmID09IE5VTEwpCi0rCQlyZXR1cm4gMDsK LSsKLSsgICAgcmV0ID0KLSsJc2Nhbl9hdXRoZmlsZV9lYXB0bHMoZiwgY2xpZW50LCBzZXJ2ZXIs IGNsaWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsCi0rCQkJICAgICBjYWNlcnRmaWxlLCBwa2ZpbGUs ICZhZGRycywgTlVMTCwgZmlsZW5hbWUsCi0rCQkJICAgICAwKTsKLSsgICAgZmNsb3NlKGYpOwot KwotKy8qCi0rICAgIGlmIChyZXQgPj0gMCAmJiAhZWFwdGxzX2luaXRfc3NsKDAsIGNhY2VydGZp bGUsIGNsaWNlcnRmaWxlLAotKwkJCQlzZXJ2Y2VydGZpbGUsIHBrZmlsZSkpCi0rCQlyZXQgPSAt MTsKLSsqLwotKwotKyAgICBpZiAoYWRkcnMgIT0gMCkKLSsJCWZyZWVfd29yZGxpc3QoYWRkcnMp OwotKwotKyAgICByZXR1cm4gcmV0ID49IDA7Ci0rfQotKwotKwotK3N0YXRpYyBpbnQKLStzY2Fu X2F1dGhmaWxlX2VhcHRscyhmLCBjbGllbnQsIHNlcnZlciwgY2xpX2NlcnQsIHNlcnZfY2VydCwg Y2FfY2VydCwgcGssCi0rCQkgICAgIGFkZHJzLCBvcHRzLCBmaWxlbmFtZSwgZmxhZ3MpCi0rICAg IEZJTEUgKmY7Ci0rICAgIGNoYXIgKmNsaWVudDsKLSsgICAgY2hhciAqc2VydmVyOwotKyAgICBj aGFyICpjbGlfY2VydDsKLSsgICAgY2hhciAqc2Vydl9jZXJ0OwotKyAgICBjaGFyICpjYV9jZXJ0 OwotKyAgICBjaGFyICpwazsKLSsgICAgc3RydWN0IHdvcmRsaXN0ICoqYWRkcnM7Ci0rICAgIHN0 cnVjdCB3b3JkbGlzdCAqKm9wdHM7Ci0rICAgIGNoYXIgKmZpbGVuYW1lOwotKyAgICBpbnQgZmxh Z3M7Ci0rewotKyAgICBpbnQgbmV3bGluZTsKLSsgICAgaW50IGdvdF9mbGFnLCBiZXN0X2ZsYWc7 Ci0rICAgIHN0cnVjdCB3b3JkbGlzdCAqYXAsICphZGRyX2xpc3QsICphbGlzdCwgKiphcHA7Ci0r ICAgIGNoYXIgd29yZFtNQVhXT1JETEVOXTsKLSsKLSsgICAgaWYgKGFkZHJzICE9IE5VTEwpCi0r CSphZGRycyA9IE5VTEw7Ci0rICAgIGlmIChvcHRzICE9IE5VTEwpCi0rCSpvcHRzID0gTlVMTDsK LSsgICAgYWRkcl9saXN0ID0gTlVMTDsKLSsgICAgaWYgKCFnZXR3b3JkKGYsIHdvcmQsICZuZXds aW5lLCBmaWxlbmFtZSkpCi0rCXJldHVybiAtMTsJCS8qIGZpbGUgaXMgZW1wdHk/Pz8gKi8KLSsg ICAgbmV3bGluZSA9IDE7Ci0rICAgIGJlc3RfZmxhZyA9IC0xOwotKyAgICBmb3IgKDs7KSB7Ci0r CS8qCi0rCSAqIFNraXAgdW50aWwgd2UgZmluZCBhIHdvcmQgYXQgdGhlIHN0YXJ0IG9mIGEgbGlu ZS4KLSsJICovCi0rCXdoaWxlICghbmV3bGluZSAmJiBnZXR3b3JkKGYsIHdvcmQsICZuZXdsaW5l LCBmaWxlbmFtZSkpOwotKwlpZiAoIW5ld2xpbmUpCi0rCSAgICBicmVhazsJCS8qIGdvdCB0byBl bmQgb2YgZmlsZSAqLwotKwotKwkvKgotKwkgKiBHb3QgYSBjbGllbnQgLSBjaGVjayBpZiBpdCdz IGEgbWF0Y2ggb3IgYSB3aWxkY2FyZC4KLSsJICovCi0rCWdvdF9mbGFnID0gMDsKLSsJaWYgKGNs aWVudCAhPSBOVUxMICYmIHN0cmNtcCh3b3JkLCBjbGllbnQpICE9IDAgJiYgIUlTV0lMRCh3b3Jk KSkgewotKwkgICAgbmV3bGluZSA9IDA7Ci0rCSAgICBjb250aW51ZTsKLSsJfQotKwlpZiAoIUlT V0lMRCh3b3JkKSkKLSsJICAgIGdvdF9mbGFnID0gTk9OV0lMRF9DTElFTlQ7Ci0rCi0rCS8qCi0r CSAqIE5vdyBnZXQgYSBzZXJ2ZXIgYW5kIGNoZWNrIGlmIGl0IG1hdGNoZXMuCi0rCSAqLwotKwlp ZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwot KwlpZiAobmV3bGluZSkKLSsJICAgIGNvbnRpbnVlOwotKwlpZiAoIUlTV0lMRCh3b3JkKSkgewot KwkgICAgaWYgKHNlcnZlciAhPSBOVUxMICYmIHN0cmNtcCh3b3JkLCBzZXJ2ZXIpICE9IDApCi0r CQljb250aW51ZTsKLSsJICAgIGdvdF9mbGFnIHw9IE5PTldJTERfU0VSVkVSOwotKwl9Ci0rCi0r CS8qCi0rCSAqIEdvdCBzb21lIHNvcnQgb2YgYSBtYXRjaCAtIHNlZSBpZiBpdCdzIGJldHRlciB0 aGFuIHdoYXQKLSsJICogd2UgaGF2ZSBhbHJlYWR5LgotKwkgKi8KLSsJaWYgKGdvdF9mbGFnIDw9 IGJlc3RfZmxhZykKLSsJICAgIGNvbnRpbnVlOwotKwotKwkvKgotKwkgKiBHZXQgdGhlIGNsaV9j ZXJ0Ci0rCSAqLwotKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkK LSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGluZSkKLSsJICAgIGNvbnRpbnVlOwotKwlpZiAoc3Ry Y21wKHdvcmQsICItIikgIT0gMCkgewotKwkgICAgc3RybGNweShjbGlfY2VydCwgd29yZCwgTUFY V09SRExFTik7Ci0rCX0gZWxzZQotKwkgICAgY2xpX2NlcnRbMF0gPSAwOwotKwotKwkvKgotKwkg KiBHZXQgc2Vydl9jZXJ0Ci0rCSAqLwotKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUs IGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGluZSkKLSsJICAgIGNvbnRpbnVl OwotKwlpZiAoc3RyY21wKHdvcmQsICItIikgIT0gMCkgewotKwkgICAgc3RybGNweShzZXJ2X2Nl cnQsIHdvcmQsIE1BWFdPUkRMRU4pOwotKwl9IGVsc2UKLSsJICAgIHNlcnZfY2VydFswXSA9IDA7 Ci0rCi0rCS8qCi0rCSAqIEdldCBjYV9jZXJ0Ci0rCSAqLwotKwlpZiAoIWdldHdvcmQoZiwgd29y ZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKLSsJICAgIGJyZWFrOwotKwlpZiAobmV3bGluZSkKLSsJ ICAgIGNvbnRpbnVlOwotKwlzdHJsY3B5KGNhX2NlcnQsIHdvcmQsIE1BWFdPUkRMRU4pOwotKwot KwkvKgotKwkgKiBHZXQgcGsKLSsJICovCi0rCWlmICghZ2V0d29yZChmLCB3b3JkLCAmbmV3bGlu ZSwgZmlsZW5hbWUpKQotKwkgICAgYnJlYWs7Ci0rCWlmIChuZXdsaW5lKQotKwkgICAgY29udGlu dWU7Ci0rCXN0cmxjcHkocGssIHdvcmQsIE1BWFdPUkRMRU4pOwotKwotKwotKwkvKgotKwkgKiBO b3cgcmVhZCBhZGRyZXNzIGF1dGhvcml6YXRpb24gaW5mbyBhbmQgbWFrZSBhIHdvcmRsaXN0Lgot KwkgKi8KLSsJYXBwID0gJmFsaXN0OwotKwlmb3IgKDs7KSB7Ci0rCSAgICBpZiAoIWdldHdvcmQo Ziwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSB8fCBuZXdsaW5lKQotKwkJYnJlYWs7Ci0rCSAg ICBhcCA9IChzdHJ1Y3Qgd29yZGxpc3QgKikKLSsJCW1hbGxvYyhzaXplb2Yoc3RydWN0IHdvcmRs aXN0KSArIHN0cmxlbih3b3JkKSArIDEpOwotKwkgICAgaWYgKGFwID09IE5VTEwpCi0rCQlub3Zt KCJhdXRob3JpemVkIGFkZHJlc3NlcyIpOwotKwkgICAgYXAtPndvcmQgPSAoY2hhciAqKSAoYXAg KyAxKTsKLSsJICAgIHN0cmNweShhcC0+d29yZCwgd29yZCk7Ci0rCSAgICAqYXBwID0gYXA7Ci0r CSAgICBhcHAgPSAmYXAtPm5leHQ7Ci0rCX0KLSsJKmFwcCA9IE5VTEw7Ci0rCS8qCi0rCSAqIFRo aXMgaXMgdGhlIGJlc3Qgc28gZmFyOyByZW1lbWJlciBpdC4KLSsJICovCi0rCWJlc3RfZmxhZyA9 IGdvdF9mbGFnOwotKwlpZiAoYWRkcl9saXN0KQotKwkgICAgZnJlZV93b3JkbGlzdChhZGRyX2xp c3QpOwotKwlhZGRyX2xpc3QgPSBhbGlzdDsKLSsKLSsJaWYgKCFuZXdsaW5lKQotKwkgICAgYnJl YWs7Ci0rICAgIH0KLSsKLSsgICAgLyogc2NhbiBmb3IgYSAtLSB3b3JkIGluZGljYXRpbmcgdGhl IHN0YXJ0IG9mIG9wdGlvbnMgKi8KLSsgICAgZm9yIChhcHAgPSAmYWRkcl9saXN0OyAoYXAgPSAq YXBwKSAhPSBOVUxMOyBhcHAgPSAmYXAtPm5leHQpCi0rCWlmIChzdHJjbXAoYXAtPndvcmQsICIt LSIpID09IDApCi0rCSAgICBicmVhazsKLSsgICAgLyogYXAgPSBzdGFydCBvZiBvcHRpb25zICov Ci0rICAgIGlmIChhcCAhPSBOVUxMKSB7Ci0rCWFwID0gYXAtPm5leHQ7CQkvKiBmaXJzdCBvcHRp b24gKi8KLSsJZnJlZSgqYXBwKTsJCS8qIGZyZWUgdGhlICItLSIgd29yZCAqLwotKwkqYXBwID0g TlVMTDsJCS8qIHRlcm1pbmF0ZSBhZGRyIGxpc3QgKi8KLSsgICAgfQotKyAgICBpZiAob3B0cyAh PSBOVUxMKQotKwkqb3B0cyA9IGFwOwotKyAgICBlbHNlIGlmIChhcCAhPSBOVUxMKQotKwlmcmVl X3dvcmRsaXN0KGFwKTsKLSsgICAgaWYgKGFkZHJzICE9IE5VTEwpCi0rCSphZGRycyA9IGFkZHJf bGlzdDsKLSsgICAgZWxzZSBpZiAoYWRkcl9saXN0ICE9IE5VTEwpCi0rCWZyZWVfd29yZGxpc3Qo YWRkcl9saXN0KTsKLSsKLSsgICAgcmV0dXJuIGJlc3RfZmxhZzsKLSt9Ci0rCi0rCi0raW50Ci0r Z2V0X2VhcHRsc19zZWNyZXQodW5pdCwgY2xpZW50LCBzZXJ2ZXIsIGNsaWNlcnRmaWxlLCBzZXJ2 Y2VydGZpbGUsCi0rCQkgIGNhY2VydGZpbGUsIHBrZmlsZSwgYW1fc2VydmVyKQotKyAgICBpbnQg dW5pdDsKLSsgICAgY2hhciAqY2xpZW50OwotKyAgICBjaGFyICpzZXJ2ZXI7Ci0rICAgIGNoYXIg KmNsaWNlcnRmaWxlOwotKyAgICBjaGFyICpzZXJ2Y2VydGZpbGU7Ci0rICAgIGNoYXIgKmNhY2Vy dGZpbGU7Ci0rICAgIGNoYXIgKnBrZmlsZTsKLSsgICAgaW50IGFtX3NlcnZlcjsKLSt7Ci0rICAg IEZJTEUgKmZwOwotKyAgICBpbnQgcmV0OwotKyAgICBjaGFyICpmaWxlbmFtZSAgICAgICAgID0g TlVMTDsKLSsgICAgc3RydWN0IHdvcmRsaXN0ICphZGRycyA9IE5VTEw7Ci0rICAgIHN0cnVjdCB3 b3JkbGlzdCAqb3B0cyAgPSBOVUxMOwotKwotKwkvKiBpbiBjbGllbnQgbW9kZSB0aGUgY2ErY2Vy dCtwcml2a2V5IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBhcyBvcHRpb25zICovCi0rCWlmICghYW1f c2VydmVyICYmIGNhY2VydF9maWxlICYmIGNlcnRfZmlsZSAmJiBwcml2a2V5X2ZpbGUgKQotKwl7 Ci0rCQlzdHJsY3B5KCBjbGljZXJ0ZmlsZSwgY2VydF9maWxlLCBNQVhXT1JETEVOICk7Ci0rCQlz dHJsY3B5KCBjYWNlcnRmaWxlLCBjYWNlcnRfZmlsZSwgTUFYV09SRExFTiApOwotKwkJc3RybGNw eSggcGtmaWxlLCBwcml2a2V5X2ZpbGUsIE1BWFdPUkRMRU4gKTsKLSsJCXNlcnZjZXJ0ZmlsZVsw XSA9ICdcMCc7Ci0rCX0KLSsJZWxzZQotKwl7Ci0rCQlmaWxlbmFtZSA9IChhbV9zZXJ2ZXIgPyBf UEFUSF9FQVBUTFNTRVJWRklMRSA6IF9QQVRIX0VBUFRMU0NMSUZJTEUpOwotKwkJYWRkcnMgPSBO VUxMOwotKwotKwkJZnAgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKLSsJCWlmIChmcCA9PSBOVUxM KQotKwkJewotKwkJCWVycm9yKCJDYW4ndCBvcGVuIGVhcC10bHMgc2VjcmV0IGZpbGUgJXM6ICVt IiwgZmlsZW5hbWUpOwotKwkJCXJldHVybiAwOwotKyAgIAkgCX0KLSsKLSsJCWNoZWNrX2FjY2Vz cyhmcCwgZmlsZW5hbWUpOwotKwotKwkJcmV0ID0gc2Nhbl9hdXRoZmlsZV9lYXB0bHMoZnAsIGNs aWVudCwgc2VydmVyLCBjbGljZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLAotKwkJCQljYWNlcnRmaWxl LCBwa2ZpbGUsICZhZGRycywgJm9wdHMsIGZpbGVuYW1lLCAwKTsKLSsKLSsJCWZjbG9zZShmcCk7 Ci0rCi0rCQlpZiAocmV0IDwgMCkgcmV0dXJuIDA7Ci0rCX0KLSsKLSsgICAgaWYgKGVhcHRsc19w YXNzd2RfaG9vaykKLSsgICAgewotKwkJZGJnbG9nKCAiQ2FsbGluZyBlYXB0bHMgcGFzc3dvcmQg aG9vayIgKTsKLSsJCWlmICggKCplYXB0bHNfcGFzc3dkX2hvb2spKHBrZmlsZSwgcGFzc3dkKSA8 IDApCi0rCQl7Ci0rCSAgIAkJIGVycm9yKCJVbmFibGUgdG8gb2J0YWluIEVBUC1UTFMgcGFzc3dv cmQgZm9yICVzICglcykgZnJvbSBwbHVnaW4iLAotKwkJCQljbGllbnQsIHBrZmlsZSk7Ci0rCQkg ICAgcmV0dXJuIDA7Ci0rCQl9Ci0rCX0KLSsgICAgaWYgKGFtX3NlcnZlcikKLSsJCXNldF9hbGxv d2VkX2FkZHJzKHVuaXQsIGFkZHJzLCBvcHRzKTsKLSsgICAgZWxzZSBpZiAob3B0cyAhPSBOVUxM KQotKwkJZnJlZV93b3JkbGlzdChvcHRzKTsKLSsgICAgaWYgKGFkZHJzICE9IE5VTEwpCi0rCQlm cmVlX3dvcmRsaXN0KGFkZHJzKTsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKyNlbmRpZgotKwot ZGlmZiAtLWdpdCBhL3BwcGQvY2NwLmMgYi9wcHBkL2NjcC5jCi1pbmRleCA3ZDc5MjJhZmNmYzAu LjBhOTNiMTVhZWVmMyAxMDA2NDQKLS0tLSBhL3BwcGQvY2NwLmMKLSsrKyBiL3BwcGQvY2NwLmMK LUBAIC01NDAsNiArNTQwLDkgQEAgY2NwX3Jlc2V0Y2koZikKLSAgICAgaWYgKGdvLT5tcHBlKSB7 Ci0gCWNjcF9vcHRpb25zICphbyA9ICZjY3BfYWxsb3dvcHRpb25zW2YtPnVuaXRdOwotIAlpbnQg YXV0aF9tc2NoYXBfYml0cyA9IGF1dGhfZG9uZVtmLT51bml0XTsKLSsjaWZkZWYgVVNFX0VBUFRM UwotKwlpbnQgYXV0aF9lYXBfYml0cyA9IGF1dGhfZG9uZVtmLT51bml0XTsKLSsjZW5kaWYKLSAJ aW50IG51bWJpdHM7Ci0gCi0gCS8qCi1AQCAtNTY3LDggKzU3MCwyMyBAQCBjY3BfcmVzZXRjaShm KQotIAkgICAgbGNwX2Nsb3NlKGYtPnVuaXQsICJNUFBFIHJlcXVpcmVkIGJ1dCBub3QgYXZhaWxh YmxlIik7Ci0gCSAgICByZXR1cm47Ci0gCX0KLSsKLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAgICAv KgotKyAgICAgKiBNUFBFIGlzIGFsc28gcG9zc2libGUgaW4gY29tYmluYXRpb24gd2l0aCBFQVAt VExTLgotKyAgICAgKiBJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZWN0IGlmIHdlJ3JlIGRvaW5n IEVBUCBvciBFQVAtVExTCi0rICAgICAqIGF0IHRoaXMgc3RhZ2UsIGhlbmNlIHdlIGFjY2VwdCBh bGwgZm9ybXMgb2YgRUFQLiBJZiBUTFMgaXMKLSsgICAgICogbm90IHVzZWQgdGhlbiB0aGUgTVBQ RSBrZXlzIHdpbGwgbm90IGJlIGRlcml2ZWQgYW55d2F5LgotKyAgICAgKi8KLSsJLyogTGVhdmUg b25seSB0aGUgZWFwIGF1dGggYml0cyBzZXQgKi8KLSsJYXV0aF9lYXBfYml0cyAmPSAoRUFQX1dJ VEhQRUVSIHwgRUFQX1BFRVIgKTsKLSsKLSsJaWYgKChudW1iaXRzID09IDApICYmIChhdXRoX2Vh cF9iaXRzID09IDApKSB7Ci0rCSAgICBlcnJvcigiTVBQRSByZXF1aXJlZCwgYnV0IE1TLUNIQVBb djJdIG5vciBFQVAtVExTIGF1dGggYXJlIHBlcmZvcm1lZC4iKTsKLSsjZWxzZQotIAlpZiAoIW51 bWJpdHMpIHsKLS0JICAgIGVycm9yKCJNUFBFIHJlcXVpcmVkLCBidXQgTVMtQ0hBUFt2Ml0gYXV0 aCBub3QgcGVyZm9ybWVkLiIpOwotKwkJZXJyb3IoIk1QUEUgcmVxdWlyZWQsIGJ1dCBNUy1DSEFQ W3YyXSBhdXRoIG5vdCBwZXJmb3JtZWQuIik7Ci0rI2VuZGlmCi0gCSAgICBsY3BfY2xvc2UoZi0+ dW5pdCwgIk1QUEUgcmVxdWlyZWQgYnV0IG5vdCBhdmFpbGFibGUiKTsKLSAJICAgIHJldHVybjsK LSAJfQotZGlmZiAtLWdpdCBhL3BwcGQvY2hhcC1tZDUuYyBiL3BwcGQvY2hhcC1tZDUuYwotaW5k ZXggNzdkZDRlY2M3MDU5Li4yNjliNTJjYjIwNDEgMTAwNjQ0Ci0tLS0gYS9wcHBkL2NoYXAtbWQ1 LmMKLSsrKyBiL3BwcGQvY2hhcC1tZDUuYwotQEAgLTM2LDcgKzM2LDExIEBACi0gI2luY2x1ZGUg ImNoYXAtbmV3LmgiCi0gI2luY2x1ZGUgImNoYXAtbWQ1LmgiCi0gI2luY2x1ZGUgIm1hZ2ljLmgi Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsjaW5jbHVkZSAiZWFwLXRscy5oIgotKyNlbHNlCi0gI2lu Y2x1ZGUgIm1kNS5oIgotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0gCi0gI2RlZmluZSBNRDVf SEFTSF9TSVpFCQkxNgotICNkZWZpbmUgTUQ1X01JTl9DSEFMTEVOR0UJMTYKLWRpZmYgLS1naXQg YS9wcHBkL2VhcC10bHMuYyBiL3BwcGQvZWFwLXRscy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwMDAwLi5kZjRiYzFiOTk2YzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Bw cGQvZWFwLXRscy5jCi1AQCAtMCwwICsxLDEzODMgQEAKLSsvKiAqIGVhcC10bHMuYyAtIEVBUC1U TFMgaW1wbGVtZW50YXRpb24gZm9yIFBQUAotKyAqCi0rICogQ29weXJpZ2h0IChjKSBCZW5pYW1p bm8gR2FsdmFuaSAyMDA1IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK LSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAg ICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBUaGUgbmFtZShzKSBvZiB0aGUgYXV0aG9ycyBv ZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAg IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSsgKgotKyAqIFRIRSBBVVRIT1JTIE9GIFRISVMg U09GVFdBUkUgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8KLSsgKiBUSElT IFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkKLSsgKiBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUg TElBQkxFIEZPUiBBTlkKLSsgKiBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1Mg T0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLSsgKiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HCi0rICog T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRI SVMgU09GVFdBUkUuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1 ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9jb25mLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5o PgotKwotKyNpbmNsdWRlICJwcHBkLmgiCi0rI2luY2x1ZGUgImVhcC5oIgotKyNpbmNsdWRlICJl YXAtdGxzLmgiCi0rI2luY2x1ZGUgImZzbS5oIgotKyNpbmNsdWRlICJsY3AuaCIKLSsjaW5jbHVk ZSAicGF0aG5hbWVzLmgiCi0rCi0rLyogVGhlIG9wZW5zc2wgY29uZmlndXJhdGlvbiBmaWxlIGFu ZCBlbmdpbmVzIGNhbiBiZSBsb2FkZWQgb25seSBvbmNlICovCi0rc3RhdGljIENPTkYgICAqc3Ns X2NvbmZpZyAgPSBOVUxMOwotK3N0YXRpYyBFTkdJTkUgKmNlcnRfZW5naW5lID0gTlVMTDsKLStz dGF0aWMgRU5HSU5FICpwa2V5X2VuZ2luZSA9IE5VTEw7Ci0rCi0rI2lmZGVmIE1QUEUKLSsKLSsj ZGVmaW5lIEVBUFRMU19NUFBFX0tFWV9MRU4gICAgIDMyCi0rCi0rLyoKLSsgKiBUaGUgZm9sbG93 aW5nIHN0dWZmIGlzIG9ubHkgbmVlZGVkIGlmIFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKCkg aXMgbm90IGF2YWlsYWJsZQotKyAqLwotKwotKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwg MHgxMDAwMTAwMEwKLSsKLSsvKgotKyAqIGh0dHBzOi8vd2lraS5vcGVuc3NsLm9yZy9pbmRleC5w aHAvMS4xX0FQSV9DaGFuZ2VzCi0rICogdHJpZXMgdG8gcHJvdmlkZSBzb21lIGd1aWRhbmNlIGJ1 dCB1bHRpbWF0ZWx5IGZhbGxzIHNob3J0LgotKyAqCi0rICovCi0rCi0rc3RhdGljIHZvaWQgSE1B Q19DVFhfZnJlZShITUFDX0NUWCAqY3R4KQotK3sKLSsJaWYgKGN0eCAhPSBOVUxMKSB7Ci0rCQlI TUFDX0NUWF9jbGVhbnVwKGN0eCk7Ci0rCQlPUEVOU1NMX2ZyZWUoY3R4KTsKLSsJfQotK30KLSsK LStzdGF0aWMgSE1BQ19DVFggKkhNQUNfQ1RYX25ldyh2b2lkKQotK3sKLSsJSE1BQ19DVFggKmN0 eCA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqY3R4KSk7Ci0rCWlmIChjdHggIT0gTlVMTCkKLSsJ CUhNQUNfQ1RYX2luaXQoY3R4KTsKLSsJcmV0dXJuIGN0eDsKLSt9Ci0rCi0rc3RhdGljIHNpemVf dCBTU0xfZ2V0X2NsaWVudF9yYW5kb20oY29uc3QgU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKm91 dCwKLSsJCQkJICAgIHNpemVfdCBvdXRsZW4pCi0rewotKwlpZiAob3V0bGVuID09IDApCi0rCQly ZXR1cm4gc2l6ZW9mKHNzbC0+czMtPmNsaWVudF9yYW5kb20pOwotKwlpZiAob3V0bGVuID4gc2l6 ZW9mKHNzbC0+czMtPmNsaWVudF9yYW5kb20pKQotKwkJb3V0bGVuID0gc2l6ZW9mKHNzbC0+czMt PmNsaWVudF9yYW5kb20pOwotKwltZW1jcHkob3V0LCBzc2wtPnMzLT5jbGllbnRfcmFuZG9tLCBv dXRsZW4pOwotKwlyZXR1cm4gb3V0bGVuOwotK30KLSsKLStzdGF0aWMgc2l6ZV90IFNTTF9nZXRf c2VydmVyX3JhbmRvbShjb25zdCBTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqb3V0LAotKwkJCQkg ICAgc2l6ZV90IG91dGxlbikKLSt7Ci0rCWlmIChvdXRsZW4gPT0gMCkKLSsJCXJldHVybiBzaXpl b2Yoc3NsLT5zMy0+c2VydmVyX3JhbmRvbSk7Ci0rCWlmIChvdXRsZW4gPiBzaXplb2Yoc3NsLT5z My0+c2VydmVyX3JhbmRvbSkpCi0rCQlvdXRsZW4gPSBzaXplb2Yoc3NsLT5zMy0+c2VydmVyX3Jh bmRvbSk7Ci0rCW1lbWNweShvdXQsIHNzbC0+czMtPnNlcnZlcl9yYW5kb20sIG91dGxlbik7Ci0r CXJldHVybiBvdXRsZW47Ci0rfQotKwotK3N0YXRpYyBzaXplX3QgU1NMX1NFU1NJT05fZ2V0X21h c3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sCi0rCQkJCSAgICAgICAgIHVuc2ln bmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbikKLSt7Ci0rCWlmIChvdXRsZW4gPT0gMCkKLSsJ CXJldHVybiBzZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aDsKLSsJaWYgKG91dGxlbiA+IHNlc3Np b24tPm1hc3Rlcl9rZXlfbGVuZ3RoKQotKwkJb3V0bGVuID0gc2Vzc2lvbi0+bWFzdGVyX2tleV9s ZW5ndGg7Ci0rCW1lbWNweShvdXQsIHNlc3Npb24tPm1hc3Rlcl9rZXksIG91dGxlbik7Ci0rCXJl dHVybiBvdXRsZW47Ci0rfQotKwotKwotKy8qCi0rICogVExTIFBSRiBmcm9tIFJGQyAyMjQ2Ci0r ICovCi0rc3RhdGljIHZvaWQgUF9oYXNoKGNvbnN0IEVWUF9NRCAqZXZwX21kLAotKwkJICAgY29u c3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LCB1bnNpZ25lZCBpbnQgc2VjcmV0X2xlbiwKLSsJCSAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsICAgdW5zaWduZWQgaW50IHNlZWRfbGVuLAotKwkJ ICAgdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBpbnQgb3V0X2xlbikKLSt7Ci0rCUhNQUNf Q1RYICpjdHhfYSwgKmN0eF9vdXQ7Ci0rCXVuc2lnbmVkIGNoYXIgYVtITUFDX01BWF9NRF9DQkxP Q0tdOwotKwl1bnNpZ25lZCBpbnQgc2l6ZTsKLSsKLSsJY3R4X2EgPSBITUFDX0NUWF9uZXcoKTsK LSsJY3R4X291dCA9IEhNQUNfQ1RYX25ldygpOwotKwlITUFDX0luaXRfZXgoY3R4X2EsIHNlY3Jl dCwgc2VjcmV0X2xlbiwgZXZwX21kLCBOVUxMKTsKLSsJSE1BQ19Jbml0X2V4KGN0eF9vdXQsIHNl Y3JldCwgc2VjcmV0X2xlbiwgZXZwX21kLCBOVUxMKTsKLSsKLSsJc2l6ZSA9IEhNQUNfc2l6ZShj dHhfb3V0KTsKLSsKLSsJLyogQ2FsY3VsYXRlIEEoMSkgKi8KLSsJSE1BQ19VcGRhdGUoY3R4X2Es IHNlZWQsIHNlZWRfbGVuKTsKLSsJSE1BQ19GaW5hbChjdHhfYSwgYSwgTlVMTCk7Ci0rCi0rCXdo aWxlICgxKSB7Ci0rCQkvKiBDYWxjdWxhdGUgbmV4dCBwYXJ0IG9mIG91dHB1dCAqLwotKwkJSE1B Q19VcGRhdGUoY3R4X291dCwgYSwgc2l6ZSk7Ci0rCQlITUFDX1VwZGF0ZShjdHhfb3V0LCBzZWVk LCBzZWVkX2xlbik7Ci0rCi0rCQkvKiBDaGVjayBpZiBsYXN0IHBhcnQgKi8KLSsJCWlmIChvdXRf bGVuIDwgc2l6ZSkgewotKwkJCUhNQUNfRmluYWwoY3R4X291dCwgYSwgTlVMTCk7Ci0rCQkJbWVt Y3B5KG91dCwgYSwgb3V0X2xlbik7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCi0rCQkvKiBQbGFjZSBk aWdlc3QgaW4gb3V0cHV0IGJ1ZmZlciAqLwotKwkJSE1BQ19GaW5hbChjdHhfb3V0LCBvdXQsIE5V TEwpOwotKwkJSE1BQ19Jbml0X2V4KGN0eF9vdXQsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOwotKwkJ b3V0ICs9IHNpemU7Ci0rCQlvdXRfbGVuIC09IHNpemU7Ci0rCi0rCQkvKiBDYWxjdWxhdGUgbmV4 dCBBKGkpICovCi0rCQlITUFDX0luaXRfZXgoY3R4X2EsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOwot KwkJSE1BQ19VcGRhdGUoY3R4X2EsIGEsIHNpemUpOwotKwkJSE1BQ19GaW5hbChjdHhfYSwgYSwg TlVMTCk7Ci0rCX0KLSsKLSsJSE1BQ19DVFhfZnJlZShjdHhfYSk7Ci0rCUhNQUNfQ1RYX2ZyZWUo Y3R4X291dCk7Ci0rCW1lbXNldChhLCAwLCBzaXplb2YoYSkpOwotK30KLSsKLStzdGF0aWMgdm9p ZCBQUkYoY29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LCB1bnNpZ25lZCBpbnQgc2VjcmV0X2xl biwKLSsJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsICAgdW5zaWduZWQgaW50IHNlZWRfbGVu LAotKwkJdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGlu dCBvdXRfbGVuKQotK3sKLSsJICAgIHVuc2lnbmVkIGludCBpOwotKwkgICAgdW5zaWduZWQgaW50 IGxlbiA9IChzZWNyZXRfbGVuICsgMSkgLyAyOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpzMSA9 IHNlY3JldDsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqczIgPSBzZWNyZXQgKyAoc2VjcmV0X2xl biAtIGxlbik7Ci0rCi0rCVBfaGFzaChFVlBfbWQ1KCksICBzMSwgbGVuLCBzZWVkLCBzZWVkX2xl biwgb3V0LCBvdXRfbGVuKTsKLSsJUF9oYXNoKEVWUF9zaGExKCksIHMyLCBsZW4sIHNlZWQsIHNl ZWRfbGVuLCBidWYsIG91dF9sZW4pOwotKwotKwlmb3IgKGk9MDsgaSA8IG91dF9sZW47IGkrKykg ewotKwkgICAgICAgIG91dFtpXSBePSBidWZbaV07Ci0rCX0KLSt9Ci0rCi0rc3RhdGljIGludCBT U0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbChTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6 ZV90IG9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxh YmVsLCBzaXplX3QgbGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqcCwgc2l6ZV90IHBsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCB1c2VfY29udGV4dCkKLSt7Ci0rCXVuc2lnbmVkIGNoYXIgc2VlZFs2NCArIDIq U1NMM19SQU5ET01fU0laRV07Ci0rCXVuc2lnbmVkIGNoYXIgYnVmWzQqRUFQVExTX01QUEVfS0VZ X0xFTl07Ci0rCXVuc2lnbmVkIGNoYXIgbWFzdGVyX2tleVtTU0xfTUFYX01BU1RFUl9LRVlfTEVO R1RIXTsKLSsJc2l6ZV90IG1hc3Rlcl9rZXlfbGVuZ3RoOwotKwl1bnNpZ25lZCBjaGFyICpwcDsK LSsKLSsJcHAgPSBzZWVkOwotKwotKwltZW1jcHkocHAsIGxhYmVsLCBsbGVuKTsKLSsJcHAgKz0g bGxlbjsKLSsKLSsJbGxlbiArPSBTU0xfZ2V0X2NsaWVudF9yYW5kb20ocywgcHAsIFNTTDNfUkFO RE9NX1NJWkUpOwotKwlwcCArPSBTU0wzX1JBTkRPTV9TSVpFOwotKwotKwlsbGVuICs9IFNTTF9n ZXRfc2VydmVyX3JhbmRvbShzLCBwcCwgU1NMM19SQU5ET01fU0laRSk7Ci0rCi0rCW1hc3Rlcl9r ZXlfbGVuZ3RoID0gU1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXkoU1NMX2dldF9zZXNzaW9uKHMp LCBtYXN0ZXJfa2V5LAotKwkJCQkJCSAgIHNpemVvZihtYXN0ZXJfa2V5KSk7Ci0rCVBSRihtYXN0 ZXJfa2V5LCBtYXN0ZXJfa2V5X2xlbmd0aCwgc2VlZCwgbGxlbiwgb3V0LCBidWYsIG9sZW4pOwot KwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rI2VuZGlmIC8qIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIg PCAweDEwMDAxMDAwTCAqLwotKwotKwotKy8qCi0rICogIE9wZW5TU0wgMS4xKyBpbnRyb2R1Y2Vk IGEgZ2VuZXJpYyBUTFNfbWV0aG9kKCkKLSsgKiAgRm9yIG9sZGVyIHJlbGVhc2VzIHdlIHN1YnN0 aXR1dGUgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZAotKyAqLwotKwotKyNpZiBPUEVOU1NMX1ZFUlNJ T05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKLSsKLSsjZGVmaW5lIFRMU19tZXRob2QgU1NMdjIzX21l dGhvZAotKwotKyNkZWZpbmUgU1NMM19SVF9IRUFERVIJMHgxMDAKLSsKLSsjZW5kaWYgLyogT1BF TlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDBMICovCi0rCi0rCi0rLyoKLSsgKiAgR2Vu ZXJhdGUga2V5cyBhY2NvcmRpbmcgdG8gUkZDIDI3MTYgYW5kIGFkZCB0byByZXBseQotKyAqLwot K3ZvaWQgZWFwdGxzX2dlbl9tcHBlX2tleXMoc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMsIGNv bnN0IGNoYXIgKnByZl9sYWJlbCwKLSsJICAgICAgICAgICAgICAgICAgICAgIGludCBjbGllbnQp Ci0rewotKwl1bnNpZ25lZCBjaGFyICBvdXRbNCpFQVBUTFNfTVBQRV9LRVlfTEVOXTsKLSsJc2l6 ZV90ICAgICAgICAgcHJmX3NpemUgPSBzdHJsZW4ocHJmX2xhYmVsKTsKLSsJdW5zaWduZWQgY2hh ciAqcDsKLSsKLSsJaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKGV0cy0+c3NsLCBvdXQs IHNpemVvZihvdXQpLCBwcmZfbGFiZWwsIHByZl9zaXplLCBOVUxMLCAwLCAwKSAhPSAxKQotKwl7 Ci0rCSAgICB3YXJuKCAiRUFQLVRMUzogRmFpbGVkIGdlbmVyYXRpbmcga2V5aW5nIG1hdGVyaWFs IiApOwotKwkgICAgcmV0dXJuOwotKwl9Ci0rCi0rCS8qCi0rCSAqIFdlIG5vdyBoYXZlIHRoZSBt YXN0ZXIgc2VuZCBhbmQgcmVjZWl2ZSBrZXlzLgotKwkgKiBGcm9tIHRoZXNlLCBnZW5lcmF0ZSB0 aGUgc2Vzc2lvbiBzZW5kIGFuZCByZWNlaXZlIGtleXMuCi0rCSAqIChzZWUgUkZDMzA3OSAvIGRy YWZ0LWlldGYtcHBwZXh0LW1wcGUta2V5cy0wMy50eHQgZm9yIGRldGFpbHMpCi0rCSAqLwotKwlp ZiAoY2xpZW50KQotKwl7Ci0rCSAgICBwID0gb3V0OwotKwkJQkNPUFkoIHAsIG1wcGVfc2VuZF9r ZXksIHNpemVvZihtcHBlX3NlbmRfa2V5KSApOwotKwkJcCArPSBFQVBUTFNfTVBQRV9LRVlfTEVO OwotKwkJQkNPUFkoIHAsIG1wcGVfcmVjdl9rZXksIHNpemVvZihtcHBlX3JlY3Zfa2V5KSApOwot Kwl9Ci0rCWVsc2UKLSsJewotKwkJcCA9IG91dDsKLSsJCUJDT1BZKCBwLCBtcHBlX3JlY3Zfa2V5 LCBzaXplb2YobXBwZV9yZWN2X2tleSkgKTsKLSsJCXAgKz0gRUFQVExTX01QUEVfS0VZX0xFTjsK LSsJCUJDT1BZKCBwLCBtcHBlX3NlbmRfa2V5LCBzaXplb2YobXBwZV9zZW5kX2tleSkgKTsKLSsJ fQotKwotKwltcHBlX2tleXNfc2V0ID0gMTsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0rdm9pZCBsb2df c3NsX2Vycm9ycyggdm9pZCApCi0rewotKwl1bnNpZ25lZCBsb25nIHNzbF9lcnIgPSBFUlJfZ2V0 X2Vycm9yKCk7Ci0rCi0rCWlmIChzc2xfZXJyICE9IDApCi0rCQlkYmdsb2coIkVBUC1UTFMgU1NM IGVycm9yIHN0YWNrOiIpOwotKwl3aGlsZSAoc3NsX2VyciAhPSAwKSB7Ci0rCQlkYmdsb2coIEVS Ul9lcnJvcl9zdHJpbmcoIHNzbF9lcnIsIE5VTEwgKSApOwotKwkJc3NsX2VyciA9IEVSUl9nZXRf ZXJyb3IoKTsKLSsJfQotK30KLSsKLSsKLStpbnQgcGFzc3dvcmRfY2FsbGJhY2sgKGNoYXIgKmJ1 ZiwgaW50IHNpemUsIGludCByd2ZsYWcsIHZvaWQgKnUpCi0rewotKwlpZiAoYnVmKQotKwl7Ci0r CQlzdHJuY3B5IChidWYsIHBhc3N3ZCwgc2l6ZSk7Ci0rCQlyZXR1cm4gc3RybGVuIChidWYpOwot Kwl9Ci0rCXJldHVybiAwOwotK30KLSsKLSsKLStDT05GICplYXB0bHNfc3NsX2xvYWRfY29uZmln KCB2b2lkICkKLSt7Ci0rCUNPTkYgICAgICAgICpjb25maWc7Ci0rCWludCAgICAgICAgICByZXRf Y29kZTsKLSsJbG9uZyAgICAgICAgIGVycm9yX2xpbmUgPSAzMzsKLSsKLSsJY29uZmlnID0gTkNP TkZfbmV3KCBOVUxMICk7Ci0rCWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCBjb25maWcgZmlsZSIg KTsKLSsJcmV0X2NvZGUgPSBOQ09ORl9sb2FkKCBjb25maWcsIF9QQVRIX09QRU5TU0xDT05GRklM RSwgJmVycm9yX2xpbmUgKTsKLSsJaWYgKHJldF9jb2RlID09IDApCi0rCXsKLSsJICAgIHdhcm4o ICJFQVAtVExTOiBFcnJvciBpbiBPcGVuU1NMIGNvbmZpZyBmaWxlICVzIGF0IGxpbmUgJWQiLCBf UEFUSF9PUEVOU1NMQ09ORkZJTEUsIGVycm9yX2xpbmUgKTsKLSsJICAgIE5DT05GX2ZyZWUoIGNv bmZpZyApOwotKwkgICAgY29uZmlnID0gTlVMTDsKLSsJICAgIEVSUl9jbGVhcl9lcnJvcigpOwot Kwl9Ci0rCi0rCWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCBidWlsdC1pbnMiICk7Ci0rCUVOR0lO RV9sb2FkX2J1aWx0aW5fZW5naW5lcygpOwotKwlPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVz KCk7Ci0rCi0rCWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCBjb25maWd1cmVkIG1vZHVsZXMiICk7 Ci0rCWlmIChDT05GX21vZHVsZXNfbG9hZCggY29uZmlnLCBOVUxMLCAwICkgPD0gMCApCi0rCXsK LSsJICAgIHdhcm4oICJFQVAtVExTOiBFcnJvciBsb2FkaW5nIE9wZW5TU0wgbW9kdWxlcyIgKTsK LSsJICAgIGxvZ19zc2xfZXJyb3JzKCk7Ci0rCSAgICBjb25maWcgPSBOVUxMOwotKwl9Ci0rCi0r CXJldHVybiBjb25maWc7Ci0rfQotKwotK0VOR0lORSAqZWFwdGxzX3NzbF9sb2FkX2VuZ2luZSgg Y2hhciAqZW5naW5lX25hbWUgKQotK3sKLSsJRU5HSU5FICAgICAgKmUgPSBOVUxMOwotKwotKwlk Ymdsb2coICJFbmFibGluZyBPcGVuU1NMIGF1dG8gZW5naW5lcyIgKTsKLSsJRU5HSU5FX3JlZ2lz dGVyX2FsbF9jb21wbGV0ZSgpOwotKwotKwlkYmdsb2coICJMb2FkaW5nIE9wZW5TU0wgJyVzJyBl bmdpbmUgc3VwcG9ydCIsIGVuZ2luZV9uYW1lICk7Ci0rCWUgPSBFTkdJTkVfYnlfaWQoIGVuZ2lu ZV9uYW1lICk7Ci0rCWlmICghZSkKLSsJewotKwkJZGJnbG9nKCAiRUFQLVRMUzogQ2Fubm90IGxv YWQgJyVzJyBlbmdpbmUgc3VwcG9ydCwgdHJ5aW5nICdkeW5hbWljJyIsIGVuZ2luZV9uYW1lICk7 Ci0rCQllID0gRU5HSU5FX2J5X2lkKCAiZHluYW1pYyIgKTsKLSsJCWlmIChlKQotKwkJewotKwkJ CWlmICghRU5HSU5FX2N0cmxfY21kX3N0cmluZyhlLCAiU09fUEFUSCIsIGVuZ2luZV9uYW1lLCAw KQotKyAgIAkgICAgICAgICB8fCAhRU5HSU5FX2N0cmxfY21kX3N0cmluZyhlLCAiTE9BRCIsIE5V TEwsIDApKQotKwkJCXsKLSsJCQkJd2FybiggIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgZHluYW1p YyBlbmdpbmUgJyVzJyIsIGVuZ2luZV9uYW1lICk7Ci0rCQkgICAgICAgIGxvZ19zc2xfZXJyb3Jz KCk7Ci0rCQkJCUVOR0lORV9mcmVlKGUpOwotKwkJCQllID0gTlVMTDsKLSsJCQl9Ci0rCQl9Ci0r CQllbHNlCi0rCQl7Ci0rCQkJd2FybiggIkVBUC1UTFM6IENhbm5vdCBsb2FkIGR5bmFtaWMgZW5n aW5lIHN1cHBvcnQiICk7Ci0rCQl9Ci0rCX0KLSsKLSsJaWYgKGUpCi0rCXsKLSsJCWRiZ2xvZygg IkluaXRpYWxpc2luZyBlbmdpbmUiICk7Ci0rCQlpZighRU5HSU5FX3NldF9kZWZhdWx0KGUsIEVO R0lORV9NRVRIT0RfQUxMKSkKLSsJCXsKLSsJCQl3YXJuKCAiRUFQLVRMUzogQ2Fubm90IHVzZSB0 aGF0IGVuZ2luZSIgKTsKLSsJCQlsb2dfc3NsX2Vycm9ycygpOwotKwkJCUVOR0lORV9mcmVlKGUp OwotKwkJCWUgPSBOVUxMOwotKwkJfQotKwl9Ci0rCi0rCXJldHVybiBlOwotK30KLSsKLSsvKgot KyAqIEluaXRpYWxpemUgdGhlIFNTTCBzdGFja3MgYW5kIHRlc3RzIGlmIGNlcnRpZmljYXRlcywg a2V5IGFuZCBjcmwKLSsgKiBmb3IgY2xpZW50IG9yIHNlcnZlciB1c2UgY2FuIGJlIGxvYWRlZC4K LSsgKi8KLStTU0xfQ1RYICplYXB0bHNfaW5pdF9zc2woaW50IGluaXRfc2VydmVyLCBjaGFyICpj YWNlcnRmaWxlLAotKwkJCWNoYXIgKmNlcnRmaWxlLCBjaGFyICpwZWVyX2NlcnRmaWxlLCBjaGFy ICpwcml2a2V5ZmlsZSkKLSt7Ci0rCWNoYXIJCSpjZXJ0X2VuZ2luZV9uYW1lID0gTlVMTDsKLSsJ Y2hhcgkJKmNlcnRfaWRlbnRpZmllciA9IE5VTEw7Ci0rCWNoYXIJCSpwa2V5X2VuZ2luZV9uYW1l ID0gTlVMTDsKLSsJY2hhcgkJKnBrZXlfaWRlbnRpZmllciA9IE5VTEw7Ci0rCVNTTF9DVFgJCSpj dHg7Ci0rCVNTTAkJCSpzc2w7Ci0rCVg1MDlfU1RPUkUJKmNlcnRzdG9yZTsKLSsJWDUwOV9MT09L VVAJKmxvb2t1cDsKLSsJWDUwOQkJKnRtcDsKLSsJaW50CQkJcmV0OwotKwotKwkvKgotKwkgKiBX aXRob3V0IHRoZXNlIGNhbid0IGNvbnRpbnVlCi0rCSAqLwotKwlpZiAoIWNhY2VydGZpbGVbMF0p Ci0rCXsKLSsJCWVycm9yKCJFQVAtVExTOiBDQSBjZXJ0aWZpY2F0ZSBtaXNzaW5nIik7Ci0rCQly ZXR1cm4gTlVMTDsKLSsJfQotKwotKwlpZiAoIWNlcnRmaWxlWzBdKQotKwl7Ci0rCQllcnJvcigi RUFQLVRMUzogVXNlciBjZXJ0aWZpY2F0ZSBtaXNzaW5nIik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJ fQotKwotKwlpZiAoIXByaXZrZXlmaWxlWzBdKQotKwl7Ci0rCQllcnJvcigiRUFQLVRMUzogVXNl ciBwcml2YXRlIGtleSBtaXNzaW5nIik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwlTU0xf bGlicmFyeV9pbml0KCk7Ci0rCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3MoKTsKLSsKLSsJY3R4ID0g U1NMX0NUWF9uZXcoVExTX21ldGhvZCgpKTsKLSsKLSsJaWYgKCFjdHgpIHsKLSsJCWVycm9yKCJF QVAtVExTOiBDYW5ub3QgaW5pdGlhbGl6ZSBTU0wgQ1RYIGNvbnRleHQiKTsKLSsJCWdvdG8gZmFp bDsKLSsJfQotKwotKwkvKiBpZiB0aGUgY2VydGlmaWNhdGUgZmlsZW5hbWUgaXMgb2YgdGhlIGZv cm0gZW5naW5lOmlkLiBlLmcuCi0rCQlwa2NzMTE6MTIzNDUKLSsJICAgdGhlbiB3ZSB0cnkgdG8g bG9hZCBhbmQgdXNlIHRoaXMgZW5naW5lLgotKwkgICBJZiB0aGUgY2VydGlmaWNhdGUgZmlsZW5h bWUgc3RhcnRzIHdpdGggYSAvIG9yIC4gdGhlbiB3ZQotKwkgICBBTFdBWVMgYXNzdW1lIGl0IGlz IGEgZmlsZSBhbmQgbm90IGFuIGVuZ2luZS9wa2NzMTEgaWRlbnRpZmllcgotKwkgKi8KLSsJaWYg KCBpbmRleCggY2VydGZpbGUsICcvJyApID09IE5VTEwgJiYgaW5kZXgoIGNlcnRmaWxlLCAnLicp ID09IE5VTEwgKQotKwl7Ci0rCQljZXJ0X2lkZW50aWZpZXIgPSBpbmRleCggY2VydGZpbGUsICc6 JyApOwotKwotKwkJaWYgKGNlcnRfaWRlbnRpZmllcikKLSsJCXsKLSsJCQljZXJ0X2VuZ2luZV9u YW1lID0gY2VydGZpbGU7Ci0rCQkJKmNlcnRfaWRlbnRpZmllciA9ICdcMCc7Ci0rCQkJY2VydF9p ZGVudGlmaWVyKys7Ci0rCi0rCQkJZGJnbG9nKCAiRm91bmQgY2VydGlmaWNhdGUgZW5naW5lICcl cyciLCBjZXJ0X2VuZ2luZV9uYW1lICk7Ci0rCQkJZGJnbG9nKCAiRm91bmQgY2VydGlmaWNhdGUg aWRlbnRpZmllciAnJXMnIiwgY2VydF9pZGVudGlmaWVyICk7Ci0rCQl9Ci0rCX0KLSsKLSsJLyog aWYgdGhlIHByaXZhdGVrZXkgZmlsZW5hbWUgaXMgb2YgdGhlIGZvcm0gZW5naW5lOmlkLiBlLmcu Ci0rCQlwa2NzMTE6MTIzNDUKLSsJICAgdGhlbiB3ZSB0cnkgdG8gbG9hZCBhbmQgdXNlIHRoaXMg ZW5naW5lLgotKwkgICBJZiB0aGUgcHJpdmF0ZWtleSBmaWxlbmFtZSBzdGFydHMgd2l0aCBhIC8g b3IgLiB0aGVuIHdlCi0rCSAgIEFMV0FZUyBhc3N1bWUgaXQgaXMgYSBmaWxlIGFuZCBub3QgYW4g ZW5naW5lL3BrY3MxMSBpZGVudGlmaWVyCi0rCSAqLwotKwlpZiAoIGluZGV4KCBwcml2a2V5Zmls ZSwgJy8nICkgPT0gTlVMTCAmJiBpbmRleCggcHJpdmtleWZpbGUsICcuJykgPT0gTlVMTCApCi0r CXsKLSsJCXBrZXlfaWRlbnRpZmllciA9IGluZGV4KCBwcml2a2V5ZmlsZSwgJzonICk7Ci0rCi0r CQlpZiAocGtleV9pZGVudGlmaWVyKQotKwkJewotKwkJCXBrZXlfZW5naW5lX25hbWUgPSBwcml2 a2V5ZmlsZTsKLSsJCQkqcGtleV9pZGVudGlmaWVyID0gJ1wwJzsKLSsJCQlwa2V5X2lkZW50aWZp ZXIrKzsKLSsKLSsJCQlkYmdsb2coICJGb3VuZCBwcml2YXRla2V5IGVuZ2luZSAnJXMnIiwgcGtl eV9lbmdpbmVfbmFtZSApOwotKwkJCWRiZ2xvZyggIkZvdW5kIHByaXZhdGVrZXkgaWRlbnRpZmll ciAnJXMnIiwgcGtleV9pZGVudGlmaWVyICk7Ci0rCQl9Ci0rCX0KLSsKLSsJaWYgKGNlcnRfaWRl bnRpZmllciAmJiBwa2V5X2lkZW50aWZpZXIpCi0rCXsKLSsJCWlmIChzdHJsZW4oIGNlcnRfaWRl bnRpZmllciApID09IDApCi0rCQl7Ci0rCQkJaWYgKHN0cmxlbiggcGtleV9pZGVudGlmaWVyICkg PT0gMCkKLSsJCQkJZXJyb3IoICJFQVAtVExTOiBib3RoIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgcHJp dmF0ZWtleSBpZGVudGlmaWVycyBhcmUgbWlzc2luZyEiICk7Ci0rCQkJZWxzZQotKwkJCXsKLSsJ CQkJZGJnbG9nKCAiU3Vic3RpdHV0aW5nIHByaXZhdGVrZXkgaWRlbnRpZmllciBmb3IgY2VydGlm aWNhdGUgaWRlbnRpZmllciIgKTsKLSsJCQkJY2VydF9pZGVudGlmaWVyID0gcGtleV9pZGVudGlm aWVyOwotKwkJCX0KLSsJCX0KLSsJCWVsc2UKLSsJCXsKLSsJCQlpZiAoc3RybGVuKCBwa2V5X2lk ZW50aWZpZXIgKSA9PSAwKQotKwkJCXsKLSsJCQkJZGJnbG9nKCAiU3Vic3RpdHV0aW5nIGNlcnRp ZmljYXRlIGlkZW50aWZpZXIgZm9yIHByaXZhdGVrZXkgaWRlbnRpZmllciIgKTsKLSsJCQkJcGtl eV9pZGVudGlmaWVyID0gY2VydF9pZGVudGlmaWVyOwotKwkJCX0KLSsJCX0KLSsKLSsJfQotKwot KwkvKiBsb2FkIHRoZSBvcGVuc3NsIGNvbmZpZyBmaWxlIG9ubHkgb25jZSAqLwotKwlpZiAoIXNz bF9jb25maWcpCi0rCXsKLSsJCWlmIChjZXJ0X2VuZ2luZV9uYW1lIHx8IHBrZXlfZW5naW5lX25h bWUpCi0rCQkJc3NsX2NvbmZpZyA9IGVhcHRsc19zc2xfbG9hZF9jb25maWcoKTsKLSsKLSsJCWlm IChzc2xfY29uZmlnICYmIGNlcnRfZW5naW5lX25hbWUpCi0rCQkJY2VydF9lbmdpbmUgPSBlYXB0 bHNfc3NsX2xvYWRfZW5naW5lKCBjZXJ0X2VuZ2luZV9uYW1lICk7Ci0rCi0rCQlpZiAoc3NsX2Nv bmZpZyAmJiBwa2V5X2VuZ2luZV9uYW1lKQotKwkJewotKwkJCS8qIGRvbid0IGxvYWQgdGhlIHNh bWUgZW5naW5lIHR3aWNlICovCi0rCQkJaWYgKCBjZXJ0X2VuZ2luZSAmJiBzdHJjbXAoIGNlcnRf ZW5naW5lX25hbWUsIHBrZXlfZW5naW5lX25hbWUpID09IDAgKQotKwkJCQlwa2V5X2VuZ2luZSA9 IGNlcnRfZW5naW5lOwotKwkJCWVsc2UKLSsJCQkJcGtleV9lbmdpbmUgPSBlYXB0bHNfc3NsX2xv YWRfZW5naW5lKCBwa2V5X2VuZ2luZV9uYW1lICk7Ci0rCQl9Ci0rCX0KLSsKLSsJU1NMX0NUWF9z ZXRfZGVmYXVsdF9wYXNzd2RfY2IgKGN0eCwgcGFzc3dvcmRfY2FsbGJhY2spOwotKwotKwlpZiAo IVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eCwgY2FjZXJ0ZmlsZSwgTlVMTCkpCi0r CXsKLSsJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgbG9hZCBvciB2ZXJpZnkgQ0EgZmlsZSAlcyIs IGNhY2VydGZpbGUpOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0rCWlmIChpbml0X3NlcnZlcikK LSsJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0KGN0eCwgU1NMX2xvYWRfY2xpZW50X0NBX2Zp bGUoY2FjZXJ0ZmlsZSkpOwotKwotKwlpZiAoY2VydF9lbmdpbmUpCi0rCXsKLSsJCXN0cnVjdAot KwkJewotKwkJCWNvbnN0IGNoYXIgKnNfc2xvdF9jZXJ0X2lkOwotKwkJCVg1MDkgKmNlcnQ7Ci0r CQl9IGNlcnRfaW5mbzsKLSsKLSsJCWNlcnRfaW5mby5zX3Nsb3RfY2VydF9pZCA9IGNlcnRfaWRl bnRpZmllcjsKLSsJCWNlcnRfaW5mby5jZXJ0ID0gTlVMTDsKLSsKLSsJCWlmICghRU5HSU5FX2N0 cmxfY21kKCBjZXJ0X2VuZ2luZSwgIkxPQURfQ0VSVF9DVFJMIiwgMCwgJmNlcnRfaW5mbywgTlVM TCwgMCApICkKLSsJCXsKLSsJCQllcnJvciggIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgY2VydGlm aWNhdGUgd2l0aCBpZCAnJXMnIGZyb20gZW5naW5lIiwgY2VydF9pZGVudGlmaWVyICk7Ci0rCQkJ Z290byBmYWlsOwotKwkJfQotKwotKwkJaWYgKGNlcnRfaW5mby5jZXJ0KQotKwkJewotKwkJICAg IGRiZ2xvZyggIkdvdCB0aGUgY2VydGlmaWNhdGUsIGFkZGluZyBpdCB0byBTU0wgY29udGV4dCIg KTsKLSsJCQlkYmdsb2coICJzdWJqZWN0ID0gJXMiLCBYNTA5X05BTUVfb25lbGluZSggWDUwOV9n ZXRfc3ViamVjdF9uYW1lKCBjZXJ0X2luZm8uY2VydCApLCBOVUxMLCAwICkgKTsKLSsJCQlpZiAo U1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4LCBjZXJ0X2luZm8uY2VydCkgPD0gMCkKLSsJCQl7 Ci0rCQkJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgdXNlIFBLQ1MxMSBjZXJ0aWZpY2F0ZSAlcyIs IGNlcnRfaWRlbnRpZmllcik7Ci0rCQkJCWdvdG8gZmFpbDsKLSsJCQl9Ci0rCQl9Ci0rCQllbHNl Ci0rCQl7Ci0rCQkJd2FybigiRUFQLVRMUzogQ2Fubm90IGxvYWQgUEtDUzExIGtleSAlcyIsIGNl cnRfaWRlbnRpZmllcik7Ci0rCQkJbG9nX3NzbF9lcnJvcnMoKTsKLSsJCX0KLSsJfQotKwllbHNl Ci0rCXsKLSsJCWlmICghU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShjdHgsIGNl cnRmaWxlKSkKLSsJCXsKLSsJCQllcnJvciggIkVBUC1UTFM6IENhbm5vdCB1c2UgcHVibGljIGNl cnRpZmljYXRlICVzIiwgY2VydGZpbGUgKTsKLSsJCQlnb3RvIGZhaWw7Ci0rCQl9Ci0rCX0KLSsK LSsKLSsJLyoKLSsJICogIENoZWNrIHRoZSBCZWZvcmUgYW5kIEFmdGVyIGRhdGVzIG9mIHRoZSBj ZXJ0aWZpY2F0ZQotKwkgKi8KLSsJc3NsID0gU1NMX25ldyhjdHgpOwotKwl0bXAgPSBTU0xfZ2V0 X2NlcnRpZmljYXRlKHNzbCk7Ci0rCi0rCXJldCA9IFg1MDlfY21wX3RpbWUoWDUwOV9nZXRfbm90 QmVmb3JlKHRtcCksIE5VTEwpOwotKwlpZiAocmV0ID09IDApCi0rCXsKLSsJCXdhcm4oICJFQVAt VExTOiBGYWlsZWQgdG8gcmVhZCBjZXJ0aWZpY2F0ZSBub3RCZWZvcmUgZmllbGQuIik7Ci0rCX0K LSsJaWYgKHJldCA+IDApCi0rCXsKLSsJCXdhcm4oICJFQVAtVExTOiBZb3VyIGNlcnRpZmljYXRl IGlzIG5vdCB5ZXQgdmFsaWQhIik7Ci0rCX0KLSsKLSsJcmV0ID0gWDUwOV9jbXBfdGltZShYNTA5 X2dldF9ub3RBZnRlcih0bXApLCBOVUxMKTsKLSsJaWYgKHJldCA9PSAwKQotKwl7Ci0rCQl3YXJu KCAiRUFQLVRMUzogRmFpbGVkIHRvIHJlYWQgY2VydGlmaWNhdGUgbm90QWZ0ZXIgZmllbGQuIik7 Ci0rCX0KLSsJaWYgKHJldCA8IDApCi0rCXsKLSsJCXdhcm4oICJFQVAtVExTOiBZb3VyIGNlcnRp ZmljYXRlIGhhcyBleHBpcmVkISIpOwotKwl9Ci0rCVNTTF9mcmVlKHNzbCk7Ci0rCi0rCWlmIChw a2V5X2VuZ2luZSkKLSsJewotKwkJRVZQX1BLRVkgICAqcGtleSA9IE5VTEw7Ci0rCQlQV19DQl9E QVRBICBjYl9kYXRhOwotKwotKwkJY2JfZGF0YS5wYXNzd29yZCA9IHBhc3N3ZDsKLSsJCWNiX2Rh dGEucHJvbXB0X2luZm8gPSBwa2V5X2lkZW50aWZpZXI7Ci0rCi0rCQlkYmdsb2coICJMb2FkaW5n IHByaXZhdGUga2V5ICclcycgZnJvbSBlbmdpbmUiLCBwa2V5X2lkZW50aWZpZXIgKTsKLSsJCXBr ZXkgPSBFTkdJTkVfbG9hZF9wcml2YXRlX2tleShwa2V5X2VuZ2luZSwgcGtleV9pZGVudGlmaWVy LCBOVUxMLCAmY2JfZGF0YSk7Ci0rCQlpZiAocGtleSkKLSsJCXsKLSsJCSAgICBkYmdsb2coICJH b3QgdGhlIHByaXZhdGUga2V5LCBhZGRpbmcgaXQgdG8gU1NMIGNvbnRleHQiICk7Ci0rCQkJaWYg KFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LCBwa2V5KSA8PSAwKQotKwkJCXsKLSsJCQkJZXJy b3IoIkVBUC1UTFM6IENhbm5vdCB1c2UgUEtDUzExIGtleSAlcyIsIHBrZXlfaWRlbnRpZmllcik7 Ci0rCQkJCWdvdG8gZmFpbDsKLSsJCQl9Ci0rCQl9Ci0rCQllbHNlCi0rCQl7Ci0rCQkJd2Fybigi RUFQLVRMUzogQ2Fubm90IGxvYWQgUEtDUzExIGtleSAlcyIsIHBrZXlfaWRlbnRpZmllcik7Ci0r CQkJbG9nX3NzbF9lcnJvcnMoKTsKLSsJCX0KLSsJfQotKwllbHNlCi0rCXsKLSsJCWlmICghU1NM X0NUWF91c2VfUHJpdmF0ZUtleV9maWxlKGN0eCwgcHJpdmtleWZpbGUsIFNTTF9GSUxFVFlQRV9Q RU0pKQotKwkJewotKwkJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgdXNlIHByaXZhdGUga2V5ICVz IiwgcHJpdmtleWZpbGUpOwotKwkJCWdvdG8gZmFpbDsKLSsJCX0KLSsJfQotKwotKwlpZiAoU1NM X0NUWF9jaGVja19wcml2YXRlX2tleShjdHgpICE9IDEpIHsKLSsJCWVycm9yKCJFQVAtVExTOiBQ cml2YXRlIGtleSAlcyBmYWlscyBzZWN1cml0eSBjaGVjayIsIHByaXZrZXlmaWxlKTsKLSsJCWdv dG8gZmFpbDsKLSsJfQotKwotKyAgICAvKiBFeHBsaWNpdGx5IHNldCB0aGUgTk9fVElDS0VUUyBm bGFnIHRvIHN1cHBvcnQgV2luNy9XaW44IGNsaWVudHMgKi8KLSsJU1NMX0NUWF9zZXRfb3B0aW9u cyhjdHgsIFNTTF9PUF9OT19TU0x2MiB8IFNTTF9PUF9OT19TU0x2MwotKyNpZmRlZiBTU0xfT1Bf Tk9fVElDS0VUCi0rCXwgU1NMX09QX05PX1RJQ0tFVAotKyNlbmRpZgotKwkpOwotKwotKwlTU0xf Q1RYX3NldF92ZXJpZnlfZGVwdGgoY3R4LCA1KTsKLSsJU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwK LSsJCQkgICBTU0xfVkVSSUZZX1BFRVIgfAotKwkJCSAgIFNTTF9WRVJJRllfRkFJTF9JRl9OT19Q RUVSX0NFUlQsCi0rCQkJICAgJnNzbF92ZXJpZnlfY2FsbGJhY2spOwotKwotKwlpZiAoY3JsX2Rp cikgewotKwkJaWYgKCEoY2VydHN0b3JlID0gU1NMX0NUWF9nZXRfY2VydF9zdG9yZShjdHgpKSkg ewotKwkJCWVycm9yKCJFQVAtVExTOiBGYWlsZWQgdG8gZ2V0IGNlcnRpZmljYXRlIHN0b3JlIik7 Ci0rCQkJZ290byBmYWlsOwotKwkJfQotKwotKwkJaWYgKCEobG9va3VwID0KLSsJCSAgICAgWDUw OV9TVE9SRV9hZGRfbG9va3VwKGNlcnRzdG9yZSwgWDUwOV9MT09LVVBfaGFzaF9kaXIoKSkpKSB7 Ci0rCQkJZXJyb3IoIkVBUC1UTFM6IFN0b3JlIGxvb2t1cCBmb3IgQ1JMIGZhaWxlZCIpOwotKwot KwkJCWdvdG8gZmFpbDsKLSsJCX0KLSsKLSsJCVg1MDlfTE9PS1VQX2FkZF9kaXIobG9va3VwLCBj cmxfZGlyLCBYNTA5X0ZJTEVUWVBFX1BFTSk7Ci0rCQlYNTA5X1NUT1JFX3NldF9mbGFncyhjZXJ0 c3RvcmUsIFg1MDlfVl9GTEFHX0NSTF9DSEVDSyk7Ci0rCX0KLSsKLSsJaWYgKGNybF9maWxlKSB7 Ci0rCSAgICBGSUxFICAgICAqZnAgID0gTlVMTDsKLSsJICAgIFg1MDlfQ1JMICpjcmwgPSBOVUxM OwotKwotKwkgICAgZnAgPSBmb3BlbihjcmxfZmlsZSwgInIiKTsKLSsJICAgIGlmICghZnApIHsK LSsJICAgICAgICBlcnJvcigiRUFQLVRMUzogQ2Fubm90IG9wZW4gQ1JMIGZpbGUgJyVzJyIsIGNy bF9maWxlKTsKLSsJICAgICAgICBnb3RvIGZhaWw7Ci0rCSAgICB9Ci0rCi0rCSAgICBjcmwgPSBQ RU1fcmVhZF9YNTA5X0NSTChmcCwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rCSAgICBpZiAoIWNybCkg ewotKwkgICAgICAgIGVycm9yKCJFQVAtVExTOiBDYW5ub3QgcmVhZCBDUkwgZmlsZSAnJXMnIiwg Y3JsX2ZpbGUpOwotKwkgICAgICAgIGdvdG8gZmFpbDsKLSsJICAgIH0KLSsKLSsJCWlmICghKGNl cnRzdG9yZSA9IFNTTF9DVFhfZ2V0X2NlcnRfc3RvcmUoY3R4KSkpIHsKLSsJCQllcnJvcigiRUFQ LVRMUzogRmFpbGVkIHRvIGdldCBjZXJ0aWZpY2F0ZSBzdG9yZSIpOwotKwkJCWdvdG8gZmFpbDsK LSsJCX0KLSsJICAgIGlmICghWDUwOV9TVE9SRV9hZGRfY3JsKGNlcnRzdG9yZSwgY3JsKSkgewot KwkgICAgICAgIGVycm9yKCJFQVAtVExTOiBDYW5ub3QgYWRkIENSTCB0byBjZXJ0aWZpY2F0ZSBz dG9yZSIpOwotKwkgICAgICAgIGdvdG8gZmFpbDsKLSsJICAgIH0KLSsJCVg1MDlfU1RPUkVfc2V0 X2ZsYWdzKGNlcnRzdG9yZSwgWDUwOV9WX0ZMQUdfQ1JMX0NIRUNLKTsKLSsKLSsJfQotKwotKwkv KgotKwkgKiBJZiBhIHBlZXIgY2VydGlmaWNhdGUgZmlsZSB3YXMgc3BlY2lmaWVkLCBpdCBtdXN0 IGJlIHZhbGlkLCBlbHNlIGZhaWwKLSsJICovCi0rCWlmIChwZWVyX2NlcnRmaWxlWzBdKSB7Ci0r CQlpZiAoISh0bXAgPSBnZXRfWDUwOV9mcm9tX2ZpbGUocGVlcl9jZXJ0ZmlsZSkpKSB7Ci0rCQkJ ZXJyb3IoIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgY2xpZW50IGNlcnRpZmljYXRlIGZyb20gZmls ZSAlcyIsCi0rCQkJICAgICBwZWVyX2NlcnRmaWxlKTsKLSsJCQlnb3RvIGZhaWw7Ci0rCQl9Ci0r CQlYNTA5X2ZyZWUodG1wKTsKLSsJfQotKwotKwlyZXR1cm4gY3R4OwotKwotK2ZhaWw6Ci0rCWxv Z19zc2xfZXJyb3JzKCk7Ci0rCVNTTF9DVFhfZnJlZShjdHgpOwotKwlyZXR1cm4gTlVMTDsKLSt9 Ci0rCi0rLyoKLSsgKiBEZXRlcm1pbmUgdGhlIG1heGltdW0gcGFja2V0IHNpemUgYnkgbG9va2lu ZyBhdCB0aGUgTENQIGhhbmRzaGFrZQotKyAqLwotKwotK2ludCBlYXB0bHNfZ2V0X210dShpbnQg dW5pdCkKLSt7Ci0rCWludCBtdHUsIG1ydTsKLSsKLSsJbGNwX29wdGlvbnMgKndvID0gJmxjcF93 YW50b3B0aW9uc1t1bml0XTsKLSsJbGNwX29wdGlvbnMgKmdvID0gJmxjcF9nb3RvcHRpb25zW3Vu aXRdOwotKwlsY3Bfb3B0aW9ucyAqaG8gPSAmbGNwX2hpc29wdGlvbnNbdW5pdF07Ci0rCWxjcF9v cHRpb25zICphbyA9ICZsY3BfYWxsb3dvcHRpb25zW3VuaXRdOwotKwotKwltdHUgPSBoby0+bmVn X21ydT8gaG8tPm1ydTogUFBQX01SVTsKLSsJbXJ1ID0gZ28tPm5lZ19tcnU/IE1BWCh3by0+bXJ1 LCBnby0+bXJ1KTogUFBQX01SVTsKLSsJbXR1ID0gTUlOKE1JTihtdHUsIG1ydSksIGFvLT5tcnUp LSBQUFBfSERSTEVOIC0gMTA7Ci0rCi0rCWRiZ2xvZygiTVRVID0gJWQiLCBtdHUpOwotKwlyZXR1 cm4gbXR1OwotK30KLSsKLSsKLSsvKgotKyAqIEluaXQgdGhlIHNzbCBoYW5kc2hha2UgKHNlcnZl ciBtb2RlKQotKyAqLwotK2ludCBlYXB0bHNfaW5pdF9zc2xfc2VydmVyKGVhcF9zdGF0ZSAqIGVz cCkKLSt7Ci0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwotKwljaGFyIHNlcnZjZXJ0Zmls ZVtNQVhXT1JETEVOXTsKLSsJY2hhciBjbGljZXJ0ZmlsZVtNQVhXT1JETEVOXTsKLSsJY2hhciBj YWNlcnRmaWxlW01BWFdPUkRMRU5dOwotKwljaGFyIHBrZmlsZVtNQVhXT1JETEVOXTsKLSsJLyoK LSsJICogQWxsb2NhdGUgbmV3IGVhcHRscyBzZXNzaW9uCi0rCSAqLwotKwllc3AtPmVzX3NlcnZl ci5lYV9zZXNzaW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24pKTsKLSsJ aWYgKCFlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uKQotKwkJZmF0YWwoIkFsbG9jYXRpb24gZXJy b3IiKTsKLSsJZXRzID0gZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbjsKLSsKLSsJaWYgKCFlc3At PmVzX3NlcnZlci5lYV9wZWVyKSB7Ci0rCQllcnJvcigiRUFQLVRMUzogRXJyb3I6IGNsaWVudCBu YW1lIG5vdCBzZXQgKEJVRykiKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0rCXN0cm5jcHkoZXRz LT5wZWVyLCBlc3AtPmVzX3NlcnZlci5lYV9wZWVyLCBNQVhXT1JETEVOKTsKLSsKLSsJZGJnbG9n KCAiZ2V0dGluZyBlYXB0bHMgc2VjcmV0IiApOwotKwlpZiAoIWdldF9lYXB0bHNfc2VjcmV0KGVz cC0+ZXNfdW5pdCwgZXNwLT5lc19zZXJ2ZXIuZWFfcGVlciwKLSsJCQkgICAgICAgZXNwLT5lc19z ZXJ2ZXIuZWFfbmFtZSwgY2xpY2VydGZpbGUsCi0rCQkJICAgICAgIHNlcnZjZXJ0ZmlsZSwgY2Fj ZXJ0ZmlsZSwgcGtmaWxlLCAxKSkgewotKwkJZXJyb3IoICJFQVAtVExTOiBDYW5ub3QgZ2V0IHNl Y3JldC9wYXNzd29yZCBmb3IgY2xpZW50IFwiJXNcIiwgc2VydmVyIFwiJXNcIiIsCi0rCQkJCWVz cC0+ZXNfc2VydmVyLmVhX3BlZXIsIGVzcC0+ZXNfc2VydmVyLmVhX25hbWUgKTsKLSsJCXJldHVy biAwOwotKwl9Ci0rCi0rCWV0cy0+bXR1ID0gZWFwdGxzX2dldF9tdHUoZXNwLT5lc191bml0KTsK LSsKLSsJZXRzLT5jdHggPSBlYXB0bHNfaW5pdF9zc2woMSwgY2FjZXJ0ZmlsZSwgc2VydmNlcnRm aWxlLCBjbGljZXJ0ZmlsZSwgcGtmaWxlKTsKLSsJaWYgKCFldHMtPmN0eCkKLSsJCWdvdG8gZmFp bDsKLSsKLSsJaWYgKCEoZXRzLT5zc2wgPSBTU0xfbmV3KGV0cy0+Y3R4KSkpCi0rCQlnb3RvIGZh aWw7Ci0rCi0rCS8qCi0rCSAqIFNldCBhdXRvLXJldHJ5IHRvIGF2b2lkIHRpbWVvdXRzIG9uIEJJ T19yZWFkCi0rCSAqLwotKwlTU0xfc2V0X21vZGUoZXRzLT5zc2wsIFNTTF9NT0RFX0FVVE9fUkVU UlkpOwotKwotKwkvKgotKwkgKiBJbml0aWFsaXplIHRoZSBCSU9zIHdlIHVzZSB0byByZWFkL3dy aXRlIHRvIHNzbCBlbmdpbmUKLSsJICovCi0rCWV0cy0+aW50b19zc2wgPSBCSU9fbmV3KEJJT19z X21lbSgpKTsKLSsJZXRzLT5mcm9tX3NzbCA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwotKwlTU0xf c2V0X2JpbyhldHMtPnNzbCwgZXRzLT5pbnRvX3NzbCwgZXRzLT5mcm9tX3NzbCk7Ci0rCi0rCVNT TF9zZXRfbXNnX2NhbGxiYWNrKGV0cy0+c3NsLCBzc2xfbXNnX2NhbGxiYWNrKTsKLSsJU1NMX3Nl dF9tc2dfY2FsbGJhY2tfYXJnKGV0cy0+c3NsLCBldHMpOwotKwotKwkvKgotKwkgKiBBdHRhY2gg dGhlIHNlc3Npb24gc3RydWN0IHRvIHRoZSBjb25uZWN0aW9uLCBzbyB3ZSBjYW4gbGF0ZXIKLSsJ ICogcmV0cmlldmUgaXQgd2hlbiBkb2luZyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24KLSsJICov Ci0rCVNTTF9zZXRfZXhfZGF0YShldHMtPnNzbCwgMCwgZXRzKTsKLSsKLSsJU1NMX3NldF9hY2Nl cHRfc3RhdGUoZXRzLT5zc2wpOwotKwotKwlldHMtPmRhdGEgPSBOVUxMOwotKwlldHMtPmRhdGFs ZW4gPSAwOwotKwlldHMtPmFsZXJ0X3NlbnQgPSAwOwotKwlldHMtPmFsZXJ0X3JlY3YgPSAwOwot KwotKwkvKgotKwkgKiBJZiB3ZSBzcGVjaWZpZWQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBmaWxl LCBzdG9yZSBpdCBpbiBldHMtPnBlZXJjZXJ0ZmlsZSwKLSsJICogc28gd2UgY2FuIGNoZWNrIGl0 IGxhdGVyIGluIHNzbF92ZXJpZnlfY2FsbGJhY2soKQotKwkgKi8KLSsJaWYgKGNsaWNlcnRmaWxl WzBdKQotKwkJc3RybmNweSgmZXRzLT5wZWVyY2VydGZpbGVbMF0sIGNsaWNlcnRmaWxlLCBNQVhX T1JETEVOKTsKLSsJZWxzZQotKwkJZXRzLT5wZWVyY2VydGZpbGVbMF0gPSAwOwotKwotKwlyZXR1 cm4gMTsKLSsKLStmYWlsOgotKwlTU0xfQ1RYX2ZyZWUoZXRzLT5jdHgpOwotKwlyZXR1cm4gMDsK LSt9Ci0rCi0rLyoKLSsgKiBJbml0IHRoZSBzc2wgaGFuZHNoYWtlIChjbGllbnQgbW9kZSkKLSsg Ki8KLStpbnQgZWFwdGxzX2luaXRfc3NsX2NsaWVudChlYXBfc3RhdGUgKiBlc3ApCi0rewotKwlz dHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0czsKLSsJY2hhciBzZXJ2Y2VydGZpbGVbTUFYV09SRExF Tl07Ci0rCWNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Ci0rCWNoYXIgY2FjZXJ0ZmlsZVtN QVhXT1JETEVOXTsKLSsJY2hhciBwa2ZpbGVbTUFYV09SRExFTl07Ci0rCi0rCS8qCi0rCSAqIEFs bG9jYXRlIG5ldyBlYXB0bHMgc2Vzc2lvbgotKwkgKi8KLSsJZXNwLT5lc19jbGllbnQuZWFfc2Vz c2lvbiA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGVhcHRsc19zZXNzaW9uKSk7Ci0rCWlmICghZXNw LT5lc19jbGllbnQuZWFfc2Vzc2lvbikKLSsJCWZhdGFsKCJBbGxvY2F0aW9uIGVycm9yIik7Ci0r CWV0cyA9IGVzcC0+ZXNfY2xpZW50LmVhX3Nlc3Npb247Ci0rCi0rCS8qCi0rCSAqIElmIGF2YWls YWJsZSwgY29weSBzZXJ2ZXIgbmFtZSBpbiBldHM7IGl0IHdpbGwgYmUgdXNlZCBpbiBjZXJ0Ci0r CSAqIHZlcmlmeQotKwkgKi8KLSsJaWYgKGVzcC0+ZXNfY2xpZW50LmVhX3BlZXIpCi0rCQlzdHJu Y3B5KGV0cy0+cGVlciwgZXNwLT5lc19jbGllbnQuZWFfcGVlciwgTUFYV09SRExFTik7Ci0rCWVs c2UKLSsJCWV0cy0+cGVlclswXSA9IDA7Ci0rCi0rCWV0cy0+bXR1ID0gZWFwdGxzX2dldF9tdHUo ZXNwLT5lc191bml0KTsKLSsKLSsJZGJnbG9nKCAiY2FsbGluZyBnZXRfZWFwdGxzX3NlY3JldCIg KTsKLSsJaWYgKCFnZXRfZWFwdGxzX3NlY3JldChlc3AtPmVzX3VuaXQsIGVzcC0+ZXNfY2xpZW50 LmVhX25hbWUsCi0rCQkJICAgICAgIGV0cy0+cGVlciwgY2xpY2VydGZpbGUsCi0rCQkJICAgICAg IHNlcnZjZXJ0ZmlsZSwgY2FjZXJ0ZmlsZSwgcGtmaWxlLCAwKSkgewotKwkJZXJyb3IoICJFQVAt VExTOiBDYW5ub3QgZ2V0IHNlY3JldC9wYXNzd29yZCBmb3IgY2xpZW50IFwiJXNcIiwgc2VydmVy IFwiJXNcIiIsCi0rCQkJCWVzcC0+ZXNfY2xpZW50LmVhX25hbWUsIGV0cy0+cGVlciApOwotKwkJ cmV0dXJuIDA7Ci0rCX0KLSsKLSsJZGJnbG9nKCAiY2FsbGluZyBlYXB0bHNfaW5pdF9zc2wiICk7 Ci0rCWV0cy0+Y3R4ID0gZWFwdGxzX2luaXRfc3NsKDAsIGNhY2VydGZpbGUsIGNsaWNlcnRmaWxl LCBzZXJ2Y2VydGZpbGUsIHBrZmlsZSk7Ci0rCWlmICghZXRzLT5jdHgpCi0rCQlnb3RvIGZhaWw7 Ci0rCi0rCWV0cy0+c3NsID0gU1NMX25ldyhldHMtPmN0eCk7Ci0rCi0rCWlmICghZXRzLT5zc2wp Ci0rCQlnb3RvIGZhaWw7Ci0rCi0rCS8qCi0rCSAqIEluaXRpYWxpemUgdGhlIEJJT3Mgd2UgdXNl IHRvIHJlYWQvd3JpdGUgdG8gc3NsIGVuZ2luZQotKwkgKi8KLSsJZGJnbG9nKCAiSW5pdGlhbGl6 aW5nIFNTTCBCSU9zIiApOwotKwlldHMtPmludG9fc3NsID0gQklPX25ldyhCSU9fc19tZW0oKSk7 Ci0rCWV0cy0+ZnJvbV9zc2wgPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKLSsJU1NMX3NldF9iaW8o ZXRzLT5zc2wsIGV0cy0+aW50b19zc2wsIGV0cy0+ZnJvbV9zc2wpOwotKwotKwlTU0xfc2V0X21z Z19jYWxsYmFjayhldHMtPnNzbCwgc3NsX21zZ19jYWxsYmFjayk7Ci0rCVNTTF9zZXRfbXNnX2Nh bGxiYWNrX2FyZyhldHMtPnNzbCwgZXRzKTsKLSsKLSsJLyoKLSsJICogQXR0YWNoIHRoZSBzZXNz aW9uIHN0cnVjdCB0byB0aGUgY29ubmVjdGlvbiwgc28gd2UgY2FuIGxhdGVyCi0rCSAqIHJldHJp ZXZlIGl0IHdoZW4gZG9pbmcgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uCi0rCSAqLwotKwlTU0xf c2V0X2V4X2RhdGEoZXRzLT5zc2wsIDAsIGV0cyk7Ci0rCi0rCVNTTF9zZXRfY29ubmVjdF9zdGF0 ZShldHMtPnNzbCk7Ci0rCi0rCWV0cy0+ZGF0YSA9IE5VTEw7Ci0rCWV0cy0+ZGF0YWxlbiA9IDA7 Ci0rCWV0cy0+YWxlcnRfc2VudCA9IDA7Ci0rCWV0cy0+YWxlcnRfcmVjdiA9IDA7Ci0rCi0rCS8q Ci0rCSAqIElmIHdlIHNwZWNpZmllZCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGZpbGUsIHN0b3Jl IGl0IGluCi0rCSAqIGV0cy0+cGVlcmNlcnRmaWxlLCBzbyB3ZSBjYW4gY2hlY2sgaXQgbGF0ZXIg aW4KLSsJICogc3NsX3ZlcmlmeV9jYWxsYmFjaygpCi0rCSAqLwotKwlpZiAoc2VydmNlcnRmaWxl WzBdKQotKwkJc3RybmNweShldHMtPnBlZXJjZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLCBNQVhXT1JE TEVOKTsKLSsJZWxzZQotKwkJZXRzLT5wZWVyY2VydGZpbGVbMF0gPSAwOwotKwotKwlyZXR1cm4g MTsKLSsKLStmYWlsOgotKwlkYmdsb2coICJlYXB0bHNfaW5pdF9zc2xfY2xpZW50OiBmYWlsIiAp OwotKwlTU0xfQ1RYX2ZyZWUoZXRzLT5jdHgpOwotKwlyZXR1cm4gMDsKLSsKLSt9Ci0rCi0rdm9p ZCBlYXB0bHNfZnJlZV9zZXNzaW9uKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzKQotK3sKLSsJ aWYgKGV0cy0+c3NsKQotKwkJU1NMX2ZyZWUoZXRzLT5zc2wpOwotKwotKwlpZiAoZXRzLT5jdHgp Ci0rCQlTU0xfQ1RYX2ZyZWUoZXRzLT5jdHgpOwotKwotKwlmcmVlKGV0cyk7Ci0rfQotKwotKy8q Ci0rICogSGFuZGxlIGEgcmVjZWl2ZWQgcGFja2V0LCByZWFzc2VtYmxpbmcgZnJhZ21lbnRlZCBt ZXNzYWdlcyBhbmQKLSsgKiBwYXNzaW5nIHRoZW0gdG8gdGhlIHNzbCBlbmdpbmUKLSsgKi8KLStp bnQgZWFwdGxzX3JlY2VpdmUoc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMsIHVfY2hhciAqIGlu cCwgaW50IGxlbikKLSt7Ci0rCXVfY2hhciBmbGFnczsKLSsJdV9pbnQgdGxzbGVuID0gMDsKLSsJ dV9jaGFyIGR1bW15WzY1NTM2XTsKLSsKLSsJaWYgKGxlbiA8IDEpIHsKLSsJCXdhcm4oIkVBUC1U TFM6IHJlY2VpdmVkIG5vIG9yIGludmFsaWQgZGF0YSIpOwotKwkJcmV0dXJuIDE7Ci0rCX0KLSsK LSsJR0VUQ0hBUihmbGFncywgaW5wKTsKLSsJbGVuLS07Ci0rCi0rCWlmIChmbGFncyAmIEVBUF9U TFNfRkxBR1NfTEkgJiYgbGVuID4gNCkgewotKwkJLyoKLSsJCSAqIExlbmdodEluY2x1ZGVkIGZs YWcgc2V0IC0+IHRoaXMgaXMgdGhlIGZpcnN0IHBhY2tldCBvZiBhIG1lc3NhZ2UKLSsJCSovCi0r Ci0rCQkvKgotKwkJICogdGhlIGZpcnN0IDQgb2N0ZXRzIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBF QVAtVExTIG1lc3NhZ2UKLSsJCSAqLwotKwkJR0VUTE9ORyh0bHNsZW4sIGlucCk7Ci0rCQlsZW4g LT0gNDsKLSsKLSsJCWlmICghZXRzLT5kYXRhKSB7Ci0rCi0rCQkJaWYgKHRsc2xlbiA+IEVBUF9U TFNfTUFYX0xFTikgewotKwkJCQllcnJvcigiRUFQLVRMUzogVExTIG1lc3NhZ2UgbGVuZ3RoID4g JWQsIHRydW5jYXRlZCIsIEVBUF9UTFNfTUFYX0xFTik7Ci0rCQkJCXRsc2xlbiA9IEVBUF9UTFNf TUFYX0xFTjsKLSsJCQl9Ci0rCi0rCQkJLyoKLSsJCQkgKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRo ZSB3aG9sZSBtZXNzYWdlCi0rCQkJKi8KLSsJCQlldHMtPmRhdGEgPSBtYWxsb2ModGxzbGVuKTsK LSsJCQlpZiAoIWV0cy0+ZGF0YSkKLSsJCQkJZmF0YWwoIkVBUC1UTFM6IGFsbG9jYXRpb24gZXJy b3JcbiIpOwotKwotKwkJCWV0cy0+ZGF0YWxlbiA9IDA7Ci0rCQkJZXRzLT50bHNsZW4gPSB0bHNs ZW47Ci0rCQl9Ci0rCQllbHNlCi0rCQkJd2FybigiRUFQLVRMUzogbm9uLWZpcnN0IExJIHBhY2tl dD8gdGhhdCdzIG9kZC4uLiIpOwotKwl9Ci0rCWVsc2UgaWYgKCFldHMtPmRhdGEpIHsKLSsJCS8q Ci0rCQkgKiBBIG5vbiBmcmFnbWVudGVkIG1lc3NhZ2Ugd2l0aG91dCBMSSBmbGFnCi0rCQkqLwot KwotKwkJZXRzLT5kYXRhID0gbWFsbG9jKGxlbik7Ci0rCQlpZiAoIWV0cy0+ZGF0YSkKLSsJCQlm YXRhbCgiRUFQLVRMUzogYWxsb2NhdGlvbiBlcnJvclxuIik7Ci0rCi0rCQlldHMtPmRhdGFsZW4g PSAwOwotKwkJZXRzLT50bHNsZW4gPSBsZW47Ci0rCX0KLSsKLSsJaWYgKGZsYWdzICYgRUFQX1RM U19GTEFHU19NRikKLSsJCWV0cy0+ZnJhZyA9IDE7Ci0rCWVsc2UKLSsJCWV0cy0+ZnJhZyA9IDA7 Ci0rCi0rCWlmIChsZW4gPCAwKSB7Ci0rCQl3YXJuKCJFQVAtVExTOiByZWNlaXZlZCBtYWxmb3Jt ZWQgZGF0YSIpOwotKwkJcmV0dXJuIDE7Ci0rCX0KLSsKLSsJaWYgKGxlbiArIGV0cy0+ZGF0YWxl biA+IGV0cy0+dGxzbGVuKSB7Ci0rCQl3YXJuKCJFQVAtVExTOiByZWNlaXZlZCBkYXRhID4gVExT IG1lc3NhZ2UgbGVuZ3RoIik7Ci0rCQlyZXR1cm4gMTsKLSsJfQotKwotKwlCQ09QWShpbnAsIGV0 cy0+ZGF0YSArIGV0cy0+ZGF0YWxlbiwgbGVuKTsKLSsJZXRzLT5kYXRhbGVuICs9IGxlbjsKLSsK LSsJaWYgKCFldHMtPmZyYWcpIHsKLSsKLSsJCS8qCi0rCQkgKiBJZiB3ZSBoYXZlIHRoZSB3aG9s ZSBtZXNzYWdlLCBwYXNzIGl0IHRvIHNzbAotKwkJICovCi0rCi0rCQlpZiAoZXRzLT5kYXRhbGVu ICE9IGV0cy0+dGxzbGVuKSB7Ci0rCQkJd2FybigiRUFQLVRMUzogcmVjZWl2ZWQgZGF0YSAhPSBU TFMgbWVzc2FnZSBsZW5ndGgiKTsKLSsJCQlyZXR1cm4gMTsKLSsJCX0KLSsKLSsJCWlmIChCSU9f d3JpdGUoZXRzLT5pbnRvX3NzbCwgZXRzLT5kYXRhLCBldHMtPmRhdGFsZW4pID09IC0xKQotKwkJ CWxvZ19zc2xfZXJyb3JzKCk7Ci0rCi0rCQlTU0xfcmVhZChldHMtPnNzbCwgZHVtbXksIDY1NTM2 KTsKLSsKLSsJCWZyZWUoZXRzLT5kYXRhKTsKLSsJCWV0cy0+ZGF0YSA9IE5VTEw7Ci0rCQlldHMt PmRhdGFsZW4gPSAwOwotKwl9Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLSsvKgotKyAqIFJldHVy biBhbiBlYXAtdGxzIHBhY2tldCBpbiBvdXRwLgotKyAqIEEgVExTIG1lc3NhZ2UgcmVhZCBmcm9t IHRoZSBzc2wgZW5naW5lIGlzIGJ1ZmZlcmVkIGluIGV0cy0+ZGF0YS4KLSsgKiBBdCBlYWNoIGNh bGwgd2UgY29udHJvbCBpZiB0aGVyZSBpcyBidWZmZXJlZCBkYXRhIGFuZCBzZW5kIGEKLSsgKiBw YWNrZXQgb2YgbXR1IGJ5dGVzLgotKyAqLwotK2ludCBlYXB0bHNfc2VuZChzdHJ1Y3QgZWFwdGxz X3Nlc3Npb24gKmV0cywgdV9jaGFyICoqIG91dHApCi0rewotKwlib29sIGZpcnN0ID0gMDsKLSsJ aW50IHNpemU7Ci0rCXVfY2hhciBmcm9tdGxzWzY1NTM2XTsKLSsJaW50IHJlczsKLSsJdV9jaGFy ICpzdGFydDsKLSsKLSsJc3RhcnQgPSAqb3V0cDsKLSsKLSsJaWYgKCFldHMtPmRhdGEpIHsKLSsK LSsJCWlmKCFldHMtPmFsZXJ0X3NlbnQpCi0rCQkJU1NMX3JlYWQoZXRzLT5zc2wsIGZyb210bHMs IDY1NTM2KTsKLSsKLSsJCS8qCi0rCQkgKiBSZWFkIGZyb20gc3NsCi0rCQkgKi8KLSsJCWlmICgo cmVzID0gQklPX3JlYWQoZXRzLT5mcm9tX3NzbCwgZnJvbXRscywgNjU1MzYpKSA9PSAtMSkKLSsJ CXsKLSsJCQl3YXJuKCJFQVAtVExTIHNlbmQ6IE5vIGRhdGEgZnJvbSBCSU9fcmVhZCIpOwotKwkJ CXJldHVybiAxOwotKwkJfQotKwotKwkJZXRzLT5kYXRhbGVuID0gcmVzOwotKwotKwkJZXRzLT5k YXRhID0gbWFsbG9jKGV0cy0+ZGF0YWxlbik7Ci0rCQlCQ09QWShmcm9tdGxzLCBldHMtPmRhdGEs IGV0cy0+ZGF0YWxlbik7Ci0rCi0rCQlldHMtPm9mZnNldCA9IDA7Ci0rCQlmaXJzdCA9IDE7Ci0r Ci0rCX0KLSsKLSsJc2l6ZSA9IGV0cy0+ZGF0YWxlbiAtIGV0cy0+b2Zmc2V0OwotKwotKwlpZiAo c2l6ZSA+IGV0cy0+bXR1KSB7Ci0rCQlzaXplID0gZXRzLT5tdHU7Ci0rCQlldHMtPmZyYWcgPSAx OwotKwl9IGVsc2UKLSsJCWV0cy0+ZnJhZyA9IDA7Ci0rCi0rCVBVVENIQVIoRUFQVF9UTFMsICpv dXRwKTsKLSsKLSsJLyoKLSsJICogU2V0IHJpZ2h0IGZsYWdzIGFuZCBsZW5ndGggaWYgbmVjZXNz YXJ5Ci0rCSAqLwotKwlpZiAoZXRzLT5mcmFnICYmIGZpcnN0KSB7Ci0rCQlQVVRDSEFSKEVBUF9U TFNfRkxBR1NfTEkgfCBFQVBfVExTX0ZMQUdTX01GLCAqb3V0cCk7Ci0rCQlQVVRMT05HKGV0cy0+ ZGF0YWxlbiwgKm91dHApOwotKwl9IGVsc2UgaWYgKGV0cy0+ZnJhZykgewotKwkJUFVUQ0hBUihF QVBfVExTX0ZMQUdTX01GLCAqb3V0cCk7Ci0rCX0gZWxzZQotKwkJUFVUQ0hBUigwLCAqb3V0cCk7 Ci0rCi0rCS8qCi0rCSAqIENvcHkgdGhlIGRhdGEgaW4gb3V0cAotKwkgKi8KLSsJQkNPUFkoZXRz LT5kYXRhICsgZXRzLT5vZmZzZXQsICpvdXRwLCBzaXplKTsKLSsJSU5DUFRSKHNpemUsICpvdXRw KTsKLSsKLSsJLyoKLSsJICogQ29weSB0aGUgcGFja2V0IGluIHJldHJhbnNtaXNzaW9uIGJ1ZmZl cgotKwkgKi8KLSsJQkNPUFkoc3RhcnQsICZldHMtPnJ0eFswXSwgKm91dHAgLSBzdGFydCk7Ci0r CWV0cy0+cnR4X2xlbiA9ICpvdXRwIC0gc3RhcnQ7Ci0rCi0rCWV0cy0+b2Zmc2V0ICs9IHNpemU7 Ci0rCi0rCWlmIChldHMtPm9mZnNldCA+PSBldHMtPmRhdGFsZW4pIHsKLSsKLSsJCS8qCi0rCQkg KiBUaGUgd2hvbGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50Ci0rCQkgKi8KLSsKLSsJCWZyZWUoZXRz LT5kYXRhKTsKLSsJCWV0cy0+ZGF0YSA9IE5VTEw7Ci0rCQlldHMtPmRhdGFsZW4gPSAwOwotKwkJ ZXRzLT5vZmZzZXQgPSAwOwotKwl9Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLSsvKgotKyAqIEdl dCB0aGUgc2VudCBwYWNrZXQgZnJvbSB0aGUgcmV0cmFuc21pc3Npb24gYnVmZmVyCi0rICovCi0r dm9pZCBlYXB0bHNfcmV0cmFuc21pdChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFy ICoqIG91dHApCi0rewotKwlCQ09QWShldHMtPnJ0eCwgKm91dHAsIGV0cy0+cnR4X2xlbik7Ci0r CUlOQ1BUUihldHMtPnJ0eF9sZW4sICpvdXRwKTsKLSt9Ci0rCi0rLyoKLSsgKiBWZXJpZnkgYSBj ZXJ0aWZpY2F0ZS4KLSsgKiBNb3N0IG9mIHRoZSB3b3JrIChzaWduYXR1cmVzIGFuZCBpc3N1ZXIg YXR0cmlidXRlcyBjaGVja2luZykKLSsgKiBpcyBkb25lIGJ5IHNzbDsgd2UgY2hlY2sgdGhlIENO IGluIHRoZSBwZWVyIGNlcnRpZmljYXRlCi0rICogYWdhaW5zdCB0aGUgcGVlciBuYW1lLgotKyAq LwotK2ludCBzc2xfdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKiBjdHgp Ci0rewotKwljaGFyIHN1YmplY3RbMjU2XTsKLSsJY2hhciBjbl9zdHJbMjU2XTsKLSsJWDUwOSAq cGVlcl9jZXJ0OwotKwlpbnQgZXJyLCBkZXB0aDsKLSsJU1NMICpzc2w7Ci0rCXN0cnVjdCBlYXB0 bHNfc2Vzc2lvbiAqZXRzOwotKwotKwlwZWVyX2NlcnQgPSBYNTA5X1NUT1JFX0NUWF9nZXRfY3Vy cmVudF9jZXJ0KGN0eCk7Ci0rCWVyciA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpOwot KwlkZXB0aCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpOwotKwotKwlkYmds b2coImNlcnRpZmljYXRlIHZlcmlmeSBkZXB0aDogJWQiLCBkZXB0aCk7Ci0rCi0rCWlmIChhdXRo X3JlcXVpcmVkICYmICFvaykgewotKwkJWDUwOV9OQU1FX29uZWxpbmUoWDUwOV9nZXRfc3ViamVj dF9uYW1lKHBlZXJfY2VydCksCi0rCQkJCSAgc3ViamVjdCwgMjU2KTsKLSsKLSsJCVg1MDlfTkFN RV9nZXRfdGV4dF9ieV9OSUQoWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBlZXJfY2VydCksCi0rCQkJ CQkgIE5JRF9jb21tb25OYW1lLCBjbl9zdHIsIDI1Nik7Ci0rCi0rCQlkYmdsb2coIkNlcnRpZmlj YXRlIHZlcmlmaWNhdGlvbiBlcnJvcjpcbiBkZXB0aDogJWQgQ046ICVzIgotKwkJICAgICAgICJc biBlcnI6ICVkICglcylcbiIsIGRlcHRoLCBjbl9zdHIsIGVyciwKLSsJCSAgICAgICBYNTA5X3Zl cmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhlcnIpKTsKLSsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0r CXNzbCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwKLSsJCQkJICAgICAgIFNTTF9n ZXRfZXhfZGF0YV9YNTA5X1NUT1JFX0NUWF9pZHgoKSk7Ci0rCi0rCWV0cyA9IChzdHJ1Y3QgZWFw dGxzX3Nlc3Npb24gKilTU0xfZ2V0X2V4X2RhdGEoc3NsLCAwKTsKLSsKLSsJaWYgKGV0cyA9PSBO VUxMKSB7Ci0rCQllcnJvcigiRXJyb3I6IFNTTF9nZXRfZXhfZGF0YSByZXR1cm5lZCBOVUxMIik7 Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlsb2dfc3NsX2Vycm9ycygpOwotKwotKwlpZiAoIWRl cHRoKSB7CQkvKiBUaGlzIGlzIHRoZSBwZWVyIGNlcnRpZmljYXRlICovCi0rCi0rCQlYNTA5X05B TUVfb25lbGluZShYNTA5X2dldF9zdWJqZWN0X25hbWUocGVlcl9jZXJ0KSwKLSsJCQkJICBzdWJq ZWN0LCAyNTYpOwotKwotKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRChYNTA5X2dldF9zdWJq ZWN0X25hbWUocGVlcl9jZXJ0KSwKLSsJCQkJCSAgTklEX2NvbW1vbk5hbWUsIGNuX3N0ciwgMjU2 KTsKLSsKLSsJCS8qCi0rCQkgKiBJZiBhY3RpbmcgYXMgY2xpZW50IGFuZCB0aGUgbmFtZSBvZiB0 aGUgc2VydmVyIHdhc24ndCBzcGVjaWZpZWQKLSsJCSAqIGV4cGxpY2l0ZWx5LCB3ZSBjYW4ndCB2 ZXJpZnkgdGhlIHNlcnZlciBhdXRoZW50aWNpdHkKLSsJCSAqLwotKwkJaWYgKCFldHMtPnBlZXJb MF0pIHsKLSsJCQl3YXJuKCJQZWVyIG5hbWUgbm90IHNwZWNpZmllZDogbm8gY2hlY2siKTsKLSsJ CQlyZXR1cm4gb2s7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogQ2hlY2sgdGhlIENOCi0rCQkgKi8K LSsJCWlmIChzdHJjbXAoY25fc3RyLCBldHMtPnBlZXIpKSB7Ci0rCQkJZXJyb3IKLSsJCQkgICAg KCJDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZXJyb3I6IENOICglcykgIT0gcGVlcl9uYW1lICgl cykiLAotKwkJCSAgICAgY25fc3RyLCBldHMtPnBlZXIpOwotKwkJCXJldHVybiAwOwotKwkJfQot KwotKwkJd2FybigiQ2VydGlmaWNhdGUgQ046ICVzICwgcGVlciBuYW1lICVzIiwgY25fc3RyLCBl dHMtPnBlZXIpOwotKwotKwkJLyoKLSsJCSAqIElmIGEgcGVlciBjZXJ0aWZpY2F0ZSBmaWxlIHdh cyBzcGVjaWZpZWQsIGhlcmUgd2UgY2hlY2sgaXQKLSsJCSAqLwotKwkJaWYgKGV0cy0+cGVlcmNl cnRmaWxlWzBdKSB7Ci0rCQkJaWYgKHNzbF9jbXBfY2VydHMoJmV0cy0+cGVlcmNlcnRmaWxlWzBd LCBwZWVyX2NlcnQpCi0rCQkJICAgICE9IDApIHsKLSsJCQkJZXJyb3IKLSsJCQkJICAgICgiUGVl ciBjZXJ0aWZpY2F0ZSBkb2Vzbid0IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZSIpOwotKwkJCQly ZXR1cm4gMDsKLSsJCQl9Ci0rCQl9Ci0rCX0KLSsKLSsJcmV0dXJuIG9rOwotK30KLSsKLSsvKgot KyAqIENvbXBhcmUgYSBjZXJ0aWZpY2F0ZSB3aXRoIHRoZSBvbmUgc3RvcmVkIGluIGEgZmlsZQot KyAqLwotK2ludCBzc2xfY21wX2NlcnRzKGNoYXIgKmZpbGVuYW1lLCBYNTA5ICogYSkKLSt7Ci0r CVg1MDkgKmI7Ci0rCWludCByZXQ7Ci0rCi0rCWlmICghKGIgPSBnZXRfWDUwOV9mcm9tX2ZpbGUo ZmlsZW5hbWUpKSkKLSsJCXJldHVybiAxOwotKwotKwlyZXQgPSBYNTA5X2NtcChhLCBiKTsKLSsJ WDUwOV9mcmVlKGIpOwotKwotKwlyZXR1cm4gcmV0OwotKwotK30KLSsKLStYNTA5ICpnZXRfWDUw OV9mcm9tX2ZpbGUoY2hhciAqZmlsZW5hbWUpCi0rewotKwlGSUxFICpmcDsKLSsJWDUwOSAqcmV0 OwotKwotKwlpZiAoIShmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSkKLSsJCXJldHVybiBOVUxM OwotKwotKwlyZXQgPSBQRU1fcmVhZF9YNTA5KGZwLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSsKLSsJ ZmNsb3NlKGZwKTsKLSsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyoKLSsgKiBFdmVyeSBzZW50 ICYgcmVjZWl2ZWQgbWVzc2FnZSB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGludm9rZWQsCi0r ICogc28gd2Uga25vdyB3aGVuIGFsZXJ0IG1lc3NhZ2VzIGhhdmUgYXJyaXZlZCBvciBhcmUgc2Vu dCBhbmQKLSsgKiB3ZSBjYW4gcHJpbnQgZGVidWcgaW5mb3JtYXRpb24gYWJvdXQgVExTIGhhbmRz aGFrZS4KLSsgKi8KLSt2b2lkCi0rc3NsX21zZ19jYWxsYmFjayhpbnQgd3JpdGVfcCwgaW50IHZl cnNpb24sIGludCBjb250ZW50X3R5cGUsCi0rCQkgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVu LCBTU0wgKiBzc2wsIHZvaWQgKmFyZykKLSt7Ci0rCWNoYXIgc3RyaW5nWzI1Nl07Ci0rCXN0cnVj dCBlYXB0bHNfc2Vzc2lvbiAqZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqKWFyZzsKLSsJ dW5zaWduZWQgY2hhciBjb2RlOwotKwljb25zdCB1bnNpZ25lZCBjaGFyKm1zZyA9IGJ1ZjsKLSsJ aW50IGh2ZXJzID0gbXNnWzFdIDw8IDggfCBtc2dbMl07Ci0rCi0rCWlmKHdyaXRlX3ApCi0rCQlz dHJjcHkoc3RyaW5nLCAiIC0+ICIpOwotKwllbHNlCi0rCQlzdHJjcHkoc3RyaW5nLCAiIDwtICIp OwotKwotKwlzd2l0Y2goY29udGVudF90eXBlKSB7Ci0rCi0rCWNhc2UgU1NMM19SVF9IRUFERVI6 Ci0rCQlzdHJjYXQoc3RyaW5nLCAiU1NML1RMUyBIZWFkZXI6ICIpOwotKwkJc3dpdGNoKGh2ZXJz KSB7Ci0rCQljYXNlIFNTTDNfVkVSU0lPTjoKLSsJCQkJc3RyY2F0KHN0cmluZywgIlNTTCAzLjAi KTsKLSsJCQkJYnJlYWs7Ci0rCQljYXNlIFRMUzFfVkVSU0lPTjoKLSsJCQkJc3RyY2F0KHN0cmlu ZywgIlRMUyAxLjAiKTsKLSsJCQkJYnJlYWs7Ci0rCQljYXNlIFRMUzFfMV9WRVJTSU9OOgotKwkJ CQlzdHJjYXQoc3RyaW5nLCAiVExTIDEuMSIpOwotKwkJCQlicmVhazsKLSsJCWNhc2UgVExTMV8y X1ZFUlNJT046Ci0rCQkJCXN0cmNhdChzdHJpbmcsICJUTFMgMS4yIik7Ci0rCQkJCWJyZWFrOwot KwkJZGVmYXVsdDoKLSsJCQlzdHJjYXQoc3RyaW5nLCAiVW5rbm93biB2ZXJzaW9uIik7Ci0rCQl9 Ci0rCQlicmVhazsKLSsKLSsJY2FzZSBTU0wzX1JUX0FMRVJUOgotKwkJc3RyY2F0KHN0cmluZywg IkFsZXJ0OiAiKTsKLSsJCWNvZGUgPSBtc2dbMV07Ci0rCi0rCQlpZiAod3JpdGVfcCkgewotKwkJ CWV0cy0+YWxlcnRfc2VudCA9IDE7Ci0rCQkJZXRzLT5hbGVydF9zZW50X2Rlc2MgPSBjb2RlOwot KwkJfSBlbHNlIHsKLSsJCQlldHMtPmFsZXJ0X3JlY3YgPSAxOwotKwkJCWV0cy0+YWxlcnRfcmVj dl9kZXNjID0gY29kZTsKLSsJCX0KLSsKLSsJCXN0cmNhdChzdHJpbmcsIFNTTF9hbGVydF9kZXNj X3N0cmluZ19sb25nKGNvZGUpKTsKLSsJCWJyZWFrOwotKwotKwljYXNlIFNTTDNfUlRfQ0hBTkdF X0NJUEhFUl9TUEVDOgotKwkJc3RyY2F0KHN0cmluZywgIkNoYW5nZUNpcGhlclNwZWMiKTsKLSsJ CWJyZWFrOwotKwotKwljYXNlIFNTTDNfUlRfSEFORFNIQUtFOgotKwotKwkJc3RyY2F0KHN0cmlu ZywgIkhhbmRzaGFrZTogIik7Ci0rCQljb2RlID0gbXNnWzBdOwotKwotKwkJc3dpdGNoKGNvZGUp IHsKLSsJCQljYXNlIFNTTDNfTVRfSEVMTE9fUkVRVUVTVDoKLSsJCQkJc3RyY2F0KHN0cmluZywi SGVsbG8gUmVxdWVzdCIpOwotKwkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfQ0xJRU5UX0hF TExPOgotKwkJCQlzdHJjYXQoc3RyaW5nLCJDbGllbnQgSGVsbG8iKTsKLSsJCQkJYnJlYWs7Ci0r CQkJY2FzZSBTU0wzX01UX1NFUlZFUl9IRUxMTzoKLSsJCQkJc3RyY2F0KHN0cmluZywiU2VydmVy IEhlbGxvIik7Ci0rCQkJCWJyZWFrOwotKyNpZmRlZiBTU0wzX01UX05FV1NFU1NJT05fVElDS0VU Ci0rCQkJY2FzZSBTU0wzX01UX05FV1NFU1NJT05fVElDS0VUOgotKwkJCQlzdHJjYXQoc3RyaW5n LCJOZXcgU2Vzc2lvbiBUaWNrZXQiKTsKLSsJCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkJY2FzZSBT U0wzX01UX0NFUlRJRklDQVRFOgotKwkJCQlzdHJjYXQoc3RyaW5nLCJDZXJ0aWZpY2F0ZSIpOwot KwkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfU0VSVkVSX0tFWV9FWENIQU5HRToKLSsJCQkJ c3RyY2F0KHN0cmluZywiU2VydmVyIEtleSBFeGNoYW5nZSIpOwotKwkJCQlicmVhazsKLSsJCQlj YXNlIFNTTDNfTVRfQ0VSVElGSUNBVEVfUkVRVUVTVDoKLSsJCQkJc3RyY2F0KHN0cmluZywiQ2Vy dGlmaWNhdGUgUmVxdWVzdCIpOwotKwkJCQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfU0VSVkVS X0RPTkU6Ci0rCQkJCXN0cmNhdChzdHJpbmcsIlNlcnZlciBIZWxsbyBEb25lIik7Ci0rCQkJCQkJ CQlicmVhazsKLSsJCQljYXNlIFNTTDNfTVRfQ0VSVElGSUNBVEVfVkVSSUZZOgotKwkJCQlzdHJj YXQoc3RyaW5nLCJDZXJ0aWZpY2F0ZSBWZXJpZnkiKTsKLSsJCQkJYnJlYWs7Ci0rCQkJY2FzZSBT U0wzX01UX0NMSUVOVF9LRVlfRVhDSEFOR0U6Ci0rCQkJCXN0cmNhdChzdHJpbmcsIkNsaWVudCBL ZXkgRXhjaGFuZ2UiKTsKLSsJCQkJYnJlYWs7Ci0rCQkJY2FzZSBTU0wzX01UX0ZJTklTSEVEOgot KwkJCQlzdHJjYXQoc3RyaW5nLCJGaW5pc2hlZDogIik7Ci0rCQkJCWh2ZXJzID0gU1NMX3ZlcnNp b24oc3NsKTsKLSsJCQkJc3dpdGNoKGh2ZXJzKSB7Ci0rCQkJCWNhc2UgU1NMM19WRVJTSU9OOgot KwkJCQkJCXN0cmNhdChzdHJpbmcsICJTU0wgMy4wIik7Ci0rCQkJCQkJYnJlYWs7Ci0rCQkJCWNh c2UgVExTMV9WRVJTSU9OOgotKwkJCQkJCXN0cmNhdChzdHJpbmcsICJUTFMgMS4wIik7Ci0rCQkJ CQkJYnJlYWs7Ci0rCQkJCWNhc2UgVExTMV8xX1ZFUlNJT046Ci0rCQkJCQkJc3RyY2F0KHN0cmlu ZywgIlRMUyAxLjEiKTsKLSsJCQkJCQlicmVhazsKLSsJCQkJY2FzZSBUTFMxXzJfVkVSU0lPTjoK LSsJCQkJCQlzdHJjYXQoc3RyaW5nLCAiVExTIDEuMiIpOwotKwkJCQkJCWJyZWFrOwotKwkJCQlk ZWZhdWx0OgotKwkJCQkJc3RyY2F0KHN0cmluZywgIlVua25vd24gdmVyc2lvbiIpOwotKwkJCQl9 Ci0rCQkJCWJyZWFrOwotKwkJCWRlZmF1bHQ6Ci0rCQkJCXNwcmludGYoIHN0cmluZywgIkhhbmRz aGFrZTogVW5rbm93biBTU0wzIGNvZGUgcmVjZWl2ZWQ6ICVkIiwgY29kZSApOwotKwkJfQotKwkJ YnJlYWs7Ci0rCi0rCWRlZmF1bHQ6Ci0rCQlzcHJpbnRmKCBzdHJpbmcsICJTU0wgbWVzc2FnZSBj b250YWlucyB1bmtub3duIGNvbnRlbnQgdHlwZTogJWQiLCBjb250ZW50X3R5cGUgKTsKLSsKLSsJ fQotKwotKwkvKiBBbGVydCBtZXNzYWdlcyBtdXN0IGFsd2F5cyBiZSBkaXNwbGF5ZWQgKi8KLSsJ aWYoY29udGVudF90eXBlID09IFNTTDNfUlRfQUxFUlQpCi0rCQllcnJvcigiJXMiLCBzdHJpbmcp OwotKwllbHNlCi0rCQlkYmdsb2coIiVzIiwgc3RyaW5nKTsKLSt9Ci0rCi1kaWZmIC0tZ2l0IGEv cHBwZC9lYXAtdGxzLmggYi9wcHBkL2VhcC10bHMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAwMDAwMC4uMmQ0NWEwYjgzYTBjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9wcHBk L2VhcC10bHMuaAotQEAgLTAsMCArMSwxMDcgQEAKLSsvKgotKyAqIGVhcC10bHMuaAotKyAqCi0r ICogQ29weXJpZ2h0IChjKSBCZW5pYW1pbm8gR2FsdmFuaSAyMDA1IEFsbCByaWdodHMgcmVzZXJ2 ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5 IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAq Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBUaGUg bmFtZShzKSBvZiB0aGUgYXV0aG9ycyBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIHVzZWQg dG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSsgKgot KyAqIFRIRSBBVVRIT1JTIE9GIFRISVMgU09GVFdBUkUgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMg V0lUSCBSRUdBUkQgVE8KLSsgKiBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKLSsgKiBBTkQgRklUTkVTUywgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSsgKiBTUEVDSUFMLCBJTkRJ UkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09F VkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIg SU4KLSsgKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElP VVMgQUNUSU9OLCBBUklTSU5HCi0rICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICoKLSsgKi8KLSsKLSsjaWZu ZGVmIF9fRUFQX1RMU19IX18KLSsjZGVmaW5lIF9fRUFQX1RMU19IX18KLSsKLSsjaW5jbHVkZSAi ZWFwLmgiCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv YmlvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvbWQ1Lmg+Ci0rCi0rI2RlZmluZSBFQVBfVExTX0ZM QUdTX0xJICAgICAgICAxMjgJLyogbGVuZ3RoIGluY2x1ZGVkIGZsYWcgKi8KLSsjZGVmaW5lIEVB UF9UTFNfRkxBR1NfTUYgICAgICAgIDY0CS8qIG1vcmUgZnJhZ21lbnRzIGZsYWcgKi8KLSsjZGVm aW5lIEVBUF9UTFNfRkxBR1NfU1RBUlQgICAgIDMyCS8qIHN0YXJ0IGZsYWcgKi8KLSsKLSsjZGVm aW5lIEVBUF9UTFNfTUFYX0xFTiAgICAgICAgIDY1NTM2CS8qIG1heCBlYXAgdGxzIHBhY2tldCBz aXplICovCi0rCi0rc3RydWN0IGVhcHRsc19zZXNzaW9uCi0rewotKwl1X2NoYXIgKmRhdGE7CQkv KiBidWZmZXJlZCBkYXRhICovCi0rCWludCBkYXRhbGVuOwkJLyogYnVmZmVyZWQgZGF0YSBsZW4g Ki8KLSsJaW50IG9mZnNldDsJCS8qIGZyb20gd2hlcmUgdG8gc2VuZCAqLwotKwlpbnQgdGxzbGVu OwkJLyogdG90YWwgbGVuZ3RoIG9mIHRscyBkYXRhICovCi0rCWJvb2wgZnJhZzsJCS8qIHBhY2tl dCBpcyBmcmFnbWVudGVkICovCi0rCVNTTF9DVFggKmN0eDsKLSsJU1NMICpzc2w7CQkvKiBzc2wg Y29ubmVjdGlvbiAqLwotKwlCSU8gKmZyb21fc3NsOwotKwlCSU8gKmludG9fc3NsOwotKwljaGFy IHBlZXJbTUFYV09SRExFTl07CS8qIHBlZXIgbmFtZSAqLwotKwljaGFyIHBlZXJjZXJ0ZmlsZVtN QVhXT1JETEVOXTsKLSsJYm9vbCBhbGVydF9zZW50OwotKwl1X2NoYXIgYWxlcnRfc2VudF9kZXNj OwotKwlib29sIGFsZXJ0X3JlY3Y7Ci0rCXVfY2hhciBhbGVydF9yZWN2X2Rlc2M7Ci0rCWNoYXIg cnR4WzY1NTM2XTsJLyogcmV0cmFuc21pc3Npb24gYnVmZmVyICovCi0rCWludCBydHhfbGVuOwot KwlpbnQgbXR1OwkJLyogdW5pdCBtdHUgKi8KLSt9OwotKwotK3R5cGVkZWYgc3RydWN0IHB3X2Ni X2RhdGEKLSt7Ci0rCWNvbnN0IHZvaWQgKnBhc3N3b3JkOwotKwljb25zdCBjaGFyICpwcm9tcHRf aW5mbzsKLSt9IFBXX0NCX0RBVEE7Ci0rCi0rCi0raW50IHNzbF92ZXJpZnlfY2FsbGJhY2soaW50 LCBYNTA5X1NUT1JFX0NUWCAqKTsKLSt2b2lkIHNzbF9tc2dfY2FsbGJhY2soaW50IHdyaXRlX3As IGludCB2ZXJzaW9uLCBpbnQgY3QsIGNvbnN0IHZvaWQgKmJ1ZiwKLSsJCSAgICAgIHNpemVfdCBs ZW4sIFNTTCAqIHNzbCwgdm9pZCAqYXJnKTsKLSsKLStYNTA5ICpnZXRfWDUwOV9mcm9tX2ZpbGUo Y2hhciAqZmlsZW5hbWUpOwotK2ludCBzc2xfY21wX2NlcnRzKGNoYXIgKmZpbGVuYW1lLCBYNTA5 ICogYSk7Ci0rCi0rU1NMX0NUWCAqZWFwdGxzX2luaXRfc3NsKGludCBpbml0X3NlcnZlciwgY2hh ciAqY2FjZXJ0ZmlsZSwKLSsgICAgICAgICAgICBjaGFyICpjZXJ0ZmlsZSwgY2hhciAqcGVlcl9j ZXJ0ZmlsZSwgY2hhciAqcHJpdmtleWZpbGUpOwotK2ludCBlYXB0bHNfaW5pdF9zc2xfc2VydmVy KGVhcF9zdGF0ZSAqIGVzcCk7Ci0raW50IGVhcHRsc19pbml0X3NzbF9jbGllbnQoZWFwX3N0YXRl ICogZXNwKTsKLSt2b2lkIGVhcHRsc19mcmVlX3Nlc3Npb24oc3RydWN0IGVhcHRsc19zZXNzaW9u ICpldHMpOwotKwotK2ludCBlYXB0bHNfcmVjZWl2ZShzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0 cywgdV9jaGFyICogaW5wLCBpbnQgbGVuKTsKLStpbnQgZWFwdGxzX3NlbmQoc3RydWN0IGVhcHRs c19zZXNzaW9uICpldHMsIHVfY2hhciAqKiBvdXRwKTsKLSt2b2lkIGVhcHRsc19yZXRyYW5zbWl0 KHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzLCB1X2NoYXIgKiogb3V0cCk7Ci0rCi0raW50IGdl dF9lYXB0bHNfc2VjcmV0KGludCB1bml0LCBjaGFyICpjbGllbnQsIGNoYXIgKnNlcnZlciwKLSsJ CSAgICAgIGNoYXIgKmNsaWNlcnRmaWxlLCBjaGFyICpzZXJ2Y2VydGZpbGUsIGNoYXIgKmNhY2Vy dGZpbGUsCi0rCQkgICAgICBjaGFyICpwa2ZpbGUsIGludCBhbV9zZXJ2ZXIpOwotKwotKyNpZmRl ZiBNUFBFCi0rI2luY2x1ZGUgIm1wcGUuaCIgICAvKiBNUFBFX01BWF9LRVlfTEVOICovCi0rZXh0 ZXJuIHVfY2hhciBtcHBlX3NlbmRfa2V5W01QUEVfTUFYX0tFWV9MRU5dOwotK2V4dGVybiB1X2No YXIgbXBwZV9yZWN2X2tleVtNUFBFX01BWF9LRVlfTEVOXTsKLStleHRlcm4gaW50IG1wcGVfa2V5 c19zZXQ7Ci0rCi0rdm9pZCBlYXB0bHNfZ2VuX21wcGVfa2V5cyhzdHJ1Y3QgZWFwdGxzX3Nlc3Np b24gKmV0cywgY29uc3QgY2hhciAqcHJmX2xhYmVsLCBpbnQgY2xpZW50KTsKLSsKLSsjZW5kaWYK LSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9wcHBkL2VhcC5jIGIvcHBwZC9lYXAuYwotaW5kZXgg NmVhNmMxZjhiZmY2Li4wMzI0MDdjM2RiYjIgMTAwNjQ0Ci0tLS0gYS9wcHBkL2VhcC5jCi0rKysg Yi9wcHBkL2VhcC5jCi1AQCAtNDMsNiArNDMsMTEgQEAKLSAgKiBCYXNlZCBvbiBkcmFmdC1pZXRm LXBwcGV4dC1lYXAtc3JwLTAzLnR4dC4KLSAgKi8KLSAKLSsvKgotKyAqIE1vZGlmaWNhdGlvbiBi eSBCZW5pYW1pbm8gR2FsdmFuaSwgTWFyIDIwMDUKLSsgKiBJbXBsZW1lbnRlZCBFQVAtVExTIGF1 dGhlbnRpY2F0aW9uCi0rICovCi0rCi0gI2RlZmluZSBSQ1NJRAkiJElkOiBlYXAuYyx2IDEuNCAy MDA0LzExLzA5IDIyOjM5OjI1IHBhdWx1cyBFeHAgJCIKLSAKLSAvKgotQEAgLTYyLDggKzY3LDEy IEBACi0gCi0gI2luY2x1ZGUgInBwcGQuaCIKLSAjaW5jbHVkZSAicGF0aG5hbWVzLmgiCi0tI2lu Y2x1ZGUgIm1kNS5oIgotICNpbmNsdWRlICJlYXAuaCIKLSsjaWZkZWYgVVNFX0VBUFRMUwotKyNp bmNsdWRlICJlYXAtdGxzLmgiCi0rI2Vsc2UKLSsjaW5jbHVkZSAibWQ1LmgiCi0rI2VuZGlmIC8q IFVTRV9FQVBUTFMgKi8KLSAKLSAjaWZkZWYgVVNFX1NSUAotICNpbmNsdWRlIDx0X3B3ZC5oPgot QEAgLTIwOSw2ICsyMTgsOSBAQCBpbnQgdW5pdDsKLSAJZXNwLT5lc19zZXJ2ZXIuZWFfaWQgPSAo dV9jaGFyKShkcmFuZDQ4KCkgKiAweDEwMCk7Ci0gCWVzcC0+ZXNfY2xpZW50LmVhX3RpbWVvdXQg PSBFQVBfREVGUkVRVElNRTsKLSAJZXNwLT5lc19jbGllbnQuZWFfbWF4cmVxdWVzdHMgPSBFQVBf REVGQUxMT1dSRVE7Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJZXNwLT5lc19jbGllbnQuZWFfdXNp bmdfZWFwdGxzID0gMDsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotIH0KLSAKLSAvKgotQEAg LTQzNiw4ICs0NDgsMTYgQEAgaW50IHN0YXR1czsKLSAJdV9jaGFyIHZhbHNbMl07Ci0gCXN0cnVj dCBiNjRzdGF0ZSBiczsKLSAjZW5kaWYgLyogVVNFX1NSUCAqLwotKyNpZmRlZiBVU0VfRUFQVExT Ci0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwotKwlpbnQgc2VjcmV0X2xlbjsKLSsJY2hh ciBzZWNyZXRbTUFYV09SRExFTl07Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAKLSAJZXNw LT5lc19zZXJ2ZXIuZWFfdGltZW91dCA9IGVzcC0+ZXNfc2F2ZWR0aW1lOwotKyNpZmRlZiBVU0Vf RUFQVExTCi0rCWVzcC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGUgPSBlc3AtPmVzX3NlcnZlci5l YV9zdGF0ZTsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotIAlzd2l0Y2ggKGVzcC0+ZXNfc2Vy dmVyLmVhX3N0YXRlKSB7Ci0gCWNhc2UgZWFwQmFkQXV0aDoKLSAJCXJldHVybjsKLUBAIC01NjIs OSArNTgyLDc5IEBAIGludCBzdGF0dXM7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0gI2VuZGlmIC8qIFVT RV9TUlAgKi8KLSsjaWZkZWYgVVNFX0VBUFRMUwotKyAgICAgICAgICAgICAgICBpZiAoIWdldF9z ZWNyZXQoZXNwLT5lc191bml0LCBlc3AtPmVzX3NlcnZlci5lYV9wZWVyLAotKyAgICAgICAgICAg ICAgICAgICAgZXNwLT5lc19zZXJ2ZXIuZWFfbmFtZSwgc2VjcmV0LCAmc2VjcmV0X2xlbiwgMSkp IHsKLSsKLSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1N0YXJ0OwotKwkJCWJy ZWFrOwotKwkJfQotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0rCi0gCQllc3AtPmVzX3NlcnZl ci5lYV9zdGF0ZSA9IGVhcE1ENUNoYWxsOwotIAkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBU TFMKLSsJY2FzZSBlYXBUbHNTdGFydDoKLSsJCS8qIEluaXRpYWxpemUgc3NsIHNlc3Npb24gKi8K LSsJCWlmKCFlYXB0bHNfaW5pdF9zc2xfc2VydmVyKGVzcCkpIHsKLSsJCQllc3AtPmVzX3NlcnZl ci5lYV9zdGF0ZSA9IGVhcEJhZEF1dGg7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCi0rCQllc3AtPmVz X3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1JlY3Y7Ci0rCQlicmVhazsKLSsKLSsJY2FzZSBlYXBU bHNSZWN2OgotKwkJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqKSBlc3AtPmVzX3NlcnZl ci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRzLT5hbGVydF9zZW50KSB7Ci0rCQkJZXNwLT5lc19z ZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNTZW5kQWxlcnQ7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCi0r CQlpZiAoc3RhdHVzKSB7Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBCYWRBdXRo OwotKwkJCWJyZWFrOwotKwkJfQotKwkJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqKSBl c3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRzLT5mcmFnKQotKwkJCWVzcC0+ ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzU2VuZEFjazsKLSsJCWVsc2UKLSsJCQllc3AtPmVz X3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1NlbmQ7Ci0rCQlicmVhazsKLSsKLSsJY2FzZSBlYXBU bHNTZW5kOgotKwkJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqKSBlc3AtPmVzX3NlcnZl ci5lYV9zZXNzaW9uOwotKwotKwkJaWYoZXRzLT5mcmFnKQotKwkJCWVzcC0+ZXNfc2VydmVyLmVh X3N0YXRlID0gZWFwVGxzUmVjdkFjazsKLSsJCWVsc2UKLSsJCQlpZihTU0xfaXNfaW5pdF9maW5p c2hlZChldHMtPnNzbCkpCi0rCQkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzUmVj dkNsaWVudDsKLSsJCQllbHNlCi0rCQkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxz UmVjdjsKLSsJCWJyZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmRBY2s6Ci0rCQkJZXNwLT5lc19z ZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNSZWN2OwotKwkJYnJlYWs7Ci0rCi0rCWNhc2UgZWFwVGxz UmVjdkFjazoKLSsgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewotKyAgICAgICAgICAgICAg ICAgICAgICAgIGVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwQmFkQXV0aDsKLSsgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgICAgfQotKwotKwkJZXNwLT5l c19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNTZW5kOwotKwkJYnJlYWs7Ci0rCi0rCWNhc2UgZWFw VGxzU2VuZEFsZXJ0OgotKwkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNSZWN2QWxl cnRBY2s7Ci0rCQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAljYXNlIGVh cFNSUDE6Ci0gI2lmZGVmIFVTRV9TUlAKLSAJCXRzID0gKHN0cnVjdCB0X3NlcnZlciAqKWVzcC0+ ZXNfc2VydmVyLmVhX3Nlc3Npb247Ci1AQCAtNzE4LDYgKzgwOCwzMCBAQCBlYXBfc3RhdGUgKmVz cDsKLSAJCUlOQ1BUUihlc3AtPmVzX3NlcnZlci5lYV9uYW1lbGVuLCBvdXRwKTsKLSAJCWJyZWFr OwotIAotKyNpZmRlZiBVU0VfRUFQVExTCi0rCWNhc2UgZWFwVGxzU3RhcnQ6Ci0rCQlQVVRDSEFS KEVBUFRfVExTLCBvdXRwKTsKLSsJCVBVVENIQVIoRUFQX1RMU19GTEFHU19TVEFSVCwgb3V0cCk7 Ci0rCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAwKTsKLSsJCWJyZWFrOwotKwotKwljYXNl IGVhcFRsc1NlbmQ6Ci0rCQllYXB0bHNfc2VuZChlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uLCAm b3V0cCk7Ci0rCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAwKTsKLSsJCWJyZWFrOwotKwot KwljYXNlIGVhcFRsc1NlbmRBY2s6Ci0rCQlQVVRDSEFSKEVBUFRfVExTLCBvdXRwKTsKLSsJCVBV VENIQVIoMCwgb3V0cCk7Ci0rCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAwKTsKLSsJCWJy ZWFrOwotKwotKwljYXNlIGVhcFRsc1NlbmRBbGVydDoKLSsJCWVhcHRsc19zZW5kKGVzcC0+ZXNf c2VydmVyLmVhX3Nlc3Npb24sICZvdXRwKTsKLSsJCWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3As IDApOwotKwkJYnJlYWs7Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSsKLSAjaWZkZWYgVVNF X1NSUAotIAljYXNlIGVhcFNSUDE6Ci0gCQlQVVRDSEFSKEVBUFRfU1JQLCBvdXRwKTsKLUBAIC05 MDQsMTEgKzEwMTgsNTcgQEAgc3RhdGljIHZvaWQKLSBlYXBfc2VydmVyX3RpbWVvdXQoYXJnKQot IHZvaWQgKmFyZzsKLSB7Ci0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJdV9jaGFyICpvdXRwOwotKwl1 X2NoYXIgKmxlbmxvYzsKLSsJaW50IG91dGxlbjsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwot KwotIAllYXBfc3RhdGUgKmVzcCA9IChlYXBfc3RhdGUgKikgYXJnOwotIAotIAlpZiAoIWVhcF9z ZXJ2ZXJfYWN0aXZlKGVzcCkpCi0gCQlyZXR1cm47Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJ c3dpdGNoKGVzcC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGUpIHsKLSsKLSsJLyoKLSsJICogIElu IGVhcC10bHMgdGhlIHN0YXRlIGNoYW5nZXMgYWZ0ZXIgYSByZXF1ZXN0LCBzbyB3ZSByZXR1cm4g dG8KLSsJICogIHByZXZpb3VzIHN0YXRlIC4uLgotKwkgKi8KLSsJY2FzZShlYXBUbHNTdGFydCk6 Ci0rCWNhc2UoZWFwVGxzU2VuZEFjayk6Ci0rCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVz cC0+ZXNfc2VydmVyLmVhX3ByZXZfc3RhdGU7Ci0rCQlicmVhazsKLSsKLSsJLyoKLSsJICogIC4u LiBvciByZXNlbmQgdGhlIHN0b3JlZCBkYXRhCi0rCSAqLwotKwljYXNlKGVhcFRsc1NlbmQpOgot KwljYXNlKGVhcFRsc1NlbmRBbGVydCk6Ci0rCQlvdXRwID0gb3V0cGFja2V0X2J1ZjsKLSsJCU1B S0VIRUFERVIob3V0cCwgUFBQX0VBUCk7Ci0rCQlQVVRDSEFSKEVBUF9SRVFVRVNULCBvdXRwKTsK LSsJCVBVVENIQVIoZXNwLT5lc19zZXJ2ZXIuZWFfaWQsIG91dHApOwotKwkJbGVubG9jID0gb3V0 cDsKLSsJCUlOQ1BUUigyLCBvdXRwKTsKLSsKLSsJCWVhcHRsc19yZXRyYW5zbWl0KGVzcC0+ZXNf c2VydmVyLmVhX3Nlc3Npb24sICZvdXRwKTsKLSsKLSsJCW91dGxlbiA9IChvdXRwIC0gb3V0cGFj a2V0X2J1ZikgLSBQUFBfSERSTEVOOwotKwkJUFVUU0hPUlQob3V0bGVuLCBsZW5sb2MpOwotKwkJ b3V0cHV0KGVzcC0+ZXNfdW5pdCwgb3V0cGFja2V0X2J1Ziwgb3V0bGVuICsgUFBQX0hEUkxFTik7 Ci0rCQllc3AtPmVzX3NlcnZlci5lYV9yZXF1ZXN0cysrOwotKwotKwkJaWYgKGVzcC0+ZXNfc2Vy dmVyLmVhX3RpbWVvdXQgPiAwKQotKwkJCVRJTUVPVVQoZWFwX3NlcnZlcl90aW1lb3V0LCBlc3As IGVzcC0+ZXNfc2VydmVyLmVhX3RpbWVvdXQpOwotKwotKwkJcmV0dXJuOwotKwlkZWZhdWx0Ogot KwkJYnJlYWs7Ci0rCX0KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAkvKiBFQVAgSUQg bnVtYmVyIG11c3Qgbm90IGNoYW5nZSBvbiB0aW1lb3V0LiAqLwotIAllYXBfc2VuZF9yZXF1ZXN0 KGVzcCk7Ci0gfQotQEAgLTExNjYsNiArMTMyNiw4MSBAQCB1X2NoYXIgKnN0cjsKLSB9Ci0gI2Vu ZGlmIC8qIFVTRV9TUlAgKi8KLSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotKy8qCi0rICogU2VuZCBh biBFQVAtVExTIHJlc3BvbnNlIG1lc3NhZ2Ugd2l0aCB0bHMgZGF0YQotKyAqLwotK3N0YXRpYyB2 b2lkCi0rZWFwX3Rsc19yZXNwb25zZShlc3AsIGlkKQotK2VhcF9zdGF0ZSAqZXNwOwotK3VfY2hh ciBpZDsKLSt7Ci0rICAgICAgICB1X2NoYXIgKm91dHA7Ci0rICAgICAgICBpbnQgb3V0bGVuOwot Kwl1X2NoYXIgKmxlbmxvYzsKLSsKLSsgICAgICAgIG91dHAgPSBvdXRwYWNrZXRfYnVmOwotKwot KyAgICAgICAgTUFLRUhFQURFUihvdXRwLCBQUFBfRUFQKTsKLSsKLSsgICAgICAgIFBVVENIQVIo RUFQX1JFU1BPTlNFLCBvdXRwKTsKLSsgICAgICAgIFBVVENIQVIoaWQsIG91dHApOwotKwotKwls ZW5sb2MgPSBvdXRwOwotKwlJTkNQVFIoMiwgb3V0cCk7Ci0rCi0rCS8qCi0rCSAgIElmIHRoZSBp ZCBpbiB0aGUgcmVxdWVzdCBpcyB1bmNoYW5nZWQsIHdlIG11c3QgcmV0cmFuc21pdAotKwkgICB0 aGUgb2xkIGRhdGEKLSsJKi8KLSsJaWYoaWQgPT0gZXNwLT5lc19jbGllbnQuZWFfaWQpCi0rCQll YXB0bHNfcmV0cmFuc21pdChlc3AtPmVzX2NsaWVudC5lYV9zZXNzaW9uLCAmb3V0cCk7Ci0rCWVs c2UKLSsJCWVhcHRsc19zZW5kKGVzcC0+ZXNfY2xpZW50LmVhX3Nlc3Npb24sICZvdXRwKTsKLSsK LSsJb3V0bGVuID0gKG91dHAgLSBvdXRwYWNrZXRfYnVmKSAtIFBQUF9IRFJMRU47Ci0rCVBVVFNI T1JUKG91dGxlbiwgbGVubG9jKTsKLSsKLSsJb3V0cHV0KGVzcC0+ZXNfdW5pdCwgb3V0cGFja2V0 X2J1ZiwgUFBQX0hEUkxFTiArIG91dGxlbik7Ci0rCi0rCWVzcC0+ZXNfY2xpZW50LmVhX2lkID0g aWQ7Ci0rCi0rfQotKwotKy8qCi0rICogU2VuZCBhbiBFQVAtVExTIGFjawotKyAqLwotK3N0YXRp YyB2b2lkCi0rZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpCi0rZWFwX3N0YXRlICplc3A7Ci0rdV9j aGFyIGlkOwotK3sKLSsJdV9jaGFyICpvdXRwOwotKwlpbnQgb3V0bGVuOwotKwl1X2NoYXIgKmxl bmxvYzsKLSsKLSsJb3V0cCA9IG91dHBhY2tldF9idWY7Ci0rCi0rCU1BS0VIRUFERVIob3V0cCwg UFBQX0VBUCk7Ci0rCi0rCVBVVENIQVIoRUFQX1JFU1BPTlNFLCBvdXRwKTsKLSsJUFVUQ0hBUihp ZCwgb3V0cCk7Ci0rCWVzcC0+ZXNfY2xpZW50LmVhX2lkID0gaWQ7Ci0rCi0rCWxlbmxvYyA9IG91 dHA7Ci0rCUlOQ1BUUigyLCBvdXRwKTsKLSsKLSsJUFVUQ0hBUihFQVBUX1RMUywgb3V0cCk7Ci0r CVBVVENIQVIoMCwgb3V0cCk7Ci0rCi0rCW91dGxlbiA9IChvdXRwIC0gb3V0cGFja2V0X2J1Zikg LSBQUFBfSERSTEVOOwotKwlQVVRTSE9SVChvdXRsZW4sIGxlbmxvYyk7Ci0rCi0rCW91dHB1dChl c3AtPmVzX3VuaXQsIG91dHBhY2tldF9idWYsIFBQUF9IRFJMRU4gKyBvdXRsZW4pOwotKwotK30K LSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIHN0YXRpYyB2b2lkCi0gZWFwX3NlbmRfbmFr KGVzcCwgaWQsIHR5cGUpCi0gZWFwX3N0YXRlICplc3A7Ci1AQCAtMTMyMCw2ICsxNTU1LDExIEBA IGludCBsZW47Ci0gCWNoYXIgcmhvc3RuYW1lWzI1Nl07Ci0gCU1ENV9DVFggbWRDb250ZXh0Owot IAl1X2NoYXIgaGFzaFtNRDVfU0lHTkFUVVJFX1NJWkVdOwotKyNpZmRlZiBVU0VfRUFQVExTCi0r CXVfY2hhciBmbGFnczsKLSsJc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMgPSBlc3AtPmVzX2Ns aWVudC5lYV9zZXNzaW9uOwotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0rCi0gI2lmZGVmIFVT RV9TUlAKLSAJc3RydWN0IHRfY2xpZW50ICp0YzsKLSAJc3RydWN0IHRfbnVtIHN2YWwsIGd2YWws IE52YWwsICpBcCwgQnZhbDsKLUBAIC0xNDU2LDYgKzE2OTYsMTAwIEBAIGludCBsZW47Ci0gCQkg ICAgZXNwLT5lc19jbGllbnQuZWFfbmFtZWxlbik7Ci0gCQlicmVhazsKLSAKLSsjaWZkZWYgVVNF X0VBUFRMUwotKwljYXNlIEVBUFRfVExTOgotKwotKwkJc3dpdGNoKGVzcC0+ZXNfY2xpZW50LmVh X3N0YXRlKSB7Ci0rCi0rCQljYXNlIGVhcExpc3RlbjoKLSsKLSsJCQlpZiAobGVuIDwgMSkgewot KwkJCQllcnJvcigiRUFQOiByZWNlaXZlZCBFQVAtVExTIExpc3RlbiBwYWNrZXQgd2l0aCBubyBk YXRhIik7Ci0rCQkJCS8qIEJvZ3VzIHJlcXVlc3Q7IHdhaXQgZm9yIHNvbWV0aGluZyByZWFsLiAq LwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwkJCUdFVENIQVIoZmxhZ3MsIGlucCk7Ci0rCQkJaWYo ZmxhZ3MgJiBFQVBfVExTX0ZMQUdTX1NUQVJUKXsKLSsKLSsJCQkJZXNwLT5lc19jbGllbnQuZWFf dXNpbmdfZWFwdGxzID0gMTsKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChleHBsaWNpdF9yZW1vdGUpewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlc3AtPmVzX2NsaWVudC5lYV9wZWVyID0gc3RyZHVwKHJlbW90ZV9uYW1lKTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNwLT5lc19jbGllbnQuZWFfcGVl cmxlbiA9IHN0cmxlbihyZW1vdGVfbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNw LT5lc19jbGllbnQuZWFfcGVlciA9IE5VTEw7Ci0rCi0rCQkJCS8qIEluaXQgc3NsIHNlc3Npb24g Ki8KLSsJCQkJaWYoIWVhcHRsc19pbml0X3NzbF9jbGllbnQoZXNwKSkgewotKwkJCQkJZGJnbG9n KCJjYW5ub3QgaW5pdCBzc2wiKTsKLSsJCQkJCWVhcF9zZW5kX25hayhlc3AsIGlkLCBFQVBUX1RM Uyk7Ci0rCQkJCQllc3AtPmVzX2NsaWVudC5lYV91c2luZ19lYXB0bHMgPSAwOwotKwkJCQkJYnJl YWs7Ci0rCQkJCX0KLSsKLSsJCQkJZXRzID0gZXNwLT5lc19jbGllbnQuZWFfc2Vzc2lvbjsKLSsJ CQkJZWFwX3Rsc19yZXNwb25zZShlc3AsIGlkKTsKLSsJCQkJZXNwLT5lc19jbGllbnQuZWFfc3Rh dGUgPSAoZXRzLT5mcmFnID8gZWFwVGxzUmVjdkFjayA6Ci0rCQkJCQkJCQllYXBUbHNSZWN2KTsK LSsJCQkJYnJlYWs7Ci0rCQkJfQotKwotKwkJCS8qIFRoZSBzZXJ2ZXIgaGFzIHNlbnQgYSBiYWQg c3RhcnQgcGFja2V0LiAqLwotKwkJCWVhcF9zZW5kX25hayhlc3AsIGlkLCBFQVBUX1RMUyk7Ci0r CQkJYnJlYWs7Ci0rCi0rCQljYXNlIGVhcFRsc1JlY3ZBY2s6Ci0rCQkJZWFwX3Rsc19yZXNwb25z ZShlc3AsIGlkKTsKLSsJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IChldHMtPmZyYWcgPyBl YXBUbHNSZWN2QWNrIDoKLSsJCQkJCQkJZWFwVGxzUmVjdik7Ci0rCQkJYnJlYWs7Ci0rCi0rCQlj YXNlIGVhcFRsc1JlY3Y6Ci0rCQkJaWYgKGxlbiA8IDEpIHsKLSsJCQkJZXJyb3IoIkVBUDogZGlz Y2FyZGluZyBFQVAtVExTIFJlY2VpdmUgcGFja2V0IHdpdGggbm8gZGF0YSIpOwotKwkJCQkvKiBC b2d1cyByZXF1ZXN0OyB3YWl0IGZvciBzb21ldGhpbmcgcmVhbC4gKi8KLSsJCQkJcmV0dXJuOwot KwkJCX0KLSsJCQllYXB0bHNfcmVjZWl2ZShldHMsIGlucCwgbGVuKTsKLSsKLSsJCQlpZihldHMt PmZyYWcpIHsKLSsJCQkJZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpOwotKwkJCQllc3AtPmVzX2Ns aWVudC5lYV9zdGF0ZSA9IGVhcFRsc1JlY3Y7Ci0rCQkJCWJyZWFrOwotKwkJCX0KLSsKLSsJCQlp ZihldHMtPmFsZXJ0X3JlY3YpIHsKLSsJCQkJZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpOwotKwkJ CQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IGVhcFRsc1JlY3ZGYWlsdXJlOwotKwkJCQlicmVh azsKLSsJCQl9Ci0rCi0rCQkJLyogQ2hlY2sgaWYgVExTIGhhbmRzaGFrZSBpcyBmaW5pc2hlZCAq LwotKwkJCWlmKFNTTF9pc19pbml0X2ZpbmlzaGVkKGV0cy0+c3NsKSl7Ci0rI2lmZGVmIE1QUEUK LSsgCQkJCWVhcHRsc19nZW5fbXBwZV9rZXlzKCBldHMsICJjbGllbnQgRUFQIGVuY3J5cHRpb24i LCAxICk7Ci0rI2VuZGlmCi0rCQkJCWVhcHRsc19mcmVlX3Nlc3Npb24oZXRzKTsKLSsJCQkJZWFw X3Rsc19zZW5kYWNrKGVzcCwgaWQpOwotKwkJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IGVh cFRsc1JlY3ZTdWNjZXNzOwotKwkJCQlicmVhazsKLSsJCQl9Ci0rCi0rCQkJZWFwX3Rsc19yZXNw b25zZShlc3AsaWQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGVzcC0+ZXNfY2xpZW50LmVh X3N0YXRlID0gKGV0cy0+ZnJhZyA/IGVhcFRsc1JlY3ZBY2sgOgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFwVGxzUmVjdik7Ci0rCi0r ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCi0rCQlkZWZhdWx0OgotKwkJCWVhcF9z ZW5kX25hayhlc3AsIGlkLCBFQVBUX1RMUyk7Ci0rCQkJZXNwLT5lc19jbGllbnQuZWFfdXNpbmdf ZWFwdGxzID0gMDsKLSsJCQlicmVhazsKLSsJCX0KLSsKLSsJCWJyZWFrOwotKyNlbmRpZiAvKiBV U0VfRUFQVExTICovCi0rCi0gI2lmZGVmIFVTRV9TUlAKLSAJY2FzZSBFQVBUX1NSUDoKLSAJCWlm IChsZW4gPCAxKSB7Ci1AQCAtMTczNyw2ICsyMDcxLDExIEBAIGludCBsZW47Ci0gCXVfY2hhciBk aWdbU0hBX0RJR0VTVFNJWkVdOwotICNlbmRpZiAvKiBVU0VfU1JQICovCi0gCi0rI2lmZGVmIFVT RV9FQVBUTFMKLSsJc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHM7Ci0rCXVfY2hhciBmbGFnczsK LSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAlpZiAoZXNwLT5lc19zZXJ2ZXIuZWFfaWQg IT0gaWQpIHsKLSAJCWRiZ2xvZygiRUFQOiBkaXNjYXJkaW5nIFJlc3BvbnNlICVkOyBleHBlY3Rl ZCBJRCAlZCIsIGlkLAotIAkJICAgIGVzcC0+ZXNfc2VydmVyLmVhX2lkKTsKLUBAIC0xNzc2LDYg KzIxMTUsNjQgQEAgaW50IGxlbjsKLSAJCWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsIDApOwot IAkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJY2FzZSBFQVBUX1RMUzoKLSsJCXN3 aXRjaChlc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSkgewotKwotKwkJY2FzZSBlYXBUbHNSZWN2Ogot KwotKwkJCWV0cyA9IChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKikgZXNwLT5lc19zZXJ2ZXIuZWFf c2Vzc2lvbjsKLSsJCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLAotKwkJCQllYXB0bHNfcmVj ZWl2ZShlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uLCBpbnAsIGxlbikpOwotKwotKwkJCWlmKGV0 cy0+YWxlcnRfcmVjdikgewotKwkJCQllYXBfc2VuZF9mYWlsdXJlKGVzcCk7Ci0rCQkJCWJyZWFr OwotKwkJCX0KLSsJCQlicmVhazsKLSsKLSsJCWNhc2UgZWFwVGxzUmVjdkFjazoKLSsJCQlpZihs ZW4gPiAxKSB7Ci0rCQkJCWRiZ2xvZygiRUFQLVRMUyBBQ0sgd2l0aCBleHRyYSBkYXRhIik7Ci0r CQkJfQotKwkJCWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsIDApOwotKwkJCWJyZWFrOwotKwot KwkJY2FzZSBlYXBUbHNSZWN2Q2xpZW50OgotKwkJCS8qIFJlY2VpdmUgYXV0aGVudGljYXRpb24g cmVzcG9uc2UgZnJvbSBjbGllbnQgKi8KLSsKLSsJCQlpZiAobGVuID4gMCkgewotKwkJCQlHRVRD SEFSKGZsYWdzLCBpbnApOwotKwotKwkJCQlpZihsZW4gPT0gMSAmJiAhZmxhZ3MpIHsJLyogQWNr ID0gb2sgKi8KLSsjaWZkZWYgTVBQRQotKyAJCQkJCWVhcHRsc19nZW5fbXBwZV9rZXlzKCBlc3At PmVzX3NlcnZlci5lYV9zZXNzaW9uLCAiY2xpZW50IEVBUCBlbmNyeXB0aW9uIiwgMCApOwotKyNl bmRpZgotKwkJCQkJZWFwX3NlbmRfc3VjY2Vzcyhlc3ApOwotKwkJCQl9Ci0rCQkJCWVsc2UgewkJ CS8qIGZhaWx1cmUgKi8KLSsJCQkJCXdhcm4oIlNlcnZlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQi KTsKLSsJCQkJCWVhcF9zZW5kX2ZhaWx1cmUoZXNwKTsKLSsJCQkJfQotKwkJCX0KLSsJCQllbHNl Ci0rCQkJCXdhcm4oIkJvZ3VzIEVBUC1UTFMgcGFja2V0IHJlY2VpdmVkIGZyb20gY2xpZW50Iik7 Ci0rCi0rCQkJZWFwdGxzX2ZyZWVfc2Vzc2lvbihlc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uKTsK LSsKLSsJCQlicmVhazsKLSsKLSsJCWNhc2UgZWFwVGxzUmVjdkFsZXJ0QWNrOgotKwkJCWVhcF9z ZW5kX2ZhaWx1cmUoZXNwKTsKLSsJCQlicmVhazsKLSsKLSsJCWRlZmF1bHQ6Ci0rCQkJZWFwX2Zp Z3VyZV9uZXh0X3N0YXRlKGVzcCwgMSk7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCQlicmVhazsKLSsj ZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAljYXNlIEVBUFRfTk9USUZJQ0FUSU9OOgotIAkJ ZGJnbG9nKCJFQVAgdW5leHBlY3RlZCBOb3RpZmljYXRpb247IHJlc3BvbnNlIGRpc2NhcmRlZCIp OwotIAkJYnJlYWs7Ci1AQCAtMTgwNyw2ICsyMjA0LDEzIEBAIGludCBsZW47Ci0gCQkJZXNwLT5l c19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBNRDVDaGFsbDsKLSAJCQlicmVhazsKLSAKLSsjaWZkZWYg VVNFX0VBUFRMUwotKwkJCS8qIFNlbmQgRUFQLVRMUyBzdGFydCBwYWNrZXQgKi8KLSsJCWNhc2Ug RUFQVF9UTFM6Ci0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBUbHNTdGFydDsKLSsJ CQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAkJZGVmYXVsdDoKLSAJCQlk Ymdsb2coIkVBUDogcGVlciByZXF1ZXN0aW5nIHVua25vd24gVHlwZSAlZCIsIHZhbGxlbik7Ci0g CQkJc3dpdGNoIChlc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSkgewotQEAgLTIwMTgsMTMgKzI0MjIs MjcgQEAgdV9jaGFyICppbnA7Ci0gaW50IGlkOwotIGludCBsZW47Ci0gewotLQlpZiAoZXNwLT5l c19jbGllbnQuZWFfc3RhdGUgIT0gZWFwT3BlbiAmJiAhZWFwX2NsaWVudF9hY3RpdmUoZXNwKSkg ewotKwlpZiAoZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwT3BlbiAmJiAhZWFwX2NsaWVu dF9hY3RpdmUoZXNwKQotKyNpZmRlZiBVU0VfRUFQVExTCi0rCQkmJiBlc3AtPmVzX2NsaWVudC5l YV9zdGF0ZSAhPSBlYXBUbHNSZWN2U3VjY2VzcwotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0r CQkpIHsKLSAJCWRiZ2xvZygiRUFQIHVuZXhwZWN0ZWQgc3VjY2VzcyBtZXNzYWdlIGluIHN0YXRl ICVzICglZCkiLAotIAkJICAgIGVhcF9zdGF0ZV9uYW1lKGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRl KSwKLSAJCSAgICBlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSk7Ci0gCQlyZXR1cm47Ci0gCX0KLSAK LSsjaWZkZWYgVVNFX0VBUFRMUwotKwlpZihlc3AtPmVzX2NsaWVudC5lYV91c2luZ19lYXB0bHMg JiYgZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgIT0KLSsJCWVhcFRsc1JlY3ZTdWNjZXNzKSB7Ci0r CQlkYmdsb2coIkVBUC1UTFMgdW5leHBlY3RlZCBzdWNjZXNzIG1lc3NhZ2UgaW4gc3RhdGUgJXMg KCVkKSIsCi0rICAgICAgICAgICAgICAgICAgICBlYXBfc3RhdGVfbmFtZShlc3AtPmVzX2NsaWVu dC5lYV9zdGF0ZSksCi0rICAgICAgICAgICAgICAgICAgICBlc3AtPmVzX2NsaWVudC5lYV9zdGF0 ZSk7Ci0rCQlyZXR1cm47Ci0rCX0KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotIAlpZiAo ZXNwLT5lc19jbGllbnQuZWFfdGltZW91dCA+IDApIHsKLSAJCVVOVElNRU9VVChlYXBfY2xpZW50 X3RpbWVvdXQsICh2b2lkICopZXNwKTsKLSAJfQotQEAgLTIxNTAsNiArMjU2OCw5IEBAIHZvaWQg KmFyZzsKLSAJaW50IGNvZGUsIGlkLCBsZW4sIHJ0eXBlLCB2YWxsZW47Ci0gCXVfY2hhciAqcHN0 YXJ0OwotIAl1X2ludDMyX3QgdXZhbDsKLSsjaWZkZWYgVVNFX0VBUFRMUwotKwl1X2NoYXIgZmxh Z3M7Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAKLSAJaWYgKGlubGVuIDwgRUFQX0hFQURF UkxFTikKLSAJCXJldHVybiAoMCk7Ci1AQCAtMjIxNCw2ICsyNjM1LDI0IEBAIHZvaWQgKmFyZzsK LSAJCQl9Ci0gCQkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJCWNhc2UgRUFQVF9U TFM6Ci0rCQkJaWYgKGxlbiA8IDEpCi0rCQkJCWJyZWFrOwotKwkJCUdFVENIQVIoZmxhZ3MsIGlu cCk7Ci0rCQkJbGVuLS07Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmxhZ3MgPT0g MCAmJiBsZW4gPT0gMCl7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVy KGFyZywgIiBBY2siKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBF QVBfVExTX0ZMQUdTX0xJID8gIiBMIjoiIC0iKTsKLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBF QVBfVExTX0ZMQUdTX01GID8gIk0iOiItIik7Ci0rCQkJcHJpbnRlcihhcmcsIGZsYWdzICYgRUFQ X1RMU19GTEFHU19TVEFSVCA/ICJTIjoiLSAiKTsKLSsJCQlicmVhazsKLSsjZW5kaWYgLyogVVNF X0VBUFRMUyAqLwotKwotIAkJY2FzZSBFQVBUX1NSUDoKLSAJCQlpZiAobGVuIDwgMykKLSAJCQkJ Z290byB0cnVuY2F0ZWQ7Ci1AQCAtMjMyNSw2ICsyNzY0LDI1IEBAIHZvaWQgKmFyZzsKLSAJCQl9 Ci0gCQkJYnJlYWs7Ci0gCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJCWNhc2UgRUFQVF9UTFM6Ci0r CQkJaWYgKGxlbiA8IDEpCi0rCQkJCWJyZWFrOwotKwkJCUdFVENIQVIoZmxhZ3MsIGlucCk7Ci0r CQkJbGVuLS07Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmxhZ3MgPT0gMCAmJiBs ZW4gPT0gMCl7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVyKGFyZywg IiBBY2siKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAg ICAgICAgICAgICAgICAgICAgIH0KLSsKLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBFQVBfVExT X0ZMQUdTX0xJID8gIiBMIjoiIC0iKTsKLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBFQVBfVExT X0ZMQUdTX01GID8gIk0iOiItIik7Ci0rCQkJcHJpbnRlcihhcmcsIGZsYWdzICYgRUFQX1RMU19G TEFHU19TVEFSVCA/ICJTIjoiLSAiKTsKLSsKLSsJCQlicmVhazsKLSsjZW5kaWYgLyogVVNFX0VB UFRMUyAqLwotKwotIAkJY2FzZSBFQVBUX05BSzoKLSAJCQlpZiAobGVuIDw9IDApIHsKLSAJCQkJ cHJpbnRlcihhcmcsICIgPG1pc3NpbmcgaGludD4iKTsKLUBAIC0yNDI2LDMgKzI4ODQsNCBAQCB2 b2lkICphcmc7Ci0gCi0gCXJldHVybiAoaW5wIC0gcHN0YXJ0KTsKLSB9Ci0rCi1kaWZmIC0tZ2l0 IGEvcHBwZC9lYXAuaCBiL3BwcGQvZWFwLmgKLWluZGV4IDE5OWQxODQ5YjgyNi4uMDg3YmFhZDgz ZWVkIDEwMDY0NAotLS0tIGEvcHBwZC9lYXAuaAotKysrIGIvcHBwZC9lYXAuaAotQEAgLTg0LDYg Kzg0LDE2IEBAIGVudW0gZWFwX3N0YXRlX2NvZGUgewotIAllYXBDbG9zZWQsCS8qIEF1dGhlbnRp Y2F0aW9uIG5vdCBpbiB1c2UgKi8KLSAJZWFwTGlzdGVuLAkvKiBDbGllbnQgcmVhZHkgKGFuZCB0 aW1lciBydW5uaW5nKSAqLwotIAllYXBJZGVudGlmeSwJLyogRUFQIElkZW50aWZ5IHNlbnQgKi8K LSsJZWFwVGxzU3RhcnQsCS8qIFNlbmQgRUFQLVRMUyBzdGFydCBwYWNrZXQgKi8KLSsJZWFwVGxz UmVjdiwJLyogUmVjZWl2ZSBFQVAtVExTIHRscyBkYXRhICovCi0rCWVhcFRsc1NlbmRBY2ssCS8q IFNlbmQgRUFQLVRMUyBhY2sgKi8KLSsJZWFwVGxzU2VuZCwJLyogU2VuZCBFQVAtVExTIHRscyBk YXRhICovCi0rCWVhcFRsc1JlY3ZBY2ssCS8qIFJlY2VpdmUgRUFQLVRMUyBhY2sgKi8KLSsJZWFw VGxzUmVjdkNsaWVudCwgCS8qIFJlY2VpdmUgRUFQLVRMUyBhdXRoIHJlc3BvbnNlIGZyb20gY2xp ZW50Ki8KLSsJZWFwVGxzU2VuZEFsZXJ0LAkvKiBTZW5kIEVBUC1UTFMgdGxzIGFsZXJ0IChzZXJ2 ZXIpKi8KLSsJZWFwVGxzUmVjdkFsZXJ0QWNrLAkvKiBSZWNlaXZlIEVBUC1UTFMgYWNrIGFmdGVy IHNlbmRpbmcgYWxlcnQgKi8KLSsJZWFwVGxzUmVjdlN1Y2Nlc3MsCS8qIFJlY2VpdmUgRUFQIHN1 Y2Nlc3MgKi8KLSsJZWFwVGxzUmVjdkZhaWx1cmUsCS8qIFJlY2VpdmUgRUFQIGZhaWx1cmUgKi8K LSAJZWFwU1JQMSwJLyogU2VudCBFQVAgU1JQLVNIQTEgU3VidHlwZSAxICovCi0gCWVhcFNSUDIs CS8qIFNlbnQgRUFQIFNSUC1TSEExIFN1YnR5cGUgMiAqLwotIAllYXBTUlAzLAkvKiBTZW50IEVB UCBTUlAtU0hBMSBTdWJ0eXBlIDMgKi8KLUBAIC05NSw5ICsxMDUsMTggQEAgZW51bSBlYXBfc3Rh dGVfY29kZSB7Ci0gCi0gI2RlZmluZQlFQVBfU1RBVEVTCVwKLSAJIkluaXRpYWwiLCAiUGVuZGlu ZyIsICJDbG9zZWQiLCAiTGlzdGVuIiwgIklkZW50aWZ5IiwgXAotKwkiVGxzU3RhcnQiLCAiVGxz UmVjdiIsICJUbHNTZW5kQWNrIiwgIlRsc1NlbmQiLCAiVGxzUmVjdkFjayIsICJUbHNSZWN2Q2xp ZW50IixcCi0rCSJUbHNTZW5kQWxlcnQiLCAiVGxzUmVjdkFsZXJ0QWNrIiAsICJUbHNSZWN2U3Vj Y2VzcyIsICJUbHNSZWN2RmFpbHVyZSIsIFwKLSAJIlNSUDEiLCAiU1JQMiIsICJTUlAzIiwgIk1E NUNoYWxsIiwgIk9wZW4iLCAiU1JQNCIsICJCYWRBdXRoIgotIAotLSNkZWZpbmUJZWFwX2NsaWVu dF9hY3RpdmUoZXNwKQkoKGVzcCktPmVzX2NsaWVudC5lYV9zdGF0ZSA9PSBlYXBMaXN0ZW4pCi0r I2lmZGVmIFVTRV9FQVBUTFMKLSsjZGVmaW5lCWVhcF9jbGllbnRfYWN0aXZlKGVzcCkJKChlc3Ap LT5lc19jbGllbnQuZWFfc3RhdGUgIT0gZWFwSW5pdGlhbCAmJlwKLSsJCQkJIChlc3ApLT5lc19j bGllbnQuZWFfc3RhdGUgIT0gZWFwUGVuZGluZyAmJlwKLSsJCQkJIChlc3ApLT5lc19jbGllbnQu ZWFfc3RhdGUgIT0gZWFwQ2xvc2VkKQotKyNlbHNlCi0rI2RlZmluZSBlYXBfY2xpZW50X2FjdGl2 ZShlc3ApCSgoZXNwKS0+ZXNfY2xpZW50LmVhX3N0YXRlID09IGVhcExpc3RlbikKLSsjZW5kaWYg LyogVVNFX0VBUFRMUyAqLwotKwotICNkZWZpbmUJZWFwX3NlcnZlcl9hY3RpdmUoZXNwKQlcCi0g CSgoZXNwKS0+ZXNfc2VydmVyLmVhX3N0YXRlID49IGVhcElkZW50aWZ5ICYmIFwKLSAJIChlc3Ap LT5lc19zZXJ2ZXIuZWFfc3RhdGUgPD0gZWFwTUQ1Q2hhbGwpCi1AQCAtMTEyLDExICsxMzEsMTcg QEAgc3RydWN0IGVhcF9hdXRoIHsKLSAJdV9zaG9ydCBlYV9uYW1lbGVuOwkvKiBMZW5ndGggb2Yg b3VyIG5hbWUgKi8KLSAJdV9zaG9ydCBlYV9wZWVybGVuOwkvKiBMZW5ndGggb2YgcGVlcidzIG5h bWUgKi8KLSAJZW51bSBlYXBfc3RhdGVfY29kZSBlYV9zdGF0ZTsKLSsjaWZkZWYgVVNFX0VBUFRM UwotKwllbnVtIGVhcF9zdGF0ZV9jb2RlIGVhX3ByZXZfc3RhdGU7Ci0rI2VuZGlmCi0gCXVfY2hh ciBlYV9pZDsJCS8qIEN1cnJlbnQgaWQgKi8KLSAJdV9jaGFyIGVhX3JlcXVlc3RzOwkvKiBOdW1i ZXIgb2YgUmVxdWVzdHMgc2VudC9yZWNlaXZlZCAqLwotIAl1X2NoYXIgZWFfcmVzcG9uc2VzOwkv KiBOdW1iZXIgb2YgUmVzcG9uc2VzICovCi0gCXVfY2hhciBlYV90eXBlOwkJLyogT25lIG9mIEVB UFRfKiAqLwotIAl1X2ludDMyX3QgZWFfa2V5ZmxhZ3M7CS8qIFNSUCBzaGFyZWQga2V5IHVzYWdl IGZsYWdzICovCi0rI2lmZGVmIFVTRV9FQVBUTFMKLSsJYm9vbCBlYV91c2luZ19lYXB0bHM7Ci0r I2VuZGlmCi0gfTsKLSAKLSAvKgotQEAgLTEzOSw3ICsxNjQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qg ZWFwX3N0YXRlIHsKLSAgKiBUaW1lb3V0cy4KLSAgKi8KLSAjZGVmaW5lCUVBUF9ERUZUSU1FT1VU CQkzCS8qIFRpbWVvdXQgKHNlY29uZHMpIGZvciByZXhtaXQgKi8KLSsjaWZkZWYgVVNFX0VBUFRM UwotKyNkZWZpbmUJRUFQX0RFRlRSQU5TTUlUUwkzMAkvKiBtYXggIyB0aW1lcyB0byB0cmFuc21p dCAqLwotKwkJCQkJLyogY2VydGlmaWNhdGVzIGNhbiBiZSBsb25nIC4uLiAqLwotKyNlbHNlCi0g I2RlZmluZQlFQVBfREVGVFJBTlNNSVRTCTEwCS8qIG1heCAjIHRpbWVzIHRvIHRyYW5zbWl0ICov Ci0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KLSAjZGVmaW5lCUVBUF9ERUZSRVFUSU1FCQkyMAkv KiBUaW1lIHRvIHdhaXQgZm9yIHBlZXIgcmVxdWVzdCAqLwotICNkZWZpbmUJRUFQX0RFRkFMTE9X UkVRCQkyMAkvKiBtYXggIyB0aW1lcyB0byBhY2NlcHQgcmVxdWVzdHMgKi8KLSAKLWRpZmYgLS1n aXQgYS9wcHBkL21kNS5jIGIvcHBwZC9tZDUuYwotaW5kZXggZjEyOTFjZTFiZDcyLi42ZjhmNzIw N2M1OTIgMTAwNjQ0Ci0tLS0gYS9wcHBkL21kNS5jCi0rKysgYi9wcHBkL21kNS5jCi1AQCAtMzMs NiArMzMsOCBAQAotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLwotIAotKyNpZm5kZWYgVVNFX0VBUFRM UwotKwotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAibWQ1LmgiCi0gCi1AQCAtMzA1 LDMgKzMwNyw1IEBAIFVJTlQ0ICppbjsKLSAgKiogRW5kIG9mIG1kNS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioKLSAgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiogKGN1dCkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAgKi8KLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotZGlmZiAtLWdpdCBhL3BwcGQv bWQ1LmggYi9wcHBkL21kNS5oCi1pbmRleCA3MWU4YjAwZTJkZGUuLjE0ZDcxMjE3MWM1ZSAxMDA2 NDQKLS0tLSBhL3BwcGQvbWQ1LmgKLSsrKyBiL3BwcGQvbWQ1LmgKLUBAIC0zNiw2ICszNiw3IEBA Ci0gICoqIGRvY3VtZW50YXRpb24gYW5kL29yIHNvZnR3YXJlLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoqCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovCi0rI2lmbmRlZiBVU0Vf RUFQVExTCi0gCi0gI2lmbmRlZiBfX01ENV9JTkNMVURFX18KLSAKLUBAIC02MywzICs2NCw1IEBA IHZvaWQgTUQ1X0ZpbmFsICh1bnNpZ25lZCBjaGFyIGhhc2hbXSwgTUQ1X0NUWCAqbWRDb250ZXh0 KTsKLSAKLSAjZGVmaW5lIF9fTUQ1X0lOQ0xVREVfXwotICNlbmRpZiAvKiBfX01ENV9JTkNMVURF X18gKi8KLSsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotZGlmZiAtLWdpdCBhL3BwcGQvcGF0 aG5hbWVzLmggYi9wcHBkL3BhdGhuYW1lcy5oCi1pbmRleCA0Njk3MjYwMWZjOTIuLjcyYzJmNWIx OTFlZSAxMDA2NDQKLS0tLSBhL3BwcGQvcGF0aG5hbWVzLmgKLSsrKyBiL3BwcGQvcGF0aG5hbWVz LmgKLUBAIC0yMSw2ICsyMSwxMyBAQAotICNkZWZpbmUgX1BBVEhfVVBBUEZJTEUgCSBfUk9PVF9Q QVRIICIvZXRjL3BwcC9wYXAtc2VjcmV0cyIKLSAjZGVmaW5lIF9QQVRIX0NIQVBGSUxFIAkgX1JP T1RfUEFUSCAiL2V0Yy9wcHAvY2hhcC1zZWNyZXRzIgotICNkZWZpbmUgX1BBVEhfU1JQRklMRSAJ IF9ST09UX1BBVEggIi9ldGMvcHBwL3NycC1zZWNyZXRzIgotKwotKyNpZmRlZiBVU0VfRUFQVExT Ci0rI2RlZmluZSBfUEFUSF9FQVBUTFNDTElGSUxFCV9ST09UX1BBVEggIi9ldGMvcHBwL2VhcHRs cy1jbGllbnQiCi0rI2RlZmluZSBfUEFUSF9FQVBUTFNTRVJWRklMRQlfUk9PVF9QQVRIICIvZXRj L3BwcC9lYXB0bHMtc2VydmVyIgotKyNkZWZpbmUgX1BBVEhfT1BFTlNTTENPTkZGSUxFCV9ST09U X1BBVEggIi9ldGMvcHBwL29wZW5zc2wuY25mIgotKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCi0r Ci0gI2RlZmluZSBfUEFUSF9TWVNPUFRJT05TIF9ST09UX1BBVEggIi9ldGMvcHBwL29wdGlvbnMi Ci0gI2RlZmluZSBfUEFUSF9JUFVQCSBfUk9PVF9QQVRIICIvZXRjL3BwcC9pcC11cCIKLSAjZGVm aW5lIF9QQVRIX0lQRE9XTgkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvaXAtZG93biIKLWRpZmYgLS1n aXQgYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUu bGludXgKLWluZGV4IDBmOWQzN2QyOTUzYi4uYmMyOTk2OGQ0NGM5IDEwMDY0NAotLS0tIGEvcHBw ZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4Ci0rKysgYi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGlu dXgKLUBAIC00LDYgKzQsOSBAQCBDRkxBR1MJPSAkKENPUFRTKSAtSS4uIC1JLi4vLi4vaW5jbHVk ZSAtZlBJQwotIExERkxBR1MJPSAkKExET1BUUykKLSBJTlNUQUxMCT0gaW5zdGFsbAotIAotKyMg RUFQLVRMUwotK0NGTEFHUyArPSAtRFVTRV9FQVBUTFM9MQotKwotIERFU1RESVIgPSAkKElOU1RS T09UKUBERVNURElSQAotIEJJTkRJUiA9ICQoREVTVERJUikvc2JpbgotIE1BTkRJUiA9ICQoREVT VERJUikvc2hhcmUvbWFuL21hbjgKLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcGFzc3Byb21w dC5jIGIvcHBwZC9wbHVnaW5zL3Bhc3Nwcm9tcHQuYwotaW5kZXggYmFiYjZkYzMxYmFiLi42YmE3 M2NhZTI3OTUgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcGFzc3Byb21wdC5jCi0rKysgYi9w cHBkL3BsdWdpbnMvcGFzc3Byb21wdC5jCi1AQCAtMTA3LDQgKzEwNyw3IEBAIHZvaWQgcGx1Z2lu X2luaXQodm9pZCkKLSB7Ci0gICAgIGFkZF9vcHRpb25zKG9wdGlvbnMpOwotICAgICBwYXBfcGFz c3dkX2hvb2sgPSBwcm9tcHRwYXNzOwotKyNpZmRlZiBVU0VfRUFQVExTCi0rICAgIGVhcHRsc19w YXNzd2RfaG9vayA9IHByb21wdHBhc3M7Ci0rI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBhL3BwcGQv cGx1Z2lucy9wYXNzd29yZGZkLmMgYi9wcHBkL3BsdWdpbnMvcGFzc3dvcmRmZC5jCi1pbmRleCBk NzE4ZjNiZGY4MWQuLmMzZjk3OTNlNDFhMCAxMDA2NDQKLS0tLSBhL3BwcGQvcGx1Z2lucy9wYXNz d29yZGZkLmMKLSsrKyBiL3BwcGQvcGx1Z2lucy9wYXNzd29yZGZkLmMKLUBAIC03OSw0ICs3OSw4 IEBAIHZvaWQgcGx1Z2luX2luaXQgKHZvaWQpCi0gCi0gICAgIGNoYXBfY2hlY2tfaG9vayA9IHB3 ZmRfY2hlY2s7Ci0gICAgIGNoYXBfcGFzc3dkX2hvb2sgPSBwd2ZkX3Bhc3N3ZDsKLSsKLSsjaWZk ZWYgVVNFX0VBUFRMUwotKyAgICBlYXB0bHNfcGFzc3dkX2hvb2sgPSBwd2ZkX3Bhc3N3ZDsKLSsj ZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvcHBwZC9wcHBkLjggYi9wcHBkL3BwcGQuOAotaW5kZXgg NjViYmU3MjFmNzYxLi44YWZhMmQxMTg2ZTIgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BwcGQuOAotKysr IGIvcHBwZC9wcHBkLjgKLUBAIC0yNTMsNiArMjUzLDEyIEBAIEFsdGVybmF0aXZlbHksIGEgdmFs dWUgb2YgMCBmb3IgXGZJbnJcZlIgb3IgXGZJbnRcZlIgZGlzYWJsZXMKLSBjb21wcmVzc2lvbiBp biB0aGUgY29ycmVzcG9uZGluZyBkaXJlY3Rpb24uICBVc2UgXGZJbm9ic2Rjb21wXGZSIG9yCi0g XGZJYnNkY29tcCAwXGZSIHRvIGRpc2FibGUgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIGVudGly ZWx5LgotIC5UUAotKy5CIGNhIFxmSWNhLWZpbGUKLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxm SWNhLWZpbGVcZlIgYXMgdGhlIFguNTA5IENlcnRpZmljYXRlIEF1dGhvcml0eQotKyhDQSkgZmls ZSAoaW4gUEVNIGZvcm1hdCksIG5lZWRlZCBmb3Igc2V0dGluZyB1cCBhbiBFQVAtVExTIGNvbm5l Y3Rpb24uCi0rVGhpcyBvcHRpb24gaXMgdXNlZCBvbiB0aGUgY2xpZW50LXNpZGUgaW4gY29uanVu Y3Rpb24gd2l0aCB0aGUgXGZCY2VydFxmUgotK2FuZCBcZkJrZXlcZlIgb3B0aW9ucy4KLSsuVFAK LSAuQiBjZHRyY3RzCi0gVXNlIGEgbm9uLXN0YW5kYXJkIGhhcmR3YXJlIGZsb3cgY29udHJvbCAo aS5lLiBEVFIvQ1RTKSB0byBjb250cm9sCi0gdGhlIGZsb3cgb2YgZGF0YSBvbiB0aGUgc2VyaWFs IHBvcnQuICBJZiBuZWl0aGVyIHRoZSBcZkljcnRzY3RzXGZSLAotQEAgLTI2NCw2ICsyNzAsMTIg QEAgUlRTIG91dHB1dC4gU3VjaCBzZXJpYWwgcG9ydHMgdXNlIHRoaXMgbW9kZSB0byBpbXBsZW1l bnQgdHJ1ZQotIGJpLWRpcmVjdGlvbmFsIGZsb3cgY29udHJvbC4gVGhlIHNhY3JpZmljZSBpcyB0 aGF0IHRoaXMgZmxvdwotIGNvbnRyb2wgbW9kZSBkb2VzIG5vdCBwZXJtaXQgdXNpbmcgRFRSIGFz IGEgbW9kZW0gY29udHJvbCBsaW5lLgotIC5UUAotKy5CIGNlcnQgXGZJY2VydGZpbGUKLSsoRUFQ LVRMUykgVXNlIHRoZSBmaWxlIFxmSWNlcnRmaWxlXGZSIGFzIHRoZSBYLjUwOSBjZXJ0aWZpY2F0 ZSAoaW4gUEVNCi0rZm9ybWF0KSwgbmVlZGVkIGZvciBzZXR0aW5nIHVwIGFuIEVBUC1UTFMgY29u bmVjdGlvbi4gVGhpcyBvcHRpb24gaXMKLSt1c2VkIG9uIHRoZSBjbGllbnQtc2lkZSBpbiBjb25q dW5jdGlvbiB3aXRoIHRoZSBcZkJjYVxmUiBhbmQKLStcZkJrZXlcZlIgb3B0aW9ucy4KLSsuVFAK LSAuQiBjaGFwXC1pbnRlcnZhbCBcZkluCi0gSWYgdGhpcyBvcHRpb24gaXMgZ2l2ZW4sIHBwcGQg d2lsbCByZWNoYWxsZW5nZSB0aGUgcGVlciBldmVyeSBcZkluXGZSCi0gc2Vjb25kcy4KLUBAIC0y OTIsNiArMzA0LDE4IEBAIG5lZ290aWF0aW9uIGJ5IHNlbmRpbmcgaXRzIGZpcnN0IExDUCBwYWNr ZXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcwotIDEwMDAgKDEgc2Vjb25kKS4gIFRoaXMgd2FpdCBw ZXJpb2Qgb25seSBhcHBsaWVzIGlmIHRoZSBcZkJjb25uZWN0XGZSCi0gb3IgXGZCcHR5XGZSIG9w dGlvbiBpcyB1c2VkLgotIC5UUAotKy5CIGNybCBcZklmaWxlbmFtZQotKyhFQVAtVExTKSBVc2Ug dGhlIGZpbGUgXGZJZmlsZW5hbWVcZlIgYXMgdGhlIENlcnRpZmljYXRlIFJldm9jYXRpb24gTGlz dAotK3RvIGNoZWNrIGZvciB0aGUgdmFsaWRpdHkgb2YgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZS4g VGhpcyBvcHRpb24gaXMgbm90Ci0rbWFuZGF0b3J5IGZvciBzZXR0aW5nIHVwIGFuIEVBUC1UTFMg Y29ubmVjdGlvbi4gQWxzbyBzZWUgdGhlIFxmQmNybC1kaXJcZlIKLStvcHRpb24uCi0rLlRQCi0r LkIgY3JsLWRpciBcZklkaXJlY3RvcnkKLSsoRUFQLVRMUykgVXNlIHRoZSBkaXJlY3RvcnkgXGZJ ZGlyZWN0b3J5XGZSIHRvIHNjYW4gZm9yIENSTCBmaWxlcyBpbgotK2hhcyBmb3JtYXQgKCRoYXNo LnIwKSB0byBjaGVjayBmb3IgdGhlIHZhbGlkaXR5IG9mIHRoZSBwZWVyJ3MgY2VydGlmaWNhdGUu Ci0rVGhpcyBvcHRpb24gaXMgbm90IG1hbmRhdG9yeSBmb3Igc2V0dGluZyB1cCBhbiBFQVAtVExT IGNvbm5lY3Rpb24uCi0rQWxzbyBzZWUgdGhlIFxmQmNybFxmUiBvcHRpb24uCi0rLlRQCi0gLkIg ZGVidWcKLSBFbmFibGVzIGNvbm5lY3Rpb24gZGVidWdnaW5nIGZhY2lsaXRpZXMuCi0gSWYgdGhp cyBvcHRpb24gaXMgZ2l2ZW4sIHBwcGQgd2lsbCBsb2cgdGhlIGNvbnRlbnRzIG9mIGFsbAotQEAg LTU2MSw2ICs1ODUsMTIgQEAgdHJhbnNtaXR0ZWQgcGFja2V0cyBiZSBwcmludGVkLiAgT24gbW9z dCBzeXN0ZW1zLCBtZXNzYWdlcyBwcmludGVkIGJ5Ci0gdGhlIGtlcm5lbCBhcmUgbG9nZ2VkIGJ5 IHN5c2xvZygxKSB0byBhIGZpbGUgYXMgZGlyZWN0ZWQgaW4gdGhlCi0gL2V0Yy9zeXNsb2cuY29u ZiBjb25maWd1cmF0aW9uIGZpbGUuCi0gLlRQCi0rLkIga2V5IFxmSWtleWZpbGUKLSsoRUFQLVRM UykgVXNlIHRoZSBmaWxlIFxmSWtleWZpbGVcZlIgYXMgdGhlIHByaXZhdGUga2V5IGZpbGUgKGlu IFBFTQotK2Zvcm1hdCksIG5lZWRlZCBmb3Igc2V0dGluZyB1cCBhbiBFQVAtVExTIGNvbm5lY3Rp b24uIFRoaXMgb3B0aW9uIGlzCi0rdXNlZCBvbiB0aGUgY2xpZW50LXNpZGUgaW4gY29uanVuY3Rp b24gd2l0aCB0aGUgXGZCY2FcZlIgYW5kCi0rXGZCY2VydFxmUiBvcHRpb25zLgotKy5UUAotIC5C IGt0dW5lCi0gRW5hYmxlcyBwcHBkIHRvIGFsdGVyIGtlcm5lbCBzZXR0aW5ncyBhcyBhcHByb3By aWF0ZS4gIFVuZGVyIExpbnV4LAotIHBwcGQgd2lsbCBlbmFibGUgSVAgZm9yd2FyZGluZyAoaS5l LiBzZXQgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2ZvcndhcmQKLUBAIC03MjQsNiArNzU0LDkgQEAg bmFtZSB0byBcZkluYW1lXGZSLikKLSBEaXNhYmxlIEFkZHJlc3MvQ29udHJvbCBjb21wcmVzc2lv biBpbiBib3RoIGRpcmVjdGlvbnMgKHNlbmQgYW5kCi0gcmVjZWl2ZSkuCi0gLlRQCi0rLkIgbmVl ZC1wZWVyLWVhcAotKyhFQVAtVExTKSBSZXF1aXJlIHRoZSBwZWVyIHRvIHZlcmlmeSBvdXIgYXV0 aGVudGljYXRpb24gY3JlZGVudGlhbHMuCi0rLlRQCi0gLkIgbm9hdXRoCi0gRG8gbm90IHJlcXVp cmUgdGhlIHBlZXIgdG8gYXV0aGVudGljYXRlIGl0c2VsZi4gIFRoaXMgb3B0aW9uIGlzCi0gcHJp dmlsZWdlZC4KLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCi1pbmRleCA1 NjdkNzAyMTgxY2EuLjE5NWNiZTNjNmZmYiAxMDA2NDQKLS0tLSBhL3BwcGQvcHBwZC5oCi0rKysg Yi9wcHBkL3BwcGQuaAotQEAgLTMzOCw2ICszMzgsMTEgQEAgZXh0ZXJuIGJvb2wJZHVtcF9vcHRp b25zOwkvKiBwcmludCBvdXQgb3B0aW9uIHZhbHVlcyAqLwotIGV4dGVybiBib29sCWRyeXJ1bjsJ CS8qIGNoZWNrIGV2ZXJ5dGhpbmcsIHByaW50IG9wdGlvbnMsIGV4aXQgKi8KLSBleHRlcm4gaW50 CWNoaWxkX3dhaXQ7CS8qICMgc2Vjb25kcyB0byB3YWl0IGZvciBjaGlsZHJlbiBhdCBlbmQgKi8K LSAKLSsjaWZkZWYgVVNFX0VBUFRMUwotK2V4dGVybiBjaGFyCSpjcmxfZGlyOwotK2V4dGVybiBj aGFyCSpjcmxfZmlsZTsKLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwotKwotICNpZmRlZiBNQVhP Q1RFVFMKLSBleHRlcm4gdW5zaWduZWQgaW50IG1heG9jdGV0czsJICAgICAvKiBNYXhpbXVtIG9j dGV0ZXMgcGVyIHNlc3Npb24gKGluIGJ5dGVzKSAqLwotIGV4dGVybiBpbnQgICAgICAgbWF4b2N0 ZXRzX2RpcjsgICAgICAvKiBEaXJlY3Rpb24gOgotQEAgLTc1OCw2ICs3NjMsMTAgQEAgZXh0ZXJu IGludCAoKmNoYXBfY2hlY2tfaG9vaykgX19QKCh2b2lkKSk7Ci0gZXh0ZXJuIGludCAoKmNoYXBf cGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFzc3dkKSk7Ci0gZXh0ZXJuIHZv aWQgKCptdWx0aWxpbmtfam9pbl9ob29rKSBfX1AoKHZvaWQpKTsKLSAKLSsjaWZkZWYgVVNFX0VB UFRMUwotK2V4dGVybiBpbnQgKCplYXB0bHNfcGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwg Y2hhciAqcGFzc3dkKSk7Ci0rI2VuZGlmCi0rCi0gLyogTGV0IGEgcGx1Z2luIHNub29wIHNlbnQg YW5kIHJlY2VpdmVkIHBhY2tldHMuICBVc2VmdWwgZm9yIEwyVFAgKi8KLSBleHRlcm4gdm9pZCAo KnNub29wX3JlY3ZfaG9vaykgX19QKCh1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGVuKSk7Ci0gZXh0 ZXJuIHZvaWQgKCpzbm9vcF9zZW5kX2hvb2spIF9fUCgodW5zaWduZWQgY2hhciAqcCwgaW50IGxl bikpOwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDA0MC1wcHBkLVVzZS1vcGVuc3Ns LWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNoIGIvcGF0Y2hlcy9wcHAt Mi40LjcvMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxp YmNyeXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjgzMjc4YTkuLjAw MDAwMDAwMAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDQwLXBwcGQtVXNlLW9wZW5zc2wtZm9y LXRoZS1ERVMtaW5zdGVhZC1vZi10aGUtbGliY3J5cHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMTUgKzAsMCBAQAotRnJvbTogPT9VVEYtOD9xP0phcm9zbGF2PTIwPUM1PUEwa2FydmFkYT89 IDxqc2thcnZhZEByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA2IEFwciAyMDE4IDE0OjI3OjE4ICsw MjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IFVzZSBvcGVuc3NsIGZvciB0aGUgREVTIGluc3Rl YWQgb2YgdGhlIGxpYmNyeXB0IC8gZ2xpYmMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDhiaXQKLQotW2h0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9jb21taXQvM2M3Yjg2 MjI5ZjdiZDI2MDBkNzRkYjE0YjFmZTViMzg5NmJlMzg3NV0KLQotSXQgc2VlbXMgdGhlIGxhdGVz dCBnbGliYyAoaW4gRmVkb3JhIGdsaWJjLTIuMjcuOTAwMC0xMi5mYzI5KSBkcm9wcGVkCi1saWJj cnlwdC4gIFRoZSBsaWJ4Y3J5cHQgc3RhbmRhbG9uZSBwYWNrYWdlIGNhbiBiZSB1c2VkIGluc3Rl YWQsIGJ1dAotaXQgZHJvcHBlZCB0aGUgb2xkIHNldGtleS9lbmNyeXB0IEFQSSB3aGljaCBwcHAg dXNlcyBmb3IgREVTLiAgVGhlcmUKLWlzIHN1cHBvcnQgZm9yIHVzaW5nIG9wZW5zc2wgaW4gcHBw Y3J5cHQuYywgYnV0IGl0IGNvbnRhaW5zIHR5cG9zCi1wcmV2ZW50aW5nIGl0IGZyb20gY29tcGls aW5nIGFuZCBzZWVtcyB0byBiZSB3cml0dGVuIGZvciBhbiBhbmNpZW50Ci1vcGVuc3NsIHZlcnNp b24uCi0KLVRoaXMgdXBkYXRlcyB0aGUgY29kZSB0byB1c2UgY3VycmVudCBvcGVuc3NsLgotCi1b cGF1bHVzQG96bGFicy5vcmcgLSB3cm90ZSB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLCBmaXhlZCBj b21tZW50IGluCi0gTWFrZWZpbGUubGludXguXQotCi1TaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiDF oGthcnZhZGEgPGpza2FydmFkQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tl cnJhcyA8cGF1bHVzQG96bGFicy5vcmc+Ci0KLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4x LmRlYmlhbi50YXIueHoKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSBwcHBkL01ha2VmaWxlLmxpbnV4IHwgIDcgKysrKy0t LQotIHBwcGQvcHBwY3J5cHQuYyAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVz IGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvcHBwZC9NYWtlZmlsZS5saW51eCBiL3BwcGQvTWFrZWZpbGUubGludXgKLWluZGV4IDU4YTYz NGNlOGMzYi4uY2I5ZDRmOWRjZjIyIDEwMDY0NAotLS0tIGEvcHBwZC9NYWtlZmlsZS5saW51eAot KysrIGIvcHBwZC9NYWtlZmlsZS5saW51eAotQEAgLTM1LDEwICszNSwxMCBAQCBlbmRpZgotIENP UFRTID0gLU8yIC1waXBlIC1XYWxsIC1nCi0gTElCUyA9IC1sY3J5cHRvCi0gCi0tIyBVbmNvbW1l bnQgdGhlIG5leHQgMiBsaW5lcyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCdzCi0r IyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jvc29m dCdzCi0gIyBNUy1DSEFQIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sLiAgQWxzbywgZWRpdCBwbHVn aW5zL3JhZGl1cy9NYWtlZmlsZS5saW51eC4KLSBDSEFQTVM9eQotLVVTRV9DUllQVD15Ci0rI1VT RV9DUllQVD15Ci0gIyBEb24ndCB1c2UgTVNMQU5NQU4gdW5sZXNzIHlvdSByZWFsbHkga25vdyB3 aGF0IHlvdSdyZSBkb2luZy4KLSAjTVNMQU5NQU49eQotICMgVW5jb21tZW50IHRoZSBuZXh0IGxp bmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNUFBFLiAgQ0hBUE1TIChhYm92ZSkgbXVzdAotQEAg LTEzOCw3ICsxMzgsOCBAQCBlbmRpZgotIAotIGlmZGVmIE5FRURERVMKLSBpZm5kZWYgVVNFX0NS WVBUCi0tTElCUyAgICAgKz0gLWxkZXMgJChMSUJTKQotK0NGTEFHUyAgICs9IC1JL3Vzci9pbmNs dWRlL29wZW5zc2wKLStMSUJTICAgICArPSAtbGNyeXB0bwotIGVsc2UKLSBDRkxBR1MgICArPSAt RFVTRV9DUllQVD0xCi0gZW5kaWYKLWRpZmYgLS1naXQgYS9wcHBkL3BwcGNyeXB0LmMgYi9wcHBk L3BwcGNyeXB0LmMKLWluZGV4IDhiODViMTMyNzZhYi4uNmIzNTM3NWVkYzVlIDEwMDY0NAotLS0t IGEvcHBwZC9wcHBjcnlwdC5jCi0rKysgYi9wcHBkL3BwcGNyeXB0LmMKLUBAIC02NCw3ICs2NCw3 IEBAIHVfY2hhciAqZGVzX2tleTsJLyogT1VUIDY0IGJpdCBERVMga2V5IHdpdGggcGFyaXR5IGJp dHMgYWRkZWQgKi8KLSAJZGVzX2tleVs3XSA9IEdldDdCaXRzKGtleSwgNDkpOwotIAotICNpZm5k ZWYgVVNFX0NSWVBUCi0tCWRlc19zZXRfb2RkX3Bhcml0eSgoZGVzX2NibG9jayAqKWRlc19rZXkp OwotKwlERVNfc2V0X29kZF9wYXJpdHkoKERFU19jYmxvY2sgKilkZXNfa2V5KTsKLSAjZW5kaWYK LSB9Ci0gCi1AQCAtMTU4LDI1ICsxNTgsMjUgQEAgdV9jaGFyICpjbGVhcjsJLyogT1VUIDggb2N0 ZXRzICovCi0gfQotIAotICNlbHNlIC8qIFVTRV9DUllQVCAqLwotLXN0YXRpYyBkZXNfa2V5X3Nj aGVkdWxlCWtleV9zY2hlZHVsZTsKLStzdGF0aWMgREVTX2tleV9zY2hlZHVsZQlrZXlfc2NoZWR1 bGU7Ci0gCi0gYm9vbAotIERlc1NldGtleShrZXkpCi0gdV9jaGFyICprZXk7Ci0gewotLQlkZXNf Y2Jsb2NrIGRlc19rZXk7Ci0rCURFU19jYmxvY2sgZGVzX2tleTsKLSAJTWFrZUtleShrZXksIGRl c19rZXkpOwotLQlkZXNfc2V0X2tleSgmZGVzX2tleSwga2V5X3NjaGVkdWxlKTsKLSsJREVTX3Nl dF9rZXkoJmRlc19rZXksICZrZXlfc2NoZWR1bGUpOwotIAlyZXR1cm4gKDEpOwotIH0KLSAKLSBi b29sCi0tRGVzRW5jcnlwdChjbGVhciwga2V5LCBjaXBoZXIpCi0rRGVzRW5jcnlwdChjbGVhciwg Y2lwaGVyKQotIHVfY2hhciAqY2xlYXI7CS8qIElOICA4IG9jdGV0cyAqLwotIHVfY2hhciAqY2lw aGVyOwkvKiBPVVQgOCBvY3RldHMgKi8KLSB7Ci0tCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9j ayAqKWNsZWFyLCAoZGVzX2NibG9jayAqKWNpcGhlciwKLS0JICAgIGtleV9zY2hlZHVsZSwgMSk7 Ci0rCURFU19lY2JfZW5jcnlwdCgoREVTX2NibG9jayAqKWNsZWFyLCAoREVTX2NibG9jayAqKWNp cGhlciwKLSsJICAgICZrZXlfc2NoZWR1bGUsIDEpOwotIAlyZXR1cm4gKDEpOwotIH0KLSAKLUBA IC0xODUsOCArMTg1LDggQEAgRGVzRGVjcnlwdChjaXBoZXIsIGNsZWFyKQotIHVfY2hhciAqY2lw aGVyOwkvKiBJTiAgOCBvY3RldHMgKi8KLSB1X2NoYXIgKmNsZWFyOwkvKiBPVVQgOCBvY3RldHMg Ki8KLSB7Ci0tCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9jayAqKWNpcGhlciwgKGRlc19jYmxv Y2sgKiljbGVhciwKLS0JICAgIGtleV9zY2hlZHVsZSwgMCk7Ci0rCURFU19lY2JfZW5jcnlwdCgo REVTX2NibG9jayAqKWNpcGhlciwgKERFU19jYmxvY2sgKiljbGVhciwKLSsJICAgICZrZXlfc2No ZWR1bGUsIDApOwotIAlyZXR1cm4gKDEpOwotIH0KLSAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBw LTIuNC43L3NlcmllcyBiL3BhdGNoZXMvcHBwLTIuNC43L3NlcmllcwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNmFlYWYxOTg0Li4wMDAwMDAwMDAKLS0tIGEvcGF0Y2hlcy9wcHAtMi40 Ljcvc2VyaWVzCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotIyBnZW5lcmF0ZWQgYnkg Z2l0LXB0eC1wYXRjaGVzCi0jdGFnOmJhc2UgLS1zdGFydC1udW1iZXIgMQotMDAwMS1hYm9ydC1v bi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5wYXRjaAotMDAwMi1zY3JpcHRzLUF2b2lkLWtpbGxp bmctd3JvbmctcHBwZC5wYXRjaAotMDAwMy1wcHBkLUZpeC1zaWduLWV4dGVuc2lvbi13aGVuLWRp c3BsYXlpbmctYnl0ZXMtaW4tb2N0LnBhdGNoCi0wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1l c3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAotMDAwNS1TZW5kLVBBRFQtb24tUFBQb0Ut ZGlzY29ubmVjdC5wYXRjaAotMDAwNi1wcHBkLWlweGNwLVByZXZlbnQtYnVmZmVyLW92ZXJydW4t b24tcmVtb3RlLXJvdXRlci1uLnBhdGNoCi0wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUt dHlwZS5wYXRjaAotMDAwOC1wcHBkLUZpeC1jY3BfY2lsZW4tY2FsY3VsYXRlZC1zaXplLWlmLWJv dGgtZGVmbGF0ZV9jLnBhdGNoCi0wMDA5LUZpeC1hLXR5cG8taW4tY29tbWVudC4tRGlmZi1mcm9t LVl1dWljaGktU29tZXlhLnBhdGNoCi0wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5l cy1mcm9tLXN5c2xvZy5wYXRjaAotMDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9tLXN5cy1lcnJuby5o LXRvLWVycm5vLmgucGF0Y2gKLTAwMTItcHBwZC1hbGxvdy11c2Utb2YtYXJiaXRyYXJ5LWludGVy ZmFjZS1uYW1lcy5wYXRjaAotMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2Yt dHR5bmFtZS5wYXRjaAotMDAxNC1wcHBkLVByb3ZpZGUtZXJyb3ItaW1wbGVtZW50YXRpb24taW4t cHBwb2UtZGlzY292ZXJ5LnBhdGNoCi0wMDE1LXBwcG9lLWluY2x1ZGUtbmV0aW5ldC1pbi5oLWJl Zm9yZS1saW51eC1pbi5oLnBhdGNoCi0wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoCi0wMDE3LU1h a2VmaWxlcy1jbGVhbnVwLnBhdGNoCi0wMDE4LUJ1Zy0zMDYyNjEtcHBwZC1kb2VzLW5vdC1wcm9w ZXJseS1jbG9zZS1kZXYtcHBwLW9uLXAucGF0Y2gKLTAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3Bp ZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAotMDAyMC1zdXBwb3J0LWJ1aWxk aW5nLXBwcGR1bXAtd2l0aC10aGUtc3lzdGVtLXpsaWIucGF0Y2gKLTAwMjEtZGlzYWJsZS11bm5l ZWRlZC1jb2RlLWluLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAotMDAyMi1jb3NtZXRpYy1jbGVh bnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAotMDAyMy1wcHBvZV9ub2Fkcy5wYXRjaAot MDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoCi0wMDI1LUNvcnJl Y3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaAotMDAyNi1wcHBvZS1jdXN0b20taG9zdC11bmlx LXRhZy5wYXRjaAotMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2gKLTAw MjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2gKLTAwMjktYWRkLXN1cHBvcnQtZm9yLXRoZS1G cmFtZWQtTVRVLVJhZGl1cy1hdHRyaWJ1dGUucGF0Y2gKLTAwMzAtMDE4X2lwLXVwX29wdGlvbi5w YXRjaAotMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFpbi5wYXRjaAotMDAzMi1leHBvcnQtQ0FM TF9GSUxFLXRvLXRoZS1saW5rLXNjcmlwdHMucGF0Y2gKLTAwMzMtaXB2Ni1hY2NlcHQtcmVtb3Rl LnBhdGNoCi0wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQu Yy1yY19tYXAucGF0Y2gKLTAwMzUtcmVzb2x2LmNvbmZfbm9fbG9nLnBhdGNoCi0wMDM2LURlYmlh bi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNoCi0wMDM3LUZpeC1idWZmZXItb3ZlcmZsb3ctaW4tcmNf bWtzaWQucGF0Y2gKLTAwMzgtRUFQLVRMUy1hdXRoZW50aWNhdGlvbi1zdXBwb3J0LWZvci1QUFAu cGF0Y2gKLTAwMzktUmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0aW9ucy13aXRoLWxpYmNyeXB0 by5wYXRjaAotMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhl LWxpYmNyeXB0LnBhdGNoCi0jdGFnOnB0eCAtLXN0YXJ0LW51bWJlciAxMDAKLTAxMDAtcHBwZC1t YWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gKLTAxMDEtcHBwZC1tYWtlLXRoZS1zZWxm LW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCi0jIGIwZTM0OWZkMzRiMmFhYzFhOWJh NGZmYjM4ZjQzYmUwICAtIGdpdC1wdHgtcGF0Y2hlcyBtYWdpYwpkaWZmIC0tZ2l0IGEvcGF0Y2hl cy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIw LnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFzLWlu LXRoZS1DRkxBR1MtMjIwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MC4uYzgzYjY0YjFjCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDAwMS1j b25maWd1cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIwLnBhdGNoCkBAIC0wLDAgKzEs MjggQEAKK0Zyb206ID0/VVRGLTg/cT9KYXJvc2xhdj0yMD1DNT1BMGthcnZhZGE/PSA8anNrYXJ2 YWRAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgOCBKYW4gMjAyMSAwMjo0Mzo0NiArMDEwMAorU3Vi amVjdDogW1BBVENIXSBjb25maWd1cmU6IEFsbG93IGNvbW1hcyBpbiB0aGUgQ0ZMQUdTICgjMjIw KQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJdCBhbGxvd3MgZS5nLiB0 aGUgZm9sbG93aW5nOgorLi9jb25maWd1cmUgLS1jZmxhZ3M9Jy1XcCwtRF9GT1JUSUZZX1NPVVJD RT0yJworCitTaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiDFoGthcnZhZGEgPGpza2FydmFkQHJlZGhh dC5jb20+CistLS0KKyBjb25maWd1cmUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1 cmUKK2luZGV4IGY5Nzc2NjNmZDhkYi4uYjBjM2QyYjQ5MTIyIDEwMDc1NQorLS0tIGEvY29uZmln dXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0xMjMsNyArMTIzLDcgQEAgbWtta2YoKSB7CisgCWVj aG8gIiAgJDIgPD0gJDEiCisgCXNlZCAtZSAicyxAREVTVERJUkAsJERFU1RESVIsZyIgLWUgInMs QFNZU0NPTkZALCRTWVNDT05GLGciIFwKKyAJICAgIC1lICJzLEBDUk9TU19DT01QSUxFQCwkQ1JP U1NfQ09NUElMRSxnIiAtZSAicyxAQ0NALCRDQyxnIiBcCistCSAgICAtZSAicyxAQ0ZMQUdTQCwk Q0ZMQUdTLGciICQxID4kMgorKwkgICAgLWUgInN8QENGTEFHU0B8JENGTEFHU3xnIiAkMSA+JDIK KyAgICAgZmkKKyB9CisgCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuOS8wMDAyLXBwcGQt Rml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3Ita2VybmVsLWhlYWQucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xp YmMtb3Ita2VybmVsLWhlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi4zM2NmMDAyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMDAy LXBwcGQtRml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3Ita2VybmVsLWhlYWQucGF0 Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbTogcGFsaSA8NzE0MTg3MStwYWxpQHVzZXJzLm5vcmVw bHkuZ2l0aHViLmNvbT4KK0RhdGU6IE1vbiwgMTUgRmViIDIwMjEgMDc6NTQ6MDEgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gcHBwZDogRml4IGNvbXBpbGF0aW9uIHdpdGggb2xkZXIgZ2xpYmMgb3Ig a2VybmVsIGhlYWRlcnMKKyAoIzI0OCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKKworZ2xpYmMgdmVyc2lvbnMgcHJpb3IgdG8gMi4yNCBkbyBub3QgZGVmaW5lIFNPTF9ORVRM SU5LIGFuZCBsaW51eCBrZXJuZWwKK3ZlcnNpb25zIHByaW9yIHRvIDQuMyBkbyBub3QgZGVmaW5l IE5FVExJTktfQ0FQX0FDSy4gU28gYWRkIGZhbGxiYWNrCitkZWZpbml0aW9ucyBmb3IgdGhlc2Ug bWFjcm9zIGludG8gcHBwZC9zeXMtbGludXguYyBmaWxlLgorCitBbHNvIGV4dGVuZCBkZXNjcmlw dGlvbiB3aHkgd2UgY2FsbCBTT0xfTkVUTElOSy9ORVRMSU5LX0NBUF9BQ0sgb3B0aW9uLgorCitT aWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwub3JnPgorLS0tCisgcHBwZC9z eXMtbGludXguYyB8IDE4ICsrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51 eC5jIGIvcHBwZC9zeXMtbGludXguYworaW5kZXggODUwMzNkOTcxMjRmLi41MGM0ZjJkYWI0MDMg MTAwNjQ0CistLS0gYS9wcHBkL3N5cy1saW51eC5jCisrKysgYi9wcHBkL3N5cy1saW51eC5jCitA QCAtMTI1LDYgKzEyNSwxNCBAQAorICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisgI2luY2x1 ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9hZGRyLmg+CisrLyog Z2xpYmMgdmVyc2lvbnMgcHJpb3IgdG8gMi4yNCBkbyBub3QgZGVmaW5lIFNPTF9ORVRMSU5LICov CisrI2lmbmRlZiBTT0xfTkVUTElOSworKyNkZWZpbmUgU09MX05FVExJTksgMjcwCisrI2VuZGlm CisrLyogbGludXgga2VybmVsIHZlcnNpb25zIHByaW9yIHRvIDQuMyBkbyBub3QgZGVmaW5lL3N1 cHBvcnQgTkVUTElOS19DQVBfQUNLICovCisrI2lmbmRlZiBORVRMSU5LX0NBUF9BQ0sKKysjZGVm aW5lIE5FVExJTktfQ0FQX0FDSyAxMAorKyNlbmRpZgorICNlbmRpZgorIAorICNpbmNsdWRlICJw cHBkLmgiCitAQCAtMjg0Myw3ICsyODUxLDE1IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3BlZXJfaXB2 Nl9hZGRyZXNzKHVuc2lnbmVkIGludCBpZmFjZSwgc3RydWN0IGluNl9hZGRyICpsb2NhbF9hCisg ICAgIGlmIChmZCA8IDApCisgICAgICAgICByZXR1cm4gMDsKKyAKKy0gICAgLyogZG8gbm90IGFz ayBmb3IgZXJyb3IgbWVzc2FnZSBjb250ZW50ICovCisrICAgIC8qCisrICAgICAqIFRlbGwga2Vy bmVsIHRvIG5vdCBzZW5kIHRvIHVzIHBheWxvYWQgb2YgYWNrbm93bGVkZ21lbnQgZXJyb3IgbWVz c2FnZS4KKysgICAgICogTkVUTElOS19DQVBfQUNLIG9wdGlvbiBpcyBzdXBwb3J0ZWQgc2luY2Ug TGludXgga2VybmVsIHZlcnNpb24gNC4zIGFuZAorKyAgICAgKiBvbGRlciBrZXJuZWwgdmVyc2lv bnMgYWx3YXlzIHNlbmQgZnVsbCBwYXlsb2FkIGluIGFja25vd2xlZGdtZW50IG5ldGxpbmsKKysg ICAgICogbWVzc2FnZS4gV2UgaWdub3JlIHBheWxvYWQgb2YgdGhpcyBtZXNzYWdlIGFzIHdlIG5l ZWQgb25seSBlcnJvciBjb2RlLAorKyAgICAgKiB0byBjaGVjayBpZiBvdXIgc2V0IHJlbW90ZSBw ZWVyIGFkZHJlc3MgcmVxdWVzdCBzdWNjZWVkZWQgb3IgZmFpbGVkLgorKyAgICAgKiBTbyBpZ25v cmUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZvbGxvd2luZyBzZXRzb2Nrb3B0KCkgY2FsbCBhcyBz ZXR0aW5nCisrICAgICAqIG9wdGlvbiBORVRMSU5LX0NBUF9BQ0sgbWVhbnMgZm9yIHVzIGp1c3Qg YSBrZXJuZWwgaGludCAvIG9wdGltaXphdGlvbi4KKysgICAgICovCisgICAgIG9uZSA9IDE7Cisg ICAgIHNldHNvY2tvcHQoZmQsIFNPTF9ORVRMSU5LLCBORVRMSU5LX0NBUF9BQ0ssICZvbmUsIHNp emVvZihvbmUpKTsKKyAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjAtc3VwcG9y dC1idWlsZGluZy1wcHBkdW1wLXdpdGgtdGhlLXN5c3RlbS16bGliLnBhdGNoIGIvcGF0Y2hlcy9w cHAtMi40LjkvMDEwMC1zdXBwb3J0LWJ1aWxkaW5nLXBwcGR1bXAtd2l0aC10aGUtc3lzdGVtLXps aWIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA2MyUKcmVuYW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40 LjcvMDAyMC1zdXBwb3J0LWJ1aWxkaW5nLXBwcGR1bXAtd2l0aC10aGUtc3lzdGVtLXpsaWIucGF0 Y2gKcmVuYW1lIHRvIHBhdGNoZXMvcHBwLTIuNC45LzAxMDAtc3VwcG9ydC1idWlsZGluZy1wcHBk dW1wLXdpdGgtdGhlLXN5c3RlbS16bGliLnBhdGNoCmluZGV4IGVmODI2NWQ0My4uMzgzYmU5ZDYw IDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBw ZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8w MTAwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaApA QCAtMSwxOSArMSwyNSBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0 cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCitGcm9tOiBB bGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgorRGF0ZTogV2VkLCAxNiBKdW4gMjAyMSAx ODoyMjo0OCArMDIwMAogU3ViamVjdDogW1BBVENIXSBzdXBwb3J0IGJ1aWxkaW5nIHBwcGR1bXAg d2l0aCB0aGUgc3lzdGVtIHpsaWIKIAotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGVi aWFuLnRhci54egorRm9yd2FyZGVkOiBodHRwczovL2dpdGh1Yi5jb20vcGF1bHVzbWFjay9wcHAv cHVsbC8xODkKK2J1dCBuYWNrZWQ6ICJpdCBjYXVzZWQgY29tcGlsZSBmYWlsdXJlcyAob24gRmVk b3JhIGF0IGxlYXN0KSwgd2hpY2gKK3JlbWluZGVkIG1lIHRoYXQgdGhlIHpsaWIuYyBoZXJlIGlz IG5vdCB0aGUgc2FtZSBhcyB1cHN0cmVhbTsgaXQgaGFzCitleHRyYSBmdW5jdGlvbnMgdGhhdCBJ IGFkZGVkIGEgbG9uZyB0aW1lIGFnby4iCiAKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmlj aCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgorCitJbXBvcnRlZCBmcm9tIHBwcF8yLjQuOS0x KzEuZGViaWFuLnRhci54egorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRo b3JzaXMuY29tPgogLS0tCiAgcHBwZHVtcC9NYWtlZmlsZS5saW51eCB8IDI4ICsrKysrKysrKysr KysrKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3BwcGR1bXAvTWFrZWZpbGUubGludXggYi9wcHBk dW1wL01ha2VmaWxlLmxpbnV4Ci1pbmRleCA2NWU1YzE0OTE0ZmIuLjg3Nzc3ZmFiNWU5NCAxMDA2 NDQKK2luZGV4IGE5NDE4N2ZhOWUyOS4uZGU3ZTU3NGQxMGUxIDEwMDY0NAogLS0tIGEvcHBwZHVt cC9NYWtlZmlsZS5saW51eAogKysrIGIvcHBwZHVtcC9NYWtlZmlsZS5saW51eAotQEAgLTIsMTgg KzIsNDIgQEAgREVTVERJUiA9ICQoSU5TVFJPT1QpQERFU1RESVJACitAQCAtNiwxNSArNiwzOSBA QCBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKICBCSU5ESVIgPSAkKERFU1RESVIpL3Ni aW4KICBNQU5ESVIgPSAkKERFU1RESVIpL3NoYXJlL21hbi9tYW44CiAgCkBAIC0yMSwxMCArMjcs NyBAQCBpbmRleCA2NWU1YzE0OTE0ZmIuLjg3Nzc3ZmFiNWU5NCAxMDA2NDQKICtET19CU0RfQ09N UFJFU1M9eQogK0hBVkVfWkxJQj1uCiArCi0gQ09QVFM9LU8yIC1nCi0gQ0ZMQUdTPSAkKENPUFRT KSAtSS4uL2luY2x1ZGUvbmV0Ci0gTERGTEFHUz0kKExET1BUUykKLSAKKyBDRkxBR1MgPSAkKENP UFRTKSAtSS4uL2luY2x1ZGUvbmV0CiAtT0JKUyA9IHBwcGR1bXAubyBic2QtY29tcC5vIGRlZmxh dGUubyB6bGliLm8KICtPQkpTID0gcHBwZHVtcC5vCiArTElCUyA9CkBAIC00MCwxNCArNDMsMTQg QEAgaW5kZXggNjVlNWMxNDkxNGZiLi44Nzc3N2ZhYjVlOTQgMTAwNjQ0CiArZWxzZQogK0NGTEFH UyArPSAtRERPX0RFRkxBVEU9MAogK2VuZGlmCi0rCisgCiAraWZkZWYgRE9fQlNEX0NPTVBSRVNT CiArQ0ZMQUdTICs9IC1ERE9fQlNEX0NPTVBSRVNTPTEKICtPQkpTICs9IGJzZC1jb21wLm8KICtl bHNlCiArQ0ZMQUdTICs9IC1ERE9fQlNEX0NPTVBSRVNTPTAKICtlbmRpZgotIAorKyAKICBJTlNU QUxMPSBpbnN0YWxsCiAgCiAgYWxsOglwcHBkdW1wCmRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDIxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0 Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUt cHBwb2F0bS1wbHVnaW4ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gcGF0 Y2hlcy9wcHAtMi40LjcvMDAyMS1kaXNhYmxlLXVubmVlZGVkLWNvZGUtaW4tdGhlLXBwcG9hdG0t cGx1Z2luLnBhdGNoCnJlbmFtZSB0byBwYXRjaGVzL3BwcC0yLjQuOS8wMTAxLWRpc2FibGUtdW5u ZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKaW5kZXggMmZiOWM1NTczLi44 ODJjOTEzYWEgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjEtZGlzYWJsZS11bm5l ZWRlZC1jb2RlLWluLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0y LjQuOS8wMTAxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0 Y2gKQEAgLTEsNSArMSw1IEBACi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5n dXRyb25peC5kZT4KLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKK0Zyb206 IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+CitEYXRlOiBXZWQsIDE2IEp1biAyMDIx IDE4OjIyOjQ4ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgdW5uZWVkZWQgY29kZSBp biB0aGUgcHBwb2F0bSBwbHVnaW4KIAogVGhpcyBwYXRjaCBoYWx2ZXMgdGhlIHNpemUgb2YgdGhl IFBQUG9BIHBsdWdpbiBieSBkaXNhYmxpbmcgZmVhdHVyZXMKQEAgLTEzLDkgKzEzLDkgQEAgcGx1 Z2luIHdpdGggdGhlIHJlYWwgbGliYXRtLiBJIHJlYWxseSBkb3VidCBhbnlib2R5IGNhcmVzLCBh bnl3YXkuCiAKIAogCi1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6 CitJbXBvcnRlZCBmcm9tIHBwcF8yLjQuOS0xKzEuZGViaWFuLnRhci54egogCi1TaWduZWQtb2Zm LWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KK1NpZ25lZC1v ZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+CiAtLS0KICBwcHBkL3BsdWdp bnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eCB8IDQgKysrKwogIHBwcGQvcGx1Z2lucy9wcHBvYXRt L3BwcG9hdG0uYyAgICAgIHwgNCArKysrCkBAIC0yMywxMCArMjMsMTAgQEAgU2lnbmVkLW9mZi1i eTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CiAgMyBmaWxlcyBj aGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcHBw b2F0bS9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL01ha2VmaWxlLmxpbnV4 Ci1pbmRleCAwMDI2MDNjNmNiZWYuLjc2ZDgxYWNlZDcwYSAxMDA2NDQKK2luZGV4IGQzYTgwODZi NjllYS4uMDM2YjE5MzYzN2RmIDEwMDY0NAogLS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFr ZWZpbGUubGludXgKICsrKyBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL01ha2VmaWxlLmxpbnV4Ci1A QCAtMjUsOSArMjUsMTMgQEAgaWZkZWYgSEFWRV9MSUJBVE0KK0BAIC0yNiw5ICsyNiwxMyBAQCBp ZmRlZiBIQVZFX0xJQkFUTQogIExJQlMgOj0gLWxhdG0KICBlbHNlCiAgQ0ZMQUdTICs9IC1JLgpA QCAtNDEsMTAgKzQxLDEwIEBAIGluZGV4IDAwMjYwM2M2Y2JlZi4uNzZkODFhY2VkNzBhIDEwMDY0 NAogICMqKioqKioqKioKICBhbGw6ICQoUExVR0lOKQogZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lu cy9wcHBvYXRtL3BwcG9hdG0uYyBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwotaW5k ZXggZDY5MzM1MGJjNDczLi5hNzU2MGU5ZmIwYzYgMTAwNjQ0CitpbmRleCA1YTNlY2Q2MWI2YTIu LjkwZDBjOWE4NWQ5ZiAxMDA2NDQKIC0tLSBhL3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0u YwogKysrIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5jCi1AQCAtMTQyLDggKzE0Miwx MiBAQCBzdGF0aWMgaW50IGNvbm5lY3RfcHBwb2F0bSh2b2lkKQorQEAgLTE0NSw4ICsxNDUsMTIg QEAgc3RhdGljIGludCBjb25uZWN0X3BwcG9hdG0odm9pZCkKICAJcW9zLnR4dHAudHJhZmZpY19j bGFzcyA9IHFvcy5yeHRwLnRyYWZmaWNfY2xhc3MgPSBBVE1fVUJSOwogIAkvKiBUT0RPOiBzdXBw b3J0IHNpbXBsaWZpZWQgUW9TIHNldHRpbmcgKi8KICAJaWYgKHFvc3N0ciAhPSBOVUxMKQpkaWZm IC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjkvMDEwMi1wcHBvZV9ub2Fkcy5wYXRjaCBiL3BhdGNo ZXMvcHBwLTIuNC45LzAxMDItcHBwb2Vfbm9hZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi42NjI5ZDQxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzL3Bw cC0yLjQuOS8wMTAyLXBwcG9lX25vYWRzLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb206IEFs ZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+CitEYXRlOiBXZWQsIDE2IEp1biAyMDIxIDE4 OjIyOjQ4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwcG9lX25vYWRzCisKK0ltcG9ydGVkIGZy b20gcHBwXzIuNC45LTErMS5kZWJpYW4udGFyLnh6CisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRl ciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+CistLS0KKyBwcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2lu LmMgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2luLmMgYi9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2lu LmMKK2luZGV4IGRlOWI4MTY2Y2U3Yi4uNThmYmRmOTViZTNmIDEwMDY0NAorLS0tIGEvcHBwZC9w bHVnaW5zL3BwcG9lL3BsdWdpbi5jCisrKysgYi9wcHBkL3BsdWdpbnMvcHBwb2UvcGx1Z2luLmMK K0BAIC00MTIsOCArNDEyLDYgQEAgcGx1Z2luX2luaXQodm9pZCkKKyAgICAgfQorIAorICAgICBh ZGRfb3B0aW9ucyhPcHRpb25zKTsKKy0KKy0gICAgaW5mbygiUFBQb0UgcGx1Z2luIGZyb20gcHBw ZCAlcyIsIFZFUlNJT04pOworIH0KKyAKKyB2b2lkIHBwcG9lX2NoZWNrX29wdGlvbnModm9pZCkK ZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYu cGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAzLUZvcndhcmRlZC1odHRwcy1naXRodWIuY29t LXBhdWx1c21hY2stcHBwLWlzc3Vlcy0xODcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVu YW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40LjcvMDAyOC1wcHAtMi4zLjExLW9lZG9kLmRpZi5wYXRj aApyZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwMy1Gb3J3YXJkZWQtaHR0cHMtZ2l0aHVi LmNvbS1wYXVsdXNtYWNrLXBwcC1pc3N1ZXMtMTg3LnBhdGNoCmluZGV4IDgxNTFjM2JlMi4uMzhl YjViNzkxIDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI4LXBwcC0yLjMuMTEtb2Vk b2QuZGlmLnBhdGNoCisrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDMtRm9yd2FyZGVkLWh0dHBz LWdpdGh1Yi5jb20tcGF1bHVzbWFjay1wcHAtaXNzdWVzLTE4Ny5wYXRjaApAQCAtMSwxMCArMSwy MiBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1E YXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBw cC0yLjMuMTEtb2Vkb2QuZGlmCitGcm9tOiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29t PgorRGF0ZTogV2VkLCAxNiBKdW4gMjAyMSAxODoyMjo0OCArMDIwMAorU3ViamVjdDogW1BBVENI XSBGb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9pc3N1ZXMvMTg3 CiAKLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKK1Vwc3RyZWFt IHNhaWQ6CiAKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgorIgorSG1tbSwgZGlhbC1vbi1kZW1hbmQgd2FzIG5ldmVyIHRlc3RlZCB3aXRo IHRoZSBzeW5jIG9wdGlvbiwgYW5kIGluIGZhY3QgSSBkb24ndAora25vdyB3aGF0IGRldmljZXMg d291bGQgdXNlIHRoYXQgb3B0aW9uLgorCitUbyBiZSBhY2NlcHRlZCwgdGhlIHBhdGNoIHdvdWxk IG5lZWQgYSBzaWduLW9mZiBhbmQgYSBkZXNjcmlwdGlvbiB0aGF0CitleHBsYWluZWQgdGhlIGNo YW5nZXMgaW4gdGhlIHBhdGNoIC0gaW4gcGFydGljdWxhciwgd2hhdCB0aGUgbGFyZ2UgbHVtcCBv ZiBjb2RlCithZGRlZCB0byBkZW1hbmRfcmV4bWl0KCkgaXMgZG9pbmcuCisiCisKKworSW1wb3J0 ZWQgZnJvbSBwcHBfMi40LjktMSsxLmRlYmlhbi50YXIueHoKKworU2lnbmVkLW9mZi1ieTogQWxl eGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KIC0tLQogIHBwcGQvZGVtYW5kLmMgfCA5OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogIHBwcGQvaXBjcC5jICAgfCAgMiArLQpAQCAtMTMsNyArMjUsNyBAQCBTaWduZWQtb2ZmLWJ5 OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KICA0IGZpbGVzIGNo YW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEv cHBwZC9kZW1hbmQuYyBiL3BwcGQvZGVtYW5kLmMKLWluZGV4IDVlNTc2NThlYTgzMS4uM2VkZGYz MDE2ZDk4IDEwMDY0NAoraW5kZXggMjg5YzlmOGZkZDU3Li40YzYxNDQ0ZDM5NjggMTAwNjQ0CiAt LS0gYS9wcHBkL2RlbWFuZC5jCiArKysgYi9wcHBkL2RlbWFuZC5jCiBAQCAtMzYsNiArMzYsOCBA QApAQCAtMzQsNyArNDYsNyBAQCBpbmRleCA1ZTU3NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5OCAxMDA2 NDQKICAjaWZkZWYgUFBQX0ZJTFRFUgogICNpbmNsdWRlIDxwY2FwLWJwZi5oPgogICNlbmRpZgot QEAgLTIyMSw2ICsyMjUsMTQgQEAgbG9vcF9jaGFycyhwLCBuKQorQEAgLTIxOCw2ICsyMjIsMTQg QEAgbG9vcF9jaGFycyh1bnNpZ25lZCBjaGFyICpwLCBpbnQgbikKICAgICAgaW50IGMsIHJ2Owog IAogICAgICBydiA9IDA7CkBAIC00OSwxNCArNjEsMTIgQEAgaW5kZXggNWU1NzY1OGVhODMxLi4z ZWRkZjMwMTZkOTggMTAwNjQ0CiAgICAgIGZvciAoOyBuID4gMDsgLS1uKSB7CiAgCWMgPSAqcCsr OwogIAlpZiAoYyA9PSBQUFBfRkxBRykgewotQEAgLTI5OSwxNyArMzExLDEwMiBAQCBsb29wX2Zy YW1lKGZyYW1lLCBsZW4pCitAQCAtMjk0LDE2ICszMDYsMTAxIEBAIGxvb3BfZnJhbWUodW5zaWdu ZWQgY2hhciAqZnJhbWUsIGludCBsZW4pCiAgICogbG9vcGJhY2ssIG5vdyB0aGF0IHRoZSByZWFs IHNlcmlhbCBsaW5rIGlzIHVwLgogICAqLwogIHZvaWQKLS1kZW1hbmRfcmV4bWl0KHByb3RvKQot K2RlbWFuZF9yZXhtaXQocHJvdG8sIG5ld2lwKQotICAgICBpbnQgcHJvdG87Ci0rICAgIHVfaW50 MzJfdCBuZXdpcDsKKy1kZW1hbmRfcmV4bWl0KGludCBwcm90bykKKytkZW1hbmRfcmV4bWl0KGlu dCBwcm90bywgdV9pbnQzMl90IG5ld2lwKQogIHsKICAgICAgc3RydWN0IHBhY2tldCAqcGt0LCAq cHJldiwgKm5leHRwa3Q7CiArICAgIHVuc2lnbmVkIHNob3J0IGNoZWNrc3VtOwpAQCAtNjksOSAr NzksMTEgQEAgaW5kZXggNWU1NzY1OGVhODMxLi4zZWRkZjMwMTZkOTggMTAwNjQ0CiAgICAgIHBy ZXYgPSBOVUxMOwogICAgICBwa3QgPSBwZW5kX3E7CiAgICAgIHBlbmRfcSA9IE5VTEw7CisrCiAr ICAgIHR2LnR2X3NlYyA9IDE7CiArICAgIHR2LnR2X3VzZWMgPSAwOwotKyAgICBzZWxlY3QoMCxO VUxMLE5VTEwsTlVMTCwmdHYpOwkvKiBTbGVlcCBmb3IgMSBTZWNvbmRzICovCisrICAgIHNlbGVj dCgwLE5VTEwsTlVMTCxOVUxMLCZ0dik7CS8qIFNsZWVwIGZvciAxIFNlY29uZCAqLworKwogICAg ICBmb3IgKDsgcGt0ICE9IE5VTEw7IHBrdCA9IG5leHRwa3QpIHsKICAJbmV4dHBrdCA9IHBrdC0+ bmV4dDsKICAJaWYgKFBQUF9QUk9UT0NPTChwa3QtPmRhdGEpID09IHByb3RvKSB7CkBAIC04Myw3 ICs5NSw2IEBAIGluZGV4IDVlNTc2NThlYTgzMS4uM2VkZGYzMDE2ZDk4IDEwMDY0NAogKyAgICAg ICAgICAgICAgICBpZiAoY2hlY2tzdW0gPT0gMHhGRkZGKSB7CiArICAgICAgICAgICAgICAgICAg ICBjaGVja3N1bSA9IDA7CiArICAgICAgICAgICAgICAgIH0KLSsKICsgCiArICAgICAgICAgICAg ICAgIGlmIChwa3QtPmRhdGFbMTNdID09IDE3KSB7CiArICAgICAgICAgICAgICAgICAgICBwa3Rf Y2hlY2tzdW0gPSAgKigodW5zaWduZWQgc2hvcnQgKikgKHBrdC0+ZGF0YSsxMCtpcGhkcikpOwpA QCAtMTU0LDEwICsxNjUsMTAgQEAgaW5kZXggNWU1NzY1OGVhODMxLi4zZWRkZjMwMTZkOTggMTAw NjQ0CiAgCSAgICBmcmVlKHBrdCk7CiAgCX0gZWxzZSB7CiBkaWZmIC0tZ2l0IGEvcHBwZC9pcGNw LmMgYi9wcHBkL2lwY3AuYwotaW5kZXggYzhmZTI3OWQ0ZWRlLi5kY2VjYTgwNzU0MmEgMTAwNjQ0 CitpbmRleCAzMDJjYTQwYjRjODMuLjNhYzI2YTA4MDMyYSAxMDA2NDQKIC0tLSBhL3BwcGQvaXBj cC5jCiArKysgYi9wcHBkL2lwY3AuYwotQEAgLTE5MDQsNyArMTkwNCw3IEBAIGlwY3BfdXAoZikK K0BAIC0xODUwLDcgKzE4NTAsNyBAQCBpcGNwX3VwKGZzbSAqZikKICAJCSAgICBwcm94eV9hcnBf c2V0W2YtPnVuaXRdID0gMTsKICAKICAJfQpAQCAtMTY3LDEyICsxNzgsMTIgQEAgaW5kZXggYzhm ZTI3OWQ0ZWRlLi5kY2VjYTgwNzU0MmEgMTAwNjQ0CiAgCiAgICAgIH0gZWxzZSB7CiBkaWZmIC0t Z2l0IGEvcHBwZC9pcHY2Y3AuYyBiL3BwcGQvaXB2NmNwLmMKLWluZGV4IDM1NmZmODRlYWQ0MS4u YzE2MDJmNDFjMjA2IDEwMDY0NAoraW5kZXggNDMxY2I2MjIxMWJmLi5hMzJiMDAwMmUxMGQgMTAw NjQ0CiAtLS0gYS9wcHBkL2lwdjZjcC5jCiArKysgYi9wcHBkL2lwdjZjcC5jCi1AQCAtMTIzMiw3 ICsxMjMyLDcgQEAgaXB2NmNwX3VwKGYpCi0gCSAgICB9Ci0gCitAQCAtMTI1Myw3ICsxMjUzLDcg QEAgaXB2NmNwX3VwKGZzbSAqZikKKyAJCWlmIChzaWY2ZGVmYXVsdHJvdXRlKGYtPnVuaXQsIGdv LT5vdXJpZCwgaG8tPmhpc2lkKSkKKyAJCSAgICBkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9 IDE7CiAgCX0KIC0JZGVtYW5kX3JleG1pdChQUFBfSVBWNik7CiArCWRlbWFuZF9yZXhtaXQoUFBQ X0lQVjYsMCk7CkBAIC0xODAsMTUgKzE5MSwxNSBAQCBpbmRleCAzNTZmZjg0ZWFkNDEuLmMxNjAy ZjQxYzIwNiAxMDA2NDQKICAKICAgICAgfSBlbHNlIHsKIGRpZmYgLS1naXQgYS9wcHBkL3BwcGQu aCBiL3BwcGQvcHBwZC5oCi1pbmRleCA3NDk1ZGY2NTdmZTkuLmU2NTEwNmQ0YzEyNiAxMDA2NDQK K2luZGV4IDYxMjkwMmY1NWQwZC4uMTBhOTk3NzU5OGFhIDEwMDY0NAogLS0tIGEvcHBwZC9wcHBk LmgKICsrKyBiL3BwcGQvcHBwZC5oCi1AQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgZGVtYW5kX2Nv bmYgX19QKCh2b2lkKSk7CS8qIGNvbmZpZyBpbnRlcmZhY2UocykgZm9yIGRlbWFuZC1kaWFsICov Ci0gdm9pZCBkZW1hbmRfYmxvY2sgX19QKCh2b2lkKSk7CS8qIHNldCBhbGwgTlBzIHRvIHF1ZXVl IHVwIHBhY2tldHMgKi8KLSB2b2lkIGRlbWFuZF91bmJsb2NrIF9fUCgodm9pZCkpOyAvKiBzZXQg YWxsIE5QcyB0byBwYXNzIHBhY2tldHMgKi8KLSB2b2lkIGRlbWFuZF9kaXNjYXJkIF9fUCgodm9p ZCkpOyAvKiBzZXQgYWxsIE5QcyB0byBkaXNjYXJkIHBhY2tldHMgKi8KLS12b2lkIGRlbWFuZF9y ZXhtaXQgX19QKChpbnQpKTsJLyogcmV0cmFuc21pdCBzYXZlZCBmcmFtZXMgZm9yIGFuIE5QICov Ci0rdm9pZCBkZW1hbmRfcmV4bWl0IF9fUCgoaW50LCB1X2ludDMyX3QpKTsgLyogcmV0cmFuc21p dCBzYXZlZCBmcmFtZXMgZm9yIGFuIE5QKi8KLSBpbnQgIGxvb3BfY2hhcnMgX19QKCh1bnNpZ25l ZCBjaGFyICosIGludCkpOyAvKiBwcm9jZXNzIGNoYXJzIGZyb20gbG9vcGJhY2sgKi8KLSBpbnQg IGxvb3BfZnJhbWUgX19QKCh1bnNpZ25lZCBjaGFyICosIGludCkpOyAvKiBzaG91bGQgd2UgYnJp bmcgbGluayB1cD8gKi8KK0BAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBkZW1hbmRfY29uZih2b2lk KTsJLyogY29uZmlnIGludGVyZmFjZShzKSBmb3IgZGVtYW5kLWRpYWwgKi8KKyB2b2lkIGRlbWFu ZF9ibG9jayh2b2lkKTsJLyogc2V0IGFsbCBOUHMgdG8gcXVldWUgdXAgcGFja2V0cyAqLworIHZv aWQgZGVtYW5kX3VuYmxvY2sodm9pZCk7IC8qIHNldCBhbGwgTlBzIHRvIHBhc3MgcGFja2V0cyAq LworIHZvaWQgZGVtYW5kX2Rpc2NhcmQodm9pZCk7IC8qIHNldCBhbGwgTlBzIHRvIGRpc2NhcmQg cGFja2V0cyAqLworLXZvaWQgZGVtYW5kX3JleG1pdChpbnQpOwkvKiByZXRyYW5zbWl0IHNhdmVk IGZyYW1lcyBmb3IgYW4gTlAgKi8KKyt2b2lkIGRlbWFuZF9yZXhtaXQoaW50LCB1X2ludDMyX3Qp OwkvKiByZXRyYW5zbWl0IHNhdmVkIGZyYW1lcyBmb3IgYW4gTlAgKi8KKyBpbnQgIGxvb3BfY2hh cnModW5zaWduZWQgY2hhciAqLCBpbnQpOyAvKiBwcm9jZXNzIGNoYXJzIGZyb20gbG9vcGJhY2sg Ki8KKyBpbnQgIGxvb3BfZnJhbWUodW5zaWduZWQgY2hhciAqLCBpbnQpOyAvKiBzaG91bGQgd2Ug YnJpbmcgbGluayB1cD8gKi8KICAKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzUt cmVzb2x2LmNvbmZfbm9fbG9nLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwNC1yZXNvbHYu Y29uZl9ub19sb2cucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA1NiUKcmVuYW1lIGZyb20gcGF0Y2hl cy9wcHAtMi40LjcvMDAzNS1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2gKcmVuYW1lIHRvIHBhdGNo ZXMvcHBwLTIuNC45LzAxMDQtcmVzb2x2LmNvbmZfbm9fbG9nLnBhdGNoCmluZGV4IGFlYTZiMjA4 Mi4uNjYyNjVhYTZjIDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM1LXJlc29sdi5j b25mX25vX2xvZy5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTA0LXJlc29sdi5jb25m X25vX2xvZy5wYXRjaApAQCAtMSwxOSArMSwxOSBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxt Lm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUw ICswMjAwCitGcm9tOiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgorRGF0ZTogV2Vk LCAxNiBKdW4gMjAyMSAxODoyMjo0OCArMDIwMAogU3ViamVjdDogW1BBVENIXSByZXNvbHYuY29u Zl9ub19sb2cKIAotSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54egor SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjktMSsxLmRlYmlhbi50YXIueHoKIAotU2lnbmVkLW9mZi1i eTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CitTaWduZWQtb2Zm LWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgogLS0tCiAgcHBwZC9pcGNwLmMg fCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAK IGRpZmYgLS1naXQgYS9wcHBkL2lwY3AuYyBiL3BwcGQvaXBjcC5jCi1pbmRleCBkNmUwZTJhNjk5 ZmUuLmI4MWIyZmQwYTI5ZiAxMDA2NDQKK2luZGV4IDNhYzI2YTA4MDMyYS4uY2UwMDIyNjJiYjM0 IDEwMDY0NAogLS0tIGEvcHBwZC9pcGNwLmMKICsrKyBiL3BwcGQvaXBjcC5jCi1AQCAtMjE1Miw3 ICsyMTUyLDcgQEAgY3JlYXRlX3Jlc29sdihwZWVyZG5zMSwgcGVlcmRuczIpCitAQCAtMjA5Myw3 ICsyMDkzLDcgQEAgY3JlYXRlX3Jlc29sdih1X2ludDMyX3QgcGVlcmRuczEsIHVfaW50MzJfdCBw ZWVyZG5zMikKICAKICAgICAgZiA9IGZvcGVuKF9QQVRIX1JFU09MViwgInciKTsKICAgICAgaWYg KGYgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAzNi1EZWJpYW4t c3BlY2lmaWMtY2hhbmdlcy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDUtRGViaWFuLXNw ZWNpZmljLWNoYW5nZXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gcGF0 Y2hlcy9wcHAtMi40LjcvMDAzNi1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaApyZW5hbWUg dG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwNS1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaApp bmRleCA5NTc2YWYxMTguLjg2YmJhMzVmOSAxMDA2NDQKLS0tIGEvcGF0Y2hlcy9wcHAtMi40Ljcv MDAzNi1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaAorKysgYi9wYXRjaGVzL3BwcC0yLjQu OS8wMTA1LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNoCkBAIC0xLDIzICsxLDI3IEBACi1G cm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IFNh dCwgMjggU2VwIDIwMTkgMDg6MTE6NTAgKzAyMDAKK0Zyb206IEFsZXhhbmRlciBEYWhsIDxhZGFA dGhvcnNpcy5jb20+CitEYXRlOiBXZWQsIDE2IEp1biAyMDIxIDE4OjIyOjQ5ICswMjAwCiBTdWJq ZWN0OiBbUEFUQ0hdIERlYmlhbi1zcGVjaWZpYyBjaGFuZ2VzLgogCi1JbXBvcnRlZCBmcm9tIHBw cF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6CitJbXBvcnRlZCBmcm9tIHBwcF8yLjQuOS0xKzEu ZGViaWFuLnRhci54egogCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhv cnNpcy5jb20+CiAtLS0KLSBwcHBkL01ha2VmaWxlLmxpbnV4ICAgIHwgNiArKy0tLS0KKyBwcHBk L01ha2VmaWxlLmxpbnV4ICAgIHwgNiArKystLS0KICBwcHBkL3BhdGhuYW1lcy5oICAgICAgIHwg MiArLQogIHBwcGQvcHBwZC5oICAgICAgICAgICAgfCAyICstCiAgcHBwZHVtcC9NYWtlZmlsZS5s aW51eCB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQorIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQogCiBkaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmlsZS5saW51eCBiL3BwcGQvTWFrZWZpbGUubGlu dXgKLWluZGV4IDE2YjNlZTg3OTc5MS4uNTU0OTE0NWU1NzkxIDEwMDY0NAoraW5kZXggMjI4Mzdj NTA0MTVlLi5iYmI0NzY4MjdjZWEgMTAwNjQ0CiAtLS0gYS9wcHBkL01ha2VmaWxlLmxpbnV4CiAr KysgYi9wcHBkL01ha2VmaWxlLmxpbnV4Ci1AQCAtNjEsMTQgKzYxLDE0IEBAIEhBVkVfTVVMVElM SU5LPXkKLSBVU0VfVERCPXkKK0BAIC02NCwxNyArNjQsMTcgQEAgVVNFX1REQj15CisgIyBVbmNv bW1lbnQgdGhlIG5leHQgbGluZSB0byBlbmFibGUgVHlwZT1ub3RpZnkgc2VydmljZXMgaW4gc3lz dGVtZAorICMgSWYgZW5hYmxlZCwgYW5kIHRoZSB1c2VyIHNldHMgdGhlIHVwX3Nkbm90aWZ5IG9w dGlvbiwgdGhlbgorICMgcHBwZCB3aWxsIG5vdCBkZXRhY2ggYW5kIHdpbGwgbm90aWZ5IHN5c3Rl bWQgd2hlbiB1cC4KKy0jU1lTVEVNRD15CisrU1lTVEVNRD15CiAgCiAgSEFTX1NIQURPVz15CiAt I1VTRV9QQU09eQpAQCAtMzMsMjMgKzM3LDExIEBAIGluZGV4IDE2YjNlZTg3OTc5MS4uNTU0OTE0 NWU1NzkxIDEwMDY0NAogIAogICMgRW5hYmxlIEVBUCBTUlAtU0hBMSBhdXRoZW50aWNhdGlvbiAo cmVxdWlyZXMgbGlic3JwKQogICNVU0VfU1JQPXkKLUBAIC0xNzgsMTEgKzE3OCw5IEBAIExJQlMJ Kz0gLWxkbAotIGVuZGlmCi0gCi0gaWZkZWYgRklMVEVSCi0taWZuZXEgKCQod2lsZGNhcmQgL3Vz ci9pbmNsdWRlL3BjYXAtYnBmLmgpLCkKLSBMSUJTICAgICs9IC1scGNhcAotIENGTEFHUyAgKz0g LURQUFBfRklMVEVSCi0gZW5kaWYKLS1lbmRpZgotIAotIGlmZGVmIEhBVkVfSU5FVDYKLSAgICAg IFBQUERTUkNTICs9IGlwdjZjcC5jIGV1aTY0LmMKIGRpZmYgLS1naXQgYS9wcHBkL3BhdGhuYW1l cy5oIGIvcHBwZC9wYXRobmFtZXMuaAotaW5kZXggYTMzZjA0NjZjOWQ2Li40Njk3MjYwMWZjOTIg MTAwNjQ0CitpbmRleCA1MjRkNjA4Y2UxMmMuLjJkZjYxMzU0ZjQwZSAxMDA2NDQKIC0tLSBhL3Bw cGQvcGF0aG5hbWVzLmgKICsrKyBiL3BwcGQvcGF0aG5hbWVzLmgKLUBAIC0yOCw3ICsyOCw3IEBA CitAQCAtMzMsNyArMzMsNyBAQAogICNkZWZpbmUgX1BBVEhfQVVUSFVQCSBfUk9PVF9QQVRIICIv ZXRjL3BwcC9hdXRoLXVwIgogICNkZWZpbmUgX1BBVEhfQVVUSERPV04JIF9ST09UX1BBVEggIi9l dGMvcHBwL2F1dGgtZG93biIKICAjZGVmaW5lIF9QQVRIX1RUWU9QVAkgX1JPT1RfUEFUSCAiL2V0 Yy9wcHAvb3B0aW9ucy4iCkBAIC01OSwxMCArNTEsMTAgQEAgaW5kZXggYTMzZjA0NjZjOWQ2Li40 Njk3MjYwMWZjOTIgMTAwNjQ0CiAgI2RlZmluZSBfUEFUSF9SRVNPTFYJIF9ST09UX1BBVEggIi9l dGMvcHBwL3Jlc29sdi5jb25mIgogIAogZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC5oIGIvcHBwZC9w cHBkLmgKLWluZGV4IGIxMTY3MDU4NjI0NC4uNTY3ZDcwMjE4MWNhIDEwMDY0NAoraW5kZXggMTBh OTk3NzU5OGFhLi5hMTQ0ODNiNzZhY2MgMTAwNjQ0CiAtLS0gYS9wcHBkL3BwcGQuaAogKysrIGIv cHBwZC9wcHBkLmgKLUBAIC04NzAsNyArODcwLDcgQEAgZXh0ZXJuIHZvaWQgKCpzbm9vcF9zZW5k X2hvb2spIF9fUCgodW5zaWduZWQgY2hhciAqcCwgaW50IGxlbikpOworQEAgLTg3OSw3ICs4Nzks NyBAQCBleHRlcm4gdm9pZCAoKnNub29wX3NlbmRfaG9vaykodW5zaWduZWQgY2hhciAqcCwgaW50 IGxlbik7CiAgICB8fCBkZWZpbmVkKERFQlVHQ0hBUCkgfHwgZGVmaW5lZChERUJVRykgfHwgZGVm aW5lZChERUJVR0lQVjZDUCkKICAjZGVmaW5lIExPR19QUFAgTE9HX0xPQ0FMMgogICNlbHNlCkBA IC03MiwxMCArNjQsMTAgQEAgaW5kZXggYjExNjcwNTg2MjQ0Li41NjdkNzAyMTgxY2EgMTAwNjQ0 CiAgI2VuZGlmIC8qIExPR19QUFAgKi8KICAKIGRpZmYgLS1naXQgYS9wcHBkdW1wL01ha2VmaWxl LmxpbnV4IGIvcHBwZHVtcC9NYWtlZmlsZS5saW51eAotaW5kZXggODc3NzdmYWI1ZTk0Li4xZWVl YWZlMjAxMTEgMTAwNjQ0CitpbmRleCBkZTdlNTc0ZDEwZTEuLjA0YjFjMTBiMzRjNyAxMDA2NDQK IC0tLSBhL3BwcGR1bXAvTWFrZWZpbGUubGludXgKICsrKyBiL3BwcGR1bXAvTWFrZWZpbGUubGlu dXgKLUBAIC0yLDkgKzIsOSBAQCBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKK0BAIC02 LDkgKzYsOSBAQCBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKICBCSU5ESVIgPSAkKERF U1RESVIpL3NiaW4KICBNQU5ESVIgPSAkKERFU1RESVIpL3NoYXJlL21hbi9tYW44CiAgCkBAIC04 NSw1ICs3Nyw1IEBAIGluZGV4IDg3Nzc3ZmFiNWU5NC4uMWVlZWFmZTIwMTExIDEwMDY0NAogLUhB VkVfWkxJQj1uCiArSEFWRV9aTElCPXkKICAKLSBDT1BUUz0tTzIgLWcKLSBDRkxBR1M9ICQoQ09Q VFMpIC1JLi4vaW5jbHVkZS9uZXQKKyBDRkxBR1MgPSAkKENPUFRTKSAtSS4uL2luY2x1ZGUvbmV0 CisgT0JKUyA9IHBwcGR1bXAubwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAzOS1S ZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5cHRvLnBhdGNoIGIvcGF0 Y2hlcy9wcHAtMi40LjkvMDEwNi1SZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgt bGliY3J5cHRvLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIHBhdGNoZXMv cHBwLTIuNC43LzAwMzktUmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0aW9ucy13aXRoLWxpYmNy eXB0by5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDEwNi1SZXBsYWNlLXZlbmRv cmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5cHRvLnBhdGNoCmluZGV4IGEwOGFmNTQ0YS4u ODU5N2NmOWE1IDEwMDY0NAotLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM5LVJlcGxhY2UtdmVu ZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gKKysrIGIvcGF0Y2hlcy9w cHAtMi40LjkvMDEwNi1SZXBsYWNlLXZlbmRvcmVkLWhhc2gtZnVuY3Rpb25zLXdpdGgtbGliY3J5 cHRvLnBhdGNoCkBAIC0xLDUgKzEsNSBAQAotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUwICswMjAw CitGcm9tOiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgorRGF0ZTogV2VkLCAxNiBK dW4gMjAyMSAxODoyMjo0OSArMDIwMAogU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIHZlbmRvcmVk IGhhc2ggZnVuY3Rpb25zIHdpdGggbGliY3J5cHRvCiAKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVn cy5kZWJpYW4ub3JnLzgyNjYyNQpAQCAtMTQsMjQgKzE0LDI0IEBAIHByZWZlcmFibGUgYm90aCBk dWUgdG8gdGhlIHBhdGNoIGJlaW5nIHNsaWdodGx5IGxlc3MgaW52YXNpdmUgYW5kIGFsc28gYmVj YXVzZQogb2Ygb3VyIHVzZSBvZiB0aGUgRUFQLVRMUyBwYXRjaCB3aGljaCByZXF1aXJlcyBPcGVu U1NMLgogCiAKLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKK0lt cG9ydGVkIGZyb20gcHBwXzIuNC45LTErMS5kZWJpYW4udGFyLnh6CiAKLVNpZ25lZC1vZmYtYnk6 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgorU2lnbmVkLW9mZi1i eTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KIC0tLQotIHBwcGQvTWFrZWZpbGUu bGludXggICAgICAgICAgfCAgMjUgKystLQorIHBwcGQvTWFrZWZpbGUubGludXggICAgICAgICAg fCAgMjggKy0tLQogIHBwcGQvY2hhcC1tZDUuYyAgICAgICAgICAgICAgfCAgIDIgKy0KICBwcHBk L2NoYXBfbXMuYyAgICAgICAgICAgICAgIHwgIDQwICsrLS0tLQotIHBwcGQvZWFwLmMgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KLSBwcHBkL21kNC5jICAgICAgICAgICAgICAgICAgIHwgMjk5 IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcHBwZC9tZDQuaCAg ICAgICAgICAgICAgICAgICB8ICA2NCAtLS0tLS0tLS0KLSBwcHBkL21kNS5jICAgICAgICAgICAg ICAgICAgIHwgMzExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBwcHBkL21kNS5oICAgICAgICAgICAgICAgICAgIHwgIDY4IC0tLS0tLS0tLS0KKyBwcHBkL2Vh cC5jICAgICAgICAgICAgICAgICAgIHwgICAzICstCisgcHBwZC9tZDQuYyAgICAgICAgICAgICAg ICAgICB8IDI5MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBw cGQvbWQ0LmggICAgICAgICAgICAgICAgICAgfCAgNTUgLS0tLS0tLS0KKyBwcHBkL21kNS5jICAg ICAgICAgICAgICAgICAgIHwgMjk5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwcHBkL21kNS5oICAgICAgICAgICAgICAgICAgIHwgIDY1IC0tLS0tLS0tLS0K ICBwcHBkL3BsdWdpbnMvcmFkaXVzL21kNS5jICAgIHwgICAyICstCiAgcHBwZC9wbHVnaW5zL3Jh ZGl1cy9yYWRpdXMuYyB8ICAgMiArLQogIHBwcGQvcGx1Z2lucy93aW5iaW5kLmMgICAgICAgfCAg IDIgKy0KLSBwcHBkL3NoYTEuYyAgICAgICAgICAgICAgICAgIHwgMTcwIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcHBwZC9zaGExLmMgICAgICAgICAgICAgICAgICB8IDE3MSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgcHBwZC9zaGExLmggICAgICAgICAgICAgICAgICB8ICAzMSAtLS0t LQotIDEzIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDk5MCBkZWxldGlvbnMoLSkK KyAxMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA5NjMgZGVsZXRpb25zKC0pCiAg ZGVsZXRlIG1vZGUgMTAwNjQ0IHBwcGQvbWQ0LmMKICBkZWxldGUgbW9kZSAxMDA2NDQgcHBwZC9t ZDQuaAogIGRlbGV0ZSBtb2RlIDEwMDY0NCBwcHBkL21kNS5jCkBAIC00MCwxMCArNDAsMTAgQEAg U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ CiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHBwcGQvc2hhMS5oCiAKIGRpZmYgLS1naXQgYS9wcHBkL01h a2VmaWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5saW51eAotaW5kZXggNGExMWQ1ZmVhNzQ4Li41 OGE2MzRjZThjM2IgMTAwNjQ0CitpbmRleCBiYmI0NzY4MjdjZWEuLmJjMDFlM2ZkMmEyNCAxMDA2 NDQKIC0tLSBhL3BwcGQvTWFrZWZpbGUubGludXgKICsrKyBiL3BwcGQvTWFrZWZpbGUubGludXgK LUBAIC0xMSwxNiArMTEsMTYgQEAgSU5DRElSID0gJChERVNURElSKS9pbmNsdWRlCitAQCAtMTUs MTYgKzE1LDE2IEBAIElOQ0RJUiA9ICQoREVTVERJUikvaW5jbHVkZQogIAogIFRBUkdFVFMgPSBw cHBkCiAgCkBAIC02NCwxNiArNjQsMTYgQEAgaW5kZXggNGExMWQ1ZmVhNzQ4Li41OGE2MzRjZThj M2IgMTAwNjQ0CiAgCSAgIGVjcC5vIGF1dGgubyBvcHRpb25zLm8gZGVtYW5kLm8gdXRpbHMubyBz eXMtbGludXgubyBpcHhjcC5vIHR0eS5vIFwKICAJICAgZWFwLm8gY2hhcC1tZDUubyBzZXNzaW9u Lm8KICAKLUBAIC0zMyw3ICszMyw3IEBAIGVuZGlmCi0gIyBDQyA9IGdjYwotICMKLSBDT1BUUyA9 IC1PMiAtcGlwZSAtV2FsbCAtZwotLUxJQlMgPQotK0xJQlMgPSAtbGNyeXB0bworQEAgLTM0LDcg KzM0LDcgQEAgaWZlcSAoLmRlcGVuZCwkKHdpbGRjYXJkIC5kZXBlbmQpKQorIGluY2x1ZGUgLmRl cGVuZAorIGVuZGlmCisgCistTElCUyA9IC1scnQKKytMSUJTID0gLWxydCAtbGNyeXB0bwogIAot ICMgVW5jb21tZW50IHRoZSBuZXh0IDIgbGluZXMgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNaWNy b3NvZnQncworICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZv ciBNaWNyb3NvZnQncwogICMgTVMtQ0hBUCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbC4gIEFsc28s IGVkaXQgcGx1Z2lucy9yYWRpdXMvTWFrZWZpbGUubGludXguCi1AQCAtOTEsOCArOTEsOCBAQCBM REZMQUdTPSQoTERPUFRTKQorQEAgLTk4LDggKzk4LDggQEAgQ0ZMQUdTPSAkKENPUFRTKSAkKENP TVBJTEVfRkxBR1MpICQoSU5DTFVERV9ESVJTKSAnLURERVNURElSPSJAREVTVERJUkAiJwogIGlm ZGVmIENIQVBNUwogIENGTEFHUyAgICs9IC1EQ0hBUE1TPTEKICBORUVEREVTPXkKQEAgLTg0LDEy ICs4NCwxMSBAQCBpbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNlOGMzYiAxMDA2NDQKICBpZmRl ZiBNU0xBTk1BTgogIENGTEFHUyAgICs9IC1ETVNMQU5NQU49MQogIGVuZGlmCi1AQCAtMTA0LDI1 ICsxMDQsMTggQEAgZW5kaWYKLSAjIEVBUCBTUlAtU0hBMQorQEAgLTExMywyNiArMTEzLDE3IEBA IGVuZGlmCiAgaWZkZWYgVVNFX1NSUAogIENGTEFHUwkrPSAtRFVTRV9TUlAgLURPUEVOU1NMIC1J L3Vzci9sb2NhbC9zc2wvaW5jbHVkZQotLUxJQlMJKz0gLWxzcnAgLUwvdXNyL2xvY2FsL3NzbC9s aWIgLWxjcnlwdG8KLStMSUJTCSs9IC1sc3JwIC1ML3Vzci9sb2NhbC9zc2wvbGliCisgTElCUwkr PSAtbHNycCAtTC91c3IvbG9jYWwvc3NsL2xpYgorLU5FRURDUllQVE9MSUIgPSB5CiAgVEFSR0VU UwkrPSBzcnAtZW50cnkKICBFWFRSQUlOU1RBTEwgPSAkKElOU1RBTEwpIC1jIC1tIDU1NSBzcnAt ZW50cnkgJChCSU5ESVIpL3NycC1lbnRyeQogIE1BTlBBR0VTICs9IHNycC1lbnRyeS44CkBAIC0x MDYsMjcgKzEwNSw1MCBAQCBpbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNlOGMzYiAxMDA2NDQK ICAKICAjIEVBUC1UTFMKICBpZmRlZiBVU0VfRUFQVExTCi0gQ0ZMQUdTICs9IC1EVVNFX0VBUFRM Uz0xIC1JL3Vzci9rZXJiZXJvcy9pbmNsdWRlCi0tTElCUyArPSAtbHNzbCAtbGNyeXB0bwotK0xJ QlMgKz0gLWxzc2wKKyBDRkxBR1MgKz0gLURVU0VfRUFQVExTPTEKKyBMSUJTICs9IC1sc3NsCist TkVFRENSWVBUT0xJQiA9IHkKICBQUFBEU1JDICs9IGVhcC10bHMuYwogIEhFQURFUlMgKz0gZWFw LXRscy5oCiAgUFBQRE9CSlMgKz0gZWFwLXRscy5vCitAQCAtMTU2LDcgKzE0Nyw2IEBAIGVuZGlm CisgaWZkZWYgTkVFRERFUworIGlmbmRlZiBVU0VfQ1JZUFQKKyBDRkxBR1MgICArPSAtSSQoc2hl bGwgJChDQykgLS1wcmludC1zeXNyb290KS91c3IvaW5jbHVkZS9vcGVuc3NsCistTkVFRENSWVBU T0xJQiA9IHkKKyBlbHNlCisgQ0ZMQUdTICAgKz0gLURVU0VfQ1JZUFQ9MQorIGVuZGlmCitAQCAt MTY0LDEwICsxNTQsNiBAQCBQUFBET0JKUyArPSBwcHBjcnlwdC5vCisgSEVBREVSUyArPSBwcHBj cnlwdC5oCisgZW5kaWYKKyAKKy1pZmRlZiBORUVEQ1JZUFRPTElCCistTElCUyAgICAgKz0gLWxj cnlwdG8KKy1lbmRpZgorLQorICMgRm9yICJQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxl cyIsIHNlZSBmdHAucmVkaGF0LmNvbTovcHViL3BhbS8uCisgaWZkZWYgVVNFX1BBTQorIENGTEFH UyAgICs9IC1EVVNFX1BBTQogZGlmZiAtLWdpdCBhL3BwcGQvY2hhcC1tZDUuYyBiL3BwcGQvY2hh cC1tZDUuYwotaW5kZXggMjY5YjUyY2IyMDQxLi43Zjc5NjdhNTY4NDIgMTAwNjQ0CitpbmRleCA3 N2RkNGVjYzcwNTkuLmQ4NjU2NGFhODY1YSAxMDA2NDQKIC0tLSBhL3BwcGQvY2hhcC1tZDUuYwog KysrIGIvcHBwZC9jaGFwLW1kNS5jCi1AQCAtMzksNyArMzksNyBAQAotICNpZmRlZiBVU0VfRUFQ VExTCi0gI2luY2x1ZGUgImVhcC10bHMuaCIKLSAjZWxzZQotLSNpbmNsdWRlICJtZDUuaCIKK0BA IC0zMiwxMSArMzIsMTEgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0 cmluZy5oPgogKyNpbmNsdWRlIDxvcGVuc3NsL21kNS5oPgotICNlbmRpZiAvKiBVU0VfRUFQVExT ICovCisgI2luY2x1ZGUgInBwcGQuaCIKKyAjaW5jbHVkZSAiY2hhcC1uZXcuaCIKKyAjaW5jbHVk ZSAiY2hhcC1tZDUuaCIKKyAjaW5jbHVkZSAibWFnaWMuaCIKKy0jaW5jbHVkZSAibWQ1LmgiCiAg CiAgI2RlZmluZSBNRDVfSEFTSF9TSVpFCQkxNgorICNkZWZpbmUgTUQ1X01JTl9DSEFMTEVOR0UJ MTYKIGRpZmYgLS1naXQgYS9wcHBkL2NoYXBfbXMuYyBiL3BwcGQvY2hhcF9tcy5jCi1pbmRleCBj MmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKK2luZGV4IGU2Yjg0ZjIwM2ZjMy4uNjQ4 NDhmMjBmNjYwIDEwMDY0NAogLS0tIGEvcHBwZC9jaGFwX21zLmMKICsrKyBiL3BwcGQvY2hhcF9t cy5jCiBAQCAtODksOCArODksOCBAQApAQCAtMTQwLDcgKzE2Miw3IEBAIGluZGV4IGMyYmQwMGY5 YzZmNy4uMTllZGI4NWQyN2E4IDEwMDY0NAogICNpbmNsdWRlICJwcHBjcnlwdC5oIgogICNpbmNs dWRlICJtYWdpYy5oIgogIAotQEAgLTUzNSw4ICs1MzUsOCBAQCBDaGFsbGVuZ2VIYXNoKHVfY2hh ciBQZWVyQ2hhbGxlbmdlWzE2XSwgdV9jaGFyICpyY2hhbGxlbmdlLAorQEAgLTUzNiw4ICs1MzYs OCBAQCBDaGFsbGVuZ2VIYXNoKHVfY2hhciBQZWVyQ2hhbGxlbmdlWzE2XSwgdV9jaGFyICpyY2hh bGxlbmdlLAogIAkgICAgICBjaGFyICp1c2VybmFtZSwgdV9jaGFyIENoYWxsZW5nZVs4XSkKICAg ICAgCiAgewpAQCAtMTUxLDcgKzE3Myw3IEBAIGluZGV4IGMyYmQwMGY5YzZmNy4uMTllZGI4NWQy N2E4IDEwMDY0NAogICAgICBjaGFyCSp1c2VyOwogIAogICAgICAvKiByZW1vdmUgZG9tYWluIGZy b20gImRvbWFpblx1c2VybmFtZSIgKi8KLUBAIC01NzQsMjMgKzU3NCwxMSBAQCBhc2NpaTJ1bmlj b2RlKGNoYXIgYXNjaWlbXSwgaW50IGFzY2lpX2xlbiwgdV9jaGFyIHVuaWNvZGVbXSkKK0BAIC01 NzUsMjMgKzU3NSwxMSBAQCBhc2NpaTJ1bmljb2RlKGNoYXIgYXNjaWlbXSwgaW50IGFzY2lpX2xl biwgdV9jaGFyIHVuaWNvZGVbXSkKICBzdGF0aWMgdm9pZAogIE5UUGFzc3dvcmRIYXNoKHVfY2hh ciAqc2VjcmV0LCBpbnQgc2VjcmV0X2xlbiwgdV9jaGFyIGhhc2hbTUQ0X1NJR05BVFVSRV9TSVpF XSkKICB7CkBAIC0xNzgsNyArMjAwLDcgQEAgaW5kZXggYzJiZDAwZjljNmY3Li4xOWVkYjg1ZDI3 YTggMTAwNjQ0CiAgCiAgfQogIAotQEAgLTY3MSw4ICs2NTksOCBAQCBHZW5lcmF0ZUF1dGhlbnRp Y2F0b3JSZXNwb25zZSh1X2NoYXIgUGFzc3dvcmRIYXNoSGFzaFtNRDRfU0lHTkFUVVJFX1NJWkVd LAorQEAgLTY3Miw4ICs2NjAsOCBAQCBHZW5lcmF0ZUF1dGhlbnRpY2F0b3JSZXNwb25zZSh1X2No YXIgUGFzc3dvcmRIYXNoSGFzaFtNRDRfU0lHTkFUVVJFX1NJWkVdLAogIAkgIDB4NkUgfTsKICAK ICAgICAgaW50CQlpOwpAQCAtMTg5LDcgKzIxMSw3IEBAIGluZGV4IGMyYmQwMGY5YzZmNy4uMTll ZGI4NWQyN2E4IDEwMDY0NAogICAgICB1X2NoYXIJQ2hhbGxlbmdlWzhdOwogIAogICAgICBTSEEx X0luaXQoJnNoYTFDb250ZXh0KTsKLUBAIC03MjUsOCArNzEzLDggQEAgR2VuZXJhdGVBdXRoZW50 aWNhdG9yUmVzcG9uc2VQbGFpbgorQEAgLTcyNiw4ICs3MTQsOCBAQCBHZW5lcmF0ZUF1dGhlbnRp Y2F0b3JSZXNwb25zZVBsYWluCiAgdm9pZAogIG1wcGVfc2V0X2tleXModV9jaGFyICpyY2hhbGxl bmdlLCB1X2NoYXIgUGFzc3dvcmRIYXNoSGFzaFtNRDRfU0lHTkFUVVJFX1NJWkVdKQogIHsKQEAg LTIwMCw3ICsyMjIsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQK ICAKICAgICAgU0hBMV9Jbml0KCZzaGExQ29udGV4dCk7CiAgICAgIFNIQTFfVXBkYXRlKCZzaGEx Q29udGV4dCwgUGFzc3dvcmRIYXNoSGFzaCwgTUQ0X1NJR05BVFVSRV9TSVpFKTsKLUBAIC03Njks OSArNzU3LDkgQEAgdm9pZAorQEAgLTc3MCw5ICs3NTgsOSBAQCB2b2lkCiAgbXBwZV9zZXRfa2V5 czIodV9jaGFyIFBhc3N3b3JkSGFzaEhhc2hbTUQ0X1NJR05BVFVSRV9TSVpFXSwKICAJICAgICAg IHVfY2hhciBOVFJlc3BvbnNlWzI0XSwgaW50IElzU2VydmVyKQogIHsKQEAgLTIxNCwyNCArMjM2 LDI3IEBAIGluZGV4IGMyYmQwMGY5YzZmNy4uMTllZGI4NWQyN2E4IDEwMDY0NAogICAgICB1X2No YXIgU0hBcGFkMVs0MF0gPQogIAl7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCiBkaWZmIC0tZ2l0IGEvcHBwZC9lYXAuYyBiL3BwcGQv ZWFwLmMKLWluZGV4IDAzMjQwN2MzZGJiMi4uMzVkMTExMDE1ZmYzIDEwMDY0NAoraW5kZXggNzkx NDY1NTdiZDMyLi5kOTg3ODg4ZDlmMjAgMTAwNjQ0CiAtLS0gYS9wcHBkL2VhcC5jCiArKysgYi9w cHBkL2VhcC5jCi1AQCAtNzEsNyArNzEsNyBAQAotICNpZmRlZiBVU0VfRUFQVExTCi0gI2luY2x1 ZGUgImVhcC10bHMuaCIKLSAjZWxzZQotLSNpbmNsdWRlICJtZDUuaCIKK0BAIC01OSw5ICs1OSwx MCBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKICsjaW5j bHVkZSA8b3BlbnNzbC9tZDUuaD4KLSAjZW5kaWYgLyogVVNFX0VBUFRMUyAqLworKworICNpbmNs dWRlICJwcHBkLmgiCisgI2luY2x1ZGUgInBhdGhuYW1lcy5oIgorLSNpbmNsdWRlICJtZDUuaCIK KyAjaW5jbHVkZSAiZWFwLmgiCiAgCi0gI2lmZGVmIFVTRV9TUlAKKyAjaWZkZWYgQ0hBUE1TCiBk aWZmIC0tZ2l0IGEvcHBwZC9tZDQuYyBiL3BwcGQvbWQ0LmMKIGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAwMDAwMDAwMDAKK2luZGV4IDQyYTliMmU3NWQ2 ZS4uMDAwMDAwMDAwMDAwCiAtLS0gYS9wcHBkL21kNC5jCiArKysgL2Rldi9udWxsCi1AQCAtMSwy OTkgKzAsMCBAQAorQEAgLTEsMjkwICswLDAgQEAKIC0vKgogLSoqICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAtKiog bWQ0LmMgLS0gSW1wbGVtZW50YXRpb24gb2YgTUQ0IE1lc3NhZ2UgRGlnZXN0IEFsZ29yaXRobSAg ICAgICAgICAgKioKQEAgLTMyMSw4ICszNDYsNyBAQCBpbmRleCBkOTQzZTg4ODVmMmQuLjAwMDAw MDAwMDAwMAogLSoqIFRoaXMgaXMgYSB1c2VyLWNhbGxhYmxlIHJvdXRpbmUuCiAtKi8KIC12b2lk Ci0tTUQ0UHJpbnQoTURwKQotLU1ENF9DVFggKk1EcDsKKy1NRDRQcmludChNRDRfQ1RYICpNRHAp CiAtewogLSAgaW50IGksajsKIC0gIGZvciAoaT0wO2k8NDtpKyspCkBAIC0zMzUsOCArMzU5LDcg QEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAwMDAwMDAwMDAKIC0qKiBUaGlzIGlzIGEgdXNlci1j YWxsYWJsZSByb3V0aW5lLgogLSovCiAtdm9pZAotLU1ENEluaXQoTURwKQotLU1ENF9DVFggKk1E cDsKKy1NRDRJbml0KE1ENF9DVFggKk1EcCkKIC17CiAtICBpbnQgaTsKIC0gIE1EcC0+YnVmZmVy WzBdID0gSTA7CkBAIC0zNTQsOSArMzc3LDcgQEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAwMDAw MDAwMDAKIC0qKiBUaGlzIHJvdXRpbmUgaXMgbm90IHVzZXItY2FsbGFibGUuCiAtKi8KIC1zdGF0 aWMgdm9pZAotLU1EYmxvY2soTURwLFhiKQotLU1ENF9DVFggKk1EcDsKLS11bnNpZ25lZCBjaGFy ICpYYjsKKy1NRGJsb2NrKE1ENF9DVFggKk1EcCwgdW5zaWduZWQgY2hhciAqWGIpCiAtewogLSAg cmVnaXN0ZXIgdW5zaWduZWQgaW50IHRtcCwgQSwgQiwgQywgRDsKIC0gIHVuc2lnbmVkIGludCBY WzE2XTsKQEAgLTQ0MCwxMCArNDYxLDcgQEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAwMDAwMDAw MDAKIC0qKiBpZiBkZXNpcmVkLgogLSovCiAtdm9pZAotLU1ENFVwZGF0ZShNRHAsWCxjb3VudCkK LS1NRDRfQ1RYICpNRHA7Ci0tdW5zaWduZWQgY2hhciAqWDsKLS11bnNpZ25lZCBpbnQgY291bnQ7 CistTUQ0VXBkYXRlKE1ENF9DVFggKk1EcCwgdW5zaWduZWQgY2hhciAqWCwgdW5zaWduZWQgaW50 IGNvdW50KQogLXsKIC0gIHVuc2lnbmVkIGludCBpLCB0bXAsIGJpdCwgYnl0ZSwgbWFzazsKIC0g IHVuc2lnbmVkIGNoYXIgWFhbNjRdOwpAQCAtNTExLDkgKzUyOSw3IEBAIGluZGV4IGQ5NDNlODg4 NWYyZC4uMDAwMDAwMDAwMDAwCiAtKiogRmluaXNoIHVwIE1ENCBjb21wdXRhdGlvbiBhbmQgcmV0 dXJuIG1lc3NhZ2UgZGlnZXN0LgogLSovCiAtdm9pZAotLU1ENEZpbmFsKGJ1ZiwgTUQpCi0tdW5z aWduZWQgY2hhciAqYnVmOwotLU1ENF9DVFggKk1EOworLU1ENEZpbmFsKHVuc2lnbmVkIGNoYXIg KmJ1ZiwgTUQ0X0NUWCAqTUQpCiAtewogLSAgaW50IGksIGo7CiAtICB1bnNpZ25lZCBpbnQgdzsK QEAgLTUzMywxMCArNTQ5LDEwIEBAIGluZGV4IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCiAt KioqKioqKioqKioqKioqKioqKioqKioqKioqKihjdXQpKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCiBkaWZmIC0tZ2l0IGEvcHBwZC9tZDQuaCBiL3BwcGQvbWQ0LmgKIGRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggODBlOGY5YTJhY2NhLi4wMDAwMDAwMDAwMDAKK2lu ZGV4IGI2ZmMzZjU2MWZhYS4uMDAwMDAwMDAwMDAwCiAtLS0gYS9wcHBkL21kNC5oCiArKysgL2Rl di9udWxsCi1AQCAtMSw2NCArMCwwIEBACitAQCAtMSw1NSArMCwwIEBACiAtCiAtLyoKIC0qKiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgpAQCAtNTQ3LDE1ICs1NjMsNiBAQCBpbmRleCA4MGU4ZjlhMmFjY2EuLjAwMDAw MDAwMDAwMAogLSoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAtKi8KIC0KLS0jaWZuZGVmIF9fUAotLSMgaWYgZGVm aW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfX0dOVUNfXykKLS0jICBkZWZpbmUgX19QKHgpIHgK LS0jIGVsc2UKLS0jICBkZWZpbmUgX19QKHgpICgpCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLQog LS8qIE1Ec3RydWN0IGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IgYSBtZXNzYWdlIGRpZ2VzdCBj b21wdXRhdGlvbi4KIC0qLwogLXR5cGVkZWYgc3RydWN0IHsKQEAgLTU2OCw3ICs1NzUsNyBAQCBp bmRleCA4MGU4ZjlhMmFjY2EuLjAwMDAwMDAwMDAwMAogLSoqIEluaXRpYWxpemUgdGhlIE1ENF9D VFggcHJlcGF0b3J5IHRvIGRvaW5nIGEgbWVzc2FnZSBkaWdlc3QKIC0qKiBjb21wdXRhdGlvbi4K IC0qLwotLWV4dGVybiB2b2lkIE1ENEluaXQgX19QKChNRDRfQ1RYICpNRCkpOworLWV4dGVybiB2 b2lkIE1ENEluaXQoTUQ0X0NUWCAqTUQpOwogLQogLS8qIE1ENFVwZGF0ZShNRCxYLGNvdW50KQog LSoqIElucHV0OiBYIC0tIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFyYWN0 ZXJzLgpAQCAtNTgyLDcgKzU4OSw3IEBAIGluZGV4IDgwZThmOWEyYWNjYS4uMDAwMDAwMDAwMDAw CiAtKiogZXZlcnkgTUQgY29tcHV0YXRpb24gc2hvdWxkIGVuZCB3aXRoIG9uZSBjYWxsIHRvIE1E NFVwZGF0ZSB3aXRoIGEKIC0qKiBjb3VudCBsZXNzIHRoYW4gNTEyLiAgWmVybyBpcyBPSyBmb3Ig YSBjb3VudC4KIC0qLwotLWV4dGVybiB2b2lkIE1ENFVwZGF0ZSBfX1AoKE1ENF9DVFggKk1ELCB1 bnNpZ25lZCBjaGFyICpYLCB1bnNpZ25lZCBpbnQgY291bnQpKTsKKy1leHRlcm4gdm9pZCBNRDRV cGRhdGUoTUQ0X0NUWCAqTUQsIHVuc2lnbmVkIGNoYXIgKlgsIHVuc2lnbmVkIGludCBjb3VudCk7 CiAtCiAtLyogTUQ0UHJpbnQoTUQpCiAtKiogUHJpbnRzIG1lc3NhZ2UgZGlnZXN0IGJ1ZmZlciBN RCBhcyAzMiBoZXhhZGVjaW1hbCBkaWdpdHMuCkBAIC01OTAsMjMgKzU5NywyMyBAQCBpbmRleCA4 MGU4ZjlhMmFjY2EuLjAwMDAwMDAwMDAwMAogLSoqIG9mIGJ1ZmZlclszXS4KIC0qKiBFYWNoIGJ5 dGUgaXMgcHJpbnRlZCB3aXRoIGhpZ2gtb3JkZXIgaGV4YWRlY2ltYWwgZGlnaXQgZmlyc3QuCiAt Ki8KLS1leHRlcm4gdm9pZCBNRDRQcmludCBfX1AoKE1ENF9DVFggKikpOworLWV4dGVybiB2b2lk IE1ENFByaW50KE1ENF9DVFggKik7CiAtCiAtLyogTUQ0RmluYWwoYnVmLCBNRCkKIC0qKiBSZXR1 cm5zIG1lc3NhZ2UgZGlnZXN0IGZyb20gTUQgYW5kIHRlcm1pbmF0ZXMgdGhlIG1lc3NhZ2UKIC0q KiBkaWdlc3QgY29tcHV0YXRpb24uCiAtKi8KLS1leHRlcm4gdm9pZCBNRDRGaW5hbCBfX1AoKHVu c2lnbmVkIGNoYXIgKiwgTUQ0X0NUWCAqKSk7CistZXh0ZXJuIHZvaWQgTUQ0RmluYWwodW5zaWdu ZWQgY2hhciAqLCBNRDRfQ1RYICopOwogLQogLS8qCiAtKiogRW5kIG9mIG1kNC5oCiAtKioqKioq KioqKioqKioqKioqKioqKioqKioqKihjdXQpKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCiBkaWZmIC0tZ2l0IGEvcHBwZC9tZDUuYyBiL3BwcGQvbWQ1LmMKIGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAKK2luZGV4IGY3 OTg4ZTY0MTQxYS4uMDAwMDAwMDAwMDAwCiAtLS0gYS9wcHBkL21kNS5jCiArKysgL2Rldi9udWxs Ci1AQCAtMSwzMTEgKzAsMCBAQAorQEAgLTEsMjk5ICswLDAgQEAKIC0KIC0KIC0vKgpAQCAtNjQy LDggKzY0OSw2IEBAIGluZGV4IDZmOGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCiAtICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAtICovCiAtCi0tI2lmbmRlZiBVU0VfRUFQVExTCi0tCiAtI2luY2x1ZGUgPHN0cmlu Zy5oPgogLSNpbmNsdWRlICJtZDUuaCIKIC0KQEAgLTcxMyw4ICs3MTgsNyBAQCBpbmRleCA2Zjhm NzIwN2M1OTIuLjAwMDAwMDAwMDAwMAogLS8qIFRoZSByb3V0aW5lIE1ENV9Jbml0IGluaXRpYWxp emVzIHRoZSBtZXNzYWdlLWRpZ2VzdCBjb250ZXh0CiAtICAgbWRDb250ZXh0LiBBbGwgZmllbGRz IGFyZSBzZXQgdG8gemVyby4KIC0gKi8KLS12b2lkIE1ENV9Jbml0IChtZENvbnRleHQpCi0tTUQ1 X0NUWCAqbWRDb250ZXh0OworLXZvaWQgTUQ1X0luaXQgKE1ENV9DVFggKm1kQ29udGV4dCkKIC17 CiAtICBtZENvbnRleHQtPmlbMF0gPSBtZENvbnRleHQtPmlbMV0gPSAoVUlOVDQpMDsKIC0KQEAg LTczMCwxMCArNzM0LDcgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAKIC0gICBh Y2NvdW50IGZvciB0aGUgcHJlc2VuY2Ugb2YgZWFjaCBvZiB0aGUgY2hhcmFjdGVycyBpbkJ1Zlsw Li5pbkxlbi0xXQogLSAgIGluIHRoZSBtZXNzYWdlIHdob3NlIGRpZ2VzdCBpcyBiZWluZyBjb21w dXRlZC4KIC0gKi8KLS12b2lkIE1ENV9VcGRhdGUgKG1kQ29udGV4dCwgaW5CdWYsIGluTGVuKQot LU1ENV9DVFggKm1kQ29udGV4dDsKLS11bnNpZ25lZCBjaGFyICppbkJ1ZjsKLS11bnNpZ25lZCBp bnQgaW5MZW47Cistdm9pZCBNRDVfVXBkYXRlIChNRDVfQ1RYICptZENvbnRleHQsIHVuc2lnbmVk IGNoYXIgKmluQnVmLCB1bnNpZ25lZCBpbnQgaW5MZW4pCiAtewogLSAgVUlOVDQgaW5bMTZdOwog LSAgaW50IG1kaTsKQEAgLTc2OCw5ICs3NjksNyBAQCBpbmRleCA2ZjhmNzIwN2M1OTIuLjAwMDAw MDAwMDAwMAogLS8qIFRoZSByb3V0aW5lIE1ENUZpbmFsIHRlcm1pbmF0ZXMgdGhlIG1lc3NhZ2Ut ZGlnZXN0IGNvbXB1dGF0aW9uIGFuZAogLSAgIGVuZHMgd2l0aCB0aGUgZGVzaXJlZCBtZXNzYWdl IGRpZ2VzdCBpbiBtZENvbnRleHQtPmRpZ2VzdFswLi4uMTVdLgogLSAqLwotLXZvaWQgTUQ1X0Zp bmFsIChoYXNoLCBtZENvbnRleHQpCi0tdW5zaWduZWQgY2hhciBoYXNoW107Ci0tTUQ1X0NUWCAq bWRDb250ZXh0OworLXZvaWQgTUQ1X0ZpbmFsICh1bnNpZ25lZCBjaGFyIGhhc2hbXSwgTUQ1X0NU WCAqbWRDb250ZXh0KQogLXsKIC0gIFVJTlQ0IGluWzE2XTsKIC0gIGludCBtZGk7CkBAIC04MTEs OSArODEwLDcgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAKIC0KIC0vKiBCYXNp YyBNRDUgc3RlcC4gVHJhbnNmb3JtcyBidWYgYmFzZWQgb24gaW4uCiAtICovCi0tc3RhdGljIHZv aWQgVHJhbnNmb3JtIChidWYsIGluKQotLVVJTlQ0ICpidWY7Ci0tVUlOVDQgKmluOworLXN0YXRp YyB2b2lkIFRyYW5zZm9ybSAoVUlOVDQgKmJ1ZiwgVUlOVDQgKmluKQogLXsKIC0gIFVJTlQ0IGEg PSBidWZbMF0sIGIgPSBidWZbMV0sIGMgPSBidWZbMl0sIGQgPSBidWZbM107CiAtCkBAIC05MTYs MTQgKzkxMywxMiBAQCBpbmRleCA2ZjhmNzIwN2M1OTIuLjAwMDAwMDAwMDAwMAogLSAqKiBFbmQg b2YgbWQ1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqKgogLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAoY3V0KSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogLSAqLwotLSNlbmRpZiAvKiBVU0VfRUFQVExTICov Ci0tCiBkaWZmIC0tZ2l0IGEvcHBwZC9tZDUuaCBiL3BwcGQvbWQ1LmgKIGRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMTRkNzEyMTcxYzVlLi4wMDAwMDAwMDAwMDAKK2luZGV4IDcxZThi MDBlMmRkZS4uMDAwMDAwMDAwMDAwCiAtLS0gYS9wcHBkL21kNS5oCiArKysgL2Rldi9udWxsCi1A QCAtMSw2OCArMCwwIEBACitAQCAtMSw2NSArMCwwIEBACiAtLyoKIC0gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK IC0gKiogbWQ1LmggLS0gaGVhZGVyIGZpbGUgZm9yIGltcGxlbWVudGF0aW9uIG9mIE1ENSAgICAg ICAgICAgICAgICAgICAgKioKQEAgLTk2Miw3ICs5NTcsNiBAQCBpbmRleCAxNGQ3MTIxNzFjNWUu LjAwMDAwMDAwMDAwMAogLSAqKiBkb2N1bWVudGF0aW9uIGFuZC9vciBzb2Z0d2FyZS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgogLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLSAqLwot LSNpZm5kZWYgVVNFX0VBUFRMUwogLQogLSNpZm5kZWYgX19NRDVfSU5DTFVERV9fCiAtCkBAIC05 OTAsOCArOTg0LDYgQEAgaW5kZXggMTRkNzEyMTcxYzVlLi4wMDAwMDAwMDAwMDAKIC0KIC0jZGVm aW5lIF9fTUQ1X0lOQ0xVREVfXwogLSNlbmRpZiAvKiBfX01ENV9JTkNMVURFX18gKi8KLS0KLS0j ZW5kaWYgLyogVVNFX0VBUFRMUyAqLwogZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9yYWRpdXMv bWQ1LmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL21kNS5jCiBpbmRleCA4YWYwM2FhMzcxM2UuLjkw ZDliMDI1ZDIxMSAxMDA2NDQKIC0tLSBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvbWQ1LmMKQEAgLTEw MDYsNyArOTk4LDcgQEAgaW5kZXggOGFmMDNhYTM3MTNlLi45MGQ5YjAyNWQyMTEgMTAwNjQ0CiAg dm9pZCByY19tZDVfY2FsYyAodW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBjaGFyICpp bnB1dCwgdW5zaWduZWQgaW50IGlubGVuKQogIHsKIGRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMv cmFkaXVzL3JhZGl1cy5jIGIvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYwotaW5kZXggMDZl MDA1OTBiNjM1Li42MDI4MmQ5YjJiOWMgMTAwNjQ0CitpbmRleCBjNTc5ODMxNjcxOWEuLmQ1ZDYz Njk4YTZkYyAxMDA2NDQKIC0tLSBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvcmFkaXVzLmMKICsrKyBi L3BwcGQvcGx1Z2lucy9yYWRpdXMvcmFkaXVzLmMKIEBAIC0zMSw3ICszMSw3IEBAIHN0YXRpYyBj aGFyIGNvbnN0IFJDU0lEW10gPQpAQCAtMTAxOSw3ICsxMDExLDcgQEAgaW5kZXggMDZlMDA1OTBi NjM1Li42MDI4MmQ5YjJiOWMgMTAwNjQ0CiAgI2VuZGlmCiAgI2luY2x1ZGUgInJhZGl1c2NsaWVu dC5oIgogZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy93aW5iaW5kLmMgYi9wcHBkL3BsdWdpbnMv d2luYmluZC5jCi1pbmRleCBiYjA1YWNkODdkY2UuLjVmODdhMzE3YjY3NyAxMDA2NDQKK2luZGV4 IDBjMzk1YzM0NzExYS4uNjMyMDY0NWFjOTk0IDEwMDY0NAogLS0tIGEvcHBwZC9wbHVnaW5zL3dp bmJpbmQuYwogKysrIGIvcHBwZC9wbHVnaW5zL3dpbmJpbmQuYwogQEAgLTM4LDcgKzM4LDcgQEAK QEAgLTEwMzMsMTAgKzEwMjUsMTAgQEAgaW5kZXggYmIwNWFjZDg3ZGNlLi41Zjg3YTMxN2I2Nzcg MTAwNjQ0CiAgI2luY2x1ZGUgImlwY3AuaCIKIGRpZmYgLS1naXQgYS9wcHBkL3NoYTEuYyBiL3Bw cGQvc2hhMS5jCiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGY0Zjk3NWNmNTE2Zi4u MDAwMDAwMDAwMDAwCitpbmRleCA0ZTUxY2VlNTA2YzIuLjAwMDAwMDAwMDAwMAogLS0tIGEvcHBw ZC9zaGExLmMKICsrKyAvZGV2L251bGwKLUBAIC0xLDE3MCArMCwwIEBACitAQCAtMSwxNzEgKzAs MCBAQAogLS8qCiAtICogZnRwOi8vZnRwLmZ1bmV0LmZpL3B1Yi9jcnlwdC9oYXNoL3NoYS9zaGEx LmMKIC0gKiAKQEAgLTEwNTYsNiArMTA0OCw3IEBAIGluZGV4IGY0Zjk3NWNmNTE2Zi4uMDAwMDAw MDAwMDAwCiAtLyogI2RlZmluZSBTSEExSEFORFNPRkYgKiBDb3BpZXMgZGF0YSBiZWZvcmUgbWVz c2luZyB3aXRoIGl0LiAqLwogLQogLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8dGlt ZS5oPgogLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CS8qIGh0b25sKCkgKi8KIC0jaW5jbHVkZSA8 bmV0L3BwcF9kZWZzLmg+CiAtI2luY2x1ZGUgInNoYTEuaCIKZGlmZiAtLWdpdCBhL3BhdGNoZXMv cHBwLTIuNC43LzAxMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuOS8wMjAwLXBwcGQtbWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBh dGNoCnNpbWlsYXJpdHkgaW5kZXggNjMlCnJlbmFtZSBmcm9tIHBhdGNoZXMvcHBwLTIuNC43LzAx MDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gKcmVuYW1lIHRvIHBhdGNo ZXMvcHBwLTIuNC45LzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gK aW5kZXggYzIwNWIxNWVkLi4xMTAyMGUwY2MgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvcHBwLTIuNC43 LzAxMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUucGF0Y2gKKysrIGIvcGF0Y2hl cy9wcHAtMi40LjkvMDIwMC1wcHBkLW1ha2UtbWFrZWZpbGUtc3lzcm9vdC1hd2FyZS5wYXRjaApA QCAtMTMsMTQgKzEzLDE0IEBAIFNpZ25lZC1vZmYtYnk6IE1hcmMgS2xlaW5lLUJ1ZGRlIDxtLmts ZWluZS1idWRkZUBwZW5ndXRyb25peC5kZT4KIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8 cy5oYXVlckBwZW5ndXRyb25peC5kZT4KIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8 bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgogLS0tCi0gcHBwZC9NYWtlZmlsZS5saW51eCB8IDEw ICsrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQorIHBwcGQvTWFrZWZpbGUubGludXggfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9wcHBkL01ha2Vm aWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5saW51eAotaW5kZXggY2I5ZDRmOWRjZjIyLi5lYTBh N2YwMjc2NmIgMTAwNjQ0CitpbmRleCBiYzAxZTNmZDJhMjQuLjliMDExOTQ2M2MxZiAxMDA2NDQK IC0tLSBhL3BwcGQvTWFrZWZpbGUubGludXgKICsrKyBiL3BwcGQvTWFrZWZpbGUubGludXgKLUBA IC0xMDMsOCArMTAzLDggQEAgZW5kaWYKK0BAIC0xMTEsOCArMTExLDggQEAgZW5kaWYKICAKICAj IEVBUCBTUlAtU0hBMQogIGlmZGVmIFVTRV9TUlAKQEAgLTMxLDMyICszMSwxMiBAQCBpbmRleCBj YjlkNGY5ZGNmMjIuLmVhMGE3ZjAyNzY2YiAxMDA2NDQKICBUQVJHRVRTCSs9IHNycC1lbnRyeQog IEVYVFJBSU5TVEFMTCA9ICQoSU5TVEFMTCkgLWMgLW0gNTU1IHNycC1lbnRyeSAkKEJJTkRJUikv c3JwLWVudHJ5CiAgTUFOUEFHRVMgKz0gc3JwLWVudHJ5LjgKLUBAIC0xMTQsNyArMTE0LDcgQEAg ZW5kaWYKLSAKLSAjIEVBUC1UTFMKLSBpZmRlZiBVU0VfRUFQVExTCi0tQ0ZMQUdTICs9IC1EVVNF X0VBUFRMUz0xIC1JL3Vzci9rZXJiZXJvcy9pbmNsdWRlCi0rQ0ZMQUdTICs9IC1EVVNFX0VBUFRM Uz0xCi0gTElCUyArPSAtbHNzbAotIFBQUERTUkMgKz0gZWFwLXRscy5jCi0gSEVBREVSUyArPSBl YXAtdGxzLmgKLUBAIC0xMjYsMTAgKzEyNiw4IEBAIENGTEFHUyAgICs9IC1ESEFTX1NIQURPVwot ICNMSUJTICAgICArPSAtbHNoYWRvdyAkKExJQlMpCi0gZW5kaWYKLSAKLS1pZm5lcSAoJCh3aWxk Y2FyZCAvdXNyL2luY2x1ZGUvY3J5cHQuaCksKQotIENGTEFHUyAgKz0gLURIQVZFX0NSWVBUX0g9 MQotIExJQlMJKz0gLWxjcnlwdAotLWVuZGlmCi0gCi0gaWZkZWYgVVNFX0xJQlVUSUwKLSBDRkxB R1MJKz0gLURIQVZFX0xPR1dUTVA9MQotQEAgLTEzOCw3ICsxMzYsNyBAQCBlbmRpZgorQEAgLTE0 Niw3ICsxNDYsNyBAQCBlbmRpZgogIAogIGlmZGVmIE5FRURERVMKICBpZm5kZWYgVVNFX0NSWVBU Ci0tQ0ZMQUdTICAgKz0gLUkvdXNyL2luY2x1ZGUvb3BlbnNzbAorLUNGTEFHUyAgICs9IC1JJChz aGVsbCAkKENDKSAtLXByaW50LXN5c3Jvb3QpL3Vzci9pbmNsdWRlL29wZW5zc2wKICtDRkxBR1Mg ICArPSAtSSQoU1lTUk9PVCkvdXNyL2luY2x1ZGUvb3BlbnNzbAotIExJQlMgICAgICs9IC1sY3J5 cHRvCiAgZWxzZQogIENGTEFHUyAgICs9IC1EVVNFX0NSWVBUPTEKKyBlbmRpZgpkaWZmIC0tZ2l0 IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDEwMS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1jb25maWd1 cmUtY3Jvc3MtYXdhcmUucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMjAxLXBwcGQtbWFrZS10 aGUtc2VsZi1tYWRlLWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4 IDg3JQpyZW5hbWUgZnJvbSBwYXRjaGVzL3BwcC0yLjQuNy8wMTAxLXBwcGQtbWFrZS10aGUtc2Vs Zi1tYWRlLWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaApyZW5hbWUgdG8gcGF0Y2hlcy9wcHAt Mi40LjkvMDIwMS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1jb25maWd1cmUtY3Jvc3MtYXdhcmUu cGF0Y2gKaW5kZXggZjU3MzYxYTRjLi41OTBjZjNhZTQgMTAwNjQ0Ci0tLSBhL3BhdGNoZXMvcHBw LTIuNC43LzAxMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJl LnBhdGNoCisrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAyMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1h ZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCkBAIC0xMSwxMSArMTEsMTEgQEAgU2lnbmVk LW9mZi1ieTogSnVlcmdlbiBCZWlzZXJ0IDxqdWVyZ2VuQGtyZXV6aG9semVuLmRlPgogIDIgZmls ZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0 IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA2YTU1ZTBmMDhiZTQuLjM4ODY1NjRmYTQ5 NSAxMDA3NTUKK2luZGV4IGIwYzNkMmI0OTEyMi4uNGJjNmExOGZhZDMyIDEwMDc1NQogLS0tIGEv Y29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC0xNCw2ICsxNCwxNiBAQCBTWVNDT05GPS9l dGMKLSAjICBmaQorQEAgLTE1LDYgKzE1LDE2IEBAIHJlbGVhc2U9YHVuYW1lIC1yYAorIGFyY2g9 YHVuYW1lIC1tYAogIHN0YXRlPSJ1bmtub3duIgogIAogK2lmIFsgLW4gJFRBUkdFVF9PUyBdOyB0 aGVuCkBAIC0zMiwxMCArMzIsMTAgQEAgaW5kZXggNmE1NWUwZjA4YmU0Li4zODg2NTY0ZmE0OTUg MTAwNzU1CiAgICBMaW51eCkKICAgICAgbWFrZXh0PSJsaW51eCI7CiBkaWZmIC0tZ2l0IGEvcHBw ZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4Ci1p bmRleCBiYzI5OTY4ZDQ0YzkuLmUwMTBhZDIxNTk4MSAxMDA2NDQKK2luZGV4IDY0MDNlM2Q0Nzdl My4uMzc1YmU3NjRlMTlhIDEwMDY0NAogLS0tIGEvcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4 CiArKysgYi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKLUBAIC00Nyw1ICs0Nyw1IEBAIGNs ZWFuOgorQEAgLTQ5LDUgKzQ5LDUgQEAgY2xlYW46CiAgCWZvciBkIGluICQoU1VCRElSUyk7IGRv ICQoTUFLRSkgJChNRkxBR1MpIC1DICQkZCBjbGVhbiB8fCBleGl0ICQkPzsgZG9uZQogIAogIGRl cGVuZDoKZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC45L3NlcmllcyBiL3BhdGNoZXMvcHBw LTIuNC45L3NlcmllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQwMjhm MDg5MgotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvcHBwLTIuNC45L3NlcmllcwpAQCAtMCww ICsxLDE3IEBACisjIGdlbmVyYXRlZCBieSBnaXQtcHR4LXBhdGNoZXMKKyN0YWc6YmFzZSAtLXN0 YXJ0LW51bWJlciAxCisjdGFnOnVwc3RyZWFtIC0tc3RhcnQtbnVtYmVyIDEKKzAwMDEtY29uZmln dXJlLUFsbG93LWNvbW1hcy1pbi10aGUtQ0ZMQUdTLTIyMC5wYXRjaAorMDAwMi1wcHBkLUZpeC1j b21waWxhdGlvbi13aXRoLW9sZGVyLWdsaWJjLW9yLWtlcm5lbC1oZWFkLnBhdGNoCisjdGFnOmRl YmlhbiAtLXN0YXJ0LW51bWJlciAxMDAKKzAxMDAtc3VwcG9ydC1idWlsZGluZy1wcHBkdW1wLXdp dGgtdGhlLXN5c3RlbS16bGliLnBhdGNoCiswMTAxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10 aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKKzAxMDItcHBwb2Vfbm9hZHMucGF0Y2gKKzAxMDMtRm9y d2FyZGVkLWh0dHBzLWdpdGh1Yi5jb20tcGF1bHVzbWFjay1wcHAtaXNzdWVzLTE4Ny5wYXRjaAor MDEwNC1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2gKKzAxMDUtRGViaWFuLXNwZWNpZmljLWNoYW5n ZXMucGF0Y2gKKzAxMDYtUmVwbGFjZS12ZW5kb3JlZC1oYXNoLWZ1bmN0aW9ucy13aXRoLWxpYmNy eXB0by5wYXRjaAorI3RhZzpwdHggLS1zdGFydC1udW1iZXIgMjAwCiswMjAwLXBwcGQtbWFrZS1t YWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCiswMjAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRl LWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaAorIyA5YzkwMTZhODk1NmNmOGMwZGM4NGVlOGRi ZTgwM2NmMyAgLSBnaXQtcHR4LXBhdGNoZXMgbWFnaWMKZGlmZiAtLWdpdCBhL3J1bGVzL3BwcC5t YWtlIGIvcnVsZXMvcHBwLm1ha2UKaW5kZXggOGJmYjg4YjU1Li45MzI5MTBjOTggMTAwNjQ0Ci0t LSBhL3J1bGVzL3BwcC5tYWtlCisrKyBiL3J1bGVzL3BwcC5tYWtlCkBAIC0xNiw4ICsxNiw4IEBA IFBBQ0tBR0VTLSQoUFRYQ09ORl9QUFApICs9IHBwcAogIwogIyBQYXRocyBhbmQgbmFtZXMKICMK LVBQUF9WRVJTSU9OCTo9IDIuNC43Ci1QUFBfTUQ1CQk6PSA3ODgxOGY0MGU2ZDMzYTFkMWRlNjhh MTU1MWY2NTk1YQorUFBQX1ZFUlNJT04JOj0gMi40LjkKK1BQUF9NRDUJCTo9IGM4ODE1M2FlM2Qx NmFlMTE0MTUyY2QzYzE1YzczMDFkCiBQUFAJCTo9IHBwcC0kKFBQUF9WRVJTSU9OKQogUFBQX1NV RkZJWAk6PSB0YXIuZ3oKIFBQUF9VUkwJCTo9IGh0dHA6Ly9mdHAuc2FtYmEub3JnL3B1Yi9wcHAv JChQUFApLiQoUFBQX1NVRkZJWCkKQEAgLTU1LDcgKzU1LDcgQEAgUFBQX1NIQVJFRF9JTlNUX1BB VEggOj0gL3Vzci9saWIvcHBwZC8kKFBQUF9WRVJTSU9OKQogJChTVEFURURJUikvcHBwLnByZXBh cmU6CiAJQCQoY2FsbCB0YXJnZXRpbmZvKQogCUBjZCAkKFBQUF9ESVIpICYmICQoUFBQX1BBVEgp ICQoUFBQX0NPTkZfRU5WKSBcCi0JCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1zeXNjb25m ZGlyPS9ldGMKKwkJLi9jb25maWd1cmUgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAt LWNjPSQoQ1JPU1NfQ0MpCiAKIAlAJChjYWxsIGRpc2FibGVfc2gsJChQUFBfRElSKS9wcHBkL01h a2VmaWxlLFVTRV9QQU09eSkKIAotLSAKMi4zMC4yCgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCnB0eGRpc3QgbWFpbGluZyBsaXN0CnB0eGRpc3RAcGVu Z3V0cm9uaXguZGUKVG8gdW5zdWJzY3JpYmUsIHNlbmQgYSBtYWlsIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiIHRvIHB0eGRpc3QtcmVxdWVzdEBwZW5ndXRyb25peC5kZQo=