From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 29CFD3858D28 for ; Fri, 3 Nov 2023 19:53:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 29CFD3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 29CFD3858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.137.252 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699041225; cv=none; b=ROlHMCJO8nBE2xySj/dER0UyxVzdSHb1o83eJzDuLh1y+7pZpGQm9FQHWKe8goF0iiPTUBGgN7bzLlNVr9fucvX99S63CE392HlxRxnuFxBxb8Sd/pwQGdLAuIVtUT4goP/DMwHSOjBSxceFKIsnTTwc1srNOnYvFSTiZpK/vnQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699041225; c=relaxed/simple; bh=5oDfef3rl2wV8s5NBBoeLuJ4/rcH0sHsOSO1FP1v7Uo=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=oPZ9Awtpi84DWhd7cZdDnxqsG26h1QoMoFBd72z9EJ1/gQytBYiWllESJEfib3cgSf5IV40rmcLEftAiy4Ez+7m6eRIlZpWeyIZQMui1OdyaaQZDCvkjcMZ3TR5Ot3xXPKP2n+A+GTmuWg8AwhGjdqcUY80Cx9myB3l781pnWRU= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: yvnilFV9QqCicTMF7SY2eg== X-CSE-MsgGUID: yzSI6r3HSEyQvqMh06757A== X-IronPort-AV: E=Sophos;i="6.03,275,1694764800"; d="scan'208,223";a="21786583" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 03 Nov 2023 11:53:37 -0800 IronPort-SDR: oTKgxSv9rv96OWPapW40nD3olJXsi7h7vIoMsVPxhuQQY8az9VOQBAy7oHtzMhXMCnovHxS30u p1HDOigrYS9tT8ZrRa0xek5lgLGy4m+ioYuGjuOvKbQN4TaKDW8fIrOf/GibaYd1Nl5ZmDifry UxvisnRQXkrBbQVARceQhoNnTkEgYoZobOI8j9KDWtgPrNJ65SNB0/qEHV9wp0X8L+pn1gVbJ7 ZocufExWVnPN1m6uaJ1BoZLpKFDa1HrZNWRZ+zX6YImVoy/z/YFzysvs5h0LOTVZCpwFbR+FK/ ZV0= Content-Type: multipart/mixed; boundary="------------mZR0kye3ufNcHSO4EeCUgrdF" Message-ID: <37f412ee-58e7-4bde-a763-591268e8f8f4@codesourcery.com> Date: Fri, 3 Nov 2023 19:53:28 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] openmp: Add support for the 'indirect' clause in C/C++ To: Tobias Burnus , gcc-patches CC: Jakub Jelinek References: Content-Language: en-GB From: Kwok Cheung Yeung In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------mZR0kye3ufNcHSO4EeCUgrdF Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit On 17/10/2023 2:12 pm, Tobias Burnus wrote: > C++11 (and C23) attribute do not seem to be properly handled: > > [[omp::decl (declare target,indirect(1))]] > int foo(void) { return 5; } > [[omp::decl (declare target indirect)]] > int bar(void) { return 8; } > [[omp::directive (begin declare target,indirect)]]; > int baz(void) { return 11; } > [[omp::directive (end declare target)]]; > > While I get for the last one ("baz"): > > __attribute__((omp declare target, omp declare target block, omp declare > target indirect)) > > the first two (foo and bar) do not have any attribute; if I remove the > "indirect", > I do get "__attribute__((omp declare target))". Hence, the omp::decl > support seems to > partially work. > If we replace the 'indirect' with 'device_type', we get a 'directive with only ‘device_type’ clause' error as the affected function has not been specified. I have updated the parser so that a similar message is emitted if only 'device_type' or 'indirect' clauses are supplied. > > > The following works - but there is not a testcase for either syntax: > > int bar(void) { return 8; } > [[omp::directive(declare target to(bar) , indirect(1))]]; > int baz(void) { return 11; } > [[omp::directive ( declare target indirect enter(baz))]]; > > int bar(void) { return 8; } > #pragma omp declare target to(bar) , indirect(1) > int baz(void) { return 11; } > #pragma omp declare target indirect enter(baz) > > (There is one for #pragma + 'to' in gomp/declare-target-indirect-2.c, > however.) > > Side remark: OpenMP 5.2 renamed 'to' to 'enter' (with deprecated alias > 'to); > hence, I also use 'enter' above. The current testcases for indiredt use > 'enter'. > (Not that it should make a difference as the to/enter do work.) > Added to g++.dg/gomp/declare-target-indirect-1.C. > The following seems to work fine, but I think we do not have > a testcase for it ('bar' has no indirect, foo and baz have it): > > #pragma omp begin declare target indirect(1) > int foo(void) { return 5; } > #pragma omp begin declare target indirect(0) > int bar(void) { return 8; } > int baz(void) { return 11; } > #pragma omp declare target indirect enter(baz) > #pragma omp end declare target > #pragma omp end declare target > Added to c-c++-common/gomp/declare-target-indirect-2.c. > Possibly affecting other logical flags as well, but I do notice that > gcc but not g++ accepts the following: > > #pragma omp begin declare target indirect("abs") > #pragma omp begin declare target indirect(5.5) > > g++ shows: error: expected constant integer expression > > OpenMP requires 'constant boolean' expr (OpenMP 5.1) or > 'expression of logical type','constant' (OpenMP 5.2), where for the > latter it has: > > "The OpenMP *logical type* supports logical variables and expressions in > any base language. > "[C / C++] Any OpenMP logical expression is a scalar expression. This > document uses true as > a generic term for a non-zero integer value and false as a generic term > for an integer value > of zero." > > I am not quite sure what to expect here; in terms of C++, conv.bool > surely permits > those for those pvalues "Boolean conversions".  For C, I don't find the > wording in the > standard but 'if("abc")' and 'if (5.5)' is accepted. I've changed the C++ parser to accept these 'unusual' logical values, and modified the wording of the error to require a 'logical' expression. > I notice that the {__builtin_,}GOMP_target_map_indirect_ptr call is > inserted > quite late, i.e. in omp-offload.cc.  A dump and also looking at the *.s > files > shows that the >   __builtin_GOMP_target_map_indirect_ptr / call > GOMP_target_map_indirect_ptr > do not only show up for the device but also for the host-fallback code. > > I think the latter is not required as a host pointer can be directly > executed > on the host - and device -> host pointer like in >   omp target device(ancestor:1) > do not need to be supported. > > Namely the current glossary (here git version but OpenMP 5.2 is very > similar); > note the "other than the host device": > > "indirect device invocation - An indirect call to the device version of a > procedure on a device other than the host device, through a function > pointer > (C/C++), a pointer to a member function (C++) or a procedure pointer > (Fortran) > that refers to the host version of the procedure. > > Can't we use  #ifdef ACCEL_COMPILER  to optimize the host fallback? > > That way, we can also avoid generating the splay-tree on the host > cf. LIBGOMP_OFFLOADED_ONLY. The GOMP_target_map_indirect_ptr call is now only generated by the accel compilers. FWIW, the splay-tree was not actually being built on the host-side, and the host implementation of GOMP_target_map_indirect_ptr just returned the pointer unchanged. It is now changed to __builtin_unreachable as the calls should no longer be generated in host code. > #pragma omp begin declare target indirect(1) device_type(host) > > is accepted but it violates: > > OpenMP 5.1: "Restrictions to the declare target directive are as follows:" > "If an indirect clause is present and invoked-by-fptr evaluates to true > then > the only permitted device_type clause is device_type(any)" [215:1-2] > > In OpenMP 5.2 that's in "7.8.3 indirect Clause" itself. > I have added a check for this in the parser which emits an error if this happens, and some tests in declare-target-indirect-1.c. > OpenMP permits pointers to member functions. Can you > also a test for those? I bet it simply works but we > should still test those. > > (For vtables, see also comment below.) > > class Foo { > public: >   int f(int x); > }; > > typedef int (Foo::*FooFptr)(int x); > ... > int my_call(Foo &foo) > { >   FooFptr fn_ptr = &Foo::f; > ... >   return std::invoke(fn_ptr, foo, 42); > } This works, and I have added an execution test in libgomp.c++/declare-target-indirect-1.C. >> --- a/gcc/omp-offload.cc +++ b/gcc/omp-offload.cc } + if >> (omp_redirect_indirect_calls + && gimple_call_fndecl (stmt) == >> NULL_TREE) + { + gcall *orig_call = dyn_cast (stmt); + tree >> call_fn = gimple_call_fn (stmt); + tree map_ptr_fn + = >> builtin_decl_explicit (BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR); > > This line is too long. Maybe use a 'enum built_in_function' temporary? Fixed. >> --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -304,7 +304,7 >> @@ The OpenMP 4.5 specification is fully supported. @item Iterators in >> @code{target update} motion clauses and @code{map} clauses @tab N @tab >> @item Indirect calls to the device version of a procedure or function >> in - @code{target} regions @tab N @tab + @code{target} regions @tab P >> @tab Only C and C++ > > I think we need a new entry to handle the virtual part. However, it looks > as if that's a new OpenMP 5.2 feature. Can you add an entry under > "Other new OpenMP 5.2 features2? > > At least I cannot find any existing entry and I only see in OpenMP 5.2: > > "Invoking a virtual member function of an object on a device other than > the device on which the object was constructed results in unspecified > behavior, unless the object is accessible and was constructed on the > host device." [OpenMP 5.2, 287:10-12] in "Restrictions to the target > construct". I have added a line in the OpenMP 5.2 section to state this. >> --- a/libgomp/target.c +++ b/libgomp/target.c @@ -2256,11 +2256,14 @@ >> gomp_load_image_to_device (struct gomp_device_descr *devicep, unsigned >> version, void **host_funcs_end = ((void ***) host_table)[1]; void >> **host_var_table = ((void ***) host_table)[2]; void **host_vars_end = >> ((void ***) host_table)[3]; + void **host_ind_func_table = ((void ***) >> host_table)[4]; + void **host_ind_funcs_end = ((void ***) host_table)[5]; > > This code assumes that all calls have now 6 arguments. But that's not > true for old > code. It seems as if you have to bump the version number and only access > those values > when the version number is sufficiently large. I have bumped up the GOMP_VERSION to 3, and reading the indirect functions section of the host table will be skipped if the GOMP_VERSION is not at least 3. Also, in the device plugins, the indirect function count will not be read from the image header if the GOMP_VERSION is too low. Okay for mainline, pending successful testing (still in progress)? Thanks Kwok > Thanks, > > Tobias > > > > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, > 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: > Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; > Registergericht München, HRB 106955 --------------mZR0kye3ufNcHSO4EeCUgrdF Content-Type: text/plain; charset="UTF-8"; name="0001-openmp-Add-support-for-the-indirect-clause-in-C-C.patch" Content-Disposition: attachment; filename="0001-openmp-Add-support-for-the-indirect-clause-in-C-C.patch" Content-Transfer-Encoding: base64 RnJvbSBhZGNkOTM4YjFkZWUxY2M1YTlkZjZlZmVlNDBkNDdhMmFhYjI1NGY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IEZyaSwgMyBOb3YgMjAyMyAxODowMzo1MCArMDAwMApTdWJqZWN0 OiBbUEFUQ0hdIG9wZW5tcDogQWRkIHN1cHBvcnQgZm9yIHRoZSAnaW5kaXJlY3QnIGNsYXVz ZSBpbiBDL0MrKwoKVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSAnaW5kaXJlY3QnIGNsYXVz ZSBpbiB0aGUgJ2RlY2xhcmUgdGFyZ2V0JwpkaXJlY3RpdmUuICBGdW5jdGlvbnMgZGVjbGFy ZWQgYXMgaW5kaXJlY3QgbWF5IGJlIGNhbGxlZCB2aWEgZnVuY3Rpb24KcG9pbnRlcnMgcGFz c2VkIGZyb20gdGhlIGhvc3QgaW4gb2ZmbG9hZGVkIGNvZGUuCgpWaXJ0dWFsIGNhbGxzIHRv IG1lbWJlciBmdW5jdGlvbnMgdmlhIHRoZSBvYmplY3QgcG9pbnRlciBpbiBDKysgYXJlCmN1 cnJlbnRseSBub3Qgc3VwcG9ydGVkIGluIHRhcmdldCByZWdpb25zLgoKMjAyMy0xMS0wMyAg S3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KCmdjYy9jLWZhbWls eS8KCSogYy1hdHRyaWJzLmNjIChjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgYXR0 cmlidXRlIGZvcgoJaW5kaXJlY3QgZnVuY3Rpb25zLgoJKiBjLXByYWdtYS5oIChlbnVtIHBh cm1hX29tcF9jbGF1c2UpOiBBZGQgZW50cnkgZm9yIGluZGlyZWN0IGNsYXVzZS4KCmdjYy9j LwoJKiBjLWRlY2wuY2MgKGNfZGVjbF9hdHRyaWJ1dGVzKTogQWRkIGF0dHJpYnV0ZSBmb3Ig aW5kaXJlY3QKCWZ1bmN0aW9ucy4KCSogYy1sYW5nLmggKGNfb21wX2RlY2xhcmVfdGFyZ2V0 X2F0dHIpOiBBZGQgaW5kaXJlY3QgZmllbGQuCgkqIGMtcGFyc2VyLmNjIChjX3BhcnNlcl9v bXBfY2xhdXNlX25hbWUpOiBIYW5kbGUgaW5kaXJlY3QgY2xhdXNlLgoJKGNfcGFyc2VyX29t cF9jbGF1c2VfaW5kaXJlY3QpOiBOZXcuCgkoY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzKTog SGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCShPTVBfREVDTEFSRV9UQVJHRVRfQ0xBVVNFX01B U0spOiBBZGQgaW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgkoY19wYXJzZXJfb21wX2RlY2xh cmVfdGFyZ2V0KTogSGFuZGxlIGluZGlyZWN0IGNsYXVzZS4gIEVtaXQgZXJyb3IKCW1lc3Nh Z2UgaWYgZGV2aWNlX3R5cGUgb3IgaW5kaXJlY3QgY2xhdXNlcyB1c2VkIGFsb25lLiAgRW1p dCBlcnJvcgoJaWYgaW5kaXJlY3QgY2xhdXNlIHVzZWQgd2l0aCBkZXZpY2VfdHlwZSB0aGF0 IGlzIG5vdCAnYW55Jy4KCShPTVBfQkVHSU5fREVDTEFSRV9UQVJHRVRfQ0xBVVNFX01BU0sp OiBBZGQgaW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgkoY19wYXJzZXJfb21wX2JlZ2luKTog SGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCSogYy10eXBlY2suY2MgKGNfZmluaXNoX29tcF9j bGF1c2VzKTogSGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCmdjYy9jcC8KCSogY3AtdHJlZS5o IChjcF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0cik6IEFkZCBpbmRpcmVjdCBmaWVsZC4KCSog ZGVjbDIuY2MgKGNwbHVzX2RlY2xfYXR0cmlidXRlcyk6IEFkZCBhdHRyaWJ1dGUgZm9yIGlu ZGlyZWN0CglmdW5jdGlvbnMuCgkqIHBhcnNlci5jYyAoY3BfcGFyc2VyX29tcF9jbGF1c2Vf bmFtZSk6IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuCgkoY3BfcGFyc2VyX29tcF9jbGF1c2Vf aW5kaXJlY3QpOiBOZXcuCgkoY3BfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyk6IEhhbmRsZSBp bmRpcmVjdCBjbGF1c2UuCgkoaGFuZGxlX29tcF9kZWNsYXJlX3RhcmdldF9jbGF1c2UpOiBB ZGQgZXh0cmEgcGFyYW1ldGVyLiAgQWRkCglpbmRpcmVjdCBhdHRyaWJ1dGUgZm9yIGluZGly ZWN0IGZ1bmN0aW9ucy4KCShPTVBfREVDTEFSRV9UQVJHRVRfQ0xBVVNFX01BU0spOiBBZGQg aW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgkoY3BfcGFyc2VyX29tcF9kZWNsYXJlX3Rhcmdl dCk6IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuICBFbWl0IGVycm9yCgltZXNzYWdlIGlmIGRl dmljZV90eXBlIG9yIGluZGlyZWN0IGNsYXVzZXMgdXNlZCBhbG9uZS4gIEVtaXQgZXJyb3IK CWlmIGluZGlyZWN0IGNsYXVzZSB1c2VkIHdpdGggZGV2aWNlX3R5cGUgdGhhdCBpcyBub3Qg J2FueScuCgkoT01QX0JFR0lOX0RFQ0xBUkVfVEFSR0VUX0NMQVVTRV9NQVNLKTogQWRkIGlu ZGlyZWN0IGNsYXVzZSB0byBtYXNrLgoJKGNwX3BhcnNlcl9vbXBfYmVnaW4pOiBIYW5kbGUg aW5kaXJlY3QgY2xhdXNlLgoJKiBzZW1hbnRpY3MuY2MgKGZpbmlzaF9vbXBfY2xhdXNlcyk6 IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuCgpnY2MvCgkqIGx0by1jZ3JhcGguY2MgKGVudW0g TFRPX3N5bXRhYl90YWdzKTogQWRkIHRhZyBmb3IgaW5kaXJlY3QKCWZ1bmN0aW9ucy4KCShv dXRwdXRfb2ZmbG9hZF90YWJsZXMpOiBXcml0ZSBpbmRpcmVjdCBmdW5jdGlvbnMuCgkoaW5w dXRfb2ZmbG9hZF90YWJsZXMpOiByZWFkIGluZGlyZWN0IGZ1bmN0aW9ucy4KCSogbHRvLXNl Y3Rpb24tbmFtZXMuaCAoT0ZGTE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUpOiBO ZXcuCgkqIG9tcC1idWlsdGlucy5kZWYgKEJVSUxUX0lOX0dPTVBfVEFSR0VUX01BUF9JTkRJ UkVDVF9QVFIpOiBOZXcuCgkqIG9tcC1vZmZsb2FkLmNjIChvZmZsb2FkX2luZF9mdW5jcyk6 IE5ldy4KCShvbXBfZGlzY292ZXJfaW1wbGljaXRfZGVjbGFyZV90YXJnZXQpOiBBZGQgZnVu Y3Rpb25zIG1hcmtlZCB3aXRoCgknb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0JyB0byBp bmRpcmVjdCBmdW5jdGlvbnMgbGlzdC4KCShvbXBfZmluaXNoX2ZpbGUpOiBBZGQgaW5kaXJl Y3QgZnVuY3Rpb25zIHRvIHNlY3Rpb24gZm9yIG9mZmxvYWQKCWluZGlyZWN0IGZ1bmN0aW9u cy4KCShleGVjdXRlX29tcF9kZXZpY2VfbG93ZXIpOiBSZWRpcmVjdCBpbmRpcmVjdCBjYWxs cyBvbiB0YXJnZXQgYnkKCXBhc3NpbmcgZnVuY3Rpb24gcG9pbnRlciB0byBCVUlMVF9JTl9H T01QX1RBUkdFVF9NQVBfSU5ESVJFQ1RfUFRSLgoJKHBhc3Nfb21wX2RldmljZV9sb3dlcjo6 Z2F0ZSk6IFJ1biBwYXNzX29tcF9kZXZpY2VfbG93ZXIgaWYKCWluZGlyZWN0IGZ1bmN0aW9u cyBhcmUgcHJlc2VudCBvbiBhbiBhY2NlbGVyYXRvciBkZXZpY2UuCgkqIG9tcC1vZmZsb2Fk LmggKG9mZmxvYWRfaW5kX2Z1bmNzKTogTmV3LgoJKiB0cmVlLWNvcmUuaCAob21wX2NsYXVz ZV9jb2RlKTogQWRkIE9NUF9DTEFVU0VfSU5ESVJFQ1QuCgkqIHRyZWUuY2MgKG9tcF9jbGF1 c2VfbnVtX29wcyk6IEFkZCBlbnRyeSBmb3IgT01QX0NMQVVTRV9JTkRJUkVDVC4KCShvbXBf Y2xhdXNlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKiB0cmVlLmggKE9NUF9DTEFVU0VfSU5E SVJFQ1RfRVhQUik6IE5ldy4KCSogY29uZmlnL2djbi9ta29mZmxvYWQuY2MgKHByb2Nlc3Nf YXNtKTogUHJvY2VzcyBvZmZsb2FkX2luZF9mdW5jcwoJc2VjdGlvbi4gIENvdW50IG51bWJl ciBvZiBpbmRpcmVjdCBmdW5jdGlvbnMuCgkocHJvY2Vzc19vYmopOiBFbWl0IG51bWJlciBv ZiBpbmRpcmVjdCBmdW5jdGlvbnMuCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgKGlu ZF9mdW5jX2lkcywgaW5kX2Z1bmNzX3RhaWwpOiBOZXcuCgkocHJvY2Vzcyk6IEVtaXQgb2Zm bG9hZF9pbmRfZnVuY190YWJsZSBpbiBQVFggY29kZS4gIEVtaXQgaW5kaXJlY3QKCWZ1bmN0 aW9uIG5hbWVzIGFuZCBjb3VudCBpbiBpbWFnZS4KCSogY29uZmlnL252cHR4L252cHR4LmNj IChudnB0eF9yZWNvcmRfb2ZmbG9hZF9zeW1ib2wpOiBNYXJrCglpbmRpcmVjdCBmdW5jdGlv bnMgaW4gUFRYIGNvZGUgd2l0aCBJTkRfRlVOQ19NQVAuCgpnY2MvdGVzdHN1aXRlLwoJKiBj LWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRhcmdldC03LmM6IFVwZGF0ZSBleHBlY3RlZCBl cnJvciBtZXNzYWdlLgoJKiBjLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRp cmVjdC0xLmM6IE5ldy4KCSogYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtaW5k aXJlY3QtMi5jOiBOZXcuCgkqIGcrKy5kZy9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0 LTEuQzogTmV3LgoKaW5jbHVkZS8KCSogZ29tcC1jb25zdGFudHMuaCAoR09NUF9WRVJTSU9O KTogSW5jcmVtZW50IHRvIDMuCgkoR09NUF9WRVJTSU9OX1NVUFBPUlRTX0lORElSRUNUX0ZV TkNTKTogTmV3LgoKbGliZ2NjLwoJKiBvZmZsb2Fkc3R1ZmYuYyAoT0ZGTE9BRF9JTkRfRlVO Q19UQUJMRV9TRUNUSU9OX05BTUUpOiBOZXcuCgkoX19vZmZsb2FkX2luZF9mdW5jX3RhYmxl KTogTmV3LgoJKF9fb2ZmbG9hZF9pbmRfZnVuY3NfZW5kKTogTmV3LgoJKF9fT0ZGTE9BRF9U QUJMRV9fKTogQWRkIGVudHJpZXMgZm9yIGluZGlyZWN0IGZ1bmN0aW9ucy4KCmxpYmdvbXAv CgkqIE1ha2VmaWxlLmFtIChsaWJnb21wX2xhX1NPVVJDRVMpOiBBZGQgdGFyZ2V0LWluZGly ZWN0LmMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBsaWJnb21wLXBsdWdpbi5o IChHT01QX0lORElSRUNUX0FERFJfTUFQKTogTmV3IGRlZmluZS4KCShHT01QX09GRkxPQURf bG9hZF9pbWFnZSk6IEFkZCBleHRyYSBhcmd1bWVudC4KCSogbGliZ29tcC5oIChzdHJ1Y3Qg aW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXlfcyk6IE5ldy4KCShpbmRpcmVjdF9zcGxheV90cmVl X25vZGUsIGluZGlyZWN0X3NwbGF5X3RyZWUsCglpbmRpcmVjdF9zcGxheV90cmVlX2tleSk6 IE5ldy4KCShpbmRpcmVjdF9zcGxheV9jb21wYXJlKTogTmV3LgoJKiBsaWJnb21wLm1hcCAo R09NUF81LjEuMSk6IEFkZCBHT01QX3RhcmdldF9tYXBfaW5kaXJlY3RfcHRyLgoJKiBsaWJn b21wLnRleGkgKE9wZW5NUCA1LjEpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBpbmRpcmVj dAoJY2FsbHMgaW4gdGFyZ2V0IHJlZ2lvbiBhbmQgb24gaW5kaXJlY3QgY2xhdXNlLgoJKE90 aGVyIG5ldyBPcGVuTVAgNS4yIGZlYXR1cmVzKTogQWRkIGVudHJ5IGZvciB2aXJ0dWFsIGZ1 bmN0aW9uIGNhbGxzLgoJKiBsaWJnb21wX2cuaCAoR09NUF90YXJnZXRfbWFwX2luZGlyZWN0 X3B0cik6IEFkZCBwcm90b3R5cGUuCgkqIG9hY2MtaG9zdC5jIChob3N0X2xvYWRfaW1hZ2Up OiBBZGQgZXh0cmEgYXJndW1lbnQuCgkqIHRhcmdldC5jIChnb21wX2xvYWRfaW1hZ2VfdG9f ZGV2aWNlKTogSWYgdGhlIEdPTVBfVkVSU0lPTiBpcyBoaWdoCgllbm91Z2gsIHJlYWQgaG9z dCBpbmRpcmVjdCBmdW5jdGlvbnMgdGFibGUgYW5kIHBhc3MgdG8KCWxvYWRfaW1hZ2VfZnVu Yy4KCSogY29uZmlnL2FjY2VsL3RhcmdldC1pbmRpcmVjdC5jOiBOZXcuCgkqIGNvbmZpZy9s aW51eC90YXJnZXQtaW5kaXJlY3QuYzogTmV3LgoJKiBjb25maWcvZ2NuL3RlYW0uYyAoYnVp bGRfaW5kaXJlY3RfbWFwKTogQWRkIHByb3RvdHlwZS4KCShnb21wX2djbl9lbnRlcl9rZXJu ZWwpOiBJbml0aWFsaXplIHN1cHBvcnQgZm9yIGluZGlyZWN0CglmdW5jdGlvbiBjYWxscyBv biBHQ04gdGFyZ2V0LgoJKiBjb25maWcvbnZwdHgvdGVhbS5jIChidWlsZF9pbmRpcmVjdF9t YXApOiBBZGQgcHJvdG90eXBlLgoJKGdvbXBfbnZwdHhfbWFpbik6IEluaXRpYWxpemUgc3Vw cG9ydCBmb3IgaW5kaXJlY3QgZnVuY3Rpb24KCWNhbGxzIG9uIE5WUFRYIHRhcmdldC4KCSog cGx1Z2luL3BsdWdpbi1nY24uYyAoc3RydWN0IGdjbl9pbWFnZV9kZXNjKTogQWRkIGZpZWxk IGZvcgoJaW5kaXJlY3QgZnVuY3Rpb25zIGNvdW50LgoJKEdPTVBfT0ZGTE9BRF9sb2FkX2lt YWdlKTogQWRkIGV4dHJhIGFyZ3VtZW50LiAgSWYgdGhlIEdPTVBfVkVSU0lPTgoJaXMgaGln aCBlbm91Z2gsIGJ1aWxkIGFkZHJlc3MgdHJhbnNsYXRpb24gdGFibGUgYW5kIGNvcHkgaXQg dG8gdGFyZ2V0CgltZW1vcnkuCgkqIHBsdWdpbi9wbHVnaW4tbnZwdHguYyAobnZwdHhfdGRh dGEpOiBBZGQgZmllbGQgZm9yIGluZGlyZWN0CglmdW5jdGlvbnMgY291bnQuCgkoR09NUF9P RkZMT0FEX2xvYWRfaW1hZ2UpOiBBZGQgZXh0cmEgYXJndW1lbnQuICBJZiB0aGUgR09NUF9W RVJTSU9OCglpcyBoaWdoIGVub3VnaCwgQnVpbGQgYWRkcmVzcyB0cmFuc2xhdGlvbiB0YWJs ZSBhbmQgY29weSBpdCB0byB0YXJnZXQKCW1lbW9yeS4KCSogdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuYzogTmV3LgoJKiB0ZXN0 c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMi5j OiBOZXcuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmMrKy9kZWNsYXJlLXRhcmdldC1pbmRpcmVj dC0xLkM6IE5ldy4KLS0tCiBnY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNjICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKwogZ2NjL2MtZmFtaWx5L2MtcHJhZ21hLmggICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGdjYy9jL2MtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgOCArKwogZ2NjL2MvYy1sYW5nLmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIGdjYy9jL2MtcGFyc2VyLmNjICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDEwMSArKysrKysrKysrKystLQogZ2NjL2MvYy10eXBlY2suY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdjYy9jb25maWcvZ2NuL21r b2ZmbG9hZC5jYyAgICAgICAgICAgICAgICAgICB8ICAyOSArKystCiBnY2MvY29uZmlnL252 cHR4L21rb2ZmbG9hZC5jYyAgICAgICAgICAgICAgICAgfCAgODcgKysrKysrKysrKystCiBn Y2MvY29uZmlnL252cHR4L252cHR4LmNjICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0K IGdjYy9jcC9jcC10cmVlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBnY2MvY3AvZGVjbDIuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYg KwogZ2NjL2NwL3BhcnNlci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTA4 ICsrKysrKysrKysrKy0tLQogZ2NjL2NwL3NlbWFudGljcy5jYyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGdjYy9sdG8tY2dyYXBoLmNjICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyNyArKysrCiBnY2MvbHRvLXNlY3Rpb24tbmFtZXMuaCAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL29tcC1idWlsdGlucy5kZWYgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAzICsKIGdjYy9vbXAtb2ZmbG9hZC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA4NSArKysrKysrKysrLS0KIGdjYy9vbXAtb2ZmbG9hZC5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vYy1jKystY29tbW9u L2dvbXAvZGVjbGFyZS10YXJnZXQtNy5jICAgICAgfCAgIDIgKy0KIC4uLi9nb21wL2RlY2xh cmUtdGFyZ2V0LWluZGlyZWN0LTEuYyAgICAgICAgICB8ICA2MiArKysrKysrKysKIC4uLi9n b21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTIuYyAgICAgICAgICB8ICAzMiArKysrKwog Li4uL2crKy5kZy9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuQyAgIHwgIDE3ICsr KwogZ2NjL3RyZWUtY29yZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIGdjYy90cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCiBnY2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDQgKwogaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oICAgICAgICAgICAgICAgICAgICAgIHwg ICA0ICstCiBsaWJnY2Mvb2ZmbG9hZHN0dWZmLmMgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTIgKy0KIGxpYmdvbXAvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogbGliZ29tcC9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1ICstCiBsaWJnb21wL2NvbmZpZy9hY2NlbC90YXJnZXQtaW5kaXJlY3QuYyAg ICAgICAgfCAxMjYgKysrKysrKysrKysrKysrKysrCiBsaWJnb21wL2NvbmZpZy9nY24vdGVh bS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogbGliZ29tcC9jb25maWcvbGludXgv dGFyZ2V0LWluZGlyZWN0LmMgICAgICAgIHwgIDMyICsrKysrCiBsaWJnb21wL2NvbmZpZy9u dnB0eC90ZWFtLmMgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogbGliZ29tcC9saWJnb21w LXBsdWdpbi5oICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBsaWJnb21wL2xpYmdv bXAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrKwogbGliZ29tcC9s aWJnb21wLm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYmdvbXAv bGliZ29tcC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogbGliZ29t cC9saWJnb21wX2cuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYmdv bXAvb2FjYy1ob3N0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogbGli Z29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jICAgICAgICAgICAgICAgICAgIHwgIDg4ICsrKysr KysrKysrLQogbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMgICAgICAgICAgICAgICAg IHwgIDYzICsrKysrKysrLQogbGliZ29tcC90YXJnZXQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE3ICsrLQogLi4uL2xpYmdvbXAuYysrL2RlY2xhcmUtdGFyZ2V0LWlu ZGlyZWN0LTEuQyAgIHwgIDIzICsrKysKIC4uLi9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0x LmMgICAgICAgICAgICAgICB8ICAyMSArKysKIC4uLi9kZWNsYXJlLXRhcmdldC1pbmRpcmVj dC0yLmMgICAgICAgICAgICAgICB8ICAzMyArKysrKwogNDUgZmlsZXMgY2hhbmdlZCwgMTAw NyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0 LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dv bXAvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0xLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL2NvbmZpZy9hY2NlbC90YXJnZXQtaW5kaXJlY3Qu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdvbXAvY29uZmlnL2xpbnV4L3RhcmdldC1pbmRp cmVjdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5j KysvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5k aXJlY3QtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMi5jCgpkaWZmIC0tZ2l0 IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBiL2djYy9jLWZhbWlseS9jLWF0dHJpYnMu Y2MKaW5kZXggYTA0MWMzYjkxZWIuLjc1NGNkYWIyYWU4IDEwMDY0NAotLS0gYS9nY2MvYy1m YW1pbHkvYy1hdHRyaWJzLmNjCisrKyBiL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MKQEAg LTUyMiw2ICs1MjIsOCBAQCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgY19jb21tb25f YXR0cmlidXRlX3RhYmxlW10gPQogCQkJICAgICAgaGFuZGxlX29tcF9kZWNsYXJlX3Rhcmdl dF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAib21wIGRlY2xhcmUgdGFyZ2V0IGltcGxpY2l0 IiwgMCwgMCwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJCSAgICAgIGhhbmRsZV9v bXBfZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLCBOVUxMIH0sCisgIHsgIm9tcCBkZWNsYXJl IHRhcmdldCBpbmRpcmVjdCIsIDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJ CQkgICAgICBoYW5kbGVfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZSwgTlVMTCB9LAog ICB7ICJvbXAgZGVjbGFyZSB0YXJnZXQgaG9zdCIsIDAsIDAsIHRydWUsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsCiAJCQkgICAgICBoYW5kbGVfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0 ZSwgTlVMTCB9LAogICB7ICJvbXAgZGVjbGFyZSB0YXJnZXQgbm9ob3N0IiwgMCwgMCwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLXBy YWdtYS5oIGIvZ2NjL2MtZmFtaWx5L2MtcHJhZ21hLmgKaW5kZXggNjgyMTU3YTQ1MTcuLjk4 MTc3OTEzMDUzIDEwMDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy1wcmFnbWEuaAorKysgYi9n Y2MvYy1mYW1pbHkvYy1wcmFnbWEuaApAQCAtMTI1LDYgKzEyNSw3IEBAIGVudW0gcHJhZ21h X29tcF9jbGF1c2UgewogICBQUkFHTUFfT01QX0NMQVVTRV9JRiwKICAgUFJBR01BX09NUF9D TEFVU0VfSU5fUkVEVUNUSU9OLAogICBQUkFHTUFfT01QX0NMQVVTRV9JTkJSQU5DSCwKKyAg UFJBR01BX09NUF9DTEFVU0VfSU5ESVJFQ1QsCiAgIFBSQUdNQV9PTVBfQ0xBVVNFX0lTX0RF VklDRV9QVFIsCiAgIFBSQUdNQV9PTVBfQ0xBVVNFX0xBU1RQUklWQVRFLAogICBQUkFHTUFf T01QX0NMQVVTRV9MSU5FQVIsCmRpZmYgLS1naXQgYS9nY2MvYy9jLWRlY2wuY2MgYi9nY2Mv Yy9jLWRlY2wuY2MKaW5kZXggN2ExNDViZWQyODEuLjMxMTJkNDZmMTIwIDEwMDY0NAotLS0g YS9nY2MvYy9jLWRlY2wuY2MKKysrIGIvZ2NjL2MvYy1kZWNsLmNjCkBAIC01MzMyLDYgKzUz MzIsMTQgQEAgY19kZWNsX2F0dHJpYnV0ZXMgKHRyZWUgKm5vZGUsIHRyZWUgYXR0cmlidXRl cywgaW50IGZsYWdzKQogCSAgICBhdHRyaWJ1dGVzCiAJICAgICAgPSB0cmVlX2NvbnMgKGdl dF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUgdGFyZ2V0IG5vaG9zdCIpLAogCQkJICAgTlVM TF9UUkVFLCBhdHRyaWJ1dGVzKTsKKworCSAgaW50IGluZGlyZWN0CisJICAgID0gY3VycmVu dF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLT5sYXN0ICgpLmluZGlyZWN0OworCSAg aWYgKGluZGlyZWN0ICYmICFsb29rdXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdGFyZ2V0 IGluZGlyZWN0IiwKKwkJCQkJICAgICBhdHRyaWJ1dGVzKSkKKwkgICAgYXR0cmlidXRlcwor CSAgICAgID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9tcCBkZWNsYXJlIHRhcmdl dCBpbmRpcmVjdCIpLAorCQkJICAgTlVMTF9UUkVFLCBhdHRyaWJ1dGVzKTsKIAl9CiAgICAg fQogCmRpZmYgLS1naXQgYS9nY2MvYy9jLWxhbmcuaCBiL2djYy9jL2MtbGFuZy5oCmluZGV4 IDRmZWExMTg1NWYxLi5jYjEzZTM0ZTgwZSAxMDA2NDQKLS0tIGEvZ2NjL2MvYy1sYW5nLmgK KysrIGIvZ2NjL2MvYy1sYW5nLmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEdUWSgoKSkg bGFuZ3VhZ2VfZnVuY3Rpb24gewogCiBzdHJ1Y3QgR1RZKCgpKSBjX29tcF9kZWNsYXJlX3Rh cmdldF9hdHRyIHsKICAgaW50IGRldmljZV90eXBlOworICBpbnQgaW5kaXJlY3Q7CiB9Owog CiAvKiBJZiBub24temVybywgaW1wbGljaXQgIm9tcCBkZWNsYXJlIHRhcmdldCIgYXR0cmli dXRlIGlzIGFkZGVkIGludG8gdGhlCmRpZmYgLS1naXQgYS9nY2MvYy9jLXBhcnNlci5jYyBi L2djYy9jL2MtcGFyc2VyLmNjCmluZGV4IDUyMTNhNTdhMWVjLi5lYmZlMTdjYTM4MyAxMDA2 NDQKLS0tIGEvZ2NjL2MvYy1wYXJzZXIuY2MKKysrIGIvZ2NjL2MvYy1wYXJzZXIuY2MKQEAg LTEzOTc1LDYgKzEzOTc1LDggQEAgY19wYXJzZXJfb21wX2NsYXVzZV9uYW1lIChjX3BhcnNl ciAqcGFyc2VyKQogCSAgICByZXN1bHQgPSBQUkFHTUFfT01QX0NMQVVTRV9JTl9SRURVQ1RJ T047CiAJICBlbHNlIGlmICghc3RyY21wICgiaW5icmFuY2giLCBwKSkKIAkgICAgcmVzdWx0 ID0gUFJBR01BX09NUF9DTEFVU0VfSU5CUkFOQ0g7CisJICBlbHNlIGlmICghc3RyY21wICgi aW5kaXJlY3QiLCBwKSkKKwkgICAgcmVzdWx0ID0gUFJBR01BX09NUF9DTEFVU0VfSU5ESVJF Q1Q7CiAJICBlbHNlIGlmICghc3RyY21wICgiaW5kZXBlbmRlbnQiLCBwKSkKIAkgICAgcmVz dWx0ID0gUFJBR01BX09BQ0NfQ0xBVVNFX0lOREVQRU5ERU5UOwogCSAgZWxzZSBpZiAoIXN0 cmNtcCAoImlzX2RldmljZV9wdHIiLCBwKSkKQEAgLTE0ODM3LDYgKzE0ODM5LDQ3IEBAIGNf cGFyc2VyX29tcF9jbGF1c2VfZmluYWwgKGNfcGFyc2VyICpwYXJzZXIsIHRyZWUgbGlzdCkK ICAgcmV0dXJuIGxpc3Q7CiB9CiAKKy8qIE9wZW5NUCA1LjE6CisgICBpbmRpcmVjdCBbKCBl eHByZXNzaW9uICldCisqLworCitzdGF0aWMgdHJlZQorY19wYXJzZXJfb21wX2NsYXVzZV9p bmRpcmVjdCAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBsaXN0KQoreworICBsb2NhdGlvbl90 IGxvY2F0aW9uID0gY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+bG9jYXRpb247Cisg IHRyZWUgdDsKKworICBpZiAoY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+dHlwZSA9 PSBDUFBfT1BFTl9QQVJFTikKKyAgICB7CisgICAgICBtYXRjaGluZ19wYXJlbnMgcGFyZW5z OworICAgICAgaWYgKCFwYXJlbnMucmVxdWlyZV9vcGVuIChwYXJzZXIpKQorCXJldHVybiBs aXN0OworCisgICAgICBsb2NhdGlvbl90IGxvYyA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBh cnNlciktPmxvY2F0aW9uOworICAgICAgY19leHByIGV4cHIgPSBjX3BhcnNlcl9leHByX25v X2NvbW1hcyAocGFyc2VyLCBOVUxMKTsKKyAgICAgIGV4cHIgPSBjb252ZXJ0X2x2YWx1ZV90 b19ydmFsdWUgKGxvYywgZXhwciwgdHJ1ZSwgdHJ1ZSk7CisgICAgICB0ID0gY19vYmpjX2Nv bW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24gKGxvYywgZXhwci52YWx1ZSk7CisgICAgICB0 ID0gY19mdWxseV9mb2xkICh0LCBmYWxzZSwgTlVMTCk7CisgICAgICBpZiAoIUlOVEVHUkFM X1RZUEVfUCAoVFJFRV9UWVBFICh0KSkKKwkgIHx8IFRSRUVfQ09ERSAodCkgIT0gSU5URUdF Ul9DU1QpCisJeworCSAgY19wYXJzZXJfZXJyb3IgKHBhcnNlciwgImV4cGVjdGVkIGNvbnN0 YW50IGxvZ2ljYWwgZXhwcmVzc2lvbiIpOworCSAgcmV0dXJuIGxpc3Q7CisJfQorICAgICAg cGFyZW5zLnNraXBfdW50aWxfZm91bmRfY2xvc2UgKHBhcnNlcik7CisgICAgfQorICBlbHNl CisgICAgdCA9IGludGVnZXJfb25lX25vZGU7CisKKyAgY2hlY2tfbm9fZHVwbGljYXRlX2Ns YXVzZSAobGlzdCwgT01QX0NMQVVTRV9JTkRJUkVDVCwgImluZGlyZWN0Iik7CisKKyAgdHJl ZSBjID0gYnVpbGRfb21wX2NsYXVzZSAobG9jYXRpb24sIE9NUF9DTEFVU0VfSU5ESVJFQ1Qp OworICBPTVBfQ0xBVVNFX0lORElSRUNUX0VYUFIgKGMpID0gdDsKKyAgT01QX0NMQVVTRV9D SEFJTiAoYykgPSBsaXN0OworCisgIHJldHVybiBjOworfQorCiAvKiBPcGVuQUNDLCBPcGVu TVAgMi41OgogICAgaWYgKCBleHByZXNzaW9uICkKIApAQCAtMTgzOTgsNiArMTg0NDEsMTAg QEAgY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChjX3BhcnNlciAqcGFyc2VyLCBvbXBfY2xh dXNlX21hc2sgbWFzaywKIAkJCQkJICAgICB0cnVlLCBjbGF1c2VzKTsKIAkgIGNfbmFtZSA9 ICJpbl9yZWR1Y3Rpb24iOwogCSAgYnJlYWs7CisJY2FzZSBQUkFHTUFfT01QX0NMQVVTRV9J TkRJUkVDVDoKKwkgIGNsYXVzZXMgPSBjX3BhcnNlcl9vbXBfY2xhdXNlX2luZGlyZWN0IChw YXJzZXIsIGNsYXVzZXMpOworCSAgY19uYW1lID0gImluZGlyZWN0IjsKKwkgIGJyZWFrOwog CWNhc2UgUFJBR01BX09NUF9DTEFVU0VfTEFTVFBSSVZBVEU6CiAJICBjbGF1c2VzID0gY19w YXJzZXJfb21wX2NsYXVzZV9sYXN0cHJpdmF0ZSAocGFyc2VyLCBjbGF1c2VzKTsKIAkgIGNf bmFtZSA9ICJsYXN0cHJpdmF0ZSI7CkBAIC0yMzc5OCwxNCArMjM4NDUsMTYgQEAgY19maW5p c2hfb21wX2RlY2xhcmVfc2ltZCAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBmbmRlY2wsIHRy ZWUgcGFybXMsCiAJKCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0Vf VE8pCQlcCiAJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfRU5U RVIpCVwKIAl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9MSU5L KQkJXAotCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX0RFVklD RV9UWVBFKSkKKwl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9E RVZJQ0VfVFlQRSkJXAorCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xB VVNFX0lORElSRUNUKSkKIAogc3RhdGljIHZvaWQKIGNfcGFyc2VyX29tcF9kZWNsYXJlX3Rh cmdldCAoY19wYXJzZXIgKnBhcnNlcikKIHsKICAgdHJlZSBjbGF1c2VzID0gTlVMTF9UUkVF OwogICBpbnQgZGV2aWNlX3R5cGUgPSAwOwotICBib29sIG9ubHlfZGV2aWNlX3R5cGUgPSB0 cnVlOworICBib29sIGluZGlyZWN0ID0gZmFsc2U7CisgIGJvb2wgb25seV9kZXZpY2VfdHlw ZV9vcl9pbmRpcmVjdCA9IHRydWU7CiAgIGlmIChjX3BhcnNlcl9uZXh0X3Rva2VuX2lzIChw YXJzZXIsIENQUF9OQU1FKQogICAgICAgfHwgKGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBh cnNlciwgQ1BQX0NPTU1BKQogCSAgJiYgY19wYXJzZXJfcGVla18ybmRfdG9rZW4gKHBhcnNl ciktPnR5cGUgPT0gQ1BQX05BTUUpKQpAQCAtMjM4MjEsMjIgKzIzODcwLDI3IEBAIGNfcGFy c2VyX29tcF9kZWNsYXJlX3RhcmdldCAoY19wYXJzZXIgKnBhcnNlcikKICAgZWxzZQogICAg IHsKICAgICAgIGNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2VyKTsKLSAgICAg IGNfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHIgYXR0ciA9IHsgLTEgfTsKKyAgICAgIGNfb21w X2RlY2xhcmVfdGFyZ2V0X2F0dHIgYXR0ciA9IHsgLTEsIDAgfTsKICAgICAgIHZlY19zYWZl X3B1c2ggKGN1cnJlbnRfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZSwgYXR0cik7CiAg ICAgICByZXR1cm47CiAgICAgfQotICBmb3IgKHRyZWUgYyA9IGNsYXVzZXM7IGM7IGMgPSBP TVBfQ0xBVVNFX0NIQUlOIChjKSkKLSAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9PSBP TVBfQ0xBVVNFX0RFVklDRV9UWVBFKQotICAgICAgZGV2aWNlX3R5cGUgfD0gT01QX0NMQVVT RV9ERVZJQ0VfVFlQRV9LSU5EIChjKTsKICAgZm9yICh0cmVlIGMgPSBjbGF1c2VzOyBjOyBj ID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCiAgICAgewogICAgICAgaWYgKE9NUF9DTEFVU0Vf Q09ERSAoYykgPT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSkKKwlkZXZpY2VfdHlwZSB8PSBP TVBfQ0xBVVNFX0RFVklDRV9UWVBFX0tJTkQgKGMpOworICAgICAgaWYgKE9NUF9DTEFVU0Vf Q09ERSAoYykgPT0gT01QX0NMQVVTRV9JTkRJUkVDVCkKKwlpbmRpcmVjdCB8PSAhaW50ZWdl cl96ZXJvcCAoT01QX0NMQVVTRV9JTkRJUkVDVF9FWFBSIChjKSk7CisgICAgfQorICBmb3Ig KHRyZWUgYyA9IGNsYXVzZXM7IGM7IGMgPSBPTVBfQ0xBVVNFX0NIQUlOIChjKSkKKyAgICB7 CisgICAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBfQ0xBVVNFX0RFVklDRV9U WVBFCisJICB8fCBPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfSU5ESVJFQ1Qp CiAJY29udGludWU7CiAgICAgICB0cmVlIHQgPSBPTVBfQ0xBVVNFX0RFQ0wgKGMpLCBpZDsK ICAgICAgIHRyZWUgYXQxID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdl dCIsIERFQ0xfQVRUUklCVVRFUyAodCkpOwogICAgICAgdHJlZSBhdDIgPSBsb29rdXBfYXR0 cmlidXRlICgib21wIGRlY2xhcmUgdGFyZ2V0IGxpbmsiLAogCQkJCSAgIERFQ0xfQVRUUklC VVRFUyAodCkpOwotICAgICAgb25seV9kZXZpY2VfdHlwZSA9IGZhbHNlOworICAgICAgb25s eV9kZXZpY2VfdHlwZV9vcl9pbmRpcmVjdCA9IGZhbHNlOwogICAgICAgaWYgKE9NUF9DTEFV U0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9MSU5LKQogCXsKIAkgIGlkID0gZ2V0X2lkZW50 aWZpZXIgKCJvbXAgZGVjbGFyZSB0YXJnZXQgbGluayIpOwpAQCAtMjM4OTgsMTAgKzIzOTUy LDI1IEBAIGNfcGFyc2VyX29tcF9kZWNsYXJlX3RhcmdldCAoY19wYXJzZXIgKnBhcnNlcikK IAkJPSB0cmVlX2NvbnMgKGlkLCBOVUxMX1RSRUUsIERFQ0xfQVRUUklCVVRFUyAodCkpOwog CSAgICB9CiAJfQorICAgICAgaWYgKGluZGlyZWN0KQorCXsKKwkgIHRyZWUgYXQ0ID0gbG9v a3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJCQkJICAg ICAgIERFQ0xfQVRUUklCVVRFUyAodCkpOworCSAgaWYgKGF0NCA9PSBOVUxMX1RSRUUpCisJ ICAgIHsKKwkgICAgICBpZCA9IGdldF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUgdGFyZ2V0 IGluZGlyZWN0Iik7CisJICAgICAgREVDTF9BVFRSSUJVVEVTICh0KQorCQk9IHRyZWVfY29u cyAoaWQsIE5VTExfVFJFRSwgREVDTF9BVFRSSUJVVEVTICh0KSk7CisJICAgIH0KKwl9CiAg ICAgfQotICBpZiAoZGV2aWNlX3R5cGUgJiYgb25seV9kZXZpY2VfdHlwZSkKKyAgaWYgKChk ZXZpY2VfdHlwZSB8fCBpbmRpcmVjdCkgJiYgb25seV9kZXZpY2VfdHlwZV9vcl9pbmRpcmVj dCkKICAgICBlcnJvcl9hdCAoT01QX0NMQVVTRV9MT0NBVElPTiAoY2xhdXNlcyksCi0JICAg ICAgImRpcmVjdGl2ZSB3aXRoIG9ubHkgJTxkZXZpY2VfdHlwZSU+IGNsYXVzZSIpOworCSAg ICAgICJkaXJlY3RpdmUgd2l0aCBvbmx5ICU8ZGV2aWNlX3R5cGUlPiBvciAlPGluZGlyZWN0 JT4gY2xhdXNlcyIpOworICBpZiAoaW5kaXJlY3QgJiYgZGV2aWNlX3R5cGUgJiYgZGV2aWNl X3R5cGUgIT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRV9BTlkpCisgICAgZXJyb3JfYXQgKE9N UF9DTEFVU0VfTE9DQVRJT04gKGNsYXVzZXMpLAorCSAgICAgICIlPGRldmljZV90eXBlJT4g Y2xhdXNlIG11c3Qgc3BlY2lmeSAnYW55JyB3aGVuIHVzZWQgd2l0aCAiCisJICAgICAgImFu ICU8aW5kaXJlY3QlPiBjbGF1c2UiKTsKIH0KIAogLyogT3Blbk1QIDUuMQpAQCAtMjM5MTAs NyArMjM5NzksOCBAQCBjX3BhcnNlcl9vbXBfZGVjbGFyZV90YXJnZXQgKGNfcGFyc2VyICpw YXJzZXIpCiAgICAjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHRhcmdldCBjbGF1c2VzW29w dHNlcV0gbmV3LWxpbmUgICovCiAKICNkZWZpbmUgT01QX0JFR0lOX0RFQ0xBUkVfVEFSR0VU X0NMQVVTRV9NQVNLCQkJXAotCShPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NM QVVTRV9ERVZJQ0VfVFlQRSkKKwkoIChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01Q X0NMQVVTRV9ERVZJQ0VfVFlQRSkJXAorCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdN QV9PTVBfQ0xBVVNFX0lORElSRUNUKSkKIAogc3RhdGljIHZvaWQKIGNfcGFyc2VyX29tcF9i ZWdpbiAoY19wYXJzZXIgKnBhcnNlcikKQEAgLTIzOTMzLDEwICsyNDAwMywxNSBAQCBjX3Bh cnNlcl9vbXBfYmVnaW4gKGNfcGFyc2VyICpwYXJzZXIpCiAJCQkJCU9NUF9CRUdJTl9ERUNM QVJFX1RBUkdFVF9DTEFVU0VfTUFTSywKIAkJCQkJIiNwcmFnbWEgb21wIGJlZ2luIGRlY2xh cmUgdGFyZ2V0Iik7CiAJICBpbnQgZGV2aWNlX3R5cGUgPSAwOworCSAgaW50IGluZGlyZWN0 ID0gMDsKIAkgIGZvciAodHJlZSBjID0gY2xhdXNlczsgYzsgYyA9IE9NUF9DTEFVU0VfQ0hB SU4gKGMpKQotCSAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBfQ0xBVVNFX0RF VklDRV9UWVBFKQotCSAgICAgIGRldmljZV90eXBlIHw9IE9NUF9DTEFVU0VfREVWSUNFX1RZ UEVfS0lORCAoYyk7Ci0JICBjX29tcF9kZWNsYXJlX3RhcmdldF9hdHRyIGF0dHIgPSB7IGRl dmljZV90eXBlIH07CisJICAgIHsKKwkgICAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9 PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFKQorCQlkZXZpY2VfdHlwZSB8PSBPTVBfQ0xBVVNF X0RFVklDRV9UWVBFX0tJTkQgKGMpOworCSAgICAgIGlmIChPTVBfQ0xBVVNFX0NPREUgKGMp ID09IE9NUF9DTEFVU0VfSU5ESVJFQ1QpCisJCWluZGlyZWN0IHw9ICFpbnRlZ2VyX3plcm9w IChPTVBfQ0xBVVNFX0lORElSRUNUX0VYUFIgKGMpKTsKKwkgICAgfQorCSAgY19vbXBfZGVj bGFyZV90YXJnZXRfYXR0ciBhdHRyID0geyBkZXZpY2VfdHlwZSwgaW5kaXJlY3QgfTsKIAkg IHZlY19zYWZlX3B1c2ggKGN1cnJlbnRfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZSwg YXR0cik7CiAJfQogICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2NjL2MvYy10eXBlY2suY2Mg Yi9nY2MvYy9jLXR5cGVjay5jYwppbmRleCBiZGQ1N2FhZTNmZi4uNGMzM2EzMGQyMjMgMTAw NjQ0Ci0tLSBhL2djYy9jL2MtdHlwZWNrLmNjCisrKyBiL2djYy9jL2MtdHlwZWNrLmNjCkBA IC0xNTkxNCw2ICsxNTkxNCw3IEBAIGNfZmluaXNoX29tcF9jbGF1c2VzICh0cmVlIGNsYXVz ZXMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCWNhc2UgT01QX0NMQVVTRV9JRl9Q UkVTRU5UOgogCWNhc2UgT01QX0NMQVVTRV9GSU5BTElaRToKIAljYXNlIE9NUF9DTEFVU0Vf Tk9IT1NUOgorCWNhc2UgT01QX0NMQVVTRV9JTkRJUkVDVDoKIAkgIHBjID0gJk9NUF9DTEFV U0VfQ0hBSU4gKGMpOwogCSAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv Z2NuL21rb2ZmbG9hZC5jYyBiL2djYy9jb25maWcvZ2NuL21rb2ZmbG9hZC5jYwppbmRleCBm NmQ1NmI3OThlMS4uMGUyMjRjYThmNjUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL21r b2ZmbG9hZC5jYworKysgYi9nY2MvY29uZmlnL2djbi9ta29mZmxvYWQuY2MKQEAgLTQ3OSw3 ICs0NzksOCBAQCBjb3B5X2Vhcmx5X2RlYnVnX2luZm8gKGNvbnN0IGNoYXIgKmluZmlsZSwg Y29uc3QgY2hhciAqb3V0ZmlsZSkKIHN0YXRpYyB2b2lkCiBwcm9jZXNzX2FzbSAoRklMRSAq aW4sIEZJTEUgKm91dCwgRklMRSAqY2ZpbGUpCiB7Ci0gIGludCBmbl9jb3VudCA9IDAsIHZh cl9jb3VudCA9IDAsIGRpbXNfY291bnQgPSAwLCByZWdjb3VudF9jb3VudCA9IDA7CisgIGlu dCBmbl9jb3VudCA9IDAsIHZhcl9jb3VudCA9IDAsIGluZF9mbl9jb3VudCA9IDA7CisgIGlu dCBkaW1zX2NvdW50ID0gMCwgcmVnY291bnRfY291bnQgPSAwOwogICBzdHJ1Y3Qgb2JzdGFj ayBmbnNfb3MsIGRpbXNfb3MsIHJlZ2NvdW50c19vczsKICAgb2JzdGFja19pbml0ICgmZm5z X29zKTsKICAgb2JzdGFja19pbml0ICgmZGltc19vcyk7CkBAIC01MDgsNyArNTA5LDggQEAg cHJvY2Vzc19hc20gKEZJTEUgKmluLCBGSUxFICpvdXQsIEZJTEUgKmNmaWxlKQogICAgIHsg SU5fQ09ERSwKICAgICAgIElOX01FVEFEQVRBLAogICAgICAgSU5fVkFSUywKLSAgICAgIElO X0ZVTkNTCisgICAgICBJTl9GVU5DUywKKyAgICAgIElOX0lORF9GVU5DUywKICAgICB9IHN0 YXRlID0gSU5fQ09ERTsKICAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgaW4p KQogICAgIHsKQEAgLTU3MCw2ICs1NzIsMTcgQEAgcHJvY2Vzc19hc20gKEZJTEUgKmluLCBG SUxFICpvdXQsIEZJTEUgKmNmaWxlKQogCSAgICAgIH0KIAkgICAgYnJlYWs7CiAJICB9CisJ Y2FzZSBJTl9JTkRfRlVOQ1M6CisJICB7CisJICAgIGNoYXIgKmZ1bmNuYW1lOworCSAgICBp ZiAoc3NjYW5mIChidWYsICJcdC44Ynl0ZVx0JW1zXG4iLCAmZnVuY25hbWUpKQorCSAgICAg IHsKKwkJZnB1dHMgKGJ1Ziwgb3V0KTsKKwkJaW5kX2ZuX2NvdW50Kys7CisJCWNvbnRpbnVl OworCSAgICAgIH0KKwkgICAgYnJlYWs7CisJICB9CiAJfQogCiAgICAgICBjaGFyIGR1bW15 OwpAQCAtNTk3LDYgKzYxMCwxNSBAQCBwcm9jZXNzX2FzbSAoRklMRSAqaW4sIEZJTEUgKm91 dCwgRklMRSAqY2ZpbGUpCiAJCSAiLm9mZmxvYWRfZnVuY190YWJsZTpcbiIsCiAJCSBvdXQp OwogCX0KKyAgICAgIGVsc2UgaWYgKHNzY2FuZiAoYnVmLCAiIC5zZWN0aW9uIC5nbnUub2Zm bG9hZF9pbmRfZnVuY3MlYyIsICZkdW1teSkgPiAwKQorCXsKKwkgIHN0YXRlID0gSU5fSU5E X0ZVTkNTOworCSAgZnB1dHMgKGJ1Ziwgb3V0KTsKKwkgIGZwdXRzICgiXHQuZ2xvYmFsIC5v ZmZsb2FkX2luZF9mdW5jX3RhYmxlXG4iCisJCSAiXHQudHlwZSAub2ZmbG9hZF9pbmRfZnVu Y190YWJsZSwgQG9iamVjdFxuIgorCQkgIi5vZmZsb2FkX2luZF9mdW5jX3RhYmxlOlxuIiwK KwkJIG91dCk7CisJfQogICAgICAgZWxzZSBpZiAoc3NjYW5mIChidWYsICIgLmFtZGdwdV9t ZXRhZGF0YSVjIiwgJmR1bW15KSA+IDApCiAJewogCSAgc3RhdGUgPSBJTl9NRVRBREFUQTsK QEAgLTYzNCw2ICs2NTYsNyBAQCBwcm9jZXNzX2FzbSAoRklMRSAqaW4sIEZJTEUgKm91dCwg RklMRSAqY2ZpbGUpCiAgIGZwcmludGYgKGNmaWxlLCAiI2luY2x1ZGUgPHN0ZGJvb2wuaD5c blxuIik7CiAKICAgZnByaW50ZiAoY2ZpbGUsICJzdGF0aWMgY29uc3QgaW50IGdjbl9udW1f dmFycyA9ICVkO1xuXG4iLCB2YXJfY291bnQpOworICBmcHJpbnRmIChjZmlsZSwgInN0YXRp YyBjb25zdCBpbnQgZ2NuX251bV9pbmRfZnVuY3MgPSAlZDtcblxuIiwgaW5kX2ZuX2NvdW50 KTsKIAogICAvKiBEdW1wIG91dCBmdW5jdGlvbiBpZGVudHMuICAqLwogICBmcHJpbnRmIChj ZmlsZSwgInN0YXRpYyBjb25zdCBzdHJ1Y3QgaHNhX2tlcm5lbF9kZXNjcmlwdGlvbiB7XG4i CkBAIC03MjgsMTIgKzc1MSwxNCBAQCBwcm9jZXNzX29iaiAoRklMRSAqaW4sIEZJTEUgKmNm aWxlLCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIiAgY29uc3Qgc3RydWN0IGdjbl9p bWFnZSAqZ2NuX2ltYWdlO1xuIgogCSAgICIgIHVuc2lnbmVkIGtlcm5lbF9jb3VudDtcbiIK IAkgICAiICBjb25zdCBzdHJ1Y3QgaHNhX2tlcm5lbF9kZXNjcmlwdGlvbiAqa2VybmVsX2lu Zm9zO1xuIgorCSAgICIgIHVuc2lnbmVkIGluZF9mdW5jX2NvdW50O1xuIgogCSAgICIgIHVu c2lnbmVkIGdsb2JhbF92YXJpYWJsZV9jb3VudDtcbiIKIAkgICAifSBnY25fZGF0YSA9IHtc biIKIAkgICAiICAlZCxcbiIKIAkgICAiICAmZ2NuX2ltYWdlLFxuIgogCSAgICIgIHNpemVv ZiAoZ2NuX2tlcm5lbHMpIC8gc2l6ZW9mIChnY25fa2VybmVsc1swXSksXG4iCiAJICAgIiAg Z2NuX2tlcm5lbHMsXG4iCisJICAgIiAgZ2NuX251bV9pbmRfZnVuY3MsXG4iCiAJICAgIiAg Z2NuX251bV92YXJzXG4iCiAJICAgIn07XG5cbiIsIG9tcF9yZXF1aXJlcyk7CiAKZGlmZiAt LWdpdCBhL2djYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9udnB0 eC9ta29mZmxvYWQuY2MKaW5kZXggYWFlYTlmYjMyMGQuLmZiNzVjYTA5MGRmIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYworKysgYi9nY2MvY29uZmlnL252 cHR4L21rb2ZmbG9hZC5jYwpAQCAtNTEsNiArNTEsNyBAQCBzdHJ1Y3QgaWRfbWFwCiB9Owog CiBzdGF0aWMgaWRfbWFwICpmdW5jX2lkcywgKipmdW5jc190YWlsID0gJmZ1bmNfaWRzOwor c3RhdGljIGlkX21hcCAqaW5kX2Z1bmNfaWRzLCAqKmluZF9mdW5jc190YWlsID0gJmluZF9m dW5jX2lkczsKIHN0YXRpYyBpZF9tYXAgKnZhcl9pZHMsICoqdmFyc190YWlsID0gJnZhcl9p ZHM7CiAKIC8qIEZpbGVzIHRvIHVubGluay4gICovCkBAIC0zMDIsNiArMzAzLDExIEBAIHBy b2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkJ ICAgICAgb3V0cHV0X2ZuX3B0ciA9IHRydWU7CiAJCSAgICAgIHJlY29yZF9pZCAoaW5wdXQg KyBpICsgOSwgJmZ1bmNzX3RhaWwpOwogCQkgICAgfQorCQkgIGVsc2UgaWYgKHN0YXJ0c3dp dGggKGlucHV0ICsgaSwgIklORF9GVU5DX01BUCAiKSkKKwkJICAgIHsKKwkJICAgICAgb3V0 cHV0X2ZuX3B0ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgMTMs ICZpbmRfZnVuY3NfdGFpbCk7CisJCSAgICB9CiAJCSAgZWxzZQogCQkgICAgYWJvcnQgKCk7 CiAJCSAgLyogU2tpcCB0byBuZXh0IGxpbmUuICovCkBAIC00MjIsNiArNDI4LDc3IEBAIHBy b2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKICAg ICAgIGZwcmludGYgKG91dCwgIn07XFxuXCI7XG5cbiIpOwogICAgIH0KIAorICBpZiAoaW5k X2Z1bmNfaWRzKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVH SU4gR0xPQkFMIEZVTkNUSU9OIERFQ0w6ICI7CisKKyAgICAgIGZwcmludGYgKG91dCwgInN0 YXRpYyBjb25zdCBjaGFyIHB0eF9jb2RlXyV1W10gPVxuIiwgb2JqX2NvdW50KyspOworICAg ICAgZnByaW50ZiAob3V0LCAiXHRcIi52ZXJzaW9uICIpOworICAgICAgZm9yIChzaXplX3Qg aSA9IDA7IHZlcnNpb25baV0gIT0gJ1wwJyAmJiB2ZXJzaW9uW2ldICE9ICdcbic7IGkrKykK KwlmcHV0YyAodmVyc2lvbltpXSwgb3V0KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlwiXG5c dFwiLnRhcmdldCBzbV8iKTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBzbV92ZXJbaV0g IT0gJ1wwJyAmJiBzbV92ZXJbaV0gIT0gJ1xuJzsgaSsrKQorCWZwdXRjIChzbV92ZXJbaV0s IG91dCk7CisgICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRcIi5maWxlIDIgXFxcIjxkdW1t eT5cXFwiXCJcbiIpOworCisgICAgICAvKiBXT1JLQVJPVU5EIC0gc2VlIFBSIDEwODA5OAor CSBJdCBzZWVtcyBhcyBpZiBvbGRlciBDVURBIEpJVCBjb21waWxlciBvcHRpbWl6ZXMgdGhl IGZ1bmN0aW9uIHBvaW50ZXJzCisJIGluIG9mZmxvYWRfZnVuY190YWJsZSB0byBOVUxMLCB3 aGljaCBjYW4gYmUgcHJldmVudGVkIGJ5IGFkZGluZyBhCisJIGR1bW15IHByb2NlZHVyZS4g V2l0aCBDVURBIDExLjEsIGl0IHNlZW1zIHRvIHdvcmsgZmluZSB3aXRob3V0CisJIHdvcmth cm91bmQgd2hpbGUgQ1VEQSAxMC4yIGFzIHNvbWUgYW5jaWVudCB2ZXJzaW9uIGhhdmUgbmVl ZCB0aGUKKwkgd29ya2Fyb3VuZC4gQXNzdW1pbmcgQ1VEQSAxMS4wIGZpeGVzIGl0LCBlbWl0 dGluZyBpdCBjb3VsZCBiZQorCSByZXN0cmljdGVkIHRvICdpZiAoc21fdmVyMlswXSA8IDgg JiYgdmVyc2lvbjJbMF0gPCA3KScgYXMgc21fODAgYW5kCisJIFBUWCBJU0EgNy4wIGFyZSBu ZXcgaW4gQ1VEQSAxMS4wOyBmb3IgMTEuMSBpdCB3b3VsZCBiZSBzbV84NiBhbmQKKwkgUFRY IElTQSA3LjEuICAqLworICAgICAgZnByaW50ZiAob3V0LCAiXG5cdFwiLmZ1bmMgX19kdW1t eSRmdW5jMiAoICk7XCJcbiIpOworICAgICAgZnByaW50ZiAob3V0LCAiXHRcIi5mdW5jIF9f ZHVtbXkkZnVuYzIgKCApXCJcbiIpOworICAgICAgZnByaW50ZiAob3V0LCAiXHRcIntcIlxu Iik7CisgICAgICBmcHJpbnRmIChvdXQsICJcdFwifVwiXG4iKTsKKworICAgICAgc2l6ZV90 IGZpZHggPSAwOworICAgICAgZm9yIChpZCA9IGluZF9mdW5jX2lkczsgaWQ7IGlkID0gaWQt Pm5leHQpCisJeworCSAgZnByaW50ZiAob3V0LCAiXHRcIi5leHRlcm4gIik7CisJICBjb25z dCBjaGFyICpwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkgIHdoaWxlICh0cnVlKQor CSAgICB7CisJICAgICAgcCA9IHN0cnN0ciAocCwgbmVlZGxlKTsKKwkgICAgICBpZiAoIXAp CisJCXsKKwkJICBmaWR4Kys7CisJCSAgaWYgKGZpZHggPj0gZmlsZV9jbnQpCisJCSAgICBi cmVhazsKKwkJICBwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkJICBjb250aW51ZTsK KwkJfQorCSAgICAgIHAgKz0gc3RybGVuIChuZWVkbGUpOworCSAgICAgIGlmICghc3RhcnRz d2l0aCAocCwgaWQtPnB0eF9uYW1lKSkKKwkJY29udGludWU7CisJICAgICAgcCArPSBzdHJs ZW4gKGlkLT5wdHhfbmFtZSk7CisJICAgICAgaWYgKCpwICE9ICdcbicpCisJCWNvbnRpbnVl OworCSAgICAgIHArKzsKKwkgICAgICAvKiBTa2lwIG92ZXIgYW55IGRpcmVjdGl2ZXMuICAq LworCSAgICAgIHdoaWxlICghc3RhcnRzd2l0aCAocCwgIi5mdW5jIikpCisJCXdoaWxlICgq cCsrICE9ICcgJyk7CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsg cCsrKQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGZw cmludGYgKG91dCwgIlwiXG4iKTsKKwkgIGlmIChmaWR4ID09IGZpbGVfY250KQorCSAgICBm YXRhbF9lcnJvciAoaW5wdXRfbG9jYXRpb24sCisJCQkgIkNhbm5vdCBmaW5kIGZ1bmN0aW9u IGRlY2xhcmF0aW9uIGZvciAlcXMiLAorCQkJIGlkLT5wdHhfbmFtZSk7CisJfQorCisgICAg ICBmcHJpbnRmIChvdXQsICJcdFwiLnZpc2libGUgLmdsb2JhbCAuYWxpZ24gOCAudTY0ICIK KwkJICAgICIkb2ZmbG9hZF9pbmRfZnVuY190YWJsZVtdID0geyIpOworICAgICAgZm9yIChj b21tYSA9ICIiLCBpZCA9IGluZF9mdW5jX2lkczsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlk LT5uZXh0KQorCWZwcmludGYgKG91dCwgIiVzXCJcblx0XHRcIiVzIiwgY29tbWEsIGlkLT5w dHhfbmFtZSk7CisgICAgICBmcHJpbnRmIChvdXQsICJ9O1xcblwiO1xuXG4iKTsKKyAgICB9 CisKICAgLyogRHVtcCBvdXQgYXJyYXkgb2YgcG9pbnRlcnMgdG8gcHR4IG9iamVjdCBzdHJp bmdzLiAgKi8KICAgZnByaW50ZiAob3V0LCAic3RhdGljIGNvbnN0IHN0cnVjdCBwdHhfb2Jq IHtcbiIKIAkgICAiICBjb25zdCBjaGFyICpjb2RlO1xuIgpAQCAtNDQ3LDYgKzUyNCwxMiBA QCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMp CiAJICAgICBpZC0+ZGltID8gaWQtPmRpbSA6ICIiKTsKICAgZnByaW50ZiAob3V0LCAiXG59 O1xuXG4iKTsKIAorICAvKiBEdW1wIG91dCBpbmRpcmVjdCBmdW5jdGlvbiBpZGVudHMuICAq LworICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaW5kX2Z1bmNf bWFwcGluZ3NbXSA9IHsiKTsKKyAgZm9yIChjb21tYSA9ICIiLCBpZCA9IGluZF9mdW5jX2lk czsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlkLT5uZXh0KQorICAgIGZwcmludGYgKG91dCwg IiVzXG5cdFwiJXNcIiIsIGNvbW1hLCBpZC0+cHR4X25hbWUpOworICBmcHJpbnRmIChvdXQs ICJcbn07XG5cbiIpOworCiAgIGZwcmludGYgKG91dCwKIAkgICAic3RhdGljIGNvbnN0IHN0 cnVjdCBudnB0eF9kYXRhIHtcbiIKIAkgICAiICB1aW50cHRyX3Qgb21wX3JlcXVpcmVzX21h c2s7XG4iCkBAIC00NTYsMTIgKzUzOSwxNCBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAq b3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIiAgdW5zaWduZWQgdmFyX251bTtc biIKIAkgICAiICBjb25zdCBzdHJ1Y3QgbnZwdHhfZm4gKmZuX25hbWVzO1xuIgogCSAgICIg IHVuc2lnbmVkIGZuX251bTtcbiIKKwkgICAiICB1bnNpZ25lZCBpbmRfZm5fbnVtO1xuIgog CSAgICJ9IG52cHR4X2RhdGEgPSB7XG4iCiAJICAgIiAgJWQsIHB0eF9vYmpzLCBzaXplb2Yg KHB0eF9vYmpzKSAvIHNpemVvZiAocHR4X29ianNbMF0pLFxuIgogCSAgICIgIHZhcl9tYXBw aW5ncywiCiAJICAgIiAgc2l6ZW9mICh2YXJfbWFwcGluZ3MpIC8gc2l6ZW9mICh2YXJfbWFw cGluZ3NbMF0pLFxuIgogCSAgICIgIGZ1bmNfbWFwcGluZ3MsIgotCSAgICIgIHNpemVvZiAo ZnVuY19tYXBwaW5ncykgLyBzaXplb2YgKGZ1bmNfbWFwcGluZ3NbMF0pXG4iCisJICAgIiAg c2l6ZW9mIChmdW5jX21hcHBpbmdzKSAvIHNpemVvZiAoZnVuY19tYXBwaW5nc1swXSksXG4i CisJICAgIiAgc2l6ZW9mIChpbmRfZnVuY19tYXBwaW5ncykgLyBzaXplb2YgKGluZF9mdW5j X21hcHBpbmdzWzBdKVxuIgogCSAgICJ9O1xuXG4iLCBvbXBfcmVxdWlyZXMpOwogCiAgIGZw cmludGYgKG91dCwgIiNpZmRlZiBfX2NwbHVzcGx1c1xuIgpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9udnB0eC9udnB0eC5jYyBiL2djYy9jb25maWcvbnZwdHgvbnZwdHguY2MKaW5kZXgg NjM0YzMxNjczYmUuLjBlZWZmOTViM2Y1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL252cHR4 L252cHR4LmNjCisrKyBiL2djYy9jb25maWcvbnZwdHgvbnZwdHguY2MKQEAgLTU5MTksNyAr NTkxOSwxMSBAQCBudnB0eF9yZWNvcmRfb2ZmbG9hZF9zeW1ib2wgKHRyZWUgZGVjbCkKIAkv KiBPcGVuTVAgb2ZmbG9hZGluZyBkb2VzIG5vdCBzZXQgdGhpcyBhdHRyaWJ1dGUuICAqLwog CXRyZWUgZGltcyA9IGF0dHIgPyBUUkVFX1ZBTFVFIChhdHRyKSA6IE5VTExfVFJFRTsKIAot CWZwcmludGYgKGFzbV9vdXRfZmlsZSwgIi8vOkZVTkNfTUFQIFwiJXNcIiIsCisJZnByaW50 ZiAoYXNtX291dF9maWxlLCAiLy86Iik7CisJaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAg ZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QiLAorCQkJICAgICAgREVDTF9BVFRSSUJVVEVTIChk ZWNsKSkpCisJICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJJTkRfIik7CisJZnByaW50ZiAo YXNtX291dF9maWxlLCAiRlVOQ19NQVAgXCIlc1wiIiwKIAkJIElERU5USUZJRVJfUE9JTlRF UiAoREVDTF9BU1NFTUJMRVJfTkFNRSAoZGVjbCkpKTsKIAogCWZvciAoOyBkaW1zOyBkaW1z ID0gVFJFRV9DSEFJTiAoZGltcykpCmRpZmYgLS1naXQgYS9nY2MvY3AvY3AtdHJlZS5oIGIv Z2NjL2NwL2NwLXRyZWUuaAppbmRleCA5OGIyOWU5Y2Y4MS4uYjI2MDNkNDgzMGUgMTAwNjQ0 Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2NwL2NwLXRyZWUuaApAQCAtMTgz MSw2ICsxODMxLDcgQEAgdW5pb24gR1RZKChkZXNjICgiY3BfdHJlZV9ub2RlX3N0cnVjdHVy ZSAoJiVoKSIpLAogc3RydWN0IEdUWSgoKSkgY3Bfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHIg ewogICBib29sIGF0dHJfc3ludGF4OwogICBpbnQgZGV2aWNlX3R5cGU7CisgIGJvb2wgaW5k aXJlY3Q7CiB9OwogCiBzdHJ1Y3QgR1RZKCgpKSBjcF9vbXBfYmVnaW5fYXNzdW1lc19kYXRh IHsKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNsMi5jYyBiL2djYy9jcC9kZWNsMi5jYwppbmRl eCAwYWExZTM1NTk3Mi4uOWU2NjZlNWVlY2UgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsMi5j YworKysgYi9nY2MvY3AvZGVjbDIuY2MKQEAgLTE3NjIsNiArMTc2MiwxMiBAQCBjcGx1c19k ZWNsX2F0dHJpYnV0ZXMgKHRyZWUgKmRlY2wsIHRyZWUgYXR0cmlidXRlcywgaW50IGZsYWdz KQogCQlhdHRyaWJ1dGVzCiAJCSAgPSB0cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyICgib21w IGRlY2xhcmUgdGFyZ2V0IG5vaG9zdCIpLAogCQkJICAgICAgIE5VTExfVFJFRSwgYXR0cmli dXRlcyk7CisJICAgICAgaWYgKGxhc3QuaW5kaXJlY3QKKwkJICAmJiAhbG9va3VwX2F0dHJp YnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJCQkJCWF0dHJpYnV0ZXMp KQorCQlhdHRyaWJ1dGVzCisJCSAgPSB0cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyICgib21w IGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IiksCisJCQkgICAgICAgTlVMTF9UUkVFLCBhdHRy aWJ1dGVzKTsKIAkgICAgfQogCX0KICAgICB9CmRpZmYgLS1naXQgYS9nY2MvY3AvcGFyc2Vy LmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCAyMGUxODM2NTkwNi4uY2QxZDc2NjZhZTMg MTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysrIGIvZ2NjL2NwL3BhcnNlci5jYwpA QCAtMzc1MjQsNiArMzc1MjQsOCBAQCBjcF9wYXJzZXJfb21wX2NsYXVzZV9uYW1lIChjcF9w YXJzZXIgKnBhcnNlcikKIAkgICAgcmVzdWx0ID0gUFJBR01BX09NUF9DTEFVU0VfSU5fUkVE VUNUSU9OOwogCSAgZWxzZSBpZiAoIXN0cmNtcCAoImluYnJhbmNoIiwgcCkpCiAJICAgIHJl c3VsdCA9IFBSQUdNQV9PTVBfQ0xBVVNFX0lOQlJBTkNIOworCSAgZWxzZSBpZiAoIXN0cmNt cCAoImluZGlyZWN0IiwgcCkpCisJICAgIHJlc3VsdCA9IFBSQUdNQV9PTVBfQ0xBVVNFX0lO RElSRUNUOwogCSAgZWxzZSBpZiAoIXN0cmNtcCAoImluZGVwZW5kZW50IiwgcCkpCiAJICAg IHJlc3VsdCA9IFBSQUdNQV9PQUNDX0NMQVVTRV9JTkRFUEVOREVOVDsKIAkgIGVsc2UgaWYg KCFzdHJjbXAgKCJpc19kZXZpY2VfcHRyIiwgcCkpCkBAIC0zODU1OCw2ICszODU2MCw0NiBA QCBjcF9wYXJzZXJfb21wX2NsYXVzZV9maW5hbCAoY3BfcGFyc2VyICpwYXJzZXIsIHRyZWUg bGlzdCwgbG9jYXRpb25fdCBsb2NhdGlvbikKICAgcmV0dXJuIGM7CiB9CiAKKy8qIE9wZW5N UCA1LjE6CisgICBpbmRpcmVjdCBbKCBleHByZXNzaW9uICldCisqLworCitzdGF0aWMgdHJl ZQorY3BfcGFyc2VyX29tcF9jbGF1c2VfaW5kaXJlY3QgKGNwX3BhcnNlciAqcGFyc2VyLCB0 cmVlIGxpc3QsCisJCQkgICAgICAgbG9jYXRpb25fdCBsb2NhdGlvbikKK3sKKyAgdHJlZSB0 OworCisgIGlmIChjcF9sZXhlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXItPmxleGVyLCBDUFBf T1BFTl9QQVJFTikpCisgICAgeworICAgICAgbWF0Y2hpbmdfcGFyZW5zIHBhcmVuczsKKyAg ICAgIGlmICghcGFyZW5zLnJlcXVpcmVfb3BlbiAocGFyc2VyKSkKKwlyZXR1cm4gbGlzdDsK KworICAgICAgYm9vbCBub25fY29uc3RhbnRfcDsKKyAgICAgIHQgPSBjcF9wYXJzZXJfY29u c3RhbnRfZXhwcmVzc2lvbiAocGFyc2VyLCB0cnVlLCAmbm9uX2NvbnN0YW50X3ApOworCisg ICAgICBpZiAodCAhPSBlcnJvcl9tYXJrX25vZGUgJiYgbm9uX2NvbnN0YW50X3ApCisJZXJy b3JfYXQgKGxvY2F0aW9uLCAiZXhwZWN0ZWQgY29uc3RhbnQgbG9naWNhbCBleHByZXNzaW9u Iik7CisKKyAgICAgIGlmICh0ID09IGVycm9yX21hcmtfbm9kZQorCSAgfHwgIXBhcmVucy5y ZXF1aXJlX2Nsb3NlIChwYXJzZXIpKQorCWNwX3BhcnNlcl9za2lwX3RvX2Nsb3NpbmdfcGFy ZW50aGVzaXMgKHBhcnNlciwgLypyZWNvdmVyaW5nPSovdHJ1ZSwKKwkJCQkJICAgICAgIC8q b3JfY29tbWE9Ki9mYWxzZSwKKwkJCQkJICAgICAgIC8qY29uc3VtZV9wYXJlbj0qL3RydWUp OworICAgIH0KKyAgZWxzZQorICAgIHQgPSBpbnRlZ2VyX29uZV9ub2RlOworCisgIGNoZWNr X25vX2R1cGxpY2F0ZV9jbGF1c2UgKGxpc3QsIE9NUF9DTEFVU0VfSU5ESVJFQ1QsICJpbmRp cmVjdCIsIGxvY2F0aW9uKTsKKworICB0cmVlIGMgPSBidWlsZF9vbXBfY2xhdXNlIChsb2Nh dGlvbiwgT01QX0NMQVVTRV9JTkRJUkVDVCk7CisgIE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQ UiAoYykgPSB0OworICBPTVBfQ0xBVVNFX0NIQUlOIChjKSA9IGxpc3Q7CisKKyAgcmV0dXJu IGM7Cit9CisKIC8qIE9wZW5NUCAyLjU6CiAgICBpZiAoIGV4cHJlc3Npb24gKQogCkBAIC00 MTYyOSw2ICs0MTY3MSwxMSBAQCBjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChjcF9wYXJz ZXIgKnBhcnNlciwgb21wX2NsYXVzZV9tYXNrIG1hc2ssCiAJCQkJCSAgICAgIHRydWUsIGNs YXVzZXMpOwogCSAgY19uYW1lID0gImluX3JlZHVjdGlvbiI7CiAJICBicmVhazsKKwljYXNl IFBSQUdNQV9PTVBfQ0xBVVNFX0lORElSRUNUOgorCSAgY2xhdXNlcyA9IGNwX3BhcnNlcl9v bXBfY2xhdXNlX2luZGlyZWN0IChwYXJzZXIsIGNsYXVzZXMsCisJCQkJCQkgICB0b2tlbi0+ bG9jYXRpb24pOworCSAgY19uYW1lID0gImluZGlyZWN0IjsKKwkgIGJyZWFrOwogCWNhc2Ug UFJBR01BX09NUF9DTEFVU0VfTEFTVFBSSVZBVEU6CiAJICBjbGF1c2VzID0gY3BfcGFyc2Vy X29tcF9jbGF1c2VfbGFzdHByaXZhdGUgKHBhcnNlciwgY2xhdXNlcyk7CiAJICBjX25hbWUg PSAibGFzdHByaXZhdGUiOwpAQCAtNDgxNzAsNyArNDgyMTcsOCBAQCBjcF9tYXliZV9wYXJz ZV9vbXBfZGVjbCAodHJlZSBkZWNsLCB0cmVlIGQpCiAgICBvbiAjcHJhZ21hIG9tcCBkZWNs YXJlIHRhcmdldC4gIFJldHVybiBmYWxzZSBpZiBlcnJvcnMgd2VyZSByZXBvcnRlZC4gICov CiAKIHN0YXRpYyBib29sCi1oYW5kbGVfb21wX2RlY2xhcmVfdGFyZ2V0X2NsYXVzZSAodHJl ZSBjLCB0cmVlIHQsIGludCBkZXZpY2VfdHlwZSkKK2hhbmRsZV9vbXBfZGVjbGFyZV90YXJn ZXRfY2xhdXNlICh0cmVlIGMsIHRyZWUgdCwgaW50IGRldmljZV90eXBlLAorCQkJCSAgYm9v bCBpbmRpcmVjdCkKIHsKICAgdHJlZSBhdDEgPSBsb29rdXBfYXR0cmlidXRlICgib21wIGRl Y2xhcmUgdGFyZ2V0IiwgREVDTF9BVFRSSUJVVEVTICh0KSk7CiAgIHRyZWUgYXQyID0gbG9v a3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBsaW5rIiwgREVDTF9BVFRSSUJV VEVTICh0KSk7CkBAIC00ODIzNCw2ICs0ODI4MiwxNyBAQCBoYW5kbGVfb21wX2RlY2xhcmVf dGFyZ2V0X2NsYXVzZSAodHJlZSBjLCB0cmVlIHQsIGludCBkZXZpY2VfdHlwZSkKIAkgIERF Q0xfQVRUUklCVVRFUyAodCkgPSB0cmVlX2NvbnMgKGlkLCBOVUxMX1RSRUUsIERFQ0xfQVRU UklCVVRFUyAodCkpOwogCX0KICAgICB9CisgIGlmIChpbmRpcmVjdCkKKyAgICB7CisgICAg ICB0cmVlIGF0NCA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQgaW5k aXJlY3QiLAorCQkJCSAgIERFQ0xfQVRUUklCVVRFUyAodCkpOworICAgICAgaWYgKGF0NCA9 PSBOVUxMX1RSRUUpCisJeworCSAgaWQgPSBnZXRfaWRlbnRpZmllciAoIm9tcCBkZWNsYXJl IHRhcmdldCBpbmRpcmVjdCIpOworCSAgREVDTF9BVFRSSUJVVEVTICh0KQorCSAgICA9IHRy ZWVfY29ucyAoaWQsIE5VTExfVFJFRSwgREVDTF9BVFRSSUJVVEVTICh0KSk7CisJfQorICAg IH0KICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ4MjUxLDE0ICs0ODMxMCwxNiBAQCBoYW5k bGVfb21wX2RlY2xhcmVfdGFyZ2V0X2NsYXVzZSAodHJlZSBjLCB0cmVlIHQsIGludCBkZXZp Y2VfdHlwZSkKIAkoIChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9U TykJCVwKIAl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9FTlRF UikJXAogCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX0xJTksp CQlcCi0JfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfREVWSUNF X1RZUEUpKQorCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX0RF VklDRV9UWVBFKQlcCisJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFV U0VfSU5ESVJFQ1QpKQogCiBzdGF0aWMgdm9pZAogY3BfcGFyc2VyX29tcF9kZWNsYXJlX3Rh cmdldCAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rKQogewogICB0 cmVlIGNsYXVzZXMgPSBOVUxMX1RSRUU7CiAgIGludCBkZXZpY2VfdHlwZSA9IDA7Ci0gIGJv b2wgb25seV9kZXZpY2VfdHlwZSA9IHRydWU7CisgIGJvb2wgaW5kaXJlY3QgPSBmYWxzZTsK KyAgYm9vbCBvbmx5X2RldmljZV90eXBlX29yX2luZGlyZWN0ID0gdHJ1ZTsKICAgaWYgKGNw X2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9OQU1FKQogICAgICAg fHwgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9DT01NQSkK IAkgICYmIGNwX2xleGVyX250aF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgMiwgQ1BQX05B TUUpKSkKQEAgLTQ4Mjc2LDIxICs0ODMzNywyNiBAQCBjcF9wYXJzZXJfb21wX2RlY2xhcmVf dGFyZ2V0IChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2spCiAgIGVs c2UKICAgICB7CiAgICAgICBjcF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0ciBhCi0JPSB7IHBh cnNlci0+bGV4ZXItPmluX29tcF9hdHRyaWJ1dGVfcHJhZ21hLCAtMSB9OworCT0geyBwYXJz ZXItPmxleGVyLT5pbl9vbXBfYXR0cmlidXRlX3ByYWdtYSwgLTEsIGZhbHNlIH07CiAgICAg ICB2ZWNfc2FmZV9wdXNoIChzY29wZV9jaGFpbi0+b21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJp YnV0ZSwgYSk7CiAgICAgICBjcF9wYXJzZXJfcmVxdWlyZV9wcmFnbWFfZW9sIChwYXJzZXIs IHByYWdtYV90b2spOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgZm9yICh0cmVlIGMgPSBj bGF1c2VzOyBjOyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCi0gICAgaWYgKE9NUF9DTEFV U0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSkKLSAgICAgIGRldmljZV90 eXBlIHw9IE9NUF9DTEFVU0VfREVWSUNFX1RZUEVfS0lORCAoYyk7CiAgIGZvciAodHJlZSBj ID0gY2xhdXNlczsgYzsgYyA9IE9NUF9DTEFVU0VfQ0hBSU4gKGMpKQogICAgIHsKICAgICAg IGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfREVWSUNFX1RZUEUpCisJ ZGV2aWNlX3R5cGUgfD0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRV9LSU5EIChjKTsKKyAgICAg IGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfSU5ESVJFQ1QpCisJaW5k aXJlY3QgfD0gIWludGVnZXJfemVyb3AgKE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQUiAoYykp OworICAgIH0KKyAgZm9yICh0cmVlIGMgPSBjbGF1c2VzOyBjOyBjID0gT01QX0NMQVVTRV9D SEFJTiAoYykpCisgICAgeworICAgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykgPT0gT01Q X0NMQVVTRV9ERVZJQ0VfVFlQRQorCSAgfHwgT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBf Q0xBVVNFX0lORElSRUNUKQogCWNvbnRpbnVlOwogICAgICAgdHJlZSB0ID0gT01QX0NMQVVT RV9ERUNMIChjKTsKLSAgICAgIG9ubHlfZGV2aWNlX3R5cGUgPSBmYWxzZTsKLSAgICAgIGlm ICghaGFuZGxlX29tcF9kZWNsYXJlX3RhcmdldF9jbGF1c2UgKGMsIHQsIGRldmljZV90eXBl KSkKKyAgICAgIG9ubHlfZGV2aWNlX3R5cGVfb3JfaW5kaXJlY3QgPSBmYWxzZTsKKyAgICAg IGlmICghaGFuZGxlX29tcF9kZWNsYXJlX3RhcmdldF9jbGF1c2UgKGMsIHQsIGRldmljZV90 eXBlLCBpbmRpcmVjdCkpCiAJY29udGludWU7CiAgICAgICBpZiAoVkFSX09SX0ZVTkNUSU9O X0RFQ0xfUCAodCkKIAkgICYmIERFQ0xfTE9DQUxfREVDTF9QICh0KQpAQCAtNDgyOTgsMTEg KzQ4MzY0LDE1IEBAIGNwX3BhcnNlcl9vbXBfZGVjbGFyZV90YXJnZXQgKGNwX3BhcnNlciAq cGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaykKIAkgICYmIERFQ0xfTE9DQUxfREVDTF9B TElBUyAodCkKIAkgICYmIERFQ0xfTE9DQUxfREVDTF9BTElBUyAodCkgIT0gZXJyb3JfbWFy a19ub2RlKQogCWhhbmRsZV9vbXBfZGVjbGFyZV90YXJnZXRfY2xhdXNlIChjLCBERUNMX0xP Q0FMX0RFQ0xfQUxJQVMgKHQpLAotCQkJCQkgIGRldmljZV90eXBlKTsKKwkJCQkJICBkZXZp Y2VfdHlwZSwgaW5kaXJlY3QpOwogICAgIH0KLSAgaWYgKGRldmljZV90eXBlICYmIG9ubHlf ZGV2aWNlX3R5cGUpCisgIGlmICgoZGV2aWNlX3R5cGUgfHwgaW5kaXJlY3QpICYmIG9ubHlf ZGV2aWNlX3R5cGVfb3JfaW5kaXJlY3QpCisgICAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9D QVRJT04gKGNsYXVzZXMpLAorCSAgICAgICJkaXJlY3RpdmUgd2l0aCBvbmx5ICU8ZGV2aWNl X3R5cGUlPiBvciAlPGluZGlyZWN0JT4gY2xhdXNlcyIpOworICBpZiAoaW5kaXJlY3QgJiYg ZGV2aWNlX3R5cGUgJiYgZGV2aWNlX3R5cGUgIT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRV9B TlkpCiAgICAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9DQVRJT04gKGNsYXVzZXMpLAotCSAg ICAgICJkaXJlY3RpdmUgd2l0aCBvbmx5ICU8ZGV2aWNlX3R5cGUlPiBjbGF1c2UiKTsKKwkg ICAgICAiJTxkZXZpY2VfdHlwZSU+IGNsYXVzZSBtdXN0IHNwZWNpZnkgJ2FueScgd2hlbiB1 c2VkIHdpdGggIgorCSAgICAgICJhbiAlPGluZGlyZWN0JT4gY2xhdXNlIik7CiB9CiAKIC8q IE9wZW5NUCA1LjEKQEAgLTQ4MzExLDcgKzQ4MzgxLDggQEAgY3BfcGFyc2VyX29tcF9kZWNs YXJlX3RhcmdldCAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rKQog ICAgIyBwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGNsYXVzZXNbb3B0c2VxXSBu ZXctbGluZSAgKi8KIAogI2RlZmluZSBPTVBfQkVHSU5fREVDTEFSRV9UQVJHRVRfQ0xBVVNF X01BU0sJCQlcCi0JKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX0RF VklDRV9UWVBFKQorCSggKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNF X0RFVklDRV9UWVBFKQlcCisJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9D TEFVU0VfSU5ESVJFQ1QpKQogCiBzdGF0aWMgdm9pZAogY3BfcGFyc2VyX29tcF9iZWdpbiAo Y3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rKQpAQCAtNDgzNDEsMTEg KzQ4NDEyLDE2IEBAIGNwX3BhcnNlcl9vbXBfYmVnaW4gKGNwX3BhcnNlciAqcGFyc2VyLCBj cF90b2tlbiAqcHJhZ21hX3RvaykKIAkJCQkJICIjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJl IHRhcmdldCIsCiAJCQkJCSBwcmFnbWFfdG9rKTsKIAkgIGludCBkZXZpY2VfdHlwZSA9IDA7 CisJICBib29sIGluZGlyZWN0ID0gMDsKIAkgIGZvciAodHJlZSBjID0gY2xhdXNlczsgYzsg YyA9IE9NUF9DTEFVU0VfQ0hBSU4gKGMpKQotCSAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChj KSA9PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFKQotCSAgICAgIGRldmljZV90eXBlIHw9IE9N UF9DTEFVU0VfREVWSUNFX1RZUEVfS0lORCAoYyk7CisJICAgIHsKKwkgICAgICBpZiAoT01Q X0NMQVVTRV9DT0RFIChjKSA9PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFKQorCQlkZXZpY2Vf dHlwZSB8PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFX0tJTkQgKGMpOworCSAgICAgIGlmIChP TVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfSU5ESVJFQ1QpCisJCWluZGlyZWN0 IHw9ICFpbnRlZ2VyX3plcm9wIChPTVBfQ0xBVVNFX0lORElSRUNUX0VYUFIgKGMpKTsKKwkg ICAgfQogCSAgY3Bfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHIgYQotCSAgICA9IHsgaW5fb21w X2F0dHJpYnV0ZV9wcmFnbWEsIGRldmljZV90eXBlIH07CisJICAgID0geyBpbl9vbXBfYXR0 cmlidXRlX3ByYWdtYSwgZGV2aWNlX3R5cGUsIGluZGlyZWN0IH07CiAJICB2ZWNfc2FmZV9w dXNoIChzY29wZV9jaGFpbi0+b21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZSwgYSk7CiAJ fQogICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlbWFudGljcy5jYyBiL2djYy9j cC9zZW1hbnRpY3MuY2MKaW5kZXggMzdiZmZjYThlNTUuLjQwNTllNzRiZGI3IDEwMDY0NAot LS0gYS9nY2MvY3Avc2VtYW50aWNzLmNjCisrKyBiL2djYy9jcC9zZW1hbnRpY3MuY2MKQEAg LTg4ODgsNiArODg4OCw3IEBAIGZpbmlzaF9vbXBfY2xhdXNlcyAodHJlZSBjbGF1c2VzLCBl bnVtIGNfb21wX3JlZ2lvbl90eXBlIG9ydCkKIAljYXNlIE9NUF9DTEFVU0VfSUZfUFJFU0VO VDoKIAljYXNlIE9NUF9DTEFVU0VfRklOQUxJWkU6CiAJY2FzZSBPTVBfQ0xBVVNFX05PSE9T VDoKKwljYXNlIE9NUF9DTEFVU0VfSU5ESVJFQ1Q6CiAJICBicmVhazsKIAogCWNhc2UgT01Q X0NMQVVTRV9NRVJHRUFCTEU6CmRpZmYgLS1naXQgYS9nY2MvbHRvLWNncmFwaC5jYyBiL2dj Yy9sdG8tY2dyYXBoLmNjCmluZGV4IDMyYzBmNWFjNmRiLi5kYjZhMjJhNDQ0ZSAxMDA2NDQK LS0tIGEvZ2NjL2x0by1jZ3JhcGguY2MKKysrIGIvZ2NjL2x0by1jZ3JhcGguY2MKQEAgLTY4 LDYgKzY4LDcgQEAgZW51bSBMVE9fc3ltdGFiX3RhZ3MKICAgTFRPX3N5bXRhYl9lZGdlLAog ICBMVE9fc3ltdGFiX2luZGlyZWN0X2VkZ2UsCiAgIExUT19zeW10YWJfdmFyaWFibGUsCisg IExUT19zeW10YWJfaW5kaXJlY3RfZnVuY3Rpb24sCiAgIExUT19zeW10YWJfbGFzdF90YWcK IH07CiAKQEAgLTExMTEsNiArMTExMiwxOCBAQCBvdXRwdXRfb2ZmbG9hZF90YWJsZXMgKHZv aWQpCiAJCQkgICAgICAgKCpvZmZsb2FkX3ZhcnMpW2ldKTsKICAgICB9CiAKKyAgZm9yICh1 bnNpZ25lZCBpID0gMDsgaSA8IHZlY19zYWZlX2xlbmd0aCAob2ZmbG9hZF9pbmRfZnVuY3Mp OyBpKyspCisgICAgeworICAgICAgc3ltdGFiX25vZGUgKm5vZGUgPSBzeW10YWJfbm9kZTo6 Z2V0ICgoKm9mZmxvYWRfaW5kX2Z1bmNzKVtpXSk7CisgICAgICBpZiAoIW5vZGUpCisJY29u dGludWU7CisgICAgICBub2RlLT5mb3JjZV9vdXRwdXQgPSB0cnVlOworICAgICAgc3RyZWFt ZXJfd3JpdGVfZW51bSAob2ItPm1haW5fc3RyZWFtLCBMVE9fc3ltdGFiX3RhZ3MsCisJCQkg ICBMVE9fc3ltdGFiX2xhc3RfdGFnLCBMVE9fc3ltdGFiX2luZGlyZWN0X2Z1bmN0aW9uKTsK KyAgICAgIGx0b19vdXRwdXRfZm5fZGVjbF9yZWYgKG9iLT5kZWNsX3N0YXRlLCBvYi0+bWFp bl9zdHJlYW0sCisJCQkgICAgICAoKm9mZmxvYWRfaW5kX2Z1bmNzKVtpXSk7CisgICAgfQor CiAgIGlmIChvdXRwdXRfcmVxdWlyZXMpCiAgICAgewogICAgICAgSE9TVF9XSURFX0lOVCB2 YWwgPSAoKEhPU1RfV0lERV9JTlQpIG9tcF9yZXF1aXJlc19tYXNrCkBAIC0xMTM0LDYgKzEx NDcsNyBAQCBvdXRwdXRfb2ZmbG9hZF90YWJsZXMgKHZvaWQpCiAgICAgewogICAgICAgdmVj X2ZyZWUgKG9mZmxvYWRfZnVuY3MpOwogICAgICAgdmVjX2ZyZWUgKG9mZmxvYWRfdmFycyk7 CisgICAgICB2ZWNfZnJlZSAob2ZmbG9hZF9pbmRfZnVuY3MpOwogICAgIH0KIH0KIApAQCAt MTg2Myw2ICsxODc3LDE5IEBAIGlucHV0X29mZmxvYWRfdGFibGVzIChib29sIGRvX2ZvcmNl X291dHB1dCkKIAkJdmFycG9vbF9ub2RlOjpnZXQgKHZhcl9kZWNsKS0+Zm9yY2Vfb3V0cHV0 ID0gMTsKIAkgICAgICB0bXBfZGVjbCA9IHZhcl9kZWNsOwogCSAgICB9CisJICBlbHNlIGlm ICh0YWcgPT0gTFRPX3N5bXRhYl9pbmRpcmVjdF9mdW5jdGlvbikKKwkgICAgeworCSAgICAg IHRyZWUgZm5fZGVjbAorCQk9IGx0b19pbnB1dF9mbl9kZWNsX3JlZiAoaWIsIGZpbGVfZGF0 YSk7CisJICAgICAgdmVjX3NhZmVfcHVzaCAob2ZmbG9hZF9pbmRfZnVuY3MsIGZuX2RlY2wp OworCisJICAgICAgLyogUHJldmVudCBJUEEgZnJvbSByZW1vdmluZyBmbl9kZWNsIGFzIHVu cmVhY2hhYmxlLCBzaW5jZSB0aGVyZQorCQkgbWF5IGJlIG5vIHJlZnMgZnJvbSB0aGUgcGFy ZW50IGZ1bmN0aW9uIHRvIGNoaWxkX2ZuIGluIG9mZmxvYWQKKwkJIExUTyBtb2RlLiAgKi8K KwkgICAgICBpZiAoZG9fZm9yY2Vfb3V0cHV0KQorCQljZ3JhcGhfbm9kZTo6Z2V0IChmbl9k ZWNsKS0+bWFya19mb3JjZV9vdXRwdXQgKCk7CisJICAgICAgdG1wX2RlY2wgPSBmbl9kZWNs OworCSAgICB9CiAJICBlbHNlIGlmICh0YWcgPT0gTFRPX3N5bXRhYl9lZGdlKQogCSAgICB7 CiAJICAgICAgc3RhdGljIGJvb2wgZXJyb3JfZW1pdHRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0 IGEvZ2NjL2x0by1zZWN0aW9uLW5hbWVzLmggYi9nY2MvbHRvLXNlY3Rpb24tbmFtZXMuaApp bmRleCBhYTFiMmYyZWVmZi4uZjdlZDYyMjc3MmYgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc2Vj dGlvbi1uYW1lcy5oCisrKyBiL2djYy9sdG8tc2VjdGlvbi1uYW1lcy5oCkBAIC0zNyw1ICsz Nyw2IEBAIGV4dGVybiBjb25zdCBjaGFyICpzZWN0aW9uX25hbWVfcHJlZml4OwogCiAjZGVm aW5lIE9GRkxPQURfVkFSX1RBQkxFX1NFQ1RJT05fTkFNRSAiLmdudS5vZmZsb2FkX3ZhcnMi CiAjZGVmaW5lIE9GRkxPQURfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUgIi5nbnUub2ZmbG9h ZF9mdW5jcyIKKyNkZWZpbmUgT0ZGTE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUg Ii5nbnUub2ZmbG9hZF9pbmRfZnVuY3MiCiAKICNlbmRpZiAvKiBHQ0NfTFRPX1NFQ1RJT05f TkFNRVNfSCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL29tcC1idWlsdGlucy5kZWYgYi9nY2Mvb21w LWJ1aWx0aW5zLmRlZgppbmRleCBlMGYwMzI2M2RiMC4uZWQ3OGQ0OWQyMDUgMTAwNjQ0Ci0t LSBhL2djYy9vbXAtYnVpbHRpbnMuZGVmCisrKyBiL2djYy9vbXAtYnVpbHRpbnMuZGVmCkBA IC00NDUsNiArNDQ1LDkgQEAgREVGX0dPTVBfQlVJTFRJTiAoQlVJTFRfSU5fR09NUF9UQVJH RVRfVVBEQVRFLCAiR09NUF90YXJnZXRfdXBkYXRlX2V4dCIsCiBERUZfR09NUF9CVUlMVElO IChCVUlMVF9JTl9HT01QX1RBUkdFVF9FTlRFUl9FWElUX0RBVEEsCiAJCSAgIkdPTVBfdGFy Z2V0X2VudGVyX2V4aXRfZGF0YSIsCiAJCSAgQlRfRk5fVk9JRF9JTlRfU0laRV9QVFJfUFRS X1BUUl9VSU5UX1BUUiwgQVRUUl9OT1RIUk9XX0xJU1QpCitERUZfR09NUF9CVUlMVElOIChC VUlMVF9JTl9HT01QX1RBUkdFVF9NQVBfSU5ESVJFQ1RfUFRSLAorCQkgICJHT01QX3Rhcmdl dF9tYXBfaW5kaXJlY3RfcHRyIiwKKwkJICBCVF9GTl9QVFJfUFRSLCBBVFRSX05PVEhST1df TElTVCkKIERFRl9HT01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfVEVBTVM0LCAiR09NUF90 ZWFtczQiLAogCQkgIEJUX0ZOX0JPT0xfVUlOVF9VSU5UX1VJTlRfQk9PTCwgQVRUUl9OT1RI Uk9XX0xJU1QpCiBERUZfR09NUF9CVUlMVElOIChCVUlMVF9JTl9HT01QX1RFQU1TX1JFRywg IkdPTVBfdGVhbXNfcmVnIiwKZGlmZiAtLWdpdCBhL2djYy9vbXAtb2ZmbG9hZC5jYyBiL2dj Yy9vbXAtb2ZmbG9hZC5jYwppbmRleCAwZDNjODc5NGQ1NC4uMWQ2ZGZlZjc0ZmMgMTAwNjQ0 Ci0tLSBhL2djYy9vbXAtb2ZmbG9hZC5jYworKysgYi9nY2Mvb21wLW9mZmxvYWQuY2MKQEAg LTg2LDcgKzg2LDcgQEAgc3RydWN0IG9hY2NfbG9vcAogfTsKIAogLyogSG9sZHMgb2ZmbG9h ZCB0YWJsZXMgd2l0aCBkZWNscy4gICovCi12ZWM8dHJlZSwgdmFfZ2M+ICpvZmZsb2FkX2Z1 bmNzLCAqb2ZmbG9hZF92YXJzOwordmVjPHRyZWUsIHZhX2djPiAqb2ZmbG9hZF9mdW5jcywg Km9mZmxvYWRfdmFycywgKm9mZmxvYWRfaW5kX2Z1bmNzOwogCiAvKiBSZXR1cm4gbGV2ZWwg YXQgd2hpY2ggb2FjYyByb3V0aW5lIG1heSBzcGF3biBhIHBhcnRpdGlvbmVkIGxvb3AsIG9y CiAgICAtMSBpZiBpdCBpcyBub3QgYSByb3V0aW5lIChpLmUuIGlzIGFuIG9mZmxvYWQgZm4p LiAgKi8KQEAgLTM1MSw2ICszNTEsOSBAQCBvbXBfZGlzY292ZXJfaW1wbGljaXRfZGVjbGFy ZV90YXJnZXQgKHZvaWQpCiAgICAgaWYgKERFQ0xfU0FWRURfVFJFRSAobm9kZS0+ZGVjbCkp CiAgICAgICB7CiAJc3RydWN0IGNncmFwaF9ub2RlICpjZ247CisJaWYgKGxvb2t1cF9hdHRy aWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QiLAorCQkJICAgICAgREVDTF9B VFRSSUJVVEVTIChub2RlLT5kZWNsKSkpCisJICB2ZWNfc2FmZV9wdXNoIChvZmZsb2FkX2lu ZF9mdW5jcywgbm9kZS0+ZGVjbCk7CiAgICAgICAgIGlmIChvbXBfZGVjbGFyZV90YXJnZXRf Zm5fcCAobm9kZS0+ZGVjbCkpCiAJICB3b3JrbGlzdC5zYWZlX3B1c2ggKG5vZGUtPmRlY2wp OwogCWVsc2UgaWYgKERFQ0xfU1RSVUNUX0ZVTkNUSU9OIChub2RlLT5kZWNsKQpAQCAtMzk3 LDQ5ICs0MDAsNjYgQEAgb21wX2ZpbmlzaF9maWxlICh2b2lkKQogewogICB1bnNpZ25lZCBu dW1fZnVuY3MgPSB2ZWNfc2FmZV9sZW5ndGggKG9mZmxvYWRfZnVuY3MpOwogICB1bnNpZ25l ZCBudW1fdmFycyA9IHZlY19zYWZlX2xlbmd0aCAob2ZmbG9hZF92YXJzKTsKKyAgdW5zaWdu ZWQgbnVtX2luZF9mdW5jcyA9IHZlY19zYWZlX2xlbmd0aCAob2ZmbG9hZF9pbmRfZnVuY3Mp OwogCi0gIGlmIChudW1fZnVuY3MgPT0gMCAmJiBudW1fdmFycyA9PSAwKQorICBpZiAobnVt X2Z1bmNzID09IDAgJiYgbnVtX3ZhcnMgPT0gMCAmJiBudW1faW5kX2Z1bmNzID09IDApCiAg ICAgcmV0dXJuOwogCiAgIGlmICh0YXJnZXRtX2NvbW1vbi5oYXZlX25hbWVkX3NlY3Rpb25z KQogICAgIHsKLSAgICAgIHZlYzxjb25zdHJ1Y3Rvcl9lbHQsIHZhX2djPiAqdl9mLCAqdl92 OworICAgICAgdmVjPGNvbnN0cnVjdG9yX2VsdCwgdmFfZ2M+ICp2X2YsICp2X3YsICp2X2lm OwogICAgICAgdmVjX2FsbG9jICh2X2YsIG51bV9mdW5jcyk7CiAgICAgICB2ZWNfYWxsb2Mg KHZfdiwgbnVtX3ZhcnMgKiAyKTsKKyAgICAgIHZlY19hbGxvYyAodl9pZiwgbnVtX2luZF9m dW5jcyk7CiAKICAgICAgIGFkZF9kZWNsc19hZGRyZXNzZXNfdG9fZGVjbF9jb25zdHJ1Y3Rv ciAob2ZmbG9hZF9mdW5jcywgdl9mKTsKICAgICAgIGFkZF9kZWNsc19hZGRyZXNzZXNfdG9f ZGVjbF9jb25zdHJ1Y3RvciAob2ZmbG9hZF92YXJzLCB2X3YpOworICAgICAgYWRkX2RlY2xz X2FkZHJlc3Nlc190b19kZWNsX2NvbnN0cnVjdG9yIChvZmZsb2FkX2luZF9mdW5jcywgdl9p Zik7CiAKICAgICAgIHRyZWUgdmFyc19kZWNsX3R5cGUgPSBidWlsZF9hcnJheV90eXBlX25l bHRzIChwb2ludGVyX3NpemVkX2ludF9ub2RlLAogCQkJCQkJICAgIHZlY19zYWZlX2xlbmd0 aCAodl92KSk7CiAgICAgICB0cmVlIGZ1bmNzX2RlY2xfdHlwZSA9IGJ1aWxkX2FycmF5X3R5 cGVfbmVsdHMgKHBvaW50ZXJfc2l6ZWRfaW50X25vZGUsCiAJCQkJCQkgICAgIG51bV9mdW5j cyk7CisgICAgICB0cmVlIGluZF9mdW5jc19kZWNsX3R5cGUgPSBidWlsZF9hcnJheV90eXBl X25lbHRzIChwb2ludGVyX3NpemVkX2ludF9ub2RlLAorCQkJCQkJCSBudW1faW5kX2Z1bmNz KTsKKwogICAgICAgU0VUX1RZUEVfQUxJR04gKHZhcnNfZGVjbF90eXBlLCBUWVBFX0FMSUdO IChwb2ludGVyX3NpemVkX2ludF9ub2RlKSk7CiAgICAgICBTRVRfVFlQRV9BTElHTiAoZnVu Y3NfZGVjbF90eXBlLCBUWVBFX0FMSUdOIChwb2ludGVyX3NpemVkX2ludF9ub2RlKSk7Cisg ICAgICBTRVRfVFlQRV9BTElHTiAoaW5kX2Z1bmNzX2RlY2xfdHlwZSwgVFlQRV9BTElHTiAo cG9pbnRlcl9zaXplZF9pbnRfbm9kZSkpOwogICAgICAgdHJlZSBjdG9yX3YgPSBidWlsZF9j b25zdHJ1Y3RvciAodmFyc19kZWNsX3R5cGUsIHZfdik7CiAgICAgICB0cmVlIGN0b3JfZiA9 IGJ1aWxkX2NvbnN0cnVjdG9yIChmdW5jc19kZWNsX3R5cGUsIHZfZik7Ci0gICAgICBUUkVF X0NPTlNUQU5UIChjdG9yX3YpID0gVFJFRV9DT05TVEFOVCAoY3Rvcl9mKSA9IDE7Ci0gICAg ICBUUkVFX1NUQVRJQyAoY3Rvcl92KSA9IFRSRUVfU1RBVElDIChjdG9yX2YpID0gMTsKKyAg ICAgIHRyZWUgY3Rvcl9pZiA9IGJ1aWxkX2NvbnN0cnVjdG9yIChpbmRfZnVuY3NfZGVjbF90 eXBlLCB2X2lmKTsKKyAgICAgIFRSRUVfQ09OU1RBTlQgKGN0b3JfdikgPSBUUkVFX0NPTlNU QU5UIChjdG9yX2YpID0gVFJFRV9DT05TVEFOVCAoY3Rvcl9pZikgPSAxOworICAgICAgVFJF RV9TVEFUSUMgKGN0b3JfdikgPSBUUkVFX1NUQVRJQyAoY3Rvcl9mKSA9IFRSRUVfU1RBVElD IChjdG9yX2lmKSA9IDE7CiAgICAgICB0cmVlIGZ1bmNzX2RlY2wgPSBidWlsZF9kZWNsIChV TktOT1dOX0xPQ0FUSU9OLCBWQVJfREVDTCwKIAkJCQkgICAgZ2V0X2lkZW50aWZpZXIgKCIu b2ZmbG9hZF9mdW5jX3RhYmxlIiksCiAJCQkJICAgIGZ1bmNzX2RlY2xfdHlwZSk7CiAgICAg ICB0cmVlIHZhcnNfZGVjbCA9IGJ1aWxkX2RlY2wgKFVOS05PV05fTE9DQVRJT04sIFZBUl9E RUNMLAogCQkJCSAgIGdldF9pZGVudGlmaWVyICgiLm9mZmxvYWRfdmFyX3RhYmxlIiksCiAJ CQkJICAgdmFyc19kZWNsX3R5cGUpOwotICAgICAgVFJFRV9TVEFUSUMgKGZ1bmNzX2RlY2wp ID0gVFJFRV9TVEFUSUMgKHZhcnNfZGVjbCkgPSAxOworICAgICAgdHJlZSBpbmRfZnVuY3Nf ZGVjbCA9IGJ1aWxkX2RlY2wgKFVOS05PV05fTE9DQVRJT04sIFZBUl9ERUNMLAorCQkJCQln ZXRfaWRlbnRpZmllciAoIi5vZmZsb2FkX2luZF9mdW5jX3RhYmxlIiksCisJCQkJCWluZF9m dW5jc19kZWNsX3R5cGUpOworICAgICAgVFJFRV9TVEFUSUMgKGZ1bmNzX2RlY2wpID0gVFJF RV9TVEFUSUMgKGluZF9mdW5jc19kZWNsKSA9IDE7CisgICAgICBUUkVFX1NUQVRJQyAodmFy c19kZWNsKSA9IDE7CiAgICAgICAvKiBEbyBub3QgYWxpZ24gdGFibGVzIG1vcmUgdGhhbiBU WVBFX0FMSUdOIChwb2ludGVyX3NpemVkX2ludF9ub2RlKSwKIAkgb3RoZXJ3aXNlIGEgam9p bnQgdGFibGUgaW4gYSBiaW5hcnkgd2lsbCBjb250YWluIHBhZGRpbmcgYmV0d2VlbgogCSB0 YWJsZXMgZnJvbSBtdWx0aXBsZSBvYmplY3QgZmlsZXMuICAqLwotICAgICAgREVDTF9VU0VS X0FMSUdOIChmdW5jc19kZWNsKSA9IERFQ0xfVVNFUl9BTElHTiAodmFyc19kZWNsKSA9IDE7 CisgICAgICBERUNMX1VTRVJfQUxJR04gKGZ1bmNzX2RlY2wpID0gREVDTF9VU0VSX0FMSUdO IChpbmRfZnVuY3NfZGVjbCkgPSAxOworICAgICAgREVDTF9VU0VSX0FMSUdOICh2YXJzX2Rl Y2wpID0gMTsKICAgICAgIFNFVF9ERUNMX0FMSUdOIChmdW5jc19kZWNsLCBUWVBFX0FMSUdO IChmdW5jc19kZWNsX3R5cGUpKTsKICAgICAgIFNFVF9ERUNMX0FMSUdOICh2YXJzX2RlY2ws IFRZUEVfQUxJR04gKHZhcnNfZGVjbF90eXBlKSk7CisgICAgICBTRVRfREVDTF9BTElHTiAo aW5kX2Z1bmNzX2RlY2wsIFRZUEVfQUxJR04gKGluZF9mdW5jc19kZWNsX3R5cGUpKTsKICAg ICAgIERFQ0xfSU5JVElBTCAoZnVuY3NfZGVjbCkgPSBjdG9yX2Y7CiAgICAgICBERUNMX0lO SVRJQUwgKHZhcnNfZGVjbCkgPSBjdG9yX3Y7CisgICAgICBERUNMX0lOSVRJQUwgKGluZF9m dW5jc19kZWNsKSA9IGN0b3JfaWY7CiAgICAgICBzZXRfZGVjbF9zZWN0aW9uX25hbWUgKGZ1 bmNzX2RlY2wsIE9GRkxPQURfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUpOwogICAgICAgc2V0 X2RlY2xfc2VjdGlvbl9uYW1lICh2YXJzX2RlY2wsIE9GRkxPQURfVkFSX1RBQkxFX1NFQ1RJ T05fTkFNRSk7Ci0KKyAgICAgIHNldF9kZWNsX3NlY3Rpb25fbmFtZSAoaW5kX2Z1bmNzX2Rl Y2wsCisJCQkgICAgIE9GRkxPQURfSU5EX0ZVTkNfVEFCTEVfU0VDVElPTl9OQU1FKTsKICAg ICAgIHZhcnBvb2xfbm9kZTo6ZmluYWxpemVfZGVjbCAodmFyc19kZWNsKTsKICAgICAgIHZh cnBvb2xfbm9kZTo6ZmluYWxpemVfZGVjbCAoZnVuY3NfZGVjbCk7CisgICAgICB2YXJwb29s X25vZGU6OmZpbmFsaXplX2RlY2wgKGluZF9mdW5jc19kZWNsKTsKICAgICB9CiAgIGVsc2UK ICAgICB7CkBAIC00NzEsNiArNDkxLDE1IEBAIG9tcF9maW5pc2hfZmlsZSAodm9pZCkKICNl bmRpZgogCSAgICB0YXJnZXRtLnJlY29yZF9vZmZsb2FkX3N5bWJvbCAoaXQpOwogCX0KKyAg ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1faW5kX2Z1bmNzOyBpKyspCisJewor CSAgdHJlZSBpdCA9ICgqb2ZmbG9hZF9pbmRfZnVuY3MpW2ldOworCSAgLyogU2VlIGFsc28g YWRkX2RlY2xzX2FkZHJlc3Nlc190b19kZWNsX2NvbnN0cnVjdG9yCisJICAgICBhbmQgb3V0 cHV0X29mZmxvYWRfdGFibGVzIGluIGx0by1jZ3JhcGguY2MuICAqLworCSAgaWYgKCFpbl9s dG9fcCAmJiAhc3ltdGFiX25vZGU6OmdldCAoaXQpKQorCSAgICBjb250aW51ZTsKKwkgIHRh cmdldG0ucmVjb3JkX29mZmxvYWRfc3ltYm9sIChpdCk7CisJfQogICAgIH0KIH0KIApAQCAt MjYwMyw2ICsyNjMyLDExIEBAIGV4ZWN1dGVfb21wX2RldmljZV9sb3dlciAoKQogICBnaW1w bGVfc3RtdF9pdGVyYXRvciBnc2k7CiAgIGJvb2wgY2FsbHNfZGVjbGFyZV92YXJpYW50X2Fs dAogICAgID0gY2dyYXBoX25vZGU6OmdldCAoY2Z1bi0+ZGVjbCktPmNhbGxzX2RlY2xhcmVf dmFyaWFudF9hbHQ7CisjaWZkZWYgQUNDRUxfQ09NUElMRVIKKyAgYm9vbCBvbXBfcmVkaXJl Y3RfaW5kaXJlY3RfY2FsbHMgPSB2ZWNfc2FmZV9sZW5ndGggKG9mZmxvYWRfaW5kX2Z1bmNz KSA+IDA7CisgIHRyZWUgbWFwX3B0cl9mbgorICAgID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0 IChCVUlMVF9JTl9HT01QX1RBUkdFVF9NQVBfSU5ESVJFQ1RfUFRSKTsKKyNlbmRpZgogICBG T1JfRUFDSF9CQl9GTiAoYmIsIGNmdW4pCiAgICAgZm9yIChnc2kgPSBnc2lfc3RhcnRfYmIg KGJiKTsgIWdzaV9lbmRfcCAoZ3NpKTsgZ3NpX25leHQgKCZnc2kpKQogICAgICAgewpAQCAt MjYyMSw2ICsyNjU1LDMzIEBAIGV4ZWN1dGVfb21wX2RldmljZV9sb3dlciAoKQogCQkgICAg ICB1cGRhdGVfc3RtdCAoc3RtdCk7CiAJCSAgICB9CiAJCX0KKyNpZmRlZiBBQ0NFTF9DT01Q SUxFUgorCSAgICBpZiAob21wX3JlZGlyZWN0X2luZGlyZWN0X2NhbGxzCisJCSYmIGdpbXBs ZV9jYWxsX2ZuZGVjbCAoc3RtdCkgPT0gTlVMTF9UUkVFKQorCSAgICAgIHsKKwkJZ2NhbGwg Km9yaWdfY2FsbCA9IGR5bl9jYXN0IDxnY2FsbCAqPiAoc3RtdCk7CisJCXRyZWUgY2FsbF9m biA9IGdpbXBsZV9jYWxsX2ZuIChzdG10KTsKKwkJdHJlZSBmbl90eSA9IFRSRUVfVFlQRSAo Y2FsbF9mbik7CisKKwkJaWYgKFRSRUVfQ09ERSAoY2FsbF9mbikgPT0gT0JKX1RZUEVfUkVG KQorCQkgIHsKKwkJICAgIHRyZWUgb2JqX3JlZiA9IGNyZWF0ZV90bXBfcmVnIChUUkVFX1RZ UEUgKGNhbGxfZm4pLAorCQkJCQkJICAgIi5pbmRfZm5fb2JqcmVmIik7CisJCSAgICBnaW1w bGUgKmdhc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduIChvYmpfcmVmLCBjYWxsX2ZuKTsK KwkJICAgIGdzaV9pbnNlcnRfYmVmb3JlICAoJmdzaSwgZ2Fzc2lnbiwgR1NJX1NBTUVfU1RN VCk7CisJCSAgICBjYWxsX2ZuID0gb2JqX3JlZjsKKwkJICB9CisJCXRyZWUgbWFwcGVkX2Zu ID0gY3JlYXRlX3RtcF9yZWcgKGZuX3R5LCAiLmluZF9mbiIpOworCQlnaW1wbGUgKmdjYWxs ID0KKwkJICAgIGdpbXBsZV9idWlsZF9jYWxsIChtYXBfcHRyX2ZuLCAxLCBjYWxsX2ZuKTsK KwkJZ2ltcGxlX3NldF9sb2NhdGlvbiAoZ2NhbGwsIGdpbXBsZV9sb2NhdGlvbiAoc3RtdCkp OworCQlnaW1wbGVfY2FsbF9zZXRfbGhzIChnY2FsbCwgbWFwcGVkX2ZuKTsKKwkJZ3NpX2lu c2VydF9iZWZvcmUgKCZnc2ksIGdjYWxsLCBHU0lfU0FNRV9TVE1UKTsKKworCQlnaW1wbGVf Y2FsbF9zZXRfZm4gKG9yaWdfY2FsbCwgbWFwcGVkX2ZuKTsKKwkJdXBkYXRlX3N0bXQgKG9y aWdfY2FsbCk7CisJICAgICAgfQorI2VuZGlmCiAJICAgIGNvbnRpbnVlOwogCSAgfQogCXRy ZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KSwgcmhzID0gTlVMTF9UUkVFOwpAQCAt Mjc1Nyw5ICsyODE4LDE1IEBAIHB1YmxpYzoKICAgLyogb3B0X3Bhc3MgbWV0aG9kczogKi8K ICAgYm9vbCBnYXRlIChmdW5jdGlvbiAqZnVuKSBmaW5hbCBvdmVycmlkZQogICAgIHsKKyNp ZmRlZiBBQ0NFTF9DT01QSUxFUgorICAgICAgYm9vbCBvZmZsb2FkX2luZF9mdW5jc19wID0g dmVjX3NhZmVfbGVuZ3RoIChvZmZsb2FkX2luZF9mdW5jcykgPiAwOworI2Vsc2UKKyAgICAg IGJvb2wgb2ZmbG9hZF9pbmRfZnVuY3NfcCA9IGZhbHNlOworI2VuZGlmCiAgICAgICByZXR1 cm4gKCEoZnVuLT5jdXJyX3Byb3BlcnRpZXMgJiBQUk9QX2dpbXBsZV9sb21wX2RldikKIAkg ICAgICB8fCAoZmxhZ19vcGVubXAKLQkJICAmJiBjZ3JhcGhfbm9kZTo6Z2V0IChmdW4tPmRl Y2wpLT5jYWxsc19kZWNsYXJlX3ZhcmlhbnRfYWx0KSk7CisJCSAgJiYgKGNncmFwaF9ub2Rl OjpnZXQgKGZ1bi0+ZGVjbCktPmNhbGxzX2RlY2xhcmVfdmFyaWFudF9hbHQKKwkJICAgICAg fHwgb2ZmbG9hZF9pbmRfZnVuY3NfcCkpKTsKICAgICB9CiAgIHVuc2lnbmVkIGludCBleGVj dXRlIChmdW5jdGlvbiAqKSBmaW5hbCBvdmVycmlkZQogICAgIHsKZGlmZiAtLWdpdCBhL2dj Yy9vbXAtb2ZmbG9hZC5oIGIvZ2NjL29tcC1vZmZsb2FkLmgKaW5kZXggNzM3MTFlNzRjN2Qu LmFlMzY0NDIyNDE3IDEwMDY0NAotLS0gYS9nY2Mvb21wLW9mZmxvYWQuaAorKysgYi9nY2Mv b21wLW9mZmxvYWQuaApAQCAtMjgsNiArMjgsNyBAQCBleHRlcm4gaW50IG9hY2NfZm5fYXR0 cmliX2xldmVsICh0cmVlIGF0dHIpOwogCiBleHRlcm4gR1RZKCgpKSB2ZWM8dHJlZSwgdmFf Z2M+ICpvZmZsb2FkX2Z1bmNzOwogZXh0ZXJuIEdUWSgoKSkgdmVjPHRyZWUsIHZhX2djPiAq b2ZmbG9hZF92YXJzOworZXh0ZXJuIEdUWSgoKSkgdmVjPHRyZWUsIHZhX2djPiAqb2ZmbG9h ZF9pbmRfZnVuY3M7CiAKIGV4dGVybiB2b2lkIG9tcF9maW5pc2hfZmlsZSAodm9pZCk7CiBl eHRlcm4gdm9pZCBvbXBfZGlzY292ZXJfaW1wbGljaXRfZGVjbGFyZV90YXJnZXQgKHZvaWQp OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNsYXJl LXRhcmdldC03LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUt dGFyZ2V0LTcuYwppbmRleCA3NDcwMDBhNzRiOS4uZTM3YjQ2NTIwNTAgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtNy5jCisr KyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtNy5j CkBAIC0xLDcgKzEsNyBAQAogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KIC8qIHsgZGctb3B0 aW9ucyAiLWZvcGVubXAiIH0gKi8KIAotI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgZGV2 aWNlX3R5cGUgKGFueSkJCS8qIHsgZGctZXJyb3IgImRpcmVjdGl2ZSB3aXRoIG9ubHkgJ2Rl dmljZV90eXBlJyBjbGF1c2UiIH0gKi8KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGRl dmljZV90eXBlIChhbnkpCQkvKiB7IGRnLWVycm9yICJkaXJlY3RpdmUgd2l0aCBvbmx5ICdk ZXZpY2VfdHlwZScgb3IgJ2luZGlyZWN0JyBjbGF1c2VzIiB9ICovCiAKIHZvaWQgZjEgKHZv aWQpIHt9CiAjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldCBkZXZpY2VfdHlwZSAoaG9zdCkg dG8gKGYxKSBkZXZpY2VfdHlwZSAobm9ob3N0KQkvKiB7IGRnLWVycm9yICJ0b28gbWFueSAn ZGV2aWNlX3R5cGUnIGNsYXVzZXMiIH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0xLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBmY2JiMmQwNGU0Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNs YXJlLXRhcmdldC1pbmRpcmVjdC0xLmMKQEAgLTAsMCArMSw2MiBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZvcGVubXAiIH0gKi8KKworZXh0ZXJu IGludCBhLCBiOworI2RlZmluZSBYIDEKKyNkZWZpbmUgWSAwCisKKyNwcmFnbWEgb21wIGJl Z2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0Cit2b2lkIGZuMSAodm9pZCkgeyB9CisjcHJh Z21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKworI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFy ZSB0YXJnZXQgaW5kaXJlY3QgKDEpCit2b2lkIGZuMiAodm9pZCkgeyB9CisjcHJhZ21hIG9t cCBlbmQgZGVjbGFyZSB0YXJnZXQKKworI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB0YXJn ZXQgaW5kaXJlY3QgKDApCit2b2lkIGZuMyAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBlbmQg ZGVjbGFyZSB0YXJnZXQKKwordm9pZCBmbjQgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZGVj bGFyZSB0YXJnZXQgaW5kaXJlY3QgdG8gKGZuNCkKKwordm9pZCBmbjUgKHZvaWQpIHsgfQor I3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QgKDEpIHRvIChmbjUpCisKK3Zv aWQgZm42ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0 ICgwKSB0byAoZm42KQorCit2b2lkIGZuNyAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBkZWNs YXJlIHRhcmdldCBpbmRpcmVjdCAoLTEpIHRvIChmbjcpCisKKy8qIENvbXBpbGUtdGltZSBu b24tY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLiAgKi8KK3ZvaWQgZm44 ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IChhICsg YikgdG8gKGZuOCkgLyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgY29uc3RhbnQgbG9naWNhbCBl eHByZXNzaW9uIiB9ICovCisKKy8qIENvbXBpbGUtdGltZSBjb25zdGFudCBleHByZXNzaW9u cyBhcmUgcGVybWlzc2libGUuICAqLwordm9pZCBmbjkgKHZvaWQpIHsgfQorI3ByYWdtYSBv bXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QgKFgqWSkgdG8gKGZuOSkKKworLyogJ29tcCBk ZWNsYXJlIHRhcmdldCcuLi4nb21wIGVuZCBkZWNsYXJlIHRhcmdldCcgZm9ybSBjYW5ub3Qg dGFrZSBjbGF1c2VzLiAgKi8KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0 IC8qIHsgZGctZXJyb3IgImRpcmVjdGl2ZSB3aXRoIG9ubHkgJ2RldmljZV90eXBlJyBvciAn aW5kaXJlY3QnIGNsYXVzZXMiIH0qLwordm9pZCBmbjEwICh2b2lkKSB7IH0KKyNwcmFnbWEg b21wIGVuZCBkZWNsYXJlIHRhcmdldCAvKiB7IGRnLWVycm9yICInI3ByYWdtYSBvbXAgZW5k IGRlY2xhcmUgdGFyZ2V0JyB3aXRob3V0IGNvcnJlc3BvbmRpbmcgJyNwcmFnbWEgb21wIGRl Y2xhcmUgdGFyZ2V0JyBvciAnI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB0YXJnZXQnIiB9 ICovCisKK3ZvaWQgZm4xMSAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdl dCBpbmRpcmVjdCAoMSkgaW5kaXJlY3QgKDApIHRvIChmbjExKSAvKiB7IGRnLWVycm9yICJ0 b28gbWFueSAuaW5kaXJlY3QuIGNsYXVzZXMiIH0gKi8KKwordm9pZCBmbjEyICh2b2lkKSB7 IH0KKyNwcmFnbWEgb21wICBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCAoImFicyIpIHRvIChm bjEyKQorCit2b2lkIGZuMTMgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJn ZXQgaW5kaXJlY3QgKDUuNSkgZW50ZXIgKGZuMTMpCisKK3ZvaWQgZm4xNCAodm9pZCkgeyB9 CisjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCAoMSkgZGV2aWNlX3R5cGUg KGhvc3QpIGVudGVyIChmbjE0KSAvKiB7IGRnLWVycm9yICInZGV2aWNlX3R5cGUnIGNsYXVz ZSBtdXN0IHNwZWNpZnkgJ2FueScgd2hlbiB1c2VkIHdpdGggYW4gJ2luZGlyZWN0JyBjbGF1 c2UiIH0gKi8KKwordm9pZCBmbjE1ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUg dGFyZ2V0IGluZGlyZWN0ICgwKSBkZXZpY2VfdHlwZSAobm9ob3N0KSBlbnRlciAoZm4xNSkK KworLyogSW5kaXJlY3Qgb24gYSB2YXJpYWJsZSBzaG91bGQgaGF2ZSBubyBlZmZlY3QuICAq LworaW50IHg7CisjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCB0byh4KQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRh cmdldC1pbmRpcmVjdC0yLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2Rl Y2xhcmUtdGFyZ2V0LWluZGlyZWN0LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNmJhMjc4YjNlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTIuYwpAQCAt MCwwICsxLDMyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZm9wZW5tcCAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworI3ByYWdtYSBvbXAgYmVn aW4gZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QKK3ZvaWQgZm4xICh2b2lkKSB7IH0KKyNwcmFn bWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldAorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJfX2F0dHJpYnV0ZV9fXFxcKFxcXChvbXAgZGVjbGFyZSB0YXJnZXQsIG9tcCBkZWNs YXJlIHRhcmdldCBibG9jaywgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0XFxcKVxcXClc XFxudm9pZCBmbjEiICJnaW1wbGUiIH0gfSAqLworCisjcHJhZ21hIG9tcCBiZWdpbiBkZWNs YXJlIHRhcmdldCBpbmRpcmVjdCAoMCkKK3ZvaWQgZm4yICh2b2lkKSB7IH0KKyNwcmFnbWEg b21wIGVuZCBkZWNsYXJlIHRhcmdldAorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJfX2F0dHJpYnV0ZV9fXFxcKFxcXChvbXAgZGVjbGFyZSB0YXJnZXQsIG9tcCBkZWNsYXJl IHRhcmdldCBibG9ja1xcXClcXFwpXFxcbnZvaWQgZm4yIiAiZ2ltcGxlIiB9IH0gKi8KKwor dm9pZCBmbjMgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJl Y3QgdG8gKGZuMykKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19hdHRyaWJ1 dGVfX1xcXChcXFwob21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0LCBvbXAgZGVjbGFyZSB0 YXJnZXRcXFwpXFxcKVxcXG52b2lkIGZuMyIgImdpbXBsZSIgfSB9ICovCisKK3ZvaWQgZm40 ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0ICgwKSB0 byAoZm40KQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfX2F0dHJpYnV0ZV9f XFxcKFxcXChvbXAgZGVjbGFyZSB0YXJnZXRcXFwpXFxcKVxcXG52b2lkIGZuNCIgImdpbXBs ZSIgfSB9ICovCisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0 KDEpCisgIGludCBmb28odm9pZCkgeyByZXR1cm4gNTsgfQorICAjcHJhZ21hIG9tcCBiZWdp biBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCgwKQorICAgIGludCBiYXIodm9pZCkgeyByZXR1 cm4gODsgfQorICAgIGludCBiYXoodm9pZCkgeyByZXR1cm4gMTE7IH0KKyAgICAjcHJhZ21h IG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCBlbnRlcihiYXopCisgICNwcmFnbWEgb21w IGVuZCBkZWNsYXJlIHRhcmdldAorI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0Cisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9fYXR0cmlidXRlX19cXFwoXFxcKG9t cCBkZWNsYXJlIHRhcmdldCwgb21wIGRlY2xhcmUgdGFyZ2V0IGJsb2NrLCBvbXAgZGVjbGFy ZSB0YXJnZXQgaW5kaXJlY3RcXFwpXFxcKVxcXG5pbnQgZm9vIiAiZ2ltcGxlIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19hdHRyaWJ1dGVfX1xcXChcXFwo b21wIGRlY2xhcmUgdGFyZ2V0LCBvbXAgZGVjbGFyZSB0YXJnZXQgYmxvY2tcXFwpXFxcKVxc XG5pbnQgYmFyIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiX19hdHRyaWJ1dGVfX1xcXChcXFwob21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0 LCBvbXAgZGVjbGFyZSB0YXJnZXQsIG9tcCBkZWNsYXJlIHRhcmdldCBibG9ja1xcXClcXFwp XFxcbmludCBiYXoiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0xLkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWQ2NmVjOWY3NDEKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGly ZWN0LTEuQwpAQCAtMCwwICsxLDE3IEBACisvLyB7IGRnLXNraXAtaWYgImMrKzk4IGRvZXMg bm90IHN1cHBvcnQgYXR0cmlidXRlcyIgeyBjKys5OF9vbmx5IH0gfQorCitbW29tcDo6ZGVj bCAoZGVjbGFyZSB0YXJnZXQsIGluZGlyZWN0KDEpKV1dIC8vIHsgZGctZXJyb3IgImRpcmVj dGl2ZSB3aXRoIG9ubHkgJ2RldmljZV90eXBlJyBvciAnaW5kaXJlY3QnIGNsYXVzZSIgfQor aW50IGYgKHZvaWQpIHsgcmV0dXJuIDU7IH0KKworW1tvbXA6OmRlY2wgKGRlY2xhcmUgdGFy Z2V0IGluZGlyZWN0KV1dIC8vIHsgZGctZXJyb3IgImRpcmVjdGl2ZSB3aXRoIG9ubHkgJ2Rl dmljZV90eXBlJyBvciAnaW5kaXJlY3QnIGNsYXVzZSIgfQoraW50IGcgKHZvaWQpIHsgcmV0 dXJuIDg7IH0KKworW1tvbXA6OmRpcmVjdGl2ZSAoYmVnaW4gZGVjbGFyZSB0YXJnZXQsIGlu ZGlyZWN0KV1dOworaW50IGggKHZvaWQpIHsgcmV0dXJuIDExOyB9CitbW29tcDo6ZGlyZWN0 aXZlIChlbmQgZGVjbGFyZSB0YXJnZXQpXV07CisKK2ludCBpICh2b2lkKSB7IHJldHVybiA4 OyB9CitbW29tcDo6ZGlyZWN0aXZlIChkZWNsYXJlIHRhcmdldCB0byhpKSwgaW5kaXJlY3Qg KDEpKV1dOworCitpbnQgaiAodm9pZCkgeyByZXR1cm4gMTE7IH0KK1tbb21wOjpkaXJlY3Rp dmUgKGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IGVudGVyIChqKSldXTsKZGlmZiAtLWdpdCBh L2djYy90cmVlLWNvcmUuaCBiL2djYy90cmVlLWNvcmUuaAppbmRleCAxMzQzNTM0NDQwMS4u NjVlNTFiOTM5YTIgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWNvcmUuaAorKysgYi9nY2MvdHJl ZS1jb3JlLmgKQEAgLTM1MCw2ICszNTAsOSBAQCBlbnVtIG9tcF9jbGF1c2VfY29kZSB7CiAg IC8qIE9wZW5NUCBjbGF1c2U6IGRvYWNyb3NzICh7c291cmNlLHNpbmt9OnZlYykuICAqLwog ICBPTVBfQ0xBVVNFX0RPQUNST1NTLAogCisgIC8qIE9wZW5NUCBjbGF1c2U6IGluZGlyZWN0 IFsoY29uc3RhbnQtaW50ZWdlci1leHByZXNzaW9uKV0uICAqLworICBPTVBfQ0xBVVNFX0lO RElSRUNULAorCiAgIC8qIEludGVybmFsIHN0cnVjdHVyZSB0byBob2xkIE9wZW5BQ0MgY2Fj aGUgZGlyZWN0aXZlJ3MgdmFyaWFibGUtbGlzdC4KICAgICAgI3ByYWdtYSBhY2MgY2FjaGUg KHZhcmlhYmxlLWxpc3QpLiAgKi8KICAgT01QX0NMQVVTRV9fQ0FDSEVfLApkaWZmIC0tZ2l0 IGEvZ2NjL3RyZWUuY2MgYi9nY2MvdHJlZS5jYwppbmRleCBjZmVhZDE1NmRkZi4uMjg1YmEw NDZhNjMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLmNjCisrKyBiL2djYy90cmVlLmNjCkBAIC0y NjksNiArMjY5LDcgQEAgdW5zaWduZWQgY29uc3QgY2hhciBvbXBfY2xhdXNlX251bV9vcHNb XSA9CiAgIDIsIC8qIE9NUF9DTEFVU0VfTUFQICAqLwogICAxLCAvKiBPTVBfQ0xBVVNFX0hB U19ERVZJQ0VfQUREUiAgKi8KICAgMSwgLyogT01QX0NMQVVTRV9ET0FDUk9TUyAgKi8KKyAg MSwgLyogT01QX0NMQVVTRV9JTkRJUkVDVCAgKi8KICAgMiwgLyogT01QX0NMQVVTRV9fQ0FD SEVfICAqLwogICAyLCAvKiBPTVBfQ0xBVVNFX0dBTkcgICovCiAgIDEsIC8qIE9NUF9DTEFV U0VfQVNZTkMgICovCkBAIC0zNjEsNiArMzYyLDcgQEAgY29uc3QgY2hhciAqIGNvbnN0IG9t cF9jbGF1c2VfY29kZV9uYW1lW10gPQogICAibWFwIiwKICAgImhhc19kZXZpY2VfYWRkciIs CiAgICJkb2Fjcm9zcyIsCisgICJpbmRpcmVjdCIsCiAgICJfY2FjaGVfIiwKICAgImdhbmci LAogICAiYXN5bmMiLApkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90cmVlLmgKaW5k ZXggYWM5NGJkN2I0NjAuLmE0OWRlNWM1OGNiIDEwMDY0NAotLS0gYS9nY2MvdHJlZS5oCisr KyBiL2djYy90cmVlLmgKQEAgLTE4NDIsNiArMTg0MiwxMCBAQCBjbGFzcyBhdXRvX3N1cHBy ZXNzX2xvY2F0aW9uX3dyYXBwZXJzCiAjZGVmaW5lIE9NUF9DTEFVU0VfREVWSUNFX1RZUEVf S0lORChOT0RFKSBcCiAgIChPTVBfQ0xBVVNFX1NVQkNPREVfQ0hFQ0sgKE5PREUsIE9NUF9D TEFVU0VfREVWSUNFX1RZUEUpLT5vbXBfY2xhdXNlLnN1YmNvZGUuZGV2aWNlX3R5cGVfa2lu ZCkKIAorI2RlZmluZSBPTVBfQ0xBVVNFX0lORElSRUNUX0VYUFIoTk9ERSkgXAorICBPTVBf Q0xBVVNFX09QRVJBTkQgKE9NUF9DTEFVU0VfU1VCQ09ERV9DSEVDSyAoTk9ERSwgT01QX0NM QVVTRV9JTkRJUkVDVCksIDApCisKKwogLyogVHJ1ZSBpZiB0aGVyZSBpcyBhIGRldmljZSBj bGF1c2Ugd2l0aCBhIGRldmljZS1tb2RpZmllciAnYW5jZXN0b3InLiAgKi8KICNkZWZpbmUg T01QX0NMQVVTRV9ERVZJQ0VfQU5DRVNUT1IoTk9ERSkgXAogICAoT01QX0NMQVVTRV9TVUJD T0RFX0NIRUNLIChOT0RFLCBPTVBfQ0xBVVNFX0RFVklDRSktPmJhc2UucHVibGljX2ZsYWcp CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dvbXAtY29uc3RhbnRzLmggYi9pbmNsdWRlL2dvbXAt Y29uc3RhbnRzLmgKaW5kZXggODliOTY2ZTYzYzYuLmYxNTc5YmIyNTE5IDEwMDY0NAotLS0g YS9pbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgKKysrIGIvaW5jbHVkZS9nb21wLWNvbnN0YW50 cy5oCkBAIC0zMTYsNyArMzE2LDcgQEAgZW51bSBnb21wX21hcF9raW5kCiAvKiBWZXJzaW9u cyBvZiBsaWJnb21wIGFuZCBkZXZpY2Utc3BlY2lmaWMgcGx1Z2lucy4gIEdPTVBfVkVSU0lP TgogICAgc2hvdWxkIGJlIGluY3JlbWVudGVkIHdoZW5ldmVyIGFuIEFCSS1pbmNvbXBhdGli bGUgY2hhbmdlIGlzIGludHJvZHVjZWQKICAgIHRvIHRoZSBwbHVnaW4gaW50ZXJmYWNlIGRl ZmluZWQgaW4gbGliZ29tcC9saWJnb21wLmguICAqLwotI2RlZmluZSBHT01QX1ZFUlNJT04J MgorI2RlZmluZSBHT01QX1ZFUlNJT04JMwogI2RlZmluZSBHT01QX1ZFUlNJT05fTlZJRElB X1BUWCAxCiAjZGVmaW5lIEdPTVBfVkVSU0lPTl9HQ04gMwogCkBAIC0zMjQsNiArMzI0LDgg QEAgZW51bSBnb21wX21hcF9raW5kCiAjZGVmaW5lIEdPTVBfVkVSU0lPTl9MSUIoUEFDSykg KCgoUEFDSykgPj4gMTYpICYgMHhmZmZmKQogI2RlZmluZSBHT01QX1ZFUlNJT05fREVWKFBB Q0spICgoUEFDSykgJiAweGZmZmYpCiAKKyNkZWZpbmUgR09NUF9WRVJTSU9OX1NVUFBPUlRT X0lORElSRUNUX0ZVTkNTKFZFUikgKEdPTVBfVkVSU0lPTl9MSUIoVkVSKSA+PSAzKQorCiAj ZGVmaW5lIEdPTVBfRElNX0dBTkcJMAogI2RlZmluZSBHT01QX0RJTV9XT1JLRVIJMQogI2Rl ZmluZSBHT01QX0RJTV9WRUNUT1IJMgpkaWZmIC0tZ2l0IGEvbGliZ2NjL29mZmxvYWRzdHVm Zi5jIGIvbGliZ2NjL29mZmxvYWRzdHVmZi5jCmluZGV4IDRlMWM0ZDQxZGQ1Li4xOGM1YmY4 OWI2OSAxMDA2NDQKLS0tIGEvbGliZ2NjL29mZmxvYWRzdHVmZi5jCisrKyBiL2xpYmdjYy9v ZmZsb2Fkc3R1ZmYuYwpAQCAtNDMsNiArNDMsNyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkcz IGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKICNpZiBk ZWZpbmVkKEhBVkVfR0FTX0hJRERFTikgJiYgRU5BQkxFX09GRkxPQURJTkcgPT0gMQogCiAj ZGVmaW5lIE9GRkxPQURfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUgIi5nbnUub2ZmbG9hZF9m dW5jcyIKKyNkZWZpbmUgT0ZGTE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUgIi5n bnUub2ZmbG9hZF9pbmRfZnVuY3MiCiAjZGVmaW5lIE9GRkxPQURfVkFSX1RBQkxFX1NFQ1RJ T05fTkFNRSAiLmdudS5vZmZsb2FkX3ZhcnMiCiAKICNpZmRlZiBDUlRfQkVHSU4KQEAgLTUz LDYgKzU0LDkgQEAgY29uc3Qgdm9pZCAqY29uc3QgX19vZmZsb2FkX2Z1bmNfdGFibGVbMF0K IGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF92YXJfdGFibGVbMF0KICAgX19hdHRyaWJ1 dGVfXyAoKF9fdXNlZF9fLCB2aXNpYmlsaXR5ICgiaGlkZGVuIiksCiAJCSAgc2VjdGlvbiAo T0ZGTE9BRF9WQVJfVEFCTEVfU0VDVElPTl9OQU1FKSkpID0geyB9OworY29uc3Qgdm9pZCAq Y29uc3QgX19vZmZsb2FkX2luZF9mdW5jX3RhYmxlWzBdCisgIF9fYXR0cmlidXRlX18gKChf X3VzZWRfXywgdmlzaWJpbGl0eSAoImhpZGRlbiIpLAorCQkgIHNlY3Rpb24gKE9GRkxPQURf SU5EX0ZVTkNfVEFCTEVfU0VDVElPTl9OQU1FKSkpID0geyB9OwogCiAjZWxpZiBkZWZpbmVk IENSVF9FTkQKIApAQCAtNjIsMTkgKzY2LDI1IEBAIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2Zm bG9hZF9mdW5jc19lbmRbMF0KIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF92YXJzX2Vu ZFswXQogICBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18sIHZpc2liaWxpdHkgKCJoaWRkZW4i KSwKIAkJICBzZWN0aW9uIChPRkZMT0FEX1ZBUl9UQUJMRV9TRUNUSU9OX05BTUUpKSkgPSB7 IH07Citjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfaW5kX2Z1bmNzX2VuZFswXQorICBf X2F0dHJpYnV0ZV9fICgoX191c2VkX18sIHZpc2liaWxpdHkgKCJoaWRkZW4iKSwKKwkJICBz ZWN0aW9uIChPRkZMT0FEX0lORF9GVU5DX1RBQkxFX1NFQ1RJT05fTkFNRSkpKSA9IHsgfTsK IAogI2VsaWYgZGVmaW5lZCBDUlRfVEFCTEUKIAogZXh0ZXJuIGNvbnN0IHZvaWQgKmNvbnN0 IF9fb2ZmbG9hZF9mdW5jX3RhYmxlW107CiBleHRlcm4gY29uc3Qgdm9pZCAqY29uc3QgX19v ZmZsb2FkX3Zhcl90YWJsZVtdOworZXh0ZXJuIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9h ZF9pbmRfZnVuY190YWJsZVtdOwogZXh0ZXJuIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9h ZF9mdW5jc19lbmRbXTsKIGV4dGVybiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfdmFy c19lbmRbXTsKK2V4dGVybiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfaW5kX2Z1bmNz X2VuZFtdOwogCiBjb25zdCB2b2lkICpjb25zdCBfX09GRkxPQURfVEFCTEVfX1tdCiAgIF9f YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImhpZGRlbiIpKSkgPQogewogICAmX19v ZmZsb2FkX2Z1bmNfdGFibGUsICZfX29mZmxvYWRfZnVuY3NfZW5kLAotICAmX19vZmZsb2Fk X3Zhcl90YWJsZSwgJl9fb2ZmbG9hZF92YXJzX2VuZAorICAmX19vZmZsb2FkX3Zhcl90YWJs ZSwgJl9fb2ZmbG9hZF92YXJzX2VuZCwKKyAgJl9fb2ZmbG9hZF9pbmRfZnVuY190YWJsZSwg Jl9fb2ZmbG9hZF9pbmRfZnVuY3NfZW5kLAogfTsKIAogI2Vsc2UgLyogISBDUlRfQkVHSU4g JiYgISBDUlRfRU5EICYmICEgQ1JUX1RBQkxFICAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9N YWtlZmlsZS5hbSBiL2xpYmdvbXAvTWFrZWZpbGUuYW0KaW5kZXggY2ViOGM5MTBhYmQuLjE4 NzE1OTA1OTZkIDEwMDY0NAotLS0gYS9saWJnb21wL01ha2VmaWxlLmFtCisrKyBiL2xpYmdv bXAvTWFrZWZpbGUuYW0KQEAgLTcyLDcgKzcyLDcgQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0g YWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJvci5jIFwK IAl0YXJnZXQuYyBzcGxheS10cmVlLmMgbGliZ29tcC1wbHVnaW4uYyBvYWNjLXBhcmFsbGVs LmMgb2FjYy1ob3N0LmMgXAogCW9hY2MtaW5pdC5jIG9hY2MtbWVtLmMgb2FjYy1hc3luYy5j IG9hY2MtcGx1Z2luLmMgb2FjYy1jdWRhLmMgXAogCXByaW9yaXR5X3F1ZXVlLmMgYWZmaW5p dHktZm10LmMgdGVhbXMuYyBhbGxvY2F0b3IuYyBvYWNjLXByb2ZpbGluZy5jIFwKLQlvYWNj LXRhcmdldC5jCisJb2FjYy10YXJnZXQuYyB0YXJnZXQtaW5kaXJlY3QuYwogCiBpbmNsdWRl ICQodG9wX3NyY2RpcikvcGx1Z2luL01ha2VmcmFnLmFtCiAKZGlmZiAtLWdpdCBhL2xpYmdv bXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01ha2VmaWxlLmluCmluZGV4IDE4NjkzN2RhNGU5 Li41NmE2YmVhYjg2NyAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmlsZS5pbgorKysgYi9s aWJnb21wL01ha2VmaWxlLmluCkBAIC0yMTksNyArMjE5LDcgQEAgYW1fbGliZ29tcF9sYV9P QkpFQ1RTID0gYWxsb2MubG8gYXRvbWljLmxvIGJhcnJpZXIubG8gY3JpdGljYWwubG8gXAog CW9hY2MtcGFyYWxsZWwubG8gb2FjYy1ob3N0LmxvIG9hY2MtaW5pdC5sbyBvYWNjLW1lbS5s byBcCiAJb2FjYy1hc3luYy5sbyBvYWNjLXBsdWdpbi5sbyBvYWNjLWN1ZGEubG8gcHJpb3Jp dHlfcXVldWUubG8gXAogCWFmZmluaXR5LWZtdC5sbyB0ZWFtcy5sbyBhbGxvY2F0b3IubG8g b2FjYy1wcm9maWxpbmcubG8gXAotCW9hY2MtdGFyZ2V0LmxvICQoYW1fX29iamVjdHNfMSkK KwlvYWNjLXRhcmdldC5sbyB0YXJnZXQtaW5kaXJlY3QubG8gJChhbV9fb2JqZWN0c18xKQog bGliZ29tcF9sYV9PQkpFQ1RTID0gJChhbV9saWJnb21wX2xhX09CSkVDVFMpCiBBTV9WX1Ag PSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRf VkApCkBAIC01NTIsNyArNTUyLDcgQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBh dG9taWMuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBcCiAJb2FjYy1wYXJhbGxlbC5j IG9hY2MtaG9zdC5jIG9hY2MtaW5pdC5jIG9hY2MtbWVtLmMgXAogCW9hY2MtYXN5bmMuYyBv YWNjLXBsdWdpbi5jIG9hY2MtY3VkYS5jIHByaW9yaXR5X3F1ZXVlLmMgXAogCWFmZmluaXR5 LWZtdC5jIHRlYW1zLmMgYWxsb2NhdG9yLmMgb2FjYy1wcm9maWxpbmcuYyBcCi0Jb2FjYy10 YXJnZXQuYyAkKGFtX19hcHBlbmRfMykKKwlvYWNjLXRhcmdldC5jIHRhcmdldC1pbmRpcmVj dC5jICQoYW1fX2FwcGVuZF8zKQogCiAjIE52aWRpYSBQVFggT3BlbkFDQyBwbHVnaW4uCiBA UExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfdmVyc2lvbl9pbmZvID0g LXZlcnNpb24taW5mbyAkKGxpYnRvb2xfVkVSU0lPTikKQEAgLTc4MCw2ICs3ODAsNyBAQCBk aXN0Y2xlYW4tY29tcGlsZToKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90 ZUAuLyQoREVQRElSKS9zZW0uUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5j bHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9zaW5nbGUuUGxvQGFtX19xdW90ZUAKIEBB TURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9zcGxheS10 cmVlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVv dGVALi8kKERFUERJUikvdGFyZ2V0LWluZGlyZWN0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBf VFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvdGFyZ2V0LlBsb0Bh bV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERF UERJUikvdGFzay5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBA YW1fX3F1b3RlQC4vJChERVBESVIpL3RlYW0uUGxvQGFtX19xdW90ZUAKZGlmZiAtLWdpdCBh L2xpYmdvbXAvY29uZmlnL2FjY2VsL3RhcmdldC1pbmRpcmVjdC5jIGIvbGliZ29tcC9jb25m aWcvYWNjZWwvdGFyZ2V0LWluZGlyZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjZlZTgyYTBlYmQwCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC9j b25maWcvYWNjZWwvdGFyZ2V0LWluZGlyZWN0LmMKQEAgLTAsMCArMSwxMjYgQEAKKy8qIENv cHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAg Q29udHJpYnV0ZWQgYnkgU2llbWVucy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJn b21wKS4KKworICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0 aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5Z CisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRh aWxzLgorCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBn cmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5k IENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgor I2luY2x1ZGUgImxpYmdvbXAuaCIKKworI2RlZmluZSBzcGxheV90cmVlX3ByZWZpeCBpbmRp cmVjdAorI2RlZmluZSBzcGxheV90cmVlX2MKKyNpbmNsdWRlICJzcGxheS10cmVlLmgiCisK K3ZvbGF0aWxlIHZvaWQgKipHT01QX0lORElSRUNUX0FERFJfTUFQID0gTlVMTDsKKworLyog VXNlIGEgc3BsYXkgdHJlZSB0byBsb29rdXAgdGhlIHRhcmdldCBhZGRyZXNzIGluc3RlYWQg b2YgdXNpbmcgYQorICAgbGluZWFyIHNlYXJjaC4gICovCisjZGVmaW5lIFVTRV9TUExBWV9U UkVFX0xPT0tVUAorCisjaWZkZWYgVVNFX1NQTEFZX1RSRUVfTE9PS1VQCisKK3N0YXRpYyBz dHJ1Y3QgaW5kaXJlY3Rfc3BsYXlfdHJlZV9zIGluZGlyZWN0X21hcDsKK3N0YXRpYyBpbmRp cmVjdF9zcGxheV90cmVlX25vZGUgaW5kaXJlY3RfYXJyYXkgPSBOVUxMOworCisvKiBCdWls ZCB0aGUgc3BsYXkgdHJlZSB1c2VkIGZvciBob3N0LT50YXJnZXQgYWRkcmVzcyBsb29rdXBz LiAgKi8KKwordm9pZAorYnVpbGRfaW5kaXJlY3RfbWFwICh2b2lkKQoreworICBzaXplX3Qg bnVtX2luZF9mdW5jcyA9IDA7CisgIHZvbGF0aWxlIHZvaWQgKiptYXBfZW50cnk7CisgIHN0 YXRpYyBpbnQgbG9jayA9IDA7IC8qID09IGdvbXBfbXV0ZXhfdCBsb2NrOyBnb21wX211dGV4 X2luaXQgKCZsb2NrKTsgKi8KKworICBpZiAoIUdPTVBfSU5ESVJFQ1RfQUREUl9NQVApCisg ICAgcmV0dXJuOworCisgIGdvbXBfbXV0ZXhfbG9jayAoJmxvY2spOworCisgIGlmICghaW5k aXJlY3RfYXJyYXkpCisgICAgeworICAgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBlbnRy aWVzIGluIHRoZSBOVUxMLXRlcm1pbmF0ZWQgYWRkcmVzcyBtYXAuICAqLworICAgICAgZm9y IChtYXBfZW50cnkgPSBHT01QX0lORElSRUNUX0FERFJfTUFQOyAqbWFwX2VudHJ5OworCSAg IG1hcF9lbnRyeSArPSAyLCBudW1faW5kX2Z1bmNzKyspOworCisgICAgICAvKiBCdWlsZCBz cGxheSB0cmVlIGZvciBhZGRyZXNzIGxvb2t1cC4gICovCisgICAgICBpbmRpcmVjdF9hcnJh eSA9IGdvbXBfbWFsbG9jIChudW1faW5kX2Z1bmNzICogc2l6ZW9mICgqaW5kaXJlY3RfYXJy YXkpKTsKKyAgICAgIGluZGlyZWN0X3NwbGF5X3RyZWVfbm9kZSBhcnJheSA9IGluZGlyZWN0 X2FycmF5OworICAgICAgbWFwX2VudHJ5ID0gR09NUF9JTkRJUkVDVF9BRERSX01BUDsKKwor ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1faW5kX2Z1bmNzOyBpKyssIGFycmF5Kysp CisJeworCSAgaW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXkgayA9ICZhcnJheS0+a2V5OworCSAg ay0+aG9zdF9hZGRyID0gKHVpbnQ2NF90KSAqbWFwX2VudHJ5Kys7CisJICBrLT50YXJnZXRf YWRkciA9ICh1aW50NjRfdCkgKm1hcF9lbnRyeSsrOworCSAgYXJyYXktPmxlZnQgPSBOVUxM OworCSAgYXJyYXktPnJpZ2h0ID0gTlVMTDsKKwkgIGluZGlyZWN0X3NwbGF5X3RyZWVfaW5z ZXJ0ICgmaW5kaXJlY3RfbWFwLCBhcnJheSk7CisJfQorICAgIH0KKworICBnb21wX211dGV4 X3VubG9jayAoJmxvY2spOworfQorCit2b2lkICoKK0dPTVBfdGFyZ2V0X21hcF9pbmRpcmVj dF9wdHIgKHZvaWQgKnB0cikKK3sKKyAgLyogTlVMTCBwb2ludGVycyBhbHdheXMgcmVzb2x2 ZSB0byBOVUxMLiAgKi8KKyAgaWYgKCFwdHIpCisgICAgcmV0dXJuIHB0cjsKKworICBhc3Nl cnQgKGluZGlyZWN0X2FycmF5KTsKKworICBzdHJ1Y3QgaW5kaXJlY3Rfc3BsYXlfdHJlZV9r ZXlfcyBrOworICBpbmRpcmVjdF9zcGxheV90cmVlX2tleSBub2RlID0gTlVMTDsKKworICBr Lmhvc3RfYWRkciA9ICh1aW50NjRfdCkgcHRyOworICBub2RlID0gaW5kaXJlY3Rfc3BsYXlf dHJlZV9sb29rdXAgKCZpbmRpcmVjdF9tYXAsICZrKTsKKworICByZXR1cm4gbm9kZSA/ICh2 b2lkICopIG5vZGUtPnRhcmdldF9hZGRyIDogcHRyOworfQorCisjZWxzZQorCit2b2lkCiti dWlsZF9pbmRpcmVjdF9tYXAgKHZvaWQpCit7Cit9CisKK3ZvaWQgKgorR09NUF90YXJnZXRf bWFwX2luZGlyZWN0X3B0ciAodm9pZCAqcHRyKQoreworICAvKiBOVUxMIHBvaW50ZXJzIGFs d2F5cyByZXNvbHZlIHRvIE5VTEwuICAqLworICBpZiAoIXB0cikKKyAgICByZXR1cm4gcHRy OworCisgIGFzc2VydCAoR09NUF9JTkRJUkVDVF9BRERSX01BUCk7CisKKyAgZm9yICh2b2xh dGlsZSB2b2lkICoqbWFwX2VudHJ5ID0gR09NUF9JTkRJUkVDVF9BRERSX01BUDsgKm1hcF9l bnRyeTsKKyAgICAgICBtYXBfZW50cnkgKz0gMikKKyAgICBpZiAoKm1hcF9lbnRyeSA9PSBw dHIpCisgICAgICByZXR1cm4gKHZvaWQgKikgKihtYXBfZW50cnkgKyAxKTsKKworICByZXR1 cm4gcHRyOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL2djbi90 ZWFtLmMgYi9saWJnb21wL2NvbmZpZy9nY24vdGVhbS5jCmluZGV4IGYwMzIwN2M4NGUzLi5m YjIwY2JiY2Y5ZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcvZ2NuL3RlYW0uYworKysg Yi9saWJnb21wL2NvbmZpZy9nY24vdGVhbS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk ZSA8c3RyaW5nLmg+CiAKIHN0YXRpYyB2b2lkIGdvbXBfdGhyZWFkX3N0YXJ0IChzdHJ1Y3Qg Z29tcF90aHJlYWRfcG9vbCAqKTsKK2V4dGVybiB2b2lkIGJ1aWxkX2luZGlyZWN0X21hcCAo dm9pZCk7CiAKIC8qIFRoaXMgZXh0ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9uIGhhbmRsZXMg dGFyZ2V0IHJlZ2lvbiBlbnRyeS4gIEl0CiAgICBzZXRzIHVwIGEgcGVyLXRlYW0gdGhyZWFk IHBvb2wgYW5kIHRyYW5zZmVycyBjb250cm9sIGJ5IHJldHVybmluZyB0bwpAQCAtNDUsNiAr NDYsOSBAQCBnb21wX2djbl9lbnRlcl9rZXJuZWwgKHZvaWQpCiB7CiAgIGludCB0aHJlYWRp ZCA9IF9fYnVpbHRpbl9nY25fZGltX3BvcyAoMSk7CiAKKyAgLyogSW5pdGlhbGl6ZSBpbmRp cmVjdCBmdW5jdGlvbiBzdXBwb3J0LiAgKi8KKyAgYnVpbGRfaW5kaXJlY3RfbWFwICgpOwor CiAgIGlmICh0aHJlYWRpZCA9PSAwKQogICAgIHsKICAgICAgIGludCBudW10aHJlYWRzID0g X19idWlsdGluX2djbl9kaW1fc2l6ZSAoMSk7CmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZp Zy9saW51eC90YXJnZXQtaW5kaXJlY3QuYyBiL2xpYmdvbXAvY29uZmlnL2xpbnV4L3Rhcmdl dC1pbmRpcmVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w YWI5YmM1MmQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvY29uZmlnL2xpbnV4L3Rh cmdldC1pbmRpcmVjdC5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qIENvcHlyaWdodCAoQykgMjAy MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgQ29udHJpYnV0ZWQgYnkg U2llbWVucy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5n IGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4KKworICAgTGli Z29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxh dGVyIHZlcnNpb24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorCisgICBVbmRl ciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9u YWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFy eSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5 IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElN RSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKwordm9pZCAqCitHT01QX3RhcmdldF9tYXBfaW5kaXJlY3RfcHRy ICh2b2lkICpwdHIpCit7CisgIC8qIENhbGxzIHRvIHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v dCBiZSBnZW5lcmF0ZWQgZm9yIGhvc3QgY29kZS4gICovCisgIF9fYnVpbHRpbl91bnJlYWNo YWJsZSAoKTsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL252cHR4L3RlYW0uYyBi L2xpYmdvbXAvY29uZmlnL252cHR4L3RlYW0uYwppbmRleCBhZjVmMzE3MWE0Ny4uNTk1MjFm YWJkOTkgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvY29uZmlnL252cHR4L3RlYW0uYworKysgYi9s aWJnb21wL2NvbmZpZy9udnB0eC90ZWFtLmMKQEAgLTM1LDYgKzM1LDcgQEAgc3RydWN0IGdv bXBfdGhyZWFkICpudnB0eF90aHJzIF9fYXR0cmlidXRlX18oKHNoYXJlZCxub2NvbW1vbikp OwogaW50IF9fZ29tcF90ZWFtX251bSBfX2F0dHJpYnV0ZV9fKChzaGFyZWQsbm9jb21tb24p KTsKIAogc3RhdGljIHZvaWQgZ29tcF90aHJlYWRfc3RhcnQgKHN0cnVjdCBnb21wX3RocmVh ZF9wb29sICopOworZXh0ZXJuIHZvaWQgYnVpbGRfaW5kaXJlY3RfbWFwICh2b2lkKTsKIAog CiAvKiBUaGlzIGV4dGVybmFsbHkgdmlzaWJsZSBmdW5jdGlvbiBoYW5kbGVzIHRhcmdldCBy ZWdpb24gZW50cnkuICBJdApAQCAtNTIsNiArNTMsMTAgQEAgZ29tcF9udnB0eF9tYWluICh2 b2lkICgqZm4pICh2b2lkICopLCB2b2lkICpmbl9kYXRhKQogICBpbnQgdGlkLCBudGlkczsK ICAgYXNtICgibW92LnUzMiAlMCwgJSV0aWQueTsiIDogIj1yIiAodGlkKSk7CiAgIGFzbSAo Im1vdi51MzIgJTAsICUlbnRpZC55OyIgOiAiPXIiIChudGlkcykpOworCisgIC8qIEluaXRp YWxpemUgaW5kaXJlY3QgZnVuY3Rpb24gc3VwcG9ydC4gICovCisgIGJ1aWxkX2luZGlyZWN0 X21hcCAoKTsKKwogICBpZiAodGlkID09IDApCiAgICAgewogICAgICAgZ29tcF9nbG9iYWxf aWN2Lm50aHJlYWRzX3ZhciA9IG50aWRzOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21w LXBsdWdpbi5oIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCmluZGV4IGRjOTkzODgyYzNi Li4zY2UwMzJjNWNjMCAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCisr KyBiL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uaApAQCAtMTA3LDYgKzEwNyw4IEBAIHN0cnVj dCBhZGRyX3BhaXIKICAgIG11c3QgYmUgc3RyaW5naWZpZWQpLiAgKi8KICNkZWZpbmUgR09N UF9BRERJVElPTkFMX0lDVlMgX19nb21wX2FkZGl0aW9uYWxfaWN2cwogCisjZGVmaW5lIEdP TVBfSU5ESVJFQ1RfQUREUl9NQVAgX19nb21wX2luZGlyZWN0X2FkZHJfbWFwCisKIC8qIE1p c2NlbGxhbmVvdXMgZnVuY3Rpb25zLiAgKi8KIGV4dGVybiB2b2lkICpHT01QX1BMVUdJTl9t YWxsb2MgKHNpemVfdCkgX19hdHRyaWJ1dGVfXyAoKG1hbGxvYykpOwogZXh0ZXJuIHZvaWQg KkdPTVBfUExVR0lOX21hbGxvY19jbGVhcmVkIChzaXplX3QpIF9fYXR0cmlidXRlX18gKCht YWxsb2MpKTsKQEAgLTEzMiw3ICsxMzQsOCBAQCBleHRlcm4gYm9vbCBHT01QX09GRkxPQURf aW5pdF9kZXZpY2UgKGludCk7CiBleHRlcm4gYm9vbCBHT01QX09GRkxPQURfZmluaV9kZXZp Y2UgKGludCk7CiBleHRlcm4gdW5zaWduZWQgR09NUF9PRkZMT0FEX3ZlcnNpb24gKHZvaWQp OwogZXh0ZXJuIGludCBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50LCB1bnNpZ25lZCwg Y29uc3Qgdm9pZCAqLAotCQkJCSAgICBzdHJ1Y3QgYWRkcl9wYWlyICoqLCB1aW50NjRfdCAq Kik7CisJCQkJICAgIHN0cnVjdCBhZGRyX3BhaXIgKiosIHVpbnQ2NF90ICoqLAorCQkJCSAg ICB1aW50NjRfdCAqKTsKIGV4dGVybiBib29sIEdPTVBfT0ZGTE9BRF91bmxvYWRfaW1hZ2Ug KGludCwgdW5zaWduZWQsIGNvbnN0IHZvaWQgKik7CiBleHRlcm4gdm9pZCAqR09NUF9PRkZM T0FEX2FsbG9jIChpbnQsIHNpemVfdCk7CiBleHRlcm4gYm9vbCBHT01QX09GRkxPQURfZnJl ZSAoaW50LCB2b2lkICopOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLmggYi9saWJn b21wL2xpYmdvbXAuaAppbmRleCA2OGYyMDY1MWZiZi4uMTVhNzY3Y2YzMTcgMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvbGliZ29tcC5oCisrKyBiL2xpYmdvbXAvbGliZ29tcC5oCkBAIC0xMjc0 LDYgKzEyNzQsMjkgQEAgcmV2ZXJzZV9zcGxheV9jb21wYXJlIChyZXZlcnNlX3NwbGF5X3Ry ZWVfa2V5IHgsIHJldmVyc2Vfc3BsYXlfdHJlZV9rZXkgeSkKICNkZWZpbmUgc3BsYXlfdHJl ZV9wcmVmaXggcmV2ZXJzZQogI2luY2x1ZGUgInNwbGF5LXRyZWUuaCIKIAorLyogSW5kaXJl Y3QgdGFyZ2V0IGZ1bmN0aW9uIHNwbGF5LXRyZWUgaGFuZGxpbmcuICAqLworCitzdHJ1Y3Qg aW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXlfcyB7CisgIHVpbnQ2NF90IGhvc3RfYWRkciwgdGFy Z2V0X2FkZHI7Cit9OworCit0eXBlZGVmIHN0cnVjdCBpbmRpcmVjdF9zcGxheV90cmVlX25v ZGVfcyAqaW5kaXJlY3Rfc3BsYXlfdHJlZV9ub2RlOwordHlwZWRlZiBzdHJ1Y3QgaW5kaXJl Y3Rfc3BsYXlfdHJlZV9zICppbmRpcmVjdF9zcGxheV90cmVlOwordHlwZWRlZiBzdHJ1Y3Qg aW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXlfcyAqaW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXk7CisK K3N0YXRpYyBpbmxpbmUgaW50CitpbmRpcmVjdF9zcGxheV9jb21wYXJlIChpbmRpcmVjdF9z cGxheV90cmVlX2tleSB4LCBpbmRpcmVjdF9zcGxheV90cmVlX2tleSB5KQoreworICBpZiAo eC0+aG9zdF9hZGRyIDwgeS0+aG9zdF9hZGRyKQorICAgIHJldHVybiAtMTsKKyAgaWYgKHgt Pmhvc3RfYWRkciA+IHktPmhvc3RfYWRkcikKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7 Cit9CisKKyNkZWZpbmUgc3BsYXlfdHJlZV9wcmVmaXggaW5kaXJlY3QKKyNpbmNsdWRlICJz cGxheS10cmVlLmgiCisKIHN0cnVjdCB0YXJnZXRfbWVtX2Rlc2MgewogICAvKiBSZWZlcmVu Y2UgY291bnQuICAqLwogICB1aW50cHRyX3QgcmVmY291bnQ7CmRpZmYgLS1naXQgYS9saWJn b21wL2xpYmdvbXAubWFwIGIvbGliZ29tcC9saWJnb21wLm1hcAppbmRleCBjZTZiNzE5YTU3 Zi4uOTBjNDAxNDUzYjIgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC5tYXAKKysrIGIv bGliZ29tcC9saWJnb21wLm1hcApAQCAtNDE5LDYgKzQxOSw3IEBAIEdPTVBfNS4xIHsKIEdP TVBfNS4xLjEgewogICBnbG9iYWw6CiAJR09NUF90YXNrd2FpdF9kZXBlbmRfbm93YWl0Owor CUdPTVBfdGFyZ2V0X21hcF9pbmRpcmVjdF9wdHI7CiB9IEdPTVBfNS4xOwogCiBPQUNDXzIu MCB7CmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAudGV4aSBiL2xpYmdvbXAvbGliZ29t cC50ZXhpCmluZGV4IDAyZjJkMGU1NzY3Li5mNmY1ODI3ZTQyNCAxMDA2NDQKLS0tIGEvbGli Z29tcC9saWJnb21wLnRleGkKKysrIGIvbGliZ29tcC9saWJnb21wLnRleGkKQEAgLTMxMSw3 ICszMTEsNyBAQCBUaGUgT3Blbk1QIDQuNSBzcGVjaWZpY2F0aW9uIGlzIGZ1bGx5IHN1cHBv cnRlZC4KIEBpdGVtIEl0ZXJhdG9ycyBpbiBAY29kZXt0YXJnZXQgdXBkYXRlfSBtb3Rpb24g Y2xhdXNlcyBhbmQgQGNvZGV7bWFwfQogICAgICAgY2xhdXNlcyBAdGFiIE4gQHRhYgogQGl0 ZW0gSW5kaXJlY3QgY2FsbHMgdG8gdGhlIGRldmljZSB2ZXJzaW9uIG9mIGEgcHJvY2VkdXJl IG9yIGZ1bmN0aW9uIGluCi0gICAgICBAY29kZXt0YXJnZXR9IHJlZ2lvbnMgQHRhYiBOIEB0 YWIKKyAgICAgIEBjb2Rle3RhcmdldH0gcmVnaW9ucyBAdGFiIFAgQHRhYiBPbmx5IEMgYW5k IEMrKwogQGl0ZW0gQGNvZGV7aW50ZXJvcH0gZGlyZWN0aXZlIEB0YWIgTiBAdGFiCiBAaXRl bSBAY29kZXtvbXBfaW50ZXJvcF90fSBvYmplY3Qgc3VwcG9ydCBpbiBydW50aW1lIHJvdXRp bmVzIEB0YWIgTiBAdGFiCiBAaXRlbSBAY29kZXtub3dhaXR9IGNsYXVzZSBpbiBAY29kZXt0 YXNrd2FpdH0gZGlyZWN0aXZlIEB0YWIgWSBAdGFiCkBAIC0zNjAsNyArMzYwLDcgQEAgdG8g YWRkcmVzcyBvZiBtYXRjaGluZyBtYXBwZWQgbGlzdCBpdGVtIHBlciA1LjEsIFNlY3QuIDIu MjEuNy4yIEB0YWIgTiBAdGFiCiBAaXRlbSBGb3IgRm9ydHJhbiwgZGlhZ25vc2UgcGxhY2lu ZyBkZWNsYXJhdGl2ZSBiZWZvcmUvYmV0d2VlbiBAY29kZXtVU0V9LAogICAgICAgQGNvZGV7 SU1QT1JUfSwgYW5kIEBjb2Rle0lNUExJQ0lUfSBhcyBpbnZhbGlkIEB0YWIgTiBAdGFiCiBA aXRlbSBPcHRpb25hbCBjb21tYSBiZXR3ZWVuIGRpcmVjdGl2ZSBhbmQgY2xhdXNlIGluIHRo ZSBAY29kZXsjcHJhZ21hfSBmb3JtIEB0YWIgWSBAdGFiCi1AaXRlbSBAY29kZXtpbmRpcmVj dH0gY2xhdXNlIGluIEBjb2Rle2RlY2xhcmUgdGFyZ2V0fSBAdGFiIE4gQHRhYgorQGl0ZW0g QGNvZGV7aW5kaXJlY3R9IGNsYXVzZSBpbiBAY29kZXtkZWNsYXJlIHRhcmdldH0gQHRhYiBQ IEB0YWIgT25seSBDIGFuZCBDKysKIEBpdGVtIEBjb2Rle2RldmljZV90eXBlKG5vaG9zdCl9 L0Bjb2Rle2RldmljZV90eXBlKGhvc3QpfSBmb3IgdmFyaWFibGVzIEB0YWIgTiBAdGFiCiBA aXRlbSBAY29kZXtwcmVzZW50fSBtb2RpZmllciB0byB0aGUgQGNvZGV7bWFwfSwgQGNvZGV7 dG99IGFuZCBAY29kZXtmcm9tfQogICAgICAgY2xhdXNlcyBAdGFiIFkgQHRhYgpAQCAtNDM5 LDYgKzQzOSw4IEBAIHRvIGFkZHJlc3Mgb2YgbWF0Y2hpbmcgbWFwcGVkIGxpc3QgaXRlbSBw ZXIgNS4xLCBTZWN0LiAyLjIxLjcuMiBAdGFiIE4gQHRhYgogQGl0ZW0gQGNvZGV7YWxsfSBh cyBAZW1waHtpbXBsaWNpdC1iZWhhdmlvcn0gZm9yIEBjb2Rle2RlZmF1bHRtYXB9IEB0YWIg WSBAdGFiCiBAaXRlbSBAZW1waHtpbnRlcm9wX3R5cGVzfSBpbiBhbnkgcG9zaXRpb24gb2Yg dGhlIG1vZGlmaWVyIGxpc3QgZm9yIHRoZSBAY29kZXtpbml0fSBjbGF1c2UKICAgICAgIG9m IHRoZSBAY29kZXtpbnRlcm9wfSBjb25zdHJ1Y3QgQHRhYiBOIEB0YWIKK0BpdGVtIEludm9r ZSB2aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMgb2YgQysrIG9iamVjdHMgY3JlYXRlZCBvbiB0 aGUgaG9zdCBkZXZpY2UKKyAgICAgIG9uIG90aGVyIGRldmljZXMgQHRhYiBOIEB0YWIKIEBl bmQgbXVsdGl0YWJsZQogCiAKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcF9nLmggYi9s aWJnb21wL2xpYmdvbXBfZy5oCmluZGV4IDVjMTY3NWM3ODY5Li45NTA0NjMxMmFlOSAxMDA2 NDQKLS0tIGEvbGliZ29tcC9saWJnb21wX2cuaAorKysgYi9saWJnb21wL2xpYmdvbXBfZy5o CkBAIC0zNTcsNiArMzU3LDcgQEAgZXh0ZXJuIHZvaWQgR09NUF90YXJnZXRfZW50ZXJfZXhp dF9kYXRhIChpbnQsIHNpemVfdCwgdm9pZCAqKiwgc2l6ZV90ICosCiAJCQkJCSB2b2lkICoq KTsKIGV4dGVybiB2b2lkIEdPTVBfdGVhbXMgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50 KTsKIGV4dGVybiBib29sIEdPTVBfdGVhbXM0ICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGlu dCwgdW5zaWduZWQgaW50LCBib29sKTsKK2V4dGVybiB2b2lkICpHT01QX3RhcmdldF9tYXBf aW5kaXJlY3RfcHRyICh2b2lkICopOwogCiAvKiB0ZWFtcy5jICovCiAKZGlmZiAtLWdpdCBh L2xpYmdvbXAvb2FjYy1ob3N0LmMgYi9saWJnb21wL29hY2MtaG9zdC5jCmluZGV4IDU5ODBk NTEwODM4Li5mYmFiNzVkN2Q0MyAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLWhvc3QuYwor KysgYi9saWJnb21wL29hY2MtaG9zdC5jCkBAIC04Miw3ICs4Miw4IEBAIGhvc3RfbG9hZF9p bWFnZSAoaW50IG4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogCQkgdW5zaWduZWQgdiBf X2F0dHJpYnV0ZV9fICgodW51c2VkKSksCiAJCSBjb25zdCB2b2lkICp0IF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSwKIAkJIHN0cnVjdCBhZGRyX3BhaXIgKipyIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSwKLQkJIHVpbnQ2NF90ICoqZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkp CisJCSB1aW50NjRfdCAqKmYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkgdWludDY0 X3QgKmkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewogICByZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24uYyBiL2xpYmdvbXAvcGx1Z2lu L3BsdWdpbi1nY24uYwppbmRleCA0MzI4ZDNkZTE0ZS4uN2U3ZTJkNmVkZmUgMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24uYworKysgYi9saWJnb21wL3BsdWdpbi9w bHVnaW4tZ2NuLmMKQEAgLTM2NSw2ICszNjUsNyBAQCBzdHJ1Y3QgZ2NuX2ltYWdlX2Rlc2MK ICAgfSAqZ2NuX2ltYWdlOwogICBjb25zdCB1bnNpZ25lZCBrZXJuZWxfY291bnQ7CiAgIHN0 cnVjdCBoc2Ffa2VybmVsX2Rlc2NyaXB0aW9uICprZXJuZWxfaW5mb3M7CisgIGNvbnN0IHVu c2lnbmVkIGluZF9mdW5jX2NvdW50OwogICBjb25zdCB1bnNpZ25lZCBnbG9iYWxfdmFyaWFi bGVfY291bnQ7CiB9OwogCkBAIC0zMzY2LDcgKzMzNjcsOCBAQCBHT01QX09GRkxPQURfaW5p dF9kZXZpY2UgKGludCBuKQogaW50CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9y ZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJCQkgc3Ry dWN0IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRfdCAqKnJldl9mbl90 YWJsZSkKKwkJCSB1aW50NjRfdCAqKnJldl9mbl90YWJsZSwKKwkJCSB1aW50NjRfdCAqaG9z dF9pbmRfZm5fdGFibGUpCiB7CiAgIGlmIChHT01QX1ZFUlNJT05fREVWICh2ZXJzaW9uKSAh PSBHT01QX1ZFUlNJT05fR0NOKQogICAgIHsKQEAgLTMzODIsNiArMzM4NCw4IEBAIEdPTVBf T0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2 b2lkICp0YXJnZXRfZGF0YSwKICAgc3RydWN0IG1vZHVsZV9pbmZvICptb2R1bGU7CiAgIHN0 cnVjdCBrZXJuZWxfaW5mbyAqa2VybmVsOwogICBpbnQga2VybmVsX2NvdW50ID0gaW1hZ2Vf ZGVzYy0+a2VybmVsX2NvdW50OworICB1bnNpZ25lZCBpbmRfZnVuY19jb3VudCA9IEdPTVBf VkVSU0lPTl9TVVBQT1JUU19JTkRJUkVDVF9GVU5DUyAodmVyc2lvbikKKwkJCSAgICAgID8g aW1hZ2VfZGVzYy0+aW5kX2Z1bmNfY291bnQgOiAwOwogICB1bnNpZ25lZCB2YXJfY291bnQg PSBpbWFnZV9kZXNjLT5nbG9iYWxfdmFyaWFibGVfY291bnQ7CiAgIC8qIEN1cnJlbnRseSwg Im90aGVycyIgaXMgYSBzdHJ1Y3Qgb2YgSUNWUy4gICovCiAgIGludCBvdGhlcl9jb3VudCA9 IDE7CkBAIC0zNDAwLDYgKzM0MDQsNyBAQCBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50 IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAgICAg cmV0dXJuIC0xOwogCiAgIEdDTl9ERUJVRyAoIkVuY291bnRlcmVkICVkIGtlcm5lbHMgaW4g YW4gaW1hZ2VcbiIsIGtlcm5lbF9jb3VudCk7CisgIEdDTl9ERUJVRyAoIkVuY291bnRlcmVk ICVkIGluZGlyZWN0IGZ1bmN0aW9ucyBpbiBhbiBpbWFnZVxuIiwgaW5kX2Z1bmNfY291bnQp OwogICBHQ05fREVCVUcgKCJFbmNvdW50ZXJlZCAldSBnbG9iYWwgdmFyaWFibGVzIGluIGFu IGltYWdlXG4iLCB2YXJfY291bnQpOwogICBHQ05fREVCVUcgKCJFeHBlY3QgJWQgb3RoZXIg dmFyaWFibGVzIGluIGFuIGltYWdlXG4iLCBvdGhlcl9jb3VudCk7CiAgIHBhaXIgPSBHT01Q X1BMVUdJTl9tYWxsb2MgKChrZXJuZWxfY291bnQgKyB2YXJfY291bnQgKyBvdGhlcl9jb3Vu dCAtIDIpCkBAIC0zNDgxLDYgKzM0ODYsODcgQEAgR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2Ug KGludCBvcmQsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IHZvaWQgKnRhcmdldF9kYXRhLAog CX0KICAgICB9CiAKKyAgaWYgKGluZF9mdW5jX2NvdW50ID4gMCkKKyAgICB7CisgICAgICBo c2Ffc3RhdHVzX3Qgc3RhdHVzOworCisgICAgICAvKiBSZWFkIGluZGlyZWN0IGZ1bmN0aW9u IHRhYmxlIGZyb20gaW1hZ2UuICAqLworICAgICAgaHNhX2V4ZWN1dGFibGVfc3ltYm9sX3Qg aW5kX2Z1bmNzX3N5bWJvbDsKKyAgICAgIHN0YXR1cyA9IGhzYV9mbnMuaHNhX2V4ZWN1dGFi bGVfZ2V0X3N5bWJvbF9mbiAoYWdlbnQtPmV4ZWN1dGFibGUsIE5VTEwsCisJCQkJCQkgICAg ICIub2ZmbG9hZF9pbmRfZnVuY190YWJsZSIsCisJCQkJCQkgICAgIGFnZW50LT5pZCwKKwkJ CQkJCSAgICAgMCwgJmluZF9mdW5jc19zeW1ib2wpOworCisgICAgICBpZiAoc3RhdHVzICE9 IEhTQV9TVEFUVVNfU1VDQ0VTUykKKwloc2FfZmF0YWwgKCJDb3VsZCBub3QgZmluZCAub2Zm bG9hZF9pbmRfZnVuY190YWJsZSBzeW1ib2wgaW4gdGhlICIKKwkJICAgImNvZGUgb2JqZWN0 Iiwgc3RhdHVzKTsKKworICAgICAgdWludDY0X3QgaW5kX2Z1bmNzX3RhYmxlX2FkZHI7Cisg ICAgICBzdGF0dXMgPSBoc2FfZm5zLmhzYV9leGVjdXRhYmxlX3N5bWJvbF9nZXRfaW5mb19m bgorCShpbmRfZnVuY3Nfc3ltYm9sLCBIU0FfRVhFQ1VUQUJMRV9TWU1CT0xfSU5GT19WQVJJ QUJMRV9BRERSRVNTLAorCSAmaW5kX2Z1bmNzX3RhYmxlX2FkZHIpOworICAgICAgaWYgKHN0 YXR1cyAhPSBIU0FfU1RBVFVTX1NVQ0NFU1MpCisJaHNhX2ZhdGFsICgiQ291bGQgbm90IGV4 dHJhY3QgYSB2YXJpYWJsZSBmcm9tIGl0cyBzeW1ib2wiLCBzdGF0dXMpOworCisgICAgICB1 aW50NjRfdCBpbmRfZnVuY3NfdGFibGVbaW5kX2Z1bmNfY291bnRdOworICAgICAgR09NUF9P RkZMT0FEX2RldjJob3N0IChhZ2VudC0+ZGV2aWNlX2lkLCBpbmRfZnVuY3NfdGFibGUsCisJ CQkgICAgICh2b2lkKikgaW5kX2Z1bmNzX3RhYmxlX2FkZHIsCisJCQkgICAgIHNpemVvZiAo aW5kX2Z1bmNzX3RhYmxlKSk7CisKKyAgICAgIC8qIEJ1aWxkIGhvc3QtPnRhcmdldCBhZGRy ZXNzIG1hcCBmb3IgaW5kaXJlY3QgZnVuY3Rpb25zLiAgKi8KKyAgICAgIHVpbnQ2NF90IGlu ZF9mbl9tYXBbaW5kX2Z1bmNfY291bnQgKiAyICsgMV07CisgICAgICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgaW5kX2Z1bmNfY291bnQ7IGkrKykKKwl7CisJICBpbmRfZm5fbWFwW2kg KiAyXSA9IGhvc3RfaW5kX2ZuX3RhYmxlW2ldOworCSAgaW5kX2ZuX21hcFtpICogMiArIDFd ID0gaW5kX2Z1bmNzX3RhYmxlW2ldOworCSAgR0NOX0RFQlVHICgiSW5kaXJlY3QgZnVuY3Rp b24gJWQ6ICVseC0+JWx4XG4iLAorCQkgICAgIGksIGhvc3RfaW5kX2ZuX3RhYmxlW2ldLCBp bmRfZnVuY3NfdGFibGVbaV0pOworCX0KKyAgICAgIGluZF9mbl9tYXBbaW5kX2Z1bmNfY291 bnQgKiAyXSA9IDA7CisKKyAgICAgIC8qIFdyaXRlIHRoZSBtYXAgb250byB0aGUgdGFyZ2V0 LiAgKi8KKyAgICAgIHZvaWQgKm1hcF90YXJnZXRfYWRkcgorCT0gR09NUF9PRkZMT0FEX2Fs bG9jIChhZ2VudC0+ZGV2aWNlX2lkLCBzaXplb2YgKGluZF9mbl9tYXApKTsKKyAgICAgIEdD Tl9ERUJVRyAoIkFsbG9jYXRlZCBpbmRpcmVjdCBtYXAgYXQgJXBcbiIsIG1hcF90YXJnZXRf YWRkcik7CisKKyAgICAgIEdPTVBfT0ZGTE9BRF9ob3N0MmRldiAoYWdlbnQtPmRldmljZV9p ZCwgbWFwX3RhcmdldF9hZGRyLAorCQkJICAgICAodm9pZCopIGluZF9mbl9tYXAsCisJCQkg ICAgIHNpemVvZiAoaW5kX2ZuX21hcCkpOworCisgICAgICAvKiBXcml0ZSBhZGRyZXNzIG9m IHRoZSBtYXAgb250byB0aGUgdGFyZ2V0LiAgKi8KKyAgICAgIGhzYV9leGVjdXRhYmxlX3N5 bWJvbF90IHN5bWJvbDsKKworICAgICAgc3RhdHVzCisJPSBoc2FfZm5zLmhzYV9leGVjdXRh YmxlX2dldF9zeW1ib2xfZm4gKGFnZW50LT5leGVjdXRhYmxlLCBOVUxMLAorCQkJCQkJWFNU UklORyAoR09NUF9JTkRJUkVDVF9BRERSX01BUCksCisJCQkJCQlhZ2VudC0+aWQsIDAsICZz eW1ib2wpOworICAgICAgaWYgKHN0YXR1cyAhPSBIU0FfU1RBVFVTX1NVQ0NFU1MpCisJaHNh X2ZhdGFsICgiQ291bGQgbm90IGZpbmQgR09NUF9JTkRJUkVDVF9BRERSX01BUCBpbiBjb2Rl IG9iamVjdCIsCisJCSAgIHN0YXR1cyk7CisKKyAgICAgIHVpbnQ2NF90IHZhcnB0cjsKKyAg ICAgIHVpbnQzMl90IHZhcnNpemU7CisKKyAgICAgIHN0YXR1cyA9IGhzYV9mbnMuaHNhX2V4 ZWN1dGFibGVfc3ltYm9sX2dldF9pbmZvX2ZuCisJKHN5bWJvbCwgSFNBX0VYRUNVVEFCTEVf U1lNQk9MX0lORk9fVkFSSUFCTEVfQUREUkVTUywKKwkgJnZhcnB0cik7CisgICAgICBpZiAo c3RhdHVzICE9IEhTQV9TVEFUVVNfU1VDQ0VTUykKKwloc2FfZmF0YWwgKCJDb3VsZCBub3Qg ZXh0cmFjdCBhIHZhcmlhYmxlIGZyb20gaXRzIHN5bWJvbCIsIHN0YXR1cyk7CisgICAgICBz dGF0dXMgPSBoc2FfZm5zLmhzYV9leGVjdXRhYmxlX3N5bWJvbF9nZXRfaW5mb19mbgorCShz eW1ib2wsIEhTQV9FWEVDVVRBQkxFX1NZTUJPTF9JTkZPX1ZBUklBQkxFX1NJWkUsCisJJnZh cnNpemUpOworICAgICAgaWYgKHN0YXR1cyAhPSBIU0FfU1RBVFVTX1NVQ0NFU1MpCisJaHNh X2ZhdGFsICgiQ291bGQgbm90IGV4dHJhY3QgYSB2YXJpYWJsZSBzaXplIGZyb20gaXRzIHN5 bWJvbCIsCisJCSAgIHN0YXR1cyk7CisKKyAgICAgIEdDTl9ERUJVRyAoIkZvdW5kIEdPTVBf SU5ESVJFQ1RfQUREUl9NQVAgYXQgJWx4IHdpdGggc2l6ZSAlZFxuIiwKKwkJIHZhcnB0ciwg dmFyc2l6ZSk7CisKKyAgICAgIEdPTVBfT0ZGTE9BRF9ob3N0MmRldiAoYWdlbnQtPmRldmlj ZV9pZCwgKHZvaWQgKikgdmFycHRyLAorCQkJICAgICAmbWFwX3RhcmdldF9hZGRyLAorCQkJ ICAgICBzaXplb2YgKG1hcF90YXJnZXRfYWRkcikpOworICAgIH0KKwogICBHQ05fREVCVUcg KCJMb29raW5nIGZvciB2YXJpYWJsZSAlc1xuIiwgWFNUUklORyAoR09NUF9BRERJVElPTkFM X0lDVlMpKTsKIAogICBoc2Ffc3RhdHVzX3Qgc3RhdHVzOwpkaWZmIC0tZ2l0IGEvbGliZ29t cC9wbHVnaW4vcGx1Z2luLW52cHR4LmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHgu YwppbmRleCAwMGQ0MjQxYWUwMi4uMDU0OGU3ZTA5ZTUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAv cGx1Z2luL3BsdWdpbi1udnB0eC5jCisrKyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0 eC5jCkBAIC0yNjYsNiArMjY2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgbnZwdHhfdGRhdGEKIAog ICBjb25zdCBzdHJ1Y3QgdGFyZ19mbl9sYXVuY2ggKmZuX2Rlc2NzOwogICB1bnNpZ25lZCBm bl9udW07CisKKyAgdW5zaWduZWQgaW5kX2ZuX251bTsKIH0gbnZwdHhfdGRhdGFfdDsKIAog LyogRGVzY3JpcHRvciBvZiBhIGxvYWRlZCBmdW5jdGlvbi4gICovCkBAIC0xMjg1LDEyICsx Mjg3LDEzIEBAIG52cHR4X3NldF9jbG9ja3RpY2sgKENVbW9kdWxlIG1vZHVsZSwgc3RydWN0 IHB0eF9kZXZpY2UgKmRldikKIGludAogR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UgKGludCBv cmQsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IHZvaWQgKnRhcmdldF9kYXRhLAogCQkJIHN0 cnVjdCBhZGRyX3BhaXIgKip0YXJnZXRfdGFibGUsCi0JCQkgdWludDY0X3QgKipyZXZfZm5f dGFibGUpCisJCQkgdWludDY0X3QgKipyZXZfZm5fdGFibGUsCisJCQkgdWludDY0X3QgKmhv c3RfaW5kX2ZuX3RhYmxlKQogewogICBDVW1vZHVsZSBtb2R1bGU7CiAgIGNvbnN0IGNoYXIg KmNvbnN0ICp2YXJfbmFtZXM7CiAgIGNvbnN0IHN0cnVjdCB0YXJnX2ZuX2xhdW5jaCAqZm5f ZGVzY3M7Ci0gIHVuc2lnbmVkIGludCBmbl9lbnRyaWVzLCB2YXJfZW50cmllcywgb3RoZXJf ZW50cmllcywgaSwgajsKKyAgdW5zaWduZWQgaW50IGZuX2VudHJpZXMsIHZhcl9lbnRyaWVz LCBpbmRfZm5fZW50cmllcywgb3RoZXJfZW50cmllcywgaSwgajsKICAgc3RydWN0IHRhcmdf Zm5fZGVzY3JpcHRvciAqdGFyZ19mbnM7CiAgIHN0cnVjdCBhZGRyX3BhaXIgKnRhcmdfdGJs OwogICBjb25zdCBudnB0eF90ZGF0YV90ICppbWdfaGVhZGVyID0gKGNvbnN0IG52cHR4X3Rk YXRhX3QgKikgdGFyZ2V0X2RhdGE7CkBAIC0xMzE5LDYgKzEzMjIsOCBAQCBHT01QX09GRkxP QURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAq dGFyZ2V0X2RhdGEsCiAgIHZhcl9uYW1lcyA9IGltZ19oZWFkZXItPnZhcl9uYW1lczsKICAg Zm5fZW50cmllcyA9IGltZ19oZWFkZXItPmZuX251bTsKICAgZm5fZGVzY3MgPSBpbWdfaGVh ZGVyLT5mbl9kZXNjczsKKyAgaW5kX2ZuX2VudHJpZXMgPSBHT01QX1ZFUlNJT05fU1VQUE9S VFNfSU5ESVJFQ1RfRlVOQ1MgKHZlcnNpb24pCisJCSAgICAgPyBpbWdfaGVhZGVyLT5pbmRf Zm5fbnVtIDogMDsKIAogICAvKiBDdXJyZW50bHksIG90aGVyX2VudHJpZXMgY29udGFpbnMg b25seSB0aGUgc3RydWN0IG9mIElDVnMuICAqLwogICBvdGhlcl9lbnRyaWVzID0gMTsKQEAg LTEzNzMsNiArMTM3OCw2MCBAQCBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9yZCwg dW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAgICAgICB0YXJn X3RibC0+ZW5kID0gdGFyZ190YmwtPnN0YXJ0ICsgYnl0ZXM7CiAgICAgfQogCisgIGlmIChp bmRfZm5fZW50cmllcyA+IDApCisgICAgeworICAgICAgQ1VkZXZpY2VwdHIgdmFyOworICAg ICAgc2l6ZV90IGJ5dGVzOworCisgICAgICAvKiBSZWFkIGluZGlyZWN0IGZ1bmN0aW9uIHRh YmxlIGZyb20gaW1hZ2UuICAqLworICAgICAgQ1VyZXN1bHQgciA9IENVREFfQ0FMTF9OT0NI RUNLIChjdU1vZHVsZUdldEdsb2JhbCwgJnZhciwgJmJ5dGVzLCBtb2R1bGUsCisJCQkJICAg ICAgIiRvZmZsb2FkX2luZF9mdW5jX3RhYmxlIik7CisgICAgICBpZiAociAhPSBDVURBX1NV Q0NFU1MpCisJR09NUF9QTFVHSU5fZmF0YWwgKCJjdU1vZHVsZUdldEdsb2JhbCBlcnJvcjog JXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgICBhc3NlcnQgKGJ5dGVzID09IHNpemVvZiAo dWludDY0X3QpICogaW5kX2ZuX2VudHJpZXMpOworCisgICAgICB1aW50NjRfdCBpbmRfZm5f dGFibGVbaW5kX2ZuX2VudHJpZXNdOworICAgICAgciA9IENVREFfQ0FMTF9OT0NIRUNLIChj dU1lbWNweUR0b0gsIGluZF9mbl90YWJsZSwgdmFyLCBieXRlcyk7CisgICAgICBpZiAociAh PSBDVURBX1NVQ0NFU1MpCisJR09NUF9QTFVHSU5fZmF0YWwgKCJjdU1lbWNweUR0b0ggZXJy b3I6ICVzIiwgY3VkYV9lcnJvciAocikpOworCisgICAgICAvKiBCdWlsZCBob3N0LT50YXJn ZXQgYWRkcmVzcyBtYXAgZm9yIGluZGlyZWN0IGZ1bmN0aW9ucy4gICovCisgICAgICB1aW50 NjRfdCBpbmRfZm5fbWFwW2luZF9mbl9lbnRyaWVzICogMiArIDFdOworICAgICAgZm9yICh1 bnNpZ25lZCBrID0gMDsgayA8IGluZF9mbl9lbnRyaWVzOyBrKyspCisJeworCSAgaW5kX2Zu X21hcFtrICogMl0gPSBob3N0X2luZF9mbl90YWJsZVtrXTsKKwkgIGluZF9mbl9tYXBbayAq IDIgKyAxXSA9IGluZF9mbl90YWJsZVtrXTsKKwkgIEdPTVBfUExVR0lOX2RlYnVnICgwLCAi SW5kaXJlY3QgZnVuY3Rpb24gJWQ6ICVseC0+JWx4XG4iLAorCQkJICAgICBrLCBob3N0X2lu ZF9mbl90YWJsZVtrXSwgaW5kX2ZuX3RhYmxlW2tdKTsKKwl9CisgICAgICBpbmRfZm5fbWFw W2luZF9mbl9lbnRyaWVzICogMl0gPSAwOworCisgICAgICAvKiBXcml0ZSB0aGUgbWFwIG9u dG8gdGhlIHRhcmdldC4gICovCisgICAgICB2b2lkICptYXBfdGFyZ2V0X2FkZHIKKwk9IEdP TVBfT0ZGTE9BRF9hbGxvYyAob3JkLCBzaXplb2YgKGluZF9mbl9tYXApKTsKKyAgICAgIEdP TVBfUExVR0lOX2RlYnVnICgwLCAiQWxsb2NhdGVkIGluZGlyZWN0IG1hcCBhdCAlcFxuIiwg bWFwX3RhcmdldF9hZGRyKTsKKworICAgICAgR09NUF9PRkZMT0FEX2hvc3QyZGV2IChvcmQs IG1hcF90YXJnZXRfYWRkciwKKwkJCSAgICAgKHZvaWQqKSBpbmRfZm5fbWFwLAorCQkJICAg ICBzaXplb2YgKGluZF9mbl9tYXApKTsKKworICAgICAgLyogV3JpdGUgYWRkcmVzcyBvZiB0 aGUgbWFwIG9udG8gdGhlIHRhcmdldC4gICovCisgICAgICBDVWRldmljZXB0ciB2YXJwdHI7 CisgICAgICBzaXplX3QgdmFyc2l6ZTsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAo Y3VNb2R1bGVHZXRHbG9iYWwsICZ2YXJwdHIsICZ2YXJzaXplLAorCQkJICAgICBtb2R1bGUs IFhTVFJJTkcgKEdPTVBfSU5ESVJFQ1RfQUREUl9NQVApKTsKKyAgICAgIGlmIChyICE9IENV REFfU1VDQ0VTUykKKwlHT01QX1BMVUdJTl9mYXRhbCAoIkluZGlyZWN0IG1hcCB2YXJpYWJs ZSBub3QgZm91bmQgaW4gaW1hZ2U6ICVzIiwKKwkJCSAgIGN1ZGFfZXJyb3IgKHIpKTsKKwor ICAgICAgR09NUF9QTFVHSU5fZGVidWcgKDAsCisJCQkgIkluZGlyZWN0IG1hcCB2YXJpYWJs ZSBmb3VuZCBhdCAlbGx4IHdpdGggc2l6ZSAlbGRcbiIsCisJCQkgdmFycHRyLCB2YXJzaXpl KTsKKworICAgICAgR09NUF9PRkZMT0FEX2hvc3QyZGV2IChvcmQsICh2b2lkICopIHZhcnB0 ciwgJm1hcF90YXJnZXRfYWRkciwKKwkJCSAgICAgc2l6ZW9mIChtYXBfdGFyZ2V0X2FkZHIp KTsKKyAgICB9CisKICAgQ1VkZXZpY2VwdHIgdmFycHRyOwogICBzaXplX3QgdmFyc2l6ZTsK ICAgQ1VyZXN1bHQgciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdU1vZHVsZUdldEdsb2JhbCwg JnZhcnB0ciwgJnZhcnNpemUsCmRpZmYgLS1naXQgYS9saWJnb21wL3RhcmdldC5jIGIvbGli Z29tcC90YXJnZXQuYwppbmRleCA4MTI2NzRkMTlhOS4uZjMwYzIwMjU1ZDMgMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvdGFyZ2V0LmMKKysrIGIvbGliZ29tcC90YXJnZXQuYwpAQCAtMjI1Niwx MSArMjI1NiwyMCBAQCBnb21wX2xvYWRfaW1hZ2VfdG9fZGV2aWNlIChzdHJ1Y3QgZ29tcF9k ZXZpY2VfZGVzY3IgKmRldmljZXAsIHVuc2lnbmVkIHZlcnNpb24sCiAgIHZvaWQgKipob3N0 X2Z1bmNzX2VuZCAgPSAoKHZvaWQgKioqKSBob3N0X3RhYmxlKVsxXTsKICAgdm9pZCAqKmhv c3RfdmFyX3RhYmxlICA9ICgodm9pZCAqKiopIGhvc3RfdGFibGUpWzJdOwogICB2b2lkICoq aG9zdF92YXJzX2VuZCAgID0gKCh2b2lkICoqKikgaG9zdF90YWJsZSlbM107CisgIHZvaWQg Kipob3N0X2luZF9mdW5jX3RhYmxlID0gTlVMTDsKKyAgdm9pZCAqKmhvc3RfaW5kX2Z1bmNz X2VuZCAgPSBOVUxMOwogCi0gIC8qIFRoZSBmdW5jIHRhYmxlIGNvbnRhaW5zIG9ubHkgYWRk cmVzc2VzLCB0aGUgdmFyIHRhYmxlIGNvbnRhaW5zIGFkZHJlc3NlcwotICAgICBhbmQgY29y cmVzcG9uZGluZyBzaXplcy4gICovCisgIGlmIChHT01QX1ZFUlNJT05fU1VQUE9SVFNfSU5E SVJFQ1RfRlVOQ1MgKHZlcnNpb24pKQorICAgIHsKKyAgICAgIGhvc3RfaW5kX2Z1bmNfdGFi bGUgPSAoKHZvaWQgKioqKSBob3N0X3RhYmxlKVs0XTsKKyAgICAgIGhvc3RfaW5kX2Z1bmNz X2VuZCAgPSAoKHZvaWQgKioqKSBob3N0X3RhYmxlKVs1XTsKKyAgICB9CisKKyAgLyogVGhl IGZ1bmMgYW5kIGluZF9mdW5jIHRhYmxlcyBjb250YWluIG9ubHkgYWRkcmVzc2VzLCB0aGUg dmFyIHRhYmxlCisgICAgIGNvbnRhaW5zIGFkZHJlc3NlcyBhbmQgY29ycmVzcG9uZGluZyBz aXplcy4gICovCiAgIGludCBudW1fZnVuY3MgPSBob3N0X2Z1bmNzX2VuZCAtIGhvc3RfZnVu Y190YWJsZTsKICAgaW50IG51bV92YXJzICA9IChob3N0X3ZhcnNfZW5kIC0gaG9zdF92YXJf dGFibGUpIC8gMjsKKyAgaW50IG51bV9pbmRfZnVuY3MgPSAoaG9zdF9pbmRfZnVuY3NfZW5k IC0gaG9zdF9pbmRfZnVuY190YWJsZSk7CiAKICAgLyogTG9hZCBpbWFnZSB0byBkZXZpY2Ug YW5kIGdldCB0YXJnZXQgYWRkcmVzc2VzIGZvciB0aGUgaW1hZ2UuICAqLwogICBzdHJ1Y3Qg YWRkcl9wYWlyICp0YXJnZXRfdGFibGUgPSBOVUxMOwpAQCAtMjI3Myw3ICsyMjgyLDkgQEAg Z29tcF9sb2FkX2ltYWdlX3RvX2RldmljZSAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpk ZXZpY2VwLCB1bnNpZ25lZCB2ZXJzaW9uLAogICBudW1fdGFyZ2V0X2VudHJpZXMKICAgICA9 IGRldmljZXAtPmxvYWRfaW1hZ2VfZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLCB2ZXJzaW9u LAogCQkJCXRhcmdldF9kYXRhLCAmdGFyZ2V0X3RhYmxlLAotCQkJCXJldl9sb29rdXAgPyAm cmV2X3RhcmdldF9mbl90YWJsZSA6IE5VTEwpOworCQkJCXJldl9sb29rdXAgPyAmcmV2X3Rh cmdldF9mbl90YWJsZSA6IE5VTEwsCisJCQkJbnVtX2luZF9mdW5jcworCQkJCSAgPyAodWlu dDY0X3QgKikgaG9zdF9pbmRfZnVuY190YWJsZSA6IE5VTEwpOwogCiAgIGlmIChudW1fdGFy Z2V0X2VudHJpZXMgIT0gbnVtX2Z1bmNzICsgbnVtX3ZhcnMKICAgICAgIC8qICIrMSIgZHVl IHRvIHRoZSBhZGRpdGlvbmFsIElDViBzdHJ1Y3QuICAqLwpkaWZmIC0tZ2l0IGEvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5jKysvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5DIGIv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jKysvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3Qt MS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZWFjNmIzZmE5 NgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYysrL2Rl Y2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuQwpAQCAtMCwwICsxLDIzIEBACisvLyB7IGRnLXJ1 biB9CisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0CitjbGFz cyBDCit7CitwdWJsaWM6CisgIGludCB5OworICBpbnQgZiAoaW50IHgpIHsgcmV0dXJuIHgg KyB5OyB9Cit9OworI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0CisKK2ludCBtYWlu ICh2b2lkKQoreworICBDIGM7CisgIGMueSA9IDI3OworICBpbnQgeDsKKyAgaW50IChDOjoq Zm5fcHRyKSAoaW50KSA9ICZDOjpmOworCisjcHJhZ21hIG9tcCB0YXJnZXQgbWFwICh0bzog YywgZm5fcHRyKSBtYXAgKGZyb206IHgpCisgIHggPSAoYy4qZm5fcHRyKSAoNDIpOworCisg IHJldHVybiB4ICE9IDI3ICsgNDI7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0xLmMgYi9s aWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNsYXJlLXRhcmdldC1p bmRpcmVjdC0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIy MGJmYTY0ZGNhCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5jCkBAIC0wLDAgKzEs MjEgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFy ZSB0YXJnZXQgaW5kaXJlY3QKK2ludCBmb28odm9pZCkgeyByZXR1cm4gNTsgfQoraW50IGJh cih2b2lkKSB7IHJldHVybiA4OyB9CitpbnQgYmF6KHZvaWQpIHsgcmV0dXJuIDExOyB9Cisj cHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQKKworaW50IG1haW4gKHZvaWQpCit7Cisg IGludCB4OworICBpbnQgKCpmb29fcHRyKSAodm9pZCkgPSAmZm9vOworICBpbnQgKCpiYXJf cHRyKSAodm9pZCkgPSAmYmFyOworICBpbnQgKCpiYXpfcHRyKSAodm9pZCkgPSAmYmF6Owor ICBpbnQgZXhwZWN0ZWQgPSBmb28gKCkgKyBiYXIgKCkgKyBiYXogKCk7CisKKyNwcmFnbWEg b21wIHRhcmdldCBtYXAgKHRvOiBmb29fcHRyLCBiYXJfcHRyLCBiYXpfcHRyKSBtYXAgKGZy b206IHgpCisgIHggPSAoKmZvb19wdHIpICgpICsgKCpiYXJfcHRyKSAoKSArICgqYmF6X3B0 cikgKCk7CisKKyAgcmV0dXJuIHggLSBleHBlY3RlZDsKK30KZGlmZiAtLWdpdCBhL2xpYmdv bXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2RlY2xhcmUtdGFyZ2V0LWluZGly ZWN0LTIuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2RlY2xh cmUtdGFyZ2V0LWluZGlyZWN0LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uOWZlMTkwZWZjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0yLmMK QEAgLTAsMCArMSwzMyBAQAorLyogeyBkZy1kbyBydW4gfSAqLworCisjZGVmaW5lIE4gMjU2 CisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0CitpbnQgZm9v KHZvaWQpIHsgcmV0dXJuIDU7IH0KK2ludCBiYXIodm9pZCkgeyByZXR1cm4gODsgfQoraW50 IGJheih2b2lkKSB7IHJldHVybiAxMTsgfQorI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFy Z2V0CisKK2ludCBtYWluICh2b2lkKQoreworICBpbnQgaSwgeCA9IDAsIGV4cGVjdGVkID0g MDsKKyAgaW50ICgqZm5fcHRyW05dKSh2b2lkKTsKKworICBmb3IgKGkgPSAwOyBpIDwgTjsg aSsrKQorICAgIHsKKyAgICAgIHN3aXRjaCAoaSAlIDMpCisJeworCWNhc2UgMDogZm5fcHRy W2ldID0gJmZvbzsKKwljYXNlIDE6IGZuX3B0cltpXSA9ICZiYXI7CisJY2FzZSAyOiBmbl9w dHJbaV0gPSAmYmF6OworCX0KKyAgICAgIGV4cGVjdGVkICs9ICgqZm5fcHRyW2ldKSAoKTsK KyAgICB9CisKKyNwcmFnbWEgb21wIHRhcmdldCB0ZWFtcyBkaXN0cmlidXRlIHBhcmFsbGVs IGZvciByZWR1Y3Rpb24oKzogeCkgXAorCQltYXAgKHRvOiBmbl9wdHIpIG1hcCAodG9mcm9t OiB4KQorICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICB4ICs9ICgqZm5fcHRy W2ldKSAoKTsKKworICByZXR1cm4geCAtIGV4cGVjdGVkOworfQotLSAKMi4zNC4xCgo= --------------mZR0kye3ufNcHSO4EeCUgrdF--