From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27359 invoked by alias); 26 Nov 2013 01:25:46 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 27349 invoked by uid 89); 26 Nov 2013 01:25:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_99,KAM_STOCKGEN,RDNS_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mail-ea0-f175.google.com Received: from Unknown (HELO mail-ea0-f175.google.com) (209.85.215.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 26 Nov 2013 01:25:10 +0000 Received: by mail-ea0-f175.google.com with SMTP id z10so2960083ead.6 for ; Mon, 25 Nov 2013 17:25:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=0E4A4Ag/FNLSvkKYax30u1frixbV0yDK+wYsD01j4RE=; b=VdfXTLfey2vpbZi7MLmXXHb3j1umUeW+o48bCWtqxtv93fKU1uubu6fRipiyH+44ds CCDezgGcfvnR1dqVITWGcjyeyJ+8Pc1X20iDw9JetbcQhpBhi3qm5+sa/630d86O5BgU 8rS95/DGTeVrpFufhh7wWkBDq8vOm1BjDSPkGtqxP7ScGLGH0AABLo662GHLrnFBWlTl PMxSgN9sQxjDtDhd//DNm68FkDH/QByOzdzhf61D/5nZqeZhnvhw0lu+l/43lokpaswZ z6IchlbGImj2XKrCgu9UXjiFTDTiPXUAKlA5MNlmOrS4VindAwpSpXFP00577V+Z39fP tQ+Q== X-Gm-Message-State: ALoCoQkWn3XMQRUsKKkv6k/go3vVcW+VHB2Emq3evS5V2XB4C8an2o2o38v8+neNWOq8MhWEUtjvF6wdF0mLApOsFiDCYYpJTfD/nmbeiEf7+Uq3ZvzVN55B4qCsPNFrD282teco4RQDBXH0p3FEqszVZA2QFFpceYLiAYoyOunUzt18TGSJOKUA4eVJYW1rpDVgcvByFZgKlw7ShhB/eVLfcoQpszrhqw== MIME-Version: 1.0 X-Received: by 10.14.219.4 with SMTP id l4mr466793eep.94.1385429100354; Mon, 25 Nov 2013 17:25:00 -0800 (PST) Received: by 10.14.151.72 with HTTP; Mon, 25 Nov 2013 17:25:00 -0800 (PST) In-Reply-To: References: Date: Tue, 26 Nov 2013 03:22:00 -0000 Message-ID: Subject: Re: [PATCH] Debug Methods in GDB Python From: Siva Chandra To: gdb-patches Cc: Doug Evans Content-Type: multipart/mixed; boundary=047d7b62492c63900e04ec0a5986 X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00797.txt.bz2 --047d7b62492c63900e04ec0a5986 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2498 Doug pointed out offlist that the ChangeLog was improperly done. Below is the corrected ChangeLog entry. For convenience, I have also attached the same patch that I have posted last time. 2013-11-25 Siva Chandra Reddy Add Debug methods support in GDB Python. * Makefile.in: Add entries for new files. * data-directory/Makefile.in: Add entries for new Python files. * eval.c (evaluate_subexp_standard): Lookup and invoke methods defined in extension languages. * valarith.c (value_x_binop, value_x_unop): Lookup and invoke overloaded operator methods defined in extension languages. * valops.c (find_oload_method_list, find_method_list, find_overload_match, find_oload_champ): Lookup methods defined in extension languages. (value_has_indirect_dynamic_type): New function to determine the indirect dynamic type of a value. * value.h (find_overload_match): Update signature. * ext-function.c: New file. * ext-function.h: New file. * python/py-debugmethods.c: New file. * python/py-objfile.c (objfile_object): New field 'debug_methods'. (objfpy_dealloc): XDECREF on the new debug_methods field. (objfpy_new, objfile_to_objfile_object): Initialize debug_methods field. (objfpy_get_debug_methods): New function. (objfile_getset): New entry 'debug_methods'. * python/py-progspace.c (pspace_object): New field 'debug_methods'. (pspy_dealloc): XDECREF on the new debug_methods field. (pspy_new, pspace_to_pspace_object): Initialize debug_methods field. (pspy_get_debug_methods): New function. (pspace_getset): New entry 'debug_methods'. * python/python-internal.h: Add declarations for new functions. * python/python.c (_initialize_python): Invoke gdbpy_initialize_debugmethods. * python/python.h: Add declarations of new functions. * python/lib/gdb/__init__.py (debug_methods): New attribute. * python/lib/gdb/debugmethods.py: New file. * python/lib/gdb/command/debug-methods.py: New file. testuite/ * gdb.python/py-debugmethods.cc: New testcase to test debug methods. * gdb.python/py-debugmethods.exp: New tests to test debug methods. * gdb.python/py-debugmethods.py: Python script supporting the new testcase and tests. --047d7b62492c63900e04ec0a5986 Content-Type: text/plain; charset=US-ASCII; name="dm_patch_v6.txt" Content-Disposition: attachment; filename="dm_patch_v6.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hoggky4s1 Content-length: 132915 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCAwNTkxMjc5Li43NWUyYmU2IDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yODcsNiArMjg3 LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktYnJlYWtwb2ludC5v IFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKKwlweS1k ZWJ1Z21ldGhvZHMubyBcCiAJcHktZXZlbnQubyBcCiAJcHktZXZ0cmVnaXN0 cnkubyBcCiAJcHktZXZ0cy5vIFwKQEAgLTMyMyw2ICszMjQsNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBc CiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29udGludWVldmVu dC5jIFwKKwlweXRob24vcHktZGVidWdtZXRob2RzLmMgXAogCXB5dGhvbi9w eS1ldmVudC5jIFwKIAlweXRob24vcHktZXZ0cmVnaXN0cnkuYyBcCiAJcHl0 aG9uL3B5LWV2dHMuYyBcCkBAIC03MzMsNyArNzM1LDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxw cmludC5jIGFkYS10YXNrcy5jIFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9j LmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwKIAlkd2FyZjItZnJh bWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmlyb24uYyBldmFsLmMg ZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNlcHRpb25zLmMgZXhw cHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgZXh0LWZ1bmN0 aW9uLmMgXAogCWYtZXhwLnkgZi1sYW5nLmMgZi10eXBlcHJpbnQuYyBmLXZh bHByaW50LmMgZmlsZXN5c3RlbS5jIFwKIAlmaW5kY21kLmMgZmluZHZhci5j IGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5jIFwKIAlnZGJh cmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJfb2JzdGFjay5jIFwK QEAgLTgzNSw3ICs4MzcsNyBAQCByczYwMDAtdGRlcC5oIHJzNjAwMC1haXgt dGRlcC5oIFwKIGNvbW1vbi9nZGJfbG9jYWxlLmggY29tbW9uL2dkYl9kaXJl bnQuaCBhcmNoLXV0aWxzLmggdHJhZC1mcmFtZS5oIGdudS1uYXQuaCBcCiBs YW5ndWFnZS5oIG5ic2QtdGRlcC5oIHNvbGliLXN2cjQuaCBcCiBtYWNyb2V4 cC5oIHVpLWZpbGUuaCByZWdjYWNoZS5oIHRyYWNlcG9pbnQuaCBpMzg2LXRk ZXAuaCBcCi1pbmYtY2hpbGQuaCBwLWxhbmcuaCBldmVudC10b3AuaCBnZGJ0 eXBlcy5oIHVzZXItcmVncy5oIFwKK2luZi1jaGlsZC5oIHAtbGFuZy5oIGV2 ZW50LXRvcC5oIGV4dC1mdW5jdGlvbi5oIGdkYnR5cGVzLmggdXNlci1yZWdz LmggXAogcmVnZm9ybWF0cy9yZWdkZWYuaCBjb25maWcvYWxwaGEvbm0tb3Nm My5oICBjb25maWcvaTM4Ni9ubS1pMzg2Z251LmggXAogY29uZmlnL2kzODYv bm0tZmJzZC5oIFwKIGNvbmZpZy9ubS1udG8uaCBjb25maWcvc3BhcmMvbm0t c29sMi5oIGNvbmZpZy9ubS1saW51eC5oIFwKQEAgLTk1Nyw3ICs5NTksOCBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZ T0JKKSBcCiAJaW5mZXJpb3IubyBvc2RhdGEubyBnZGJfdXNsZWVwLm8gcmVj b3JkLm8gcmVjb3JkLWZ1bGwubyBnY29yZS5vIFwKIAlnZGJfdmVjcy5vIGpp dC5vIHByb2dzcGFjZS5vIHNraXAubyBwcm9iZS5vIFwKIAljb21tb24tdXRp bHMubyBidWZmZXIubyBwdGlkLm8gZ2RiLWRsZmNuLm8gY29tbW9uLWFnZW50 Lm8gXAotCWZvcm1hdC5vIHJlZ2lzdHJ5Lm8gYnRyYWNlLm8gcmVjb3JkLWJ0 cmFjZS5vIHdhaXRzdGF0dXMubworCWZvcm1hdC5vIHJlZ2lzdHJ5Lm8gYnRy YWNlLm8gcmVjb3JkLWJ0cmFjZS5vIHdhaXRzdGF0dXMubyBcCisJZXh0LWZ1 bmN0aW9uLm8KIAogVFNPQlMgPSBpbmZsb3cubwogCkBAIC0yMTgxLDYgKzIx ODQsMTAgQEAgcHktY29udGludWVldmVudC5vOiAkKHNyY2RpcikvcHl0aG9u L3B5LWNvbnRpbnVlZXZlbnQuYwogCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZM QUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYwogCSQo UE9TVENPTVBJTEUpCiAKK3B5LWRlYnVnbWV0aG9kcy5vOiAkKHNyY2Rpcikv cHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jCisJJChDT01QSUxFKSAkKFBZVEhP Tl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZGVidWdtZXRob2RzLmMK KwkkKFBPU1RDT01QSUxFKQorCiBweS1ldmVudC5vOiAkKHNyY2RpcikvcHl0 aG9uL3B5LWV2ZW50LmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykg JChzcmNkaXIpL3B5dGhvbi9weS1ldmVudC5jCiAJJChQT1NUQ09NUElMRSkK ZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBi L2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgppbmRleCAxZTAwYzU4 Li42MTQ2Y2YxIDEwMDY0NAotLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu CkBAIC02MSw4ICs2MSwxMCBAQCBQWVRIT05fRklMRVMgPSBcCiAJZ2RiL3R5 cGVzLnB5IFwKIAlnZGIvcHJpbnRpbmcucHkgXAogCWdkYi9wcm9tcHQucHkg XAorCWdkYi9kZWJ1Z21ldGhvZHMucHkgXAogCWdkYi9jb21tYW5kL2JvdW5k X3JlZ2lzdGVycy5weSBcCiAJZ2RiL2NvbW1hbmQvX19pbml0X18ucHkgXAor CWdkYi9jb21tYW5kL2RlYnVnX21ldGhvZHMucHkgXAogCWdkYi9jb21tYW5k L2ZyYW1lX2ZpbHRlcnMucHkgXAogCWdkYi9jb21tYW5kL3R5cGVfcHJpbnRl cnMucHkgXAogCWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5weSBcCmRp ZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIu dGV4aW5mbwppbmRleCBlYzlkOTAxLi45ZWFiZDFkIDEwMDY0NAotLS0gYS9n ZGIvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8K QEAgLTIzNTI2LDYgKzIzNTI2LDcgQEAgb3B0aW9uYWwgYXJndW1lbnRzIHdo aWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6CiAqIFNlbGVjdGluZyBQ cmV0dHktUHJpbnRlcnM6OiAgIEhvdyBHREIgY2hvb3NlcyBhIHByZXR0eS1w cmludGVyLgogKiBXcml0aW5nIGEgUHJldHR5LVByaW50ZXI6OiAgICBXcml0 aW5nIGEgUHJldHR5LVByaW50ZXIuCiAqIFR5cGUgUHJpbnRpbmcgQVBJOjoJ CVByZXR0eS1wcmludGluZyB0eXBlcy4KKyogRGVidWcgTWV0aG9kcyBJbiBQ eXRob246OiAgICAgRGVidWcgTWV0aG9kcyBJbiBQeXRob24uCiAqIEZyYW1l IEZpbHRlciBBUEk6OiAgICAgICAgICAgIEZpbHRlcmluZyBGcmFtZXMuCiAq IEZyYW1lIERlY29yYXRvciBBUEk6OiAgICAgICAgIERlY29yYXRpbmcgRnJh bWVzLgogKiBXcml0aW5nIGEgRnJhbWUgRmlsdGVyOjogICAgICBXcml0aW5n IGEgRnJhbWUgRmlsdGVyLgpAQCAtMjQ5MDksNiArMjQ5MTAsNzUgQEAgZG9u ZSB0aGVuIHR5cGUgcHJpbnRlcnMgd291bGQgaGF2ZSB0byBtYWtlIHVzZSBv ZiB0aGUgZXZlbnQgc3lzdGVtIGluCiBvcmRlciB0byBhdm9pZCBob2xkaW5n IGluZm9ybWF0aW9uIHRoYXQgY291bGQgYmVjb21lIHN0YWxlIGFzIHRoZQog aW5mZXJpb3IgY2hhbmdlZC4KIAorQG5vZGUgRGVidWcgTWV0aG9kcyBJbiBQ eXRob24KK0BzdWJzdWJzZWN0aW9uIERlYnVnIE1ldGhvZHMgSW4gUHl0aG9u CitAY2luZGV4IGRlYnVnIG1ldGhvZHMgaW4gUHl0aG9uCisKK0RlYnVnIG1l dGhvZHMgYXJlLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgbWV0aG9kIGRlZmlu aXRpb25zIG9uIGNsYXNzZXMKK2J1dCBkZWZpbmVkIGluIEB2YWx1ZXtHREJO fSBQeXRob24gaW5zdGVhZCBvZiB0aGUgc291cmNlIGxhbmd1YWdlLiAgSWYg YQorcGFydGljdWxhciBtZXRob2QgKHdoaWNoIGNvdWxkIGJlIGFuIG92ZXJs b2FkZWQgb3BlcmF0b3IpIG5lZWRzIHRvIGJlCitpbnZva2VkIHRvIGV2YWx1 YXRlIGEgY2VydGFpbiBleHByZXNzaW9uIGluIEB2YWx1ZXtHREJOfSwgdGhl bgorQHZhbHVle0dEQk59IGludm9rZXMgdGhlIFB5dGhvbiBpbXBsZW1lbnRh dGlvbiBvZiB0aGUgbWV0aG9kIGlmIHRoZQorUHl0aG9uIGRlZmluaXRpb24g aXMgYmV0dGVyIG9yIGFzIGdvb2QgYSBtYXRjaCBhcyB0aGUgaW1wbGVtZW50 YXRpb24gb2YKK3RoZSBtZXRob2QgaW4gdGhlIHNvdXJjZSBsYW5ndWFnZS4g IEEgYmVuZWZpdCBvZiBoYXZpbmcgYSBkZWJ1ZyBtZXRob2QKK3JlcGxhY2Vt ZW50IGZvciBhIHNvdXJjZSBsYW5ndWFnZSBtZXRob2QgaXMgdGhhdCBleHBy ZXNzaW9ucyBpbnZvbHZpbmcKK3RoZSBtZXRob2QgY2FuIGJlIGV2YWx1YXRl ZCBpbiBAdmFsdWV7R0RCTn0gd2l0aG91dCBydW5uaW5nIHRoZSBtZXRob2QK K2luIHRoZSBpbmZlcmlvci4gIEFub3RoZXIgYmVuZWZpdCBpcyB3aXRoIHJl Z2FyZHMgdG8gbWV0aG9kIHdoaWNoCit0eXBpY2FsbHkgZ2V0IG9wdGltaXpl ZCBvdXQgYnkgdGhlIGNvbXBpbGVyLiAgU2luY2UgZGVidWcgbWV0aG9kcyBs aXZlCitpbiBAdmFsdWV7R0RCTn0gUHl0aG9uIGFuZCBub3QgaW4gdGhlIHNv dXJjZSBsYW5ndWFnZSwgdGhleSBhcmUgbmV2ZXIKK29wdGltaXplZCBvdXQu ICBMYXN0bHksIG9uZSBjb3VsZCBkZWZpbmUgYSBkZWJ1ZyBtZXRob2QgaW4g QHZhbHVle0dEQk59CitQeXRob24gd2hpY2ggZG9lcyBub3QgaGF2ZSBhbiBl cXVpdmFsZW50IGluIHRoZSBzb3VyY2UgbGFuZ3VhZ2UhCisKK1RoZSBkZWJ1 ZyBtZXRob2QgQVBJIHByb3ZpZGVkIGluIEB2YWx1ZXtHREJOfSBQeXRob24g Y2FuIGJlIGlsbHVzdHJhdGVkCit3aXRoIHRoZSBmb2xsb3dpbmcgZXhhbXBs ZS4gIENvbnNpZGVyIGEgQysrIGNvZGUgc25pcHBldCBhcyBmb2xsb3dzOgor CitAc21hbGxleGFtcGxlCitjbGFzcyBBCitAeworIHB1YmxpYzoKKyAgaW50 IGdldGEodm9pZCkKKyAgQHsKKyAgICByZXR1cm4gYTsKKyAgQH0KKworIHBy aXZhdGU6CisgIGludCBhOworQH07CitAZW5kIHNtYWxsZXhhbXBsZQorCitJ biB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIG1ldGhvZCBAY29kZXtnZXRhfSBp biBAY29kZXtjbGFzcyBBfSwgbWlnaHQKK2dldCBvcHRpbWl6ZWQgb3V0IGlu IGEgY2xpZW50IGV4ZWN1dGFibGUgaWYgQGNvZGV7Z2V0YX0gaXMgbmV2ZXIg Y2FsbGVkLgorSG93ZXZlciwgb25lIG1pZ2h0IHdhbnQgdG8gY2FsbCBAY29k ZXtnZXRhfSBmcm9tIEB2YWx1ZXtHREJOfSBmb3IKK2RlYnVnZ2luZy4gIEZv ciBzdWNoIGNhc2VzLCB3ZSBjb3VsZCBoYXZlIGFuIGVxdWl2YWxlbnQgUHl0 aG9uCitpbXBsZW1lbnRhdGlvbiBhcyBhIHJlcGxhY2VtZW50IGZvciB0aGUg QysrIG1ldGhvZC4gIFRoZSBkZWJ1ZyBtZXRob2QKK2NhbiBiZSBkZWZpbmVk IGluIFB5dGhvbiBhcyBmb2xsb3dzOgorCitAc21hbGxleGFtcGxlCitkZWYg QV9nZXRhKG9iaik6CisgICIiIkZ1bmN0aW9uIHdoaWNoIGltcGxlbWVuZW50 cyBhIFB5dGhvbiByZXBsYWNlbWVudCBmb3IgQTo6Z2V0YS4KKyAgQXJnczoK KyAgICBvYmo6IFRoaXMgaXMgZXF1aXZhbGVudCBvZiB0aGUgQysrICd0aGlz JworICAiIiIKKyAgcmV0dXJuIG9ialsnYSddICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworZG1fQV9nZXRhID0gZ2Ri LmRlYnVnbWV0aG9kcy5TaW1wbGVEZWJ1Z01ldGhvZCgKKyAgICAnQV9nZXRh JywgICAgICAgICAgICAgICAgICAgICAgIyBBIHVuaXF1ZSBuYW1lIHRvIHRo ZSBkZWJ1ZyBtZXRob2QKKyAgICAnREVGQVVMVF9ERUJVR19NRVRIT0RfR1JP VVAnLCAgIyBBIGdyb3VwIG5hbWUgZm9yIHRoZSBkZWJ1ZyBtZXRob2QKKyAg ICBBX2dldGEsICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZnVuY3Rp b24gaW1wbGVtZW50aW5nIHRoZSBkZWJ1ZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIG1ldGhvZAorICAgICdeZG9wOjpBJCcsICAg ICAgICAgICAgICAgICAgICAjIFRoZSBjbGFzcyB0byB3aGljaCB0aGlzIGRl YnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWV0 aG9kIHNob3VsZCBiZWxvbmcuCisgICAgJ15nZXRhJCcgICAgICAgICAgICAg ICAgICAgICAgICMgVGhlIHJlZ2V4IHdoaWNoIG1hdGNoZXMgdGhlIG1ldGhv ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IHRoaXMgZGVidWcgbWV0aG9kIGlzIHJlcGxhY2luZy4KKykKKworZ2RiLmRl YnVnbWV0aG9kcy5yZWdpc3Rlcl9kZWJ1Z19tZXRob2RzKAorICAgIGdkYiwg ICAgICAgICAjIFJlZ2lzdGVyIHRoZSBkZWJ1ZyBtZXRob2QgZ2xvYmFsbHkK KyAgICBbZG1fQV9nZXRhXSAgIyBUaGUgbGlzdCBvZiBkZWJ1ZyBtZXRob2Rz IHRvIHJlZ2lzdGVyCispCitAZW5kIHNtYWxsZXhhbXBsZQorCisKIEBub2Rl IEZyYW1lIEZpbHRlciBBUEkKIEBzdWJzdWJzZWN0aW9uIEZpbHRlcmluZyBG cmFtZXMuCiBAY2luZGV4IGZyYW1lIGZpbHRlcnMgYXBpCmRpZmYgLS1naXQg YS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwppbmRleCA5ZDgxYTkyLi5lYmVi MDJkIDEwMDY0NAotLS0gYS9nZGIvZXZhbC5jCisrKyBiL2dkYi9ldmFsLmMK QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJzeW10YWIuaCIKICNpbmNs dWRlICJnZGJ0eXBlcy5oIgogI2luY2x1ZGUgInZhbHVlLmgiCisjaW5jbHVk ZSAiZXh0LWZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgog I2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgImZyYW1lLmgiCkBAIC0x NTk2LDcgKzE1OTcsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOT05fTUVUSE9ELCAvKiBub3QgbWV0aG9kICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgLyogcGFz cyBOVUxMIHN5bWJvbCBzaW5jZQogCQkJCQkgICAgICBzeW1ib2wgaXMgdW5r bm93biAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws ICZzeW1wLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCAmc3ltcCwgTlVMTCwgTlVMTCwgMCk7CiAKICAgICAgICAg ICAvKiBOb3cgZml4IHRoZSBleHByZXNzaW9uIGJlaW5nIGV2YWx1YXRlZC4g ICovCiAgICAgICAgICAgZXhwLT5lbHRzW3NhdmVfcG9zMSArIDJdLnN5bWJv bCA9IHN5bXA7CkBAIC0xNjI2LDExICsxNjI3LDEyIEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogCSAg ICAgIC8qIExhbmd1YWdlIGlzIEMrKywgZG8gc29tZSBvdmVybG9hZCByZXNv bHV0aW9uIGJlZm9yZQogCQkgZXZhbHVhdGlvbi4gICovCiAJICAgICAgc3Ry dWN0IHZhbHVlICp2YWxwID0gTlVMTDsKKyAgICAgICAgICAgICAgc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm5wID0gTlVMTDsKIAogCSAgICAg ICh2b2lkKSBmaW5kX292ZXJsb2FkX21hdGNoICgmYXJndmVjWzFdLCBuYXJn cywgdHN0ciwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUVUSE9ELCAvKiBtZXRob2QgKi8KIAkJCQkJICAmYXJnMiwgIC8qIHRoZSBv YmplY3QgKi8KLQkJCQkJICBOVUxMLCAmdmFscCwgTlVMTCwKKwkJCQkJICBO VUxMLCAmdmFscCwgTlVMTCwgJmV4dF9mbnAsCiAJCQkJCSAgJnN0YXRpY19t ZW1mdW5jcCwgMCk7CiAKIAkgICAgICBpZiAob3AgPT0gT1BfU0NPUEUgJiYg IXN0YXRpY19tZW1mdW5jcCkKQEAgLTE2NDAsOSArMTY0MiwzNiBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKIAkJCSAgICJgdGhpcycgcG9pbnRlciIpLAogCQkJIGZ1bmN0aW9uX25h bWUpOwogCQl9Ci0JICAgICAgYXJndmVjWzFdID0gYXJnMjsJLyogdGhlIGBg dGhpcycnIHBvaW50ZXIgKi8KLQkgICAgICBhcmd2ZWNbMF0gPSB2YWxwOwkv KiBVc2UgdGhlIG1ldGhvZCBmb3VuZCBhZnRlciBvdmVybG9hZAotCQkJCSAg IHJlc29sdXRpb24uICAqLworCisgICAgICAgICAgICAgIGlmIChleHRfZm5w KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGlmIChl eHRfZm5faXNfbWV0aG9kIChleHRfZm5wKSkKKyAgICAgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqcmV0 X3ZhbDsKKworICAgICAgICAgICAgICAgICAgICAgIHJldF92YWwgPSBleHRf Zm5faW52b2tlX21ldGhvZCAoZXh0X2ZucCwgYXJnMiwgYXJndmVjICsgMiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hcmdzIC0gMSk7CisgICAgICAgICAgICAgICAgICAgICAg aWYgKHJldF92YWwgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAg IGVycm9yIChfKCJFcnJvciBpbnZva2luZyBkZWJ1ZyBtZXRob2QgZm9yIG1l dGhvZCAlcy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 c3RyKTsKKworICAgICAgICAgICAgICAgICAgICAgIHhmcmVlIChleHRfZm5w KTsKKworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXRfdmFsOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNl CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAvKiBUaGlzIGVsc2Ugc2hvdWxkIG5vdCBiZSB0YWtlbiBhcyBvbmx5IGRl YnVnIG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgc3Vw cG9ydGVkIGN1cnJlbnRseS4gICovCisgICAgICAgICAgICAgICAgICAgICAg aW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiSW52b2tpbmcgYW4g ZXh0ZW5zaW9uIGxhbmd1YWdlICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gKG5vdCBhIG1ldGhvZCkuIikp OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor CisgICAgICAgICAgICAgIGFyZ3ZlY1sxXSA9IGFyZzI7ICAgICAvKiB0aGUg YGB0aGlzJycgcG9pbnRlciAqLworICAgICAgICAgICAgICBhcmd2ZWNbMF0g PSB2YWxwOyAgICAgLyogVXNlIHRoZSBtZXRob2QgZm91bmQgYWZ0ZXIgb3Zl cmxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc29sdXRpb24uICAqLwogCSAgICB9CiAJICBlbHNlCiAJICAgIC8qIE5v bi1DKysgY2FzZSAtLSBvciBubyBvdmVybG9hZCByZXNvbHV0aW9uLiAgKi8K QEAgLTE3MDEsNyArMTczMCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogCQkJCQkgIE5VTEwsICAg ICAgICAvKiBubyBuZWVkIGZvciBuYW1lICovCiAJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5PTl9NRVRIT0QsICAvKiBub3QgbWV0aG9k ICovCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IGZ1bmN0aW9uLCAvKiB0aGUgZnVuY3Rpb24gKi8KLQkJCQkJICBOVUxMLCAm c3ltcCwgTlVMTCwgbm9fYWRsKTsKKwkJCQkJICBOVUxMLCAmc3ltcCwgTlVM TCwgTlVMTCwgbm9fYWRsKTsKIAogCSAgICAgIGlmIChvcCA9PSBPUF9WQVJf VkFMVUUpCiAJCXsKZGlmZiAtLWdpdCBhL2dkYi9leHQtZnVuY3Rpb24uYyBi L2dkYi9leHQtZnVuY3Rpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zMTFjNWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL2V4 dC1mdW5jdGlvbi5jCkBAIC0wLDAgKzEsMTcyIEBACisvKiBTdXBwb3J0IGZv ciBmdW5jdGlvbnMgZGVmaW5lZCBpbiBleHRlbnNpb24gbGFuZ3VhZ2VzLgor CisgICBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMu aCIKKyNpbmNsdWRlICJjbGVhbnVwcy5oIgorI2luY2x1ZGUgImV4dC1mdW5j dGlvbi5oIgorCisjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorI2luY2x1ZGUg InZlYy5oIgorCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IKKyAgeworICAg IGNvbnN0IHN0cnVjdCBleHRfZnVuY19vcHMgKmxhbmc7CisKKyAgICBpbnQg aXNfbWV0aG9kOworCisgICAgdm9pZCAqZXh0X29iamVjdDsKKyAgfTsKKwor dHlwZWRlZiBzdHJ1Y3QgZXh0X2Z1bmNfb3BzICpleHRfbGFuZ19wOworREVG X1ZFQ19QIChleHRfbGFuZ19wKTsKK3N0YXRpYyBWRUMgKGV4dF9sYW5nX3Ap ICpleHRfbGFuZ192ZWMgPSBOVUxMOworCisvKiBSZWdpc3RlcnMgYW4gZXh0 ZW5zaW9uIGxhbmd1YWdlIHdpdGggR0RCLiAgKi8KKwordm9pZAorcmVnaXN0 ZXJfZXh0X2xhbmcgKHN0cnVjdCBleHRfZnVuY19vcHMgKmxhbmcpCit7Cisg IGlmIChleHRfbGFuZ192ZWMgPT0gTlVMTCkKKyAgICBleHRfbGFuZ192ZWMg PSBWRUNfYWxsb2MgKGV4dF9sYW5nX3AsIDEpOworICAgICAgCisgIFZFQ19z YWZlX3B1c2ggKGV4dF9sYW5nX3AsIGV4dF9sYW5nX3ZlYywgbGFuZyk7Cit9 CisKKy8qIFJldHVybnMgYSBuZXcgZXh0X2ZuX2Rlc2NyaXB0b3Igb2JqZWN0 LiAgTEFORyBpcyB0aGUgZXh0ZW50aW9uIGxhbmd1YWdlIHRoZQorICAgbmV3 IGV4dGVuc2lvbiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpbi4gIElTX01F VEhPRCBpbmRpY2F0ZXMgd2hldGhlciB0aGUKKyAgIG5ldyBleHRlbnNpb24g ZnVuY3Rpb24gaXMgYSBtZXRob2QuICBFWFRfT0JKIGlzIHRoZSBleHRlbnNp b24gbGFuZ3VhZ2UKKyAgIHNwZWNpZmljIGRhdGEgdG8gYmUgZW5jYXBzdWxh dGVkIGluIHRoZSBleHRfZm5fZGVzY3JpcHRvci4gICovCisKK3N0cnVjdCBl eHRfZm5fZGVzY3JpcHRvciAqCituZXdfZXh0X2Z1bmN0aW9uIChjb25zdCBz dHJ1Y3QgZXh0X2Z1bmNfb3BzICpsYW5nLCBpbnQgaXNfbWV0aG9kLCB2b2lk ICpleHRfb2JqKQoreworICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4 dF9mbiA9IFhDTkVXIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IpOworCisg IGV4dF9mbi0+aXNfbWV0aG9kID0gaXNfbWV0aG9kOworICBleHRfZm4tPmxh bmcgPSBsYW5nOworICBleHRfZm4tPmV4dF9vYmplY3QgPSBleHRfb2JqOwor CisgIHJldHVybiBleHRfZm47Cit9CisKKy8qIENsb25lcyBFWFRfRk4gYW5k IHJldHVybnMgYSBuZXcgYnV0IGlkZW50aWNhbCBleHRfZm5fZGVzY3JpcHRv ci4gICovCisKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCitleHRfZm5f Y2xvbmUgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuKQorewor ICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKm5ld19leHRfZm47CisgIGNv bnN0IHN0cnVjdCBleHRfZnVuY19vcHMgKmxhbmcgPSBleHRfZm4tPmxhbmc7 CisKKyAgbmV3X2V4dF9mbiA9IG5ld19leHRfZnVuY3Rpb24gKGxhbmcsIGV4 dF9mbi0+aXNfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGFuZy0+Y2xvbmVfZXh0X29iamVjdCAoZXh0X2ZuLT5leHRfb2Jq ZWN0KSk7CisKKyAgcmV0dXJuIG5ld19leHRfZm47Cit9CisKKy8qIElmIGEg bWV0aG9kIG9mIG5hbWUgTUVUSE9EIGlzIHRvIGJlIGludm9rZWQgb24gYW4g b2JqZWN0IG9mIHR5cGUgVFlQRSwgdGhlbgorICAgYWxsIGVudGVuc2lvbiBs YW5ndWFnZXMgYXJlIHNlYXJjaGVkIGZvciBpbXBsZW1lbnRhdGlvbnMgb2Yg bWV0aG9kcyB3aXRoIAorICAgbmFtZSBNRVRIT0QgaW4gdGhlIGV4dGVuc2lv biBsYW5ndWFnZXMuICBBbGwgbWF0Y2hlcyBmb3VuZCBhcmUgcmV0dXJuZWQg YXMKKyAgIGEgdmVjdG9yICdzdHJ1Y3QgZW50X2ZuX2Rlc2NyaXB0b3InIG9i amVjdHMuICBJZiBubyBtYXRjaGluZyBtZXRob2RzIGFyZQorICAgZm91bmQs IE5VTEwgaXMgcmV0dXJuZWQuICAqLworCitWRUMgKGV4dF9mbl9kZXNjcmlw dG9yX3ApICoKK2dldF9tYXRjaGluZ19leHRfbWV0aG9kcyAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm1ldGhvZCkKK3sKKyAgVkVDIChleHRf Zm5fZGVzY3JpcHRvcl9wKSAqZXh0X21ldGhvZHMgPSBOVUxMOworICBleHRf bGFuZ19wIGxhbmc7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IFZFQ19p dGVyYXRlIChleHRfbGFuZ19wLCBleHRfbGFuZ192ZWMsIGksIGxhbmcpOyBp KyspCisgICAgeworICAgICAgVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAq bGFuZ19tZXRob2RzLCAqbmV3X3ZlYzsKKworICAgICAgbGFuZ19tZXRob2Rz ID0gbGFuZy0+Z2V0X21hdGNoaW5nX2V4dF9tZXRob2RzICh0eXBlLCBtZXRo b2QpOworICAgICAgbmV3X3ZlYyA9IFZFQ19tZXJnZSAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCwgZXh0X21ldGhvZHMsIGxhbmdfbWV0aG9kcyk7CisKKyAgICAg IFZFQ19mcmVlIChleHRfZm5fZGVzY3JpcHRvcl9wLCBleHRfbWV0aG9kcyk7 CisgICAgICBWRUNfZnJlZSAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCwgbGFuZ19t ZXRob2RzKTsKKyAgICAgIGV4dF9tZXRob2RzID0gbmV3X3ZlYzsKKyAgICB9 CisKKyAgcmV0dXJuIGV4dF9tZXRob2RzOworfQorCisvKiBHaXZlbiBhbiBm dW5jdGlvbiBFWFRfRk4gaW1wbGVtZW50ZWQgaW4gYW4gZXh0ZW5zaW9uIGxh bmd1YWdlLCByZXR1cm5zIGFuCisgICBhcnJheSBvZiB0eXBlcyBvZiB0aGUg YXJndW1lbnRzIHRoZSBmdW5jdGlvbiBhY2NlcHRzLiAgVGhlIGxlbmd0aCBv ZiB0aGUKKyAgIGFycmF5IGlzIHJldHVybmVkIGluIE5BUkdTLiAgVGhlIHR5 cGUgb2YgdGhlICd0aGlzJyBvYmplY3QgaXMgcmV0dXJuZWQgYXMKKyAgIHRo ZSBmaXJzdCBhcmd1bWVudCBpZiBFWFRfRk4gaXMgYSBtZXRob2QuICBJZiBF WFRfRk4gZG9lcyBub3QgdGFrZSBhbnkKKyAgIGFyZ3VtZW50cywgdGhlbiBO VUxMIGlzIHJldHVybmVkIHdpdGggMCBpbiBOQVJHUy4gICovCisKK3N0cnVj dCB0eXBlICoqCitleHRfZm5fZ2V0X2FyZ3R5cGVzIChzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3IgKmV4dF9mbiwgaW50ICpuYXJncykKK3sKKyAgZ2RiX2Fz c2VydCAoZXh0X2ZuICYmIGV4dF9mbi0+bGFuZyAmJiBleHRfZm4tPmxhbmct PmdldF9leHRfZm5fYXJndHlwZXMpOworCisgIHJldHVybiBleHRfZm4tPmxh bmctPmdldF9leHRfZm5fYXJndHlwZXMgKGV4dF9mbi0+ZXh0X29iamVjdCwg bmFyZ3MpOworfQorCisvKiBJZiBFWFRfRk4gaXMgYSBtZXRob2QgaW1wbGVt ZW50ZWQgaW4gYW4gZXh0ZW5zaW9uIGxhbmd1YWdlLCBpbnZva2VzICBpdCBh bmQKKyAgIHJldHVybnMgdGhlIHJlc3VsdGluZyB2YWx1ZS4gIFRoZSBtZXRo b2QgaXMgaW52b2tlZCBvbiBPQkogd2l0aCBhcmd1bWVudHMKKyAgIEFSR1Mu ICBOQVJHUyBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBBUkdTIGFycmF5LiAgKi8K Kworc3RydWN0IHZhbHVlICoKK2V4dF9mbl9pbnZva2VfbWV0aG9kIChzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiwgc3RydWN0IHZhbHVlICpv YmosCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICoqYXJn cywgaW50IG5hcmdzKQoreworICBnZGJfYXNzZXJ0IChleHRfZm4gJiYgZXh0 X2ZuLT5pc19tZXRob2QgJiYgZXh0X2ZuLT5sYW5nCisgICAgICAgICAgICAg ICYmIGV4dF9mbi0+bGFuZy0+aW52b2tlX21ldGhvZCk7CisKKyAgcmV0dXJu IGV4dF9mbi0+bGFuZy0+aW52b2tlX21ldGhvZCAoZXh0X2ZuLT5leHRfb2Jq ZWN0LCBvYmosIGFyZ3MsIG5hcmdzKTsKK30KKworLyogUmV0dXJucyB0cnVl IGlmIEVYVF9GTiBpcyBhIG1ldGhvZCwgMCBvdGhlcndpc2UuICAqLworCitp bnQKK2V4dF9mbl9pc19tZXRob2QgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqZXh0X2ZuKQoreworICBpZiAoZXh0X2ZuICE9IE5VTEwpCisgICAgcmV0 dXJuIGV4dF9mbi0+aXNfbWV0aG9kOworCisgIHJldHVybiAwOworfQorCisv KiBGcmVlcyBhIHZlY3RvciBvZiBleHRfZm5fZGVzY3JpcHRvcnMgVkVDLiAg Ki8KKworc3RhdGljIHZvaWQKK2V4dF9mbl92ZWNfZnJlZSAodm9pZCAqdmVj KQoreworICBpbnQgaTsKKyAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpl eHRfZm47CisgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKnYgPSAoVkVD IChleHRfZm5fZGVzY3JpcHRvcl9wKSAqKSB2ZWM7CisKKyAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKGV4dF9mbl9kZXNjcmlwdG9yX3AsIHYsIGksIGV4 dF9mbik7IGkrKykKKyAgICB7CisgICAgICBleHRfZm4tPmxhbmctPmZyZWVf ZXh0X29iaiAoZXh0X2ZuLT5leHRfb2JqZWN0KTsKKyAgICAgIHhmcmVlIChl eHRfZm4pOworICAgIH0KK30KKworLyogUmV0dXJuIGEgY2xlYW51cCBvYmpl Y3QgdG8gZnJlZSBhIHZlY3RvciBWRUMgb2YgZXh0ZW5zaW9uIGZ1bmN0aW9u CisgICBkZXNjcmlwdG9ycy4gICovCisKK3N0cnVjdCBjbGVhbnVwICoKK21h a2VfZXh0X2ZuX3ZlY19jbGVhbnVwIChWRUMgKGV4dF9mbl9kZXNjcmlwdG9y X3ApICp2ZWMpCit7CisgIHJldHVybiBtYWtlX2NsZWFudXAgKGV4dF9mbl92 ZWNfZnJlZSwgKHZvaWQgKikgdmVjKTsKK30KZGlmZiAtLWdpdCBhL2dkYi9l eHQtZnVuY3Rpb24uaCBiL2dkYi9leHQtZnVuY3Rpb24uaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjA1MDA5Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiL2V4dC1mdW5jdGlvbi5oCkBAIC0wLDAgKzEsNzUgQEAK Ky8qIFN1cHBvcnQgZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGV4dGVuc2lv biBsYW5ndWFnZXMuCisKKyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisj aWYgIWRlZmluZWQgKEVYVF9GVU5DVElPTl9IKQorI2RlZmluZSBFWFRfRlVO Q1RJT05fSAorCisjaW5jbHVkZSAidmVjLmgiCisKK3N0cnVjdCBjbGVhbnVw Oworc3RydWN0IHZhbHVlOworc3RydWN0IHR5cGU7CitzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3I7CisKK3R5cGVkZWYgc3RydWN0IGV4dF9mbl9kZXNjcmlw dG9yICpleHRfZm5fZGVzY3JpcHRvcl9wOworREVGX1ZFQ19QIChleHRfZm5f ZGVzY3JpcHRvcl9wKTsKK3R5cGVkZWYgVkVDIChleHRfZm5fZGVzY3JpcHRv cl9wKSBleHRfZm5fdmVjOworCit0eXBlZGVmIHN0cnVjdCB2YWx1ZSogKGlu dm9rZV9tZXRob2RfZnR5cGUpICh2b2lkICpleHRfb2JqLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZh bHVlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgdmFsdWUgKiosIGludCBuYXJncyk7CisKK3R5cGVk ZWYgdm9pZCAqIChjbG9uZV9leHRfb2JqX2Z0eXBlKSAodm9pZCAqZXh0X29i aik7CisKK3R5cGVkZWYgdm9pZCAoZnJlZV9leHRfb2JqX2Z0eXBlKSAodm9p ZCAqZXh0X29iaik7CisKK3R5cGVkZWYgZXh0X2ZuX3ZlYyAqKGdldF9tYXRj aGluZ19leHRfbWV0aG9kc19mdHlwZSkgKHN0cnVjdCB0eXBlICp0eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kKTsKKwordHlwZWRlZiBzdHJ1 Y3QgdHlwZSoqIChnZXRfZXh0X2ZuX2FyZ3R5cGVzX2Z0eXBlKSAodm9pZCAq ZXh0X29iaiwgaW50ICpuYXJncyk7CisKK3N0cnVjdCBleHRfZnVuY19vcHMK KyAgeworICAgIGNsb25lX2V4dF9vYmpfZnR5cGUgKmNsb25lX2V4dF9vYmpl Y3Q7CisgICAgZnJlZV9leHRfb2JqX2Z0eXBlICpmcmVlX2V4dF9vYmo7Cisg ICAgZ2V0X21hdGNoaW5nX2V4dF9tZXRob2RzX2Z0eXBlICpnZXRfbWF0Y2hp bmdfZXh0X21ldGhvZHM7CisgICAgZ2V0X2V4dF9mbl9hcmd0eXBlc19mdHlw ZSAqZ2V0X2V4dF9mbl9hcmd0eXBlczsKKyAgICBpbnZva2VfbWV0aG9kX2Z0 eXBlICppbnZva2VfbWV0aG9kOworICB9OworCitleHRlcm4gdm9pZCByZWdp c3Rlcl9leHRfbGFuZyAoc3RydWN0IGV4dF9mdW5jX29wcyAqbGFuZyk7CisK K2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV4dF9mbl9pbnZva2VfbWV0aG9kIChz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdmFsdWUgKiosIGludCBuYXJncyk7CisKK2V4dGVybiBzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbl9jbG9uZSAoc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICopOworCitleHRlcm4gc3RydWN0IGV4dF9mbl9kZXNjcmlw dG9yICpuZXdfZXh0X2Z1bmN0aW9uICgKKyAgICBjb25zdCBzdHJ1Y3QgZXh0 X2Z1bmNfb3BzICpsYW5nLCBpbnQgaXNfbWV0aG9kLCB2b2lkICpleHRfb2Jq KTsKKworZXh0ZXJuIGV4dF9mbl92ZWMgKmdldF9tYXRjaGluZ19leHRfbWV0 aG9kcyAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAqKTsKKworZXh0ZXJu IHN0cnVjdCB0eXBlICoqZXh0X2ZuX2dldF9hcmd0eXBlcyAoc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICosIGludCAqKTsKKworZXh0ZXJuIGludCBleHRf Zm5faXNfbWV0aG9kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKik7CisK K2V4dGVybiBzdHJ1Y3QgY2xlYW51cCogbWFrZV9leHRfZm5fdmVjX2NsZWFu dXAgKFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKnZlYyk7CisKKyNlbmRp ZiAvKiBFWFRfRlVOQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9saWIvZ2RiL19faW5pdF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL19f aW5pdF9fLnB5CmluZGV4IDYxZjViNWUuLmQ0ZDdiYTcgMTAwNjQ0Ci0tLSBh L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorKysgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvX19pbml0X18ucHkKQEAgLTY3LDYgKzY3LDggQEAgcHJl dHR5X3ByaW50ZXJzID0gW10KIAogIyBJbml0aWFsIHR5cGUgcHJpbnRlcnMu CiB0eXBlX3ByaW50ZXJzID0gW10KKyMgSW5pdGlhbCBkZWJ1Z19tZXRob2Rz LgorZGVidWdfbWV0aG9kcyA9IFtdCiAjIEluaXRpYWwgZnJhbWUgZmlsdGVy cy4KIGZyYW1lX2ZpbHRlcnMgPSB7fQogCmRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9kZWJ1Z19tZXRob2RzLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvZGVidWdfbWV0aG9kcy5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDJlYjI1Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZGVidWdf bWV0aG9kcy5weQpAQCAtMCwwICsxLDIxOCBAQAorIyBEZWJ1ZyBtZXRob2Qg Y29tbWFuZHMuCisjIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisj CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitpbXBvcnQgZ2Ri CitpbXBvcnQgcmUKKworIiIiR0RCIGNvbW1hbmRzIGZvciB3b3JraW5nIHdp dGggZGVidWctbWV0aG9kcy4iIiIKKworCitkZWYgcGFyc2VfZG1fY29tbWFu ZF9hcmdzKGFyZyk6CisgICAgIiIiUGFyc2VzIHRoZSBhcmd1bWVudHMgcGFz c2VkIHRvIGEgZGVidWcgbWV0aG9kIGNvbW1hbmQuCisKKyAgICBBcmd1bWVu dHM6CisgICAgICAgIGFyZzogVGhlIGFyZ3VtZW50IHN0cmluZyBwYXNzZWQg dG8gYSBkZWJ1ZyBtZXRob2QgY29tbWFuZC4KKworICAgIFJldHVybnM6Cisg ICAgICAgIEEgMi10dXBsZTogKDxsb2N1cyBtYXRjaGluZyByZWd1bGFyIGV4 cHJlc3Npb24+LAorICAgICAgICAgICAgICAgICAgICA8bmFtZSBtYXRjaGlu ZyByZWd1bGFyIGV4cHJlc3Npb24+KQorICAgICIiIgorICAgIGFyZ3YgPSBn ZGIuc3RyaW5nX3RvX2FyZ3YoYXJnKQorICAgIGFyZ2MgPSBsZW4oYXJndikK KyAgICBpZiBhcmdjID4gMjoKKyAgICAgICAgcmFpc2UgU3ludGF4RXJyb3Io IlRvbyBtYW55IGFyZ3VtZW50cyB0byBjb21tYW5kLiIpCisgICAgbG9jdXNf cmUgPSAnJworICAgIG5hbWVfcmUgPSAnJworICAgIGlmIGFyZ2MgPj0gMToK KyAgICAgICAgbG9jdXNfcmUgPSBhcmd2WzBdCisgICAgaWYgYXJnYyA9PSAy OgorICAgICAgICBuYW1lX3JlID0gYXJndlsxXQorICAgIHJldHVybiBsb2N1 c19yZSwgbmFtZV9yZQorCisKK2RlZiBnZXRfbWF0Y2hpbmdfZ2xvYmFsX21l dGhvZHMobG9jdXNfcmUsIG5hbWVfcmUpOgorICAgICIiIlJldHVybnMgYSBk aWN0IG9mIG1hdGNoaW5nIGdsb2JhbGx5IHJlZ2lzdGVyZWQgZGVidWcgbWV0 aG9kcy4KKworICAgIEFyZ3VtZW50czoKKyAgICAgICAgbG9jdXNfcmU6IEV2 ZW4gdGhvdWdoIG9ubHkgZ2xvYmFsbHkgcmVnaXN0ZXJlZCBkZWJ1ZyBtZXRo b2RzIGFyZQorICAgICAgICAgICAgICAgICAgbG9va2VkIHVwLCB0aGV5IHdp bGwgYmUgbG9va2VkIHVwIG9ubHkgaWYgJ2dsb2JhbCcgbWF0Y2hlcworICAg ICAgICAgICAgICAgICAgTE9DVVNfUkUuCisgICAgICAgIG5hbWVfcmU6IFRo ZSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIG5hbWVzIG9mIGRl YnVnIG1ldGhvZHMuCisgICAgUmV0dXJuczoKKyAgICAgICAgQSBkaWN0IG9m IG1hdGNoaW5nIGdsb2JhbGx5IHJlZ2lzdGVyZWQgZGVidWcgbWV0aG9kcy4g IFRoZSBvbmx5IGtleSBpbgorICAgICAgICB0aGUgZGljdCB3aWxsIGJlICdn bG9iYWwnLgorICAgICIiIgorICAgIGRtID0ge30KKyAgICBpZiByZS5tYXRj aChsb2N1c19yZSwgJ2dsb2JhbCcpOgorICAgICAgICBtYXRjaGVzID0gW20g Zm9yIG0gaW4gZ2RiLmRlYnVnX21ldGhvZHMgaWYgcmUubWF0Y2gobmFtZV9y ZSwgbS5uYW1lKV0KKyAgICAgICAgaWYgbWF0Y2hlczoKKyAgICAgICAgICAg IGRtWydnbG9iYWwnXSA9IG1hdGNoZXMKKyAgICByZXR1cm4gZG0KKworCitk ZWYgZ2V0X21hdGNoaW5nX21ldGhvZHNfaW5fbG9jaShsb2NpLCBsb2N1c19y ZSwgbmFtZV9yZSk6CisgICAgIiIiUmV0dXJucyBhIGRpY3Qgb2YgbWFjdGhp bmcgcmVnaXN0ZXJlZCBkZWJ1ZyBtZXRob2RzIGluIHRoZSBMT0NJLgorCisg ICAgQXJndW1lbnRzOgorICAgICAgICBsb2NpOiBUaGUgbGlzdCBvZiBsb2Np IHRvIGxvb2t1cCBtYXRjaGluZyBkZWJ1ZyBtZXRob2RzIGluLgorICAgICAg ICBsb2N1c19yZTogRGVidWcgbWV0aG9kcyB3aWxsIGJlIGxvb2tlZCB1cCBp biBhIHBhcnRpY3VsYXIgbG9jdXMgb25seQorICAgICAgICAgICAgICAgICAg aWYgaXRzIGZpbGVuYW1lIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lv biBMT0NVU19SRS4KKyAgICAgICAgbmFtZV9yZTogVGhlIHJlZ3VsYXIgZXhw cmVzc2lvbiB0byBtYXRjaCB0aGUgbmFtZXMgb2YgZGVidWcgbWV0aG9kcy4K KworICAgIFJldHVybnM6CisgICAgICAgIEEgZGljdCBvZiBtYXRjaGluZyBk ZWJ1ZyBtZXRob2RzLiAgVGhlIGtleXMgb2YgdGhlIGRpY3QgYXJlIHRoZQor ICAgICAgICBmaWxlbmFtZXMgb2YgdGhlIGxvY2kgdGhlIGRlYnVnIG1ldGhv ZHMgYmVsb25nIHRvLgorICAgICIiIgorICAgIGRtID0ge30KKyAgICBmb3Ig bG9jdXMgaW4gbG9jaToKKyAgICAgICAgaWYgbm90IHJlLm1hdGNoKGxvY3Vz X3JlLCBsb2N1cy5maWxlbmFtZSk6CisgICAgICAgICAgICBjb250aW51ZQor ICAgICAgICBtYXRjaGVzID0gW20gZm9yIG0gaW4gbG9jdXMuZGVidWdfbWV0 aG9kcyBpZiByZS5tYXRjaChuYW1lX3JlLCBtLm5hbWUpXQorICAgICAgICBp ZiBtYXRjaGVzOgorICAgICAgICAgICAgZG1bbG9jdXMuZmlsZW5hbWVdID0g bWF0Y2hlcworICAgIHJldHVybiBkbQorCisKK2RlZiBwcmludF9kbV9pbmZv KGhlYWRlciwgZG1fZGljdCk6CisgICAgIiIiUHJpbnQgYSBkaWN0aW9uYXJ5 IG9mIGRlYnVnIG1ldGhvZHMgd2l0aCBhbiBvcHRpb25hbCBoZWFkZXIuIiIi CisgICAgaWYgbm90IGRtX2RpY3Q6CisgICAgICAgIHJldHVybgorICAgICMg R2xvYmFsIGRtIGluZm8gd2lsbCBub3QgaGF2ZSBhIGhlYWRlci4gIFNwYWNl IGFjY29yZGluZ2x5LgorICAgIHNwYWNlID0gJycKKyAgICBpZiBoZWFkZXI6 CisgICAgICAgIHByaW50ICclczonICUgaGVhZGVyCisgICAgICAgIHNwYWNl ID0gJyAgJworICAgIGZvciBsb2N1cywgZG1fbGlzdCBpbiBkbV9kaWN0Lml0 ZXJpdGVtcygpOgorICAgICAgICBpZiBub3QgZG1fbGlzdDoKKyAgICAgICAg ICAgIGNvbnRpbnVlCisgICAgICAgIHByaW50ICclcyVzOicgJSAoc3BhY2Us IGxvY3VzKQorICAgICAgICBmb3IgZG0gaW4gZG1fbGlzdDoKKyAgICAgICAg ICAgIGlmIGRtLmVuYWJsZWQ6CisgICAgICAgICAgICAgICAgc3RhdHVzID0g J2VuYWJsZWQnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IHN0YXR1cyA9ICdkaXNhYmxlZCcKKyAgICAgICAgICAgIHByaW50ICcgICVz JXMgLSAlcycgJSAoc3BhY2UsIGRtLm5hbWUsIHN0YXR1cykKKyAgICAgICAg ICAgIAorCitkZWYgc2V0X2RtX3N0YXR1cyhkbV9kaWN0LCBzdGF0dXMpOgor ICAgICIiIlNldCB0aGUgc3RhdHVzIChlbmFibGVkL2Rpc2FibGVkKSBvZiBh IGRpY3Rpb25hcnkgb2YgZGVidWcgbWV0aG9kcy4iIiIKKyAgICBmb3IgbG9j dXMsIGRtX2xpc3QgaW4gZG1fZGljdC5pdGVyaXRlbXMoKToKKyAgICAgICAg aWYgbm90IGRtX2xpc3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAg ICBmb3IgZG0gaW4gZG1fbGlzdDoKKyAgICAgICAgICAgIGRtLmVuYWJsZWQg PSBzdGF0dXMKKworCitkZWYgc2V0X21hdGNoaW5nX2RtX3N0YXR1cyhhcmcs IHN0YXR1cyk6CisgICAgIiIiU2V0IHRoZSBzdGF0dXMgKGVuYWJsZWQvZGlz YWJsZWQpIG9mIGRlYnVnIG1ldGhvZHMgbWF0Y2hpbmcgQVJHLgorICAgIFRo aXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGVuYWJsZS9kaXNhYmxlIGNv bW1hbmRzLiAgQVJHIGlzIHRoZQorICAgIGFyZ3VtZW50IHN0cmluZyBwYXNz ZWQgdG8gdGhlIGNvbW1hbmRzLgorICAgICIiIgorICAgIGxvY3VzX3JlLCBu YW1lX3JlID0gcGFyc2VfZG1fY29tbWFuZF9hcmdzKGFyZykKKyAgICBzZXRf ZG1fc3RhdHVzKGdldF9tYXRjaGluZ19nbG9iYWxfbWV0aG9kcyhsb2N1c19y ZSwgbmFtZV9yZSksIHN0YXR1cykKKyAgICBzZXRfZG1fc3RhdHVzKAorICAg ICAgICBnZXRfbWF0Y2hpbmdfbWV0aG9kc19pbl9sb2NpKGdkYi5wcm9nc3Bh Y2VzKCksIGxvY3VzX3JlLCBuYW1lX3JlKSwKKyAgICAgICAgc3RhdHVzKQor ICAgIHNldF9kbV9zdGF0dXMoCisgICAgICAgIGdldF9tYXRjaGluZ19tZXRo b2RzX2luX2xvY2koZ2RiLm9iamZpbGVzKCksIGxvY3VzX3JlLCBuYW1lX3Jl KSwKKyAgICAgICAgc3RhdHVzKQorCisKK2NsYXNzIEluZm9EZWJ1Z01ldGhv ZChnZGIuQ29tbWFuZCk6CisgICAgIiIiR0RCIGNvbW1hbmQgdG8gbGlzdCBy ZWdpc3RlcmVkIGRlYnVnLW1ldGhvZHMuCisKKyAgICBVc2FnZTogaW5mbyBk ZWJ1Zy1tZXRob2QgW2xvY3VzLXJlZ2V4cCBbbmFtZS1yZWdleHBdXQorCisg ICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNo aW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVidWcKKyAgICBtZXRob2RzLiAg SWYgaXQgaXMgb21taXR0ZWQsIGFsbCByZWdpc3RlcmVkIGRlYnVnIG1ldGhv ZHMgZnJvbSBhbGwgbG9jaQorICAgIGFyZSBsaXN0ZWQuICBBIGxvY3VzIGNv dWxkIGJlICdnbG9iYWwnLCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGlu ZworICAgIGZpbGVuYW1lcyBvZiBwcm9ncmFtIHNwYWNlcyBvciBhIHJlZ3Vs YXIgZXhwcmVzc2lvbiBtYXRjaGluZyBmaWxlbmFtZXMgb2YKKyAgICBvYmpm aWxlcy4KKworICAgIE5BTUUtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNz aW9uIG1hdGNoaW5nIHRoZSBuYW1lcyBvZiBkZWJ1ZyBtZXRob2RzCisgICAg d2l0aGluIGEgZ2l2ZW4gbG9jdXMuICBJZiB0aGlzIG9taXR0ZWQgZm9yIGEg c3BlY2lmaWVkIGxvY3VzLCB0aGVuIGFsbAorICAgIHJlZ2lzdGVyZWQgZGVi dWcgbWV0aG9kcyBpbiB0aGUgbG9jdXMgYXJlIGxpc3RlZC4KKyAgICAiIiIK KworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoSW5m b0RlYnVnTWV0aG9kLCBzZWxmKS5fX2luaXRfXygiaW5mbyBkZWJ1Zy1tZXRo b2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZGIuQ09NTUFORF9EQVRBKQorCisgICAgZGVmIGludm9rZShz ZWxmLCBhcmcsIGZyb21fdHR5KToKKyAgICAgICAgbG9jdXNfcmUsIG5hbWVf cmUgPSBwYXJzZV9kbV9jb21tYW5kX2FyZ3MoYXJnKQorICAgICAgICBwcmlu dF9kbV9pbmZvKE5vbmUsIGdldF9tYXRjaGluZ19nbG9iYWxfbWV0aG9kcyhs b2N1c19yZSwgbmFtZV9yZSkpCisgICAgICAgIHByaW50X2RtX2luZm8oJ3By b2dzcGFjZXMnLCBnZXRfbWF0Y2hpbmdfbWV0aG9kc19pbl9sb2NpKAorICAg ICAgICAgICAgZ2RiLnByb2dzcGFjZXMoKSwgbG9jdXNfcmUsIG5hbWVfcmUp KQorICAgICAgICBwcmludF9kbV9pbmZvKCdvYmpmaWxlcycsIGdldF9tYXRj aGluZ19tZXRob2RzX2luX2xvY2koCisgICAgICAgICAgICBnZGIub2JqZmls ZXMoKSwgbG9jdXNfcmUsIG5hbWVfcmUpKQorCisKK2NsYXNzIEVuYWJsZURl YnVnTWV0aG9kKGdkYi5Db21tYW5kKToKKyAgICAiIiJHREIgY29tbWFuZCB0 byBlbmFibGUgYSBzcGVjaWZpZWQgKGdyb3VwIG9mKSBkZWJ1ZyBtZXRob2Qo cykuCisKKyAgICBVc2FnZTogZW5hYmxlIGRlYnVnLW1ldGhvZCBbbG9jdXMt cmVnZXhwIFtuYW1lLXJlZ2V4cF1dCisKKyAgICBMT0NVUy1SRUdFWFAgaXMg YSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIGxvY2F0aW9uIG9m IHRoZSBkZWJ1ZworICAgIG1ldGhvZHMuICBJZiBpdCBpcyBvbW1pdHRlZCwg YWxsIHJlZ2lzdGVyZWQgZGVidWcgbWV0aG9kcyBmcm9tIGFsbCBsb2NpCisg ICAgYXJlIGVuYWJsZWQuICBBIGxvY3VzIGNvdWxkIGJlICdnbG9iYWwnLCBh IHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZworICAgIGZpbGVuYW1lcyBv ZiBwcm9ncmFtIHNwYWNlcyBvciBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRj aGluZyBmaWxlbmFtZXMgb2YKKyAgICBvYmpmaWxlcy4KKworICAgIE5BTUUt UkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIHRoZSBu YW1lcyBvZiBkZWJ1ZyBtZXRob2RzCisgICAgd2l0aGluIGEgZ2l2ZW4gbG9j dXMuICBJZiB0aGlzIG9taXR0ZWQgZm9yIGEgc3BlY2lmaWVkIGxvY3VzLCB0 aGVuIGFsbAorICAgIHJlZ2lzdGVyZWQgZGVidWcgbWV0aG9kcyBpbiB0aGUg bG9jdXMgYXJlIGVuYWJsZWQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0 X18oc2VsZik6CisgICAgICAgIHN1cGVyKEVuYWJsZURlYnVnTWV0aG9kLCBz ZWxmKS5fX2luaXRfXygiZW5hYmxlIGRlYnVnLW1ldGhvZCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIu Q09NTUFORF9EQVRBKQorCisgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZy b21fdHR5KToKKyAgICAgICAgc2V0X21hdGNoaW5nX2RtX3N0YXR1cyhhcmcs IFRydWUpCisgICAgICAgIAorCitjbGFzcyBEaXNhYmxlRGVidWdNZXRob2Qo Z2RiLkNvbW1hbmQpOgorICAgICIiIkdEQiBjb21tYW5kIHRvIGRpc2FibGUg YSBzcGVjaWZpZWQgKGdyb3VwIG9mKSBkZWJ1ZyBtZXRob2QocykuCisKKyAg ICBVc2FnZTogZGlzYWJsZSBkZWJ1Zy1tZXRob2QgW2xvY3VzLXJlZ2V4cCBb bmFtZS1yZWdleHBdXQorCisgICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxh ciBleHByZXNzaW9uIG1hdGNoaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVi dWcKKyAgICBtZXRob2RzLiAgSWYgaXQgaXMgb21taXR0ZWQsIGFsbCByZWdp c3RlcmVkIGRlYnVnIG1ldGhvZHMgZnJvbSBhbGwgbG9jaQorICAgIGFyZSBk aXNhYmxlZC4gIEEgbG9jdXMgY291bGQgYmUgJ2dsb2JhbCcsIGEgcmVndWxh ciBleHByZXNzaW9uIG1hdGNoaW5nCisgICAgZmlsZW5hbWVzIG9mIHByb2dy YW0gc3BhY2VzIG9yIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIGZp bGVuYW1lcyBvZgorICAgIG9iamZpbGVzLgorCisgICAgTkFNRS1SRUdFWFAg aXMgYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIG5hbWVzIG9m IGRlYnVnIG1ldGhvZHMKKyAgICB3aXRoaW4gYSBnaXZlbiBsb2N1cy4gIElm IHRoaXMgb21pdHRlZCBmb3IgYSBzcGVjaWZpZWQgbG9jdXMsIHRoZW4gYWxs CisgICAgcmVnaXN0ZXJlZCBkZWJ1ZyBtZXRob2RzIGluIHRoZSBsb2N1cyBh cmUgZGlzYWJsZWQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs Zik6CisgICAgICAgIHN1cGVyKERpc2FibGVEZWJ1Z01ldGhvZCwgc2VsZiku X19pbml0X18oImRpc2FibGUgZGVidWctbWV0aG9kIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01N QU5EX0RBVEEpCisKKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90 dHkpOgorICAgICAgICBzZXRfbWF0Y2hpbmdfZG1fc3RhdHVzKGFyZywgRmFs c2UpCisgICAgICAgIAorCitkZWYgcmVnaXN0ZXJfZGVidWdfbWV0aG9kX2Nv bW1hbmRzKCk6CisgICAgIiIiSW5zdGFsbHMgdGhlIGRlYnVnIG1ldGhvZCBj b21tYW5kcy4iIiIKKyAgICBJbmZvRGVidWdNZXRob2QoKQorICAgIEVuYWJs ZURlYnVnTWV0aG9kKCkKKyAgICBEaXNhYmxlRGVidWdNZXRob2QoKQorCisK K3JlZ2lzdGVyX2RlYnVnX21ldGhvZF9jb21tYW5kcygpCmRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvZGVidWdtZXRob2RzLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2RlYnVnbWV0aG9kcy5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43Y2ZkMmUzCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RlYnVnbWV0aG9kcy5weQpAQCAtMCww ICsxLDE2MCBAQAorIyBQeXRob24gc2lkZSBvZiB0aGUgc3VwcG9ydCBmb3Ig ZGVidWcgbWV0aG9kcy4KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisi IiJVdGlsaXRpZXMgZm9yIGRlZmluaW5nIGRlYnVnIG1ldGhvZHMiIiIKKwor aW1wb3J0IGdkYgoraW1wb3J0IHJlCisKKworY2xhc3MgRGVidWdNZXRob2Qo b2JqZWN0KToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBhbGwgZGVidWcgbWV0 aG9kcyBkZWZpbmVkIGluIFB5dGhvbi4KKworICAgIEEgZGVidWcgbWV0aG9k IGRlZmluZWQgaW4gUHl0aG9uIHNob3VsZCBiZSBkZXJpdmVkIGZyb20gdGhp cyBjbGFzcy4gIFRoZQorICAgIGRlcml2ZWQgY2xhc3NlcyBzaG91bGQgb3Zl cnJpZGUgdGhlIG1ldGhvZHMgJ21hdGNoJywgJ2dldF9hcmd0eXBlcycgYW5k CisgICAgJ2ludm9rZScuCisKKyAgICBJbnRlcm5hbGx5LCBHREIgZmlyc3Qg aW52b2tlcyB0aGUgJ21hdGNoJyBtZXRob2QgdG8gbWF0Y2ggdGhlIGNsYXNz IHR5cGUKKyAgICBhbmQgdGhlIG1ldGhvZCBuYW1lLiAgSXQgbmV4dCBnZXRz IHRoZSBhcmd1bWVudCB0eXBlcyBvZiB0aGVzZSBtZXRob2RzIHZpYQorICAg IHRoZSAnZ2V0X2FyZ3R5cGVzJyBtZXRob2QgdG8gcGVyZm9ybSBvdmVybG9h ZCByZXNvbHV0aW9uLiAgSWYgR0RCIHNlbGVjdHMKKyAgICB0byBpbnZva2Ug YSBQeXRob24gZGVidWdtZXRob2QsIHRoZW4gaXQgaW52b2tlcyBpdCB2aWEg dGhlIG92ZXJyaWRkZW4KKyAgICAnaW52b2tlJyBtZXRob2QuCisgICAgIiIi CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICIi IgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmFtZTogQW4gaWRlbnRp ZnlpbmcgbmFtZSBmb3IgdGhlIGRlYnVnIG1ldGhvZC4KKyAgICAgICAgIiIi CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5lbmFi bGVkID0gVHJ1ZQorCisgICAgZGVmIG1hdGNoKHNlbGYsIGNsYXNzX3R5cGUs IG1ldGhvZF9uYW1lKToKKyAgICAgICAgIiIiTWF0Y2ggY2xhc3MgdHlwZSBh bmQgbWV0aG9kIG5hbWUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGNsYXNzX3R5cGU6IFRoZSBjbGFzcyB0eXBlIHRvIG1hdGNoCisgICAgICAg ICAgICBtZXRob2RfbmFtZTogVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0byBt YXRjaC4KKyAgICAgICAgIiIiCisgICAgICAgIGdkYi5HZGJFcnJvcignRVJS T1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ21hdGNoXCcuJykKKwor ICAgIGRlZiBnZXRfYXJndHlwZXMoc2VsZiwgY2xhc3NfdHlwZSwgbWV0aG9k X25hbWUpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHR5cGVzLCBh cyBnZGIuVHlwZSBvYmplY3RzLCBvZiB0aGUgYXJndW1lbnRzIG9mCisgICAg ICAgICAgIHRoZSBkZWJ1ZyBtZXRob2QuCisKKyAgICAgICAgQXJnczogCisg ICAgICAgICAgICBjbGFzc190eXBlOiBUaGUgZ2RiLlR5cGUgdmFsdWUgb2Yg dGhlIGNsYXNzIG9uIHdoaWNoIHRoZSBtZXRob2QKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlzIGRlZmluZWQuCisgICAgICAgICAgICBtZXRob2RfbmFt ZTogVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB3aG9zZSBhcmd1bWVudCB0eXBl cyBhcmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICBiZSByZXR1cm5l ZC4KKyAgICAgICAgIiIiCisgICAgICAgIGdkYi5HZGJFcnJvcignRVJST1I6 IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ2dldF9hcmd0eXBlc1wnLicp CisKKyAgICBkZWYgaW52b2tlKHNlbGYsIG9iaiwgbWV0aG9kX25hbWUsIGFy Z3MpOgorICAgICAgICAiIiJJbnZva2UgdGhlIGRlYnVnIG1ldGhvZC4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgb2JqOiBUaGUgZ2RiLlZhbHVl IG9mIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhvZCBpcyB0byBiZQor ICAgICAgICAgICAgICAgICBpbnZva2VkLgorICAgICAgICAgICAgbWV0aG9k X25hbWU6IFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgYmVpbmcgaW52b2tlZC4K KyAgICAgICAgICAgIGFyZ3M6IFRoZSB0dXBsZSBvZiBhcmd1bWVudHMgdG8g dGhlIG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgIGdkYi5HZGJFcnJv cignRVJST1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ2ludm9rZVwn LicpCisKKworY2xhc3MgU2ltcGxlRGVidWdNZXRob2QoRGVidWdNZXRob2Qp OgorICAgICIiIlRoaXMgaXMgYSB1dGlsaXR5IGNsYXNzIHdoaWNoIGRvZXMg bmFtZSBtYXRjaCBieSBjbGFzcyBuYW1lIG9mIHRoZQorICAgIG9iamVjdHMg b24gd2hpY2ggdGhlIGRlYnVnIG1ldGhvZHMgYXJlIGRlZmluZWQuICBGb3Ig c2ltcGxlIGNsYXNzZXMgYW5kCisgICAgbWV0aG9kcywgb25lIGNhbiBjaG9v c2UgdG8gdXNlIHRoaXMgY2xhc3MuICBGb3IgY29tcGxleCBkZWJ1ZyBtZXRo b2RzLAorICAgIHdoaWNoIG5lZWQgdG8gcmVwbGFjZS9pbXBsZW1lbnQgdGVt cGxhdGUgc291cmNlIG1ldGhvZHMgb24gcG9zc2libHkKKyAgICB0ZW1wbGF0 ZSBjbGFzc2VzLCBvbmUgc2hvdWxkIGltcGxlbWVudCB0aGVpciBvd24gZGVi dWcgbWV0aG9kIGNsYXNzZXMKKyAgICBkZXJpdmluZyBmcm9tIHRoZSBiYXNl IGNsYXNzICdEZWJ1Z01ldGhvZCcuICBTZWUgdGhlIHB5LWRlYnVnbWV0aG9k cy5weQorICAgIGluIHRoZSB0ZXN0c3VpdGUvZ2RiLnB5dGhvbiBkaXJlY3Rv cnkgb2YgdGhlIEdEQiBzb3VyY2UgdHJlZSBmb3IKKyAgICBleGFtcGxlcy4K KyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBtZXRo b2RfZnVuY3Rpb24sIGNsYXNzX21hdGNoZXIsIG1ldGhvZF9tYXRjaGVyLAor ICAgICAgICAgICAgICAgICAqYXJndHlwZXMpOgorICAgICAgICAiIiIKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIG5hbWU6IE5hbWUgb2YgdGhlIGRl YnVnIG1ldGhvZC4KKyAgICAgICAgICAgIG1ldGhvZF9mdW5jdGlvbjogQSBQ eXRob24gY2FsbGFibGUgd2hpY2ggd291bGQgYmUgY2FsbGVkIHZpYSB0aGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlIHRoZW0gb2Yg dGhpcyBjbGFzcyB0byBhY3R1YWxseSBpbnZva2UgdGhlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlYnVnIG1ldGhvZC4gIFRoaXMgY2FsbGFi bGUgc2hvdWxkIGFjY2VwdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2JqZWN0ICgqdGhpcykgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGZv bGxvd2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBy ZXN0IG9mIHRoZSBhcmd1bWVudHMgdG8gdGhlIG1ldGhvZC4KKyAgICAgICAg ICAgIGNsYXNzX21hdGNoZXI6IEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQg dG8gbWF0Y2ggdGhlIG5hbWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbGFzcyB3aG9zZSBtZXRob2QgdGhpcyBkZWJ1ZyBtZXRob2Qg aXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGluZy9y ZXBsYWNpbmcuCisgICAgICAgICAgICBtZXRob2RfbWF0Y2hlcjogQSByZWd1 bGFyIGV4cHJlc3Npb24gdXNlZCB0byBtYXRjaCB0aGUgbmFtZSBvZiB0aGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgdGhpcyBkZWJ1 ZyBtZXRob2QgaXMgaW1wbGVtZW50aW5nL3JlcGxhY2luZy4KKyAgICAgICAg ICAgIGFyZ3R5cGVzOiBUaGUgZ2RiLlR5cGUgb2JqZWN0cyBjb3JyZXNwb25k aW5nIHRvIHRoZSBhcmd1bWVudHMgdGhhdAorICAgICAgICAgICAgICAgICAg ICAgIHRoaXMgZGVidWcgbWV0aG9kIHRha2VzLgorICAgICAgICAiIiIKKyAg ICAgICAgRGVidWdNZXRob2QuX19pbml0X18oc2VsZiwgbmFtZSkKKyAgICAg ICAgYXNzZXJ0IGNhbGxhYmxlKG1ldGhvZF9mdW5jdGlvbiksICgKKyAgICAg ICAgICAgICdUaGUgIm1ldGhvZF9mdW5jdGlvbiIgYXJndW1lbnQgdG8gIlNp bXBsZURlYnVnTWV0aG9kIiAnIAorICAgICAgICAgICAgJ2NvbnN0cnVjdG9y IHNob3VsZCBiZSBhIGNhbGxhYmxlLicpCisgICAgICAgIHNlbGYuX21ldGhv ZF9mdW5jdGlvbiA9IG1ldGhvZF9mdW5jdGlvbgorICAgICAgICBzZWxmLl9j bGFzc19tYXRjaGVyID0gY2xhc3NfbWF0Y2hlcgorICAgICAgICBzZWxmLl9t ZXRob2RfbWF0Y2hlciA9IG1ldGhvZF9tYXRjaGVyCisgICAgICAgIHNlbGYu X2FyZ3R5cGVzID0gYXJndHlwZXMKKworICAgIGRlZiBtYXRjaChzZWxmLCBj bGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAgIGNtID0gcmUubWF0 Y2goc2VsZi5fY2xhc3NfbWF0Y2hlciwgc3RyKGNsYXNzX3R5cGUudW5xdWFs aWZpZWQoKS50YWcpKQorICAgICAgICBtbSA9IHJlLm1hdGNoKHNlbGYuX21l dGhvZF9tYXRjaGVyLCBtZXRob2RfbmFtZSkKKyAgICAgICAgaWYgY20gYW5k IG1tOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF9hcmd0 eXBlcyhzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAg IHJldHVybiBzZWxmLl9hcmd0eXBlcworCisgICAgZGVmIGludm9rZShzZWxm LCBvYmosIG1ldGhvZF9uYW1lLCBhcmdzKToKKyAgICAgICAgcmV0dXJuIHNl bGYuX21ldGhvZF9mdW5jdGlvbihvYmosICphcmdzKQorCisKK2RlZiByZWdp c3Rlcl9kZWJ1Z19tZXRob2RzKGxvY3VzLCBkZWJ1Z19tZXRob2RzKToKKyAg ICAiIiJSZWdpc3RlcnMgYSBsaXN0IG9mIERFQlVHX01FVEhPRFMgd2l0aCBh IExPQ1VTLgorCisgICAgQXJndW1lbnRzOgorICAgICAgICBsb2N1czogVGhl IGxvY3VzIGluIHdoaWNoIHRoZSBkZWJ1ZyBtZXRob2RzIHNob3VsZCBiZSBy ZWdpc3RlcmVkLiBJdAorICAgICAgICAgICAgICAgY2FuIGJlICdOb25lJyB0 byBpbmRpY2F0ZSB0aGF0IHRoZSBkZWJ1ZyBtZXRob2RzIHNob3VsZCBiZQor ICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBnbG9iYWxseS4gT3IsIGl0IGNv dWxkIGJlIGEgZ2RiLk9iamZpbGUgb3IgYQorICAgICAgICAgICAgICAgZ2Ri LlByb2dzcGFjZSBvYmplY3QgaW4gd2hpY2ggdGhlIGRlYnVnIG1ldGhvZHMg c2hvdWxkIGJlCisgICAgICAgICAgICAgICByZWdpc3RlcmVkLgorICAgICAg ICBkZWJ1Z19tZXRob2RzOiBUaGUgbGlzdCBvZiBkZWJ1ZyBtZXRob2RzIHRv IHJlZ2lzdGVyLgorICAgICIiIgorICAgIGlmIG5vdCBsb2N1czoKKyAgICAg ICAgbG9jdXMgPSBnZGIKKyAgICBpZiBsb2N1cyA9PSBnZGI6CisgICAgICAg IGxvY3VzX25hbWUgPSAnZ2xvYmFsJworICAgIGVsc2U6CisgICAgICAgIGxv Y3VzX25hbWUgPSBsb2N1cy5maWxlbmFtZQorICAgIGV4aXN0aW5nX21ldGhv ZF9saXN0ID0gW10KKyAgICBmb3IgbmV3X21ldGhvZCBpbiBkZWJ1Z19tZXRo b2RzOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuZXdfbWV0aG9kLCBE ZWJ1Z01ldGhvZCksICgKKyAgICAgICAgICAgICdEZWJ1ZyBtZXRob2Qgb2Jq ZWN0cyBzaG91bGQgYmUgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3MgJworICAg ICAgICAgICAgJ29mICJEZWJ1Z01ldGhvZCIuJykKKyAgICAgICAgZm9yIG9s ZF9tZXRob2QgaW4gbG9jdXMuZGVidWdfbWV0aG9kczoKKyAgICAgICAgICAg IGlmIG5ld19tZXRob2QubmFtZSA9PSBvbGRfbWV0aG9kLm5hbWU6CisgICAg ICAgICAgICAgICAgcHJpbnQgKCdXQVJOSU5HOiBSZXBsYWNpbmcgZGVidWcg bWV0aG9kIHdpdGggbmFtZSAiJXMiIGluICcKKyAgICAgICAgICAgICAgICAg ICAgICAgJyAiJXMiLicgJSAob2xkX21ldGhvZC5uYW1lLCBsb2N1c19uYW1l KSkKKyAgICAgICAgICAgICAgICBleGlzdGluZ19tZXRob2RfbGlzdC5hcHBl bmQob2xkX21ldGhvZCkKKyAgICBmb3Igb2xkX21ldGhvZCBpbiBleGlzdGlu Z19tZXRob2RfbGlzdDoKKyAgICAgICAgbG9jdXMuZGVidWdfbWV0aG9kcy5y ZW1vdmUob2xkX21ldGhvZCkKKyAgICBsb2N1cy5kZWJ1Z19tZXRob2RzLmV4 dGVuZChkZWJ1Z19tZXRob2RzKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eS1kZWJ1Z21ldGhvZHMuYyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2Rz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzZjQ1 YQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24vcHktZGVidWdtZXRo b2RzLmMKQEAgLTAsMCArMSw1ODMgQEAKKy8qIFN1cHBvcnQgZm9yIGRlYnVn IG1ldGhvZHMgaW4gUHl0aG9uLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxz LmgiCisjaW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCisjaW5jbHVkZSAib2Jq ZmlsZXMuaCIKKyNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImxhbmd1 YWdlLmgiCisKKyNpbmNsdWRlICJweXRob24uaCIKKworI2lmZGVmIEhBVkVf UFlUSE9OCisjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisKK3N0cnVj dCBweV9leHRfb2JqZWN0Cit7CisgIC8qIEhvbGRzIGFuIGluc3RhbmNlIG9m IHRoZSBEZWJ1Z01ldGhvZCBjbGFzcy4gICovCisgIFB5T2JqZWN0ICpvYmpl Y3Q7CisKKyAgLyogSG9sZHMgdGhlIHR5cGUgb2YgdGhlICd0aGlzJyBvYmpl Y3QuICAqLworICBQeU9iamVjdCAqbWF0Y2hfcHlfb2JqX3R5cGU7CisKKyAg LyogSG9sZHMgdGhlIG1hdGNoaW5nIG1ldGhvZCBuYW1lLiAgKi8KKyAgY29u c3QgY2hhciAqbWF0Y2hfbWV0aG9kOworfTsKKworc3RhdGljIGNvbnN0IGNo YXIgKmVuYWJsZWRfZmllbGRfbmFtZSA9ICJlbmFibGVkIjsKK3N0YXRpYyBj b25zdCBjaGFyICptYXRjaF9tZXRob2RfbmFtZSA9ICJtYXRjaCI7CitzdGF0 aWMgY29uc3QgY2hhciAqZ2V0X2FyZ3R5cGVzX21ldGhvZF9uYW1lID0gImdl dF9hcmd0eXBlcyI7CitzdGF0aWMgY29uc3QgY2hhciAqaW52b2tlX21ldGhv ZF9uYW1lID0gImludm9rZSI7CisKK3N0YXRpYyBQeU9iamVjdCAqbWF0Y2hf bWV0aG9kX3B5c3RyaW5nID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqZ2V0 X2FyZ3R5cGVzX21ldGhvZF9weXN0cmluZyA9IE5VTEw7CitzdGF0aWMgUHlP YmplY3QgKmludm9rZV9tZXRob2RfcHlzdHJpbmcgPSBOVUxMOworCitzdGF0 aWMgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpuZXdfcHl0aG9uX2V4dF9t ZXRob2QgKFB5T2JqZWN0ICppdGVtLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAq cHlfb2JqX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCk7 CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGZyZWVfZXh0X29ial9mdHlwZS4g ICovCisKK3N0YXRpYyB2b2lkCitweV9mcmVlX2V4dF9vYmplY3QgKHZvaWQg KmV4dF9vYmplY3QpCit7CisgIHN0cnVjdCBweV9leHRfb2JqZWN0ICpvID0g ZXh0X29iamVjdDsKKworICBQeV9YREVDUkVGIChvLT5vYmplY3QpOworICBQ eV9YREVDUkVGIChvLT5tYXRjaF9weV9vYmpfdHlwZSk7CisgIHhmcmVlIChv KTsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgY2xvbmVfZXh0X29ial9m dHlwZS4gICovCisKK3N0YXRpYyB2b2lkICoKK3B5X2Nsb25lX2V4dF9vYmpl Y3QgKHZvaWQgKm9iaikKK3sKKyAgc3RydWN0IHB5X2V4dF9vYmplY3QgKm5l d19vYmosICpvbGRfb2JqOworCisgIG9sZF9vYmogPSAoc3RydWN0IHB5X2V4 dF9vYmplY3QgKikgb2JqOworCisgIG5ld19vYmogPSBYQ05FVyAoc3RydWN0 IHB5X2V4dF9vYmplY3QpOworICBuZXdfb2JqLT5vYmplY3QgPSBvbGRfb2Jq LT5vYmplY3Q7CisgIG5ld19vYmotPm1hdGNoX3B5X29ial90eXBlID0gb2xk X29iai0+bWF0Y2hfcHlfb2JqX3R5cGU7CisgIG5ld19vYmotPm1hdGNoX21l dGhvZCA9IG9sZF9vYmotPm1hdGNoX21ldGhvZDsKKworICBQeV9YSU5DUkVG IChuZXdfb2JqLT5vYmplY3QpOworICBQeV9YSU5DUkVGIChuZXdfb2JqLT5t YXRjaF9weV9vYmpfdHlwZSk7CisKKyAgcmV0dXJuICh2b2lkICopIG5ld19v Ymo7Cit9CisKKy8qIFJldHVybnMgdHJ1ZSBpZiBnZGIuVHlwZSBvYmplY3Qg UFlfT0JKX1RZUEUgaGFzIGEgbWV0aG9kIGRlZmluZWQgaW4gUHl0aG9uCisg ICB3aXRoIG5hbWUgTUVUSE9EX05BTUUuICAqLworCitzdGF0aWMgaW50Citp c19tYXRjaGluZ19kZWJ1Z19tZXRob2QgKFB5T2JqZWN0ICpkbV9vYmosIFB5 T2JqZWN0ICpweV9vYmpfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbWV0aG9kX25hbWUpCit7CisgIFB5T2JqZWN0ICpt ZXRob2RfbmFtZV9weXN0cmluZzsKKyAgUHlPYmplY3QgKm1hdGNoX21ldGhv ZCwgKmVuYWJsZWRfZmllbGQsICptYXRjaF9yZXN1bHQ7CisgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwczsKKyAgaW50IGVuYWJsZWQsIG1hdGNoOworCisg IGlmIChtZXRob2RfbmFtZSA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisg IGNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwp OworCisgIGVuYWJsZWRfZmllbGQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5n IChkbV9vYmosIGVuYWJsZWRfZmllbGRfbmFtZSk7CisgIGlmIChlbmFibGVk X2ZpZWxkID09IE5VTEwpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRfc3Rh Y2sgKCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAg ICByZXR1cm4gMDsKKyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYg KGVuYWJsZWRfZmllbGQpOworCisgIGVuYWJsZWQgPSBQeU9iamVjdF9Jc1Ry dWUgKGVuYWJsZWRfZmllbGQpOworICBpZiAoZW5hYmxlZCA9PSAtMSkKKyAg ICB7CisgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRvX2Ns ZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAgIHJldHVybiAwOworICAgIH0K KyAgaWYgKGVuYWJsZWQgPT0gMCkKKyAgICB7CisgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIG1h dGNoX21ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGRtX29iaiwg bWF0Y2hfbWV0aG9kX25hbWUpOworICBpZiAobWF0Y2hfbWV0aG9kID09IE5V TEwpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAg ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gMDsK KyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKG1hdGNoX21ldGhv ZCk7CisgIGlmICghUHlDYWxsYWJsZV9DaGVjayAobWF0Y2hfbWV0aG9kKSkK KyAgICB7CisgICAgICB3YXJuaW5nIChfKCJBdHRyaWJ1dGUgJyVzJyBvZiBh IHJlZ2lzdGVyZWQgUHl0aG9uIGRlYnVnIG1ldGhvZCBpcyBub3QgIgorICAg ICAgICAgICAgICAgICAiY2FsbGFibGUuICBJZ25vcmVkISIpLCBtYXRjaF9t ZXRob2RfbmFtZSk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwor CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgbWV0aG9kX25hbWVfcHlz dHJpbmcgPSBQeVN0cmluZ19Gcm9tU3RyaW5nIChtZXRob2RfbmFtZSk7Cisg IGlmIChtZXRob2RfbmFtZV9weXN0cmluZyA9PSBOVUxMKQorICAgIHsKKyAg ICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAgICAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBtYWtl X2NsZWFudXBfcHlfZGVjcmVmIChtZXRob2RfbmFtZV9weXN0cmluZyk7CisK KyAgbWF0Y2hfcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Mg KGRtX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1hdGNoX21ldGhvZF9weXN0cmluZywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X29ial90eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWV0aG9kX25hbWVfcHlzdHJpbmcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgaWYgKG1hdGNo X3Jlc3VsdCA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0 YWNrICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAg ICAgcmV0dXJuIDA7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVm IChtYXRjaF9yZXN1bHQpOworCisgIG1hdGNoID0gUHlPYmplY3RfSXNUcnVl IChtYXRjaF9yZXN1bHQpOworICBpZiAobWF0Y2ggPT0gLTEpCisgICAgewor ICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICByZXR1cm4gbWF0Y2g7Cit9 CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGdldF9tYXRjaGluZ19leHRfbWV0 aG9kc19mdHlwZS4KKyAgIFJldHVybiBhIG9mIHZlY3RvciBtZXRob2RzIHdp dGggbmFtZSBNRVRIT0RfTkFNRSBkZWZpbmVkIGluIFB5dGhvbiBmb3IKKyAg IG9iamVjdHMgb2YgdHlwZSBPQkpfVFlQRS4gIFJldHVybnMgTlVMTCBpZiBu byBtYXRjaGVzIGFyZSBmb3VuZC4gICovCisKK3N0YXRpYyBWRUMgKGV4dF9m bl9kZXNjcmlwdG9yX3ApICoKK3B5X2RlYnVnbWV0aG9kX25hbWVfbWF0Y2gg KHN0cnVjdCB0eXBlICpvYmpfdHlwZSwgY29uc3QgY2hhciAqbWV0aG9kX25h bWUpCit7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGU7CisgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3Jf cCkgKm1ldGhvZF92ZWMgPSBOVUxMOworICBQeU9iamVjdCAqcHlfdHlwZSwg KnB5X3Byb2dzcGFjZTsKKyAgUHlPYmplY3QgKnB5X2RlYnVnbWV0aG9kX2xp c3QgPSBOVUxMLCAqbGlzdF9pdGVyLCAqaXRlbTsKKworICBpZiAob2JqX3R5 cGUgPT0gTlVMTCB8fCBtZXRob2RfbmFtZSA9PSBOVUxMKQorICAgIHJldHVy biBtZXRob2RfdmVjOworCisgIHB5X3R5cGUgPSB0eXBlX3RvX3R5cGVfb2Jq ZWN0IChvYmpfdHlwZSk7CisgIGlmIChweV90eXBlID09IE5VTEwpCisgICAg cmV0dXJuIG1ldGhvZF92ZWM7CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYg KHB5X3R5cGUpOworCisgIC8qIENyZWF0ZSBhbiBlbXB5dCBsaXN0IG9mIGRl YnVnIG1ldGhvZHMuICAqLworICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gUHlM aXN0X05ldyAoMCk7CisgIGlmIChweV9kZWJ1Z21ldGhvZF9saXN0ID09IE5V TEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVf cHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5n dWFnZSk7CisKKyAgLyogR2F0aGVyIGRlYnVnIG1ldGhvZHMgcmVnaXN0ZXJl ZCB3aXRoIHRoZSBvYmplY3QgZmlsZXMuICAqLworICBBTExfT0JKRklMRVMg KG9iamZpbGUpCisgICAgeworICAgICAgUHlPYmplY3QgKnB5X29iamZpbGUg PSBvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0IChvYmpmaWxlKTsKKyAgICAg IFB5T2JqZWN0ICpvYmpmaWxlX2RtbGlzdCwgKnRlbXA7CisKKyAgICAgIGlm IChweV9vYmpmaWxlID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBn ZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorCisgICAgICBvYmpmaWxlX2RtbGlzdCA9IG9iamZweV9nZXRf ZGVidWdfbWV0aG9kcyAocHlfb2JqZmlsZSwgTlVMTCk7CisgICAgICB0ZW1w ID0gcHlfZGVidWdtZXRob2RfbGlzdDsKKyAgICAgIHB5X2RlYnVnbWV0aG9k X2xpc3QgPSBQeVNlcXVlbmNlX0NvbmNhdCAodGVtcCwgb2JqZmlsZV9kbWxp c3QpOworICAgICAgaWYgKHB5X2RlYnVnbWV0aG9kX2xpc3QgPT0gTlVMTCkK KyAgICAgICAgcHlfZGVidWdtZXRob2RfbGlzdCA9IHRlbXA7CisgICAgICBl bHNlCisgICAgICAgIFB5X0RFQ1JFRiAodGVtcCk7CisgICAgICBQeV9YREVD UkVGIChvYmpmaWxlX2RtbGlzdCk7CisgICAgfQorCisgIC8qIEdhdGhlciBk ZWJ1ZyBtZXRob2RzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgY3VycmVudCBwcm9n cmFtIHNwYWNlLiAgKi8KKyAgcHlfcHJvZ3NwYWNlID0gcHNwYWNlX3RvX3Bz cGFjZV9vYmplY3QgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisgIGlmIChw eV9wcm9nc3BhY2UgIT0gTlVMTCkKKyAgICB7CisgICAgICBQeU9iamVjdCAq dGVtcCA9IHB5X2RlYnVnbWV0aG9kX2xpc3Q7CisgICAgICBQeU9iamVjdCAq cHNwYWNlX2RtbGlzdCA9IHBzcHlfZ2V0X2RlYnVnX21ldGhvZHMgKHB5X3By b2dzcGFjZSwgTlVMTCk7CisKKyAgICAgIHB5X2RlYnVnbWV0aG9kX2xpc3Qg PSBQeVNlcXVlbmNlX0NvbmNhdCAodGVtcCwgcHNwYWNlX2RtbGlzdCk7Cisg ICAgICBpZiAocHlfZGVidWdtZXRob2RfbGlzdCA9PSBOVUxMKQorICAgICAg ICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gdGVtcDsKKyAgICAgIGVsc2UKKyAg ICAgICAgUHlfREVDUkVGICh0ZW1wKTsKKyAgICAgIFB5X1hERUNSRUYgKHBz cGFjZV9kbWxpc3QpOworICAgIH0KKworICAvKiBHYXRoZXIgZGVidWcgbWV0 aG9kcyByZWdpc3RlcmVkIGdsb2JhbGx5LiAgKi8KKyAgaWYgKGdkYl9weXRo b25fbW9kdWxlICE9IE5VTEwKKyAgICAgICYmIFB5T2JqZWN0X0hhc0F0dHJT dHJpbmcgKGdkYl9weXRob25fbW9kdWxlLCAiZGVidWdfbWV0aG9kcyIpKQor ICAgIHsKKyAgICAgIFB5T2JqZWN0ICpnZGJfZG1saXN0OworICAgICAgUHlP YmplY3QgKnRlbXAgPSBweV9kZWJ1Z21ldGhvZF9saXN0OworCisgICAgICBn ZGJfZG1saXN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyAoZ2RiX3B5dGhv bl9tb2R1bGUsICJkZWJ1Z19tZXRob2RzIik7CisgICAgICBpZiAoZ2RiX2Rt bGlzdCAhPSBOVUxMICYmIFB5TGlzdF9DaGVjayAoZ2RiX2RtbGlzdCkpCisg ICAgICAgIHsKKyAgICAgICAgICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gUHlT ZXF1ZW5jZV9Db25jYXQgKHRlbXAsIGdkYl9kbWxpc3QpOworICAgICAgICAg IGlmIChweV9kZWJ1Z21ldGhvZF9saXN0ID09IE5VTEwpCisgICAgICAgICAg ICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gdGVtcDsKKyAgICAgICAgICBlbHNl CisgICAgICAgICAgICBQeV9ERUNSRUYgKHRlbXApOworICAgICAgICAgIFB5 X1hERUNSRUYgKGdkYl9kbWxpc3QpOworICAgICAgICB9CisgICAgfQorCisg IGxpc3RfaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIgKHB5X2RlYnVnbWV0aG9k X2xpc3QpOworICBpZiAobGlzdF9pdGVyID09IE5VTEwpCisgICAgeworICAg ICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBQeV9ERUNSRUYgKHB5 X2RlYnVnbWV0aG9kX2xpc3QpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFu dXBzKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICB3aGlsZSAo KGl0ZW0gPSBQeUl0ZXJfTmV4dCAobGlzdF9pdGVyKSkpCisgICAgeworICAg ICAgaWYgKGlzX21hdGNoaW5nX2RlYnVnX21ldGhvZCAoaXRlbSwgcHlfdHlw ZSwgbWV0aG9kX25hbWUpKQorICAgICAgICB7CisgICAgICAgICAgc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm47CisKKyAgICAgICAgICBleHRf Zm4gPSBuZXdfcHl0aG9uX2V4dF9tZXRob2QgKGl0ZW0sIHB5X3R5cGUsIG1l dGhvZF9uYW1lKTsKKyAgICAgICAgICBWRUNfc2FmZV9wdXNoIChleHRfZm5f ZGVzY3JpcHRvcl9wLCBtZXRob2RfdmVjLCBleHRfZm4pOworICAgICAgICB9 CisgICAgICBQeV9ERUNSRUYgKGl0ZW0pOworICAgIH0KKyAgUHlfREVDUkVG IChsaXN0X2l0ZXIpOworICAvKiBSZXBvcnQgYW55IGVycm9yIHRoYXQgY291 bGQgaGF2ZSBvY2N1cnJlZCB3aGlsZSBpdGVyYXRpbmcuICAqLworICBpZiAo UHlFcnJfT2NjdXJyZWQgKCkpCisgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7 CisKKyAgUHlfREVDUkVGIChweV9kZWJ1Z21ldGhvZF9saXN0KTsKKyAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKKworICByZXR1cm4gbWV0aG9kX3ZlYzsK K30KKworLyogSW1wbGVtZW50YXRpb24gb2YgZ2V0X2V4dF9mbl9hcmd0eXBl c19mdHlwZS4KKyAgIFJldHVybiBhbiBhcnJ5IG9mIGFyZ3VtZW50IHR5cGVz IGZvciBleHRlbnNpb24gZW5jYXBzdWxhdGVkIGluIEVYVF9PQkouCisgICBO QVJHUyBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheS4gICovCisK K3N0YXRpYyBzdHJ1Y3QgdHlwZSAqKgorcHlfZXh0X2ZuX2dldF9hcmd0eXBl cyAodm9pZCAqZXh0X29iaiwgaW50ICpuYXJncykKK3sKKyAgc3RydWN0IHB5 X2V4dF9vYmplY3QgKmV4dF9vYmplY3QgPSAoc3RydWN0IHB5X2V4dF9vYmpl Y3QgKikgZXh0X29iajsKKyAgUHlPYmplY3QgKmRlYnVnX21ldGhvZF9vYmog PSBleHRfb2JqZWN0LT5vYmplY3Q7CisgIFB5T2JqZWN0ICpnZXRfYXJndHlw ZXNfbWV0aG9kOworICBQeU9iamVjdCAqcHlfYXJndHlwZV9saXN0LCAqbGlz dF9pdGVyLCAqaXRlbSwgKm1ldGhvZF9uYW1lX3B5c3RyaW5nOworICBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cHM7CisgIHN0cnVjdCB0eXBlICoqdHlwZV9h cnJheSwgKm9ial90eXBlOworICBpbnQgaSA9IDE7CisKKyAgLyogU2V0IG5h cmdzIHRvIDAgc28gdGhhdCBhbnkgcHJlbWF0dXJlIHJldHVybiBmcm9tIHRo aXMgZnVuY3Rpb24gcmV0dXJucworICAgICAwIGFyZyB0eXBlcy4gICovCisg ICpuYXJncyA9IDA7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2Vu diAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisK KyAgZ2V0X2FyZ3R5cGVzX21ldGhvZCA9ICBQeU9iamVjdF9HZXRBdHRyU3Ry aW5nIChkZWJ1Z19tZXRob2Rfb2JqLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9hcmd0eXBlc19tZXRo b2RfbmFtZSk7CisgIGlmIChnZXRfYXJndHlwZXNfbWV0aG9kID09IE5VTEwp CisgICAgeworICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBk b19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gTlVMTDsK KyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGdldF9hcmd0eXBl c19tZXRob2QpOworCisgIG1ldGhvZF9uYW1lX3B5c3RyaW5nID0gUHlTdHJp bmdfRnJvbVN0cmluZyAoZXh0X29iamVjdC0+bWF0Y2hfbWV0aG9kKTsKKyAg aWYgKG1ldGhvZF9uYW1lX3B5c3RyaW5nID09IE5VTEwpCisgICAgeworICAg ICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBkb19jbGVhbnVwcyAo Y2xlYW51cHMpOworCisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIG1ha2Vf Y2xlYW51cF9weV9kZWNyZWYgKG1ldGhvZF9uYW1lX3B5c3RyaW5nKTsKKwor ICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sgKGdldF9hcmd0eXBlc19tZXRob2Qp KQorICAgIHsKKyAgICAgIHdhcm5pbmcgKF8oIkF0dHJpYnV0ZSAnJXMnIG9m IGEgcmVnaXN0ZXJlZCBQeXRob24gZGVidWcgbWV0aG9kIGlzIG5vdCAiCisg ICAgICAgICAgICAgICAgICJjYWxsYWJsZS4gIElnbm9yZWQhIiksIGdldF9h cmd0eXBlc19tZXRob2RfbmFtZSk7CisgICAgICBkb19jbGVhbnVwcyAoY2xl YW51cHMpOworCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgcHlf YXJndHlwZV9saXN0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MgKGRl YnVnX21ldGhvZF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZXRfYXJndHlwZXNfbWV0aG9kX3B5c3Ry aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXh0X29iamVjdC0+bWF0Y2hfcHlfb2JqX3R5cGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt ZXRob2RfbmFtZV9weXN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICBpZiAocHlfYXJn dHlwZV9saXN0ID09IE5VTEwpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRf c3RhY2sgKCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisg ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9k ZWNyZWYgKHB5X2FyZ3R5cGVfbGlzdCk7CisKKyAgbGlzdF9pdGVyID0gUHlP YmplY3RfR2V0SXRlciAocHlfYXJndHlwZV9saXN0KTsKKyAgaWYgKGxpc3Rf aXRlciA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNr ICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAg cmV0dXJuIE5VTEw7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVm IChsaXN0X2l0ZXIpOworCisgIC8qIEluY2x1ZGUgdGhlICd0aGlzJyBhcmd1 bWVudCBpbiB0aGUgc2l6ZS4gICovCisgIHR5cGVfYXJyYXkgPSBYQ05FV1ZF QyAoc3RydWN0IHR5cGUgKiwgUHlMaXN0X0dFVF9TSVpFIChweV9hcmd0eXBl X2xpc3QpICsgMSk7CisgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0IChs aXN0X2l0ZXIpKSkKKyAgICB7CisgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5 cGUgPSB0eXBlX29iamVjdF90b190eXBlIChpdGVtKTsKKworICAgICAgUHlf REVDUkVGIChpdGVtKTsKKworICAgICAgaWYgKGFyZ190eXBlID09IE5VTEwp CisgICAgICAgIHsKKyAgICAgICAgICBpID0gLTE7CisgICAgICAgICAgYnJl YWs7CisgICAgICAgIH0KKworICAgICAgdHlwZV9hcnJheVtpXSA9IGFyZ190 eXBlOworICAgICAgaSsrOworICAgIH0KKyAgaWYgKFB5RXJyX09jY3VycmVk ICgpIHx8IGkgPT0gLTEpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRfc3Rh Y2sgKCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworICAgICAg eGZyZWUgKHR5cGVfYXJyYXkpOworCisgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisKKyAgLyogQWRkIHRoZSB0eXBlIG9mICd0aGlzJyBhcyB0aGUgZmly c3QgYXJndW1lbnQuICAqLworICBvYmpfdHlwZSA9IHR5cGVfb2JqZWN0X3Rv X3R5cGUgKGV4dF9vYmplY3QtPm1hdGNoX3B5X29ial90eXBlKTsKKyAgdHlw ZV9hcnJheVswXSA9IG1ha2VfY3ZfdHlwZSAoMSwgMCwgbG9va3VwX3BvaW50 ZXJfdHlwZSAob2JqX3R5cGUpLCBOVUxMKTsKKyAgKm5hcmdzID0gaTsKKwor ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgIHJldHVybiB0eXBlX2Fy cmF5OworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBpbnZva2VfbWV0aG9k X2Z0eXBlLgorICAgSW52b2tlcyBhIG1ldGhvZCBkZWZpbmVkIGluIFB5dGhv bi4gIFRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbWV0aG9kIGlzCisgICBy ZXR1cm5lZC4gIE5VTEwgaXMgcmV0dXJuZWQgaW4gY2FzZSBvZiBlcnJvcnMu ICAqLworCitzdGF0aWMgc3RydWN0IHZhbHVlICoKK3B5X2V4dF9mbl9pbnZv a2VfbWV0aG9kICh2b2lkICpleHRfb2JqLCBzdHJ1Y3QgdmFsdWUgKm9iaiwg c3RydWN0IHZhbHVlICoqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbmFyZ3MpCit7CisgIGludCBpOworICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cHM7CisgIFB5T2JqZWN0ICpweV92YWx1ZV9vYmosICpweV9hcmdf dHVwbGUsICpweV9yZXN1bHQsICpkZWJ1Z19tZXRob2Rfb2JqOworICBQeU9i amVjdCAqaW52b2tlX21ldGhvZCwgKm1ldGhvZF9uYW1lX3B5c3RyaW5nOwor ICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdCA9IE5VTEw7CisgIHN0cnVjdCBweV9l eHRfb2JqZWN0ICpweV9leHRfb2JqID0gZXh0X29iajsKKworICBjbGVhbnVw cyA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBj dXJyZW50X2xhbmd1YWdlKTsKKworICBkZWJ1Z19tZXRob2Rfb2JqID0gcHlf ZXh0X29iai0+b2JqZWN0OworCisgIGludm9rZV9tZXRob2QgPSAgUHlPYmpl Y3RfR2V0QXR0clN0cmluZyAoZGVidWdfbWV0aG9kX29iaiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfbWV0 aG9kX25hbWUpOworICBpZiAoaW52b2tlX21ldGhvZCA9PSBOVUxMKQorICAg IHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAgICAgZG9fY2xl YW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIE5VTEw7CisgICAg fQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChpbnZva2VfbWV0aG9kKTsK KworICBtZXRob2RfbmFtZV9weXN0cmluZyA9IFB5U3RyaW5nX0Zyb21TdHJp bmcgKHB5X2V4dF9vYmotPm1hdGNoX21ldGhvZCk7CisgIGlmIChtZXRob2Rf bmFtZV9weXN0cmluZyA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3By aW50X3N0YWNrICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsK KworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlf ZGVjcmVmIChtZXRob2RfbmFtZV9weXN0cmluZyk7CisKKyAgaWYgKCFQeUNh bGxhYmxlX0NoZWNrIChpbnZva2VfbWV0aG9kKSkKKyAgICB7CisgICAgICB3 YXJuaW5nIChfKCJBdHRyaWJ1dGUgJyVzJyBvZiBhIHJlZ2lzdGVyZWQgUHl0 aG9uIGRlYnVnIG1ldGhvZCBpcyBub3QgIgorICAgICAgICAgICAgICAgICAi Y2FsbGFibGUuICBJZ25vcmVkISIpLCBpbnZva2VfbWV0aG9kX25hbWUpOwor ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJu IE5VTEw7CisgICAgfQorCisgIHB5X3ZhbHVlX29iaiA9IHZhbHVlX3RvX3Zh bHVlX29iamVjdCAob2JqKTsKKyAgaWYgKHB5X3ZhbHVlX29iaiA9PSBOVUxM KQorICAgIHsKKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgICAg ICByZXR1cm4gTlVMTDsKKyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNy ZWYgKHB5X3ZhbHVlX29iaik7CisKKyAgcHlfYXJnX3R1cGxlID0gUHlUdXBs ZV9OZXcgKG5hcmdzKTsKKyAgaWYgKHB5X2FyZ190dXBsZSA9PSBOVUxMKQor ICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAgICAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIE5VTEw7Cisg ICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChweV9hcmdfdHVwbGUp OworCisgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorICAgIHsKKyAg ICAgIFB5T2JqZWN0ICpweV92YWx1ZV9hcmcgPSB2YWx1ZV90b192YWx1ZV9v YmplY3QgKGFyZ3NbaV0pOworCisgICAgICBpZiAocHlfdmFsdWVfYXJnID09 IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBnZGJweV9wcmludF9zdGFj ayAoKTsKKyAgICAgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworICAg ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgIGlmIChQ eVR1cGxlX1NldEl0ZW0gKHB5X2FyZ190dXBsZSwgaSwgcHlfdmFsdWVfYXJn KSkKKyAgICAgICAgeworICAgICAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgp OworICAgICAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAg ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICBweV9y ZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyAoZGVidWdfbWV0 aG9kX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludm9rZV9tZXRob2RfcHlzdHJpbmcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV92YWx1ZV9vYmosIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0 aG9kX25hbWVfcHlzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBweV9hcmdfdHVwbGUsIE5VTEwpOworICBpZiAo cHlfcmVzdWx0ID09IE5VTEwpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRf c3RhY2sgKCk7IAorICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKwor ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlf ZGVjcmVmIChweV9yZXN1bHQpOworCisgIC8qIENoZWNrIHRoYXQgYSBkZWJ1 ZyBtZXRob2QgZGlkIG5vdCByZXR1cm4gTm9uZS4gICovCisgIGlmIChweV9y ZXN1bHQgIT0gUHlfTm9uZSkKKyAgICB7CisgICAgICByZXN1bHQgPSBjb252 ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9uIChweV9yZXN1bHQpOworICAgICAgaWYg KHJlc3VsdCA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgZ2RicHlf cHJpbnRfc3RhY2sgKCk7CisgICAgICAgIH0KKyAgICB9CisgIGVsc2UKKyAg ICByZXN1bHQgPSBhbGxvY2F0ZV92YWx1ZSAobG9va3VwX3R5cGVuYW1lIChw eXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIiwgTlVM TCwgMCkpOworCisgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgcmV0 dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHN0cnVjdCBleHRfZnVuY19vcHMg cHl0aG9uX2V4dF9sYW5nID0geworICBweV9jbG9uZV9leHRfb2JqZWN0LAor ICBweV9mcmVlX2V4dF9vYmplY3QsCisgIHB5X2RlYnVnbWV0aG9kX25hbWVf bWF0Y2gsCisgIHB5X2V4dF9mbl9nZXRfYXJndHlwZXMsCisgIHB5X2V4dF9m bl9pbnZva2VfbWV0aG9kCit9OworCisvKiBDcmVhdGVzIGEgbmV3IHB5dGhv biBleHRfZnVuY3Rpb25fZGVzY3JpcHRvci4gIERFQlVHX01FVEhPRCBpcyB0 aGUKKyAgIGRlYnVnIG1ldGhvZCBvYmplY3QuICBQWV9PQkpfVFlQRSBpcyBh IGdkYi5UeXBlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICB0eXBl IG9mIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIGRlYnVnIG1ldGhvZCB3aXRo IG5hbWUgTUVUSE9EIHdpbGwgYmUKKyAgIGludm9rZWQuICAqLworCitzdGF0 aWMgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoKK25ld19weXRob25fZXh0 X21ldGhvZCAoUHlPYmplY3QgKmRlYnVnX21ldGhvZCwgUHlPYmplY3QgKnB5 X29ial90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICptZXRob2QpCit7CisgIHN0cnVjdCBweV9leHRfb2JqZWN0ICpleHRfb2Jq ZWN0OworCisgIGV4dF9vYmplY3QgPSBYQ05FVyAoc3RydWN0IHB5X2V4dF9v YmplY3QpOworICBleHRfb2JqZWN0LT5vYmplY3QgPSBkZWJ1Z19tZXRob2Q7 CisgIGV4dF9vYmplY3QtPm1hdGNoX3B5X29ial90eXBlID0gcHlfb2JqX3R5 cGU7CisgIGV4dF9vYmplY3QtPm1hdGNoX21ldGhvZCA9IG1ldGhvZDsKKwor ICBQeV9YSU5DUkVGIChleHRfb2JqZWN0LT5vYmplY3QpOworICBQeV9YSU5D UkVGIChleHRfb2JqZWN0LT5tYXRjaF9weV9vYmpfdHlwZSk7CisKKyAgcmV0 dXJuIG5ld19leHRfZnVuY3Rpb24gKCZweXRob25fZXh0X2xhbmcsIDEsIGV4 dF9vYmplY3QpOworfQorCisvKiBJbml0aWFsaXplcyB0aGUgUHl0aG9uIGRl YnVnIG1ldGhvZCBzdXBwb3J0LiAgKi8KKworaW50CitnZGJweV9pbml0aWFs aXplX2RlYnVnbWV0aG9kcyAodm9pZCkKK3sKKyAgcmVnaXN0ZXJfZXh0X2xh bmcgKCZweXRob25fZXh0X2xhbmcpOworCisgIG1hdGNoX21ldGhvZF9weXN0 cmluZyA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKG1hdGNoX21ldGhvZF9uYW1l KTsKKyAgaWYgKG1hdGNoX21ldGhvZF9weXN0cmluZyA9PSBOVUxMKQorICAg IHJldHVybiAtMTsKKworICBpbnZva2VfbWV0aG9kX3B5c3RyaW5nID0gUHlT dHJpbmdfRnJvbVN0cmluZyAoaW52b2tlX21ldGhvZF9uYW1lKTsKKyAgaWYg KGludm9rZV9tZXRob2RfcHlzdHJpbmcgPT0gTlVMTCkKKyAgICByZXR1cm4g LTE7CisKKyAgZ2V0X2FyZ3R5cGVzX21ldGhvZF9weXN0cmluZyA9IFB5U3Ry aW5nX0Zyb21TdHJpbmcgKGdldF9hcmd0eXBlc19tZXRob2RfbmFtZSk7Cisg IGlmIChnZXRfYXJndHlwZXNfbWV0aG9kX3B5c3RyaW5nID09IE5VTEwpCisg ICAgcmV0dXJuIC0xOworCisgIHJldHVybiAxOworfQorCisjZW5kaWYgLyog SEFWRV9QWVRIT04gKi8KZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktb2Jq ZmlsZS5jIGIvZ2RiL3B5dGhvbi9weS1vYmpmaWxlLmMKaW5kZXggOWJiZDRj Mi4uNGFhMGExYSAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1vYmpmaWxl LmMKKysrIGIvZ2RiL3B5dGhvbi9weS1vYmpmaWxlLmMKQEAgLTM3LDYgKzM3 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgUHlPYmplY3QgKmZyYW1lX2ZpbHRl cnM7CiAgIC8qIFRoZSB0eXBlLXByaW50ZXIgbGlzdC4gICovCiAgIFB5T2Jq ZWN0ICp0eXBlX3ByaW50ZXJzOworCisgIC8qIFRoZSBkZWJ1ZyBtZXRob2Qg bGlzdC4gICovCisgIFB5T2JqZWN0ICpkZWJ1Z19tZXRob2RzOwogfSBvYmpm aWxlX29iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBvYmpmaWxlX29i amVjdF90eXBlCkBAIC02Nyw2ICs3MCw3IEBAIG9iamZweV9kZWFsbG9jIChQ eU9iamVjdCAqbykKICAgUHlfWERFQ1JFRiAoc2VsZi0+cHJpbnRlcnMpOwog ICBQeV9YREVDUkVGIChzZWxmLT5mcmFtZV9maWx0ZXJzKTsKICAgUHlfWERF Q1JFRiAoc2VsZi0+dHlwZV9wcmludGVycyk7CisgIFB5X1hERUNSRUYgKHNl bGYtPmRlYnVnX21ldGhvZHMpOwogICBQeV9UWVBFIChzZWxmKS0+dHBfZnJl ZSAoc2VsZik7CiB9CiAKQEAgLTk5LDYgKzEwMywxMyBAQCBvYmpmcHlfbmV3 IChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVj dCAqa2V5d29yZHMpCiAJICBQeV9ERUNSRUYgKHNlbGYpOwogCSAgcmV0dXJu IE5VTEw7CiAJfQorCisgICAgICBzZWxmLT5kZWJ1Z19tZXRob2RzID0gUHlM aXN0X05ldyAoMCk7CisgICAgICBpZiAoc2VsZi0+ZGVidWdfbWV0aG9kcyA9 PSBOVUxMKQorCXsKKwkgIFB5X0RFQ1JFRiAoc2VsZik7CisJICByZXR1cm4g TlVMTDsKKwl9CiAgICAgfQogICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7 CiB9CkBAIC0xOTMsNiArMjA0LDE3IEBAIG9iamZweV9nZXRfdHlwZV9wcmlu dGVycyAoUHlPYmplY3QgKm8sIHZvaWQgKmlnbm9yZSkKICAgcmV0dXJuIHNl bGYtPnR5cGVfcHJpbnRlcnM7CiB9CiAKKy8qIEdldCB0aGUgJ2RlYnVnX21l dGhvZHMnIGF0dHJpYnV0ZS4gICovCisKK1B5T2JqZWN0ICoKK29iamZweV9n ZXRfZGVidWdfbWV0aG9kcyAoUHlPYmplY3QgKm8sIHZvaWQgKmlnbm9yZSkK K3sKKyAgb2JqZmlsZV9vYmplY3QgKnNlbGYgPSAob2JqZmlsZV9vYmplY3Qg KikgbzsKKworICBQeV9JTkNSRUYgKHNlbGYtPmRlYnVnX21ldGhvZHMpOwor ICByZXR1cm4gc2VsZi0+ZGVidWdfbWV0aG9kczsKK30KKwogLyogU2V0IHRo ZSAndHlwZV9wcmludGVycycgYXR0cmlidXRlLiAgKi8KIAogc3RhdGljIGlu dApAQCAtMjkyLDYgKzMxNCwxMyBAQCBvYmpmaWxlX3RvX29iamZpbGVfb2Jq ZWN0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKIAkgICAgICByZXR1cm4g TlVMTDsKIAkgICAgfQogCisJICBvYmplY3QtPmRlYnVnX21ldGhvZHMgPSBQ eUxpc3RfTmV3ICgwKTsKKwkgIGlmIChvYmplY3QtPmRlYnVnX21ldGhvZHMg PT0gTlVMTCkKKwkgICAgeworCSAgICAgIFB5X0RFQ1JFRiAob2JqZWN0KTsK KwkgICAgICByZXR1cm4gTlVMTDsKKwkgICAgfQorCiAJICBzZXRfb2JqZmls ZV9kYXRhIChvYmpmaWxlLCBvYmpmcHlfb2JqZmlsZV9kYXRhX2tleSwgb2Jq ZWN0KTsKIAl9CiAgICAgfQpAQCAtMzMzLDYgKzM2Miw4IEBAIHN0YXRpYyBQ eUdldFNldERlZiBvYmpmaWxlX2dldHNldFtdID0KICAgICBvYmpmcHlfc2V0 X2ZyYW1lX2ZpbHRlcnMsICJGcmFtZSBGaWx0ZXJzLiIsIE5VTEwgfSwKICAg eyAidHlwZV9wcmludGVycyIsIG9iamZweV9nZXRfdHlwZV9wcmludGVycywg b2JqZnB5X3NldF90eXBlX3ByaW50ZXJzLAogICAgICJUeXBlIHByaW50ZXJz LiIsIE5VTEwgfSwKKyAgeyAiZGVidWdfbWV0aG9kcyIsIG9iamZweV9nZXRf ZGVidWdfbWV0aG9kcywgTlVMTCwKKyAgICAiRGVidWcgbWV0aG9kcy4iLCBO VUxMIH0sCiAgIHsgTlVMTCB9CiB9OwogCmRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5LXByb2dzcGFjZS5jIGIvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2Uu YwppbmRleCA5MTBjNmEzLi5kNDI1MTU5IDEwMDY0NAotLS0gYS9nZGIvcHl0 aG9uL3B5LXByb2dzcGFjZS5jCisrKyBiL2dkYi9weXRob24vcHktcHJvZ3Nw YWNlLmMKQEAgLTM5LDYgKzM5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgUHlP YmplY3QgKmZyYW1lX2ZpbHRlcnM7CiAgIC8qIFRoZSB0eXBlLXByaW50ZXIg bGlzdC4gICovCiAgIFB5T2JqZWN0ICp0eXBlX3ByaW50ZXJzOworCisgIC8q IFRoZSBkZWJ1ZyBtZXRob2QgbGlzdC4gICovCisgIFB5T2JqZWN0ICpkZWJ1 Z19tZXRob2RzOwogfSBwc3BhY2Vfb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBl T2JqZWN0IHBzcGFjZV9vYmplY3RfdHlwZQpAQCAtNzUsNiArNzgsNyBAQCBw c3B5X2RlYWxsb2MgKFB5T2JqZWN0ICpzZWxmKQogICBQeV9YREVDUkVGIChw c19zZWxmLT5wcmludGVycyk7CiAgIFB5X1hERUNSRUYgKHBzX3NlbGYtPmZy YW1lX2ZpbHRlcnMpOwogICBQeV9YREVDUkVGIChwc19zZWxmLT50eXBlX3By aW50ZXJzKTsKKyAgUHlfWERFQ1JFRiAocHNfc2VsZi0+ZGVidWdfbWV0aG9k cyk7CiAgIFB5X1RZUEUgKHNlbGYpLT50cF9mcmVlIChzZWxmKTsKIH0KIApA QCAtMTA3LDYgKzExMSwxMyBAQCBwc3B5X25ldyAoUHlUeXBlT2JqZWN0ICp0 eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzKQogCSAg UHlfREVDUkVGIChzZWxmKTsKIAkgIHJldHVybiBOVUxMOwogCX0KKworICAg ICAgc2VsZi0+ZGVidWdfbWV0aG9kcyA9IFB5TGlzdF9OZXcgKDApOworICAg ICAgaWYgKHNlbGYtPmRlYnVnX21ldGhvZHMgPT0gTlVMTCkKKwl7CisJICBQ eV9ERUNSRUYgKHNlbGYpOworCSAgcmV0dXJuIE5VTEw7CisJfQogICAgIH0K ICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwogfQpAQCAtMjAxLDYgKzIx MiwxNyBAQCBwc3B5X2dldF90eXBlX3ByaW50ZXJzIChQeU9iamVjdCAqbywg dm9pZCAqaWdub3JlKQogICByZXR1cm4gc2VsZi0+dHlwZV9wcmludGVyczsK IH0KIAorLyogR2V0IHRoZSAnZGVidWdfbWV0aG9kcycgYXR0cmlidXRlLiAg Ki8KKworUHlPYmplY3QgKgorcHNweV9nZXRfZGVidWdfbWV0aG9kcyAoUHlP YmplY3QgKm8sIHZvaWQgKmlnbm9yZSkKK3sKKyAgcHNwYWNlX29iamVjdCAq c2VsZiA9IChwc3BhY2Vfb2JqZWN0ICopIG87CisKKyAgUHlfSU5DUkVGIChz ZWxmLT5kZWJ1Z19tZXRob2RzKTsKKyAgcmV0dXJuIHNlbGYtPmRlYnVnX21l dGhvZHM7Cit9CisKIC8qIFNldCB0aGUgJ3R5cGVfcHJpbnRlcnMnIGF0dHJp YnV0ZS4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTI4OCw2ICszMTAsMTMgQEAg cHNwYWNlX3RvX3BzcGFjZV9vYmplY3QgKHN0cnVjdCBwcm9ncmFtX3NwYWNl ICpwc3BhY2UpCiAJICAgICAgcmV0dXJuIE5VTEw7CiAJICAgIH0KIAorCSAg b2JqZWN0LT5kZWJ1Z19tZXRob2RzID0gUHlMaXN0X05ldyAoMCk7CisJICBp ZiAob2JqZWN0LT5kZWJ1Z19tZXRob2RzID09IE5VTEwpCisJICAgIHsKKwkg ICAgICBQeV9ERUNSRUYgKG9iamVjdCk7CisJICAgICAgcmV0dXJuIE5VTEw7 CisJICAgIH0KKwogCSAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNl LCBwc3B5X3BzcGFjZV9kYXRhX2tleSwgb2JqZWN0KTsKIAl9CiAgICAgfQpA QCAtMzIwLDYgKzM0OSw4IEBAIHN0YXRpYyBQeUdldFNldERlZiBwc3BhY2Vf Z2V0c2V0W10gPQogICAgICJGcmFtZSBmaWx0ZXJzLiIsIE5VTEwgfSwKICAg eyAidHlwZV9wcmludGVycyIsIHBzcHlfZ2V0X3R5cGVfcHJpbnRlcnMsIHBz cHlfc2V0X3R5cGVfcHJpbnRlcnMsCiAgICAgIlR5cGUgcHJpbnRlcnMuIiwg TlVMTCB9LAorICB7ICJkZWJ1Z19tZXRob2RzIiwgcHNweV9nZXRfZGVidWdf bWV0aG9kcywgTlVMTCwKKyAgICAiRGVidWcgbWV0aG9kcy4iLCBOVUxMIH0s CiAgIHsgTlVMTCB9CiB9OwogCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwu aAppbmRleCA3ZDhjNGFkLi42MmViNDliIDEwMDY0NAotLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi1pbnRlcm5hbC5oCisrKyBiL2dkYi9weXRob24vcHl0aG9u LWludGVybmFsLmgKQEAgLTMxNiwxMSArMzE2LDEzIEBAIFB5T2JqZWN0ICpw c3BhY2VfdG9fcHNwYWNlX29iamVjdCAoc3RydWN0IHByb2dyYW1fc3BhY2Ug KikKICAgICBDUFlDSEVDS0VSX1JFVFVSTlNfQk9SUk9XRURfUkVGOwogUHlP YmplY3QgKnBzcHlfZ2V0X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICop OwogUHlPYmplY3QgKnBzcHlfZ2V0X2ZyYW1lX2ZpbHRlcnMgKFB5T2JqZWN0 ICosIHZvaWQgKik7CitQeU9iamVjdCAqcHNweV9nZXRfZGVidWdfbWV0aG9k cyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKIAogUHlPYmplY3QgKm9iamZpbGVf dG9fb2JqZmlsZV9vYmplY3QgKHN0cnVjdCBvYmpmaWxlICopCiAgICAgQ1BZ Q0hFQ0tFUl9SRVRVUk5TX0JPUlJPV0VEX1JFRjsKIFB5T2JqZWN0ICpvYmpm cHlfZ2V0X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwogUHlPYmpl Y3QgKm9iamZweV9nZXRfZnJhbWVfZmlsdGVycyAoUHlPYmplY3QgKiwgdm9p ZCAqKTsKK1B5T2JqZWN0ICpvYmpmcHlfZ2V0X2RlYnVnX21ldGhvZHMgKFB5 T2JqZWN0ICosIHZvaWQgKik7CiAKIFB5T2JqZWN0ICpnZGJhcmNoX3RvX2Fy Y2hfb2JqZWN0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CiAKQEAgLTQw MSw2ICs0MDMsOCBAQCBpbnQgZ2RicHlfaW5pdGlhbGl6ZV9uZXdfb2JqZmls ZV9ldmVudCAodm9pZCkKICAgQ1BZQ0hFQ0tFUl9ORUdBVElWRV9SRVNVTFRf U0VUU19FWENFUFRJT047CiBpbnQgZ2RicHlfaW5pdGlhbGl6ZV9hcmNoICh2 b2lkKQogICBDUFlDSEVDS0VSX05FR0FUSVZFX1JFU1VMVF9TRVRTX0VYQ0VQ VElPTjsKK2ludCBnZGJweV9pbml0aWFsaXplX2RlYnVnbWV0aG9kcyAodm9p ZCkKKyAgQ1BZQ0hFQ0tFUl9ORUdBVElWRV9SRVNVTFRfU0VUU19FWENFUFRJ T047CiAKIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcHlfZGVjcmVm IChQeU9iamVjdCAqcHkpOwogc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51 cF9weV94ZGVjcmVmIChQeU9iamVjdCAqcHkpOwpkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXgg N2NkZjhhNy4uZjVhMDEzMiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRo b24uYworKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCkBAIC0xNjg3LDcgKzE2 ODcsOCBAQCBtZXNzYWdlID09IGFuIGVycm9yIG1lc3NhZ2Ugd2l0aG91dCBh IHN0YWNrIHdpbGwgYmUgcHJpbnRlZC4iKSwKICAgICAgIHx8IGdkYnB5X2lu aXRpYWxpemVfZXhpdGVkX2V2ZW50ICgpIDwgMAogICAgICAgfHwgZ2RicHlf aW5pdGlhbGl6ZV90aHJlYWRfZXZlbnQgKCkgPCAwCiAgICAgICB8fCBnZGJw eV9pbml0aWFsaXplX25ld19vYmpmaWxlX2V2ZW50ICgpICA8IDAKLSAgICAg IHx8IGdkYnB5X2luaXRpYWxpemVfYXJjaCAoKSA8IDApCisgICAgICB8fCBn ZGJweV9pbml0aWFsaXplX2FyY2ggKCkgPCAwCisgICAgICB8fCBnZGJweV9p bml0aWFsaXplX2RlYnVnbWV0aG9kcyAoKSA8IDApCiAgICAgZ290byBmYWls OwogCiAgIG9ic2VydmVyX2F0dGFjaF9iZWZvcmVfcHJvbXB0IChiZWZvcmVf cHJvbXB0X2hvb2spOwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1kZWJ1Z21ldGhvZHMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZjI5MmE2MgotLS0gL2Rldi9udWxsCisrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1kZWJ1Z21ldGhvZHMuY2MK QEAgLTAsMCArMSwxNzMgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDEz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSAgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCit1 c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgZG9wCit7CisKK2Ns YXNzIEEKK3sKKyBwdWJsaWM6CisgIGludCBhOworICBpbnQgYXJyYXkgWzEw XTsKKyAgdmlydHVhbCB+QSAoKTsKKyAgaW50IG9wZXJhdG9yKyAoY29uc3Qg QSAmb2JqKTsKKyAgdmlydHVhbCBpbnQgb3BlcmF0b3ItIChjb25zdCBBICZv YmopOworICB2aXJ0dWFsIGludCBnZXRhICgpOworfTsKKworQTo6fkEgKCkg eyB9CisKK2ludAorQTo6b3BlcmF0b3IrIChjb25zdCBBICZvYmopCit7Cisg IGNvdXQgPDwgIkZyb20gQ0MgPEFfcGx1c19BPjoiIDw8IGVuZGw7CisgIHJl dHVybiBhICsgb2JqLmE7Cit9CisKK2ludCBBOjpvcGVyYXRvci0gKGNvbnN0 IEEgJm9iaikKK3sKKyAgY291dCA8PCAiRnJvbSBDQyA8QV9taW51c19BPjoi IDw8IGVuZGw7CisgIHJldHVybiBhIC0gb2JqLmE7Cit9CisKK2ludCBBOjpn ZXRhICh2b2lkKQoreworICBjb3V0IDw8ICJGcm9tIENDIGdldGE6IiA8PCBl bmRsOworICByZXR1cm4gYTsKK30KKworY2xhc3MgQiA6IHB1YmxpYyBBCit7 CisgcHVibGljOgorICB2aXJ0dWFsIGludCBvcGVyYXRvciogKGNvbnN0IEIg Jm9iaik7Cit9OworCitpbnQKK0I6Om9wZXJhdG9yKiAoY29uc3QgQiAmb2Jq KQoreworICBjb3V0IDw8ICJGcm9tIENDIDxCX3N0YXJfQj46IiA8PCBlbmRs OworICByZXR1cm4gYSAqIG9iai5hOworfQorCit0eXBlZGVmIEIgQnQ7CisK K3R5cGVkZWYgQnQgQnR0OworCitjbGFzcyBDIDogcHVibGljIEJ0Cit7Cisg cHVibGljOgorICB2aXJ0dWFsIH5DKCk7Cit9OworCitDOjp+QyAoKSB7IH0K KworY2xhc3MgRCA6IHB1YmxpYyBCCit7CisgcHVibGljOgorICB2aXJ0dWFs IGludCBvcGVyYXRvciogKGNvbnN0IEIgJm9iaik7Cit9OworCitpbnQKK0Q6 Om9wZXJhdG9yKiAoY29uc3QgQiAmb2JqKQoreworICBjb3V0IDw8ICJGcm9t IENDIDxEX3N0YXJfRD46IiA8PCBlbmRsOworICByZXR1cm4gYSAqIG9iai5h OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEcKK3sKKyBw dWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KKyAgaW50IHNpemVf ZGlmZiAoKTsKKworICB0ZW1wbGF0ZSA8aW50IE0+CisgIGludCBzaXplX211 bCAoKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+CisgIFQgbXVsKGNv bnN0IFQxIHQxKTsKKworIHB1YmxpYzoKKyAgVCB0OworfTsKKwordGVtcGxh dGUgPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+CitpbnQK K0c8VD46OnNpemVfZGlmZiAoKQoreworICBjb3V0IDw8ICJGcm9tIENDIEc8 Pjo6c2l6ZV9kaWZmOiIgPDwgZW5kbDsKKyAgcmV0dXJuIHNpemVvZiAoVDEp IC0gc2l6ZW9mIChUKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0 ZW1wbGF0ZSA8aW50IE0+CitpbnQKK0c8VD46OnNpemVfbXVsICgpCit7Cisg IGNvdXQgPDwgIkZyb20gQ0MgRzw+OjpzaXplX211bDoiIDw8IGVuZGw7Cisg IHJldHVybiBNICogc2l6ZW9mIChUKTsKK30KKwordGVtcGxhdGUgPHR5cGVu YW1lIFQ+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+CitUCitHPFQ+OjptdWwg KGNvbnN0IFQxIHQxKQoreworICBjb3V0IDw8ICJGcm9tIENDIEc8Pjo6bXVs OiIgPDwgZW5kbDsKKyAgcmV0dXJuIHQxICogdDsKK30KKworfQorCit1c2lu ZyBuYW1lc3BhY2UgZG9wOworCitpbnQgbWFpbih2b2lkKQoreworICBBIGEx LCBhMjsKKyAgYTEuYSA9IDU7CisgIGEyLmEgPSAxMDsKKyAgQyBjMTsKKyAg YzEuYSA9IDIwOworICBCIGIxOworICBiMS5hID0gMzA7CisgIEQgZDE7Cisg IGQxLmEgPSA1MDsKKyAgQnQgYnQ7CisgIGJ0LmEgPSA0MDsKKyAgQSAmcmVm X2MgPSBjMTsKKyAgQiAmcmVmX2QgPSBkMTsKKyAgQnR0IGJ0dDsKKyAgYnR0 LmEgPSAtNTsKKyAgRzxpbnQ+IGc7CisgIGcudCA9IDU7CisKKyAgaW50IGRp ZmYgPSBnLnNpemVfZGlmZjxmbG9hdD4gKCk7CisgIGludCBzbXVsID0gZy5z aXplX211bDwyPiAoKTsKKyAgaW50IG11bCA9IGcubXVsICgxLjApOworCisg IGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICB7CisgICAgICBh MS5hcnJheVtpXSA9IGEyLmFycmF5W2ldID0gaTsKKyAgICB9CisKKyAgcmV0 dXJuIDA7IC8qIEJyZWFrIGhlcmUuICAqLyAKK30KZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1kZWJ1Z21ldGhvZHMuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5leHAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAyZmRiYQot LS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1kZWJ1Z21ldGhvZHMuZXhwCkBAIC0wLDAgKzEsMTEyIEBACisjIENvcHly aWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH REIgdGVzdHN1aXRlLiAgSXQgdGVzdHMgdGhlIGRlYnVnIG1ldGhvZHMKKyMg ZmVhdHVyZSBpbiB0aGUgUHl0aG9uIGV4dGVuc2lvbiBsYW5ndWFnZS4KKwor bG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKKworaWYgeyBbc2tpcF9jcGx1c190 ZXN0c10gfSB7IGNvbnRpbnVlIH0KKworc3RhbmRhcmRfdGVzdGZpbGUgcHkt ZGVidWdtZXRob2RzLmNjCisKK2lmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAk dGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgYysrfV19 IHsKKyAgICByZXR1cm4gLTEKK30KKworIyBTa2lwIGFsbCB0ZXN0cyBpZiBQ eXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgoraWYgeyBbc2tpcF9w eXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9CisKK2lmICFbcnVudG9fbWFp bl0geworICAgcmV0dXJuIC0xCit9CisKK3NldCBkZWJ1Z19tZXRob2RzX3Nj cmlwdCAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weSIKKwor Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrIGhl cmUuIl0KK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCcmVhayBoZXJl IiAiLipCcmVhayBoZXJlLioiCisKKyMgVGVzdHMgYmVmb3JlIGxvYWRpbmcg dGhlIGRlYnVnIG1ldGhvZHMuCitnZGJfdGVzdCAicCBhMSArIGEyIiAiRnJv bSBDQyA8QV9wbHVzX0E+LioxNSIgIkJlZm9yZTogYTEgKyBhMiIKK2dkYl90 ZXN0ICJwIGEyIC0gYTEiICJGcm9tIENDIDxBX21pbnVzX0E+Lio1IiAiQmVm b3JlOiBhMSAtIGEyIgorZ2RiX3Rlc3QgInAgYjEgLSBhMSIgIkZyb20gQ0Mg PEFfbWludXNfQT4uKjI1IiAiQmVmb3JlOiBiMSAtIGExIgorZ2RiX3Rlc3Qg InAgYzEgLSBhMSIgIkZyb20gQ0MgPEFfbWludXNfQT4uKjE1IiAiQmVmb3Jl OiBjMSAtIGExIgorZ2RiX3Rlc3QgInAgYzEgLSBjMSIgIkZyb20gQ0MgPEFf bWludXNfQT4uKjAiICJCZWZvcmU6IGMxIC0gYzEiCitnZGJfdGVzdCAicCBh MS5nZXRhKCkiICJGcm9tIENDIGdldGEuKjUiICJCZWZvcmU6IGExLmdldGEo KSIKK2dkYl90ZXN0ICJwIHJlZl9jIC0gYTEiICJGcm9tIENDIDxBX21pbnVz X0E+LioxNSIgIkJlZm9yZTogcmVmX2MgLSBhMSIKK2dkYl90ZXN0ICJwIHJl Zl9jIC0gYzEiICJGcm9tIENDIDxBX21pbnVzX0E+LiowIiAiQmVmb3JlOiBy ZWZfYyAtIGMxIgorZ2RiX3Rlc3QgInAgYjEgKiBiMSIgIkZyb20gQ0MgPEJf c3Rhcl9CPi4qOTAwIiAiQmVmb3JlOiBiMSAqIGIxIgorZ2RiX3Rlc3QgInAg cmVmX2MgKiBiMSIgIk5vIHN5bWJvbC4qIiAiQmVmb3JlOiByZWZfYyAqIGIx IgorZ2RiX3Rlc3QgInAgcmVmX2QgKiBiMSIgIkZyb20gQ0MgPERfc3Rhcl9E Pi4qMTUwMCIgIkJlZm9yZTogcmVmX2QgKiBiMSIKK2dkYl90ZXN0ICJwIGJ0 ICogYzEiICJGcm9tIENDIDxCX3N0YXJfQj4uKjgwMCIgIkJlZm9yZTogYnQg KiBjMSIKK2dkYl90ZXN0ICJwICsrYTEiICJObyBzeW1ib2wuKiIgIkJlZm9y ZTogKythMSIKK2dkYl90ZXN0ICJwIGExLmdldGFycmF5aW5kKDUpIiAiQ291 bGRuJ3QgZmluZCBtZXRob2QuKiIgXAorICAiQmVmb3JlOiBhMS5nZXRhcnJh eWluZCg1KSIKK2dkYl90ZXN0ICJwIGcuc2l6ZV9kaWZmPGZsb2F0PigpIiAi RnJvbSBDQyBHPD46OnNpemVfZGlmZi4qIiBcCisgICJCZWZvcmU6IGcuc2l6 ZV9kaWZmPGZsb2F0PigpIgorZ2RiX3Rlc3QgInAgZy5zaXplX2RpZmY8dW5z aWduZWQgbG9uZz4oKSIgIkNvdWxkbid0IGZpbmQgbWV0aG9kLioiIFwKKyAg IkJlZm9yZTogZy5zaXplX2RpZmY8dW5zaWduZWQgbG9uZz4oKSIKK2dkYl90 ZXN0ICJwIGcuc2l6ZV9tdWw8Mj4oKSIgIkZyb20gQ0MgRzw+OjpzaXplX211 bC4qIiBcCisgICJCZWZvcmU6IGcuc2l6ZV9tdWw8Mj4oKSIKK2dkYl90ZXN0 ICJwIGcuc2l6ZV9tdWw8NT4oKSIgIkNvdWxkbid0IGZpbmQgbWV0aG9kLioi IFwKKyAgIkJlZm9yZTogZy5zaXplX211bDw1PigpIgorZ2RiX3Rlc3QgInAg Zy5tdWw8ZG91YmxlPigyLjApIiAiRnJvbSBDQyBHPD46Om11bC4qIiBcCisg ICJCZWZvcmU6IGcubXVsPGRvdWJsZT4oMi4wKSIKK2dkYl90ZXN0ICJwIGcu bXVsPGNoYXI+KCdhJykiICJDb3VsZG4ndCBmaW5kIG1ldGhvZC4qIiBcCisg ICJCZWZvcmU6IGcubXVsPGNoYXI+KCdhJykiCisKKyMgTG9hZCB0aGUgc2Ny aXB0IHdoaWNoIGFkZHMgdGhlIGRlYnVnIG1ldGhvZHMuCitnZGJfdGVzdF9u b19vdXRwdXQgInNvdXJjZSAke2RlYnVnX21ldGhvZHNfc2NyaXB0fSIgImxv YWQgdGhlIHNjcmlwdCBmaWxlIgorCisjIFRlc3RzIGFmdGVyIGxvYWRpbmcg ZGVidWcgbWV0aG9kcy4KK2dkYl90ZXN0ICJwIGExICsgYTIiICJGcm9tIFB5 dGhvbiA8QV9wbHVzX0E+LioxNSIgIkFmdGVyOiBhMSArIGEyIgorZ2RiX3Rl c3QgInAgYTIgLSBhMSIgIkZyb20gQ0MgPEFfbWludXNfQT4uKjUiICJBZnRl cjogYTEgLSBhMiIKK2dkYl90ZXN0ICJwIGIxIC0gYTEiICJGcm9tIENDIDxB X21pbnVzX0E+LioyNSIgIkFmdGVyOiBiMSAtIGEyIgorZ2RiX3Rlc3QgInAg YzEgLSBhMSIgIkZyb20gQ0MgPEFfbWludXNfQT4uKjE1IiAiQWZ0ZXI6IGMx IC0gYTEiCitnZGJfdGVzdCAicCBjMSAtIGMxIiAiRnJvbSBQeXRob24gPENf bWludXNfQz4uKjAiICJBZnRlcjogYzEgLSBjMSIKK2dkYl90ZXN0ICJwIGEx LmdldGEoKSIgIkZyb20gUHl0aG9uIDxBX2dldGE+Lio1IiAiQWZ0ZXI6IGEx LmdldGEoKSIKK2dkYl90ZXN0ICJwIHJlZl9jIC0gYTEiICJGcm9tIENDIDxB X21pbnVzX0E+LioxNSIgIkFmdGVyOiByZWZfYyAtIGExIgorZ2RiX3Rlc3Qg InAgcmVmX2MgLSBjMSIgIkZyb20gUHl0aG9uIDxDX21pbnVzX0M+LiowIiAi QWZ0ZXI6IHJlZl9jIC0gYzEiCitnZGJfdGVzdCAicCBiMSAqIGIxIiAiRnJv bSBQeXRob24gPEJfc3Rhcl9CPi4qOTAwIiAiQWZ0ZXI6IGIxICogYjEiCitn ZGJfdGVzdCAicCByZWZfYyAqIGIxIiAiTm8gc3ltYm9sLioiICJBZnRlcjog cmVmX2MgKiBiMSBmYWlsdXJlIgorZ2RiX3Rlc3QgInAgcmVmX2QgKiBiMSIg IkZyb20gQ0MgPERfc3Rhcl9EPi4qMTUwMCIgIkFmdGVyOiByZWZfZCAqIGIx IgorZ2RiX3Rlc3QgInAgYnQgKiBjMSIgIkZyb20gUHl0aG9uIDxCX3N0YXJf Qj4uKjgwMCIgIkFmdGVyOiBidCAqIGMxIgorZ2RiX3Rlc3QgInAgKythMSIg IkZyb20gUHl0aG9uIDxwbHVzX3BsdXNfQT4uKjYiICJBZnRlcjogKythMSIK K2dkYl90ZXN0ICJwIGExLmdldGFycmF5aW5kKDUpIiAiRnJvbSBQeXRob24g PEFfZ2V0YXJyYXlpbmQ+Lio1IiBcCisgICJBZnRlcjogYTEuZ2V0YXJyYXlp bmQoNSkiCitnZGJfdGVzdCAicCBnLnNpemVfZGlmZjxmbG9hdD4gICgpIiAi RnJvbSBQeXRob24gRzw+OjpzaXplX2RpZmYuKiIgXAorICAiQWZ0ZXI6IGcu c2l6ZV9kaWZmPGZsb2F0PigpIgorZ2RiX3Rlc3QgInAgZy5zaXplX2RpZmY8 ICB1bnNpZ25lZCBsb25nICA+KCkiICJGcm9tIFB5dGhvbiBHPD46OnNpemVf ZGlmZi4qIiBcCisgICJBZnRlcjogZy5zaXplX2RpZmY8dW5zaWduZWQgbG9u Zz4oKSIKK2dkYl90ZXN0ICJwIGcuc2l6ZV9tdWw8Mj4oKSIgIkZyb20gUHl0 aG9uIEc8Pjo6c2l6ZV9tdWwuKiIgXAorICAiQWZ0ZXI6IGcuc2l6ZV9tdWw8 Mj4oKSIKK2dkYl90ZXN0ICJwIGcuc2l6ZV9tdWw8ICA1ICA+KCkiICJGcm9t IFB5dGhvbiBHPD46OnNpemVfbXVsLioiIFwKKyAgIkFmdGVyOiBnLnNpemVf bXVsPCAgNSAgPigpIgorZ2RiX3Rlc3QgInAgZy5tdWw8ZG91YmxlPigyLjAp IiAiRnJvbSBQeXRob24gRzw+OjptdWwuKiIgXAorICAiQWZ0ZXI6IGcubXVs PGRvdWJsZT4oMi4wKSIKK2dkYl90ZXN0ICJwIGcubXVsPGNoYXI+KCdhJyki ICJGcm9tIFB5dGhvbiBHPD46Om11bC4qIiBcCisgICJBZnRlcjogZy5tdWw8 Y2hhcj4oJ2EnKSIKKworIyBUZXN0cyBmb3IgJ2Rpc2FibGUvZW5hYmxlIGRl YnVnLW1ldGhvZCcgY29tbWFuZC4KK2dkYl90ZXN0X25vX291dHB1dCAiZGlz YWJsZSBkZWJ1Zy1tZXRob2QgLipkZWJ1Z21ldGhvZHMgR19tdWwiICJEaXNh YmxlIEdfbXVsIgorZ2RiX3Rlc3QgInAgZy5tdWw8Y2hhcj4oJ2EnKSIgIkNv dWxkbid0IGZpbmQgbWV0aG9kLioiIFwKKyAgIkFmdGVyIGRpc2FibGluZyBn Lm11bDxjaGFyPignYScpIgorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJlbmFibGUg ZGVidWctbWV0aG9kIC4qZGVidWdtZXRob2RzIEdfbXVsIiAiRW5hYmxlIEdf bXVsIgorZ2RiX3Rlc3QgInAgZy5tdWw8Y2hhcj4oJ2EnKSIgIkZyb20gUHl0 aG9uIEc8Pjo6bXVsLioiIFwKKyAgIkFmdGVyIGVuYWJsaW5nIGcubXVsPGNo YXI+KCdhJykiCisKKyMgVGVzdCBmb3IgJ2luZm8gZGVidWctbWV0aG9kcycg Y29tbWFuZAorZ2RiX3Rlc3QgImluZm8gZGVidWctbWV0aG9kIGdsb2JhbCBw bHVzIiAiZ2xvYmFsLipwbHVzX3BsdXNfQSAtIGVuYWJsZWQiIFwKKyAgImlu Zm8gZGVidWctbWV0aG9kIGdsb2JhbCBwbHVzIgpkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5weSBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1kZWJ1Z21ldGhvZHMucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE0NzYxMQotLS0g L2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1k ZWJ1Z21ldGhvZHMucHkKQEAgLTAsMCArMSwxODAgQEAKKyMgQ29weXJpZ2h0 IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdEQiB0 ZXN0c3VpdGUuICBJdCBpbXBsZW1lbnRzIGRlYnVnIG1ldGhvZHMKKyMgaW4g dGhlIFB5dGhvbiBleHRlbnNpb24gbGFuZ3VhZ2UuCisKK2ltcG9ydCBnZGIK K2ltcG9ydCByZQorCitmcm9tIGdkYi5kZWJ1Z21ldGhvZHMgaW1wb3J0IERl YnVnTWV0aG9kLCBTaW1wbGVEZWJ1Z01ldGhvZAorCitkZWYgQV9wbHVzX0Eo b2JqLCBvcHIpOgorICBwcmludCAnRnJvbSBQeXRob24gPEFfcGx1c19BPjon CisgIHJldHVybiBvYmpbJ2EnXSArIG9wclsnYSddCisKK2RlZiBwbHVzX3Bs dXNfQShvYmopOgorICBwcmludCAnRnJvbSBQeXRob24gPHBsdXNfcGx1c19B PjonCisgIHJldHVybiBvYmpbJ2EnXSArIDEKKworZGVmIENfbWludXNfQyhv YmosIG9wcik6CisgIHByaW50ICdGcm9tIFB5dGhvbiA8Q19taW51c19DPjon CisgIHJldHVybiBvYmpbJ2EnXSAtIG9wclsnYSddCisKK2RlZiBCX3N0YXJf QihvYmosIG9wcik6CisgIHByaW50ICdGcm9tIFB5dGhvbiA8Ql9zdGFyX0I+ OicKKyAgcmV0dXJuIG9ialsnYSddICogb3ByWydhJ10KKworZGVmIEFfZ2V0 YShvYmopOgorICBwcmludCAnRnJvbSBQeXRob24gPEFfZ2V0YT46JworICBy ZXR1cm4gb2JqWydhJ10KKworZGVmIEFfZ2V0YXJyYXlpbmQob2JqLCBpbmRl eCk6CisgIHByaW50ICdGcm9tIFB5dGhvbiA8QV9nZXRhcnJheWluZD46Jwor ICByZXR1cm4gb2JqWydhcnJheSddW2luZGV4XQorCisKK3R5cGVfQSA9IGdk Yi5wYXJzZV9hbmRfZXZhbCgnKGRvcDo6QSAqKSAwJykudHlwZS50YXJnZXQo KQordHlwZV9CID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCcoZG9wOjpCICopIDAn KS50eXBlLnRhcmdldCgpCit0eXBlX0MgPSBnZGIucGFyc2VfYW5kX2V2YWwo Jyhkb3A6OkMgKikgMCcpLnR5cGUudGFyZ2V0KCkKK3R5cGVfaW50ID0gZ2Ri LnBhcnNlX2FuZF9ldmFsKCcoaW50ICopIDAnKS50eXBlLnRhcmdldCgpCisK KworY2xhc3MgR19zaXplX2RpZmYoRGVidWdNZXRob2QpOgorICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKyAgICAgICAgRGVidWdNZXRob2QuX19pbml0X18o c2VsZiwgJ0dfc2l6ZV9kaWZmJykKKworICAgIGRlZiBtYXRjaChzZWxmLCBj bGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAgIGlmIG5vdCByZS5t YXRjaCgnXmRvcDo6RzxbIF0qW19hLXpBLVpdWyBfYS16QS1aMC05XSo+JCcs CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc190eXBlLnVucXVhbGlm aWVkKCkudGFnKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg ICBpZiBub3QgcmUubWF0Y2goJ15zaXplX2RpZmY8WyBdKltfYS16QS1aXVsg X2EtekEtWjAtOV0qPiQnLAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0 aG9kX25hbWUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg IHJldHVybiBUcnVlCisKKyAgICBkZWYgZ2V0X2FyZ3R5cGVzKHNlbGYsIGNs YXNzX3R5cGUsIG1ldGhvZF9uYW1lKToKKyAgICAgICAgcmV0dXJuIFtdCisK KyAgICBkZWYgaW52b2tlKHNlbGYsIG9iaiwgbWV0aG9kX25hbWUsIGFyZ3Mp OgorICAgICAgICB0MV9zZWFyY2ggPSByZS5zZWFyY2goJzxbIF0qW19hLXpB LVpdWyBfYS16QS1aMC05XSo+JywgbWV0aG9kX25hbWUpCisgICAgICAgIGlm IG5vdCB0MV9zZWFyY2g6CisgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJy b3IoCisgICAgICAgICAgICAgICAgJ1VuYWJsZSB0byBmaW5kIHRlbXBsYXRl IGFyZ3VtZW50IGZyb20gJXMuJyAlIG1ldGhvZF9uYW1lKQorICAgICAgICB0 MV9uYW1lID0gdDFfc2VhcmNoLmdyb3VwKDApWzE6LTFdCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIHQxX3R5cGUgPSBnZGIubG9va3VwX3R5cGUodDFf bmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAg IHJhaXNlIGdkYi5HZGJFcnJvcignVW5rbm93biB0ZW1wbGF0ZSB0eXBlICVz LicgJSB0MV9uYW1lKQorICAgICAgICBwcmludCAnRnJvbSBQeXRob24gRzw+ OjpzaXplX2RpZmY8JXM+JyAlIHQxX25hbWUKKyAgICAgICAgcmV0dXJuIHQx X3R5cGUuc2l6ZW9mIC0gb2JqWyd0J10udHlwZS5zaXplb2YKKyAgICAgICAg CisKK2NsYXNzIEdfc2l6ZV9tdWwoRGVidWdNZXRob2QpOgorICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKyAgICAgICAgRGVidWdNZXRob2QuX19pbml0X18o c2VsZiwgJ0dfc2l6ZV9tdWxsJykKKworICAgIGRlZiBtYXRjaChzZWxmLCBj bGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAgICAgIGlmIG5vdCByZS5t YXRjaCgnXmRvcDo6RzxbIF0qW19hLXpBLVpdWyBfYS16QS1aMC05XSo+JCcs CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc190eXBlLnVucXVhbGlm aWVkKCkudGFnKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg ICBpZiBub3QgcmUubWF0Y2goJ15zaXplX211bDxbIF0qWzAtOV0rWyBdKj4k JywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9uYW1lKToKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQor CisgICAgZGVmIGdldF9hcmd0eXBlcyhzZWxmLCBjbGFzc190eXBlLCBtZXRo b2RfbmFtZSk6CisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGludm9r ZShzZWxmLCBvYmosIG1ldGhvZF9uYW1lLCBhcmdzKToKKyAgICAgICAgbV9z ZWFyY2ggPSByZS5zZWFyY2goJzxbIF0qWzAtOV0rWyBdKj4nLCBtZXRob2Rf bmFtZSkKKyAgICAgICAgaWYgbm90IG1fc2VhcmNoOgorICAgICAgICAgICAg cmFpc2UgZ2RiLkdkYkVycm9yKAorICAgICAgICAgICAgICAgICdVbmFibGUg dG8gZmluZCB0ZW1wbGF0ZSBhcmd1bWVudCBmcm9tICVzLicgJSBtZXRob2Rf bmFtZSkKKyAgICAgICAgbV92YWwgPSBpbnQobV9zZWFyY2guZ3JvdXAoMClb MTotMV0pCisgICAgICAgIHByaW50ICdGcm9tIFB5dGhvbiBHPD46OnNpemVf bXVsPCVkPicgJSBtX3ZhbAorICAgICAgICByZXR1cm4gbV92YWwgKiBvYmpb J3QnXS50eXBlLnNpemVvZgorICAgICAgICAKKworY2xhc3MgR19tdWwoRGVi dWdNZXRob2QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg RGVidWdNZXRob2QuX19pbml0X18oc2VsZiwgJ0dfbXVsJykKKworICAgIGRl ZiBtYXRjaChzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6CisgICAg ICAgIGlmIG5vdCByZS5tYXRjaCgnXmRvcDo6RzxbIF0qW19hLXpBLVpdWyBf YS16QS1aMC05XSo+JCcsCisgICAgICAgICAgICAgICAgICAgICAgICBjbGFz c190eXBlLnVucXVhbGlmaWVkKCkudGFnKToKKyAgICAgICAgICAgIHJldHVy biBGYWxzZQorICAgICAgICBpZiBub3QgcmUubWF0Y2goJ15tdWw8WyBdKltf YS16QS1aXVsgX2EtekEtWjAtOV0qPiQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgbWV0aG9kX25hbWUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgZ2V0X2FyZ3R5cGVz KHNlbGYsIGNsYXNzX3R5cGUsIG1ldGhvZF9uYW1lKToKKyAgICAgICAgdDFf c2VhcmNoID0gcmUuc2VhcmNoKCc8WyBdKltfYS16QS1aXVsgX2EtekEtWjAt OV0qPicsIG1ldGhvZF9uYW1lKQorICAgICAgICBpZiBub3QgdDFfc2VhcmNo OgorICAgICAgICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKAorICAgICAgICAg ICAgICAgICdVbmFibGUgdG8gZmluZCB0ZW1wbGF0ZSBhcmd1bWVudCBmcm9t ICVzLicgJSBtZXRob2RfbmFtZSkKKyAgICAgICAgdDFfbmFtZSA9IHQxX3Nl YXJjaC5ncm91cCgwKVsxOi0xXQorICAgICAgICB0cnk6CisgICAgICAgICAg ICB0MV90eXBlID0gZ2RiLmxvb2t1cF90eXBlKHQxX25hbWUpCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICByYWlzZSBnZGIuR2Ri RXJyb3IoJ1Vua25vd24gdGVtcGxhdGUgdHlwZSAlcy4nICUgdDFfbmFtZSkK KyAgICAgICAgcmV0dXJuIFt0MV90eXBlXQorCisgICAgZGVmIGludm9rZShz ZWxmLCBvYmosIG1ldGhvZF9uYW1lLCBhcmdzKToKKyAgICAgICAgcHJpbnQg J0Zyb20gUHl0aG9uIEc8Pjo6bXVsPCVzPicgJSBhcmdzWzBdLnR5cGUKKyAg ICAgICAgcmV0dXJuIGFyZ3NbMF0gKiBvYmpbJ3QnXQorICAgICAgICAKKwor Z2xvYmFsX2RtX2xpc3QgPSBbCisgICAgU2ltcGxlRGVidWdNZXRob2QoJ0Ff cGx1c19BJywKKyAgICAgICAgICAgICAgICAgICAgICBBX3BsdXNfQSwKKyAg ICAgICAgICAgICAgICAgICAgICAnXmRvcDo6QSQnLAorICAgICAgICAgICAg ICAgICAgICAgICdvcGVyYXRvclwrJywKKyAgICAgICAgICAgICAgICAgICAg ICAjIFRoaXMgaXMgYSByZXBsYWNlbWVudCwgaGVuY2UgbWF0Y2ggdGhlIGFy ZyB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgIyBleGFjdGx5IQorICAg ICAgICAgICAgICAgICAgICAgIHR5cGVfQS5jb25zdCgpLnJlZmVyZW5jZSgp KSwKKyAgICBTaW1wbGVEZWJ1Z01ldGhvZCgncGx1c19wbHVzX0EnLAorICAg ICAgICAgICAgICAgICAgICAgIHBsdXNfcGx1c19BLAorICAgICAgICAgICAg ICAgICAgICAgICdeZG9wOjpBJCcsCisgICAgICAgICAgICAgICAgICAgICAg J29wZXJhdG9yXCtcKycpLAorICAgIFNpbXBsZURlYnVnTWV0aG9kKCdDX21p bnVzX0MnLAorICAgICAgICAgICAgICAgICAgICAgIENfbWludXNfQywKKyAg ICAgICAgICAgICAgICAgICAgICAnXmRvcDo6QyQnLAorICAgICAgICAgICAg ICAgICAgICAgICdvcGVyYXRvclwtJywKKyAgICAgICAgICAgICAgICAgICAg ICB0eXBlX0MpLAorICAgIFNpbXBsZURlYnVnTWV0aG9kKCdCX3N0YXJfQics CisgICAgICAgICAgICAgICAgICAgICAgQl9zdGFyX0IsCisgICAgICAgICAg ICAgICAgICAgICAgJ15kb3A6OkIkJywKKyAgICAgICAgICAgICAgICAgICAg ICAnb3BlcmF0b3JcKicsCisgICAgICAgICAgICAgICAgICAgICAgIyBUaGlz IGlzIGEgcmVwbGFjZW1lbnQsIGhlbmNlIG1hdGNoIHRoZSBhcmcgdHlwZQor ICAgICAgICAgICAgICAgICAgICAgICMgZXhhY3RseSEKKyAgICAgICAgICAg ICAgICAgICAgICB0eXBlX0IuY29uc3QoKS5yZWZlcmVuY2UoKSksCisgICAg U2ltcGxlRGVidWdNZXRob2QoJ0FfZ2V0YScsCisgICAgICAgICAgICAgICAg ICAgICAgQV9nZXRhLAorICAgICAgICAgICAgICAgICAgICAgICdeZG9wOjpB JCcsCisgICAgICAgICAgICAgICAgICAgICAgJ15nZXRhJCcpLAorICAgIFNp bXBsZURlYnVnTWV0aG9kKCdBX2dldGFycmF5aW5kJywKKyAgICAgICAgICAg ICAgICAgICAgICBBX2dldGFycmF5aW5kLAorICAgICAgICAgICAgICAgICAg ICAgICdeZG9wOjpBJCcsCisgICAgICAgICAgICAgICAgICAgICAgJ15nZXRh cnJheWluZCQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVfaW50KSwK K10KKworcHNwYWNlX2RtX2xpc3QgPSBbR19zaXplX2RpZmYoKSwgR19zaXpl X211bCgpLCBHX211bCgpXQorCitnZGIuZGVidWdtZXRob2RzLnJlZ2lzdGVy X2RlYnVnX21ldGhvZHMoZ2RiLCBnbG9iYWxfZG1fbGlzdCkKK2dkYi5kZWJ1 Z21ldGhvZHMucmVnaXN0ZXJfZGVidWdfbWV0aG9kcyhnZGIuY3VycmVudF9w cm9nc3BhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwc3BhY2VfZG1fbGlzdCkKZGlmZiAtLWdpdCBhL2dkYi92YWxh cml0aC5jIGIvZ2RiL3ZhbGFyaXRoLmMKaW5kZXggNDljOGJkYy4uZTQ4NmIy NCAxMDA2NDQKLS0tIGEvZ2RiL3ZhbGFyaXRoLmMKKysrIGIvZ2RiL3ZhbGFy aXRoLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAj aW5jbHVkZSAiaW5mY2FsbC5oIgogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIK KyNpbmNsdWRlICJleHQtZnVuY3Rpb24uaCIKIAogLyogRGVmaW5lIHdoZXRo ZXIgb3Igbm90IHRoZSBDIG9wZXJhdG9yICcvJyB0cnVuY2F0ZXMgdG93YXJk cyB6ZXJvIGZvcgogICAgZGlmZmVyZW50bHkgc2lnbmVkIG9wZXJhbmRzICh0 cnVuY2F0aW9uIGRpcmVjdGlvbiBpcyB1bmRlZmluZWQgaW4gQykuICAqLwpA QCAtMjg1LDIxICsyODYsMjcgQEAgdW5vcF91c2VyX2RlZmluZWRfcCAoZW51 bSBleHBfb3Bjb2RlIG9wLCBzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBleHBs aWNpdGx5LCBhbmQgcGVyZm9ybSBjb3JyZWN0IG92ZXJsb2FkIHJlc29sdXRp b24gaW4gYWxsIG9mIHRoZSBhYm92ZQogICAgc2l0dWF0aW9ucyBvciBjb21i aW5hdGlvbnMgdGhlcmVvZi4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgdmFsdWUg Kgorc3RhdGljIHZvaWQKIHZhbHVlX3VzZXJfZGVmaW5lZF9jcHBfb3AgKHN0 cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgY2hhciAqb3BlcmF0b3Is CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKipz cmNfZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgKnN0YXRpY19tZW1mdW5jcCkKIHsKIAogICBzdHJ1Y3Qg c3ltYm9sICpzeW1wID0gTlVMTDsKICAgc3RydWN0IHZhbHVlICp2YWxwID0g TlVMTDsKKyAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm5wID0g TlVMTDsKIAogICBmaW5kX292ZXJsb2FkX21hdGNoIChhcmdzLCBuYXJncywg b3BlcmF0b3IsIEJPVEggLyogY291bGQgYmUgbWV0aG9kICovLAogICAgICAg ICAgICAgICAgICAgICAgICAmYXJnc1swXSAvKiBvYmpwICovLAogICAgICAg ICAgICAgICAgICAgICAgICBOVUxMIC8qIHBhc3MgTlVMTCBzeW1ib2wgc2lu Y2Ugc3ltYm9sIGlzIHVua25vd24gKi8sCi0gICAgICAgICAgICAgICAgICAg ICAgICZ2YWxwLCAmc3ltcCwgc3RhdGljX21lbWZ1bmNwLCAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgJnZhbHAsICZzeW1wLCAmZXh0X2ZucCwgc3Rh dGljX21lbWZ1bmNwLCAwKTsKIAogICBpZiAodmFscCkKLSAgICByZXR1cm4g dmFscDsKKyAgICB7CisgICAgICAqc3JjX2ZuID0gdmFscDsKKyAgICAgIHJl dHVybjsKKyAgICB9CiAKICAgaWYgKHN5bXApCiAgICAgewpAQCAtMzA3LDcg KzMxNCwxNCBAQCB2YWx1ZV91c2VyX2RlZmluZWRfY3BwX29wIChzdHJ1Y3Qg dmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGNoYXIgKm9wZXJhdG9yLAogICAg ICAgICAgZXhwZWN0IGEgcmVmZXJlbmNlIGFzIGl0cyBmaXJzdCBhcmd1bWVu dAogICAgICAgICAgcmF0aGVyIHRoZSBleHBsaWNpdCBzdHJ1Y3R1cmUuICAq LwogICAgICAgYXJnc1swXSA9IHZhbHVlX2luZCAoYXJnc1swXSk7Ci0gICAg ICByZXR1cm4gdmFsdWVfb2ZfdmFyaWFibGUgKHN5bXAsIDApOworICAgICAg KnNyY19mbiA9IHZhbHVlX29mX3ZhcmlhYmxlIChzeW1wLCAwKTsKKyAgICAg IHJldHVybjsKKyAgICB9CisKKyAgaWYgKGV4dF9mbnApCisgICAgeworICAg ICAgKmV4dF9mbiA9IGV4dF9mbnA7CisgICAgICByZXR1cm47CiAgICAgfQog CiAgIGVycm9yIChfKCJDb3VsZCBub3QgZmluZCAlcy4iKSwgb3BlcmF0b3Ip OwpAQCAtMzE2LDE5ICszMzAsMjIgQEAgdmFsdWVfdXNlcl9kZWZpbmVkX2Nw cF9vcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLCBjaGFyICpv cGVyYXRvciwKIC8qIExvb2t1cCB1c2VyIGRlZmluZWQgb3BlcmF0b3IgTkFN RS4gIFJldHVybiBhIHZhbHVlIHJlcHJlc2VudGluZyB0aGUKICAgIGZ1bmN0 aW9uLCBvdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwogCi1zdGF0aWMgc3Ry dWN0IHZhbHVlICoKK3N0YXRpYyB2b2lkCiB2YWx1ZV91c2VyX2RlZmluZWRf b3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCAqc3Rh dGljX21lbWZ1bmNwLCBpbnQgbmFyZ3MpCisgICAgICAgICAgICAgICAgICAg ICAgIGludCAqc3RhdGljX21lbWZ1bmNwLCBpbnQgbmFyZ3MsCisgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKnNyY19mbiwgc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICoqZXh0X2ZuKQogewogICBzdHJ1Y3QgdmFs dWUgKnJlc3VsdCA9IE5VTEw7CiAKICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2Ut PmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQotICAgIHJlc3VsdCA9 IHZhbHVlX3VzZXJfZGVmaW5lZF9jcHBfb3AgKGFyZ3MsIG5hcmdzLCBuYW1l LCBzdGF0aWNfbWVtZnVuY3ApOworICAgIHZhbHVlX3VzZXJfZGVmaW5lZF9j cHBfb3AgKGFyZ3MsIG5hcmdzLCBuYW1lLCBzcmNfZm4sIGV4dF9mbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfbWVtZnVuY3Ap OwogICBlbHNlCi0gICAgcmVzdWx0ID0gdmFsdWVfc3RydWN0X2VsdCAoYXJn cCwgYXJncywgbmFtZSwgc3RhdGljX21lbWZ1bmNwLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJzdHJ1Y3R1cmUiKTsKLQotICByZXR1cm4g cmVzdWx0OworICAgIHsKKyAgICAgIHJlc3VsdCA9IHZhbHVlX3N0cnVjdF9l bHQgKGFyZ3AsIGFyZ3MsIG5hbWUsIHN0YXRpY19tZW1mdW5jcCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJ1Y3R1cmUiKTsKKyAg ICAgICpzcmNfZm4gPSByZXN1bHQ7CisgICAgfQogfQogCiAvKiBXZSBrbm93 IGVpdGhlciBhcmcxIG9yIGFyZzIgaXMgYSBzdHJ1Y3R1cmUsIHNvIHRyeSB0 byBmaW5kIHRoZSByaWdodApAQCAtMzQ1LDYgKzM2Miw3IEBAIHZhbHVlX3hf Ymlub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0IHZhbHVlICphcmcy LCBlbnVtIGV4cF9vcGNvZGUgb3AsCiAJICAgICAgIGVudW0gZXhwX29wY29k ZSBvdGhlcm9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCiB7CiAgIHN0cnVjdCB2 YWx1ZSAqKmFyZ3ZlYzsKKyAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpl eHRfZm4gPSBOVUxMOwogICBjaGFyICpwdHI7CiAgIGNoYXIgdHN0clsxM107 CiAgIGludCBzdGF0aWNfbWVtZnVuY3A7CkBAIC0zNTksNiArMzc3LDcgQEAg dmFsdWVfeF9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QgdmFs dWUgKmFyZzIsIGVudW0gZXhwX29wY29kZSBvcCwKICAgICBlcnJvciAoXygi Q2FuJ3QgZG8gdGhhdCBiaW5hcnkgb3Agb24gdGhhdCB0eXBlIikpOwkvKiBG SVhNRSBiZSBleHBsaWNpdCAqLwogCiAgIGFyZ3ZlYyA9IChzdHJ1Y3QgdmFs dWUgKiopIGFsbG9jYSAoc2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikgKiA0KTsK KyAgYXJndmVjWzBdID0gTlVMTDsKICAgYXJndmVjWzFdID0gdmFsdWVfYWRk ciAoYXJnMSk7CiAgIGFyZ3ZlY1syXSA9IGFyZzI7CiAgIGFyZ3ZlY1szXSA9 IDA7CkBAIC00NzEsOCArNDkwLDggQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0 IHZhbHVlICphcmcxLCBzdHJ1Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29w Y29kZSBvcCwKICAgICAgIGVycm9yIChfKCJJbnZhbGlkIGJpbmFyeSBvcGVy YXRpb24gc3BlY2lmaWVkLiIpKTsKICAgICB9CiAKLSAgYXJndmVjWzBdID0g dmFsdWVfdXNlcl9kZWZpbmVkX29wICgmYXJnMSwgYXJndmVjICsgMSwgdHN0 ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Rh dGljX21lbWZ1bmNwLCAyKTsKKyAgdmFsdWVfdXNlcl9kZWZpbmVkX29wICgm YXJnMSwgYXJndmVjICsgMSwgdHN0ciwgJnN0YXRpY19tZW1mdW5jcCwgMiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmVjWzBdLCAmZXh0X2Zu KTsKIAogICBpZiAoYXJndmVjWzBdKQogICAgIHsKQEAgLTQ5Miw2ICs1MTEs MjkgQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1 Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29wY29kZSBvcCwKICAgICAgIHJl dHVybiBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGFyZ3ZlY1swXSwgMiAtIHN0 YXRpY19tZW1mdW5jcCwKIAkJCQkgICAgYXJndmVjICsgMSk7CiAgICAgfQor ICBpZiAoZXh0X2ZuKQorICAgIHsKKyAgICAgIGlmIChleHRfZm5faXNfbWV0 aG9kIChleHRfZm4pKQorICAgICAgICB7CisgICAgICAgICAgc3RydWN0IHZh bHVlICpyZXRfdmFsID0gZXh0X2ZuX2ludm9rZV9tZXRob2QgKGV4dF9mbiwg YXJnMSwgJmFyZzIsIDEpOworCisgICAgICAgICAgaWYgKHJldF92YWwgPT0g TlVMTCkKKyAgICAgICAgICAgICAgZXJyb3IgKF8oIkVycm9yIGludm9raW5n IGRlYnVnIG1ldGhvZCBpbXBsZW1lbnRhdGlvbiBmb3IgIgorICAgICAgICAg ICAgICAgICAgICAgICAibWV0aG9kICVzIiksIHRzdHIpOworCisgICAgICAg ICAgeGZyZWUgKGV4dF9mbik7CisKKyAgICAgICAgICByZXR1cm4gcmV0X3Zh bDsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg ICAgLyogVGhpcyBlbHNlIHNob3VsZCBub3QgYmUgdGFrZW4gYXMgb25seSBk ZWJ1ZyBtZXRob2RzCisgICAgICAgICAgICAgYXJlIHN1cHBvcnRlZCBjdXJy ZW50bHkuICAqLworICAgICAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIklu dm9raW5nIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSAiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImZ1bmN0aW9uIChub3QgYSBtZXRob2QpLiIpKTsK KyAgICAgICAgfQorICAgIH0KICAgdGhyb3dfZXJyb3IgKE5PVF9GT1VORF9F UlJPUiwKICAgICAgICAgICAgICAgIF8oIm1lbWJlciBmdW5jdGlvbiAlcyBu b3QgZm91bmQiKSwgdHN0cik7CiAjaWZkZWYgbGludApAQCAtNTEwLDYgKzU1 Miw3IEBAIHZhbHVlX3hfdW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBlbnVt IGV4cF9vcGNvZGUgb3AsIGVudW0gbm9zaWRlIG5vc2lkZSkKIHsKICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh2YWx1ZV90 eXBlIChhcmcxKSk7CiAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsKKyAgc3Ry dWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm47CiAgIGNoYXIgKnB0cjsK ICAgY2hhciB0c3RyWzEzXSwgbWFuZ2xlX3RzdHJbMTNdOwogICBpbnQgc3Rh dGljX21lbWZ1bmNwLCBuYXJnczsKQEAgLTUyMyw2ICs1NjYsNyBAQCB2YWx1 ZV94X3Vub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2Rl IG9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCiAgICAgZXJyb3IgKF8oIkNhbid0 IGRvIHRoYXQgdW5hcnkgb3Agb24gdGhhdCB0eXBlIikpOwkvKiBGSVhNRSBi ZSBleHBsaWNpdCAqLwogCiAgIGFyZ3ZlYyA9IChzdHJ1Y3QgdmFsdWUgKiop IGFsbG9jYSAoc2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikgKiA0KTsKKyAgYXJn dmVjWzBdID0gTlVMTDsKICAgYXJndmVjWzFdID0gdmFsdWVfYWRkciAoYXJn MSk7CiAgIGFyZ3ZlY1syXSA9IDA7CiAKQEAgLTU3NCw4ICs2MTgsOCBAQCB2 YWx1ZV94X3Vub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bj b2RlIG9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCiAgICAgICBlcnJvciAoXygi SW52YWxpZCB1bmFyeSBvcGVyYXRpb24gc3BlY2lmaWVkLiIpKTsKICAgICB9 CiAKLSAgYXJndmVjWzBdID0gdmFsdWVfdXNlcl9kZWZpbmVkX29wICgmYXJn MSwgYXJndmVjICsgMSwgdHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmc3RhdGljX21lbWZ1bmNwLCBuYXJncyk7CisgIHZh bHVlX3VzZXJfZGVmaW5lZF9vcCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIs ICZzdGF0aWNfbWVtZnVuY3AsIG5hcmdzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICZhcmd2ZWNbMF0sICZleHRfZm4pOwogCiAgIGlmIChhcmd2ZWNb MF0pCiAgICAgewpAQCAtNTk0LDYgKzYzOCwyOSBAQCB2YWx1ZV94X3Vub3Ag KHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2RlIG9wLCBlbnVt IG5vc2lkZSBub3NpZGUpCiAJICByZXR1cm4gdmFsdWVfemVybyAocmV0dXJu X3R5cGUsIFZBTFVFX0xWQUwgKGFyZzEpKTsKIAl9CiAgICAgICByZXR1cm4g Y2FsbF9mdW5jdGlvbl9ieV9oYW5kIChhcmd2ZWNbMF0sIG5hcmdzLCBhcmd2 ZWMgKyAxKTsKKyAgICB9IAorICBpZiAoZXh0X2ZuKQorICAgIHsKKyAgICAg IGlmIChleHRfZm5faXNfbWV0aG9kIChleHRfZm4pKQorICAgICAgICB7Cisg ICAgICAgICAgc3RydWN0IHZhbHVlICpyZXRfdmFsID0gZXh0X2ZuX2ludm9r ZV9tZXRob2QgKGV4dF9mbiwgYXJnMSwgTlVMTCwgMCk7CisKKyAgICAgICAg ICBpZiAocmV0X3ZhbCA9PSBOVUxMKQorICAgICAgICAgICAgICBlcnJvciAo XygiRXJyb3IgaW52b2tpbmcgZGVidWcgbWV0aG9kIGltcGxlbWVudGF0aW9u IGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgJXMiKSwg dHN0cik7CisKKyAgICAgICAgICB4ZnJlZSAoZXh0X2ZuKTsKKworICAgICAg ICAgIHJldHVybiByZXRfdmFsOworICAgICAgICB9CisgICAgICBlbHNlCisg ICAgICAgIHsKKyAgICAgICAgICAvKiBUaGlzIGVsc2Ugc2hvdWxkIG5vdCBi ZSB0YWtlbiBhcyBvbmx5IGRlYnVnIG1ldGhvZHMKKyAgICAgICAgICAgICBh cmUgc3VwcG9ydGVkIGN1cnJlbnRseS4gICovCisgICAgICAgICAgaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgXygiSW52b2tpbmcgYW4gZXh0ZW5zaW9uIGxhbmd1YWdl ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gKG5v dCBhIG1ldGhvZCkuIikpOworICAgICAgICB9CiAgICAgfQogICB0aHJvd19l cnJvciAoTk9UX0ZPVU5EX0VSUk9SLAogICAgICAgICAgICAgICAgXygibWVt YmVyIGZ1bmN0aW9uICVzIG5vdCBmb3VuZCIpLCB0c3RyKTsKZGlmZiAtLWdp dCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwppbmRleCA0ZmM1N2Vj Li45ZGJmMzMzIDEwMDY0NAotLS0gYS9nZGIvdmFsb3BzLmMKKysrIGIvZ2Ri L3ZhbG9wcy5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAib2JqZmls ZXMuaCIKICNpbmNsdWRlICJzeW10YWIuaCIKICNpbmNsdWRlICJleGNlcHRp b25zLmgiCisjaW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCiAKIGV4dGVybiB1 bnNpZ25lZCBpbnQgb3ZlcmxvYWRfZGVidWc7CiAvKiBMb2NhbCBmdW5jdGlv bnMuICAqLwpAQCAtNzIsOCArNzMsOCBAQCBpbnQgZmluZF9vbG9hZF9jaGFt cF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHZhbHVlICoqLCBpbnQsCiAJCQkJ ICAgICBjb25zdCBpbnQgbm9fYWRsKTsKIAogc3RhdGljIGludCBmaW5kX29s b2FkX2NoYW1wIChzdHJ1Y3QgdmFsdWUgKiosIGludCwgaW50LCBpbnQsCi0J CQkgICAgIHN0cnVjdCBmbl9maWVsZCAqLCBzdHJ1Y3Qgc3ltYm9sICoqLAot CQkJICAgICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKiopOworCQkJICAgICBz dHJ1Y3QgZm5fZmllbGQgKiwgVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAq LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3ltYm9s ICoqLCBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKiopOwogCiBzdGF0aWMgaW50 IG9sb2FkX21ldGhvZF9zdGF0aWMgKGludCwgc3RydWN0IGZuX2ZpZWxkICos IGludCk7CiAKQEAgLTEwMCw5ICsxMDEsMTAgQEAgc3RhdGljIENPUkVfQURE UiBhbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50KTsKIAogc3RhdGlj IHN0cnVjdCB2YWx1ZSAqY2FzdF9pbnRvX2NvbXBsZXggKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB2YWx1ZSAqKTsKIAotc3RhdGljIHN0cnVjdCBmbl9maWVs ZCAqZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqLCBjb25zdCBj aGFyICosCi0JCQkJCSAgaW50LCBzdHJ1Y3QgdHlwZSAqLCBpbnQgKiwKLQkJ CQkJICBzdHJ1Y3QgdHlwZSAqKiwgaW50ICopOworc3RhdGljIHZvaWQgZmlu ZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqLCBjb25zdCBjaGFyICos CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIHN0cnVjdCB0 eXBlICosIHN0cnVjdCBmbl9maWVsZCAqKiwgaW50ICosCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3Ap ICoqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5 cGUgKiosIGludCAqKTsKIAogdm9pZCBfaW5pdGlhbGl6ZV92YWxvcHMgKHZv aWQpOwogCkBAIC0yMjYxLDQwICsyMjYzLDU4IEBAIHZhbHVlX3N0cnVjdF9l bHQgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms CiAgICAgICBtZXRob2QgaXMgZm91bmQuCiAgICBCT0ZGU0VUIGlzIHRoZSBv ZmZzZXQgb2YgdGhlIGJhc2Ugc3Vib2JqZWN0IHdoZXJlIHRoZSBtZXRob2Qg aXMgZm91bmQuICAqLwogCi1zdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoKK3N0 YXRpYyB2b2lkCiBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiph cmdwLCBjb25zdCBjaGFyICptZXRob2QsCi0JCSAgaW50IG9mZnNldCwgc3Ry dWN0IHR5cGUgKnR5cGUsIGludCAqbnVtX2ZucywKKwkJICBpbnQgb2Zmc2V0 LCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVj dCBmbl9maWVsZCAqKmZuX2xpc3QsIGludCAqbnVtX2ZucywKKyAgICAgICAg ICAgICAgICAgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKipleHRfZm5f dmVjLAogCQkgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNl dCkKIHsKICAgaW50IGk7Ci0gIHN0cnVjdCBmbl9maWVsZCAqZjsKLSAgQ0hF Q0tfVFlQRURFRiAodHlwZSk7CisgIHN0cnVjdCBmbl9maWVsZCAqZiA9IE5V TEw7CiAKLSAgKm51bV9mbnMgPSAwOworICBDSEVDS19UWVBFREVGICh0eXBl KTsKIAogICAvKiBGaXJzdCBjaGVjayBpbiBvYmplY3QgaXRzZWxmLiAgKi8K LSAgZm9yIChpID0gVFlQRV9ORk5fRklFTERTICh0eXBlKSAtIDE7IGkgPj0g MDsgaS0tKQotICAgIHsKLSAgICAgIC8qIHBhaTogRklYTUUgV2hhdCBhYm91 dCBvcGVyYXRvcnMgYW5kIHR5cGUgY29udmVyc2lvbnM/ICAqLwotICAgICAg Y29uc3QgY2hhciAqZm5fZmllbGRfbmFtZSA9IFRZUEVfRk5fRklFTERMSVNU X05BTUUgKHR5cGUsIGkpOwogCi0gICAgICBpZiAoZm5fZmllbGRfbmFtZSAm JiAoc3RyY21wX2l3IChmbl9maWVsZF9uYW1lLCBtZXRob2QpID09IDApKQot CXsKLQkgIGludCBsZW4gPSBUWVBFX0ZOX0ZJRUxETElTVF9MRU5HVEggKHR5 cGUsIGkpOwotCSAgc3RydWN0IGZuX2ZpZWxkICpmID0gVFlQRV9GTl9GSUVM RExJU1QxICh0eXBlLCBpKTsKKyAgaWYgKGZuX2xpc3QgJiYgISgqZm5fbGlz dCkpCisgICAgZm9yIChpID0gVFlQRV9ORk5fRklFTERTICh0eXBlKSAtIDE7 IGkgPj0gMDsgaS0tKQorICAgICAgeworICAgICAgICAvKiBwYWk6IEZJWE1F IFdoYXQgYWJvdXQgb3BlcmF0b3JzIGFuZCB0eXBlIGNvbnZlcnNpb25zPyAg Ki8KKyAgICAgICAgY29uc3QgY2hhciAqZm5fZmllbGRfbmFtZSA9IFRZUEVf Rk5fRklFTERMSVNUX05BTUUgKHR5cGUsIGkpOworICAKKyAgICAgICAgaWYg KGZuX2ZpZWxkX25hbWUgJiYgKHN0cmNtcF9pdyAoZm5fZmllbGRfbmFtZSwg bWV0aG9kKSA9PSAwKSkKKyAgCXsKKyAgCSAgaW50IGxlbiA9IFRZUEVfRk5f RklFTERMSVNUX0xFTkdUSCAodHlwZSwgaSk7CisgIAkgIGYgPSBUWVBFX0ZO X0ZJRUxETElTVDEgKHR5cGUsIGkpOworICAgICAgICAgICpmbl9saXN0ID0g ZjsKKyAgCisgIAkgICpudW1fZm5zID0gbGVuOworICAJICAqYmFzZXR5cGUg PSB0eXBlOworICAJICAqYm9mZnNldCA9IG9mZnNldDsKKyAgCisgIAkgIC8q IFJlc29sdmUgYW55IHN0dWIgbWV0aG9kcy4gICovCisgIAkgIGNoZWNrX3N0 dWJfbWV0aG9kX2dyb3VwICh0eXBlLCBpKTsKKyAgCisgICAgICAgICAgYnJl YWs7CisgIAl9CisgICAgICB9CiAKLQkgICpudW1fZm5zID0gbGVuOwotCSAg KmJhc2V0eXBlID0gdHlwZTsKLQkgICpib2Zmc2V0ID0gb2Zmc2V0OworICBp ZiAoZXh0X2ZuX3ZlYykKKyAgICB7CisgICAgICBWRUMgKGV4dF9mbl9kZXNj cmlwdG9yX3ApICplZl92ZWMgPSBOVUxMLCAqbmV3X3ZlYyA9IE5VTEw7CiAK LQkgIC8qIFJlc29sdmUgYW55IHN0dWIgbWV0aG9kcy4gICovCi0JICBjaGVj a19zdHViX21ldGhvZF9ncm91cCAodHlwZSwgaSk7CisgICAgICBlZl92ZWMg PSBnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHR5cGUsIG1ldGhvZCk7Cisg ICAgICBuZXdfdmVjID0gVkVDX21lcmdlIChleHRfZm5fZGVzY3JpcHRvcl9w LCAqZXh0X2ZuX3ZlYywgZWZfdmVjKTsKIAotCSAgcmV0dXJuIGY7Ci0JfQor ICAgICAgVkVDX2ZyZWUgKGV4dF9mbl9kZXNjcmlwdG9yX3AsICpleHRfZm5f dmVjKTsKKyAgICAgIFZFQ19mcmVlIChleHRfZm5fZGVzY3JpcHRvcl9wLCBl Zl92ZWMpOworICAgICAgKmV4dF9mbl92ZWMgPSBuZXdfdmVjOwogICAgIH0K IAotICAvKiBOb3QgZm91bmQgaW4gb2JqZWN0LCBjaGVjayBpbiBiYXNlIHN1 Ym9iamVjdHMuICAqLworICAvKiBJZiBzb3VyY2UgbWV0aG9kcyBhcmUgbm90 IGZvdW5kIGluIGN1cnJlbnQgY2xhc3MsIGxvb2sgZm9yIHRoZW0gaW4gdGhl CisgICAgIGJhc2UgY2xhc3Nlcy4gIFdlIGhhdmUgdG8gZ28gdGhyb3VnaCB0 aGUgYmFzZSBjbGFzc2VzIHRvIGdhdGhlciBleHRlbnNpb24KKyAgICAgbWV0 aG9kcyBhbnl3YXkuICAqLwogICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNT RVMgKHR5cGUpIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgewogICAgICAgaW50 IGJhc2Vfb2Zmc2V0OwpAQCAtMjMxMSwxMyArMjMzMSwxMSBAQCBmaW5kX21l dGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICpt ZXRob2QsCiAJewogCSAgYmFzZV9vZmZzZXQgPSBUWVBFX0JBU0VDTEFTU19C SVRQT1MgKHR5cGUsIGkpIC8gODsKIAl9Ci0gICAgICBmID0gZmluZF9tZXRo b2RfbGlzdCAoYXJncCwgbWV0aG9kLCBiYXNlX29mZnNldCArIG9mZnNldCwK LQkJCSAgICBUWVBFX0JBU0VDTEFTUyAodHlwZSwgaSksIG51bV9mbnMsIAot CQkJICAgIGJhc2V0eXBlLCBib2Zmc2V0KTsKLSAgICAgIGlmIChmKQotCXJl dHVybiBmOworICAgICAgCisgICAgICBmaW5kX21ldGhvZF9saXN0IChhcmdw LCBtZXRob2QsIGJhc2Vfb2Zmc2V0ICsgb2Zmc2V0LAorICAgICAgICAgICAg ICAgICAgICAgICAgVFlQRV9CQVNFQ0xBU1MgKHR5cGUsIGkpLCBmbl9saXN0 LCBudW1fZm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2ZuX3Zl YywgYmFzZXR5cGUsIGJvZmZzZXQpOwogICAgIH0KLSAgcmV0dXJuIE5VTEw7 CiB9CiAKIC8qIFJldHVybiB0aGUgbGlzdCBvZiBvdmVybG9hZGVkIG1ldGhv ZHMgb2YgYSBzcGVjaWZpZWQgbmFtZS4KQEAgLTIzMzAsOSArMjM0OCwxMSBA QCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25z dCBjaGFyICptZXRob2QsCiAgICAgICBtZXRob2QuCiAgICBCT0ZGU0VUIGlz IHRoZSBvZmZzZXQgb2YgdGhlIGJhc2Ugc3Vib2JqZWN0IHdoaWNoIGRlZmlu ZXMgdGhlIG1ldGhvZC4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQg Kgorc3RhdGljIHZvaWQKIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3Qg KHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKLQkJ CSAgICAgIGludCBvZmZzZXQsIGludCAqbnVtX2ZucywgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZm5fZmll bGQgKipmbl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpudW1fZm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAqKmV4dF9mbl92ZWMsCiAJCQkg ICAgICBzdHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBpbnQgKmJvZmZzZXQpCiB7 CiAgIHN0cnVjdCB0eXBlICp0OwpAQCAtMjM1NCw4ICsyMzc0LDMyIEBAIHZh bHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFy Z3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKICAgICBlcnJvciAoXygiQXR0ZW1w dCB0byBleHRyYWN0IGEgY29tcG9uZW50IG9mIGEgIgogCSAgICAgInZhbHVl IHRoYXQgaXMgbm90IGEgc3RydWN0IG9yIHVuaW9uIikpOwogCi0gIHJldHVy biBmaW5kX21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIDAsIHQsIG51bV9m bnMsIAotCQkJICAgYmFzZXR5cGUsIGJvZmZzZXQpOworICAvKiBDbGVhciB0 aGUgbGlzdHMuICAqLworICBpZiAoZm5fbGlzdCkKKyAgICB7CisgICAgICAq Zm5fbGlzdCA9IE5VTEw7CisgICAgICAqbnVtX2ZucyA9IDA7CisgICAgfQor ICBpZiAoZXh0X2ZuX3ZlYykKKyAgICAqZXh0X2ZuX3ZlYyA9IFZFQ19hbGxv YyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCwgMSk7CisKKyAgZmluZF9tZXRob2Rf bGlzdCAoYXJncCwgbWV0aG9kLCAwLCB0LCBmbl9saXN0LCBudW1fZm5zLCBl eHRfZm5fdmVjLAorICAgICAgICAgICAgICAgICAgICBiYXNldHlwZSwgYm9m ZnNldCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCit2YWx1ZV9oYXNf aW5kaXJlY3RfZHluYW1pY190eXBlIChzdHJ1Y3QgdmFsdWUgKm9iaikKK3sK KyAgc3RydWN0IHR5cGUgKnN0eXBlLCAqZHR5cGUsICpkdHlwZV9pbmQ7CisK KyAgc3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh2 YWx1ZV90eXBlIChvYmopKSk7CisgIGR0eXBlX2luZCA9IHZhbHVlX3J0dGlf aW5kaXJlY3RfdHlwZSAob2JqLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgZHR5 cGUgPSBkdHlwZV9pbmQgPyBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFIChkdHlwZV9pbmQpKSA6IHN0eXBlOworCisgIGlmIChjbGFzc190eXBl c19zYW1lX3AgKHN0eXBlLCBkdHlwZSkpCisgICAgcmV0dXJuIE5VTEw7Cisg IGVsc2UKKyAgICByZXR1cm4gZHR5cGVfaW5kOwogfQogCiAvKiBHaXZlbiBh biBhcnJheSBvZiBhcmd1bWVudHMgKEFSR1MpICh3aGljaCBpbmNsdWRlcyBh bgpAQCAtMjQwMyw2ICsyNDQ3LDcgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAo c3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogCQkgICAgIGNvbnN0 IGNoYXIgKm5hbWUsIGVudW0gb2xvYWRfc2VhcmNoX3R5cGUgbWV0aG9kLAog CQkgICAgIHN0cnVjdCB2YWx1ZSAqKm9ianAsIHN0cnVjdCBzeW1ib2wgKmZz eW0sCiAJCSAgICAgc3RydWN0IHZhbHVlICoqdmFscCwgc3RydWN0IHN5bWJv bCAqKnN5bXAsIAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICoqZXh0X2ZuLAogCQkgICAgIGludCAqc3RhdGljcCwg Y29uc3QgaW50IG5vX2FkbCkKIHsKICAgc3RydWN0IHZhbHVlICpvYmogPSAo b2JqcCA/ICpvYmpwIDogTlVMTCk7CkBAIC0yNDEwLDE2ICsyNDU1LDI0IEBA IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGlu dCBuYXJncywKICAgLyogSW5kZXggb2YgYmVzdCBvdmVybG9hZGVkIGZ1bmN0 aW9uLiAgKi8KICAgaW50IGZ1bmNfb2xvYWRfY2hhbXAgPSAtMTsKICAgaW50 IG1ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOworICBpbnQgc3JjX21ldGhvZF9v bG9hZF9jaGFtcCA9IC0xOworICBpbnQgc3JjX21ldGhvZF9vbG9hZF9jaGFt cF9ia3AgPSAtMTsKKyAgaW50IGV4dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAt MTsKKyAgaW50IHNyY19hbmRfZXh0X2VxdWFsID0gMDsKIAogICAvKiBUaGUg bWVhc3VyZSBmb3IgdGhlIGN1cnJlbnQgYmVzdCBtYXRjaC4gICovCiAgIHN0 cnVjdCBiYWRuZXNzX3ZlY3RvciAqbWV0aG9kX2JhZG5lc3MgPSBOVUxMOwog ICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKmZ1bmNfYmFkbmVzcyA9IE5VTEw7 CisgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqZXh0X21ldGhvZF9iYWRuZXNz ID0gTlVMTDsKKyAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICpzcmNfbWV0aG9k X2JhZG5lc3MgPSBOVUxMOwogCiAgIHN0cnVjdCB2YWx1ZSAqdGVtcCA9IG9i ajsKICAgLyogRm9yIG1ldGhvZHMsIHRoZSBsaXN0IG9mIG92ZXJsb2FkZWQg bWV0aG9kcy4gICovCiAgIHN0cnVjdCBmbl9maWVsZCAqZm5zX3B0ciA9IE5V TEw7CiAgIC8qIEZvciBub24tbWV0aG9kcywgdGhlIGxpc3Qgb2Ygb3Zlcmxv YWRlZCBmdW5jdGlvbiBzeW1ib2xzLiAgKi8KICAgc3RydWN0IHN5bWJvbCAq Km9sb2FkX3N5bXMgPSBOVUxMOworICAvKiBGb3IgZXh0ZW5zaW9uIGZ1bmN0 aW9ucywgdGhlIFZFQyBvZiBleHRlbnNpb24gZnVuY3Rpb24gZGVzY3JpcHRv cnMuICAqLworICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICpleHRfZm5f dmVjID0gTlVMTDsKICAgLyogTnVtYmVyIG9mIG92ZXJsb2FkZWQgaW5zdGFu Y2VzIGJlaW5nIGNvbnNpZGVyZWQuICAqLwogICBpbnQgbnVtX2ZucyA9IDA7 CiAgIHN0cnVjdCB0eXBlICpiYXNldHlwZSA9IE5VTEw7CkBAIC0yNDMxLDYg KzI0ODQsOCBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUg KiphcmdzLCBpbnQgbmFyZ3MsCiAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSA9 IE5VTEw7CiAgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24gbWF0Y2hfcXVh bGl0eTsKICAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBtZXRob2RfbWF0 Y2hfcXVhbGl0eSA9IElOQ09NUEFUSUJMRTsKKyAgZW51bSBvbG9hZF9jbGFz c2lmaWNhdGlvbiBzcmNfbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBJTkNPTVBB VElCTEU7CisgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24gZXh0X21ldGhv ZF9tYXRjaF9xdWFsaXR5ID0gSU5DT01QQVRJQkxFOwogICBlbnVtIG9sb2Fk X2NsYXNzaWZpY2F0aW9uIGZ1bmNfbWF0Y2hfcXVhbGl0eSA9IElOQ09NUEFU SUJMRTsKIAogICAvKiBHZXQgdGhlIGxpc3Qgb2Ygb3ZlcmxvYWRlZCBtZXRo b2RzIG9yIGZ1bmN0aW9ucy4gICovCkBAIC0yNDU5LDEyICsyNTE0LDEyIEBA IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGlu dCBuYXJncywKIAl9CiAKICAgICAgIC8qIFJldHJpZXZlIHRoZSBsaXN0IG9m IG1ldGhvZHMgd2l0aCB0aGUgbmFtZSBOQU1FLiAgKi8KLSAgICAgIGZuc19w dHIgPSB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0ICgmdGVtcCwgbmFt ZSwgCi0JCQkJCSAgICAgIDAsICZudW1fZm5zLCAKLQkJCQkJICAgICAgJmJh c2V0eXBlLCAmYm9mZnNldCk7CisgICAgICB2YWx1ZV9maW5kX29sb2FkX21l dGhvZF9saXN0ICgmdGVtcCwgbmFtZSwgMCwgJmZuc19wdHIsICZudW1fZm5z LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2Zu ID8gJmV4dF9mbl92ZWMgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmJhc2V0eXBlLCAmYm9mZnNldCk7CiAgICAgICAv KiBJZiB0aGlzIGlzIGEgbWV0aG9kIG9ubHkgc2VhcmNoLCBhbmQgbm8gbWV0 aG9kcyB3ZXJlIGZvdW5kCiAgICAgICAgICB0aGUgc2VhcmNoIGhhcyBmYWls ZC4gICovCi0gICAgICBpZiAobWV0aG9kID09IE1FVEhPRCAmJiAoIWZuc19w dHIgfHwgIW51bV9mbnMpKQorICAgICAgaWYgKG1ldGhvZCA9PSBNRVRIT0Qg JiYgKCFmbnNfcHRyIHx8ICFudW1fZm5zKSAmJiAhZXh0X2ZuX3ZlYykKIAll cnJvciAoXygiQ291bGRuJ3QgZmluZCBtZXRob2QgJXMlcyVzIiksCiAJICAg ICAgIG9ial90eXBlX25hbWUsCiAJICAgICAgIChvYmpfdHlwZV9uYW1lICYm ICpvYmpfdHlwZV9uYW1lKSA/ICI6OiIgOiAiIiwKQEAgLTI0NzUsMTggKzI1 MzAsODIgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoq YXJncywgaW50IG5hcmdzLAogICAgICAgaWYgKGZuc19wdHIpCiAJewogCSAg Z2RiX2Fzc2VydCAoVFlQRV9ET01BSU5fVFlQRSAoZm5zX3B0clswXS50eXBl KSAhPSBOVUxMKTsKLQkgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IGZpbmRfb2xv YWRfY2hhbXAgKGFyZ3MsIG5hcmdzLCBtZXRob2QsCi0JICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fZm5zLCBmbnNfcHRy LAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2xvYWRfc3ltcywgJm1ldGhvZF9iYWRuZXNzKTsKLQotCSAgbWV0aG9kX21h dGNoX3F1YWxpdHkgPQotCSAgICAgIGNsYXNzaWZ5X29sb2FkX21hdGNoICht ZXRob2RfYmFkbmVzcywgbmFyZ3MsCi0JICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwK LQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWV0aG9kX29sb2FkX2NoYW1wKSk7Ci0KLQkgIG1ha2VfY2xlYW51 cCAoeGZyZWUsIG1ldGhvZF9iYWRuZXNzKTsKKwkgIHNyY19tZXRob2Rfb2xv YWRfY2hhbXAgPSBmaW5kX29sb2FkX2NoYW1wIChhcmdzLCBuYXJncywgbWV0 aG9kLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG51bV9mbnMsIGZuc19wdHIsIE5VTEwsCisJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xvYWRfc3ltcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNyY19tZXRob2RfYmFkbmVzcyk7CisKKwkgIHNyY19tZXRo b2RfbWF0Y2hfcXVhbGl0eSA9CisJICAgICAgY2xhc3NpZnlfb2xvYWRfbWF0 Y2ggKAorICAgICAgICAgICAgICAgICAgc3JjX21ldGhvZF9iYWRuZXNzLCBu YXJncywKKwkgICAgICAgICAgb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9k LCBmbnNfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3JjX21ldGhvZF9vbG9hZF9jaGFtcCkpOworCisJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBzcmNfbWV0aG9kX2JhZG5lc3MpOwogCX0KIAorICAg ICAgaWYgKGV4dF9mbiAmJiBWRUNfbGVuZ3RoIChleHRfZm5fZGVzY3JpcHRv cl9wLCBleHRfZm5fdmVjKSkKKyAgICAgICAgeworICAgICAgICAgIGV4dF9t ZXRob2Rfb2xvYWRfY2hhbXAgPSBmaW5kX29sb2FkX2NoYW1wIChhcmdzLCBu YXJncywgbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBleHRfZm5fdmVjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLCAmZXh0X21ldGhvZF9iYWRuZXNzKTsKKyAgICAgICAg ICBleHRfbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBjbGFzc2lmeV9vbG9hZF9t YXRjaCAoZXh0X21ldGhvZF9iYWRuZXNzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXJn cywgMCk7CisgICAgICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZXh0X21l dGhvZF9iYWRuZXNzKTsKKyAgICAgICAgICBtYWtlX2V4dF9mbl92ZWNfY2xl YW51cCAoZXh0X2ZuX3ZlYyk7CisgICAgICAgIH0KKworICAgICAgaWYgKHNy Y19tZXRob2Rfb2xvYWRfY2hhbXAgPj0gMCAmJiBleHRfbWV0aG9kX29sb2Fk X2NoYW1wID49IDApCisgICAgICAgIHsKKyAgICAgICAgICBzd2l0Y2ggKGNv bXBhcmVfYmFkbmVzcyAoZXh0X21ldGhvZF9iYWRuZXNzLCBzcmNfbWV0aG9k X2JhZG5lc3MpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNl IDA6IC8qIFNyYyBtZXRob2QgYW5kIGV4dCBtZXRob2QgYXJlIGVxdWFsbHkg Z29vZC4gICovCisgICAgICAgICAgICAgICAgc3JjX2FuZF9leHRfZXF1YWwg PSAxOworICAgICAgICAgICAgICBjYXNlIDE6IC8qIFNyYyBtZXRob2QgYW5k IGV4dCBtZXRob2QgYXJlIGluY29tcGF0aWJsZSAgKi8KKyAgICAgICAgICAg ICAgICAvKiBpZiBleHQgbWV0aG9kIG1hdGNoIGlzIG5vdCBzdGFuZGFyZCwg dGhlbiBsZXQgc291cmNlIG1ldGhvZAorICAgICAgICAgICAgICAgICAgIHdp bi4gICovCisgICAgICAgICAgICAgICAgaWYgKGV4dF9tZXRob2RfbWF0Y2hf cXVhbGl0eSAhPSBTVEFOREFSRCkKKyAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgbWV0aG9kX29sb2FkX2NoYW1wID0gc3JjX21l dGhvZF9vbG9hZF9jaGFtcDsKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9k X2JhZG5lc3MgPSBzcmNfbWV0aG9kX2JhZG5lc3M7CisgICAgICAgICAgICAg ICAgICAgIGV4dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAg ICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBzcmNfbWV0aG9k X21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBjYXNlIDI6IC8q IEV4dCBtZXRob2QgaXMgY2hhbXBpb24uICAqLworICAgICAgICAgICAgICAg IG1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4dF9tZXRob2Rfb2xvYWRfY2hhbXA7 CisgICAgICAgICAgICAgICAgbWV0aG9kX2JhZG5lc3MgPSBleHRfbWV0aG9k X2JhZG5lc3M7CisgICAgICAgICAgICAgICAgc3JjX21ldGhvZF9vbG9hZF9j aGFtcF9ia3AgPSBzcmNfbWV0aG9kX29sb2FkX2NoYW1wOworICAgICAgICAg ICAgICAgIHNyY19tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAg ICAgICAgICBtZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGV4dF9tZXRob2RfbWF0 Y2hfcXVhbGl0eTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgY2FzZSAzOiAvKiBTcmMgbWV0aG9kIGlzIGNoYW1waW9uLiAgKi8K KyAgICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBzcmNfbWV0 aG9kX29sb2FkX2NoYW1wOworICAgICAgICAgICAgICAgIG1ldGhvZF9iYWRu ZXNzID0gc3JjX21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICAgIGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAgICAgICAgICBt ZXRob2RfbWF0Y2hfcXVhbGl0eSA9IHNyY19tZXRob2RfbWF0Y2hfcXVhbGl0 eTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICAgICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJy b3I6IHVuZXhwZWN0ZWQgb3ZlcmxvYWQgY29tcGFyaXNvbiAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgInJlc3VsdCIpKTsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgZWxz ZQorICAgICAgICB7CisgICAgICAgICAgaWYgKHNyY19tZXRob2Rfb2xvYWRf Y2hhbXAgPj0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbWV0 aG9kX29sb2FkX2NoYW1wID0gc3JjX21ldGhvZF9vbG9hZF9jaGFtcDsKKyAg ICAgICAgICAgICAgbWV0aG9kX2JhZG5lc3MgPSBzcmNfbWV0aG9kX2JhZG5l c3M7CisgICAgICAgICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gc3Jj X21ldGhvZF9tYXRjaF9xdWFsaXR5OworICAgICAgICAgICAgfQorICAgICAg ICAgIGlmIChleHRfbWV0aG9kX29sb2FkX2NoYW1wID49IDApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXA7CisgICAgICAgICAgICAgIG1ldGhvZF9i YWRuZXNzID0gZXh0X21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICBt ZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0 eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICBpZiAo bWV0aG9kID09IE5PTl9NRVRIT0QgfHwgbWV0aG9kID09IEJPVEgpCkBAIC0y NjI5LDIxICsyNzQ4LDYgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0 IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogCQkgZnVuY19uYW1lKTsKICAg ICB9CiAKLSAgaWYgKHN0YXRpY3AgIT0gTlVMTCkKLSAgICAqc3RhdGljcCA9 IG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwgbWV0aG9k X29sb2FkX2NoYW1wKTsKLQotICBpZiAobWV0aG9kX29sb2FkX2NoYW1wID49 IDApCi0gICAgewotICAgICAgaWYgKFRZUEVfRk5fRklFTERfVklSVFVBTF9Q IChmbnNfcHRyLCBtZXRob2Rfb2xvYWRfY2hhbXApKQotCSp2YWxwID0gdmFs dWVfdmlydHVhbF9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIsIG1ldGhvZF9v bG9hZF9jaGFtcCwKLQkJCQkJYmFzZXR5cGUsIGJvZmZzZXQpOwotICAgICAg ZWxzZQotCSp2YWxwID0gdmFsdWVfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXAsCi0JCQkJYmFzZXR5cGUsIGJvZmZzZXQp OwotICAgIH0KLSAgZWxzZQotICAgICpzeW1wID0gb2xvYWRfc3ltc1tmdW5j X29sb2FkX2NoYW1wXTsKLQogICBpZiAob2JqcCkKICAgICB7CiAgICAgICBz dHJ1Y3QgdHlwZSAqdGVtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAodGVtcCkpOwpAQCAtMjY1MywxMSArMjc1Nyw2NiBAQCBmaW5kX292 ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3Ms CiAJICAmJiAoVFlQRV9DT0RFIChvYmp0eXBlKSA9PSBUWVBFX0NPREVfUFRS CiAJICAgICAgfHwgVFlQRV9DT0RFIChvYmp0eXBlKSA9PSBUWVBFX0NPREVf UkVGKSkKIAl7Ci0JICB0ZW1wID0gdmFsdWVfYWRkciAodGVtcCk7CisJICAq b2JqcCA9IHZhbHVlX2FkZHIgKHRlbXApOwogCX0KLSAgICAgICpvYmpwID0g dGVtcDsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9ianAgPSB0ZW1wOwogICAg IH0KIAorICBpZiAoc3RhdGljcCAhPSBOVUxMKQorICAgICpzdGF0aWNwID0g b2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNfcHRyLCBtZXRob2Rf b2xvYWRfY2hhbXApOworCisgIGlmIChtZXRob2Rfb2xvYWRfY2hhbXAgPj0g MCkKKyAgICB7CisgICAgICBpZiAoc3JjX21ldGhvZF9vbG9hZF9jaGFtcCA+ PSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKFRZUEVfRk5fRklFTERf VklSVFVBTF9QIChmbnNfcHRyLCBtZXRob2Rfb2xvYWRfY2hhbXApKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqZHR5cGU7 CisgICAgICAKKyAgICAgICAgICAgICAgZHR5cGUgPSB2YWx1ZV9oYXNfaW5k aXJlY3RfZHluYW1pY190eXBlIChhcmdzWzBdKTsKKyAgICAgICAgICAgICAg aWYgKGR0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIGFyZ3NbMF0gPSB2YWx1ZV9jYXN0IChkdHlwZSwgYXJnc1swXSk7Cisg ICAgICAgICAgICAgICAgICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBzKTsK KyAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX292ZXJsb2FkX21hdGNo IChhcmdzLCBuYXJncywgbmFtZSwgbWV0aG9kLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ianAsIGZzeW0sIHZh bHAsIHN5bXAsIGV4dF9mbiwKKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGljcCwgbm9fYWRsKTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAqdmFscCA9IHZh bHVlX3ZpcnR1YWxfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0 aG9kX29sb2FkX2NoYW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmFzZXR5cGUsIGJvZmZzZXQpOworICAg ICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICp2YWxw ID0gdmFsdWVfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRyLCBtZXRob2Rfb2xv YWRfY2hhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiYXNldHlwZSwgYm9mZnNldCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UK KyAgICAgICAgeworICAgICAgICAgIGlmIChzcmNfYW5kX2V4dF9lcXVhbCAK KyAgICAgICAgICAgICAgJiYgVFlQRV9GTl9GSUVMRF9WSVJUVUFMX1AgKGZu c19wdHIsIHNyY19tZXRob2Rfb2xvYWRfY2hhbXBfYmtwKSkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKmR0eXBlOworICAg ICAgCisgICAgICAgICAgICAgIGR0eXBlID0gdmFsdWVfaGFzX2luZGlyZWN0 X2R5bmFtaWNfdHlwZSAoYXJnc1swXSk7CisgICAgICAgICAgICAgIGlmIChk dHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBh cmdzWzBdID0gdmFsdWVfY2FzdCAoZHR5cGUsIGFyZ3NbMF0pOworICAgICAg ICAgICAgICAgICAgZG9fY2xlYW51cHMgKGFsbF9jbGVhbnVwcyk7CisgICAg ICAgICAgICAgICAgICByZXR1cm4gZmluZF9vdmVybG9hZF9tYXRjaCAoYXJn cywgbmFyZ3MsIG5hbWUsIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpwLCBmc3ltLCB2YWxwLCBz eW1wLCBleHRfZm4sCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRpY3AsIG5vX2FkbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorCisgICAgICAgICAgKmV4dF9mbiA9IGV4dF9mbl9jbG9uZSAo VkVDX2luZGV4IChleHRfZm5fZGVzY3JpcHRvcl9wLCBleHRfZm5fdmVjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXh0X21ldGhvZF9vbG9hZF9jaGFtcCkpOworICAgICAgICB9CisgICAgfQor ICBlbHNlCisgICAgKnN5bXAgPSBvbG9hZF9zeW1zW2Z1bmNfb2xvYWRfY2hh bXBdOworCiAgIGRvX2NsZWFudXBzIChhbGxfY2xlYW51cHMpOwogCiAgIHN3 aXRjaCAobWF0Y2hfcXVhbGl0eSkKQEAgLTI3OTEsNyArMjk1MCw3IEBAIGZp bmRfb2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0cnVjdCB2YWx1ZSAq KmFyZ3MsIGludCBuYXJncywKICAgICArK251bV9mbnM7CiAKICAgbmV3X29s b2FkX2NoYW1wID0gZmluZF9vbG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsIDAs IG51bV9mbnMsCi0JCQkJICAgICAgTlVMTCwgbmV3X29sb2FkX3N5bXMsCisJ CQkJICAgICAgTlVMTCwgTlVMTCwgbmV3X29sb2FkX3N5bXMsCiAJCQkJICAg ICAgJm5ld19vbG9hZF9jaGFtcF9idik7CiAKICAgLyogQ2FzZSAxOiBXZSBm b3VuZCBhIGdvb2QgbWF0Y2guICBGcmVlIGVhcmxpZXIgbWF0Y2hlcyAoaWYg YW55KSwKQEAgLTI4MzksMTAgKzI5OTgsMTIgQEAgZmluZF9vbG9hZF9jaGFt cF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5h cmdzLAogc3RhdGljIGludAogZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0IHZh bHVlICoqYXJncywgaW50IG5hcmdzLCBpbnQgbWV0aG9kLAogCQkgIGludCBu dW1fZm5zLCBzdHJ1Y3QgZm5fZmllbGQgKmZuc19wdHIsCisgICAgICAgICAg ICAgICAgICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICpleHRfZm5fdmVj LAogCQkgIHN0cnVjdCBzeW1ib2wgKipvbG9hZF9zeW1zLAogCQkgIHN0cnVj dCBiYWRuZXNzX3ZlY3RvciAqKm9sb2FkX2NoYW1wX2J2KQogewogICBpbnQg aXg7CisgIGludCBleHRfZm5fdmVjX24gPSAwOwogICAvKiBBIG1lYXN1cmUg b2YgaG93IGdvb2QgYW4gb3ZlcmxvYWRlZCBpbnN0YW5jZSBpcy4gICovCiAg IHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqYnY7CiAgIC8qIEluZGV4IG9mIGJl c3Qgb3ZlcmxvYWRlZCBmdW5jdGlvbi4gICovCkBAIC0yODUyLDE4ICszMDEz LDI3IEBAIGZpbmRfb2xvYWRfY2hhbXAgKHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms IGludCBuYXJncywgaW50IG1ldGhvZCwKICAgLyogMCA9PiBubyBhbWJpZ3Vp dHksIDEgPT4gdHdvIGdvb2QgZnVuY3MsIDIgPT4gaW5jb21wYXJhYmxlIGZ1 bmNzLiAgKi8KIAogICAqb2xvYWRfY2hhbXBfYnYgPSBOVUxMOworICBleHRf Zm5fdmVjX24gPSBleHRfZm5fdmVjID8gVkVDX2xlbmd0aCAoZXh0X2ZuX2Rl c2NyaXB0b3JfcCwgZXh0X2ZuX3ZlYykgOiAwOwogCiAgIC8qIENvbnNpZGVy IGVhY2ggY2FuZGlkYXRlIGluIHR1cm4uICAqLwotICBmb3IgKGl4ID0gMDsg aXggPCBudW1fZm5zOyBpeCsrKQorICBmb3IgKGl4ID0gMDsgKGl4IDwgbnVt X2ZucykgfHwgKGl4IDwgZXh0X2ZuX3ZlY19uKTsgaXgrKykKICAgICB7CiAg ICAgICBpbnQgamo7Ci0gICAgICBpbnQgc3RhdGljX29mZnNldCA9IG9sb2Fk X21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwgaXgpOworICAgICAg aW50IHN0YXRpY19vZmZzZXQgPSAwOwogICAgICAgaW50IG5wYXJtczsKICAg ICAgIHN0cnVjdCB0eXBlICoqcGFybV90eXBlczsKKyAgICAgIHN0cnVjdCBl eHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuID0gTlVMTDsKKworICAgICAgaWYg KGV4dF9mbl92ZWMpCisgICAgICAgIGV4dF9mbiA9IFZFQ19pbmRleCAoZXh0 X2ZuX2Rlc2NyaXB0b3JfcCwgZXh0X2ZuX3ZlYywgaXgpOwogCiAgICAgICBp ZiAobWV0aG9kKQogCXsKLQkgIG5wYXJtcyA9IFRZUEVfTkZJRUxEUyAoVFlQ RV9GTl9GSUVMRF9UWVBFIChmbnNfcHRyLCBpeCkpOworICAgICAgICAgIGlm IChmbnNfcHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzdGF0 aWNfb2Zmc2V0ID0gb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNf cHRyLCBpeCk7CisJICAgICAgbnBhcm1zID0gVFlQRV9ORklFTERTIChUWVBF X0ZOX0ZJRUxEX1RZUEUgKGZuc19wdHIsIGl4KSk7CisgICAgICAgICAgICB9 CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTI4NzIsMTMgKzMwNDIsMjAgQEAg ZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5h cmdzLCBpbnQgbWV0aG9kLAogCX0KIAogICAgICAgLyogUHJlcGFyZSBhcnJh eSBvZiBwYXJhbWV0ZXIgdHlwZXMuICAqLwotICAgICAgcGFybV90eXBlcyA9 IChzdHJ1Y3QgdHlwZSAqKikgCi0JeG1hbGxvYyAobnBhcm1zICogKHNpemVv ZiAoc3RydWN0IHR5cGUgKikpKTsKLSAgICAgIGZvciAoamogPSAwOyBqaiA8 IG5wYXJtczsgamorKykKLQlwYXJtX3R5cGVzW2pqXSA9IChtZXRob2QKLQkJ CSAgPyAoVFlQRV9GTl9GSUVMRF9BUkdTIChmbnNfcHRyLCBpeClbampdLnR5 cGUpCi0JCQkgIDogVFlQRV9GSUVMRF9UWVBFIChTWU1CT0xfVFlQRSAob2xv YWRfc3ltc1tpeF0pLCAKLQkJCQkJICAgICBqaikpOworICAgICAgaWYgKGZu c19wdHIgfHwgb2xvYWRfc3ltcykKKyAgICAgICAgeworICAgICAgICAgIHBh cm1fdHlwZXMgPSAoc3RydWN0IHR5cGUgKiopIAorICAgICAgICAgICAgeG1h bGxvYyAobnBhcm1zICogKHNpemVvZiAoc3RydWN0IHR5cGUgKikpKTsKKyAg ICAgICAgICBmb3IgKGpqID0gMDsgamogPCBucGFybXM7IGpqKyspCisgICAg ICAgICAgICBwYXJtX3R5cGVzW2pqXSA9IChtZXRob2QKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID8gKFRZUEVfRk5fRklFTERfQVJHUyAoZm5z X3B0ciwgaXgpW2pqXS50eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBUWVBFX0ZJRUxEX1RZUEUgKFNZTUJPTF9UWVBFIChvbG9hZF9z eW1zW2l4XSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamop KTsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg ICAgcGFybV90eXBlcyA9IGV4dF9mbl9nZXRfYXJndHlwZXMgKGV4dF9mbiwg Jm5wYXJtcyk7CisgICAgICAgIH0KIAogICAgICAgLyogQ29tcGFyZSBwYXJh bWV0ZXIgdHlwZXMgdG8gc3VwcGxpZWQgYXJndW1lbnQgdHlwZXMuICBTa2lw CiAgICAgICAgICBUSElTIGZvciBzdGF0aWMgbWV0aG9kcy4gICovCmRpZmYg LS1naXQgYS9nZGIvdmFsdWUuaCBiL2dkYi92YWx1ZS5oCmluZGV4IGRiOTY0 ZTMuLjMyMTYyNDkgMTAwNjQ0Ci0tLSBhL2dkYi92YWx1ZS5oCisrKyBiL2dk Yi92YWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBAIHN0cnVjdCB0eXBlOwogc3Ry dWN0IHVpX2ZpbGU7CiBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbjsKIHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zOworc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9y OwogCiAvKiBUaGUgc3RydWN0dXJlIHdoaWNoIGRlZmluZXMgdGhlIHR5cGUg b2YgYSB2YWx1ZS4gIEl0IHNob3VsZCBuZXZlcgogICAgYmUgcG9zc2libGUg Zm9yIGEgcHJvZ3JhbSBsdmFsIHZhbHVlIHRvIHN1cnZpdmUgb3ZlciBhIGNh bGwgdG8gdGhlCkBAIC02NzEsNiArNjcyLDcgQEAgZXh0ZXJuIGludCBmaW5k X292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFy Z3MsCiAJCQkJZW51bSBvbG9hZF9zZWFyY2hfdHlwZSBtZXRob2QsCiAJCQkJ c3RydWN0IHZhbHVlICoqb2JqcCwgc3RydWN0IHN5bWJvbCAqZnN5bSwKIAkJ CQlzdHJ1Y3QgdmFsdWUgKip2YWxwLCBzdHJ1Y3Qgc3ltYm9sICoqc3ltcCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICoqZXh0X2ZuLAogCQkJCWludCAqc3RhdGljcCwgY29u c3QgaW50IG5vX2FkbCk7CiAKIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBmaWVsZG5vKTsK --047d7b62492c63900e04ec0a5986--