From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 20CBB3857711; Wed, 8 Nov 2023 16:58:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 20CBB3857711 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 20CBB3857711 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.129.153 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699462705; cv=none; b=H3LsZ1wSQSGqy6R3ceE9IWmqcQzNgkBkNdNG0oNZeQPE7fOSVVCO1ZPA9/lSRjxYzprrSJl1qcmxVoJOR5QIC7OKeFPtElrVL/Ev2PVkUp7MNusoJOL6sbczVshQfdCn5/ZIyLqwg5mYjiz8bdsi4T+LoIMeYLnH2n3lEZX/KUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699462705; c=relaxed/simple; bh=tGjvs0L64ZuKqxBBskcI8jyXLzznUxughUI+VwCTVZg=; h=Message-ID:Date:MIME-Version:To:From:Subject; b=bIU+2IdL7UpYWRwrH1XWjpVoep26YdkviEi4BBze2HjcLIYIhMcTTJLWc4fPJwRi3mTsF0u1Cz7L8vhWH1G0SSZ6icTz7kUB/19eCOc5GBMwOkPS+nZu1EfPLmz5NXoDRfVYfez6OO24LR1VykEI/QoPPd9cnPoHD5A86xUhKlU= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: unnh8TD7TB6vqZe8HV85fw== X-CSE-MsgGUID: 5s3+2yvDToOR2yjq7AKPxw== X-IronPort-AV: E=Sophos;i="6.03,286,1694764800"; d="diff'?scan'208";a="25177108" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 08 Nov 2023 08:58:16 -0800 IronPort-SDR: 6JysW7LKU3gnqrapGugb+HI7L0bX+cRd98UuXjYf8hHi/XAvPQ0UbRrYmLio+PRsunH7H/0yF5 8XLsk7R2BqIDhM3tjoJWAlBi34bK+8WQdw+GnpfDPZhleuWv5Mfi4dd967TtF7vgYJO1vgW2T1 /qgPKN9VqwxymUMtss/iqqbD3TQIvnpbJnUROR4tSkXa+BrF7YMZ9MPLY472AgFK5Km8iWEAHR F/u+Eoh7arV9vkNYIJvXC19snVPKcG7IccMTTtfyBd4q/8tzOBR9md/leL/7aFCRjfq9ZLPW9Y Sqs= Content-Type: multipart/mixed; boundary="------------eYLBmMMCSazEfkOarVf467op" Message-ID: <60940754-edc6-4110-b7ba-5bed2133bbb6@codesourcery.com> Date: Wed, 8 Nov 2023 17:58:10 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: gcc-patches , fortran , Jakub Jelinek From: Tobias Burnus Subject: [patch] OpenMP/Fortran: Implement omp allocators/allocate for ptr/allocatables X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-14.mgc.mentorg.com (139.181.222.14) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK 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: --------------eYLBmMMCSazEfkOarVf467op Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi all, Comment to reviewers: * Fortran: Except for ensuring that the version field in array descriptors is always set to the default (zero), the generated code should only be affected when -fopenmp-allocators is set, even though several files are touched. * Middle-end: BUILT_IN_GOMP_REALLOC has been added - otherwise untouched. * Otherwise, smaller libgomp changes, conditions to (de)allocation code in fortran/trans*.cc and and some checking updates (mostly openmp.cc) * * * GCC supports OpenMP's allocators, which work typically as: my_c_ptr =3D omp_alloc (byte_size, my_allocator) ... call omp_free (my_c_ptr, omp_null_allocator) where (if called as such) the runtime has to find the used allocator in order to handle the 'free' (and likewise: omp_realloc) correctly. libgomp implements this by allocating a bit more bytes - and using the first bytes to store the handle for the allocator such that 'my_c_ptr minus size of han= dle' will be the address. See also OpenMP spec and: https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fALLOCATOR.html https://gcc.gnu.org/onlinedocs/libgomp/Memory-Management-Routines.html https://gcc.gnu.org/onlinedocs/libgomp/Memory-allocation.html and https://gcc.gnu.org/wiki/cauldron2023 (OpenMP BoF; video recordings not yet available, slide is) FOR FORTRAN, OpenMP permits to allocate ALLOCATABLES and POINTERS also as follows: !$omp allocators allocate(allocator(my_alloc), align(128) : A) allocate(A(10), B) A =3D [1,2,3] ! reallocate with same allocator call intent_out_function(B) ! Has to use proper deallocator deallocate(A) ! Likewise. ! end of scope deallocation: Likewise. (Side remark: In 5.{1,2}, '!$omp allocate(A,B) allocator(my_alloc) align(12= 3)' is the syntax to use - which has nearly the same effect, except that for non-specified variables, 'omp allocators' uses the normal Fortran allocatio= n while for a 'omp allocate' without a variable list uses that OpenMP allocat= or for nonlisted variables.) * * * The problem is really that 'malloc'ed memory has to be freed/realloced by '= free' and 'realloc' while 'omp_alloc'ed memory has to be by handled by 'omp_free' and 'omp_realloc' - getting this wrong will nearly always crash the program= - I assume that the propagation depth is rather slow, i.e. most likely all de= allocation will happen in the file as the allocation, but that's not guaranteed and I = bet that a few "leaks" to other files are likely in every other software package. * * * ASSUMPTIONS for the attached implementation: * Most OpenMP code will not use '!$omp allocators' (Note: Using the API routines or 'allocate' clauses on block-associated directives (like: omp parallel firstprivate(a) allocate(allocator(my_al= loc) :a)') or 'omp allocate' for stack variables are separate and pose no problems= .) * The (de,re)allocation will not happen in a hot code * And, if used, the number of scalar variables of this kind will be small SOLUTION as implemented: * All code that uses 'omp allocator' and all code that might deallocate suc= h memory must be compiled by a special flag: -fopenmp-allocators This solves the issues: - Always having an overhead even if -fopenmp code does not need it - Permitting (de,re)allocation of such a variable from code which is not= compiled with -fopenmp While -fopenmp-allocators could be auto-enabled when 'omp allocators' sh= ows up in a file, I decided to require it explicitly by the user in order to highl= ight that other files might require the same flag as thy might do (de,re)allocatio= n on such memory. * For ARRAYS, we fortunately can encode it in the descriptor. I (mis)use th= e version field for this: version =3D 0 means standard Fortran way while version = =3D 1 means using omp_alloc and friends. * For SCALARS, there is no way to store this. As (see assumptions) this is = neither in a hot path nor are there very many variables, we simply keep track of such= variables in a separate way. (O (log2 N)) in libgomp - by keekping track of the point= er address in libgomp. Disclaimer: * I am not 100% sure that I have caught all corner cases for deallocation/r= eallocation; however, it should covers most. * One area that is probably not fully covered is BIND(C). A Fortran actual = to a BIND(C) intent(out) should work (dealloced on the caller side), once converted t= o a CFI descriptor, all deallocations will likely fail, be it a later intrinsic-assignment r= ealloc, cfi_deallocate or 'deallocate' after conversion to Fortran. This can be fixed but requires (a) adding the how-allocated to the CFI d= escriptor but not as version (as that is user visible) and (b) handling it in CFI_dealloca= te. The latter will add a dependency on 'omp_free', which somehow has to be = resolved. (Like weak symbols, which is likely not supported on all platforms.) Thus, as very special case, it has been left out - but it could be added= . If a user code hits it, it should cause a reproducible crash (using free for omp_a= lloc'ed memory; libc's free should be able to detect this and abort loudly). * * * I think the patch is mostly self describing, however, two remarks: * I had to move the 'gfc_conv_descriptor_data_get' before calling 'gfc_deal= locate_with_status' as it would otherwise use the GOMP_is_alloc routine instead of the 'vers= ion =3D=3D 1' check. gfc_deallocate_with_status already added the gfc_conv_descriptor_data_ge= t (except for some coarrays - thus, it was updated to add them there). * In principle, OpenMP supports component references in list items. That's = currently not implemented but could be added. This mainly needs some to detect whether= the expression in the list item is the same as in the ALLOCATE statement and what the s= pec actually wants to see as list item. '!$omp allocate' w/o list items is not handled. Sti= ll, there are some ways to already allocate DT components, which is handled. Comments, suggestions, remarks? Tobias PS: On the OG13 branch and planned for upstreaming is also the support for = pseudo-unified-shared memory; there are some similarities like having an OpenMP allocator, but al= so several differences; to be disentangled once the upstreaming is done. ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------eYLBmMMCSazEfkOarVf467op Content-Type: text/x-patch; charset="UTF-8"; name="omp-allocators-impl.diff" Content-Disposition: attachment; filename="omp-allocators-impl.diff" Content-Transfer-Encoding: base64 T3Blbk1QL0ZvcnRyYW46IEltcGxlbWVudCBvbXAgYWxsb2NhdG9ycy9hbGxvY2F0ZSBmb3Ig cHRyL2FsbG9jYXRhYmxlcwoKVGhpcyBjb21taXQgYWRkcyAtZm9wZW5tcC1hbGxvY2F0b3Jz IHdoaWNoIGVuYWJsZXMgc3VwcG9ydCBmb3IKJ29tcCBhbGxvY2F0b3JzJyBhbmQgJ29tcCBh bGxvY2F0ZScgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgRm9ydHJhbgphbGxvY2F0ZS1z dG10LiBJZiBzdWNoIGEgY29uc3RydWN0IGlzIGVuY291bnRlcmVkLCBhbiBlcnJvciBpcyBz aG93biwKdW5sZXNzIHRoZSAtZm9wZW5tcC1hbGxvY2F0b3JzIGZsYWcgaXMgcHJlc2VudC4K CldpdGggLWZvcGVubXAgLWZvcGVubXAtYWxsb2NhdG9ycywgdGhvc2UgY29uc3RydWN0cyBn ZXQgdHVybmVkIGludG8KR09NUF9hbGxvYyBhbGxvY2F0aW9ucywgd2hpbGUgLWZvcGVubXAt YWxsb2NhdG9ycyAoYWxzbyB3aXRob3V0IC1mb3Blbm1wKQplbnN1cmVzIGRlYWxsb2NhdGlv biBhbmQgcmVhbGxvY2F0aW9uICh2aWEgaW50cmluc2ljIGFzc2lnbm1lbnRzKSBhcmUKcHJv cGVybHkgZGlyZWN0ZWQgdG8gR09NUF9mcmVlL29tcF9yZWFsbG9jIC0gd2hpbGUgbm9ybWFs IEZvcnRyYW4KYWxsb2NhdGlvbnMgYXJlIHByb2Nlc3NlZCBieSBmcmVlL3JlYWxsb2MuCgpJ biBvcmRlciB0byBkaXN0aW5ndWlzaCBhICdtYWxsb2MnZWQgZnJvbSBhICdHT01QX2FsbG9j J2VkIG1lbW9yeSwgdGhlCnZlcnNpb24gZmllbGQgb2YgdGhlIEZvcnRyYW4gYXJyYXkgZGlz Y3JpcHRvciBpcyAobWlzKXVzZWQ6IDAgaW5kaWNhdGVzCnRoZSBub3JtYWwgRm9ydHJhbiBh bGxvY2F0aW9uIHdoaWxlIDEgZGVub3RlcyBHT01QX2FsbG9jLiBGb3Igc2NhbGFycywKdGhl cmUgaXMgcmVjb3JkIGtlZXBpbmcgaW4gbGliZ29tcDogR09NUF9hZGRfYWxsb2MocHRyKSB3 aWxsIGFkZCB0aGUKcG9pbnRlciBhZGRyZXNzIHRvIGEgc3BsYXlfdHJlZSB3aGlsZSBHT01Q X2lzX2FsbG9jKHB0cikgd2lsbCByZXR1cm4KdHJ1ZSBpdCB3YXMgcHJldmlvdXNseSBhZGRl ZCBidXQgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGxpc3QuCgpCZXNpZGVzIEZvcnRyYW4g RkUgd29yaywgQlVJTFRfSU5fR09NUF9SRUFMTE9DIGlzIG5vIHBhcnQgb2YKb21wLWJ1aWx0 aW5zLmRlZiBhbmQgbGliZ29tcCBnYWlucyB0aGUgbWVudGlvbmVkIHR3byBuZXcgZnVuY3Rp b24uCgpnY2MvQ2hhbmdlTG9nOgoKCSogYnVpbHRpbi10eXBlcy5kZWYgKEJUX0ZOX1BUUl9Q VFJfU0laRV9QVFJNT0RFX1BUUk1PREUpOiBOZXcuCgkqIG9tcC1idWlsdGlucy5kZWYgKEJV SUxUX0lOX0dPTVBfUkVBTExPQyk6IE5ldy4KCSogYnVpbHRpbnMuY2MgKGJ1aWx0aW5fZm5z cGVjKTogSGFuZGxlIGl0LgoJKiBnaW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjIChmbmRlY2xf YWxsb2NfcCwKCW1hdGNoaW5nX2FsbG9jX2NhbGxzX3ApOiBMaWtld2lzZS4KCSogZ2ltcGxl LmNjIChub25mcmVlaW5nX2NhbGxfcCk6IExpa2V3aXNlLgoJKiBwcmVkaWN0LmNjIChleHBy X2V4cGVjdGVkX3ZhbHVlXzEpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtY2NwLmNjIChldmFs dWF0ZV9zdG10KTogTGlrZXdpc2UuCgkqIHRyZWUuY2MgKGZuZGVjbF9kZWFsbG9jX2FyZ25v KTogTGlrZXdpc2UuCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJKiBkdW1wLXBhcnNlLXRy ZWUuY2MgKHNob3dfb21wX25vZGUpOiBIYW5kbGUgRVhFQ19PTVBfQUxMT0NBVEUKCWFuZCBF WEVDX09NUF9BTExPQ0FUT1JTLgoJKiBmOTUtbGFuZy5jYyAoQVRUUl9BTExPQ19XQVJOX1VO VVNFRF9SRVNVTFRfU0laRV8yX05PVEhST1dfTElTVCk6CglBZGQgJ0VDRl9MRUFGIHwgRUNG X01BTExPQycgdG8gZXhpc3RpbmcgJ0VDRl9OT1RIUk9XJy4KCShBVFRSX0FMTE9DX1dBUk5f VU5VU0VEX1JFU1VMVF9TSVpFXzJfTk9USFJPV19MRUFGX0xJU1QpOiBEZWZpbmUuCgkqIGdm b3J0cmFuLmggKGdmY19vbXBfY2xhdXNlcyk6IEFkZCBjb250YWluZWRfaW5fdGFyZ2V0X2Nv bnN0cnVjdC4KCSogaW52b2tlLnRleGkgKC1mb3BlbmFjYywgLWZvcGVubXApOiBVcGRhdGUg YmFzZWQgb24gQyB2ZXJzaW9uLgoJKC1mb3Blbm1wLXNpbWQpOiBOZXcsIGJhc2VkIG9uIEMg dmVyc2lvbi4KCSgtZm9wZW5tcC1hbGxvY2F0b3JzKTogTmV3LgoJKiBsYW5nLm9wdCAoZm9w ZW5tcC1hbGxvY2F0b3JzKTogQWRkLgoJKiBvcGVubXAuY2MgKHJlc29sdmVfb21wX2NsYXVz ZXMpOiBGb3IgYWxsb2NhdG9ycy9hbGxvY2F0ZSBkaXJlY3RpdmUsCglhZGQgdGFyZ2V0IGFu ZCBubyBkeW5hbWljX2FsbG9jYXRvcnMgZGlhZ25vc3RpYyBhbmQgbW9yZSBpbnZhbGlkCglk aWFnbm9zdGljLgoJKiBwYXJzZS5jYyAoZGVjb2RlX29tcF9kaXJlY3RpdmUpOiBTZXQgY29u dGFpbnNfdGVhbXNfY29uc3RydWN0LgoJKiB0cmFucy1hcnJheS5oIChnZmNfYXJyYXlfYWxs b2NhdGUpOiBVcGRhdGUgcHJvdG90eXBlLgoJKGdmY19jb252X2Rlc2NyaXB0b3JfdmVyc2lv bik6IE5ldyBwcm90b3R5cGUuCgkqIHRyYW5zLWRlY2wuY2MgKGdmY19pbml0X2RlZmF1bHRf ZHQpOiBGaXggY29tbWVudC4KCSogdHJhbnMtYXJyYXkuY2MgKGdmY19jb252X2Rlc2NyaXB0 b3JfdmVyc2lvbik6IE5ldy4KCShnZmNfYXJyYXlfYWxsb2NhdGUpOiBTdXBwb3J0IEdPTVBf YWxsb2MgYWxsb2NhdGlvbi4KCShnZmNfYWxsb2NfYWxsb2NhdGFibGVfZm9yX2Fzc2lnbm1l bnQsIHN0cnVjdHVyZV9hbGxvY19jb21wcyk6CglIYW5kbGUgR09NUF9mcmVlL29tcF9yZWFs bG9jIGFzIG5lZWRlZC4KCSogdHJhbnMtZXhwci5jYyAoZ2ZjX2NvbnZfcHJvY2VkdXJlX2Nh bGwpOiBMaWtld2lzZS4KCShhbGxvY19zY2FsYXJfYWxsb2NhdGFibGVfZm9yX2Fzc2lnbm1l bnQpOiBMaWtld2lzZS4KCSogdHJhbnMtaW50cmluc2ljLmNjIChjb252X2ludHJpbnNpY19t b3ZlX2FsbG9jKToKCSogdHJhbnMtb3Blbm1wLmNjIChnZmNfdHJhbnNfb21wX2FsbG9jYXRv cnMsCglnZmNfdHJhbnNfb21wX2RpcmVjdGl2ZSk6IEhhbmRsZSBhbGxvY2F0b3JzL2FsbG9j YXRlIGRpcmVjdGl2ZS4KCShnZmNfb21wX2NhbGxfYWRkX2FsbG9jLCBnZmNfb21wX2NhbGxf aXNfYWxsb2MpOiBOZXcuCgkqIHRyYW5zLXN0bXQuaCAoZ2ZjX3RyYW5zX2FsbG9jYXRlKTog VXBkYXRlIHByb3RvdHlwZS4KCSogdHJhbnMtc3RtdC5jYyAoZ2ZjX3RyYW5zX2FsbG9jYXRl KTogU3VwcG9ydCBHT01QX2FsbG9jLgoJKiB0cmFucy10eXBlcy5jYyAoZ2ZjX2dldF9kdHlw ZV9yYW5rX3R5cGUpOiBTZXQgdmVyc2lvbiBmaWVsZC4KCSogdHJhbnMuY2MgKGdmY19hbGxv Y2F0ZV91c2luZ19tYWxsb2MsIGdmY19hbGxvY2F0ZV9hbGxvY2F0YWJsZSk6CglVcGRhdGUg dG8gaGFuZGxlIEdPTVBfYWxsb2MuCgkoZ2ZjX2RlYWxsb2NhdGVfd2l0aF9zdGF0dXMsIGdm Y19kZWFsbG9jYXRlX3NjYWxhcl93aXRoX3N0YXR1cyk6CglIYW5kbGUgR09NUF9mcmVlLgoJ KHRyYW5zX2NvZGUpOiBVcGRhdGUgY2FsbC4KCSogdHJhbnMuaCAoZ2ZjX2FsbG9jYXRlX2Fs bG9jYXRhYmxlLCBnZmNfYWxsb2NhdGVfdXNpbmdfbWFsbG9jKToKCVVwZGF0ZSBwcm90b3R5 cGUuCgkoZ2ZjX29tcF9jYWxsX2FkZF9hbGxvYywgZ2ZjX29tcF9jYWxsX2lzX2FsbG9jKTog TmV3IHByb3RvdHlwZS4KCSogdHlwZXMuZGVmIChCVF9GTl9QVFJfUFRSX1NJWkVfUFRSTU9E RV9QVFJNT0RFKTogTmV3LgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBhbGxvY2F0b3IuYyAo c3RydWN0IGZvcnRfYWxsb2Nfc3BsYXlfdHJlZV9rZXlfcywKCWZvcnRfYWxsb2Nfc3BsYXlf Y29tcGFyZSwgR09NUF9hZGRfYWxsb2MsIEdPTVBfaXNfYWxsb2MpOiBOZXcuCgkqIGxpYmdv bXAuaDogRGVmaW5lIHNwbGF5X3RyZWVfc3RhdGljIGZvciAncmV2ZXJzZScgc3BsYXkgdHJl ZS4KCSogbGliZ29tcC5tYXAgKEdPTVBfNS4xLjIpOiBOZXc7IGFkZCBHT01QX2FkZF9hbGxv YyBhbmQKCUdPTVBfaXNfYWxsb2M7IG1vdmUgR09NUF90YXJnZXRfbWFwX2luZGlyZWN0X3B0 ciBmcm9tIC4uLgoJKEdPTVBfNS4xLjEpOiAuLi4gaGVyZS4KCSogbGliZ29tcC50ZXhpIChJ bXBsLiBTdGF0dXMsIE1lbW9yeSBtYW5hZ2VtZW50KTogVXBkYXRlIGZvcgoJYWxsb2NhdG9y cy9hbGxvY2F0ZSBkaXJlY3RpdmVzLgoJKiBzcGxheS10cmVlLmM6IEhhbmRsZSBzcGxheV90 cmVlX3N0YXRpYyBkZWZpbmUgdG8gZGVjbGFyZSBhbGwKCWZ1bmN0aW9ucyBhcyBzdGF0aWMu Cgkoc3BsYXlfdHJlZV9sb29rdXBfbm9kZSk6IE5ldy4KCSogc3BsYXktdHJlZS5oOiBIYW5k bGUgc3BsYXlfdHJlZV9kZWNsX29ubHkgZGVmaW5lLgoJKHNwbGF5X3RyZWVfbG9va3VwX25v ZGUpOiBOZXcgcHJvdG90eXBlLgoJKiB0YXJnZXQuYzogRGVmaW5lIHNwbGF5X3RyZWVfc3Rh dGljIGZvciAncmV2ZXJzZScuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2Nh dG9ycy0xLmY5MDogTmV3IHRlc3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxs b2NhdG9ycy0yLmY5MDogTmV3IHRlc3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v YWxsb2NhdG9ycy0zLmY5MDogTmV3IHRlc3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRy YW4vYWxsb2NhdG9ycy00LmY5MDogTmV3IHRlc3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZv cnRyYW4vYWxsb2NhdG9ycy01LmY5MDogTmV3IHRlc3QuCgpnY2MvdGVzdHN1aXRlL0NoYW5n ZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwOiBBZGQgY29hcnJh eSBhbmQKCW5vdC1saXN0ZWQgdGVzdHMuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUt NS5mOTA6IFJlbW92ZSBzb3JyeSBkZy1tZXNzYWdlLgoJKiBnZm9ydHJhbi5kZy9iaW5kX2Nf YXJyYXlfcGFyYW1zXzIuZjkwOiBVcGRhdGUgZXhwZWN0ZWQKCWR1bXAgZm9yIGR0eXBlICcu dmVyc2lvbj0wJy4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xNi5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtMy5mOTA6IE5ldyB0ZXN0LgoJ KiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtNC5mOTA6IE5ldyB0ZXN0LgoKIGdjYy9i dWlsdGluLXR5cGVzLmRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsK IGdjYy9idWlsdGlucy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKIGdjYy9mb3J0cmFuL2Y5NS1sYW5nLmNjICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0ICstCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBnY2MvZm9ydHJhbi9pbnZva2UudGV4aSAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA3OSArKysrKysrKy0tLQogZ2NjL2ZvcnRyYW4v bGFuZy5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogZ2NjL2Zv cnRyYW4vb3Blbm1wLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjAgKysr KysrKysrKysrKystLQogZ2NjL2ZvcnRyYW4vcGFyc2UuY2MgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDcgKy0KIGdjYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTUyICsrKysrKysrKysrKysrKysrLS0tLQogZ2NjL2Zv cnRyYW4vdHJhbnMtYXJyYXkuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBnY2MvZm9ydHJhbi90cmFucy1leHByLmNjICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyNCArKystCiBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuY2MgICAgICAg ICAgICAgICAgICAgICB8ICAgNSArLQogZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNjEgKysrKysrKystCiBnY2MvZm9ydHJhbi90cmFu cy1zdG10LmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5MiArKysrKysrKysrKyst CiBnY2MvZm9ydHJhbi90cmFucy1zdG10LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuY2MgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDQgKwogZ2NjL2ZvcnRyYW4vdHJhbnMuY2MgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgODUgKysrKysrKysrLS0tCiBnY2MvZm9ydHJhbi90cmFucy5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogZ2NjL2ZvcnRyYW4vdHlw ZXMuZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZ2NjL2dpbXBs ZS1zc2Etd2Fybi1hY2Nlc3MuY2MgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKystCiBn Y2MvZ2ltcGxlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCiBnY2Mvb21wLWJ1aWx0aW5zLmRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMyArCiBnY2MvcHJlZGljdC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiAuLi4vZ2ZvcnRyYW4uZGcvYmluZF9jX2FycmF5X3BhcmFtc18y LmY5MCAgICAgICAgICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2FsbG9jYXRlLTE0LmY5MCAgICAgfCAgNDEgKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTYuZjkwICAgICB8ICAxMCArKwogZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwICAgICAgfCAgMTcgKy0tCiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0zLmY5MCAgICB8ICAzNiAr KysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtNC5mOTAg ICAgfCAgIDkgKysKIGdjYy90cmVlLXNzYS1jY3AuY2MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGdjYy90cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIGxpYmdvbXAvYWxsb2NhdG9yLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDYzICsrKysrKysrKwogbGliZ29tcC9saWJnb21w LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliZ29tcC9s aWJnb21wLm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGxp YmdvbXAvbGliZ29tcC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2 ICsrLQogbGliZ29tcC9zcGxheS10cmVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNDAgKysrKystCiBsaWJnb21wL3NwbGF5LXRyZWUuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxNyArKysKIGxpYmdvbXAvdGFyZ2V0LmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuZm9ydHJhbi9hbGxvY2F0b3JzLTEuZjkwIHwgIDY4ICsrKysrKysrKwogbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRvcnMtMi5mOTAgfCAxMDEgKysrKysr KysrKysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0b3Jz LTMuZjkwIHwgIDI1ICsrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9h bGxvY2F0b3JzLTQuZjkwIHwgIDU3ICsrKysrKysrCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmZvcnRyYW4vYWxsb2NhdG9ycy01LmY5MCB8ICAyNyArKysrCiA0NSBmaWxlcyBjaGFu Z2VkLCAxMTEzIGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9nY2MvYnVpbHRpbi10eXBlcy5kZWYgYi9nY2MvYnVpbHRpbi10eXBlcy5kZWYKaW5kZXgg NDMzODFiYzg5NDkuLjE4M2VmNjJiYWQyIDEwMDY0NAotLS0gYS9nY2MvYnVpbHRpbi10eXBl cy5kZWYKKysrIGIvZ2NjL2J1aWx0aW4tdHlwZXMuZGVmCkBAIC04NDAsNiArODQwLDggQEAg REVGX0ZVTkNUSU9OX1RZUEVfNCAoQlRfRk5fUFRSX1BUUl9DT05TVF9QVFJfU0laRV9TSVpF LAogCQkgICAgIEJUX1BUUiwgQlRfUFRSLCBCVF9DT05TVF9QVFIsIEJUX1NJWkUsIEJUX1NJ WkUpCiBERUZfRlVOQ1RJT05fVFlQRV80IChCVF9GTl9QVFJfUFRSX0lOVF9TSVpFX1NJWkUs CiAJCSAgICAgQlRfUFRSLCBCVF9QVFIsIEJUX0lOVCwgQlRfU0laRSwgQlRfU0laRSkKK0RF Rl9GVU5DVElPTl9UWVBFXzQgKEJUX0ZOX1BUUl9QVFJfU0laRV9QVFJNT0RFX1BUUk1PREUs CisJCSAgICAgQlRfUFRSLCBCVF9QVFIsIEJUX1NJWkUsIEJUX1BUUk1PREUsIEJUX1BUUk1P REUpCiBERUZfRlVOQ1RJT05fVFlQRV80IChCVF9GTl9VSU5UX1VJTlRfVUlOVF9VSU5UX1VJ TlQsCiAJCSAgICAgQlRfVUlOVCwgQlRfVUlOVCwgQlRfVUlOVCwgQlRfVUlOVCwgQlRfVUlO VCkKIERFRl9GVU5DVElPTl9UWVBFXzQgKEJUX0ZOX1VJTlRfVUlOVF9VSU5UX1VJTlRfVUlO VFBUUiwKZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jYyBiL2djYy9idWlsdGlucy5jYwpp bmRleCBjYjkwYmQwM2IzZS4uNGYyNTk3ZWFhZTYgMTAwNjQ0Ci0tLSBhL2djYy9idWlsdGlu cy5jYworKysgYi9nY2MvYnVpbHRpbnMuY2MKQEAgLTExNzM5LDYgKzExNzM5LDcgQEAgYnVp bHRpbl9mbnNwZWMgKHRyZWUgY2FsbGVlKQogCXJldHVybiAiLmNPICI7CiAgICAgICAvKiBS ZWFsbG9jIHNlcnZlcyBib3RoIGFzIGFsbG9jYXRpb24gcG9pbnQgYW5kIGRlYWxsb2NhdGlv biBwb2ludC4gICovCiAgICAgICBjYXNlIEJVSUxUX0lOX1JFQUxMT0M6CisgICAgICBjYXNl IEJVSUxUX0lOX0dPTVBfUkVBTExPQzoKIAlyZXR1cm4gIi5DdyAiOwogICAgICAgY2FzZSBC VUlMVF9JTl9HQU1NQV9SOgogICAgICAgY2FzZSBCVUlMVF9JTl9HQU1NQUZfUjoKZGlmZiAt LWdpdCBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyBiL2djYy9mb3J0cmFuL2R1 bXAtcGFyc2UtdHJlZS5jYwppbmRleCBjYzQ4NDZlNWQ3NC4uZWNmNzEwMzY0NDQgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYworKysgYi9nY2MvZm9ydHJh bi9kdW1wLXBhcnNlLXRyZWUuY2MKQEAgLTIyNDEsNiArMjI0MSw4IEBAIHNob3dfb21wX25v ZGUgKGludCBsZXZlbCwgZ2ZjX2NvZGUgKmMpCiAgICAgY2FzZSBFWEVDX09BQ0NfQ0FDSEU6 CiAgICAgY2FzZSBFWEVDX09BQ0NfRU5URVJfREFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19F WElUX0RBVEE6CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FURToKKyAgICBjYXNlIEVYRUNf T01QX0FMTE9DQVRPUlM6CiAgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgY2FzZSBF WEVDX09NUF9DQU5DRUw6CiAgICAgY2FzZSBFWEVDX09NUF9DQU5DRUxMQVRJT05fUE9JTlQ6 CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9mOTUtbGFuZy5jYyBiL2djYy9mb3J0cmFuL2Y5 NS1sYW5nLmNjCmluZGV4IDM1MGU2ZTM3OWViLi5kZmZmOTQ0NWU2NCAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vZjk1LWxhbmcuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuY2MK QEAgLTU1Niw3ICs1NTYsOSBAQCBnZmNfYnVpbHRpbl9mdW5jdGlvbiAodHJlZSBkZWNsKQog I2RlZmluZSBBVFRSX05PVEhST1dfTElTVAkJKEVDRl9OT1RIUk9XKQogI2RlZmluZSBBVFRS X0NPTlNUX05PVEhST1dfTElTVAkJKEVDRl9OT1RIUk9XIHwgRUNGX0NPTlNUKQogI2RlZmlu ZSBBVFRSX0FMTE9DX1dBUk5fVU5VU0VEX1JFU1VMVF9TSVpFXzJfTk9USFJPV19MSVNUIFwK LQkJCQkJKEVDRl9OT1RIUk9XKQorCQkJCQkoRUNGX05PVEhST1cgfCBFQ0ZfTEVBRiB8IEVD Rl9NQUxMT0MpCisjZGVmaW5lIEFUVFJfQUxMT0NfV0FSTl9VTlVTRURfUkVTVUxUX1NJWkVf Ml9OT1RIUk9XX0xFQUZfTElTVCBcCisJCQkJCShFQ0ZfTk9USFJPVyB8IEVDRl9MRUFGKQog I2RlZmluZSBBVFRSX0NPTERfTk9SRVRVUk5fTk9USFJPV19MRUFGX0xJU1QgXAogCQkJCQko RUNGX0NPTEQgfCBFQ0ZfTk9SRVRVUk4gfCBcCiAJCQkJCSBFQ0ZfTk9USFJPVyB8IEVDRl9M RUFGKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFu L2dmb3J0cmFuLmgKaW5kZXggYWEzZjZjYjcwYjQuLjM4MDQzYTkxYjcwIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgK QEAgLTE1NzksNiArMTU3OSw3IEBAIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfY2xhdXNlcwog ICB1bnNpZ25lZCBncmFpbnNpemVfc3RyaWN0OjEsIG51bV90YXNrc19zdHJpY3Q6MSwgY29t cGFyZToxLCB3ZWFrOjE7CiAgIHVuc2lnbmVkIG5vbl9yZWN0YW5ndWxhcjoxLCBvcmRlcl9j b25jdXJyZW50OjE7CiAgIHVuc2lnbmVkIGNvbnRhaW5zX3RlYW1zX2NvbnN0cnVjdDoxLCB0 YXJnZXRfZmlyc3Rfc3RfaXNfdGVhbXM6MTsKKyAgdW5zaWduZWQgY29udGFpbmVkX2luX3Rh cmdldF9jb25zdHJ1Y3Q6MTsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9zY2hlZF9raW5k KSBzY2hlZF9raW5kOjM7CiAgIEVOVU1fQklURklFTEQgKGdmY19vbXBfZGV2aWNlX3R5cGUp IGRldmljZV90eXBlOjI7CiAgIEVOVU1fQklURklFTEQgKGdmY19vbXBfbWVtb3JkZXIpIG1l bW9yZGVyOjM7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9pbnZva2UudGV4aSBiL2djYy9m b3J0cmFuL2ludm9rZS50ZXhpCmluZGV4IDEwMzg3ZTM5NTAxLi4wNDExNzM1MDdjZCAxMDA2 NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vaW52b2tlLnRleGkKKysrIGIvZ2NjL2ZvcnRyYW4vaW52 b2tlLnRleGkKQEAgLTEyNiw4ICsxMjYsOSBAQCBieSB0eXBlLiAgRXhwbGFuYXRpb25zIGFy ZSBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgogLWZmcmVlLWZvcm0gLWZmcmVlLWxpbmUt bGVuZ3RoLUB2YXJ7bn0gLWZmcmVlLWxpbmUtbGVuZ3RoLW5vbmUKIC1maW1wbGljaXQtbm9u ZSAtZmludGVnZXItNC1pbnRlZ2VyLTggLWZtYXgtaWRlbnRpZmllci1sZW5ndGgKIC1mbW9k dWxlLXByaXZhdGUgLWZmaXhlZC1mb3JtIC1mbm8tcmFuZ2UtY2hlY2sgLWZvcGVuYWNjIC1m b3Blbm1wCi0tZnJlYWwtNC1yZWFsLTEwIC1mcmVhbC00LXJlYWwtMTYgLWZyZWFsLTQtcmVh bC04IC1mcmVhbC04LXJlYWwtMTAKLS1mcmVhbC04LXJlYWwtMTYgLWZyZWFsLTgtcmVhbC00 IC1zdGQ9QHZhcntzdGR9IC1mdGVzdC1mb3JhbGwtdGVtcAorLWZvcGVubXAtYWxsb2NhdG9y cyAtZm9wZW5tcC1zaW1kIC1mcmVhbC00LXJlYWwtMTAgLWZyZWFsLTQtcmVhbC0xNgorLWZy ZWFsLTQtcmVhbC04IC1mcmVhbC04LXJlYWwtMTAgLWZyZWFsLTgtcmVhbC0xNiAtZnJlYWwt OC1yZWFsLTQKKy1zdGQ9QHZhcntzdGR9IC1mdGVzdC1mb3JhbGwtdGVtcAogfQogCiBAaXRl bSBQcmVwcm9jZXNzaW5nIE9wdGlvbnMKQEAgLTQxMCwyNiArNDExLDY0IEBAIFNwZWNpZnkg dGhhdCBubyBpbXBsaWNpdCB0eXBpbmcgaXMgYWxsb3dlZCwgdW5sZXNzIG92ZXJyaWRkZW4g YnkgZXhwbGljaXQKIEVuYWJsZSB0aGUgQ3JheSBwb2ludGVyIGV4dGVuc2lvbiwgd2hpY2gg cHJvdmlkZXMgQy1saWtlIHBvaW50ZXIKIGZ1bmN0aW9uYWxpdHkuCiAKLUBvcGluZGV4IEBj b2Rle2ZvcGVuYWNjfQotQGNpbmRleCBPcGVuQUNDCisKK0BvcGluZGV4IGZvcGVuYWNjCitA Y2luZGV4IE9wZW5BQ0MgYWNjZWxlcmF0b3IgcHJvZ3JhbW1pbmcKIEBpdGVtIC1mb3BlbmFj YwotRW5hYmxlIHRoZSBPcGVuQUNDIGV4dGVuc2lvbnMuICBUaGlzIGluY2x1ZGVzIE9wZW5B Q0MgQGNvZGV7ISRhY2N9Ci1kaXJlY3RpdmVzIGluIGZyZWUgZm9ybSBhbmQgQGNvZGV7YyRh Y2N9LCBAY29kZXsqJGFjY30gYW5kCi1AY29kZXshJGFjY30gZGlyZWN0aXZlcyBpbiBmaXhl ZCBmb3JtLCBAY29kZXshJH0gY29uZGl0aW9uYWwKLWNvbXBpbGF0aW9uIHNlbnRpbmVscyBp biBmcmVlIGZvcm0gYW5kIEBjb2Rle2MkfSwgQGNvZGV7KiR9IGFuZAotQGNvZGV7ISR9IHNl bnRpbmVscyBpbiBmaXhlZCBmb3JtLCBhbmQgd2hlbiBsaW5raW5nIGFycmFuZ2VzIGZvciB0 aGUKLU9wZW5BQ0MgcnVudGltZSBsaWJyYXJ5IHRvIGJlIGxpbmtlZCBpbi4KLQotQG9waW5k ZXggQGNvZGV7Zm9wZW5tcH0KLUBjaW5kZXggT3Blbk1QCitFbmFibGUgaGFuZGxpbmcgb2Yg T3BlbkFDQyBkaXJlY3RpdmVzIEBzYW1weyEkYWNjfSBpbiBmcmVlLWZvcm0gRm9ydHJhbiBh bmQKK0BzYW1weyEkYWNjfSwgQHNhbXB7YyRhY2N9IGFuZCBAc2FtcHsqJGFjY30gaW4gZml4 ZWQtZm9ybSBGb3J0cmFuLiAgV2hlbgorQG9wdGlvbnstZm9wZW5hY2N9IGlzIHNwZWNpZmll ZCwgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhY2NlbGVyYXRlZCBjb2RlCithY2NvcmRpbmcg dG8gdGhlIE9wZW5BQ0MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIHYyLjYK K0B3e0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5hY2Mub3JnfX0uICBUaGlzIG9wdGlvbiBpbXBs aWVzIEBvcHRpb257LXB0aHJlYWR9LAorYW5kIHRodXMgaXMgb25seSBzdXBwb3J0ZWQgb24g dGFyZ2V0cyB0aGF0IGhhdmUgc3VwcG9ydCBmb3IgQG9wdGlvbnstcHRocmVhZH0uCitUaGUg b3B0aW9uIEBvcHRpb257LWZvcGVuYWNjfSBpbXBsaWVzIEBvcHRpb257LWZyZWN1cnNpdmV9 LgorCitAb3BpbmRleCBmb3Blbm1wCitAY2luZGV4IE9wZW5NUCBwYXJhbGxlbAogQGl0ZW0g LWZvcGVubXAKLUVuYWJsZSB0aGUgT3Blbk1QIGV4dGVuc2lvbnMuICBUaGlzIGluY2x1ZGVz IE9wZW5NUCBAY29kZXshJG9tcH0gZGlyZWN0aXZlcwotaW4gZnJlZSBmb3JtCi1hbmQgQGNv ZGV7YyRvbXB9LCBAY29kZXsqJG9tcH0gYW5kIEBjb2RleyEkb21wfSBkaXJlY3RpdmVzIGlu IGZpeGVkIGZvcm0sCi1AY29kZXshJH0gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc2VudGlu ZWxzIGluIGZyZWUgZm9ybQotYW5kIEBjb2Rle2MkfSwgQGNvZGV7KiR9IGFuZCBAY29kZXsh JH0gc2VudGluZWxzIGluIGZpeGVkIGZvcm0sIAotYW5kIHdoZW4gbGlua2luZyBhcnJhbmdl cyBmb3IgdGhlIE9wZW5NUCBydW50aW1lIGxpYnJhcnkgdG8gYmUgbGlua2VkCi1pbi4gIFRo ZSBvcHRpb24gQG9wdGlvbnstZm9wZW5tcH0gaW1wbGllcyBAb3B0aW9uey1mcmVjdXJzaXZl fS4KK0VuYWJsZSBoYW5kbGluZyBvZiBPcGVuTVAgZGlyZWN0aXZlcyBAc2FtcHshJG9tcH0g aW4gRm9ydHJhbi4gIEl0CithZGRpdGlvbmFsbHkgZW5hYmxlcyB0aGUgY29uZGl0aW9uYWwg Y29tcGlsYXRpb24gc2VudGluZWwgQHNhbXB7ISR9IGluCitGb3J0cmFuLiAgSW4gZml4ZWQg c291cmNlIGZvcm0gRm9ydHJhbiwgdGhlIHNlbnRpbmVscyBjYW4gYWxzbyBzdGFydCB3aXRo CitAc2FtcHtjfSBvciBAc2FtcHsqfS4gIFdoZW4gQG9wdGlvbnstZm9wZW5tcH0gaXMgc3Bl Y2lmaWVkLCB0aGUKK2NvbXBpbGVyIGdlbmVyYXRlcyBwYXJhbGxlbCBjb2RlIGFjY29yZGlu ZyB0byB0aGUgT3Blbk1QIEFwcGxpY2F0aW9uCitQcm9ncmFtIEludGVyZmFjZSB2NC41IEB3 e0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmd9fS4gIFRoaXMgb3B0aW9uCitpbXBsaWVz IEBvcHRpb257LXB0aHJlYWR9LCBhbmQgdGh1cyBpcyBvbmx5IHN1cHBvcnRlZCBvbiB0YXJn ZXRzIHRoYXQKK2hhdmUgc3VwcG9ydCBmb3IgQG9wdGlvbnstcHRocmVhZH0uIEBvcHRpb257 LWZvcGVubXB9IGltcGxpZXMKK0BvcHRpb257LWZvcGVubXAtc2ltZH0gYW5kIEBvcHRpb257 LWZyZWN1cnNpdmV9LgorCitAb3BpbmRleCBmb3Blbm1wLWFsbG9jYXRvcnMKK0BjaW5kZXgg T3Blbk1QIEFsbG9jYXRvcnMKK0BpdGVtIC1mb3Blbm1wLWFsbG9jYXRvcnMKK0VuYWJsZXMg aGFuZGxpbmcgb2YgYWxsb2NhdGlvbiwgcmVhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24g b2YgRm9ydHJhbgorYWxsb2NhdGFibGUgYW5kIHBvaW50ZXIgdmFyaWFibGVzIHRoYXQgYXJl IGFsbG9jYXRlZCB1c2luZyB0aGUKK0BzYW1weyEkb21wIGFsbG9jYXRvcnN9IGFuZCBAc2Ft cHshJG9tcCBhbGxvY2F0ZX0gY29uc3RydWN0cy4gIEZpbGVzCitjb250YWluaW5nIGVpdGhl ciBkaXJlY3RpdmUgaGF2ZSB0byBiZSBjb21waWxlZCB3aXRoIHRoaXMgb3B0aW9uIGluIGFk ZGl0aW9uCit0byBAb3B0aW9uey1mb3Blbm1wfS4gIEFkZGl0aW9uYWxseSwgYWxsIGZpbGVz IHRoYXQgbWlnaHQgZGVhbGxvY2F0ZSBvcgorcmVhbGxvY2F0ZSBhIHZhcmlhYmxlIHRoYXQg aGFzIGJlZW4gYWxsb2NhdGVkIHdpdGggYW4gT3Blbk1QIGFsbG9jYXRvcgoraGF2ZSB0byBi ZSBjb21waWxlZCB3aXRoIHRoaXMgb3B0aW9uLiAgVGhpcyBpbmNsdWRlcyBpbnRyaW5zaWMg YXNzaWdubWVudAordG8gYWxsb2NhdGFibGUgdmFyaWFibGVzIHdoZW4gcmVhbGxvY2F0aW9u IG1heSBvY2N1ciBhbmQgZGVhbGxvY2F0aW9uCitkdWUgdG8gZWl0aGVyIG9mIHRoZSBmb2xs b3dpbmc6IGVuZCBvZiBzY29wZSwgZXhwbGljaXQgZGVhbGxvY2F0aW9uLAorQHNhbXB7aW50 ZW50KG91dCl9LCBkZWFsbG9jYXRpb24gb2YgYWxsb2NhdGFibGUgY29tcG9uZW50cyBldGMu CitGaWxlcyBub3QgY2hhbmdpbmcgdGhlIGFsbG9jYXRpb24gc3RhdHVzIG9yIG9ubHkgZm9y IGNvbXBvbmVudHMgb2YKK2EgZGVyaXZlZCB0eXBlIHRoYXQgaGF2ZSBub3QgYmVlbiBhbGxv Y2F0ZWQgdXNpbmcgdGhvc2UgdHdvIGRpcmVjdGl2ZXMKK2RvIG5vdCBuZWVkIHRvIGJlIGNv bXBpbGVkIHdpdGggdGhpcyBvcHRpb24uICBOb3IgZG8gZmlsZXMgdGhhdCBoYW5kbGUKK3N1 Y2ggdmFyaWFibGVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkIG9yIGFsbG9j YXRlZCBieSB0aGUKK25vcm1hbCBGb3J0cmFuIGFsbG9jYXRvci4KKworQG9waW5kZXggZm9w ZW5tcC1zaW1kCitAY2luZGV4IE9wZW5NUCBTSU1ECitAY2luZGV4IFNJTUQKK0BpdGVtIC1m b3Blbm1wLXNpbWQKK0VuYWJsZSBoYW5kbGluZyBvZiBPcGVuTVAncyBAY29kZXtzaW1kfSwg QGNvZGV7ZGVjbGFyZSBzaW1kfSwKK0Bjb2Rle2RlY2xhcmUgcmVkdWN0aW9ufSwgQGNvZGV7 YXNzdW1lfSwgQGNvZGV7b3JkZXJlZH0sIEBjb2Rle3NjYW59CithbmQgQGNvZGV7bG9vcH0g ZGlyZWN0aXZlLCBhbmQgb2YgY29tYmluZWQgb3IgY29tcG9zaXRlIGRpcmVjdGl2ZXMgd2l0 aAorQGNvZGV7c2ltZH0gYXMgY29uc3RpdHVlbnQgd2l0aCAgQGNvZGV7ISRvbXB9IGluIEZv cnRyYW4uICBJdCBhZGRpdGlvbmFsbHkKK2VuYWJsZXMgdGhlIGNvbmRpdGlvbmFsIGNvbXBp bGF0aW9uIHNlbnRpbmVsIEBzYW1weyEkfSBpbiBGb3J0cmFuLiAgSW4KK2ZpeGVkIHNvdXJj ZSBmb3JtIEZvcnRyYW4sIHRoZSBzZW50aW5lbHMgY2FuIGFsc28gc3RhcnQgd2l0aCBAc2Ft cHtjfSBvcgorQHNhbXB7Kn0uICBPdGhlciBPcGVuTVAgZGlyZWN0aXZlcyBhcmUgaWdub3Jl ZC4gIFVubGVzcyBAb3B0aW9uey1mb3Blbm1wfQoraXMgYWRkaXRpb25hbGx5IHNwZWNpZmll ZCwgdGhlIEBjb2Rle2xvb3B9IHJlZ2lvbiBiaW5kcyB0byB0aGUgY3VycmVudCB0YXNrCity ZWdpb24sIGluZGVwZW5kZW50IG9mIHRoZSBzcGVjaWZpZWQgQGNvZGV7YmluZH0gY2xhdXNl LgorCiAKIEBvcGluZGV4IEBjb2Rle2ZyYW5nZS1jaGVja30KIEBpdGVtIC1mbm8tcmFuZ2Ut Y2hlY2sKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2xhbmcub3B0IGIvZ2NjL2ZvcnRyYW4v bGFuZy5vcHQKaW5kZXggNzIzNjM1MWE5M2MuLjRjODc0OGJjNDEyIDEwMDY0NAotLS0gYS9n Y2MvZm9ydHJhbi9sYW5nLm9wdAorKysgYi9nY2MvZm9ydHJhbi9sYW5nLm9wdApAQCAtNzEy LDYgKzcxMiwxMCBAQCBmb3Blbm1wLXNpbWQKIEZvcnRyYW4KIDsgRG9jdW1lbnRlZCBpbiBD CiAKK2ZvcGVubXAtYWxsb2NhdG9ycworRm9ydHJhbiBWYXIoZmxhZ19vcGVubXBfYWxsb2Nh dG9ycykKK0hhbmRsZSBPcGVuTVAgYWxsb2NhdG9ycyBmb3IgYWxsb2NhdGFibGVzIGFuZCBw b2ludGVycy4KKwogZnBhY2stZGVyaXZlZAogRm9ydHJhbiBWYXIoZmxhZ19wYWNrX2Rlcml2 ZWQpCiBUcnkgdG8gbGF5IG91dCBkZXJpdmVkIHR5cGVzIGFzIGNvbXBhY3RseSBhcyBwb3Nz aWJsZS4KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2djYy9mb3J0cmFu L29wZW5tcC5jYwppbmRleCAyZTJlMjNkNTY3Yi4uYmJhMTdhY2QzZGMgMTAwNjQ0Ci0tLSBh L2djYy9mb3J0cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAg LTc0MTAsNiArNzQxMCw5IEBAIHJlc29sdmVfb21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2Rl LCBnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzLAogICBpZiAob21wX2NsYXVzZXMgPT0g TlVMTCkKICAgICByZXR1cm47CiAKKyAgaWYgKG5zID09IE5VTEwpCisgICAgbnMgPSBnZmNf Y3VycmVudF9uczsKKwogICBpZiAob21wX2NsYXVzZXMtPm9yZGVyZWRjICYmIG9tcF9jbGF1 c2VzLT5vcmRlcmVkYyA8IG9tcF9jbGF1c2VzLT5jb2xsYXBzZSkKICAgICBnZmNfZXJyb3Ig KCJPUkRFUkVEIGNsYXVzZSBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIENPTExBUFNFIGF0ICVM IiwKIAkgICAgICAgJmNvZGUtPmxvYyk7CkBAIC03NjQzLDIzICs3NjQ2LDIyIEBAIHJlc29s dmVfb21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVzZXMgKm9tcF9j bGF1c2VzLAogCSAgICAmJiBuLT5zeW0tPnJlc3VsdCA9PSBuLT5zeW0KIAkgICAgJiYgbi0+ c3ltLT5hdHRyLmZ1bmN0aW9uKQogCSAgewotCSAgICBpZiAoZ2ZjX2N1cnJlbnRfbnMtPnBy b2NfbmFtZSA9PSBuLT5zeW0KLQkJfHwgKGdmY19jdXJyZW50X25zLT5wYXJlbnQKLQkJICAg ICYmIGdmY19jdXJyZW50X25zLT5wYXJlbnQtPnByb2NfbmFtZSA9PSBuLT5zeW0pKQorCSAg ICBpZiAobnMtPnByb2NfbmFtZSA9PSBuLT5zeW0KKwkJfHwgKG5zLT5wYXJlbnQgJiYgbnMt PnBhcmVudC0+cHJvY19uYW1lID09IG4tPnN5bSkpCiAJICAgICAgY29udGludWU7Ci0JICAg IGlmIChnZmNfY3VycmVudF9ucy0+cHJvY19uYW1lLT5hdHRyLmVudHJ5X21hc3RlcikKKwkg ICAgaWYgKG5zLT5wcm9jX25hbWUtPmF0dHIuZW50cnlfbWFzdGVyKQogCSAgICAgIHsKLQkJ Z2ZjX2VudHJ5X2xpc3QgKmVsID0gZ2ZjX2N1cnJlbnRfbnMtPmVudHJpZXM7CisJCWdmY19l bnRyeV9saXN0ICplbCA9IG5zLT5lbnRyaWVzOwogCQlmb3IgKDsgZWw7IGVsID0gZWwtPm5l eHQpCiAJCSAgaWYgKGVsLT5zeW0gPT0gbi0+c3ltKQogCQkgICAgYnJlYWs7CiAJCWlmIChl bCkKIAkJICBjb250aW51ZTsKIAkgICAgICB9Ci0JICAgIGlmIChnZmNfY3VycmVudF9ucy0+ cGFyZW50Ci0JCSYmIGdmY19jdXJyZW50X25zLT5wYXJlbnQtPnByb2NfbmFtZS0+YXR0ci5l bnRyeV9tYXN0ZXIpCisJICAgIGlmIChucy0+cGFyZW50CisJCSYmIG5zLT5wYXJlbnQtPnBy b2NfbmFtZS0+YXR0ci5lbnRyeV9tYXN0ZXIpCiAJICAgICAgewotCQlnZmNfZW50cnlfbGlz dCAqZWwgPSBnZmNfY3VycmVudF9ucy0+cGFyZW50LT5lbnRyaWVzOworCQlnZmNfZW50cnlf bGlzdCAqZWwgPSBucy0+cGFyZW50LT5lbnRyaWVzOwogCQlmb3IgKDsgZWw7IGVsID0gZWwt Pm5leHQpCiAJCSAgaWYgKGVsLT5zeW0gPT0gbi0+c3ltKQogCQkgICAgYnJlYWs7CkBAIC03 OTU5LDI0ICs3OTYxLDEyMCBAQCByZXNvbHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29k ZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcywKIAkgICYmIGNvZGUtPmJsb2NrLT5u ZXh0LT5vcCA9PSBFWEVDX0FMTE9DQVRFKQogCXsKIAkgIGdmY19hbGxvYyAqYTsKKwkgIGdm Y19vbXBfbmFtZWxpc3QgKm5fbnVsbCA9IE5VTEw7CisJICBib29sIG1pc3NpbmdfYWxsb2Nh dG9yID0gZmFsc2U7CisJICBnZmNfc3ltYm9sICptaXNzaW5nX2FsbG9jYXRvcl9zeW0gPSBO VUxMOwogCSAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRF XTsgbjsgbiA9IG4tPm5leHQpCiAJICAgIHsKKwkgICAgICBpZiAobi0+dTIuYWxsb2NhdG9y ID09IE5VTEwpCisJCXsKKwkJICBpZiAoIW1pc3NpbmdfYWxsb2NhdG9yX3N5bSkKKwkJICAg IG1pc3NpbmdfYWxsb2NhdG9yX3N5bSA9IG4tPnN5bTsKKwkJICBtaXNzaW5nX2FsbG9jYXRv ciA9IHRydWU7CisJCX0KIAkgICAgICBpZiAobi0+c3ltID09IE5VTEwpCi0JCWNvbnRpbnVl OworCQl7CisJCSAgbl9udWxsID0gbjsKKwkJICBjb250aW51ZTsKKwkJfQogCSAgICAgIGlm IChuLT5zeW0tPmF0dHIuY29kaW1lbnNpb24pCiAJCWdmY19lcnJvciAoIlVuZXhwZWN0ZWQg Y29hcnJheSAlcXMgaW4gJTxhbGxvY2F0ZSU+IGF0ICVMIiwKIAkJCSAgIG4tPnN5bS0+bmFt ZSwgJm4tPndoZXJlKTsKIAkgICAgICBmb3IgKGEgPSBjb2RlLT5ibG9jay0+bmV4dC0+ZXh0 LmFsbG9jLmxpc3Q7IGE7IGEgPSBhLT5uZXh0KQogCQlpZiAoYS0+ZXhwci0+ZXhwcl90eXBl ID09IEVYUFJfVkFSSUFCTEUKIAkJICAgICYmIGEtPmV4cHItPnN5bXRyZWUtPm4uc3ltID09 IG4tPnN5bSkKLQkJICBicmVhazsKKwkJICB7CisJCSAgICBnZmNfcmVmICpyZWY7CisJCSAg ICBmb3IgKHJlZiA9IGEtPmV4cHItPnJlZjsgcmVmOyByZWYgPSByZWYtPm5leHQpCisJCSAg ICAgIGlmIChyZWYtPnR5cGUgPT0gUkVGX0NPTVBPTkVOVCkKKwkJCWJyZWFrOworCQkgICAg aWYgKHJlZiA9PSBOVUxMKQorCQkgICAgICBicmVhazsKKwkJICB9CiAJICAgICAgaWYgKGEg PT0gTlVMTCkKIAkJZ2ZjX2Vycm9yICgiJXFzIHNwZWNpZmllZCBpbiAlPGFsbG9jYXRlJT4g YXQgJUwgYnV0IG5vdCAiCiAJCQkgICAiaW4gdGhlIGFzc29jaWF0ZWQgQUxMT0NBVEUgc3Rh dGVtZW50IiwKIAkJCSAgIG4tPnN5bS0+bmFtZSwgJm4tPndoZXJlKTsKIAkgICAgfQotCX0K KwkgIC8qIElmIHRoZXJlIGlzIGFuIEFMTE9DQVRFIGRpcmVjdGl2ZSB3aXRob3V0IGxpc3Qg YXJndW1lbnQsIGEKKwkgICAgIG5hbWVsaXN0IHdpdGggaXRzIGFsbG9jYXRvci9hbGlnbiBj bGF1c2VzIGFuZCBuLT5zeW0gPSBOVUxMIGlzCisJICAgICBjcmVhdGVkIGR1cmluZyBwYXJz aW5nOyBoZXJlLCB3ZSBhZGQgYWxsIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkCisJICAgICBp dGVtcyBmcm9tIHRoZSBGb3J0cmFuIGFsbG9jYXRlIHRvIHRoYXQgbGlzdC4KKwkgICAgIEZv ciBhbiBBTExPQ0FUT1JTIGRpcmVjdGl2ZSwgbm90IGxpc3RlZCBpdGVtcyB1c2UgdGhlIG5v cm1hbAorCSAgICAgRm9ydHJhbiB3YXkuCisJICAgICBUaGUgYmVoYXZpb3Igb2YgYW4gQUxM T0NBVEUgZGlyZWN0aXZlIHRoYXQgZG9lcyBub3QgbGlzdCBhbGwKKwkgICAgIGFyZ3VtZW50 cyBidXQgdGhlcmUgaXMgbm8gZGlyZWN0aXZlIHdpdGhvdXQgbGlzdCBhcmd1bWVudCBpcyBu b3QKKwkgICAgIHdlbGwgc3BlY2lmaWVkLiAgVGh1cywgd2UgcmVqZWN0IHN1Y2ggY29kZSBi ZWxvdy4gSW4gT3Blbk1QIDUuMgorCSAgICAgdGhlIGV4ZWN1dGFibGUgQUxMT0NBVEUgZGly ZWN0aXZlIGlzIGRlcHJlY2F0ZWQgYW5kIGluIDYuMAorCSAgICAgZGVsZXRlZCBzdWNoIHRo YXQgbm8gc3BlYyBjbGFyaWZpY2F0aW9uIGlzIHRvIGJlIGV4cGVjdGVkLiAgKi8KKwkgIGZv ciAoYSA9IGNvZGUtPmJsb2NrLT5uZXh0LT5leHQuYWxsb2MubGlzdDsgYTsgYSA9IGEtPm5l eHQpCisJICAgIGlmIChhLT5leHByLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRSkKKwkg ICAgICB7CisJCWZvciAobiA9IG9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FU RV07IG47IG4gPSBuLT5uZXh0KQorCQkgIGlmIChhLT5leHByLT5zeW10cmVlLT5uLnN5bSA9 PSBuLT5zeW0pCisJCSAgICB7CisJCSAgICAgIGdmY19yZWYgKnJlZjsKKwkJICAgICAgZm9y IChyZWYgPSBhLT5leHByLT5yZWY7IHJlZjsgcmVmID0gcmVmLT5uZXh0KQorCQkJaWYgKHJl Zi0+dHlwZSA9PSBSRUZfQ09NUE9ORU5UKQorCQkJICBicmVhazsKKwkJICAgICAgaWYgKHJl ZiA9PSBOVUxMKQorCQkJYnJlYWs7CisJCSAgICB9CisJCWlmIChuID09IE5VTEwgJiYgbl9u dWxsID09IE5VTEwpCisJCSAgeworCQkgICAgLyogT0sgZm9yIEFMTE9DQVRPUlMgYnV0IGZv ciBBTExPQ0FURTogVW5zcGVjaWZpZWQgd2hldGhlcgorCQkgICAgICAgdGhhdCBzaG91bGQg dXNlIHRoZSBkZWZhdWx0IGFsbG9jYXRvciBvZiBPcGVuTVAgb3IgdGhlCisJCSAgICAgICBG b3J0cmFuIGFsbG9jYXRvci4gVGh1cywganVzdCByZWplY3QgaXQuICAqLworCQkgICAgaWYg KGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9DQVRFKQorCQkgICAgICBnZmNfZXJyb3IgKCIl cXMgbGlzdGVkIGluICU8YWxsb2NhdGUlPiBzdGF0ZW1lbnQgYXQgJUwgIgorCQkJCSAiYnV0 IGl0IGlzIG5laXRoZXIgZXhwbGljaXRseSBpbiBsaXN0ZWQgaW4gIgorCQkJCSAidGhlICU8 ISRPTVAgQUxMT0NBVEUlPiBkaXJlY3RpdmUgbm9yIGV4aXN0cyIKKwkJCQkgIiBhIGRpcmVj dGl2ZSB3aXRob3V0IGFyZ3VtZW50IGxpc3QiLAorCQkJCSBhLT5leHByLT5zeW10cmVlLT5u LnN5bS0+bmFtZSwKKwkJCQkgJmEtPmV4cHItPndoZXJlKTsKKwkJICAgIGJyZWFrOworCQkg IH0KKwkJaWYgKG4gPT0gTlVMTCkKKwkJICB7CisJCSAgICBpZiAoYS0+ZXhwci0+c3ltdHJl ZS0+bi5zeW0tPmF0dHIuY29kaW1lbnNpb24pCisJCSAgICAgIGdmY19lcnJvciAoIlVuZXhw ZWN0ZWQgY29hcnJheSAlcXMgaW4gJTxhbGxvY2F0ZSU+IGF0ICIKKwkJCQkgIiVMLCBpbXBs aWNpdGx5IGxpc3RlZCBpbiAlPCEkT01QIEFMTE9DQVRFJT4iCisJCQkJICIgYXQgJUwiLCBh LT5leHByLT5zeW10cmVlLT5uLnN5bS0+bmFtZSwKKwkJCQkgJmEtPmV4cHItPndoZXJlLCAm bl9udWxsLT53aGVyZSk7CisJCSAgICBicmVhazsKKwkJICB9CisJICAgIH0KKwkgIGdmY19u YW1lc3BhY2UgKnByb2dfdW5pdCA9IG5zOworCSAgd2hpbGUgKHByb2dfdW5pdC0+cGFyZW50 KQorCSAgICBwcm9nX3VuaXQgPSBwcm9nX3VuaXQtPnBhcmVudDsKKwkgIGdmY19uYW1lc3Bh Y2UgKmZuX25zID0gbnM7CisJICB3aGlsZSAoZm5fbnMpCisJICAgIHsKKwkgICAgICBpZiAo bnMtPnByb2NfbmFtZQorCQkgICYmIChucy0+cHJvY19uYW1lLT5hdHRyLnN1YnJvdXRpbmUK KwkJICAgICAgfHwgbnMtPnByb2NfbmFtZS0+YXR0ci5mdW5jdGlvbikpCisJCWJyZWFrOwor CSAgICAgIGZuX25zID0gZm5fbnMtPnBhcmVudDsKKwkgICAgfQorCSAgaWYgKG1pc3Npbmdf YWxsb2NhdG9yCisJICAgICAgJiYgIShwcm9nX3VuaXQtPm9tcF9yZXF1aXJlcyAmIE9NUF9S RVFfRFlOQU1JQ19BTExPQ0FUT1JTKQorCSAgICAgICYmICgoZm5fbnMgJiYgZm5fbnMtPnBy b2NfbmFtZS0+YXR0ci5vbXBfZGVjbGFyZV90YXJnZXQpCisJCSAgfHwgb21wX2NsYXVzZXMt PmNvbnRhaW5lZF9pbl90YXJnZXRfY29uc3RydWN0KSkKKwkgICAgeworCSAgICAgIGlmIChj b2RlLT5vcCA9PSBFWEVDX09NUF9BTExPQ0FUT1JTKQorCQlnZmNfZXJyb3IgKCJBTExPQ0FU T1JTIGRpcmVjdGl2ZSBhdCAlTCBpbnNpZGUgYSB0YXJnZXQgcmVnaW9uICIKKwkJCSAgICJt dXN0IHNwZWNpZnkgYW4gQUxMT0NBVE9SIG1vZGlmaWVyIGZvciAlcXMiLAorCQkJICAgJmNv ZGUtPmxvYywgbWlzc2luZ19hbGxvY2F0b3Jfc3ltLT5uYW1lKTsKKwkgICAgICBlbHNlIGlm IChtaXNzaW5nX2FsbG9jYXRvcl9zeW0pCisJCWdmY19lcnJvciAoIkFMTE9DQVRFIGRpcmVj dGl2ZSBhdCAlTCBpbnNpZGUgYSB0YXJnZXQgcmVnaW9uICIKKwkJCSAgICJtdXN0IHNwZWNp ZnkgYW4gQUxMT0NBVE9SIGNsYXVzZSBmb3IgJXFzIiwKKwkJCSAgICZjb2RlLT5sb2MsIG1p c3NpbmdfYWxsb2NhdG9yX3N5bS0+bmFtZSk7CisJICAgICAgZWxzZQorCQlnZmNfZXJyb3Ig KCJBTExPQ0FURSBkaXJlY3RpdmUgYXQgJUwgaW5zaWRlIGEgdGFyZ2V0IHJlZ2lvbiAiCisJ CQkgICAibXVzdCBzcGVjaWZ5IGFuIEFMTE9DQVRPUiBjbGF1c2UiLCAmY29kZS0+bG9jKTsK KwkgICAgfQogCisJfQogICAgIH0KIAogICAvKiBPcGVuQUNDIHJlZHVjdGlvbnMuICAqLwpk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MgYi9nY2MvZm9ydHJhbi9wYXJzZS5j YwppbmRleCBhYmQzYTQyNGYzOC4uYzBlYjA1NzVhOTAgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0 cmFuL3BhcnNlLmNjCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmNjCkBAIC0xMzY0LDYgKzEz NjQsOCBAQCBkZWNvZGVfb21wX2RpcmVjdGl2ZSAodm9pZCkKIAkgIHByb2dfdW5pdC0+b21w X3RhcmdldF9zZWVuID0gdHJ1ZTsKIAlicmVhazsKICAgICAgIH0KKyAgICBjYXNlIFNUX09N UF9BTExPQ0FURV9FWEVDOgorICAgIGNhc2UgU1RfT01QX0FMTE9DQVRPUlM6CiAgICAgY2Fz ZSBTVF9PTVBfVEVBTVM6CiAgICAgY2FzZSBTVF9PTVBfVEVBTVNfRElTVFJJQlVURToKICAg ICBjYXNlIFNUX09NUF9URUFNU19ESVNUUklCVVRFX1NJTUQ6CkBAIC0xMzg2LDcgKzEzODgs MTAgQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAJICAgIGNhc2UgRVhFQ19PTVBf VEFSR0VUX1BBUkFMTEVMX0RPX1NJTUQ6CiAJICAgIGNhc2UgRVhFQ19PTVBfVEFSR0VUX1BB UkFMTEVMX0xPT1A6CiAJICAgIGNhc2UgRVhFQ19PTVBfVEFSR0VUX1NJTUQ6Ci0JICAgICAg c3RrLT50YWlsLT5leHQub21wX2NsYXVzZXMtPmNvbnRhaW5zX3RlYW1zX2NvbnN0cnVjdCA9 IDE7CisJICAgICAgaWYgKHJldCA9PSBTVF9PTVBfQUxMT0NBVEVfRVhFQyB8fCByZXQgPT0g U1RfT01QX0FMTE9DQVRPUlMpCisJCW5ld19zdC5leHQub21wX2NsYXVzZXMtPmNvbnRhaW5l ZF9pbl90YXJnZXRfY29uc3RydWN0ID0gMTsKKwkgICAgICBlbHNlCisJCXN0ay0+dGFpbC0+ ZXh0Lm9tcF9jbGF1c2VzLT5jb250YWluc190ZWFtc19jb25zdHJ1Y3QgPSAxOwogCSAgICAg IGJyZWFrOwogCSAgICBkZWZhdWx0OgogCSAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jYwpp bmRleCBiYmI4MWY0MGFhOS4uZjIzMzI1ZGM0ZTEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu L3RyYW5zLWFycmF5LmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjCkBAIC0z NjMsNiArMzYzLDIxIEBAIGdmY19jb252X2Rlc2NyaXB0b3JfcmFuayAodHJlZSBkZXNjKQog fQogCiAKK3RyZWUKK2dmY19jb252X2Rlc2NyaXB0b3JfdmVyc2lvbiAodHJlZSBkZXNjKQor eworICB0cmVlIHRtcDsKKyAgdHJlZSBkdHlwZTsKKworICBkdHlwZSA9IGdmY19jb252X2Rl c2NyaXB0b3JfZHR5cGUgKGRlc2MpOworICB0bXAgPSBnZmNfYWR2YW5jZV9jaGFpbiAoVFlQ RV9GSUVMRFMgKFRSRUVfVFlQRSAoZHR5cGUpKSwgR0ZDX0RUWVBFX1ZFUlNJT04pOworICBn Y2NfYXNzZXJ0ICh0bXAgIT0gTlVMTF9UUkVFCisJICAgICAgJiYgVFJFRV9UWVBFICh0bXAp ID09IGludGVnZXJfdHlwZV9ub2RlKTsKKyAgcmV0dXJuIGZvbGRfYnVpbGQzX2xvYyAoaW5w dXRfbG9jYXRpb24sIENPTVBPTkVOVF9SRUYsIFRSRUVfVFlQRSAodG1wKSwKKwkJCSAgZHR5 cGUsIHRtcCwgTlVMTF9UUkVFKTsKK30KKworCiAvKiBSZXR1cm4gdGhlIGVsZW1lbnQgbGVu Z3RoIGZyb20gdGhlIGRlc2NyaXB0b3IgZHR5cGUgZmllbGQuICAqLwogCiB0cmVlCkBAIC02 MTk2LDcgKzYyMTEsNyBAQCBib29sCiBnZmNfYXJyYXlfYWxsb2NhdGUgKGdmY19zZSAqIHNl LCBnZmNfZXhwciAqIGV4cHIsIHRyZWUgc3RhdHVzLCB0cmVlIGVycm1zZywKIAkJICAgIHRy ZWUgZXJybGVuLCB0cmVlIGxhYmVsX2ZpbmlzaCwgdHJlZSBleHByM19lbGVtX3NpemUsCiAJ CSAgICB0cmVlICpuZWxlbXMsIGdmY19leHByICpleHByMywgdHJlZSBlM19hcnJfZGVzYywK LQkJICAgIGJvb2wgZTNfaGFzX25vZGVzY3JpcHRvcikKKwkJICAgIGJvb2wgZTNfaGFzX25v ZGVzY3JpcHRvciwgZ2ZjX29tcF9uYW1lbGlzdCAqb21wX2FsbG9jKQogewogICB0cmVlIHRt cDsKICAgdHJlZSBwb2ludGVyOwpAQCAtNjIxOCw2ICs2MjMzLDcgQEAgZ2ZjX2FycmF5X2Fs bG9jYXRlIChnZmNfc2UgKiBzZSwgZ2ZjX2V4cHIgKiBleHByLCB0cmVlIHN0YXR1cywgdHJl ZSBlcnJtc2csCiAgIGdmY19yZWYgKnJlZiwgKnByZXZfcmVmID0gTlVMTCwgKmNvcmVmOwog ICBib29sIGFsbG9jYXRhYmxlLCBjb2FycmF5LCBkaW1lbnNpb24sIGFsbG9jX3dfZTNfYXJy X3NwZWMgPSBmYWxzZSwKICAgICAgIG5vbl91bGltYXRlX2NvYXJyYXlfcHRyX2NvbXA7Cisg IHRyZWUgb21wX2NvbmQgPSBOVUxMX1RSRUUsIG9tcF9hbHRfYWxsb2MgPSBOVUxMX1RSRUU7 CiAKICAgcmVmID0gZXhwci0+cmVmOwogCkBAIC02MzY4LDcgKzYzODQsMTEgQEAgZ2ZjX2Fy cmF5X2FsbG9jYXRlIChnZmNfc2UgKiBzZSwgZ2ZjX2V4cHIgKiBleHByLCB0cmVlIHN0YXR1 cywgdHJlZSBlcnJtc2csCiAgICAgICB0b2tlbiA9IGdmY19idWlsZF9hZGRyX2V4cHIgKE5V TExfVFJFRSwgdG9rZW4pOwogICAgIH0KICAgZWxzZQotICAgIHBvaW50ZXIgPSBnZmNfY29u dl9kZXNjcmlwdG9yX2RhdGFfZ2V0IChzZS0+ZXhwcik7CisgICAgeworICAgICAgcG9pbnRl ciA9IGdmY19jb252X2Rlc2NyaXB0b3JfZGF0YV9nZXQgKHNlLT5leHByKTsKKyAgICAgIGlm IChvbXBfYWxsb2MpCisJb21wX2NvbmQgPSBib29sZWFuX3RydWVfbm9kZTsKKyAgICB9CiAg IFNUUklQX05PUFMgKHBvaW50ZXIpOwogCiAgIGlmIChhbGxvY2F0YWJsZSkKQEAgLTYzODQs MTggKzY0MDQsNjYgQEAgZ2ZjX2FycmF5X2FsbG9jYXRlIChnZmNfc2UgKiBzZSwgZ2ZjX2V4 cHIgKiBleHByLCB0cmVlIHN0YXR1cywgdHJlZSBlcnJtc2csCiAKICAgZ2ZjX3N0YXJ0X2Js b2NrICgmZWxzZWJsb2NrKTsKIAorICB0cmVlIHN1Y2NfYWRkX2V4cHIgPSBOVUxMX1RSRUU7 CisgIGlmIChvbXBfY29uZCkKKyAgICB7CisgICAgICB0cmVlIGFsaWduLCBhbGxvYywgc3o7 CisgICAgICBnZmNfc2Ugc2UyOworICAgICAgaWYgKG9tcF9hbGxvYy0+dTIuYWxsb2NhdG9y KQorCXsKKwkgIGdmY19pbml0X3NlICgmc2UyLCBOVUxMKTsKKwkgIGdmY19jb252X2V4cHIg KCZzZTIsIG9tcF9hbGxvYy0+dTIuYWxsb2NhdG9yKTsKKwkgIGdmY19hZGRfYmxvY2tfdG9f YmxvY2sgKCZlbHNlYmxvY2ssICZzZTIucHJlKTsKKwkgIGFsbG9jID0gZ2ZjX2V2YWx1YXRl X25vdyAoc2UyLmV4cHIsICZlbHNlYmxvY2spOworCSAgZ2ZjX2FkZF9ibG9ja190b19ibG9j ayAoJmVsc2VibG9jaywgJnNlMi5wb3N0KTsKKwl9CisgICAgICBlbHNlCisJYWxsb2MgPSBi dWlsZF96ZXJvX2NzdCAocHRyX3R5cGVfbm9kZSk7CisgICAgICB0bXAgPSBUUkVFX1RZUEUg KFRSRUVfVFlQRSAocG9pbnRlcikpOworICAgICAgaWYgKHRtcCA9PSB2b2lkX3R5cGVfbm9k ZSkKKwl0bXAgPSBnZmNfdHlwZW5vZGVfZm9yX3NwZWMgKCZleHByLT50cywgMCk7CisgICAg ICBpZiAob21wX2FsbG9jLT51LmFsaWduKQorCXsKKwkgIGdmY19pbml0X3NlICgmc2UyLCBO VUxMKTsKKwkgIGdmY19jb252X2V4cHIgKCZzZTIsIG9tcF9hbGxvYy0+dS5hbGlnbik7CisJ ICBnY2NfYXNzZXJ0IChDT05TVEFOVF9DTEFTU19QIChzZTIuZXhwcikKKwkJICAgICAgJiYg c2UyLnByZS5oZWFkID09IE5VTEwKKwkJICAgICAgJiYgc2UyLnBvc3QuaGVhZCA9PSBOVUxM KTsKKwkgIGFsaWduID0gYnVpbGRfaW50X2NzdCAoc2l6ZV90eXBlX25vZGUsCisJCQkJIE1B WCAodHJlZV90b191aHdpIChzZTIuZXhwciksCisJCQkJICAgICAgVFlQRV9BTElHTl9VTklU ICh0bXApKSk7CisJfQorICAgICAgZWxzZQorCWFsaWduID0gYnVpbGRfaW50X2NzdCAoc2l6 ZV90eXBlX25vZGUsIFRZUEVfQUxJR05fVU5JVCAodG1wKSk7CisgICAgICBzeiA9IGZvbGRf YnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1BWF9FWFBSLCBzaXplX3R5cGVfbm9kZSwK KwkJCSAgICBmb2xkX2NvbnZlcnQgKHNpemVfdHlwZV9ub2RlLCBzaXplKSwKKwkJCSAgICBi dWlsZF9pbnRfY3N0IChzaXplX3R5cGVfbm9kZSwgMSkpOworICAgICAgb21wX2FsdF9hbGxv YyA9IGJ1aWx0aW5fZGVjbF9leHBsaWNpdCAoQlVJTFRfSU5fR09NUF9BTExPQyk7CisgICAg ICBERUNMX0FUVFJJQlVURVMgKG9tcF9hbHRfYWxsb2MpCisJPSB0cmVlX2NvbnMgKGdldF9p ZGVudGlmaWVyICgib21wIGFsbG9jYXRvciIpLAorCQkgICAgIGJ1aWxkX3RyZWVfbGlzdCAo TlVMTF9UUkVFLCBhbGxvYyksCisJCSAgICAgREVDTF9BVFRSSUJVVEVTIChvbXBfYWx0X2Fs bG9jKSk7CisgICAgICBvbXBfYWx0X2FsbG9jID0gYnVpbGRfY2FsbF9leHByIChvbXBfYWx0 X2FsbG9jLCAzLCBhbGlnbiwgc3osIGFsbG9jKTsKKyAgICAgIHN1Y2NfYWRkX2V4cHIgPSBm b2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNT0RJRllfRVhQUiwKKwkJCQkgICAg ICAgdm9pZF90eXBlX25vZGUsCisJCQkJICAgICAgIGdmY19jb252X2Rlc2NyaXB0b3JfdmVy c2lvbiAoc2UtPmV4cHIpLAorCQkJCSAgICAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5 cGVfbm9kZSwgMSkpOworICAgIH0KKwogICAvKiBUaGUgYWxsb2NhdGFibGUgdmFyaWFudCB0 YWtlcyB0aGUgb2xkIHBvaW50ZXIgYXMgZmlyc3QgYXJndW1lbnQuICAqLwogICBpZiAoYWxs b2NhdGFibGUpCiAgICAgZ2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlICgmZWxzZWJsb2NrLCBw b2ludGVyLCBzaXplLCB0b2tlbiwKIAkJCSAgICAgIHN0YXR1cywgZXJybXNnLCBlcnJsZW4s IGxhYmVsX2ZpbmlzaCwgZXhwciwKLQkJCSAgICAgIGNvcmVmICE9IE5VTEwgPyBjb3JlZi0+ dS5hci5hcy0+Y29yYW5rIDogMCk7CisJCQkgICAgICBjb3JlZiAhPSBOVUxMID8gY29yZWYt PnUuYXIuYXMtPmNvcmFuayA6IDAsCisJCQkgICAgICBvbXBfY29uZCwgb21wX2FsdF9hbGxv Yywgc3VjY19hZGRfZXhwcik7CiAgIGVsc2UgaWYgKG5vbl91bGltYXRlX2NvYXJyYXlfcHRy X2NvbXAgJiYgdG9rZW4pCiAgICAgLyogVGhlIHRva2VuIGlzIHNldCBvbmx5IGZvciBHRkNf RkNPQVJSQVlfTElCIG1vZGUuICAqLwogICAgIGdmY19hbGxvY2F0ZV91c2luZ19jYWZfbGli ICgmZWxzZWJsb2NrLCBwb2ludGVyLCBzaXplLCB0b2tlbiwgc3RhdHVzLAogCQkJCWVycm1z ZywgZXJybGVuLAogCQkJCUdGQ19DQUZfQ09BUlJBWV9BTExPQ19BTExPQ0FURV9PTkxZKTsK ICAgZWxzZQotICAgIGdmY19hbGxvY2F0ZV91c2luZ19tYWxsb2MgKCZlbHNlYmxvY2ssIHBv aW50ZXIsIHNpemUsIHN0YXR1cyk7CisgICAgZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAo JmVsc2VibG9jaywgcG9pbnRlciwgc2l6ZSwgc3RhdHVzLAorCQkJICAgICAgIG9tcF9jb25k LCBvbXBfYWx0X2FsbG9jLCBzdWNjX2FkZF9leHByKTsKIAogICBpZiAoZGltZW5zaW9uKQog ICAgIHsKQEAgLTk2MDMsMTEgKzk2NzEsNiBAQCBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGdm Y19zeW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNsLCB0cmVlIGRlc3QsCiAJCSAgZWxzZSBp ZiAoYXR0ci0+ZGltZW5zaW9uICYmICFhdHRyLT5wcm9jX3BvaW50ZXIpCiAJCSAgICBjYWZf dG9rZW4gPSBnZmNfY29udl9kZXNjcmlwdG9yX3Rva2VuIChjb21wKTsKIAkJfQotCSAgICAg IGlmIChhdHRyLT5kaW1lbnNpb24gJiYgIWF0dHItPmNvZGltZW5zaW9uICYmICFhdHRyLT5w cm9jX3BvaW50ZXIpCi0JCS8qIFdoZW4gdGhpcyBpcyBhbiBhcnJheSBidXQgbm90IGluIGNv bmp1bmN0aW9uIHdpdGggYSBjb2FycmF5Ci0JCSAgIHRoZW4gYWRkIHRoZSBkYXRhLXJlZi4g IEZvciBjb2FycmF5J2VkIGFycmF5cyB0aGUgZGF0YS1yZWYKLQkJICAgaXMgYWRkZWQgYnkg ZGVhbGxvY2F0ZV93aXRoX3N0YXR1cy4gICovCi0JCWNvbXAgPSBnZmNfY29udl9kZXNjcmlw dG9yX2RhdGFfZ2V0IChjb21wKTsKIAogCSAgICAgIHRtcCA9IGdmY19kZWFsbG9jYXRlX3dp dGhfc3RhdHVzIChjb21wLCBOVUxMX1RSRUUsIE5VTExfVFJFRSwKIAkJCQkJCU5VTExfVFJF RSwgTlVMTF9UUkVFLCB0cnVlLApAQCAtMTAyOTIsMjkgKzEwMzU1LDUwIEBAIHN0cnVjdHVy ZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJvbCAqIGRlcl90eXBlLCB0cmVlIGRlY2wsIHRyZWUg ZGVzdCwKIAkgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZmbmJsb2NrLCB0bXApOwog CSAgICB9CiAKLQkgIGlmIChjLT5hdHRyLnBkdF9hcnJheSkKKwkgIGlmIChjLT5hdHRyLnBk dF9hcnJheSB8fCBjLT5hdHRyLnBkdF9zdHJpbmcpCiAJICAgIHsKLQkgICAgICB0bXAgPSBn ZmNfY29udl9kZXNjcmlwdG9yX2RhdGFfZ2V0IChjb21wKTsKKwkgICAgICB0bXAgPSBjb21w OworCSAgICAgIGlmIChjLT5hdHRyLnBkdF9hcnJheSkKKwkJdG1wID0gZ2ZjX2NvbnZfZGVz Y3JpcHRvcl9kYXRhX2dldCAoY29tcCk7CiAJICAgICAgbnVsbF9jb25kID0gZm9sZF9idWls ZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQUiwKIAkJCQkJICAgbG9naWNhbF90eXBl X25vZGUsIHRtcCwKIAkJCQkJICAgYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFICh0bXApLCAw KSk7Ci0JICAgICAgdG1wID0gZ2ZjX2NhbGxfZnJlZSAodG1wKTsKLQkgICAgICB0bXAgPSBi dWlsZDNfdiAoQ09ORF9FWFBSLCBudWxsX2NvbmQsIHRtcCwKLQkJCSAgICAgIGJ1aWxkX2Vt cHR5X3N0bXQgKGlucHV0X2xvY2F0aW9uKSk7Ci0JICAgICAgZ2ZjX2FkZF9leHByX3RvX2Js b2NrICgmZm5ibG9jaywgdG1wKTsKLQkgICAgICBnZmNfY29udl9kZXNjcmlwdG9yX2RhdGFf c2V0ICgmZm5ibG9jaywgY29tcCwgbnVsbF9wb2ludGVyX25vZGUpOwotCSAgICB9Ci0JICBl bHNlIGlmIChjLT5hdHRyLnBkdF9zdHJpbmcpCi0JICAgIHsKLQkgICAgICBudWxsX2NvbmQg PSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBORV9FWFBSLAotCQkJCQkgICBs b2dpY2FsX3R5cGVfbm9kZSwgY29tcCwKLQkJCQkJICAgYnVpbGRfaW50X2NzdCAoVFJFRV9U WVBFIChjb21wKSwgMCkpOwotCSAgICAgIHRtcCA9IGdmY19jYWxsX2ZyZWUgKGNvbXApOwor CSAgICAgIGlmIChmbGFnX29wZW5tcF9hbGxvY2F0b3JzKQorCQl7CisJCSAgdHJlZSBjZCwg dDsKKwkJICBpZiAoYy0+YXR0ci5wZHRfYXJyYXkpCisJCSAgICBjZCA9IGZvbGRfYnVpbGQy X2xvYyAoaW5wdXRfbG9jYXRpb24sIEVRX0VYUFIsCisJCQkJCSAgYm9vbGVhbl90eXBlX25v ZGUsCisJCQkJCSAgZ2ZjX2NvbnZfZGVzY3JpcHRvcl92ZXJzaW9uIChjb21wKSwKKwkJCQkJ ICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgMSkpOworCQkgIGVsc2UKKwkJ ICAgIGNkID0gZ2ZjX29tcF9jYWxsX2lzX2FsbG9jICh0bXApOworCQkgIHQgPSBidWlsdGlu X2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfRlJFRSk7CisJCSAgdCA9IGJ1aWxkX2Nh bGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0LCAxLCB0bXApOworCisJCSAgc3RtdGJs b2NrX3QgdGJsb2NrOworCQkgIGdmY19pbml0X2Jsb2NrICgmdGJsb2NrKTsKKwkJICBnZmNf YWRkX2V4cHJfdG9fYmxvY2sgKCZ0YmxvY2ssIHQpOworCQkgIGlmIChjLT5hdHRyLnBkdF9h cnJheSkKKwkJICAgIGdmY19hZGRfbW9kaWZ5ICgmdGJsb2NrLCBnZmNfY29udl9kZXNjcmlw dG9yX3ZlcnNpb24gKGNvbXApLAorCQkJCSAgICBidWlsZF96ZXJvX2NzdCAoaW50ZWdlcl90 eXBlX25vZGUpKTsKKwkJICB0bXAgPSBidWlsZDNfbG9jIChpbnB1dF9sb2NhdGlvbiwgQ09O RF9FWFBSLCB2b2lkX3R5cGVfbm9kZSwKKwkJCQkgICAgY2QsIGdmY19maW5pc2hfYmxvY2sg KCZ0YmxvY2spLAorCQkJCSAgICBnZmNfY2FsbF9mcmVlICh0bXApKTsKKwkJfQorCSAgICAg IGVsc2UKKwkJdG1wID0gZ2ZjX2NhbGxfZnJlZSAodG1wKTsKIAkgICAgICB0bXAgPSBidWls ZDNfdiAoQ09ORF9FWFBSLCBudWxsX2NvbmQsIHRtcCwKIAkJCSAgICAgIGJ1aWxkX2VtcHR5 X3N0bXQgKGlucHV0X2xvY2F0aW9uKSk7CiAJICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2Nr ICgmZm5ibG9jaywgdG1wKTsKLQkgICAgICB0bXAgPSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQ RSAoY29tcCksIG51bGxfcG9pbnRlcl9ub2RlKTsKLQkgICAgICBnZmNfYWRkX21vZGlmeSAo JmZuYmxvY2ssIGNvbXAsIHRtcCk7CisKKwkgICAgICBpZiAoYy0+YXR0ci5wZHRfYXJyYXkp CisJCWdmY19jb252X2Rlc2NyaXB0b3JfZGF0YV9zZXQgKCZmbmJsb2NrLCBjb21wLCBudWxs X3BvaW50ZXJfbm9kZSk7CisJICAgICAgZWxzZQorCQl7CisJCSAgdG1wID0gZm9sZF9jb252 ZXJ0IChUUkVFX1RZUEUgKGNvbXApLCBudWxsX3BvaW50ZXJfbm9kZSk7CisJCSAgZ2ZjX2Fk ZF9tb2RpZnkgKCZmbmJsb2NrLCBjb21wLCB0bXApOworCQl9CiAJICAgIH0KIAogCSAgYnJl YWs7CkBAIC0xMTI0OCw4ICsxMTMzMiwyMiBAQCBnZmNfYWxsb2NfYWxsb2NhdGFibGVfZm9y X2Fzc2lnbm1lbnQgKGdmY19sb29waW5mbyAqbG9vcCwKIAkJCQkgYnVpbHRpbl9kZWNsX2V4 cGxpY2l0IChCVUlMVF9JTl9SRUFMTE9DKSwgMiwKIAkJCQkgZm9sZF9jb252ZXJ0IChwdm9p ZF90eXBlX25vZGUsIGFycmF5MSksCiAJCQkJIHNpemUyKTsKLSAgICAgIGdmY19jb252X2Rl c2NyaXB0b3JfZGF0YV9zZXQgKCZyZWFsbG9jX2Jsb2NrLAotCQkJCSAgICBkZXNjLCB0bXAp OworICAgICAgaWYgKGZsYWdfb3Blbm1wX2FsbG9jYXRvcnMpCisJeworCSAgdHJlZSBjb25k LCBvbXBfdG1wOworCSAgY29uZCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24s IEVRX0VYUFIsIGJvb2xlYW5fdHlwZV9ub2RlLAorCQkJCSAgZ2ZjX2NvbnZfZGVzY3JpcHRv cl92ZXJzaW9uIChkZXNjKSwKKwkJCQkgIGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9u b2RlLCAxKSk7CisJICBvbXBfdG1wID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9J Tl9HT01QX1JFQUxMT0MpOworCSAgb21wX3RtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlu cHV0X2xvY2F0aW9uLCBvbXBfdG1wLCA0LAorCQkJCSBmb2xkX2NvbnZlcnQgKHB2b2lkX3R5 cGVfbm9kZSwgYXJyYXkxKSwgc2l6ZTIsCisJCQkJIGJ1aWxkX3plcm9fY3N0IChwdHJfdHlw ZV9ub2RlKSwKKwkJCQkgYnVpbGRfemVyb19jc3QgKHB0cl90eXBlX25vZGUpKTsKKwkgIHRt cCA9IGJ1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsIFRSRUVfVFlQRSAo dG1wKSwgY29uZCwKKwkJCSAgICBvbXBfdG1wLCB0bXApOworCX0KKworICAgICAgZ2ZjX2Nv bnZfZGVzY3JpcHRvcl9kYXRhX3NldCAoJnJlYWxsb2NfYmxvY2ssIGRlc2MsIHRtcCk7CiAg ICAgfQogICBlbHNlCiAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtYXJy YXkuaCBiL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmgKaW5kZXggNTQwODc1NTEzOGUuLjZj ZGNjOWEzZTc1IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5oCisrKyBi L2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmgKQEAgLTIxLDcgKzIxLDggQEAgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIC8qIEdlbmVyYXRl IGNvZGUgdG8gaW5pdGlhbGl6ZSBhbmQgYWxsb2NhdGUgYW4gYXJyYXkuICBTdGF0ZW1lbnRz IGFyZSBhZGRlZCB0bwogICAgc2UsIHdoaWNoIHNob3VsZCBjb250YWluIGFuIGV4cHJlc3Np b24gZm9yIHRoZSBhcnJheSBkZXNjcmlwdG9yLiAgKi8KIGJvb2wgZ2ZjX2FycmF5X2FsbG9j YXRlIChnZmNfc2UgKiwgZ2ZjX2V4cHIgKiwgdHJlZSwgdHJlZSwgdHJlZSwgdHJlZSwKLQkJ CSB0cmVlLCB0cmVlICosIGdmY19leHByICosIHRyZWUsIGJvb2wpOworCQkJIHRyZWUsIHRy ZWUgKiwgZ2ZjX2V4cHIgKiwgdHJlZSwgYm9vbCwKKwkJCSBnZmNfb21wX25hbWVsaXN0ICop OwogCiAvKiBBbGxvdyB0aGUgYm91bmRzIG9mIGEgbG9vcCB0byBiZSBzZXQgZnJvbSBhIGNh bGxlZSdzIGFycmF5IHNwZWMuICAqLwogdm9pZCBnZmNfc2V0X2xvb3BfYm91bmRzX2Zyb21f YXJyYXlfc3BlYyAoZ2ZjX2ludGVyZmFjZV9tYXBwaW5nICosCkBAIC0xNzcsNiArMTc4LDcg QEAgdHJlZSBnZmNfY29udl9kZXNjcmlwdG9yX3NwYW5fZ2V0ICh0cmVlKTsKIHRyZWUgZ2Zj X2NvbnZfZGVzY3JpcHRvcl9kdHlwZSAodHJlZSk7CiB0cmVlIGdmY19jb252X2Rlc2NyaXB0 b3JfcmFuayAodHJlZSk7CiB0cmVlIGdmY19jb252X2Rlc2NyaXB0b3JfZWxlbV9sZW4gKHRy ZWUpOwordHJlZSBnZmNfY29udl9kZXNjcmlwdG9yX3ZlcnNpb24gKHRyZWUpOwogdHJlZSBn ZmNfY29udl9kZXNjcmlwdG9yX2F0dHJpYnV0ZSAodHJlZSk7CiB0cmVlIGdmY19jb252X2Rl c2NyaXB0b3JfdHlwZSAodHJlZSk7CiB0cmVlIGdmY19nZXRfZGVzY3JpcHRvcl9kaW1lbnNp b24gKHRyZWUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYyBiL2dj Yy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKaW5kZXggYjg2Y2ZlYzdkNDkuLmNmODQ4NDA2YTA1 IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCisrKyBiL2djYy9mb3J0 cmFuL3RyYW5zLWRlY2wuY2MKQEAgLTQzNTAsNyArNDM1MCw3IEBAIGdmY19pbml0X2RlZmF1 bHRfZHQgKGdmY19zeW1ib2wgKiBzeW0sIHN0bXRibG9ja190ICogYmxvY2ssIGJvb2wgZGVh bGxvYykKIAogCiAvKiBJbml0aWFsaXplIElOVEVOVChPVVQpIGRlcml2ZWQgdHlwZSBkdW1t aWVzLiAgQXMgd2VsbCBhcyBnaXZpbmcKLSAgIHRoZW0gdGhlaXIgZGVmYXVsdCBpbml0aWFs aXplciwgaWYgdGhleSBkbyBub3QgaGF2ZSBhbGxvY2F0YWJsZQorICAgdGhlbSB0aGVpciBk ZWZhdWx0IGluaXRpYWxpemVyLCBpZiB0aGV5IGhhdmUgYWxsb2NhdGFibGUKICAgIGNvbXBv bmVudHMsIHRoZXkgaGF2ZSB0aGVpciBhbGxvY2F0YWJsZSBjb21wb25lbnRzIGRlYWxsb2Nh dGVkLiAgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5z LWV4cHIuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1leHByLmNjCmluZGV4IDUwYzQ2MDRhMDI1 Li45YmE4ZDE2NDUxOSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jYwor KysgYi9nY2MvZm9ydHJhbi90cmFucy1leHByLmNjCkBAIC03MTUwLDggKzcxNTAsNiBAQCBn ZmNfY29udl9wcm9jZWR1cmVfY2FsbCAoZ2ZjX3NlICogc2UsIGdmY19zeW1ib2wgKiBzeW0s CiAJCSAgaWYgIChUUkVFX1RZUEUodG1wKSAhPSBwdm9pZF90eXBlX25vZGUpCiAJCSAgICB0 bXAgPSBidWlsZF9mb2xkX2luZGlyZWN0X3JlZl9sb2MgKGlucHV0X2xvY2F0aW9uLAogCQkJ CQkJICAgICAgIHBhcm1zZS5leHByKTsKLQkJICBpZiAoR0ZDX0RFU0NSSVBUT1JfVFlQRV9Q IChUUkVFX1RZUEUgKHRtcCkpKQotCQkgICAgdG1wID0gZ2ZjX2NvbnZfZGVzY3JpcHRvcl9k YXRhX2dldCAodG1wKTsKIAkJICB0bXAgPSBnZmNfZGVhbGxvY2F0ZV93aXRoX3N0YXR1cyAo dG1wLCBOVUxMX1RSRUUsIE5VTExfVFJFRSwKIAkJCQkJCSAgICBOVUxMX1RSRUUsIE5VTExf VFJFRSwgdHJ1ZSwKIAkJCQkJCSAgICBlLApAQCAtMTE3MDEsOCArMTE2OTksMzAgQEAgYWxs b2Nfc2NhbGFyX2FsbG9jYXRhYmxlX2Zvcl9hc3NpZ25tZW50IChzdG10YmxvY2tfdCAqYmxv Y2ssCiAJCQkJIGJ1aWx0aW5fZGVjbF9leHBsaWNpdCAoQlVJTFRfSU5fUkVBTExPQyksCiAJ CQkJIDIsIGZvbGRfY29udmVydCAocHZvaWRfdHlwZV9ub2RlLCBsc2UuZXhwciksCiAJCQkJ IHNpemVfaW5fYnl0ZXMpOworICAgICAgdHJlZSBvbXBfY29uZCA9IE5VTExfVFJFRTsKKyAg ICAgIGlmIChmbGFnX29wZW5tcF9hbGxvY2F0b3JzKQorCXsKKwkgIHRyZWUgb21wX3RtcDsK KwkgIG9tcF9jb25kID0gZ2ZjX29tcF9jYWxsX2lzX2FsbG9jIChsc2UuZXhwcik7CisJICBv bXBfY29uZCA9IGdmY19ldmFsdWF0ZV9ub3cgKG9tcF9jb25kLCBibG9jayk7CisKKwkgIG9t cF90bXAgPSBidWlsdGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfUkVBTExPQyk7 CisJICBvbXBfdG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sIG9t cF90bXAsIDQsCisJCQkJCSBmb2xkX2NvbnZlcnQgKHB2b2lkX3R5cGVfbm9kZSwKKwkJCQkJ CSAgICAgICBsc2UuZXhwciksIHNpemVfaW5fYnl0ZXMsCisJCQkJCSBidWlsZF96ZXJvX2Nz dCAocHRyX3R5cGVfbm9kZSksCisJCQkJCSBidWlsZF96ZXJvX2NzdCAocHRyX3R5cGVfbm9k ZSkpOworCSAgdG1wID0gYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRfRVhQUiwg VFJFRV9UWVBFICh0bXApLAorCQkJICAgIG9tcF9jb25kLCBvbXBfdG1wLCB0bXApOworCX0K ICAgICAgIHRtcCA9IGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChsc2UuZXhwciksIHRtcCk7 CiAgICAgICBnZmNfYWRkX21vZGlmeSAoYmxvY2ssIGxzZS5leHByLCB0bXApOworICAgICAg aWYgKG9tcF9jb25kKQorCWdmY19hZGRfZXhwcl90b19ibG9jayAoYmxvY2ssCisJCQkgICAg ICAgYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRfRVhQUiwKKwkJCSAgICAgICB2 b2lkX3R5cGVfbm9kZSwgb21wX2NvbmQsCisJCQkgICAgICAgZ2ZjX29tcF9jYWxsX2FkZF9h bGxvYyAobHNlLmV4cHIpLAorCQkJICAgICAgIGJ1aWxkX2VtcHR5X3N0bXQgKGlucHV0X2xv Y2F0aW9uKSkpOwogICAgICAgdG1wID0gYnVpbGQxX3YgKExBQkVMX0VYUFIsIGp1bXBfbGFi ZWwyKTsKICAgICAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoYmxvY2ssIHRtcCk7CiAKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jYyBiL2djYy9mb3J0cmFu L3RyYW5zLWludHJpbnNpYy5jYwppbmRleCAyODkzMDkxOTBhNS4uMDVlMTExYzBmY2MgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jYworKysgYi9nY2MvZm9y dHJhbi90cmFucy1pbnRyaW5zaWMuY2MKQEAgLTEyODE5LDkgKzEyODE5LDggQEAgY29udl9p bnRyaW5zaWNfbW92ZV9hbGxvYyAoZ2ZjX2NvZGUgKmNvZGUpCiAJICBnZmNfYWRkX2V4cHJf dG9fYmxvY2sgKCZibG9jaywgdG1wKTsKIAl9CiAKLSAgICAgIHRtcCA9IGdmY19jb252X2Rl c2NyaXB0b3JfZGF0YV9nZXQgKHRvX3NlLmV4cHIpOwotICAgICAgdG1wID0gZ2ZjX2RlYWxs b2NhdGVfd2l0aF9zdGF0dXMgKHRtcCwgTlVMTF9UUkVFLCBOVUxMX1RSRUUsIE5VTExfVFJF RSwKLQkJCQkJTlVMTF9UUkVFLCB0cnVlLCB0b19leHByLAorICAgICAgdG1wID0gZ2ZjX2Rl YWxsb2NhdGVfd2l0aF9zdGF0dXMgKHRvX3NlLmV4cHIsIE5VTExfVFJFRSwgTlVMTF9UUkVF LAorCQkJCQlOVUxMX1RSRUUsIE5VTExfVFJFRSwgdHJ1ZSwgdG9fZXhwciwKIAkJCQkJR0ZD X0NBRl9DT0FSUkFZX05PQ09BUlJBWSk7CiAgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sg KCZibG9jaywgdG1wKTsKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1v cGVubXAuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKaW5kZXggODJiYmM0MWIz ODguLjllMTY2Yzk0ZjhlIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAu Y2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC00ODQxLDYgKzQ4NDEs MzAgQEAgZ2ZjX3RyYW5zX29hY2Nfd2FpdF9kaXJlY3RpdmUgKGdmY19jb2RlICpjb2RlKQog c3RhdGljIHRyZWUgZ2ZjX3RyYW5zX29tcF9zZWN0aW9ucyAoZ2ZjX2NvZGUgKiwgZ2ZjX29t cF9jbGF1c2VzICopOwogc3RhdGljIHRyZWUgZ2ZjX3RyYW5zX29tcF93b3Jrc2hhcmUgKGdm Y19jb2RlICosIGdmY19vbXBfY2xhdXNlcyAqKTsKIAorc3RhdGljIHRyZWUKK2dmY190cmFu c19vbXBfYWxsb2NhdG9ycyAoZ2ZjX2NvZGUgKmNvZGUpCit7CisgIHN0YXRpYyBib29sIHdh cm5lZCA9IGZhbHNlOworICBnZmNfb21wX25hbWVsaXN0ICpvbXBfYWxsb2NhdGUKKyAgICA9 IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdOworICBp ZiAoIWZsYWdfb3Blbm1wX2FsbG9jYXRvcnMgJiYgIXdhcm5lZCkKKyAgICB7CisgICAgICBv bXBfYWxsb2NhdGUgPSBOVUxMOworICAgICAgZ2ZjX2Vycm9yICgiJTwhJE9NUCAlcyU+IGF0 ICVMIHJlcXVpcmVzICU8LWZvcGVubXAtYWxsb2NhdG9ycyU+IiwKKwkJIGNvZGUtPm9wID09 IEVYRUNfT01QX0FMTE9DQVRFID8gIkFMTE9DQVRFIiA6ICJBTExPQ0FUT1JTIiwKKwkJICZj b2RlLT5sb2MpOworICAgICAgd2FybmluZyAoMCwgIkFsbCBmaWxlcyB0aGF0IG1pZ2h0IGRl YWxsb2NhdGUgc3VjaCBhIHZhcmlhYmxlIG11c3QgYmUgIgorCQkgICJjb21waWxlZCB3aXRo ICU8LWZvcGVubXAtYWxsb2NhdG9ycyU+Iik7CisgICAgICBpbmZvcm0gKFVOS05PV05fTE9D QVRJT04sCisJICAgICAgIlRoaXMgaW5jbHVkZXMgZXhwbGljaXQgREVBTExPQ0FURSwgcmVh bGxvY2F0aW9uIG9uIGludHJpbnNpYyAiCisJICAgICAgImFzc2lnbm1lbnQsIElOVEVOVChP VVQpIGZvciBhbGxvY2F0YWJsZSBkdW1teSBhcmd1bWVudHMsIGFuZCAiCisJICAgICAgInJl YWxsb2NhdGlvbiBvZiBhbGxvY2F0YWJsZSBjb21wb25lbnRzIGFsbG9jYXRlZCB3aXRoIGFu ICIKKwkgICAgICAiT3Blbk1QIGFsbG9jYXRvciIpOworICAgICAgd2FybmVkID0gdHJ1ZTsK KyAgICB9CisgIHJldHVybiBnZmNfdHJhbnNfYWxsb2NhdGUgKGNvZGUtPmJsb2NrLT5uZXh0 LCBvbXBfYWxsb2NhdGUpOworfQorCiBzdGF0aWMgdHJlZQogZ2ZjX3RyYW5zX29tcF9hc3N1 bWUgKGdmY19jb2RlICpjb2RlKQogewpAQCAtNzk5Miw5ICs4MDE2LDcgQEAgZ2ZjX3RyYW5z X29tcF9kaXJlY3RpdmUgKGdmY19jb2RlICpjb2RlKQogICAgIHsKICAgICBjYXNlIEVYRUNf T01QX0FMTE9DQVRFOgogICAgIGNhc2UgRVhFQ19PTVBfQUxMT0NBVE9SUzoKLSAgICAgIHNv cnJ5ICgiJTwhJE9NUCAlcyU+IG5vdCB5ZXQgc3VwcG9ydGVkIiwKLQkgICAgIGNvZGUtPm9w ID09IEVYRUNfT01QX0FMTE9DQVRFID8gIkFMTE9DQVRFIiA6ICJBTExPQ0FUT1JTIik7Ci0g ICAgICByZXR1cm4gTlVMTF9UUkVFOworICAgICAgcmV0dXJuIGdmY190cmFuc19vbXBfYWxs b2NhdG9ycyAoY29kZSk7CiAgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgICByZXR1 cm4gZ2ZjX3RyYW5zX29tcF9hc3N1bWUgKGNvZGUpOwogICAgIGNhc2UgRVhFQ19PTVBfQVRP TUlDOgpAQCAtODMyOSwzICs4MzUxLDM2IEBAIGdmY190cmFuc19vbXBfZGVjbGFyZV92YXJp YW50IChnZmNfbmFtZXNwYWNlICpucykKIAl9CiAgICAgfQogfQorCisvKiBBZGQgcHRyIGZv ciB0cmFja2luZyBhcyBiZWluZyBhbGxvY2F0ZWQgYnkgR09NUF9hbGxvYy4gKi8KKwordHJl ZQorZ2ZjX29tcF9jYWxsX2FkZF9hbGxvYyAodHJlZSBwdHIpCit7CisgIHN0YXRpYyB0cmVl IGZuID0gTlVMTF9UUkVFOworICBpZiAoZm4gPT0gTlVMTF9UUkVFKQorICAgIHsKKyAgICAg IGZuID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgcHRyX3R5 cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgICAgIGZuID0gYnVpbGRfZm5fZGVjbCAoIkdPTVBf YWRkX2FsbG9jIiwgZm4pOworLyogRklYTUU6IGF0dHJpYnV0ZXMuICAqLworICAgIH0KKyAg cmV0dXJuIGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCBmbiwgMSwgcHRy KTsKK30KKworLyogR2VuZXJhdGVkIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGl0IHdh cyB0cmFja2VkIHZpYSBHT01QX2FkZF9hbGxvYyBhbmQKKyAgIHJlbW92ZXMgaXQgZnJvbSB0 aGUgdHJhY2tpbmcuICBBcyBjYWxsZWQganVzdCBiZWZvcmUgR09NUF9mcmVlIG9yIG9tcF9y ZWFsbG9jCisgICB0aGUgcG9pbnRlciBpcyBvciBtaWdodCBiZWNvbWUgaW52YWxpZCwgdGh1 cywgaXQgaXMgYWx3YXlzIHJlbW92ZWQuICovCisKK3RyZWUKK2dmY19vbXBfY2FsbF9pc19h bGxvYyAodHJlZSBwdHIpCit7CisgIHN0YXRpYyB0cmVlIGZuID0gTlVMTF9UUkVFOworICBp ZiAoZm4gPT0gTlVMTF9UUkVFKQorICAgIHsKKyAgICAgIGZuID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChib29sZWFuX3R5cGVfbm9kZSwgcHRyX3R5cGVfbm9kZSwKKwkJCQkgICAg IE5VTExfVFJFRSk7CisgICAgICBmbiA9IGJ1aWxkX2ZuX2RlY2wgKCJHT01QX2lzX2FsbG9j IiwgZm4pOworLyogRklYTUU6IGF0dHJpYnV0ZXMuICAqLworICAgIH0KKyAgcmV0dXJuIGJ1 aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCBmbiwgMSwgcHRyKTsKK30KZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuY2MgYi9nY2MvZm9ydHJhbi90cmFu cy1zdG10LmNjCmluZGV4IDUwYjcxZTY3MjM0Li41NTMwZTg5M2E2MiAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10 LmNjCkBAIC02MjI4LDcgKzYyMjgsNyBAQCBhbGxvY2F0ZV9nZXRfaW5pdGlhbGl6ZXIgKGdm Y19jb2RlICogY29kZSwgZ2ZjX2V4cHIgKiBleHByKQogLyogVHJhbnNsYXRlIHRoZSBBTExP Q0FURSBzdGF0ZW1lbnQuICAqLwogCiB0cmVlCi1nZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19j b2RlICogY29kZSkKK2dmY190cmFuc19hbGxvY2F0ZSAoZ2ZjX2NvZGUgKiBjb2RlLCBnZmNf b21wX25hbWVsaXN0ICpvbXBfYWxsb2NhdGUpCiB7CiAgIGdmY19hbGxvYyAqYWw7CiAgIGdm Y19leHByICpleHByLCAqZTNyaHMgPSBOVUxMLCAqaW5pdF9leHByOwpAQCAtNjc5MCwxMSAr Njc5MCwzOCBAQCBnZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19jb2RlICogY29kZSkKICAgICAg IGVsc2UKIAl0bXAgPSBleHByM19lc2l6ZTsKIAorICAgICAgZ2ZjX29tcF9uYW1lbGlzdCAq b21wX2FsbG9jX2l0ZW0gPSBOVUxMOworICAgICAgaWYgKG9tcF9hbGxvY2F0ZSkKKwl7CisJ ICBnZmNfb21wX25hbWVsaXN0ICpuID0gTlVMTDsKKwkgIGdmY19vbXBfbmFtZWxpc3QgKm5f bnVsbCA9IE5VTEw7CisJICBmb3IgKG4gPSBvbXBfYWxsb2NhdGU7IG47IG4gPSBuLT5uZXh0 KQorCSAgICB7CisJICAgICAgaWYgKG4tPnN5bSA9PSBOVUxMKQorCQl7CisJCSAgbl9udWxs ID0gbjsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIGlmIChleHByLT5leHByX3R5cGUg PT0gRVhQUl9WQVJJQUJMRQorCQkgICYmIGV4cHItPnN5bXRyZWUtPm4uc3ltID09IG4tPnN5 bSkKKwkJeworCQkgIGdmY19yZWYgKnJlZjsKKwkJICBmb3IgKHJlZiA9IGV4cHItPnJlZjsg cmVmOyByZWYgPSByZWYtPm5leHQpCisJCSAgICBpZiAocmVmLT50eXBlID09IFJFRl9DT01Q T05FTlQpCisJCSAgICAgIGJyZWFrOworCQkgIGlmIChyZWYgPT0gTlVMTCkKKwkJICAgIGJy ZWFrOworCQl9CisJICAgIH0KKwkgIG9tcF9hbGxvY19pdGVtID0gbiA/IG4gOiBuX251bGw7 CisKKwl9CisKICAgICAgIGlmICghZ2ZjX2FycmF5X2FsbG9jYXRlICgmc2UsIGV4cHIsIHN0 YXQsIGVycm1zZywgZXJybGVuLAogCQkJICAgICAgIGxhYmVsX2ZpbmlzaCwgdG1wLCAmbmVs ZW1zLAogCQkJICAgICAgIGUzcmhzID8gZTNyaHMgOiBjb2RlLT5leHByMywKIAkJCSAgICAg ICBlM19pcyA9PSBFM19ERVNDID8gZXhwcjMgOiBOVUxMX1RSRUUsCi0JCQkgICAgICAgZTNf aGFzX25vZGVzY3JpcHRvcikpCisJCQkgICAgICAgZTNfaGFzX25vZGVzY3JpcHRvciwgb21w X2FsbG9jX2l0ZW0pKQogCXsKIAkgIC8qIEEgc2NhbGFyIG9yIGRlcml2ZWQgdHlwZS4gIEZp cnN0IGNvbXB1dGUgdGhlIHNpemUgdG8KIAkgICAgIGFsbG9jYXRlLgpAQCAtNjg3NCwxMCAr NjkwMSw1OSBAQCBnZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19jb2RlICogY29kZSkKIAkgICAg LyogSGFuZGxlIHNpemUgY29tcHV0YXRpb24gb2YgdGhlIHR5cGUgZGVjbGFyZWQgdG8gYWxs b2MuICAqLwogCSAgICBtZW1zeiA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKFRSRUVf VFlQRSAoc2UuZXhwcikpKTsKIAorCSAgYm9vbCB1c2VfY29hcnJheV9hbGxvYworCSAgICA9 IChmbGFnX2NvYXJyYXkgPT0gR0ZDX0ZDT0FSUkFZX0xJQgorCSAgICAgICAmJiAoY2FmX2F0 dHIgPSBnZmNfY2FmX2F0dHIgKGV4cHIsIHRydWUsICZjYWZfcmVmc19jb21wKSkKKwkJCQku Y29kaW1lbnNpb24pOworCSAgdHJlZSBvbXBfY29uZCA9IE5VTExfVFJFRTsKKwkgIHRyZWUg b21wX2FsdF9hbGxvYyA9IE5VTExfVFJFRTsKKwkgIHRyZWUgc3VjY19hZGRfZXhwciA9IE5V TExfVFJFRTsKKwkgIGlmICghdXNlX2NvYXJyYXlfYWxsb2MgJiYgb21wX2FsbG9jX2l0ZW0p CisJICAgIHsKKwkgICAgICB0cmVlIGFsaWduLCBhbGxvYywgc3o7CisJICAgICAgZ2ZjX3Nl IHNlMjsKKworCSAgICAgIG9tcF9jb25kID0gYm9vbGVhbl90cnVlX25vZGU7CisJICAgICAg aWYgKG9tcF9hbGxvY19pdGVtLT51Mi5hbGxvY2F0b3IpCisJCXsKKwkJICBnZmNfaW5pdF9z ZSAoJnNlMiwgTlVMTCk7CisJCSAgZ2ZjX2NvbnZfZXhwciAoJnNlMiwgb21wX2FsbG9jX2l0 ZW0tPnUyLmFsbG9jYXRvcik7CisJCSAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJnNlLnBy ZSwgJnNlMi5wcmUpOworCQkgIGFsbG9jID0gZ2ZjX2V2YWx1YXRlX25vdyAoc2UyLmV4cHIs ICZzZS5wcmUpOworCQkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUsICZzZTIu cG9zdCk7CisJCX0KKwkgICAgICBlbHNlCisJCWFsbG9jID0gYnVpbGRfemVyb19jc3QgKHB0 cl90eXBlX25vZGUpOworCSAgICAgIHRtcCA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFIChzZS5l eHByKSk7CisJICAgICAgaWYgKHRtcCA9PSB2b2lkX3R5cGVfbm9kZSkKKwkJdG1wID0gZ2Zj X3R5cGVub2RlX2Zvcl9zcGVjICgmZXhwci0+dHMsIDApOworCSAgICAgIGlmIChvbXBfYWxs b2NfaXRlbS0+dS5hbGlnbikKKwkJeworCQkgIGdmY19pbml0X3NlICgmc2UyLCBOVUxMKTsK KwkJICBnZmNfY29udl9leHByICgmc2UyLCBvbXBfYWxsb2NfaXRlbS0+dS5hbGlnbik7CisJ CSAgZ2NjX2Fzc2VydCAoQ09OU1RBTlRfQ0xBU1NfUCAoc2UyLmV4cHIpCisJCQkgICAgICAm JiBzZTIucHJlLmhlYWQgPT0gTlVMTAorCQkJICAgICAgJiYgc2UyLnBvc3QuaGVhZCA9PSBO VUxMKTsKKwkJICBhbGlnbiA9IGJ1aWxkX2ludF9jc3QgKHNpemVfdHlwZV9ub2RlLAorCQkJ CQkgTUFYICh0cmVlX3RvX3Vod2kgKHNlMi5leHByKSwKKwkJCQkJIFRZUEVfQUxJR05fVU5J VCAodG1wKSkpOworCQl9CisJICAgICAgZWxzZQorCQlhbGlnbiA9IGJ1aWxkX2ludF9jc3Qg KHNpemVfdHlwZV9ub2RlLCBUWVBFX0FMSUdOX1VOSVQgKHRtcCkpOworCSAgICAgIHN6ID0g Zm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTUFYX0VYUFIsIHNpemVfdHlwZV9u b2RlLAorCQkJICAgIGZvbGRfY29udmVydCAoc2l6ZV90eXBlX25vZGUsIG1lbXN6KSwKKwkJ CSAgICBidWlsZF9pbnRfY3N0IChzaXplX3R5cGVfbm9kZSwgMSkpOworCSAgICAgIG9tcF9h bHRfYWxsb2MgPSBidWlsdGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfQUxMT0Mp OworCSAgICAgIERFQ0xfQVRUUklCVVRFUyAob21wX2FsdF9hbGxvYykKKwkJPSB0cmVlX2Nv bnMgKGdldF9pZGVudGlmaWVyICgib21wIGFsbG9jYXRvciIpLAorCQkJICAgICBidWlsZF90 cmVlX2xpc3QgKE5VTExfVFJFRSwgYWxsb2MpLAorCQkJICAgICBERUNMX0FUVFJJQlVURVMg KG9tcF9hbHRfYWxsb2MpKTsKKwkgICAgICBvbXBfYWx0X2FsbG9jID0gYnVpbGRfY2FsbF9l eHByIChvbXBfYWx0X2FsbG9jLCAzLCBhbGlnbiwgc3osIGFsbG9jKTsKKwkgICAgICBzdWNj X2FkZF9leHByID0gZ2ZjX29tcF9jYWxsX2FkZF9hbGxvYyAoc2UuZXhwcik7CisJICAgIH0K KwogCSAgLyogU3RvcmUgdGhlIGNhZi1hdHRyaWJ1dGVzIGZvciBsYXR0ZXIgdXNlLiAgKi8K LQkgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZDX0ZDT0FSUkFZX0xJQgotCSAgICAgICYmIChj YWZfYXR0ciA9IGdmY19jYWZfYXR0ciAoZXhwciwgdHJ1ZSwgJmNhZl9yZWZzX2NvbXApKQot CQkgLmNvZGltZW5zaW9uKQorCSAgaWYgKHVzZV9jb2FycmF5X2FsbG9jKQogCSAgICB7CiAJ ICAgICAgLyogU2NhbGFyIGFsbG9jYXRhYmxlIGNvbXBvbmVudHMgaW4gY29hcnJheSdlZCBk ZXJpdmVkIHR5cGVzIG1ha2UKIAkJIGl0IGhlcmUgYW5kIGFyZSB0cmVhdGVkIG5vdy4gICov CkBAIC02OTA0LDkgKzY5ODAsMTEgQEAgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAq IGNvZGUpCiAJICBlbHNlIGlmIChnZmNfZXhwcl9hdHRyIChleHByKS5hbGxvY2F0YWJsZSkK IAkgICAgZ2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlICgmc2UucHJlLCBzZS5leHByLCBtZW1z eiwKIAkJCQkgICAgICBOVUxMX1RSRUUsIHN0YXQsIGVycm1zZywgZXJybGVuLAotCQkJCSAg ICAgIGxhYmVsX2ZpbmlzaCwgZXhwciwgMCk7CisJCQkJICAgICAgbGFiZWxfZmluaXNoLCBl eHByLCAwLAorCQkJCSAgICAgIG9tcF9jb25kLCBvbXBfYWx0X2FsbG9jLCBzdWNjX2FkZF9l eHByKTsKIAkgIGVsc2UKLQkgICAgZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAoJnNlLnBy ZSwgc2UuZXhwciwgbWVtc3osIHN0YXQpOworCSAgICBnZmNfYWxsb2NhdGVfdXNpbmdfbWFs bG9jICgmc2UucHJlLCBzZS5leHByLCBtZW1zeiwgc3RhdCwKKwkJCQkgICAgICBvbXBfY29u ZCwgb21wX2FsdF9hbGxvYywgc3VjY19hZGRfZXhwcik7CiAJfQogICAgICAgZWxzZQogCXsK ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaCBiL2djYy9mb3J0cmFuL3Ry YW5zLXN0bXQuaAppbmRleCAxMDFhMDU0MGVmNC4uMjcwZWJjZjk5MTUgMTAwNjQ0Ci0tLSBh L2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaAorKysgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10 LmgKQEAgLTY0LDcgKzY0LDcgQEAgdHJlZSBnZmNfdHJhbnNfY2hhbmdlX3RlYW0gKGdmY19j b2RlICopOwogdHJlZSBnZmNfdHJhbnNfZW5kX3RlYW0gKGdmY19jb2RlICopOwogdHJlZSBn ZmNfdHJhbnNfc3luY190ZWFtIChnZmNfY29kZSAqKTsKIHRyZWUgZ2ZjX3RyYW5zX3doZXJl IChnZmNfY29kZSAqKTsKLXRyZWUgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAqKTsK K3RyZWUgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAqLCBnZmNfb21wX25hbWVsaXN0 ICopOwogdHJlZSBnZmNfdHJhbnNfZGVhbGxvY2F0ZSAoZ2ZjX2NvZGUgKik7CiAKIC8qIHRy YW5zLW9wZW5tcC5jYyAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMu Y2MgYi9nY2MvZm9ydHJhbi90cmFucy10eXBlcy5jYwppbmRleCAwODRiOGMzYWUyYy4uZmZi MzdmMmExYzYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjCisrKyBi L2djYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjCkBAIC0xNjAxLDYgKzE2MDEsMTAgQEAgZ2Zj X2dldF9kdHlwZV9yYW5rX3R5cGUgKGludCByYW5rLCB0cmVlIGV0eXBlKQogCQkJICAgICBH RkNfRFRZUEVfRUxFTV9MRU4pOwogICBDT05TVFJVQ1RPUl9BUFBFTkRfRUxUICh2LCBmaWVs ZCwKIAkJCSAgZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKGZpZWxkKSwgc2l6ZSkpOworICBm aWVsZCA9IGdmY19hZHZhbmNlX2NoYWluIChUWVBFX0ZJRUxEUyAoZHR5cGVfdHlwZV9ub2Rl KSwKKwkJCSAgICAgR0ZDX0RUWVBFX1ZFUlNJT04pOworICBDT05TVFJVQ1RPUl9BUFBFTkRf RUxUICh2LCBmaWVsZCwKKwkJCSAgYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAoZmllbGQp KSk7CiAKICAgZmllbGQgPSBnZmNfYWR2YW5jZV9jaGFpbiAoVFlQRV9GSUVMRFMgKGR0eXBl X3R5cGVfbm9kZSksCiAJCQkgICAgIEdGQ19EVFlQRV9SQU5LKTsKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL3RyYW5zLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MKaW5kZXggZTJlMWI2 OTQwMTIuLjk2MWIwYjVhNTczIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy5jYwor KysgYi9nY2MvZm9ydHJhbi90cmFucy5jYwpAQCAtNzk2LDcgKzc5NiwxMCBAQCBnZmNfY2Fs bF9tYWxsb2MgKHN0bXRibG9ja190ICogYmxvY2ssIHRyZWUgdHlwZSwgdHJlZSBzaXplKQog ICAgICAgaWYgKHN0YXQgcmVxdWVzdGVkKQogCXN0YXQgPSAwOwogCisgICAgICAvLyBpZiBj b25kID09IE5VTExfTlVMTDoKICAgICAgIG5ld21lbSA9IG1hbGxvYyAoTUFYIChzaXplLCAx KSk7CisgICAgICAvLyBvdGhlcndpc2U6CisgICAgICBuZXdtZW0gPSA8Y29uZD4gPyA8YWx0 X2FsbG9jPiA6IG1hbGxvYyAoTUFYIChzaXplLCAxKSkKICAgICAgIGlmIChuZXdtZW0gPT0g TlVMTCkKICAgICAgIHsKICAgICAgICAgaWYgKHN0YXQpCkBAIC04MDgsNyArODExLDggQEAg Z2ZjX2NhbGxfbWFsbG9jIChzdG10YmxvY2tfdCAqIGJsb2NrLCB0cmVlIHR5cGUsIHRyZWUg c2l6ZSkKICAgICB9ICAqLwogdm9pZAogZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAoc3Rt dGJsb2NrX3QgKiBibG9jaywgdHJlZSBwb2ludGVyLAotCQkJICAgdHJlZSBzaXplLCB0cmVl IHN0YXR1cykKKwkJCSAgIHRyZWUgc2l6ZSwgdHJlZSBzdGF0dXMsIHRyZWUgY29uZCwgdHJl ZSBhbHRfYWxsb2MsCisJCQkgICB0cmVlIGV4dHJhX3N1Y2Nlc3NfZXhwcikKIHsKICAgdHJl ZSB0bXAsIGVycm9yX2NvbmQ7CiAgIHN0bXRibG9ja190IG9uX2Vycm9yOwpAQCAtODIyLDEz ICs4MjYsMTggQEAgZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAoc3RtdGJsb2NrX3QgKiBi bG9jaywgdHJlZSBwb2ludGVyLAogCiAgIC8qIFRoZSBhbGxvY2F0aW9uIGl0c2VsZi4gICov CiAgIHNpemUgPSBmb2xkX2NvbnZlcnQgKHNpemVfdHlwZV9ub2RlLCBzaXplKTsKLSAgZ2Zj X2FkZF9tb2RpZnkgKGJsb2NrLCBwb2ludGVyLAotCSAgZm9sZF9jb252ZXJ0IChUUkVFX1RZ UEUgKHBvaW50ZXIpLAotCQlidWlsZF9jYWxsX2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwK LQkJCSAgICAgYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9NQUxMT0MpLCAxLAot CQkJICAgICBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLAotCQkJCSAgICAgIE1B WF9FWFBSLCBzaXplX3R5cGVfbm9kZSwgc2l6ZSwKLQkJCQkgICAgICBidWlsZF9pbnRfY3N0 IChzaXplX3R5cGVfbm9kZSwgMSkpKSkpOworICB0bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlu cHV0X2xvY2F0aW9uLCBNQVhfRVhQUiwgc2l6ZV90eXBlX25vZGUsCisJCQkgc2l6ZSwgYnVp bGRfaW50X2NzdCAoc2l6ZV90eXBlX25vZGUsIDEpKTsKKworICB0bXAgPSBidWlsZF9jYWxs X2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwKKwkJCSAgICAgYnVpbHRpbl9kZWNsX2V4cGxp Y2l0IChCVUlMVF9JTl9NQUxMT0MpLCAxLCB0bXApOworICBpZiAoY29uZCA9PSBib29sZWFu X3RydWVfbm9kZSkKKyAgICB0bXAgPSBhbHRfYWxsb2M7CisgIGVsc2UgaWYgKGNvbmQpCisg ICAgdG1wID0gYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRfRVhQUiwgVFJFRV9U WVBFICh0bXApLCBjb25kLAorCQkgICAgICBhbHRfYWxsb2MsIHRtcCk7CisKKyAgZ2ZjX2Fk ZF9tb2RpZnkgKGJsb2NrLCBwb2ludGVyLCBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAocG9p bnRlciksIHRtcCkpOwogCiAgIC8qIFdoYXQgdG8gZG8gaW4gY2FzZSBvZiBlcnJvci4gICov CiAgIGdmY19zdGFydF9ibG9jayAoJm9uX2Vycm9yKTsKQEAgLTg1Miw3ICs4NjEsOSBAQCBn ZmNfYWxsb2NhdGVfdXNpbmdfbWFsbG9jIChzdG10YmxvY2tfdCAqIGJsb2NrLCB0cmVlIHBv aW50ZXIsCiAgIHRtcCA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRf RVhQUiwgdm9pZF90eXBlX25vZGUsCiAJCQkgZ2ZjX3VubGlrZWx5IChlcnJvcl9jb25kLCBQ UkVEX0ZPUlRSQU5fRkFJTF9BTExPQyksCiAJCQkgZ2ZjX2ZpbmlzaF9ibG9jayAoJm9uX2Vy cm9yKSwKLQkJCSBidWlsZF9lbXB0eV9zdG10IChpbnB1dF9sb2NhdGlvbikpOworCQkJIGV4 dHJhX3N1Y2Nlc3NfZXhwcgorCQkJID8gZXh0cmFfc3VjY2Vzc19leHByCisJCQkgOiBidWls ZF9lbXB0eV9zdG10IChpbnB1dF9sb2NhdGlvbikpOwogCiAgIGdmY19hZGRfZXhwcl90b19i bG9jayAoYmxvY2ssIHRtcCk7CiB9CkBAIC05MzgsNyArOTQ5LDggQEAgZ2ZjX2FsbG9jYXRl X3VzaW5nX2NhZl9saWIgKHN0bXRibG9ja190ICogYmxvY2ssIHRyZWUgcG9pbnRlciwgdHJl ZSBzaXplLAogdm9pZAogZ2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlIChzdG10YmxvY2tfdCAq IGJsb2NrLCB0cmVlIG1lbSwgdHJlZSBzaXplLAogCQkJICB0cmVlIHRva2VuLCB0cmVlIHN0 YXR1cywgdHJlZSBlcnJtc2csIHRyZWUgZXJybGVuLAotCQkJICB0cmVlIGxhYmVsX2Zpbmlz aCwgZ2ZjX2V4cHIqIGV4cHIsIGludCBjb3JhbmspCisJCQkgIHRyZWUgbGFiZWxfZmluaXNo LCBnZmNfZXhwciogZXhwciwgaW50IGNvcmFuaywKKwkJCSAgdHJlZSBjb25kLCB0cmVlIGFs dF9hbGxvYywgdHJlZSBleHRyYV9zdWNjZXNzX2V4cHIpCiB7CiAgIHN0bXRibG9ja190IGFs bG9jX2Jsb2NrOwogICB0cmVlIHRtcCwgbnVsbF9tZW0sIGFsbG9jLCBlcnJvcjsKQEAgLTk2 Myw3ICs5NzUsNyBAQCBnZmNfYWxsb2NhdGVfYWxsb2NhdGFibGUgKHN0bXRibG9ja190ICog YmxvY2ssIHRyZWUgbWVtLCB0cmVlIHNpemUsCiAgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZD X0ZDT0FSUkFZX0xJQgogICAgICAgJiYgKGNvcmFuayA+IDAgfHwgY2FmX2F0dHIuY29kaW1l bnNpb24pKQogICAgIHsKLSAgICAgIHRyZWUgY29uZCwgc3ViX2NhZl90cmVlOworICAgICAg dHJlZSBjb25kMiwgc3ViX2NhZl90cmVlOwogICAgICAgZ2ZjX3NlIHNlOwogICAgICAgYm9v bCBjb21wdXRlX3NwZWNpYWxfY2FmX3R5cGVzX3NpemUgPSBmYWxzZTsKIApAQCAtMTAyNywx NiArMTAzOSwxNyBAQCBnZmNfYWxsb2NhdGVfYWxsb2NhdGFibGUgKHN0bXRibG9ja190ICog YmxvY2ssIHRyZWUgbWVtLCB0cmVlIHNpemUsCiAJewogCSAgVFJFRV9VU0VEIChsYWJlbF9m aW5pc2gpID0gMTsKIAkgIHRtcCA9IGJ1aWxkMV92IChHT1RPX0VYUFIsIGxhYmVsX2Zpbmlz aCk7Ci0JICBjb25kID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQ UiwgbG9naWNhbF90eXBlX25vZGUsCi0JCQkJICBzdGF0dXMsIGJ1aWxkX3plcm9fY3N0IChU UkVFX1RZUEUgKHN0YXR1cykpKTsKKwkgIGNvbmQyID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgTkVfRVhQUiwgbG9naWNhbF90eXBlX25vZGUsCisJCQkJICAgc3RhdHVz LCBidWlsZF96ZXJvX2NzdCAoVFJFRV9UWVBFIChzdGF0dXMpKSk7CiAJICB0bXAgPSBmb2xk X2J1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsIHZvaWRfdHlwZV9ub2Rl LAotCQkJCSBnZmNfdW5saWtlbHkgKGNvbmQsIFBSRURfRk9SVFJBTl9GQUlMX0FMTE9DKSwK KwkJCQkgZ2ZjX3VubGlrZWx5IChjb25kMiwgUFJFRF9GT1JUUkFOX0ZBSUxfQUxMT0MpLAog CQkJCSB0bXAsIGJ1aWxkX2VtcHR5X3N0bXQgKGlucHV0X2xvY2F0aW9uKSk7CiAJICBnZmNf YWRkX2V4cHJfdG9fYmxvY2sgKCZhbGxvY19ibG9jaywgdG1wKTsKIAl9CiAgICAgfQogICBl bHNlCi0gICAgZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAoJmFsbG9jX2Jsb2NrLCBtZW0s IHNpemUsIHN0YXR1cyk7CisgICAgZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyAoJmFsbG9j X2Jsb2NrLCBtZW0sIHNpemUsIHN0YXR1cywKKwkJCSAgICAgICBjb25kLCBhbHRfYWxsb2Ms IGV4dHJhX3N1Y2Nlc3NfZXhwcik7CiAKICAgYWxsb2MgPSBnZmNfZmluaXNoX2Jsb2NrICgm YWxsb2NfYmxvY2spOwogCkBAIC0xNzgxLDYgKzE3OTQsNyBAQCBnZmNfZGVhbGxvY2F0ZV93 aXRoX3N0YXR1cyAodHJlZSBwb2ludGVyLCB0cmVlIHN0YXR1cywgdHJlZSBlcnJtc2csCiAg IHRyZWUgY29uZCwgdG1wLCBlcnJvcjsKICAgdHJlZSBzdGF0dXNfdHlwZSA9IE5VTExfVFJF RTsKICAgdHJlZSB0b2tlbiA9IE5VTExfVFJFRTsKKyAgdHJlZSBkZXNjciA9IE5VTExfVFJF RTsKICAgZ2ZjX2NvYXJyYXlfZGVyZWd0eXBlIGNhZl9kZXJlZ190eXBlID0gR0ZDX0NBRl9D T0FSUkFZX0RFUkVHSVNURVI7CiAKICAgaWYgKGNvYXJyYXlfZGVhbGxvY19tb2RlID49IEdG Q19DQUZfQ09BUlJBWV9BTkFMWVpFKQpAQCAtMTc4OCw3ICsxODAyLDExIEBAIGdmY19kZWFs bG9jYXRlX3dpdGhfc3RhdHVzICh0cmVlIHBvaW50ZXIsIHRyZWUgc3RhdHVzLCB0cmVlIGVy cm1zZywKICAgICAgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZDX0ZDT0FSUkFZX0xJQikKIAl7 CiAJICBpZiAoY2FmX3Rva2VuKQotCSAgICB0b2tlbiA9IGNhZl90b2tlbjsKKwkgICAgewor CSAgICAgIHRva2VuID0gY2FmX3Rva2VuOworCSAgICAgIGlmIChHRkNfREVTQ1JJUFRPUl9U WVBFX1AgKFRSRUVfVFlQRSAocG9pbnRlcikpKQorCQlwb2ludGVyID0gZ2ZjX2NvbnZfZGVz Y3JpcHRvcl9kYXRhX2dldCAocG9pbnRlcik7CisJICAgIH0KIAkgIGVsc2UKIAkgICAgewog CSAgICAgIHRyZWUgY2FmX3R5cGUsIGNhZl9kZWNsID0gcG9pbnRlcjsKQEAgLTE4MjQsNyAr MTg0MiwxMCBAQCBnZmNfZGVhbGxvY2F0ZV93aXRoX3N0YXR1cyAodHJlZSBwb2ludGVyLCB0 cmVlIHN0YXR1cywgdHJlZSBlcnJtc2csCiAJcG9pbnRlciA9IGdmY19jb252X2Rlc2NyaXB0 b3JfZGF0YV9nZXQgKHBvaW50ZXIpOwogICAgIH0KICAgZWxzZSBpZiAoR0ZDX0RFU0NSSVBU T1JfVFlQRV9QIChUUkVFX1RZUEUgKHBvaW50ZXIpKSkKLSAgICBwb2ludGVyID0gZ2ZjX2Nv bnZfZGVzY3JpcHRvcl9kYXRhX2dldCAocG9pbnRlcik7CisgICAgeworICAgICAgZGVzY3Ig PSBwb2ludGVyOworICAgICAgcG9pbnRlciA9IGdmY19jb252X2Rlc2NyaXB0b3JfZGF0YV9n ZXQgKHBvaW50ZXIpOworICAgIH0KIAogICBjb25kID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgRVFfRVhQUiwgbG9naWNhbF90eXBlX25vZGUsIHBvaW50ZXIsCiAJCQkg IGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAocG9pbnRlciksIDApKTsKQEAgLTE4NzYsOSAr MTg5NywyNyBAQCBnZmNfZGVhbGxvY2F0ZV93aXRoX3N0YXR1cyAodHJlZSBwb2ludGVyLCB0 cmVlIHN0YXR1cywgdHJlZSBlcnJtc2csCiAgICAgICB0bXAgPSBidWlsZF9jYWxsX2V4cHJf bG9jIChpbnB1dF9sb2NhdGlvbiwKIAkJCQkgYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlM VF9JTl9GUkVFKSwgMSwKIAkJCQkgZm9sZF9jb252ZXJ0IChwdm9pZF90eXBlX25vZGUsIHBv aW50ZXIpKTsKKyAgICAgIGlmIChmbGFnX29wZW5tcF9hbGxvY2F0b3JzICYmIGNvYXJyYXlf ZGVhbGxvY19tb2RlIDwgR0ZDX0NBRl9DT0FSUkFZX0FOQUxZWkUpCisJeworCSAgdHJlZSBj b25kLCBvbXBfdG1wOworCSAgaWYgKGRlc2NyKQorCSAgICBjb25kID0gZm9sZF9idWlsZDJf bG9jIChpbnB1dF9sb2NhdGlvbiwgRVFfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsCisJCQkJ ICAgIGdmY19jb252X2Rlc2NyaXB0b3JfdmVyc2lvbiAoZGVzY3IpLAorCQkJCSAgICBidWls ZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgMSkpOworCSAgZWxzZQorCSAgICBjb25k ID0gZ2ZjX29tcF9jYWxsX2lzX2FsbG9jIChwb2ludGVyKTsKKwkgIG9tcF90bXAgPSBidWls dGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfRlJFRSk7CisJICBvbXBfdG1wID0g YnVpbGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sIG9tcF90bXAsIDIsIHBvaW50 ZXIsCisJCQkJCSBidWlsZF96ZXJvX2NzdCAocHRyX3R5cGVfbm9kZSkpOworCSAgdG1wID0g YnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRfRVhQUiwgVFJFRV9UWVBFICh0bXAp LCBjb25kLAorCQkJICAgIG9tcF90bXAsIHRtcCk7CisJfQogICAgICAgZ2ZjX2FkZF9leHBy X3RvX2Jsb2NrICgmbm9uX251bGwsIHRtcCk7CiAgICAgICBnZmNfYWRkX21vZGlmeSAoJm5v bl9udWxsLCBwb2ludGVyLCBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKHBvaW50ZXIpLAog CQkJCQkJCSAwKSk7CisgICAgICBpZiAoZmxhZ19vcGVubXBfYWxsb2NhdG9ycyAmJiBkZXNj cikKKwlnZmNfYWRkX21vZGlmeSAoJm5vbl9udWxsLCBnZmNfY29udl9kZXNjcmlwdG9yX3Zl cnNpb24gKGRlc2NyKSwKKwkJCWJ1aWxkX3plcm9fY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSkp OwogCiAgICAgICBpZiAoc3RhdHVzICE9IE5VTExfVFJFRSAmJiAhaW50ZWdlcl96ZXJvcCAo c3RhdHVzKSkKIAl7CkBAIC0yMDUwLDYgKzIwODksMTYgQEAgZ2ZjX2RlYWxsb2NhdGVfc2Nh bGFyX3dpdGhfc3RhdHVzICh0cmVlIHBvaW50ZXIsIHRyZWUgc3RhdHVzLCB0cmVlIGxhYmVs X2ZpbmlzaCwKICAgICAgIHRtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0 aW9uLAogCQkJCSBidWlsdGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0ZSRUUpLCAxLAog CQkJCSBmb2xkX2NvbnZlcnQgKHB2b2lkX3R5cGVfbm9kZSwgcG9pbnRlcikpOworICAgICAg aWYgKGZsYWdfb3Blbm1wX2FsbG9jYXRvcnMpCisJeworCSAgdHJlZSBjb25kLCBvbXBfdG1w OworCSAgY29uZCA9IGdmY19vbXBfY2FsbF9pc19hbGxvYyAocG9pbnRlcik7CisJICBvbXBf dG1wID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9HT01QX0ZSRUUpOworCSAg b21wX3RtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCBvbXBfdG1w LCAyLCBwb2ludGVyLAorCQkJCQkgYnVpbGRfemVyb19jc3QgKHB0cl90eXBlX25vZGUpKTsK KwkgIHRtcCA9IGJ1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsIFRSRUVf VFlQRSAodG1wKSwgY29uZCwKKwkJCSAgICBvbXBfdG1wLCB0bXApOworCX0KICAgICAgIGdm Y19hZGRfZXhwcl90b19ibG9jayAoJm5vbl9udWxsLCB0bXApOwogCiAgICAgICBpZiAoc3Rh dHVzICE9IE5VTExfVFJFRSAmJiAhaW50ZWdlcl96ZXJvcCAoc3RhdHVzKSkKQEAgLTI0ODMs NyArMjUzMiw3IEBAIHRyYW5zX2NvZGUgKGdmY19jb2RlICogY29kZSwgdHJlZSBjb25kKQog CSAgYnJlYWs7CiAKIAljYXNlIEVYRUNfQUxMT0NBVEU6Ci0JICByZXMgPSBnZmNfdHJhbnNf YWxsb2NhdGUgKGNvZGUpOworCSAgcmVzID0gZ2ZjX3RyYW5zX2FsbG9jYXRlIChjb2RlLCBO VUxMKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBFWEVDX0RFQUxMT0NBVEU6CmRpZmYgLS1naXQg YS9nY2MvZm9ydHJhbi90cmFucy5oIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuaAppbmRleCAxMDlk NzY0NzIzNS4uOGJhYzM0MmZkYWIgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLmgK KysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuaApAQCAtNzY0LDEwICs3NjQsMTQgQEAgdm9pZCBn ZmNfYWxsb2NhdGVfdXNpbmdfY2FmX2xpYiAoc3RtdGJsb2NrX3QgKiwgdHJlZSwgdHJlZSwg dHJlZSwgdHJlZSwgdHJlZSwKIAogLyogQWxsb2NhdGUgbWVtb3J5IGZvciBhbGxvY2F0YWJs ZSB2YXJpYWJsZXMsIHdpdGggb3B0aW9uYWwgc3RhdHVzIHZhcmlhYmxlLiAgKi8KIHZvaWQg Z2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlIChzdG10YmxvY2tfdCosIHRyZWUsIHRyZWUsIHRy ZWUsIHRyZWUsCi0JCQkgICAgICAgdHJlZSwgdHJlZSwgdHJlZSwgZ2ZjX2V4cHIqLCBpbnQp OworCQkJICAgICAgIHRyZWUsIHRyZWUsIHRyZWUsIGdmY19leHByKiwgaW50LAorCQkJICAg ICAgIHRyZWUgPSBOVUxMX1RSRUUsIHRyZWUgPSBOVUxMX1RSRUUsCisJCQkgICAgICAgdHJl ZSA9IE5VTExfVFJFRSk7CiAKIC8qIEFsbG9jYXRlIG1lbW9yeSwgd2l0aCBvcHRpb25hbCBz dGF0dXMgdmFyaWFibGUuICAqLwotdm9pZCBnZmNfYWxsb2NhdGVfdXNpbmdfbWFsbG9jIChz dG10YmxvY2tfdCAqLCB0cmVlLCB0cmVlLCB0cmVlKTsKK3ZvaWQgZ2ZjX2FsbG9jYXRlX3Vz aW5nX21hbGxvYyAoc3RtdGJsb2NrX3QgKiwgdHJlZSwgdHJlZSwgdHJlZSwKKwkJCQl0cmVl ID0gTlVMTF9UUkVFLCB0cmVlID0gTlVMTF9UUkVFLAorCQkJICAgICAgICB0cmVlID0gTlVM TF9UUkVFKTsKIAogLyogR2VuZXJhdGUgY29kZSB0byBkZWFsbG9jYXRlIGFuIGFycmF5LiAg Ki8KIHRyZWUgZ2ZjX2RlYWxsb2NhdGVfd2l0aF9zdGF0dXMgKHRyZWUsIHRyZWUsIHRyZWUs IHRyZWUsIHRyZWUsIGJvb2wsCkBAIC04MTcsNiArODIxLDggQEAgc3RydWN0IGFycmF5X2Rl c2NyX2luZm87CiBib29sIGdmY19nZXRfYXJyYXlfZGVzY3JfaW5mbyAoY29uc3RfdHJlZSwg c3RydWN0IGFycmF5X2Rlc2NyX2luZm8gKik7CiAKIC8qIEluIHRyYW5zLW9wZW5tcC5jYyAq LwordHJlZSBnZmNfb21wX2NhbGxfYWRkX2FsbG9jICh0cmVlKTsKK3RyZWUgZ2ZjX29tcF9j YWxsX2lzX2FsbG9jICh0cmVlKTsKIGJvb2wgZ2ZjX29tcF9pc19hbGxvY2F0YWJsZV9vcl9w dHIgKGNvbnN0X3RyZWUpOwogdHJlZSBnZmNfb21wX2NoZWNrX29wdGlvbmFsX2FyZ3VtZW50 ICh0cmVlLCBib29sKTsKIHRyZWUgZ2ZjX29tcF9hcnJheV9kYXRhICh0cmVlLCBib29sKTsK ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3R5cGVzLmRlZiBiL2djYy9mb3J0cmFuL3R5cGVz LmRlZgppbmRleCA3YTQ2NWM4OWM1Zi4uNTQ2MjM4MWNkZDQgMTAwNjQ0Ci0tLSBhL2djYy9m b3J0cmFuL3R5cGVzLmRlZgorKysgYi9nY2MvZm9ydHJhbi90eXBlcy5kZWYKQEAgLTE1NSw2 ICsxNTUsOCBAQCBERUZfRlVOQ1RJT05fVFlQRV8zIChCVF9GTl9VSU5UX1VJTlRfUFRSX1BU UiwgQlRfVUlOVCwgQlRfVUlOVCwgQlRfUFRSLCBCVF9QVFIpCiBERUZfRlVOQ1RJT05fVFlQ RV8zIChCVF9GTl9QVFJfU0laRV9TSVpFX1BUUk1PREUsCiAJCSAgICAgQlRfUFRSLCBCVF9T SVpFLCBCVF9TSVpFLCBCVF9QVFJNT0RFKQogCitERUZfRlVOQ1RJT05fVFlQRV80IChCVF9G Tl9QVFJfUFRSX1NJWkVfUFRSTU9ERV9QVFJNT0RFLAorCQkgICAgIEJUX1BUUiwgQlRfUFRS LCBCVF9TSVpFLCBCVF9QVFJNT0RFLCBCVF9QVFJNT0RFKQogREVGX0ZVTkNUSU9OX1RZUEVf NCAoQlRfRk5fVk9JRF9PTVBGTl9QVFJfVUlOVF9VSU5ULAogICAgICAgICAgICAgICAgICAg ICAgQlRfVk9JRCwgQlRfUFRSX0ZOX1ZPSURfUFRSLCBCVF9QVFIsIEJUX1VJTlQsIEJUX1VJ TlQpCiBERUZfRlVOQ1RJT05fVFlQRV80IChCVF9GTl9VSU5UX09NUEZOX1BUUl9VSU5UX1VJ TlQsCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYyBiL2djYy9n aW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjCmluZGV4IDhiNzM0Mjk1ZjA5Li40OTE2ZWUyN2Fl MCAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MKKysrIGIvZ2Nj L2dpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MKQEAgLTE1NzQsNiArMTU3NCw3IEBAIGZuZGVj bF9hbGxvY19wICh0cmVlIGZuZGVjbCwgYm9vbCBhbGxfYWxsb2MpCiAJY2FzZSBCVUlMVF9J Tl9BTElHTkVEX0FMTE9DOgogCWNhc2UgQlVJTFRfSU5fQ0FMTE9DOgogCWNhc2UgQlVJTFRf SU5fR09NUF9BTExPQzoKKwljYXNlIEJVSUxUX0lOX0dPTVBfUkVBTExPQzoKIAljYXNlIEJV SUxUX0lOX01BTExPQzoKIAljYXNlIEJVSUxUX0lOX1JFQUxMT0M6CiAJY2FzZSBCVUlMVF9J Tl9TVFJEVVA6CkBAIC0xODAxLDkgKzE4MDIsMjAgQEAgbWF0Y2hpbmdfYWxsb2NfY2FsbHNf cCAodHJlZSBhbGxvY19kZWNsLCB0cmVlIGRlYWxsb2NfZGVjbCkKIAljYXNlIEJVSUxUX0lO X0FMTE9DQV9XSVRIX0FMSUdOOgogCSAgcmV0dXJuIGZhbHNlOwogCisJY2FzZSBCVUlMVF9J Tl9HT01QX0FMTE9DOgorCWNhc2UgQlVJTFRfSU5fR09NUF9SRUFMTE9DOgorCSAgaWYgKERF Q0xfSVNfT1BFUkFUT1JfREVMRVRFX1AgKGRlYWxsb2NfZGVjbCkpCisJICAgIHJldHVybiBm YWxzZTsKKworCSAgaWYgKGZuZGVjbF9idWlsdF9pbl9wIChkZWFsbG9jX2RlY2wsIEJVSUxU X0lOX0dPTVBfRlJFRSwKKwkJCQkJICAgICAgIEJVSUxUX0lOX0dPTVBfUkVBTExPQykpCisJ ICAgIHJldHVybiB0cnVlOworCisJICBhbGxvY19kZWFsbG9jX2tpbmQgPSBhbGxvY19raW5k X3Q6OmJ1aWx0aW47CisJICBicmVhazsKKwogCWNhc2UgQlVJTFRfSU5fQUxJR05FRF9BTExP QzoKIAljYXNlIEJVSUxUX0lOX0NBTExPQzoKLQljYXNlIEJVSUxUX0lOX0dPTVBfQUxMT0M6 CiAJY2FzZSBCVUlMVF9JTl9NQUxMT0M6CiAJY2FzZSBCVUlMVF9JTl9SRUFMTE9DOgogCWNh c2UgQlVJTFRfSU5fU1RSRFVQOgpAQCAtMTgyOSw3ICsxODQxLDggQEAgbWF0Y2hpbmdfYWxs b2NfY2FsbHNfcCAodHJlZSBhbGxvY19kZWNsLCB0cmVlIGRlYWxsb2NfZGVjbCkKICAgaWYg KGZuZGVjbF9idWlsdF9pbl9wIChkZWFsbG9jX2RlY2wsIEJVSUxUX0lOX05PUk1BTCkpCiAg ICAgewogICAgICAgYnVpbHRfaW5fZnVuY3Rpb24gZGVhbGxvY19jb2RlID0gREVDTF9GVU5D VElPTl9DT0RFIChkZWFsbG9jX2RlY2wpOwotICAgICAgaWYgKGRlYWxsb2NfY29kZSA9PSBC VUlMVF9JTl9SRUFMTE9DKQorICAgICAgaWYgKGRlYWxsb2NfY29kZSA9PSBCVUlMVF9JTl9S RUFMTE9DCisJICB8fCBkZWFsbG9jX2NvZGUgPT0gQlVJTFRfSU5fR09NUF9SRUFMTE9DKQog CXJlYWxsb2Nfa2luZCA9IGFsbG9jX2tpbmRfdDo6YnVpbHRpbjsKIAogICAgICAgZm9yICh0 cmVlIGFtYXRzID0gREVDTF9BVFRSSUJVVEVTIChhbGxvY19kZWNsKTsKQEAgLTE4ODIsNiAr MTg5NSw3IEBAIG1hdGNoaW5nX2FsbG9jX2NhbGxzX3AgKHRyZWUgYWxsb2NfZGVjbCwgdHJl ZSBkZWFsbG9jX2RlY2wpCiAJICAgIGNhc2UgQlVJTFRfSU5fQUxJR05FRF9BTExPQzoKIAkg ICAgY2FzZSBCVUlMVF9JTl9DQUxMT0M6CiAJICAgIGNhc2UgQlVJTFRfSU5fR09NUF9BTExP QzoKKwkgICAgY2FzZSBCVUlMVF9JTl9HT01QX1JFQUxMT0M6CiAJICAgIGNhc2UgQlVJTFRf SU5fTUFMTE9DOgogCSAgICBjYXNlIEJVSUxUX0lOX1JFQUxMT0M6CiAJICAgIGNhc2UgQlVJ TFRfSU5fU1RSRFVQOgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS5jYyBiL2djYy9naW1wbGUu Y2MKaW5kZXggNzkyNGQ5MDBiMzUuLjY3ZjNmYjJkYWJmIDEwMDY0NAotLS0gYS9nY2MvZ2lt cGxlLmNjCisrKyBiL2djYy9naW1wbGUuY2MKQEAgLTI5ODgsNiArMjk4OCw4IEBAIG5vbmZy ZWVpbmdfY2FsbF9wIChnaW1wbGUgKmNhbGwpCiAJY2FzZSBCVUlMVF9JTl9UTV9GUkVFOgog CWNhc2UgQlVJTFRfSU5fUkVBTExPQzoKIAljYXNlIEJVSUxUX0lOX1NUQUNLX1JFU1RPUkU6 CisJY2FzZSBCVUlMVF9JTl9HT01QX0ZSRUU6CisJY2FzZSBCVUlMVF9JTl9HT01QX1JFQUxM T0M6CiAJICByZXR1cm4gZmFsc2U7CiAJZGVmYXVsdDoKIAkgIHJldHVybiB0cnVlOwpkaWZm IC0tZ2l0IGEvZ2NjL29tcC1idWlsdGlucy5kZWYgYi9nY2Mvb21wLWJ1aWx0aW5zLmRlZgpp bmRleCBlZDc4ZDQ5ZDIwNS4uN2I2YjFkY2EzZTMgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtYnVp bHRpbnMuZGVmCisrKyBiL2djYy9vbXAtYnVpbHRpbnMuZGVmCkBAIC00NjcsNiArNDY3LDkg QEAgREVGX0dPTVBfQlVJTFRJTiAoQlVJTFRfSU5fR09NUF9XT1JLU0hBUkVfVEFTS19SRURV Q1RJT05fVU5SRUdJU1RFUiwKIERFRl9HT01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfQUxM T0MsCiAJCSAgIkdPTVBfYWxsb2MiLCBCVF9GTl9QVFJfU0laRV9TSVpFX1BUUk1PREUsCiAJ CSAgQVRUUl9BTExPQ19XQVJOX1VOVVNFRF9SRVNVTFRfU0laRV8yX05PVEhST1dfTElTVCkK K0RFRl9HT01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfUkVBTExPQywKKwkJICAib21wX3Jl YWxsb2MiLCBCVF9GTl9QVFJfUFRSX1NJWkVfUFRSTU9ERV9QVFJNT0RFLAorCQkgIEFUVFJf QUxMT0NfV0FSTl9VTlVTRURfUkVTVUxUX1NJWkVfMl9OT1RIUk9XX0xFQUZfTElTVCkKIERF Rl9HT01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfRlJFRSwKIAkJICAiR09NUF9mcmVlIiwg QlRfRk5fVk9JRF9QVFJfUFRSTU9ERSwgQVRUUl9OT1RIUk9XX0xFQUZfTElTVCkKIERFRl9H T01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfV0FSTklORywgIkdPTVBfd2FybmluZyIsCmRp ZmYgLS1naXQgYS9nY2MvcHJlZGljdC5jYyBiL2djYy9wcmVkaWN0LmNjCmluZGV4IDM5Njc0 NmNiZmQxLi4yZTliN2RkMDdhNyAxMDA2NDQKLS0tIGEvZ2NjL3ByZWRpY3QuY2MKKysrIGIv Z2NjL3ByZWRpY3QuY2MKQEAgLTI1NjYsNiArMjU2Niw3IEBAIGV4cHJfZXhwZWN0ZWRfdmFs dWVfMSAodHJlZSB0eXBlLCB0cmVlIG9wMCwgZW51bSB0cmVlX2NvZGUgY29kZSwKIAkJKnBy ZWRpY3RvciA9IFBSRURfQ09NUEFSRV9BTkRfU1dBUDsKIAkJcmV0dXJuIGJvb2xlYW5fdHJ1 ZV9ub2RlOwogCSAgICAgIGNhc2UgQlVJTFRfSU5fUkVBTExPQzoKKwkgICAgICBjYXNlIEJV SUxUX0lOX0dPTVBfUkVBTExPQzoKIAkJaWYgKHByZWRpY3RvcikKIAkJICAqcHJlZGljdG9y ID0gUFJFRF9NQUxMT0NfTk9OTlVMTDsKIAkJLyogRklYTUU6IFRoaXMgaXMgd3JvbmcgYW5k IHdlIG5lZWQgdG8gY29udmVydCB0aGUgbG9naWMKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvYmluZF9jX2FycmF5X3BhcmFtc18yLmY5MCBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvYmluZF9jX2FycmF5X3BhcmFtc18yLmY5MAppbmRleCAwNGZhYTQz MzQzNS4uMDgyNWVmYzdhMmYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvYmluZF9jX2FycmF5X3BhcmFtc18yLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2JpbmRfY19hcnJheV9wYXJhbXNfMi5mOTAKQEAgLTI1LDcgKzI1LDcgQEAgZW5k CiAKIAogISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInBhcm0uLi5zcGFuID0gNDsi ICJvcmlnaW5hbCIgfSB9Ci0hIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicGFybS4u LmR0eXBlID0gey5lbGVtX2xlbj00LCAucmFuaz0yLCAudHlwZT0xfTsiICJvcmlnaW5hbCIg fSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicGFybS4uLmR0eXBlID0gey5l bGVtX2xlbj00LCAudmVyc2lvbj0wLCAucmFuaz0yLCAudHlwZT0xfTsiICJvcmlnaW5hbCIg fSB9CiAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicGFybS4uLmRpbVxcXFswXFxc XS5sYm91bmQgPSAxOyIgIm9yaWdpbmFsIiB9IH0KICEgeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICJwYXJtLi4uZGltXFxcWzBcXFxdLnVib3VuZCA9IDQ7IiAib3JpZ2luYWwiIH0g fQogISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInBhcm0uLi5kaW1cXFxbMFxcXF0u c3RyaWRlID0gMTsiICJvcmlnaW5hbCIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0LmY5MAppbmRleCA4ZmY5YzI1MmU0OS4uNGZlZDE5 MjQ5YTMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS0xNC5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTE0LmY5MApAQCAtOTMsMyArOTMsNDQgQEAgc3Vicm91dGluZSBjX2FuZF9mdW5jX3B0 cnMKICAgISRvbXAgYWxsb2NhdGUoY2Z1bnB0cikgISBPSz8gQSBub3JtYWwgZGVyaXZlZC10 eXBlIHZhcj8KICAgISRvbXAgYWxsb2NhdGUocCkgICEgeyBkZy1lcnJvciAiQXJndW1lbnQg J3AnIGF0IC4xLiB0byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBkaXJlY3RpdmUgbXVz dCBiZSBhIHZhcmlhYmxlIiB9CiBlbmQKKworCitzdWJyb3V0aW5lIGNvYXJyYXlfMgorICB1 c2UgbQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogeAorICBpbnRlZ2VyLCBhbGxv Y2F0YWJsZSA6OiBhLCBiLCBjWzpdLCBkCisgIHggPSA1ICEgZXhlY3V0YWJsZSBzdG10Cisg ICEkb21wIGFsbG9jYXRlKGEsYikgYWxpZ24oMTYpCisgICEkb21wIGFsbG9jYXRlICAgICAg ICAhIHsgZGctZXJyb3IgIlVuZXhwZWN0ZWQgY29hcnJheSAnYycgaW4gJ2FsbG9jYXRlJyBh dCAuMS4sIGltcGxpY2l0bHkgbGlzdGVkIGluICchLk9NUCBBTExPQ0FURScgYXQgLjIuIiB9 CisgICEkb21wIGFsbG9jYXRlKGQpIGFsaWduKDMyKQorICBhbGxvY2F0ZShhLGIsY1sqXSxk KSAgISB7IGRnLWVycm9yICJVbmV4cGVjdGVkIGNvYXJyYXkgJ2MnIGluICdhbGxvY2F0ZScg YXQgLjEuLCBpbXBsaWNpdGx5IGxpc3RlZCBpbiAnIS5PTVAgQUxMT0NBVEUnIGF0IC4yLiIg fQorZW5kCisKKworc3Vicm91dGluZSBjb2FycmF5XzMKKyAgdXNlIG0KKyAgaW1wbGljaXQg bm9uZQorICBpbnRlZ2VyIDo6IHgKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogYSwgYiwg Y1s6XSwgZAorICB4ID0gNSAhIGV4ZWN1dGFibGUgc3RtdAorICAhJG9tcCBhbGxvY2F0b3Jz IGFsbG9jYXRlKGFsaWduKDE2KTogYSxiKSBhbGxvY2F0ZShhbGlnbigzMikgOiBkKSAKKyAg YWxsb2NhdGUoYSxiLGNbKl0sZCkgICEgT0sgLSBGb3J0cmFuIGFsbG9jYXRvciB1c2VkIGZv ciAnQycKK2VuZAorCisKK3N1YnJvdXRpbmUgdW5jbGVhcgorICB1c2UgbQorICBpbXBsaWNp dCBub25lCisgIGludGVnZXIgOjogeAorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhLCBi LCBjWzpdLCBkCisKKyAgISBPcGVuTVAgaXMgdW5jbGVhciB3aGljaCBhbGxvY2F0b3IgaXMg dXNlZCBmb3IgJ0MnIC0gdGhlIGZvcnRyYW4gb25lIG9yIHRoZSBPcGVuTVAgb25lLgorICAh IEdDQyB0aGVyZWZvcmUgcmVqZWN0cyBpdC4KKworICB4ID0gNSAhIGV4ZWN1dGFibGUgc3Rt dAorCisgICEkb21wIGFsbG9jYXRlKGEsYikgYWxpZ24oMTYpCisgICEkb21wIGFsbG9jYXRl KGQpIGFsaWduKDMyKQorICBhbGxvY2F0ZShhLGIsY1sqXSxkKSAgISB7IGRnLWVycm9yICIn YycgbGlzdGVkIGluICdhbGxvY2F0ZScgc3RhdGVtZW50IGF0IC4xLiBidXQgaXQgaXMgbmVp dGhlciBleHBsaWNpdGx5IGluIGxpc3RlZCBpbiB0aGUgJyEuT01QIEFMTE9DQVRFJyBkaXJl Y3RpdmUgbm9yIGV4aXN0cyBhIGRpcmVjdGl2ZSB3aXRob3V0IGFyZ3VtZW50IGxpc3QiIH0K K2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTE2LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0x Ni5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjMjAzZTAy ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2FsbG9jYXRlLTE2LmY5MApAQCAtMCwwICsxLDEwIEBACitpbnRlZ2VyLCBwb2ludGVyIDo6 IHB0cgorCishJG9tcCBmbHVzaAorISRvbXAgYWxsb2NhdGUocHRyKQorYWxsb2NhdGUocHRy KQorZW5kCisKKyEgeyBkZy1lcnJvciAiJyEuT01QIEFMTE9DQVRFJyBhdCAuMS4gcmVxdWly ZXMgJy1mb3Blbm1wLWFsbG9jYXRvcnMnIiAiIiB7IHRhcmdldCAqLSotKiB9IDQgfQorISB7 IGRnLXdhcm5pbmcgIkFsbCBmaWxlcyB0aGF0IG1pZ2h0IGRlYWxsb2NhdGUgc3VjaCBhIHZh cmlhYmxlIG11c3QgYmUgY29tcGlsZWQgd2l0aCAnLWZvcGVubXAtYWxsb2NhdG9ycyciICIi IHsgdGFyZ2V0ICotKi0qIH0gNCB9CishIHsgZGctbm90ZSAiVGhpcyBpbmNsdWRlcyBleHBs aWNpdCBERUFMTE9DQVRFLCByZWFsbG9jYXRpb24gb24gaW50cmluc2ljIGFzc2lnbm1lbnQs IElOVEVOVFxcKE9VVFxcKSBmb3IgYWxsb2NhdGFibGUgZHVtbXkgYXJndW1lbnRzLCBhbmQg cmVhbGxvY2F0aW9uIG9mIGFsbG9jYXRhYmxlIGNvbXBvbmVudHMgYWxsb2NhdGVkIHdpdGgg YW4gT3Blbk1QIGFsbG9jYXRvciIgIiIgeyB0YXJnZXQgKi0qLSogfSAwIH0KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS01LmY5MCBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS01LmY5MAppbmRleCBiZjlj NzgxZGNjNS4uMjgzNjlhZTg3NmIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC9hbGxvY2F0ZS01LmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2dvbXAvYWxsb2NhdGUtNS5mOTAKQEAgLTEsMyArMSw0IEBACishIHsgZGctYWRkaXRp b25hbC1vcHRpb25zICItZm9wZW5tcC1hbGxvY2F0b3JzIiB9CiBtb2R1bGUgbXlfb21wX2xp YgogICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnRwdHJfdAogICAhdXNlIG9tcF9s aWIKQEAgLTQ1LDE1ICs0NiwxNSBAQCBzdWJyb3V0aW5lIHR3byhjLHgyLHkyKQogICBjbGFz cyh0KSwgcG9pbnRlciA6OiB5Mig6KQogCiAgICEkb21wIGZsdXNoICAhIHNvbWUgZXhlY3V0 YWJsZSBzdGF0ZW1lbnQKLSAgISRvbXAgYWxsb2NhdGUoYSkgICEgeyBkZy1tZXNzYWdlICJu b3QgeWV0IHN1cHBvcnRlZCIgfQotICBhbGxvY2F0ZShhLGIoNCksYygzLDQpKQotICBkZWFs bG9jYXRlKGEsYixjKQorICAhJG9tcCBhbGxvY2F0ZShhKQorICBhbGxvY2F0ZShhKQorICBk ZWFsbG9jYXRlKGEpCiAKLSAgISRvbXAgYWxsb2NhdGUoeDEseTEseDIseTIpICAhIHsgZGct bWVzc2FnZSAibm90IHlldCBzdXBwb3J0ZWQiIH0KKyAgISRvbXAgYWxsb2NhdGUoeDEseTEs eDIseTIpCiAgIGFsbG9jYXRlKHgxLHkxLHgyKDUpLHkyKDUpKQogICBkZWFsbG9jYXRlKHgx LHkxLHgyLHkyKQogCi0gICEkb21wIGFsbG9jYXRlKGIsYSkgYWxpZ24gKCAxMjggKSAgISB7 IGRnLW1lc3NhZ2UgIm5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgICEkb21wIGFsbG9jYXRlKGIs YSkgYWxpZ24gKCAxMjggKQogICAhJG9tcCBhbGxvY2F0ZSBhbGlnbiAoIDY0ICkKICAgYWxs b2NhdGUoYSxiKDQpLGMoMyw0KSkKICAgZGVhbGxvY2F0ZShhLGIsYykKQEAgLTY2LDcgKzY3 LDcgQEAgc3Vicm91dGluZSB0aHJlZShjKQogICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBh LCBiKDopLCBjKDosOikKIAogICBjYWxsIGZvbygpICAhIGV4ZWN1dGFibGUgc3RtdAotICAh JG9tcCBhbGxvY2F0ZSBhbGxvY2F0b3IoIG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jICkgLCBh bGlnbig2NCkgICEgeyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQorICAhJG9t cCBhbGxvY2F0ZSBhbGxvY2F0b3IoIG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jICkgLCBhbGln big2NCkKICAgISRvbXAgYWxsb2NhdGUoYikgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1f YWxsb2MgKQogICAhJG9tcCBhbGxvY2F0ZShjKSBhbGxvY2F0b3IoIG9tcF9oaWdoX2J3X21l bV9hbGxvYyApCiAgIGFsbG9jYXRlKGEsYig0KSxjKDMsNCkpCkBAIC03NCw3ICs3NSw3IEBA IHN1YnJvdXRpbmUgdGhyZWUoYykKIAogICBibG9jawogICAgIHEgPSA1ICAhIGV4ZWN1dGFi bGUgc3RtdAotICAgICEkb21wIGFsbG9jYXRlKGEpIGFsaWduKDY0KSAgISB7IGRnLW1lc3Nh Z2UgIm5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgICAgISRvbXAgYWxsb2NhdGUoYSkgYWxpZ24o NjQpCiAgICAgISRvbXAgYWxsb2NhdGUoYikgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1f YWxsb2MgKSwgYWxpZ24oMzIpCiAgICAgISRvbXAgYWxsb2NhdGUoYykgYWxsb2NhdG9yKCBv bXBfdGhyZWFkX21lbV9hbGxvYyApCiAgICAgYWxsb2NhdGUoYSxiKDQpLGMoMyw0KSkKQEAg LTg0LDcgKzg1LDcgQEAgc3Vicm91dGluZSB0aHJlZShjKQogY29udGFpbnMKICAgc3Vicm91 dGluZSBpbm5lcgogICAgIGNhbGwgZm9vKCkgICEgZXhlY3V0YWJsZSBzdG10Ci0gICAgISRv bXAgYWxsb2NhdGUoYSkgYWxpZ24oNjQpICAhIHsgZGctbWVzc2FnZSAibm90IHlldCBzdXBw b3J0ZWQiIH0KKyAgICAhJG9tcCBhbGxvY2F0ZShhKSBhbGlnbig2NCkKICAgICAhJG9tcCBh bGxvY2F0ZShiKSBhbGxvY2F0b3IoIG9tcF9oaWdoX2J3X21lbV9hbGxvYyApLCBhbGlnbigz MikKICAgICAhJG9tcCBhbGxvY2F0ZShjKSBhbGxvY2F0b3IoIG9tcF90aHJlYWRfbWVtX2Fs bG9jICkKICAgICBhbGxvY2F0ZShhLGIoNCksYygzLDQpKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtMy5mOTAgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0zLmY5MApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDBlMzFlZTg3MjcKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0zLmY5MApAQCAt MCwwICsxLDM2IEBACitzdWJyb3V0aW5lIGYKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjog QTEsIEEyLCBCKDopLCBDCisgICEkb21wIGRlY2xhcmUgdGFyZ2V0CisKKyAgISRvbXAgYWxs b2NhdG9ycyAgISBPSworICBhbGxvY2F0ZShBMSkKKworICAhJG9tcCBhbGxvY2F0b3JzIGFs bG9jYXRlKGFsaWduKDgpIDogYTIpICEgeyBkZy1lcnJvciAiQUxMT0NBVE9SUyBkaXJlY3Rp dmUgYXQgLjEuIGluc2lkZSBhIHRhcmdldCByZWdpb24gbXVzdCBzcGVjaWZ5IGFuIEFMTE9D QVRPUiBtb2RpZmllciBmb3IgJ2EyJyIgfQorICBhbGxvY2F0ZShBMikKKworICAhJG9tcCBh bGxvY2F0ZSAgISB7IGRnLWVycm9yICJBTExPQ0FURSBkaXJlY3RpdmUgYXQgLjEuIGluc2lk ZSBhIHRhcmdldCByZWdpb24gbXVzdCBzcGVjaWZ5IGFuIEFMTE9DQVRPUiBjbGF1c2UiIH0K KyAgYWxsb2NhdGUoQig1KSkKKworICAhJG9tcCBhbGxvY2F0ZShjKSAgISB7IGRnLWVycm9y ICJBTExPQ0FURSBkaXJlY3RpdmUgYXQgLjEuIGluc2lkZSBhIHRhcmdldCByZWdpb24gbXVz dCBzcGVjaWZ5IGFuIEFMTE9DQVRPUiBjbGF1c2UgZm9yICdjJyIgfQorICBhbGxvY2F0ZShD KQorZW5kCisKK3N1YnJvdXRpbmUgZworICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBBMSwg QTIsIEIoOiksIEMKKworICAhJG9tcCB0YXJnZXQKKyAgISRvbXAgc2luZ2xlCisgICAgISRv bXAgYWxsb2NhdG9ycyAgISBPSworICAgIGFsbG9jYXRlKEExKQorCisgICAgISRvbXAgYWxs b2NhdG9ycyBhbGxvY2F0ZShhbGlnbig4KSA6IGEyKSAhIHsgZGctZXJyb3IgIkFMTE9DQVRP UlMgZGlyZWN0aXZlIGF0IC4xLiBpbnNpZGUgYSB0YXJnZXQgcmVnaW9uIG11c3Qgc3BlY2lm eSBhbiBBTExPQ0FUT1IgbW9kaWZpZXIgZm9yICdhMiciIH0KKyAgICBhbGxvY2F0ZShBMikK KworICAgICEkb21wIGFsbG9jYXRlICAhIHsgZGctZXJyb3IgIkFMTE9DQVRFIGRpcmVjdGl2 ZSBhdCAuMS4gaW5zaWRlIGEgdGFyZ2V0IHJlZ2lvbiBtdXN0IHNwZWNpZnkgYW4gQUxMT0NB VE9SIGNsYXVzZSIgfQorICAgIGFsbG9jYXRlKEIoNSkpCisKKyAgICAhJG9tcCBhbGxvY2F0 ZShjKSAgISB7IGRnLWVycm9yICJBTExPQ0FURSBkaXJlY3RpdmUgYXQgLjEuIGluc2lkZSBh IHRhcmdldCByZWdpb24gbXVzdCBzcGVjaWZ5IGFuIEFMTE9DQVRPUiBjbGF1c2UgZm9yICdj JyIgfQorICAgIGFsbG9jYXRlKEMpCisgICEkb21wIGVuZCBzaW5nbGUKKyAgISRvbXAgZW5k IHRhcmdldAorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdG9ycy00LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0b3JzLTQuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li41NWFlNDhkNjFmMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC9hbGxvY2F0b3JzLTQuZjkwCkBAIC0wLDAgKzEsOSBAQAoraW50ZWdlciwg cG9pbnRlciA6OiBwdHIKKworISRvbXAgYWxsb2NhdG9ycyBhbGxvY2F0ZShwdHIpCithbGxv Y2F0ZShwdHIpCitlbmQKKworISB7IGRnLWVycm9yICInIS5PTVAgQUxMT0NBVE9SUycgYXQg LjEuIHJlcXVpcmVzICctZm9wZW5tcC1hbGxvY2F0b3JzJyIgIiIgeyB0YXJnZXQgKi0qLSog fSAzIH0KKyEgeyBkZy13YXJuaW5nICJBbGwgZmlsZXMgdGhhdCBtaWdodCBkZWFsbG9jYXRl IHN1Y2ggYSB2YXJpYWJsZSBtdXN0IGJlIGNvbXBpbGVkIHdpdGggJy1mb3Blbm1wLWFsbG9j YXRvcnMnIiAiIiB7IHRhcmdldCAqLSotKiB9IDMgfQorISB7IGRnLW5vdGUgIlRoaXMgaW5j bHVkZXMgZXhwbGljaXQgREVBTExPQ0FURSwgcmVhbGxvY2F0aW9uIG9uIGludHJpbnNpYyBh c3NpZ25tZW50LCBJTlRFTlRcXChPVVRcXCkgZm9yIGFsbG9jYXRhYmxlIGR1bW15IGFyZ3Vt ZW50cywgYW5kIHJlYWxsb2NhdGlvbiBvZiBhbGxvY2F0YWJsZSBjb21wb25lbnRzIGFsbG9j YXRlZCB3aXRoIGFuIE9wZW5NUCBhbGxvY2F0b3IiICIiIHsgdGFyZ2V0ICotKi0qIH0gMCB9 CmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtY2NwLmNjIGIvZ2NjL3RyZWUtc3NhLWNjcC5j YwppbmRleCAxYTU1NWFlNjgyNi4uOTA3ZmIzZjZmZGQgMTAwNjQ0Ci0tLSBhL2djYy90cmVl LXNzYS1jY3AuY2MKKysrIGIvZ2NjL3RyZWUtc3NhLWNjcC5jYwpAQCAtMjM0Niw2ICsyMzQ2 LDcgQEAgZXZhbHVhdGVfc3RtdCAoZ2ltcGxlICpzdG10KQogCSAgICB7CiAJICAgIGNhc2Ug QlVJTFRfSU5fTUFMTE9DOgogCSAgICBjYXNlIEJVSUxUX0lOX1JFQUxMT0M6CisJICAgIGNh c2UgQlVJTFRfSU5fR09NUF9SRUFMTE9DOgogCSAgICBjYXNlIEJVSUxUX0lOX0NBTExPQzoK IAkgICAgY2FzZSBCVUlMVF9JTl9TVFJEVVA6CiAJICAgIGNhc2UgQlVJTFRfSU5fU1RSTkRV UDoKZGlmZiAtLWdpdCBhL2djYy90cmVlLmNjIGIvZ2NjL3RyZWUuY2MKaW5kZXggMzNlYTFk MmUyZDAuLjY2OTI1NjQ5NGJmIDEwMDY0NAotLS0gYS9nY2MvdHJlZS5jYworKysgYi9nY2Mv dHJlZS5jYwpAQCAtMTUwMDIsNiArMTUwMDIsOCBAQCBmbmRlY2xfZGVhbGxvY19hcmdubyAo dHJlZSBmbmRlY2wpCiAJewogCWNhc2UgQlVJTFRfSU5fRlJFRToKIAljYXNlIEJVSUxUX0lO X1JFQUxMT0M6CisJY2FzZSBCVUlMVF9JTl9HT01QX0ZSRUU6CisJY2FzZSBCVUlMVF9JTl9H T01QX1JFQUxMT0M6CiAJICByZXR1cm4gMDsKIAlkZWZhdWx0OgogCSAgYnJlYWs7CmRpZmYg LS1naXQgYS9saWJnb21wL2FsbG9jYXRvci5jIGIvbGliZ29tcC9hbGxvY2F0b3IuYwppbmRl eCBiNGU1MGUyYWQ3Mi4uNzZlZTkzMjMxZmMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvYWxsb2Nh dG9yLmMKKysrIGIvbGliZ29tcC9hbGxvY2F0b3IuYwpAQCAtMzUsNiArMzUsNjkgQEAKICNp bmNsdWRlIDxkbGZjbi5oPgogI2VuZGlmCiAKKy8qIEtlZXBpbmcgdHJhY2sgd2hldGhlciBh IEZvcnRyYW4gc2NhbGFyIGFsbG9jYXRhYmxlL3BvaW50ZXIgaGFzIGJlZW4KKyAgIGFsbG9j YXRlZCB2aWEgJ29tcCBhbGxvY2F0b3JzJy8nb21wIGFsbG9jYXRlJy4gICovCisKK3N0cnVj dCBmb3J0X2FsbG9jX3NwbGF5X3RyZWVfa2V5X3MgeworICB2b2lkICpwdHI7Cit9OworCit0 eXBlZGVmIHN0cnVjdCBmb3J0X2FsbG9jX3NwbGF5X3RyZWVfbm9kZV9zICpmb3J0X2FsbG9j X3NwbGF5X3RyZWVfbm9kZTsKK3R5cGVkZWYgc3RydWN0IGZvcnRfYWxsb2Nfc3BsYXlfdHJl ZV9zICpmb3J0X2FsbG9jX3NwbGF5X3RyZWU7Cit0eXBlZGVmIHN0cnVjdCBmb3J0X2FsbG9j X3NwbGF5X3RyZWVfa2V5X3MgKmZvcnRfYWxsb2Nfc3BsYXlfdHJlZV9rZXk7CisKK3N0YXRp YyBpbmxpbmUgaW50Citmb3J0X2FsbG9jX3NwbGF5X2NvbXBhcmUgKGZvcnRfYWxsb2Nfc3Bs YXlfdHJlZV9rZXkgeCwgZm9ydF9hbGxvY19zcGxheV90cmVlX2tleSB5KQoreworICBpZiAo eC0+cHRyIDwgeS0+cHRyKQorICAgIHJldHVybiAtMTsKKyAgaWYgKHgtPnB0ciA+IHktPnB0 cikKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisjZGVmaW5lIHNwbGF5X3RyZWVf cHJlZml4IGZvcnRfYWxsb2MKKyNkZWZpbmUgc3BsYXlfdHJlZV9zdGF0aWMKKyNpbmNsdWRl ICJzcGxheS10cmVlLmgiCisKKyNkZWZpbmUgc3BsYXlfdHJlZV9wcmVmaXggZm9ydF9hbGxv YworI2RlZmluZSBzcGxheV90cmVlX3N0YXRpYworI2RlZmluZSBzcGxheV90cmVlX2MKKyNp bmNsdWRlICJzcGxheS10cmVlLmgiCisKK3N0YXRpYyBzdHJ1Y3QgZm9ydF9hbGxvY19zcGxh eV90cmVlX3MgZm9ydF9hbGxvY19zY2FsYXJzOworCisvKiBBZGQgcG9pbnRlciBhcyBiZWlu ZyBhbGxvY2VkIGJ5IEdPTVBfYWxsb2MuICAqLwordm9pZAorR09NUF9hZGRfYWxsb2MgKHZv aWQgKnB0cikKK3sKKyAgaWYgKHB0ciA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgZm9ydF9h bGxvY19zcGxheV90cmVlX25vZGUgaXRlbTsKKyAgaXRlbSA9IGdvbXBfbWFsbG9jIChzaXpl b2YgKHN0cnVjdCBzcGxheV90cmVlX25vZGVfcykpOworICBpdGVtLT5rZXkucHRyID0gcHRy OworICBpdGVtLT5sZWZ0ID0gTlVMTDsKKyAgaXRlbS0+cmlnaHQgPSBOVUxMOworICBmb3J0 X2FsbG9jX3NwbGF5X3RyZWVfaW5zZXJ0ICgmZm9ydF9hbGxvY19zY2FsYXJzLCBpdGVtKTsK K30KKworLyogUmVtb3ZlIHBvaW50ZXIsIGVpdGhlciBjYWxsZWQgYnkgRlJFRSBvciBieSBS RUFMTE9DLAorICAgZWl0aGVyIG9mIHRoZW0gY2FuIGNoYW5nZSB0aGUgYWxsb2NhdGlvbiBz dGF0dXMuICAqLworYm9vbAorR09NUF9pc19hbGxvYyAodm9pZCAqcHRyKQoreworICBzdHJ1 Y3QgZm9ydF9hbGxvY19zcGxheV90cmVlX2tleV9zIG5lZWRsZTsKKyAgZm9ydF9hbGxvY19z cGxheV90cmVlX25vZGUgbjsKKyAgbmVlZGxlLnB0ciA9IHB0cjsKKyAgbiA9IGZvcnRfYWxs b2Nfc3BsYXlfdHJlZV9sb29rdXBfbm9kZSAoJmZvcnRfYWxsb2Nfc2NhbGFycywgJm5lZWRs ZSk7CisgIGlmIChuKQorICAgIHsKKyAgICAgIGZvcnRfYWxsb2Nfc3BsYXlfdHJlZV9yZW1v dmUgKCZmb3J0X2FsbG9jX3NjYWxhcnMsICZuLT5rZXkpOworICAgICAgZnJlZSAobik7Cisg ICAgfQorICByZXR1cm4gbiAhPSBOVUxMOworfQorCisKICNkZWZpbmUgb21wX21heF9wcmVk ZWZpbmVkX2FsbG9jIG9tcF90aHJlYWRfbWVtX2FsbG9jCiAKIGVudW0gZ29tcF9udW1hX21l bWtpbmRfa2luZApkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLmggYi9saWJnb21wL2xp YmdvbXAuaAppbmRleCAxNWE3NjdjZjMxNy4uOWExMTE2MzY2MDcgMTAwNjQ0Ci0tLSBhL2xp YmdvbXAvbGliZ29tcC5oCisrKyBiL2xpYmdvbXAvbGliZ29tcC5oCkBAIC0xMjcyLDYgKzEy NzIsNyBAQCByZXZlcnNlX3NwbGF5X2NvbXBhcmUgKHJldmVyc2Vfc3BsYXlfdHJlZV9rZXkg eCwgcmV2ZXJzZV9zcGxheV90cmVlX2tleSB5KQogfQogCiAjZGVmaW5lIHNwbGF5X3RyZWVf cHJlZml4IHJldmVyc2UKKyNkZWZpbmUgc3BsYXlfdHJlZV9zdGF0aWMKICNpbmNsdWRlICJz cGxheS10cmVlLmgiCiAKIC8qIEluZGlyZWN0IHRhcmdldCBmdW5jdGlvbiBzcGxheS10cmVl IGhhbmRsaW5nLiAgKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC5tYXAgYi9saWJn b21wL2xpYmdvbXAubWFwCmluZGV4IDkwYzQwMTQ1M2IyLi42NTkwMWRmZjIzNSAxMDA2NDQK LS0tIGEvbGliZ29tcC9saWJnb21wLm1hcAorKysgYi9saWJnb21wL2xpYmdvbXAubWFwCkBA IC00MTksOSArNDE5LDE1IEBAIEdPTVBfNS4xIHsKIEdPTVBfNS4xLjEgewogICBnbG9iYWw6 CiAJR09NUF90YXNrd2FpdF9kZXBlbmRfbm93YWl0OwotCUdPTVBfdGFyZ2V0X21hcF9pbmRp cmVjdF9wdHI7CiB9IEdPTVBfNS4xOwogCitHT01QXzUuMS4yIHsKKyAgZ2xvYmFsOgorCUdP TVBfYWRkX2FsbG9jOworCUdPTVBfaXNfYWxsb2M7CisJR09NUF90YXJnZXRfbWFwX2luZGly ZWN0X3B0cjsKK30gR09NUF81LjEuMTsKKwogT0FDQ18yLjAgewogICBnbG9iYWw6CiAJYWNj X2dldF9udW1fZGV2aWNlczsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC50ZXhpIGIv bGliZ29tcC9saWJnb21wLnRleGkKaW5kZXggOWNiODkzZTc3MTkuLjVmZGMzYjJhNTJmIDEw MDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAudGV4aQorKysgYi9saWJnb21wL2xpYmdvbXAu dGV4aQpAQCAtMjMyLDcgKzIzMiw5IEBAIFRoZSBPcGVuTVAgNC41IHNwZWNpZmljYXRpb24g aXMgZnVsbHkgc3VwcG9ydGVkLgogQGl0ZW0gUHJlZGVmaW5lZCBtZW1vcnkgc3BhY2VzLCBt ZW1vcnkgYWxsb2NhdG9ycywgYWxsb2NhdG9yIHRyYWl0cwogICAgICAgQHRhYiBZIEB0YWIg U2VlIGFsc28gQHJlZntNZW1vcnkgYWxsb2NhdGlvbn0KIEBpdGVtIE1lbW9yeSBtYW5hZ2Vt ZW50IHJvdXRpbmVzIEB0YWIgWSBAdGFiCi1AaXRlbSBAY29kZXthbGxvY2F0ZX0gZGlyZWN0 aXZlIEB0YWIgUCBAdGFiIE9ubHkgQyBhbmQgRm9ydHJhbiwgb25seSBzdGFjayB2YXJpYWJs ZXMKK0BpdGVtIEBjb2Rle2FsbG9jYXRlfSBkaXJlY3RpdmUgQHRhYiBQCisgICAgICBAdGFi IE9ubHkgQyBmb3Igc3RhY2svYXV0b21hdGljIGFuZCBGb3J0cmFuIGZvciBzdGFjay9hdXRv bWF0aWMKKyAgICAgIGFuZCBhbGxvY2F0YWJsZS9wb2ludGVyIHZhcmlhYmxlcwogQGl0ZW0g QGNvZGV7YWxsb2NhdGV9IGNsYXVzZSBAdGFiIFAgQHRhYiBJbml0aWFsIHN1cHBvcnQKIEBp dGVtIEBjb2Rle3VzZV9kZXZpY2VfYWRkcn0gY2xhdXNlIG9uIEBjb2Rle3RhcmdldCBkYXRh fSBAdGFiIFkgQHRhYgogQGl0ZW0gQGNvZGV7YW5jZXN0b3J9IG1vZGlmaWVyIG9uIEBjb2Rl e2RldmljZX0gY2xhdXNlIEB0YWIgWSBAdGFiCkBAIC0zMDQsNyArMzA2LDcgQEAgVGhlIE9w ZW5NUCA0LjUgc3BlY2lmaWNhdGlvbiBpcyBmdWxseSBzdXBwb3J0ZWQuCiBAaXRlbSBAY29k ZXtzdHJpY3R9IG1vZGlmaWVyIGluIHRoZSBAY29kZXtncmFpbnNpemV9IGFuZCBAY29kZXtu dW1fdGFza3N9CiAgICAgICBjbGF1c2VzIG9mIHRoZSBAY29kZXt0YXNrbG9vcH0gY29uc3Ry dWN0IEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXthbGlnbn0gY2xhdXNlIGluIEBjb2Rle2Fs bG9jYXRlfSBkaXJlY3RpdmUgQHRhYiBQCi0gICAgICBAdGFiIE9ubHkgQyBhbmQgRm9ydHJh biAoYW5kIG9ubHkgc3RhY2sgdmFyaWFibGVzKQorICAgICAgQHRhYiBPbmx5IEMgYW5kIEZv cnRyYW4gKGFuZCBub3QgZm9yIHN0YXRpYyB2YXJpYWJsZXMpCiBAaXRlbSBAY29kZXthbGln bn0gbW9kaWZpZXIgaW4gQGNvZGV7YWxsb2NhdGV9IGNsYXVzZSBAdGFiIFkgQHRhYgogQGl0 ZW0gQGNvZGV7dGhyZWFkX2xpbWl0fSBjbGF1c2UgdG8gQGNvZGV7dGFyZ2V0fSBjb25zdHJ1 Y3QgQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle2hhc19kZXZpY2VfYWRkcn0gY2xhdXNlIHRv IEBjb2Rle3RhcmdldH0gY29uc3RydWN0IEB0YWIgWSBAdGFiCkBAIC00MDIsNyArNDA0LDcg QEAgdG8gYWRkcmVzcyBvZiBtYXRjaGluZyBtYXBwZWQgbGlzdCBpdGVtIHBlciA1LjEsIFNl Y3QuIDIuMjEuNy4yIEB0YWIgTiBAdGFiCiBAaXRlbSBEZXByZWNhdGlvbiBvZiBAY29kZXt0 b30gY2xhdXNlIG9uIGRlY2xhcmUgdGFyZ2V0IGRpcmVjdGl2ZSBAdGFiIE4gQHRhYgogQGl0 ZW0gRXh0ZW5kZWQgbGlzdCBvZiBkaXJlY3RpdmVzIHBlcm1pdHRlZCBpbiBGb3J0cmFuIHB1 cmUgcHJvY2VkdXJlcwogICAgICAgQHRhYiBZIEB0YWIKLUBpdGVtIE5ldyBAY29kZXthbGxv Y2F0b3JzfSBkaXJlY3RpdmUgZm9yIEZvcnRyYW4gQHRhYiBOIEB0YWIKK0BpdGVtIE5ldyBA Y29kZXthbGxvY2F0b3JzfSBkaXJlY3RpdmUgZm9yIEZvcnRyYW4gQHRhYiBZIEB0YWIKIEBp dGVtIERlcHJlY2F0aW9uIG9mIEBjb2Rle2FsbG9jYXRlfSBkaXJlY3RpdmUgZm9yIEZvcnRy YW4KICAgICAgIGFsbG9jYXRhYmxlcy9wb2ludGVycyBAdGFiIE4gQHRhYgogQGl0ZW0gT3B0 aW9uYWwgcGFpcmVkIEBjb2Rle2VuZH0gZGlyZWN0aXZlIHdpdGggQGNvZGV7ZGlzcGF0Y2h9 IEB0YWIgTiBAdGFiCkBAIC01NjU3LDggKzU2NTksMTIgQEAgVGhlIGRlc2NyaXB0aW9uIGJl bG93IGFwcGxpZXMgdG86CiAgICAgICBAb3B0aW9uey1mc3RhY2stYXJyYXlzfV0uKQogQGl0 ZW0gVXNpbmcgdGhlIEBjb2Rle2FsbG9jYXRlfSBkaXJlY3RpdmUgZm9yIHZhcmlhYmxlIGlu IHN0YXRpYyBtZW1vcnkgaXMKICAgICAgIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChjb21w aWxlIHRpbWUgZXJyb3IpLgotQGl0ZW0gVXNpbmcgdGhlIEBjb2Rle2FsbG9jYXRvcnN9IGRp cmVjdGl2ZSBmb3IgRm9ydHJhbiBwb2ludGVycyBhbmQKLSAgICAgIGFsbG9jYXRhYmxlcyBp cyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAoY29tcGlsZSB0aW1lIGVycm9yKS4KK0BpdGVt IEluIEZvcnRyYW4sIHRoZSBAY29kZXthbGxvY2F0b3JzfSBkaXJlY3RpdmUgYW5kIHRoZSBl eGVjdXRhYmxlCisgICAgICBAY29kZXthbGxvY2F0ZX0gZGlyZWN0aXZlIGZvciBGb3J0cmFu IHBvaW50ZXJzIGFuZCBhbGxvY2F0YWJsZXMgaXMKKyAgICAgIHN1cHBvcnRlZCwgYnV0IHJl cXVpcmVzIHRoYXQgZmlsZXMgY29udGFpbmluZyB0aG9zZSBkaXJlY3RpdmVzIGhhcyB0byBi ZQorICAgICAgY29tcGlsZWQgd2l0aCBAb3B0aW9uey1mb3Blbm1wLWFsbG9jYXRvcnN9LiAg QWRkaXRpb25hbGx5LCBhbGwgZmlsZXMgdGhhdAorICAgICAgbWlnaHQgZXhwbGljaXRseSBv ciBpbXBsaWNpdGx5IGRlYWxsb2NhdGUgbWVtb3J5IGFsbG9jYXRlZCB0aGF0IHdheSBtdXN0 CisgICAgICBhbHNvIGJlIGNvbXBpbGVkIHdpdGggdGhhdCBvcHRpb24uCiBAZW5kIGl0ZW1p emUKIAogRm9yIHRoZSBhdmFpbGFibGUgcHJlZGVmaW5lZCBhbGxvY2F0b3JzIGFuZCwgYXMg YXBwbGljYWJsZSwgdGhlaXIgYXNzb2NpYXRlZApkaWZmIC0tZ2l0IGEvbGliZ29tcC9zcGxh eS10cmVlLmMgYi9saWJnb21wL3NwbGF5LXRyZWUuYwppbmRleCAwMjY5NWQ0YjJiZC4uOWUw NzZmNTUxODAgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvc3BsYXktdHJlZS5jCisrKyBiL2xpYmdv bXAvc3BsYXktdHJlZS5jCkBAIC0xMzEsNyArMTMxLDExIEBAIHNwbGF5X3RyZWVfc3BsYXkg KHNwbGF5X3RyZWUgc3AsIHNwbGF5X3RyZWVfa2V5IGtleSkKIAogLyogSW5zZXJ0IGEgbmV3 IE5PREUgaW50byBTUC4gIFRoZSBOT0RFIHNob3VsZG4ndCBleGlzdCBpbiB0aGUgdHJlZS4g ICovCiAKKyNpZmRlZiBzcGxheV90cmVlX3N0YXRpYworX19hdHRyaWJ1dGVfXygodW51c2Vk KSkgc3RhdGljIHZvaWQKKyNlbHNlCiBhdHRyaWJ1dGVfaGlkZGVuIHZvaWQKKyNlbmRpZgog c3BsYXlfdHJlZV9pbnNlcnQgKHNwbGF5X3RyZWUgc3AsIHNwbGF5X3RyZWVfbm9kZSBub2Rl KQogewogICBpbnQgY29tcGFyaXNvbiA9IDA7CkBAIC0xNjcsNyArMTcxLDExIEBAIHNwbGF5 X3RyZWVfaW5zZXJ0IChzcGxheV90cmVlIHNwLCBzcGxheV90cmVlX25vZGUgbm9kZSkKIAog LyogUmVtb3ZlIG5vZGUgd2l0aCBLRVkgZnJvbSBTUC4gIEl0IGlzIG5vdCBhbiBlcnJvciBp ZiBpdCBkaWQgbm90IGV4aXN0LiAgKi8KIAorI2lmZGVmIHNwbGF5X3RyZWVfc3RhdGljCitf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBzdGF0aWMgdm9pZAorI2Vsc2UKIGF0dHJpYnV0ZV9o aWRkZW4gdm9pZAorI2VuZGlmCiBzcGxheV90cmVlX3JlbW92ZSAoc3BsYXlfdHJlZSBzcCwg c3BsYXlfdHJlZV9rZXkga2V5KQogewogICBzcGxheV90cmVlX3NwbGF5IChzcCwga2V5KTsK QEAgLTIwMiw3ICsyMTAsMjggQEAgc3BsYXlfdHJlZV9yZW1vdmUgKHNwbGF5X3RyZWUgc3As IHNwbGF5X3RyZWVfa2V5IGtleSkKIC8qIExvb2t1cCBLRVkgaW4gU1AsIHJldHVybmluZyBO T0RFIGlmIHByZXNlbnQsIGFuZCBOVUxMCiAgICBvdGhlcndpc2UuICAqLwogCisjaWZkZWYg c3BsYXlfdHJlZV9zdGF0aWMKK19fYXR0cmlidXRlX18oKHVudXNlZCkpIHN0YXRpYyBzcGxh eV90cmVlX25vZGUKKyNlbHNlCithdHRyaWJ1dGVfaGlkZGVuIHNwbGF5X3RyZWVfbm9kZQor I2VuZGlmCitzcGxheV90cmVlX2xvb2t1cF9ub2RlIChzcGxheV90cmVlIHNwLCBzcGxheV90 cmVlX2tleSBrZXkpCit7CisgIHNwbGF5X3RyZWVfc3BsYXkgKHNwLCBrZXkpOworCisgIGlm IChzcC0+cm9vdCAmJiBzcGxheV9jb21wYXJlICgmc3AtPnJvb3QtPmtleSwga2V5KSA9PSAw KQorICAgIHJldHVybiBzcC0+cm9vdDsKKyAgZWxzZQorICAgIHJldHVybiBOVUxMOworfQor CisvKiBMaWtld2lzZSBidXQgcmV0dXJuIHRoZSBrZXkuICAqLworCisjaWZkZWYgc3BsYXlf dHJlZV9zdGF0aWMKK19fYXR0cmlidXRlX18oKHVudXNlZCkpIHN0YXRpYyBzcGxheV90cmVl X2tleQorI2Vsc2UKIGF0dHJpYnV0ZV9oaWRkZW4gc3BsYXlfdHJlZV9rZXkKKyNlbmRpZgog c3BsYXlfdHJlZV9sb29rdXAgKHNwbGF5X3RyZWUgc3AsIHNwbGF5X3RyZWVfa2V5IGtleSkK IHsKICAgc3BsYXlfdHJlZV9zcGxheSAoc3AsIGtleSk7CkBAIC0yMzEsNyArMjYwLDExIEBA IHNwbGF5X3RyZWVfZm9yZWFjaF9pbnRlcm5hbCAoc3BsYXlfdHJlZV9ub2RlIG5vZGUsIHNw bGF5X3RyZWVfY2FsbGJhY2sgZnVuYywKIAogLyogUnVuIEZVTkMgb24gZWFjaCBvZiB0aGUg bm9kZXMgaW4gU1AuICAqLwogCisjaWZkZWYgc3BsYXlfdHJlZV9zdGF0aWMKK19fYXR0cmli dXRlX18oKHVudXNlZCkpIHN0YXRpYyB2b2lkCisjZWxzZQogYXR0cmlidXRlX2hpZGRlbiB2 b2lkCisjZW5kaWYKIHNwbGF5X3RyZWVfZm9yZWFjaCAoc3BsYXlfdHJlZSBzcCwgc3BsYXlf dHJlZV9jYWxsYmFjayBmdW5jLCB2b2lkICpkYXRhKQogewogICBzcGxheV90cmVlX2ZvcmVh Y2hfaW50ZXJuYWwgKHNwLT5yb290LCBmdW5jLCBkYXRhKTsKQEAgLTI1Myw4ICsyODYsMTMg QEAgc3BsYXlfdHJlZV9mb3JlYWNoX2ludGVybmFsX2xhenkgKHNwbGF5X3RyZWVfbm9kZSBu b2RlLAogICByZXR1cm4gc3BsYXlfdHJlZV9mb3JlYWNoX2ludGVybmFsX2xhenkgKG5vZGUt PnJpZ2h0LCBmdW5jLCBkYXRhKTsKIH0KIAorI2lmZGVmIHNwbGF5X3RyZWVfc3RhdGljCitf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBzdGF0aWMgdm9pZAorI2Vsc2UKIGF0dHJpYnV0ZV9o aWRkZW4gdm9pZAotc3BsYXlfdHJlZV9mb3JlYWNoX2xhenkgKHNwbGF5X3RyZWUgc3AsIHNw bGF5X3RyZWVfY2FsbGJhY2tfc3RvcCBmdW5jLCB2b2lkICpkYXRhKQorI2VuZGlmCitzcGxh eV90cmVlX2ZvcmVhY2hfbGF6eSAoc3BsYXlfdHJlZSBzcCwgc3BsYXlfdHJlZV9jYWxsYmFj a19zdG9wIGZ1bmMsCisJCQkgdm9pZCAqZGF0YSkKIHsKICAgc3BsYXlfdHJlZV9mb3JlYWNo X2ludGVybmFsX2xhenkgKHNwLT5yb290LCBmdW5jLCBkYXRhKTsKIH0KZGlmZiAtLWdpdCBh L2xpYmdvbXAvc3BsYXktdHJlZS5oIGIvbGliZ29tcC9zcGxheS10cmVlLmgKaW5kZXggOTc4 ZjFlNDk4MDAuLjA0ZmY5NDczOWIwIDEwMDY0NAotLS0gYS9saWJnb21wL3NwbGF5LXRyZWUu aAorKysgYi9saWJnb21wL3NwbGF5LXRyZWUuaApAQCAtMzUsNiArMzUsOCBAQCB0eXBlZGVm IHN0cnVjdCBzcGxheV90cmVlX2tleV9zICpzcGxheV90cmVlX2tleTsKICAgIGRlZmluZSBz cGxheV90cmVlX2tleV9zIHN0cnVjdHVyZSwgYW5kIGRlZmluZQogICAgc3BsYXlfY29tcGFy ZSBpbmxpbmUgZnVuY3Rpb24uCiAKKyAgIERlZmluZSBzcGxheV90cmVlX3N0YXRpYyB0byBt YXJrIGFsbCBmdW5jdGlvbnMgYXMgc3RhdGljLgorCiAgICBBbHRlcm5hdGl2ZWx5LCB0aGV5 IGNhbiBkZWZpbmUgc3BsYXlfdHJlZV9wcmVmaXggbWFjcm8gYmVmb3JlCiAgICBpbmNsdWRp bmcgdGhpcyBoZWFkZXIgYW5kIHRoZW4gYWxsIHRoZSBhYm92ZSB0eXBlcywgdGhlCiAgICBz cGxheV9jb21wYXJlIGZ1bmN0aW9uIGFuZCB0aGUgc3BsYXlfdHJlZV97bG9va3VwLGluc2Vy dF9yZW1vdmV9CkBAIC03Miw2ICs3NCw4IEBAIHR5cGVkZWYgc3RydWN0IHNwbGF5X3RyZWVf a2V5X3MgKnNwbGF5X3RyZWVfa2V5OwogICAgIHNwbGF5X3RyZWVfbmFtZSAoc3BsYXlfdHJl ZV9wcmVmaXgsIHNwbGF5X2NvbXBhcmUpCiAjIGRlZmluZSBzcGxheV90cmVlX2xvb2t1cAlc CiAgICAgc3BsYXlfdHJlZV9uYW1lIChzcGxheV90cmVlX3ByZWZpeCwgc3BsYXlfdHJlZV9s b29rdXApCisjIGRlZmluZSBzcGxheV90cmVlX2xvb2t1cF9ub2RlCVwKKyAgICBzcGxheV90 cmVlX25hbWUgKHNwbGF5X3RyZWVfcHJlZml4LCBzcGxheV90cmVlX2xvb2t1cF9ub2RlKQog IyBkZWZpbmUgc3BsYXlfdHJlZV9pbnNlcnQJXAogICAgIHNwbGF5X3RyZWVfbmFtZSAoc3Bs YXlfdHJlZV9wcmVmaXgsIHNwbGF5X3RyZWVfaW5zZXJ0KQogIyBkZWZpbmUgc3BsYXlfdHJl ZV9yZW1vdmUJXApAQCAtMTA1LDExICsxMDksMTkgQEAgc3RydWN0IHNwbGF5X3RyZWVfcyB7 CiB0eXBlZGVmIHZvaWQgKCpzcGxheV90cmVlX2NhbGxiYWNrKSAoc3BsYXlfdHJlZV9rZXks IHZvaWQgKik7CiB0eXBlZGVmIGludCAoKnNwbGF5X3RyZWVfY2FsbGJhY2tfc3RvcCkgKHNw bGF5X3RyZWVfa2V5LCB2b2lkICopOwogCisjaWZuZGVmIHNwbGF5X3RyZWVfc3RhdGljCiBl eHRlcm4gc3BsYXlfdHJlZV9rZXkgc3BsYXlfdHJlZV9sb29rdXAgKHNwbGF5X3RyZWUsIHNw bGF5X3RyZWVfa2V5KTsKK2V4dGVybiBzcGxheV90cmVlX25vZGUgc3BsYXlfdHJlZV9sb29r dXBfbm9kZSAoc3BsYXlfdHJlZSwgc3BsYXlfdHJlZV9rZXkpOwogZXh0ZXJuIHZvaWQgc3Bs YXlfdHJlZV9pbnNlcnQgKHNwbGF5X3RyZWUsIHNwbGF5X3RyZWVfbm9kZSk7CiBleHRlcm4g dm9pZCBzcGxheV90cmVlX3JlbW92ZSAoc3BsYXlfdHJlZSwgc3BsYXlfdHJlZV9rZXkpOwog ZXh0ZXJuIHZvaWQgc3BsYXlfdHJlZV9mb3JlYWNoIChzcGxheV90cmVlLCBzcGxheV90cmVl X2NhbGxiYWNrLCB2b2lkICopOwogZXh0ZXJuIHZvaWQgc3BsYXlfdHJlZV9mb3JlYWNoX2xh enkgKHNwbGF5X3RyZWUsIHNwbGF5X3RyZWVfY2FsbGJhY2tfc3RvcCwgdm9pZCAqKTsKKyNl bmRpZgorCisjaWZkZWYgc3BsYXlfdHJlZV9zdGF0aWNfdW51c2VkX2F0dHIKKyMgIHVuZGVm IHNwbGF5X3RyZWVfc3RhdGljX3VudXNlZF9hdHRyCisjZW5kaWYKKwogI2Vsc2UgIC8qIHNw bGF5X3RyZWVfYyAqLwogIyAgaWZkZWYgc3BsYXlfdHJlZV9wcmVmaXgKICMgICAgaW5jbHVk ZSAic3BsYXktdHJlZS5jIgpAQCAtMTE3LDYgKzEyOSwxMCBAQCBleHRlcm4gdm9pZCBzcGxh eV90cmVlX2ZvcmVhY2hfbGF6eSAoc3BsYXlfdHJlZSwgc3BsYXlfdHJlZV9jYWxsYmFja19z dG9wLCB2b2lkCiAjICB1bmRlZiBzcGxheV90cmVlX2MKICNlbmRpZiAvKiAjaWZuZGVmIHNw bGF5X3RyZWVfYyAqLwogCisjaWZkZWYgc3BsYXlfdHJlZV9zdGF0aWMKKyMgIHVuZGVmIHNw bGF5X3RyZWVfc3RhdGljCisjZW5kaWYKKwogI2lmZGVmIHNwbGF5X3RyZWVfcHJlZml4CiAj ICB1bmRlZiBzcGxheV90cmVlX25hbWVfMQogIyAgdW5kZWYgc3BsYXlfdHJlZV9uYW1lCkBA IC0xMjgsNiArMTQ0LDcgQEAgZXh0ZXJuIHZvaWQgc3BsYXlfdHJlZV9mb3JlYWNoX2xhenkg KHNwbGF5X3RyZWUsIHNwbGF5X3RyZWVfY2FsbGJhY2tfc3RvcCwgdm9pZAogIyAgdW5kZWYg c3BsYXlfdHJlZV9rZXkKICMgIHVuZGVmIHNwbGF5X2NvbXBhcmUKICMgIHVuZGVmIHNwbGF5 X3RyZWVfbG9va3VwCisjICB1bmRlZiBzcGxheV90cmVlX2xvb2t1cF9ub2RlCiAjICB1bmRl ZiBzcGxheV90cmVlX2luc2VydAogIyAgdW5kZWYgc3BsYXlfdHJlZV9yZW1vdmUKICMgIHVu ZGVmIHNwbGF5X3RyZWVfZm9yZWFjaApkaWZmIC0tZ2l0IGEvbGliZ29tcC90YXJnZXQuYyBi L2xpYmdvbXAvdGFyZ2V0LmMKaW5kZXggZjMwYzIwMjU1ZDMuLjA2MzdkMzRmMTI1IDEwMDY0 NAotLS0gYS9saWJnb21wL3RhcmdldC5jCisrKyBiL2xpYmdvbXAvdGFyZ2V0LmMKQEAgLTQ3 LDYgKzQ3LDcgQEAKIAogLyogRGVmaW5lIGFub3RoZXIgc3BsYXkgdHJlZSBpbnN0YW50aWF0 aW9uIC0gZm9yIHJldmVyc2Ugb2ZmbG9hZC4gICovCiAjZGVmaW5lIHNwbGF5X3RyZWVfcHJl Zml4IHJldmVyc2UKKyNkZWZpbmUgc3BsYXlfdHJlZV9zdGF0aWMKICNkZWZpbmUgc3BsYXlf dHJlZV9jCiAjaW5jbHVkZSAic3BsYXktdHJlZS5oIgogCmRpZmYgLS1naXQgYS9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdG9ycy0xLmY5MCBiL2xpYmdvbXAv dGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0b3JzLTEuZjkwCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MzVhMzdjZDk1OQotLS0gL2Rldi9udWxs CisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0b3JzLTEu ZjkwCkBAIC0wLDAgKzEsNjggQEAKKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Bl bm1wLWFsbG9jYXRvcnMgLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KK21vZHVsZSBtCisgIHVz ZSBvbXBfbGliCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludHB0cl90CisgIGlt cGxpY2l0IG5vbmUgKHR5cGUsZXh0ZXJuYWwpCisgIGludGVnZXIob21wX2FsbG9jYXRvcl9o YW5kbGVfa2luZCkgOjogaGFuZGxlICAKKyAgaW50ZWdlcihjX2ludHB0cl90KSA6OiBpcHRy CitlbmQgbW9kdWxlIG0KKworc3Vicm91dGluZSBzY2FsYXIKKyAgdXNlIG0KKyAgaW1wbGlj aXQgbm9uZSAodHlwZSxleHRlcm5hbCkKKyAgaW50ZWdlciA6OiBpCisgIGludGVnZXIsIGFs bG9jYXRhYmxlIDo6IFNTUworICBpID0gNSAgISByZXF1aXJlZCBleGVjdXRpdmUgc3RhdGVt ZW50IGJlZm9yZSAnb21wIGFsbG9jYXRvcnMnCisgICEkb21wIGFsbG9jYXRlIGFsbG9jYXRv cihoYW5kbGUpCisgIGFsbG9jYXRlKFNTUykKKyAgaWYgKG1vZCAobG9jIChzc3MpLCA2NCkg Lz0gMCkgc3RvcCAxCisgIGRlYWxsb2NhdGUoU1NTKQorICBhbGxvY2F0ZShTU1MpCitlbmQK KyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJzc3MgPSBcXChpbnRlZ2Vy XFwoa2luZD00XFwpIFxcKlxcKSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCg0LCA0LCBEXFwu XFswLTlcXStcXCk7IiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiR09NUF9hZGRfYWxsb2MgXFwoc3NzXFwpOyIgMSAib3JpZ2luYWwi IH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImlmIFxcKEdPTVBf aXNfYWxsb2MgXFwoc3NzXFwpXFwpIiAyICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChzc3MsIDBC XFwpOyIgMiAib3JpZ2luYWwiIH0gfQorCitzdWJyb3V0aW5lIGFycmF5CisgIHVzZSBtCisg IGltcGxpY2l0IG5vbmUgKHR5cGUsZXh0ZXJuYWwpCisgIGludGVnZXIgOjogaQorICBpbnRl Z2VyLCBhbGxvY2F0YWJsZSA6OiBBKDopCisgIGkgPSA1ICAhIHJlcXVpcmVkIGV4ZWN1dGl2 ZSBzdGF0ZW1lbnQgYmVmb3JlICdvbXAgYWxsb2NhdG9ycycKKyAgISRvbXAgYWxsb2NhdGUg YWxsb2NhdG9yKGhhbmRsZSkgYWxpZ24oNTEyKQorICBhbGxvY2F0ZShBKDUpKQorICBpZiAo bW9kIChsb2MgKEEpLCA1MTIpIC89IDApIHN0b3AgMgorICBBPVsxXQorICBpZiAobW9kIChs b2MgKEEpLCA2NCkgLz0gMCkgc3RvcCAzCisgIGRlYWxsb2NhdGUoQSkKKyAgQT1bMV0KKyAg ZGVhbGxvY2F0ZShBKQorICBjYWxsIG9tcF9zZXRfZGVmYXVsdF9hbGxvY2F0b3IgKGhhbmRs ZSkKKyAgISRvbXAgYWxsb2NhdGUKKyAgYWxsb2NhdGUoQSg3KSkKKyAgaWYgKG1vZCAobG9j IChBKSwgNjQpIC89IDApIHN0b3AgNAorZW5kCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiYS5kdHlwZSA9IHsuZWxlbV9sZW49NCwgLnZlcnNpb249MCwgLnJhbms9 MSwgLnR5cGU9MX07IiA1ICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiXFwuZWxlbV9sZW49NCIgNSAib3JpZ2luYWwiIH0gfQorISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImEuZGF0YSA9IFxcKHZvaWQgXFwqIHJl c3RyaWN0XFwpIF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKDUxMiwgMjAsIERcXC5cWzAtOVxd K1xcKTsiIDEgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJhLmRhdGEgPSBcXCh2b2lkIFxcKiByZXN0cmljdFxcKSBfX2J1aWx0aW5fR09N UF9hbGxvYyBcXCg0LCAyOCwgMEJcXCk7IiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYS5kdHlwZS52ZXJzaW9uID0gMTsiIDIgIm9y aWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJhLmRh dGEgPSBcXCh2b2lkIFxcKiByZXN0cmljdFxcKSBcXChhLmR0eXBlLnZlcnNpb24gPT0gMSBc XD8gX19idWlsdGluX29tcF9yZWFsbG9jIFxcKFxcKHZvaWQgXFwqXFwpIGEuZGF0YSwgNCwg MEIsIDBCXFwpIDogX19idWlsdGluX3JlYWxsb2MgXFwoXFwodm9pZCBcXCpcXCkgYS5kYXRh LCA0XFwpXFwpOyIgMiAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgImlmIFxcKGEuZHR5cGUudmVyc2lvbiA9PSAxXFwpIiAzICJvcmlnaW5h bCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGlu X0dPTVBfZnJlZSBcXChcXChpbnRlZ2VyXFwoa2luZD00XFwpXFxcWzA6XFxcXSBcXCogcmVz dHJpY3RcXCkgYS5kYXRhLCAwQlxcKTsiIDMgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJhLmR0eXBlLnZlcnNpb24gPSAwOyIgMyAib3Jp Z2luYWwiIH0gfQorCitwcm9ncmFtIG1haW4KKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZSAo dHlwZSxleHRlcm5hbCkKKyAgZXh0ZXJuYWwgOjogc2NhbGFyLCBhcnJheQorICB0eXBlIChv bXBfYWxsb2N0cmFpdCksIHBhcmFtZXRlciA6OiB0cmFpdHMoKikgJgorICAgICAgPSBbb21w X2FsbG9jdHJhaXQob21wX2F0a19zeW5jX2hpbnQsIG9tcF9hdHZfY29udGVuZGVkKSwgJgor ICAgICAgICAgb21wX2FsbG9jdHJhaXQob21wX2F0a19hbGlnbm1lbnQsIDY0KV0KKyAgaGFu ZGxlID0gb21wX2luaXRfYWxsb2NhdG9yIChvbXBfaGlnaF9id19tZW1fYWxsb2MsIHNpemUo dHJhaXRzKSwgdHJhaXRzKQorICBjYWxsIHNjYWxhcgorICBjYWxsIGFycmF5CisgIGNhbGwg b21wX2Rlc3Ryb3lfYWxsb2NhdG9yIChoYW5kbGUpCitlbmQKKwpkaWZmIC0tZ2l0IGEvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRvcnMtMi5mOTAgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdG9ycy0yLmY5MApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzQyZmJkMzFlM2UKLS0tIC9kZXYv bnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdG9y cy0yLmY5MApAQCAtMCwwICsxLDEwMSBAQAorISB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LWZvcGVubXAtYWxsb2NhdG9ycyIgfQorbW9kdWxlIG0KKyAgaW1wbGljaXQgbm9uZSAodHlw ZSwgZXh0ZXJuYWwpCisgIHR5cGUgdAorICAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IEFj b21wLCBCY29tcCg6KQorICBlbmQgdHlwZSB0CisKK2NvbnRhaW5zCisKK3N1YnJvdXRpbmUg aW50ZW50X291dChhYSwgYmIsIGNjLCBkZCwgZWUsIGZmKQorICBpbnRlZ2VyLCBhbGxvY2F0 YWJsZSxpbnRlbnQob3V0KSA6OiBhYSwgYmIoOikKKyAgdHlwZSh0KSwgaW50ZW50KG91dCkg OjogY2MsIGRkKDQpCisgIHR5cGUodCksIGFsbG9jYXRhYmxlLCBpbnRlbnQob3V0KSA6OiBl ZSwgZmYoOikKK2VuZAorCitzdWJyb3V0aW5lIHEocWEsIHFiLCBxYywgcWQsIHFlLCBxZikK KyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogcWEsIHFiKDopCisgIHR5cGUodCkgOjogcWMs IHFkKDQpCisgIHR5cGUodCksIGFsbG9jYXRhYmxlIDo6IHFlLCBxZig6KQorICBjYWxsIGlu dGVudF9vdXQgKHFhLCBxYiwgcWMsIHFkLCBxZSwgcWYpCitlbmQgc3Vicm91dGluZSBxCisK K3N1YnJvdXRpbmUgcgorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiByMSwgcjIoOikKKyAg dHlwZSh0KSA6OiByMywgcjQoNCkKKyAgdHlwZSh0KSwgYWxsb2NhdGFibGUgOjogcjUsIHI2 KDopCisKKyAgY2FsbCBxKHIxLHIyLHIzLHI0LHI1LHI2KQorCisgIGFsbG9jYXRlKHIxLHIy KDMpKQorICBhbGxvY2F0ZShyNSxyNig0KSkKKyAgYWxsb2NhdGUocjMlQWNvbXAsIHIzJUJj b21wKDIpKQorICBhbGxvY2F0ZShyNCgyKSVBY29tcCwgcjQoMiklQmNvbXAoMikpCisgIGFs bG9jYXRlKHI1JUFjb21wLCByNSVCY29tcCgyKSkKKyAgYWxsb2NhdGUocjYoMyklQWNvbXAs IHI2KDMpJUJjb21wKDIpKQorICAhJG9tcCBhbGxvY2F0ZSBhbGlnbigxMjgpCisgIGFsbG9j YXRlKHI0KDMpJUFjb21wLCByNCgzKSVCY29tcCgyKSwgJgorICAgICAgICAgICByNigxKSVB Y29tcCwgcjYoMSklQmNvbXAoMikpCisgIGlmIChtb2QgKGxvYyAocjQoMyklQWNvbXApLCAx MjgpIC89IDApIHN0b3AgMQorICBpZiAobW9kIChsb2MgKHI0KDMpJUJjb21wKSwgMTI4KSAv PSAwKSBzdG9wIDIKKyAgaWYgKG1vZCAobG9jIChyNigxKSVBY29tcCksIDEyOCkgLz0gMCkg c3RvcCAzCisgIGlmIChtb2QgKGxvYyAocjYoMSklQmNvbXApLCAxMjgpIC89IDApIHN0b3Ag MworICBjYWxsIHEocjEscjIscjMscjQscjUscjYpCisKKyAgISRvbXAgYWxsb2NhdGUgYWxp Z24oNjQpCisgIGFsbG9jYXRlKHIxLHIyKDMpKQorICBpZiAobW9kIChsb2MgKHIxKSwgNjQp IC89IDApIHN0b3AgMQorICBpZiAobW9kIChsb2MgKHIyKSwgNjQpIC89IDApIHN0b3AgMQor ICAhJG9tcCBhbGxvY2F0ZSBhbGlnbig2NCkKKyAgYWxsb2NhdGUocjUscjYoNCkpCisgIGlm IChtb2QgKGxvYyAocjUpLCA2NCkgLz0gMCkgc3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjYp LCA2NCkgLz0gMCkgc3RvcCAxCisgICEkb21wIGFsbG9jYXRlIGFsaWduKDY0KQorICBhbGxv Y2F0ZShyMyVBY29tcCwgcjMlQmNvbXAoMikpCisgIGlmIChtb2QgKGxvYyAocjMlQWNvbXAp LCA2NCkgLz0gMCkgc3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjMlQmNvbXApLCA2NCkgLz0g MCkgc3RvcCAxCisgICEkb21wIGFsbG9jYXRlIGFsaWduKDY0KQorICBhbGxvY2F0ZShyNCgy KSVBY29tcCwgcjQoMiklQmNvbXAoMikpCisgIGlmIChtb2QgKGxvYyAocjQoMiklQWNvbXAp LCA2NCkgLz0gMCkgc3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjQoMiklQmNvbXApLCA2NCkg Lz0gMCkgc3RvcCAxCisgICEkb21wIGFsbG9jYXRlIGFsaWduKDY0KQorICBhbGxvY2F0ZShy NSVBY29tcCwgcjUlQmNvbXAoMikpCisgIGlmIChtb2QgKGxvYyAocjUlQWNvbXApLCA2NCkg Lz0gMCkgc3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjUlQmNvbXApLCA2NCkgLz0gMCkgc3Rv cCAxCisgICEkb21wIGFsbG9jYXRlIGFsaWduKDY0KQorICBhbGxvY2F0ZShyNigzKSVBY29t cCwgcjYoMyklQmNvbXAoMikpCisgIGlmIChtb2QgKGxvYyAocjYoMyklQWNvbXApLCA2NCkg Lz0gMCkgc3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjYoMyklQmNvbXApLCA2NCkgLz0gMCkg c3RvcCAxCisgICEkb21wIGFsbG9jYXRlIGFsaWduKDEyOCkKKyAgYWxsb2NhdGUocjQoMykl QWNvbXAsIHI0KDMpJUJjb21wKDIpLCAmCisgICAgICAgICAgIHI2KDEpJUFjb21wLCByNigx KSVCY29tcCgyKSkKKyAgaWYgKG1vZCAobG9jIChyNCgzKSVBY29tcCksIDEyOCkgLz0gMCkg c3RvcCAxCisgIGlmIChtb2QgKGxvYyAocjQoMyklQmNvbXApLCAxMjgpIC89IDApIHN0b3Ag MgorICBpZiAobW9kIChsb2MgKHI2KDEpJUFjb21wKSwgMTI4KSAvPSAwKSBzdG9wIDMKKyAg aWYgKG1vZCAobG9jIChyNigxKSVCY29tcCksIDEyOCkgLz0gMCkgc3RvcCAzCisgIGNhbGwg cShyMSxyMixyMyxyNCxyNSxyNikKK2VuZCBzdWJyb3V0aW5lIHIKK2VuZAorCitzdWJyb3V0 aW5lIHMKKyAgdXNlIG0sIG9ubHkgOiB0CisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVy bmFsKQorICB0eXBlKHQpIDo6IHh4CisgIGludGVnZXIgOjogaSwgaWlpaWlpCisgIGkgPSA0 CisgICEkb21wIGFsbG9jYXRlCisgIGFsbG9jYXRlKHh4JUFjb21wLCB4eCVCY29tcCg0KSkK KyAgZGVhbGxvY2F0ZSh4eCVBY29tcCwgeHglQmNvbXApCisKKyAgISRvbXAgYWxsb2NhdGUK KyAgYWxsb2NhdGUoeHglQWNvbXAsIHh4JUJjb21wKDQpKQorICB4eCA9IHQoMSwgWzEsMl0p CitlbmQKKworcHJvZ3JhbSBtYWluCisgIHVzZSBtLCBvbmx5OiByCisgIGltcGxpY2l0IG5v bmUgKHR5cGUsIGV4dGVybmFsKQorICBleHRlcm5hbCBzCisgIGNhbGwgcworICBjYWxsIHIK K2VuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2Fs bG9jYXRvcnMtMy5mOTAgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxs b2NhdG9ycy0zLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MmUwNTkzOWE4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmZvcnRyYW4vYWxsb2NhdG9ycy0zLmY5MApAQCAtMCwwICsxLDI1IEBACishIHsgZGct YWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5hbCAtZm9wZW5tcC1hbGxv Y2F0b3JzIiB9CisKK3N1YnJvdXRpbmUgcworICBjaGFyYWN0ZXIoOiksIGFsbG9jYXRhYmxl IDo6IHMxLHMyCisKKyAgISRvbXAgYWxsb2NhdG9ycyBhbGxvY2F0ZShzMSkKKyAgYWxsb2Nh dGUoY2hhcmFjdGVyKGxlbj0zKSA6OiBzMSkKKworICAhJG9tcCBhbGxvY2F0b3JzIGFsbG9j YXRlKHMyKQorICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTUpIDo6IHMyKQorCisgIHMyKDE6 NSkgPSAiMTIiCisgIHMxID0gdHJpbShzMikKK2VuZAorISB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgInMxID0gXFwoY2hhcmFjdGVyXFwoa2luZD0xXFwpXFxcWzE6LnMx XFxcXSBcXCpcXCkgX19idWlsdGluX0dPTVBfYWxsb2MgXFwoMSwgMywgMEJcXCk7IiAxICJv cmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiczIg PSBcXChjaGFyYWN0ZXJcXChraW5kPTFcXClcXFxbMTouczJcXFxdIFxcKlxcKSBfX2J1aWx0 aW5fR09NUF9hbGxvYyBcXCgxLCA1LCAwQlxcKTsiIDEgIm9yaWdpbmFsIiB9IH0KKyEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJzMSA9IFxcKGNoYXJhY3RlclxcKGtp bmQ9MVxcKVxcXFsxOi5zMVxcXF0gXFwqXFwpIFxcKERcXC5cWzAtOVxdKyBcXD8gX19idWls dGluX29tcF9yZWFsbG9jIFxcKFxcKHZvaWQgXFwqXFwpIHMxLCBNQVhfRVhQUiA8XFwoc2l6 ZXR5cGVcXCkgbGVuLjEsIDE+LCAwQiwgMEJcXCkgOiBfX2J1aWx0aW5fcmVhbGxvYyBcXChc XCh2b2lkIFxcKlxcKSBzMSwgTUFYX0VYUFIgPFxcKHNpemV0eXBlXFwpIGxlbi4xLCAxPlxc KVxcKTsiIDEgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJHT01QX2FkZF9hbGxvYyBcXChzMVxcKTsiIDIgIm9yaWdpbmFsIiB9IH0KKyEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJPTVBfYWRkX2FsbG9jIFxcKHMy XFwpOyIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgImlmIFxcKEdPTVBfaXNfYWxsb2MgXFwoczJcXClcXCkiIDEgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJfX2J1aWx0aW5fR09N UF9mcmVlIFxcKHMyLCAwQlxcKTsiIDEgIm9yaWdpbmFsIiB9IH0KKworCitjYWxsIHMKK2Vu ZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9j YXRvcnMtNC5mOTAgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2Nh dG9ycy00LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTI2 ODllYTQxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmZvcnRyYW4vYWxsb2NhdG9ycy00LmY5MApAQCAtMCwwICsxLDU3IEBACishIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1hbGxvY2F0b3JzIiB9Cittb2R1bGUgbQoraW1w bGljaXQgbm9uZQordHlwZSB0CisgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IEFjb21wLCBC Y29tcCg6KQorICBjbGFzcygqKSwgYWxsb2NhdGFibGUgOjogQ2NvbXAsIERjb21wKDopCitl bmQgdHlwZSB0Citjb250YWlucworCitzdWJyb3V0aW5lIGludG91dChjLGQsZSxmKQoraW1w bGljaXQgbm9uZQorY2xhc3ModCksIGludGVudChvdXQpIDo6IGMsZCg0KQorY2xhc3ModCks IGFsbG9jYXRhYmxlLCBpbnRlbnQob3V0KSA6OiBlLGYoOikKK2VuZAorCitzdWJyb3V0aW5l IHEoYyxkLGUsZikKK2ltcGxpY2l0IG5vbmUKK2NsYXNzKHQpIDo6IGMsZCg0KQorY2xhc3Mo dCksIGFsbG9jYXRhYmxlIDo6IGUsZig6KQorY2FsbCBpbnRvdXQoYyxkLGUsZikKK2VuZCBz dWJyb3V0aW5lIHEKKworc3Vicm91dGluZSBzCitpbXBsaWNpdCBub25lCit0eXBlKHQpIDo6 IHh4CitjbGFzcyh0KSwgYWxsb2NhdGFibGUgOjogeXkKK2ludGVnZXIgOjogaSwgaWlpaWlp CitpID0gNAorISRvbXAgYWxsb2NhdGUKK2FsbG9jYXRlKHh4JUFjb21wLCB4eCVCY29tcCg0 KSkKK2RlYWxsb2NhdGUoeHglQWNvbXAsIHh4JUJjb21wKQorCishJG9tcCBhbGxvY2F0ZQor YWxsb2NhdGUoaW50ZWdlciA6OiB4eCVDY29tcCwgeHglRGNvbXAoNCkpCitkZWFsbG9jYXRl KHh4JUNjb21wLCB4eCVEY29tcCkKKworISRvbXAgYWxsb2NhdG9ycyBhbGxvY2F0ZSh5eSkK K2FsbG9jYXRlKHQgOjogeXkpCisKKyEkb21wIGFsbG9jYXRlCithbGxvY2F0ZShyZWFsIDo6 IHh4JUNjb21wLCB4eCVEY29tcCg0KSkKK2RlYWxsb2NhdGUoeHglQ2NvbXAsIHh4JURjb21w KQorCishJG9tcCBhbGxvY2F0ZQorYWxsb2NhdGUoeHglQWNvbXAsIHh4JUJjb21wKDQpKQor ISRvbXAgYWxsb2NhdGUKK2FsbG9jYXRlKGxvZ2ljYWwgOjogeHglQ2NvbXAsIHh4JURjb21w KDQpKQorCitpaWlpaWkgPSA1NTUKK3h4ID0gdCgxLCBbMSwyXSkKK2VuZAorCitlbmQgbW9k dWxlCisKK3VzZSBtCitjYWxsIHMKK2VuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRvcnMtNS5mOTAgYi9saWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdG9ycy01LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uODcwODg2MzAxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdG9ycy01LmY5MApAQCAt MCwwICsxLDI3IEBACishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1hbGxv Y2F0b3JzIiB9Cittb2R1bGUgbQorY29udGFpbnMKK3N1YnJvdXRpbmUgcyhhLGIsYyxkKQor aW50ZWdlciwgYWxsb2NhdGFibGUgOjogQSwgQgoraW50ZWdlciwgYWxsb2NhdGFibGUgOjog Qyg6KSwgRCg6KQorCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKEEsQikKK2FsbG9jYXRl KEEsQikKK2NhbGwgbW92ZV9hbGxvYyhBLEIpCisKKyEkb21wIGFsbG9jYXRvcnMgYWxsb2Nh dGUoQyxEKQorYWxsb2NhdGUoQyg1KSxEKDUpKQorY2FsbCBtb3ZlX2FsbG9jKEMsRCkKK2Vu ZAorCitzdWJyb3V0aW5lIHEoKQoraW50ZWdlciwgYWxsb2NhdGFibGUgOjogQSwgQgoraW50 ZWdlciwgYWxsb2NhdGFibGUgOjogQyg6KSwgRCg6KQorCitjYWxsIHMoYSxiLGMsZCkKK2Vu ZAorZW5kCisKK3VzZSBtCitjYWxsIHEKK2VuZAo= --------------eYLBmMMCSazEfkOarVf467op--