From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 4E0CB3858C54 for ; Sun, 8 Oct 2023 13:13:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4E0CB3858C54 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-CSE-ConnectionGUID: fWh7s/j1RN2tpq/OFsIfPw== X-CSE-MsgGUID: 2xDC5+3XQx67FHO5k4n3iQ== X-IronPort-AV: E=Sophos;i="6.03,207,1694764800"; d="scan'208,223";a="21099335" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 08 Oct 2023 05:13:10 -0800 IronPort-SDR: DcCPCG9qYvTMxufgPeYNzKlje2Mwdy8LC29Y6Rphl1mwm/42/idiFoDILdXfgtkXE/0n+Qdbn2 Hn3bVtpyUNvzLcRitGfMBUpSPZC0frMhgg+OoVyhv9RWtLsXPWGkL4iglgH5Op/WubZR83P+YC bH0Gefepi814MYe6TID2iXSifeaqDEDeocAAVX5oaK6oCdD+Ju2W4nZMZzUF9XQtuEY//lDUHJ Bompy4jY7clDLW1gVF70KDGl0WgtSyn7p5kQNVICBGkMa7LNDIgx/OkoEa/XMgSymDLVBdHqyV GAU= Content-Type: multipart/mixed; boundary="------------uy50Lo5Z8F7hlBttqydrf1x0" Message-ID: Date: Sun, 8 Oct 2023 14:13:02 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Kwok Cheung Yeung Subject: [PATCH] openmp: Add support for the 'indirect' clause in C/C++ Content-Language: en-GB To: gcc-patches CC: Jakub Jelinek , X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP 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: --------------uy50Lo5Z8F7hlBttqydrf1x0 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hello This patch adds support for the 'indirect' clause in the 'declare target' directive in C/C++ (Fortran to follow) and adds the necessary infrastructure to support indirect calls in target regions. This allows one to pass in pointers to functions that have been declared as indirect from the host to the target, then invoked via the passed-in pointer on the target device. This is done by processing the functions declared as indirect in a similar way to regular kernels - they are added as a separate entry to the offload tables which are embedded into the target code by mkoffload. When the image is loaded, the host reads the target version of the offload table, then combines it with the host version to produce an address map. This map is then written to the device memory and a pointer is set to point to it. The omp_device_lower pass now runs if any indirect functions are present. The pass searches for any indirect function calls, and runs a new builtin BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR to process the function pointer before making the indirect call. The builtin (implemented by GOMP_target_map_indirect_ptr) searches through the address map, returning the target address if found, or the original address if not. I've added two search algorithms - a simple linear search through the map, and another which builds up a splay tree from the map and uses that to do the search. I've enabled the splay-tree version by default, but the linear search is useful for debugging purposes so I have kept it in. The C++ support is currently limited to normal indirect calls - virtual calls on objects do not currently work. I believe the main issue is that the vtables are not currently copied across to the target. I have added some handling for OBJ_TYPE_REF to prevent the compiler from ICEing when it encounters a virtual call, but without the vtable this cannot work properly. Tested on a x86_64 host with offloading to NVPTX and AMD GCN, and bootstrapped on a x86_64 host. Okay for mainline? Thanks Kwok --------------uy50Lo5Z8F7hlBttqydrf1x0 Content-Type: text/plain; charset="UTF-8"; name="0001-openmp-Add-support-for-the-indirect-clause-in-C-C.patch" Content-Disposition: attachment; filename="0001-openmp-Add-support-for-the-indirect-clause-in-C-C.patch" Content-Transfer-Encoding: base64 RnJvbSA0NjEyOWMyNTQ5OTBhOWZmZjRiNmQ4NTEyZjA0YWQ4ZmE3ZDYxZjBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IFN1biwgOCBPY3QgMjAyMyAxMzo1MDoyNSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIG9wZW5tcDogQWRkIHN1cHBvcnQgZm9yIHRoZSAnaW5kaXJlY3QnIGNsYXVz ZSBpbiBDL0MrKwoKVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSAnaW5kaXJlY3QnIGNsYXVz ZSBpbiB0aGUgJ2RlY2xhcmUgdGFyZ2V0JwpkaXJlY3RpdmUuICBGdW5jdGlvbnMgZGVjbGFy ZWQgYXMgaW5kaXJlY3QgbWF5IGJlIGNhbGxlZCB2aWEgZnVuY3Rpb24KcG9pbnRlcnMgcGFz c2VkIGZyb20gdGhlIGhvc3QgaW4gb2ZmbG9hZGVkIGNvZGUuCgpWaXJ0dWFsIGNhbGxzIHRv IG1lbWJlciBmdW5jdGlvbnMgdmlhIHRoZSBvYmplY3QgcG9pbnRlciBpbiBDKysgYXJlCmN1 cnJlbnRseSBub3Qgc3VwcG9ydGVkIGluIHRhcmdldCByZWdpb25zLgoKMjAyMy0xMC0wOCAg S3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KCmdjYy9jLWZhbWls eS8KCSogYy1hdHRyaWJzLmNjIChjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgYXR0 cmlidXRlIGZvcgoJaW5kaXJlY3QgZnVuY3Rpb25zLgoJKiBjLXByYWdtYS5oIChlbnVtIHBh cm1hX29tcF9jbGF1c2UpOiBBZGQgZW50cnkgZm9yIGluZGlyZWN0IGNsYXVzZS4KCmdjYy9j LwoJKiBjLWRlY2wuY2MgKGNfZGVjbF9hdHRyaWJ1dGVzKTogQWRkIGF0dHJpYnV0ZSBmb3Ig aW5kaXJlY3QKCWZ1bmN0aW9ucy4KCSogYy1sYW5nLmggKGNfb21wX2RlY2xhcmVfdGFyZ2V0 X2F0dHIpOiBBZGQgaW5kaXJlY3QgZmllbGQuCgkqIGMtcGFyc2VyLmNjIChjX3BhcnNlcl9v bXBfY2xhdXNlX25hbWUpOiBIYW5kbGUgaW5kaXJlY3QgY2xhdXNlLgoJKGNfcGFyc2VyX29t cF9jbGF1c2VfaW5kaXJlY3QpOiBOZXcuCgkoY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzKTog SGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCShPTVBfREVDTEFSRV9UQVJHRVRfQ0xBVVNFX01B U0spOiBBZGQgaW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgkoY19wYXJzZXJfb21wX2RlY2xh cmVfdGFyZ2V0KTogSGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCShPTVBfQkVHSU5fREVDTEFS RV9UQVJHRVRfQ0xBVVNFX01BU0spOiBBZGQgaW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgko Y19wYXJzZXJfb21wX2JlZ2luKTogSGFuZGxlIGluZGlyZWN0IGNsYXVzZS4KCSogYy10eXBl Y2suY2MgKGNfZmluaXNoX29tcF9jbGF1c2VzKTogSGFuZGxlIGluZGlyZWN0IGNsYXVzZS4K CmdjYy9jcC8KCSogY3AtdHJlZS5oIChjcF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0cik6IEFk ZCBpbmRpcmVjdCBmaWVsZC4KCSogZGVjbDIuY2MgKGNwbHVzX2RlY2xfYXR0cmlidXRlcyk6 IEFkZCBhdHRyaWJ1dGUgZm9yIGluZGlyZWN0CglmdW5jdGlvbnMuCgkqIHBhcnNlci5jYyAo Y3BfcGFyc2VyX29tcF9jbGF1c2VfbmFtZSk6IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuCgko Y3BfcGFyc2VyX29tcF9jbGF1c2VfaW5kaXJlY3QpOiBOZXcuCgkoY3BfcGFyc2VyX29tcF9h bGxfY2xhdXNlcyk6IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuCgkoaGFuZGxlX29tcF9kZWNs YXJlX3RhcmdldF9jbGF1c2UpOiBBZGQgZXh0cmEgcGFyYW1ldGVyLiAgQWRkCglpbmRpcmVj dCBhdHRyaWJ1dGUgZm9yIGluZGlyZWN0IGZ1bmN0aW9ucy4KCShPTVBfREVDTEFSRV9UQVJH RVRfQ0xBVVNFX01BU0spOiBBZGQgaW5kaXJlY3QgY2xhdXNlIHRvIG1hc2suCgkoY3BfcGFy c2VyX29tcF9kZWNsYXJlX3RhcmdldCk6IEhhbmRsZSBpbmRpcmVjdCBjbGF1c2UuCgkoT01Q X0JFR0lOX0RFQ0xBUkVfVEFSR0VUX0NMQVVTRV9NQVNLKTogQWRkIGluZGlyZWN0IGNsYXVz ZSB0byBtYXNrLgoJKGNwX3BhcnNlcl9vbXBfYmVnaW4pOiBIYW5kbGUgaW5kaXJlY3QgY2xh dXNlLgoJKiBzZW1hbnRpY3MuY2MgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IEhhbmRsZSBpbmRp cmVjdCBjbGF1c2UuCgpnY2MvCgkqIGx0by1jZ3JhcGguY2MgKGVudW0gTFRPX3N5bXRhYl90 YWdzKTogQWRkIHRhZyBmb3IgaW5kaXJlY3QKCWZ1bmN0aW9ucy4KCShvdXRwdXRfb2ZmbG9h ZF90YWJsZXMpOiBXcml0ZSBpbmRpcmVjdCBmdW5jdGlvbnMuCgkoaW5wdXRfb2ZmbG9hZF90 YWJsZXMpOiByZWFkIGluZGlyZWN0IGZ1bmN0aW9ucy4KCSogbHRvLXNlY3Rpb24tbmFtZXMu aCAoT0ZGTE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUpOiBOZXcuCgkqIG9tcC1i dWlsdGlucy5kZWYgKEJVSUxUX0lOX0dPTVBfVEFSR0VUX01BUF9JTkRJUkVDVF9QVFIpOiBO ZXcuCgkqIG9tcC1vZmZsb2FkLmNjIChvZmZsb2FkX2luZF9mdW5jcyk6IE5ldy4KCShvbXBf ZGlzY292ZXJfaW1wbGljaXRfZGVjbGFyZV90YXJnZXQpOiBBZGQgZnVuY3Rpb25zIG1hcmtl ZCB3aXRoCgknb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0JyB0byBpbmRpcmVjdCBmdW5j dGlvbnMgbGlzdC4KCShvbXBfZmluaXNoX2ZpbGUpOiBBZGQgaW5kaXJlY3QgZnVuY3Rpb25z IHRvIHNlY3Rpb24gZm9yIG9mZmxvYWQKCWluZGlyZWN0IGZ1bmN0aW9ucy4KCShleGVjdXRl X29tcF9kZXZpY2VfbG93ZXIpOiBSZWRpcmVjdCBpbmRpcmVjdCBjYWxscyBvbiB0YXJnZXQg YnkKCXBhc3NpbmcgZnVuY3Rpb24gcG9pbnRlciB0byBCVUlMVF9JTl9HT01QX1RBUkdFVF9N QVBfSU5ESVJFQ1RfUFRSLgoJKHBhc3Nfb21wX2RldmljZV9sb3dlcjo6Z2F0ZSk6IFJ1biBw YXNzX29tcF9kZXZpY2VfbG93ZXIgaWYKCWluZGlyZWN0IGZ1bmN0aW9ucyBhcmUgcHJlc2Vu dC4KCSogb21wLW9mZmxvYWQuaCAob2ZmbG9hZF9pbmRfZnVuY3MpOiBOZXcuCgkqIHRyZWUt Y29yZS5oIChvbXBfY2xhdXNlX2NvZGUpOiBBZGQgT01QX0NMQVVTRV9JTkRJUkVDVC4KCSog dHJlZS5jYyAob21wX2NsYXVzZV9udW1fb3BzKTogQWRkIGVudHJ5IGZvciBPTVBfQ0xBVVNF X0lORElSRUNULgoJKG9tcF9jbGF1c2VfY29kZV9uYW1lKTogTGlrZXdpc2UuCgkqIHRyZWUu aCAoT01QX0NMQVVTRV9JTkRJUkVDVF9FWFBSKTogTmV3LgoJKiBjb25maWcvZ2NuL21rb2Zm bG9hZC5jYyAocHJvY2Vzc19hc20pOiBQcm9jZXNzIG9mZmxvYWRfaW5kX2Z1bmNzCglzZWN0 aW9uLiAgQ291bnQgbnVtYmVyIG9mIGluZGlyZWN0IGZ1bmN0aW9ucy4KCShwcm9jZXNzX29i aik6IEVtaXQgbnVtYmVyIG9mIGluZGlyZWN0IGZ1bmN0aW9ucy4KCSogY29uZmlnL252cHR4 L21rb2ZmbG9hZC5jYyAoaW5kX2Z1bmNfaWRzLCBpbmRfZnVuY3NfdGFpbCk6IE5ldy4KCShw cm9jZXNzKTogRW1pdCBvZmZsb2FkX2luZF9mdW5jX3RhYmxlIGluIFBUWCBjb2RlLiAgRW1p dCBpbmRpcmVjdAoJZnVuY3Rpb24gbmFtZXMgYW5kIGNvdW50IGluIGltYWdlLgoJKiBjb25m aWcvbnZwdHgvbnZwdHguY2MgKG52cHR4X3JlY29yZF9vZmZsb2FkX3N5bWJvbCk6IE1hcmsK CWluZGlyZWN0IGZ1bmN0aW9ucyBpbiBQVFggY29kZSB3aXRoIElORF9GVU5DX01BUC4KCmdj Yy90ZXN0c3VpdGUvCgkqIGMtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGly ZWN0LTEuYzogTmV3LgoJKiBjLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRp cmVjdC0yLmM6IE5ldy4KCmxpYmdjYy8KCSogb2ZmbG9hZHN0dWZmLmMgKE9GRkxPQURfSU5E X0ZVTkNfVEFCTEVfU0VDVElPTl9OQU1FKTogTmV3LgoJKF9fb2ZmbG9hZF9pbmRfZnVuY190 YWJsZSk6IE5ldy4KCShfX29mZmxvYWRfaW5kX2Z1bmNzX2VuZCk6IE5ldy4KCShfX09GRkxP QURfVEFCTEVfXyk6IEFkZCBlbnRyaWVzIGZvciBpbmRpcmVjdCBmdW5jdGlvbnMuCgpsaWJn b21wLwoJKiBNYWtlZmlsZS5hbSAobGliZ29tcF9sYV9TT1VSQ0VTKTogQWRkIHRhcmdldC1p bmRpcmVjdC5jLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogbGliZ29tcC1wbHVn aW4uaCAoR09NUF9JTkRJUkVDVF9BRERSX01BUCk6IE5ldyBkZWZpbmUuCgkoR09NUF9PRkZM T0FEX2xvYWRfaW1hZ2UpOiBBZGQgZXh0cmEgYXJndW1lbnQuCgkqIGxpYmdvbXAuaCAoc3Ry dWN0IGluZGlyZWN0X3NwbGF5X3RyZWVfa2V5X3MpOiBOZXcuCgkoaW5kaXJlY3Rfc3BsYXlf dHJlZV9ub2RlLCBpbmRpcmVjdF9zcGxheV90cmVlLAoJaW5kaXJlY3Rfc3BsYXlfdHJlZV9r ZXkpOiBOZXcuCgkoaW5kaXJlY3Rfc3BsYXlfY29tcGFyZSk6IE5ldy4KCSogbGliZ29tcC5t YXAgKEdPTVBfNS4xLjEpOiBBZGQgR09NUF90YXJnZXRfbWFwX2luZGlyZWN0X3B0ci4KCSog bGliZ29tcC50ZXhpIChPcGVuTVAgNS4xKTogVXBkYXRlIGRvY3VtZW50YXRpb24gb24gaW5k aXJlY3QKCWNhbGxzIGluIHRhcmdldCByZWdpb24gYW5kIG9uIGluZGlyZWN0IGNsYXVzZS4K CSogbGliZ29tcF9nLmggKEdPTVBfdGFyZ2V0X21hcF9pbmRpcmVjdF9wdHIpOiBBZGQgcHJv dG90eXBlLgoJKiBvYWNjLWhvc3QuYyAoaG9zdF9sb2FkX2ltYWdlKTogQWRkIGV4dHJhIGFy Z3VtZW50LgoJKiB0YXJnZXQuYyAoZ29tcF9sb2FkX2ltYWdlX3RvX2RldmljZSk6IFBhc3Mg aG9zdCBpbmRpcmVjdAoJZnVuY3Rpb25zIHRhYmxlIHRvIGxvYWRfaW1hZ2VfZnVuYy4KCSog Y29uZmlnL2FjY2VsL3RhcmdldC1pbmRpcmVjdC5jOiBOZXcuCgkqIGNvbmZpZy9saW51eC90 YXJnZXQtaW5kaXJlY3QuYzogTmV3LgoJKiBjb25maWcvZ2NuL3RlYW0uYyAoYnVpbGRfaW5k aXJlY3RfbWFwKTogQWRkIHByb3RvdHlwZS4KCShnb21wX2djbl9lbnRlcl9rZXJuZWwpOiBJ bml0aWFsaXplIHN1cHBvcnQgZm9yIGluZGlyZWN0CglmdW5jdGlvbiBjYWxscyBvbiBHQ04g dGFyZ2V0LgoJKiBjb25maWcvbnZwdHgvdGVhbS5jIChidWlsZF9pbmRpcmVjdF9tYXApOiBB ZGQgcHJvdG90eXBlLgoJKGdvbXBfbnZwdHhfbWFpbik6IEluaXRpYWxpemUgc3VwcG9ydCBm b3IgaW5kaXJlY3QgZnVuY3Rpb24KCWNhbGxzIG9uIE5WUFRYIHRhcmdldC4KCSogcGx1Z2lu L3BsdWdpbi1nY24uYyAoc3RydWN0IGdjbl9pbWFnZV9kZXNjKTogQWRkIGZpZWxkIGZvcgoJ aW5kaXJlY3QgZnVuY3Rpb25zIGNvdW50LgoJKEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKTog QWRkIGV4dHJhIGFyZ3VtZW50LiAgQnVpbGQgYWRkcmVzcwoJdHJhbnNsYXRpb24gdGFibGUg YW5kIGNvcHkgaXQgdG8gdGFyZ2V0IG1lbW9yeS4KCSogcGx1Z2luL3BsdWdpbi1udnB0eC5j IChudnB0eF90ZGF0YSk6IEFkZCBmaWVsZCBmb3IgaW5kaXJlY3QKCWZ1bmN0aW9ucyBjb3Vu dC4KCShHT01QX09GRkxPQURfbG9hZF9pbWFnZSk6IEFkZCBleHRyYSBhcmd1bWVudC4gIEJ1 aWxkIGFkZHJlc3MKCXRyYW5zbGF0aW9uIHRhYmxlIGFuZCBjb3B5IGl0IHRvIHRhcmdldCBt ZW1vcnkuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNsYXJlLXRhcmdl dC1pbmRpcmVjdC0xLmM6IE5ldy4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9u L2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTIuYzogTmV3LgotLS0KIGdjYy9jLWZhbWlseS9j LWF0dHJpYnMuY2MgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvYy1mYW1pbHkv Yy1wcmFnbWEuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2MvYy1kZWNs LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsrCiBnY2MvYy9jLWxh bmcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2MvYy1w YXJzZXIuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysr LS0KIGdjYy9jL2MtdHlwZWNrLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBnY2MvY29uZmlnL2djbi9ta29mZmxvYWQuY2MgICAgICAgICAgICAgICAgICAgfCAg MjkgKysrLQogZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgICAgICAgICAgICAgICAg IHwgIDg3ICsrKysrKysrKysrLQogZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYyAgICAgICAg ICAgICAgICAgICAgIHwgICA2ICstCiBnY2MvY3AvY3AtdHJlZS5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2NwL2RlY2wyLmNjICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICsKIGdjYy9jcC9wYXJzZXIuY2MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwMCArKysrKysrKysrKystLQogZ2NjL2NwL3NlbWFudGlj cy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdjYy9sdG8tY2dyYXBo LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyArKysrCiBnY2MvbHRvLXNl Y3Rpb24tbmFtZXMuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL29tcC1i dWlsdGlucy5kZWYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGdjYy9vbXAt b2ZmbG9hZC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NyArKysrKysrKyst LQogZ2NjL29tcC1vZmZsb2FkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIC4uLi9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuYyAgICAgICAgICB8ICA1 MSArKysrKysrCiAuLi4vZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0yLmMgICAgICAg ICAgfCAgMjAgKysrCiBnY2MvdHJlZS1jb3JlLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDMgKwogZ2NjL3RyZWUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIGdjYy90cmVlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNCArCiBsaWJnY2Mvb2ZmbG9hZHN0dWZmLmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTIgKy0KIGxpYmdvbXAvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogbGliZ29tcC9NYWtlZmlsZS5pbiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA1ICstCiBsaWJnb21wL2NvbmZpZy9hY2NlbC90YXJnZXQtaW5k aXJlY3QuYyAgICAgICAgfCAxMjYgKysrKysrKysrKysrKysrKysrCiBsaWJnb21wL2NvbmZp Zy9nY24vdGVhbS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogbGliZ29tcC9jb25m aWcvbGludXgvdGFyZ2V0LWluZGlyZWN0LmMgICAgICAgIHwgIDMxICsrKysrCiBsaWJnb21w L2NvbmZpZy9udnB0eC90ZWFtLmMgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogbGliZ29t cC9saWJnb21wLXBsdWdpbi5oICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBsaWJn b21wL2xpYmdvbXAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrKwog bGliZ29tcC9saWJnb21wLm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGxpYmdvbXAvbGliZ29tcC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAr LQogbGliZ29tcC9saWJnb21wX2cuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGxpYmdvbXAvb2FjYy1ob3N0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MyArLQogbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jICAgICAgICAgICAgICAgICAgIHwg IDg3ICsrKysrKysrKysrLQogbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMgICAgICAg ICAgICAgICAgIHwgIDYyICsrKysrKysrLQogbGliZ29tcC90YXJnZXQuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDExICstCiAuLi4vZGVjbGFyZS10YXJnZXQtaW5kaXJl Y3QtMS5jICAgICAgICAgICAgICAgfCAgMjEgKysrCiAuLi4vZGVjbGFyZS10YXJnZXQtaW5k aXJlY3QtMi5jICAgICAgICAgICAgICAgfCAgMzMgKysrKysKIDQxIGZpbGVzIGNoYW5nZWQs IDkwOSBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUtdGFyZ2V0LWluZGly ZWN0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvbXAvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliZ29tcC9jb25maWcvYWNjZWwvdGFyZ2V0LWluZGlyZWN0LmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJnb21wL2NvbmZpZy9saW51eC90YXJnZXQtaW5kaXJlY3QuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2RlY2xh cmUtdGFyZ2V0LWluZGlyZWN0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTIu YwoKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MgYi9nY2MvYy1mYW1p bHkvYy1hdHRyaWJzLmNjCmluZGV4IGRjYTc1NDhiMmM2Li5jYjQwOTIxNmY2OSAxMDA2NDQK LS0tIGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYworKysgYi9nY2MvYy1mYW1pbHkvYy1h dHRyaWJzLmNjCkBAIC01MTgsNiArNTE4LDggQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9z cGVjIGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZVtdID0KIAkJCSAgICAgIGhhbmRsZV9vbXBf ZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLCBOVUxMIH0sCiAgIHsgIm9tcCBkZWNsYXJlIHRh cmdldCBpbXBsaWNpdCIsIDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkg ICAgICBoYW5kbGVfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZSwgTlVMTCB9LAorICB7 ICJvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QiLCAwLCAwLCB0cnVlLCBmYWxzZSwgZmFs c2UsIGZhbHNlLAorCQkJICAgICAgaGFuZGxlX29tcF9kZWNsYXJlX3RhcmdldF9hdHRyaWJ1 dGUsIE5VTEwgfSwKICAgeyAib21wIGRlY2xhcmUgdGFyZ2V0IGhvc3QiLCAwLCAwLCB0cnVl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJICAgICAgaGFuZGxlX29tcF9kZWNsYXJlX3Rh cmdldF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAib21wIGRlY2xhcmUgdGFyZ2V0IG5vaG9z dCIsIDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCmRpZmYgLS1naXQgYS9nY2Mv Yy1mYW1pbHkvYy1wcmFnbWEuaCBiL2djYy9jLWZhbWlseS9jLXByYWdtYS5oCmluZGV4IDYw M2M1MTUxOTc4Li45MDJhOTI0MzYwYiAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtcHJh Z21hLmgKKysrIGIvZ2NjL2MtZmFtaWx5L2MtcHJhZ21hLmgKQEAgLTEyNSw2ICsxMjUsNyBA QCBlbnVtIHByYWdtYV9vbXBfY2xhdXNlIHsKICAgUFJBR01BX09NUF9DTEFVU0VfSUYsCiAg IFBSQUdNQV9PTVBfQ0xBVVNFX0lOX1JFRFVDVElPTiwKICAgUFJBR01BX09NUF9DTEFVU0Vf SU5CUkFOQ0gsCisgIFBSQUdNQV9PTVBfQ0xBVVNFX0lORElSRUNULAogICBQUkFHTUFfT01Q X0NMQVVTRV9JU19ERVZJQ0VfUFRSLAogICBQUkFHTUFfT01QX0NMQVVTRV9MQVNUUFJJVkFU RSwKICAgUFJBR01BX09NUF9DTEFVU0VfTElORUFSLApkaWZmIC0tZ2l0IGEvZ2NjL2MvYy1k ZWNsLmNjIGIvZ2NjL2MvYy1kZWNsLmNjCmluZGV4IDU4MjJmYWYwMWI0Li5mMGJjMWM2NTYy MSAxMDA2NDQKLS0tIGEvZ2NjL2MvYy1kZWNsLmNjCisrKyBiL2djYy9jL2MtZGVjbC5jYwpA QCAtNTMzMSw2ICs1MzMxLDE0IEBAIGNfZGVjbF9hdHRyaWJ1dGVzICh0cmVlICpub2RlLCB0 cmVlIGF0dHJpYnV0ZXMsIGludCBmbGFncykKIAkgICAgYXR0cmlidXRlcwogCSAgICAgID0g dHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9tcCBkZWNsYXJlIHRhcmdldCBub2hvc3Qi KSwKIAkJCSAgIE5VTExfVFJFRSwgYXR0cmlidXRlcyk7CisKKwkgIGludCBpbmRpcmVjdAor CSAgICA9IGN1cnJlbnRfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHJpYnV0ZS0+bGFzdCAoKS5p bmRpcmVjdDsKKwkgIGlmIChpbmRpcmVjdCAmJiAhbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBk ZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJCQkJCSAgICAgYXR0cmlidXRlcykpCisJICAg IGF0dHJpYnV0ZXMKKwkgICAgICA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCJvbXAg ZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QiKSwKKwkJCSAgIE5VTExfVFJFRSwgYXR0cmlidXRl cyk7CiAJfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2MvYy1sYW5nLmggYi9nY2MvYy9j LWxhbmcuaAppbmRleCA0ZmVhMTE4NTVmMS4uY2IxM2UzNGU4MGUgMTAwNjQ0Ci0tLSBhL2dj Yy9jL2MtbGFuZy5oCisrKyBiL2djYy9jL2MtbGFuZy5oCkBAIC02Miw2ICs2Miw3IEBAIHN0 cnVjdCBHVFkoKCkpIGxhbmd1YWdlX2Z1bmN0aW9uIHsKIAogc3RydWN0IEdUWSgoKSkgY19v bXBfZGVjbGFyZV90YXJnZXRfYXR0ciB7CiAgIGludCBkZXZpY2VfdHlwZTsKKyAgaW50IGlu ZGlyZWN0OwogfTsKIAogLyogSWYgbm9uLXplcm8sIGltcGxpY2l0ICJvbXAgZGVjbGFyZSB0 YXJnZXQiIGF0dHJpYnV0ZSBpcyBhZGRlZCBpbnRvIHRoZQpkaWZmIC0tZ2l0IGEvZ2NjL2Mv Yy1wYXJzZXIuY2MgYi9nY2MvYy9jLXBhcnNlci5jYwppbmRleCAwZDQ2OGI4NmJkOC4uNTAx MjBhMTBhNWYgMTAwNjQ0Ci0tLSBhL2djYy9jL2MtcGFyc2VyLmNjCisrKyBiL2djYy9jL2Mt cGFyc2VyLmNjCkBAIC0xMzk3NSw2ICsxMzk3NSw4IEBAIGNfcGFyc2VyX29tcF9jbGF1c2Vf bmFtZSAoY19wYXJzZXIgKnBhcnNlcikKIAkgICAgcmVzdWx0ID0gUFJBR01BX09NUF9DTEFV U0VfSU5fUkVEVUNUSU9OOwogCSAgZWxzZSBpZiAoIXN0cmNtcCAoImluYnJhbmNoIiwgcCkp CiAJICAgIHJlc3VsdCA9IFBSQUdNQV9PTVBfQ0xBVVNFX0lOQlJBTkNIOworCSAgZWxzZSBp ZiAoIXN0cmNtcCAoImluZGlyZWN0IiwgcCkpCisJICAgIHJlc3VsdCA9IFBSQUdNQV9PTVBf Q0xBVVNFX0lORElSRUNUOwogCSAgZWxzZSBpZiAoIXN0cmNtcCAoImluZGVwZW5kZW50Iiwg cCkpCiAJICAgIHJlc3VsdCA9IFBSQUdNQV9PQUNDX0NMQVVTRV9JTkRFUEVOREVOVDsKIAkg IGVsc2UgaWYgKCFzdHJjbXAgKCJpc19kZXZpY2VfcHRyIiwgcCkpCkBAIC0xNDgzNSw2ICsx NDgzNyw0NyBAQCBjX3BhcnNlcl9vbXBfY2xhdXNlX2ZpbmFsIChjX3BhcnNlciAqcGFyc2Vy LCB0cmVlIGxpc3QpCiAgIHJldHVybiBsaXN0OwogfQogCisvKiBPcGVuTVAgNS4xOgorICAg aW5kaXJlY3QgWyggZXhwcmVzc2lvbiApXQorKi8KKworc3RhdGljIHRyZWUKK2NfcGFyc2Vy X29tcF9jbGF1c2VfaW5kaXJlY3QgKGNfcGFyc2VyICpwYXJzZXIsIHRyZWUgbGlzdCkKK3sK KyAgbG9jYXRpb25fdCBsb2NhdGlvbiA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlcikt PmxvY2F0aW9uOworICB0cmVlIHQ7CisKKyAgaWYgKGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBh cnNlciktPnR5cGUgPT0gQ1BQX09QRU5fUEFSRU4pCisgICAgeworICAgICAgbWF0Y2hpbmdf cGFyZW5zIHBhcmVuczsKKyAgICAgIGlmICghcGFyZW5zLnJlcXVpcmVfb3BlbiAocGFyc2Vy KSkKKwlyZXR1cm4gbGlzdDsKKworICAgICAgbG9jYXRpb25fdCBsb2MgPSBjX3BhcnNlcl9w ZWVrX3Rva2VuIChwYXJzZXIpLT5sb2NhdGlvbjsKKyAgICAgIGNfZXhwciBleHByID0gY19w YXJzZXJfZXhwcl9ub19jb21tYXMgKHBhcnNlciwgTlVMTCk7CisgICAgICBleHByID0gY29u dmVydF9sdmFsdWVfdG9fcnZhbHVlIChsb2MsIGV4cHIsIHRydWUsIHRydWUpOworICAgICAg dCA9IGNfb2JqY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uIChsb2MsIGV4cHIudmFs dWUpOworICAgICAgdCA9IGNfZnVsbHlfZm9sZCAodCwgZmFsc2UsIE5VTEwpOworICAgICAg aWYgKCFJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAodCkpCisJICB8fCBUUkVFX0NPREUg KHQpICE9IElOVEVHRVJfQ1NUKQorCXsKKwkgIGNfcGFyc2VyX2Vycm9yIChwYXJzZXIsICJl eHBlY3RlZCBjb25zdGFudCBpbnRlZ2VyIGV4cHJlc3Npb24iKTsKKwkgIHJldHVybiBsaXN0 OworCX0KKyAgICAgIHBhcmVucy5za2lwX3VudGlsX2ZvdW5kX2Nsb3NlIChwYXJzZXIpOwor ICAgIH0KKyAgZWxzZQorICAgIHQgPSBpbnRlZ2VyX29uZV9ub2RlOworCisgIGNoZWNrX25v X2R1cGxpY2F0ZV9jbGF1c2UgKGxpc3QsIE9NUF9DTEFVU0VfSU5ESVJFQ1QsICJpbmRpcmVj dCIpOworCisgIHRyZWUgYyA9IGJ1aWxkX29tcF9jbGF1c2UgKGxvY2F0aW9uLCBPTVBfQ0xB VVNFX0lORElSRUNUKTsKKyAgT01QX0NMQVVTRV9JTkRJUkVDVF9FWFBSIChjKSA9IHQ7Cisg IE9NUF9DTEFVU0VfQ0hBSU4gKGMpID0gbGlzdDsKKworICByZXR1cm4gYzsKK30KKwogLyog T3BlbkFDQywgT3Blbk1QIDIuNToKICAgIGlmICggZXhwcmVzc2lvbiApCiAKQEAgLTE4MzUy LDYgKzE4Mzk1LDEwIEBAIGNfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyAoY19wYXJzZXIgKnBh cnNlciwgb21wX2NsYXVzZV9tYXNrIG1hc2ssCiAJCQkJCSAgICAgdHJ1ZSwgY2xhdXNlcyk7 CiAJICBjX25hbWUgPSAiaW5fcmVkdWN0aW9uIjsKIAkgIGJyZWFrOworCWNhc2UgUFJBR01B X09NUF9DTEFVU0VfSU5ESVJFQ1Q6CisJICBjbGF1c2VzID0gY19wYXJzZXJfb21wX2NsYXVz ZV9pbmRpcmVjdCAocGFyc2VyLCBjbGF1c2VzKTsKKwkgIGNfbmFtZSA9ICJpbmRpcmVjdCI7 CisJICBicmVhazsKIAljYXNlIFBSQUdNQV9PTVBfQ0xBVVNFX0xBU1RQUklWQVRFOgogCSAg Y2xhdXNlcyA9IGNfcGFyc2VyX29tcF9jbGF1c2VfbGFzdHByaXZhdGUgKHBhcnNlciwgY2xh dXNlcyk7CiAJICBjX25hbWUgPSAibGFzdHByaXZhdGUiOwpAQCAtMjM3NDgsMTMgKzIzNzk1 LDE1IEBAIGNfZmluaXNoX29tcF9kZWNsYXJlX3NpbWQgKGNfcGFyc2VyICpwYXJzZXIsIHRy ZWUgZm5kZWNsLCB0cmVlIHBhcm1zLAogCSggKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdN QV9PTVBfQ0xBVVNFX1RPKQkJXAogCXwgKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9P TVBfQ0xBVVNFX0VOVEVSKQlcCiAJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09N UF9DTEFVU0VfTElOSykJCVwKLQl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01Q X0NMQVVTRV9ERVZJQ0VfVFlQRSkpCisJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01B X09NUF9DTEFVU0VfREVWSUNFX1RZUEUpCVwKKwl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQ UkFHTUFfT01QX0NMQVVTRV9JTkRJUkVDVCkpCiAKIHN0YXRpYyB2b2lkCiBjX3BhcnNlcl9v bXBfZGVjbGFyZV90YXJnZXQgKGNfcGFyc2VyICpwYXJzZXIpCiB7CiAgIHRyZWUgY2xhdXNl cyA9IE5VTExfVFJFRTsKICAgaW50IGRldmljZV90eXBlID0gMDsKKyAgYm9vbCBpbmRpcmVj dCA9IGZhbHNlOwogICBib29sIG9ubHlfZGV2aWNlX3R5cGUgPSB0cnVlOwogICBpZiAoY19w YXJzZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLCBDUFBfTkFNRSkKICAgICAgIHx8IChjX3Bh cnNlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXIsIENQUF9DT01NQSkKQEAgLTIzNzcxLDE2ICsy MzgyMCwyMSBAQCBjX3BhcnNlcl9vbXBfZGVjbGFyZV90YXJnZXQgKGNfcGFyc2VyICpwYXJz ZXIpCiAgIGVsc2UKICAgICB7CiAgICAgICBjX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9lb2wg KHBhcnNlcik7Ci0gICAgICBjX29tcF9kZWNsYXJlX3RhcmdldF9hdHRyIGF0dHIgPSB7IC0x IH07CisgICAgICBjX29tcF9kZWNsYXJlX3RhcmdldF9hdHRyIGF0dHIgPSB7IC0xLCAwIH07 CiAgICAgICB2ZWNfc2FmZV9wdXNoIChjdXJyZW50X29tcF9kZWNsYXJlX3RhcmdldF9hdHRy aWJ1dGUsIGF0dHIpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgZm9yICh0cmVlIGMgPSBj bGF1c2VzOyBjOyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCi0gICAgaWYgKE9NUF9DTEFV U0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSkKLSAgICAgIGRldmljZV90 eXBlIHw9IE9NUF9DTEFVU0VfREVWSUNFX1RZUEVfS0lORCAoYyk7CiAgIGZvciAodHJlZSBj ID0gY2xhdXNlczsgYzsgYyA9IE9NUF9DTEFVU0VfQ0hBSU4gKGMpKQogICAgIHsKICAgICAg IGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfREVWSUNFX1RZUEUpCisJ ZGV2aWNlX3R5cGUgfD0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRV9LSU5EIChjKTsKKyAgICAg IGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfSU5ESVJFQ1QpCisJaW5k aXJlY3QgfD0gIWludGVnZXJfemVyb3AgKE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQUiAoYykp OworICAgIH0KKyAgZm9yICh0cmVlIGMgPSBjbGF1c2VzOyBjOyBjID0gT01QX0NMQVVTRV9D SEFJTiAoYykpCisgICAgeworICAgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykgPT0gT01Q X0NMQVVTRV9ERVZJQ0VfVFlQRQorCSAgfHwgT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBf Q0xBVVNFX0lORElSRUNUKQogCWNvbnRpbnVlOwogICAgICAgdHJlZSB0ID0gT01QX0NMQVVT RV9ERUNMIChjKSwgaWQ7CiAgICAgICB0cmVlIGF0MSA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJv bXAgZGVjbGFyZSB0YXJnZXQiLCBERUNMX0FUVFJJQlVURVMgKHQpKTsKQEAgLTIzODQ4LDYg KzIzOTAyLDE3IEBAIGNfcGFyc2VyX29tcF9kZWNsYXJlX3RhcmdldCAoY19wYXJzZXIgKnBh cnNlcikKIAkJPSB0cmVlX2NvbnMgKGlkLCBOVUxMX1RSRUUsIERFQ0xfQVRUUklCVVRFUyAo dCkpOwogCSAgICB9CiAJfQorICAgICAgaWYgKGluZGlyZWN0KQorCXsKKwkgIHRyZWUgYXQ0 ID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJ CQkJICAgICAgIERFQ0xfQVRUUklCVVRFUyAodCkpOworCSAgaWYgKGF0NCA9PSBOVUxMX1RS RUUpCisJICAgIHsKKwkgICAgICBpZCA9IGdldF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUg dGFyZ2V0IGluZGlyZWN0Iik7CisJICAgICAgREVDTF9BVFRSSUJVVEVTICh0KQorCQk9IHRy ZWVfY29ucyAoaWQsIE5VTExfVFJFRSwgREVDTF9BVFRSSUJVVEVTICh0KSk7CisJICAgIH0K Kwl9CiAgICAgfQogICBpZiAoZGV2aWNlX3R5cGUgJiYgb25seV9kZXZpY2VfdHlwZSkKICAg ICBlcnJvcl9hdCAoT01QX0NMQVVTRV9MT0NBVElPTiAoY2xhdXNlcyksCkBAIC0yMzg2MCw3 ICsyMzkyNSw4IEBAIGNfcGFyc2VyX29tcF9kZWNsYXJlX3RhcmdldCAoY19wYXJzZXIgKnBh cnNlcikKICAgICNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGNsYXVzZXNbb3B0 c2VxXSBuZXctbGluZSAgKi8KIAogI2RlZmluZSBPTVBfQkVHSU5fREVDTEFSRV9UQVJHRVRf Q0xBVVNFX01BU0sJCQlcCi0JKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xB VVNFX0RFVklDRV9UWVBFKQorCSggKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBf Q0xBVVNFX0RFVklDRV9UWVBFKQlcCisJfCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01B X09NUF9DTEFVU0VfSU5ESVJFQ1QpKQogCiBzdGF0aWMgdm9pZAogY19wYXJzZXJfb21wX2Jl Z2luIChjX3BhcnNlciAqcGFyc2VyKQpAQCAtMjM4ODMsMTAgKzIzOTQ5LDE1IEBAIGNfcGFy c2VyX29tcF9iZWdpbiAoY19wYXJzZXIgKnBhcnNlcikKIAkJCQkJT01QX0JFR0lOX0RFQ0xB UkVfVEFSR0VUX0NMQVVTRV9NQVNLLAogCQkJCQkiI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFy ZSB0YXJnZXQiKTsKIAkgIGludCBkZXZpY2VfdHlwZSA9IDA7CisJICBpbnQgaW5kaXJlY3Qg PSAwOwogCSAgZm9yICh0cmVlIGMgPSBjbGF1c2VzOyBjOyBjID0gT01QX0NMQVVTRV9DSEFJ TiAoYykpCi0JICAgIGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0VfREVW SUNFX1RZUEUpCi0JICAgICAgZGV2aWNlX3R5cGUgfD0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQ RV9LSU5EIChjKTsKLQkgIGNfb21wX2RlY2xhcmVfdGFyZ2V0X2F0dHIgYXR0ciA9IHsgZGV2 aWNlX3R5cGUgfTsKKwkgICAgeworCSAgICAgIGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09 IE9NUF9DTEFVU0VfREVWSUNFX1RZUEUpCisJCWRldmljZV90eXBlIHw9IE9NUF9DTEFVU0Vf REVWSUNFX1RZUEVfS0lORCAoYyk7CisJICAgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykg PT0gT01QX0NMQVVTRV9JTkRJUkVDVCkKKwkJaW5kaXJlY3QgfD0gIWludGVnZXJfemVyb3Ag KE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQUiAoYykpOworCSAgICB9CisJICBjX29tcF9kZWNs YXJlX3RhcmdldF9hdHRyIGF0dHIgPSB7IGRldmljZV90eXBlLCBpbmRpcmVjdCB9OwogCSAg dmVjX3NhZmVfcHVzaCAoY3VycmVudF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLCBh dHRyKTsKIAl9CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jYyBi L2djYy9jL2MtdHlwZWNrLmNjCmluZGV4IGU1NWU4ODdkYTE0Li5lZDg4OWRkMzUzYSAxMDA2 NDQKLS0tIGEvZ2NjL2MvYy10eXBlY2suY2MKKysrIGIvZ2NjL2MvYy10eXBlY2suY2MKQEAg LTE1ODgwLDYgKzE1ODgwLDcgQEAgY19maW5pc2hfb21wX2NsYXVzZXMgKHRyZWUgY2xhdXNl cywgZW51bSBjX29tcF9yZWdpb25fdHlwZSBvcnQpCiAJY2FzZSBPTVBfQ0xBVVNFX0lGX1BS RVNFTlQ6CiAJY2FzZSBPTVBfQ0xBVVNFX0ZJTkFMSVpFOgogCWNhc2UgT01QX0NMQVVTRV9O T0hPU1Q6CisJY2FzZSBPTVBfQ0xBVVNFX0lORElSRUNUOgogCSAgcGMgPSAmT01QX0NMQVVT RV9DSEFJTiAoYyk7CiAJICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9n Y24vbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9nY24vbWtvZmZsb2FkLmNjCmluZGV4IDhi NjA4YmYwMjRlLi42YTEwOWMzYTkyNiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vbWtv ZmZsb2FkLmNjCisrKyBiL2djYy9jb25maWcvZ2NuL21rb2ZmbG9hZC5jYwpAQCAtNDc3LDcg KzQ3Nyw4IEBAIGNvcHlfZWFybHlfZGVidWdfaW5mbyAoY29uc3QgY2hhciAqaW5maWxlLCBj b25zdCBjaGFyICpvdXRmaWxlKQogc3RhdGljIHZvaWQKIHByb2Nlc3NfYXNtIChGSUxFICpp biwgRklMRSAqb3V0LCBGSUxFICpjZmlsZSkKIHsKLSAgaW50IGZuX2NvdW50ID0gMCwgdmFy X2NvdW50ID0gMCwgZGltc19jb3VudCA9IDAsIHJlZ2NvdW50X2NvdW50ID0gMDsKKyAgaW50 IGZuX2NvdW50ID0gMCwgdmFyX2NvdW50ID0gMCwgaW5kX2ZuX2NvdW50ID0gMDsKKyAgaW50 IGRpbXNfY291bnQgPSAwLCByZWdjb3VudF9jb3VudCA9IDA7CiAgIHN0cnVjdCBvYnN0YWNr IGZuc19vcywgZGltc19vcywgcmVnY291bnRzX29zOwogICBvYnN0YWNrX2luaXQgKCZmbnNf b3MpOwogICBvYnN0YWNrX2luaXQgKCZkaW1zX29zKTsKQEAgLTUwNiw3ICs1MDcsOCBAQCBw cm9jZXNzX2FzbSAoRklMRSAqaW4sIEZJTEUgKm91dCwgRklMRSAqY2ZpbGUpCiAgICAgeyBJ Tl9DT0RFLAogICAgICAgSU5fTUVUQURBVEEsCiAgICAgICBJTl9WQVJTLAotICAgICAgSU5f RlVOQ1MKKyAgICAgIElOX0ZVTkNTLAorICAgICAgSU5fSU5EX0ZVTkNTLAogICAgIH0gc3Rh dGUgPSBJTl9DT0RFOwogICB3aGlsZSAoZmdldHMgKGJ1Ziwgc2l6ZW9mIChidWYpLCBpbikp CiAgICAgewpAQCAtNTY4LDYgKzU3MCwxNyBAQCBwcm9jZXNzX2FzbSAoRklMRSAqaW4sIEZJ TEUgKm91dCwgRklMRSAqY2ZpbGUpCiAJICAgICAgfQogCSAgICBicmVhazsKIAkgIH0KKwlj YXNlIElOX0lORF9GVU5DUzoKKwkgIHsKKwkgICAgY2hhciAqZnVuY25hbWU7CisJICAgIGlm IChzc2NhbmYgKGJ1ZiwgIlx0LjhieXRlXHQlbXNcbiIsICZmdW5jbmFtZSkpCisJICAgICAg eworCQlmcHV0cyAoYnVmLCBvdXQpOworCQlpbmRfZm5fY291bnQrKzsKKwkJY29udGludWU7 CisJICAgICAgfQorCSAgICBicmVhazsKKwkgIH0KIAl9CiAKICAgICAgIGNoYXIgZHVtbXk7 CkBAIC01OTUsNiArNjA4LDE1IEBAIHByb2Nlc3NfYXNtIChGSUxFICppbiwgRklMRSAqb3V0 LCBGSUxFICpjZmlsZSkKIAkJICIub2ZmbG9hZF9mdW5jX3RhYmxlOlxuIiwKIAkJIG91dCk7 CiAJfQorICAgICAgZWxzZSBpZiAoc3NjYW5mIChidWYsICIgLnNlY3Rpb24gLmdudS5vZmZs b2FkX2luZF9mdW5jcyVjIiwgJmR1bW15KSA+IDApCisJeworCSAgc3RhdGUgPSBJTl9JTkRf RlVOQ1M7CisJICBmcHV0cyAoYnVmLCBvdXQpOworCSAgZnB1dHMgKCJcdC5nbG9iYWwgLm9m ZmxvYWRfaW5kX2Z1bmNfdGFibGVcbiIKKwkJICJcdC50eXBlIC5vZmZsb2FkX2luZF9mdW5j X3RhYmxlLCBAb2JqZWN0XG4iCisJCSAiLm9mZmxvYWRfaW5kX2Z1bmNfdGFibGU6XG4iLAor CQkgb3V0KTsKKwl9CiAgICAgICBlbHNlIGlmIChzc2NhbmYgKGJ1ZiwgIiAuYW1kZ3B1X21l dGFkYXRhJWMiLCAmZHVtbXkpID4gMCkKIAl7CiAJICBzdGF0ZSA9IElOX01FVEFEQVRBOwpA QCAtNjMyLDYgKzY1NCw3IEBAIHByb2Nlc3NfYXNtIChGSUxFICppbiwgRklMRSAqb3V0LCBG SUxFICpjZmlsZSkKICAgZnByaW50ZiAoY2ZpbGUsICIjaW5jbHVkZSA8c3RkYm9vbC5oPlxu XG4iKTsKIAogICBmcHJpbnRmIChjZmlsZSwgInN0YXRpYyBjb25zdCBpbnQgZ2NuX251bV92 YXJzID0gJWQ7XG5cbiIsIHZhcl9jb3VudCk7CisgIGZwcmludGYgKGNmaWxlLCAic3RhdGlj IGNvbnN0IGludCBnY25fbnVtX2luZF9mdW5jcyA9ICVkO1xuXG4iLCBpbmRfZm5fY291bnQp OwogCiAgIC8qIER1bXAgb3V0IGZ1bmN0aW9uIGlkZW50cy4gICovCiAgIGZwcmludGYgKGNm aWxlLCAic3RhdGljIGNvbnN0IHN0cnVjdCBoc2Ffa2VybmVsX2Rlc2NyaXB0aW9uIHtcbiIK QEAgLTcyNiwxMiArNzQ5LDE0IEBAIHByb2Nlc3Nfb2JqIChGSUxFICppbiwgRklMRSAqY2Zp bGUsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkgICAiICBjb25zdCBzdHJ1Y3QgZ2NuX2lt YWdlICpnY25faW1hZ2U7XG4iCiAJICAgIiAgdW5zaWduZWQga2VybmVsX2NvdW50O1xuIgog CSAgICIgIGNvbnN0IHN0cnVjdCBoc2Ffa2VybmVsX2Rlc2NyaXB0aW9uICprZXJuZWxfaW5m b3M7XG4iCisJICAgIiAgdW5zaWduZWQgaW5kX2Z1bmNfY291bnQ7XG4iCiAJICAgIiAgdW5z aWduZWQgZ2xvYmFsX3ZhcmlhYmxlX2NvdW50O1xuIgogCSAgICJ9IGdjbl9kYXRhID0ge1xu IgogCSAgICIgICVkLFxuIgogCSAgICIgICZnY25faW1hZ2UsXG4iCiAJICAgIiAgc2l6ZW9m IChnY25fa2VybmVscykgLyBzaXplb2YgKGdjbl9rZXJuZWxzWzBdKSxcbiIKIAkgICAiICBn Y25fa2VybmVscyxcbiIKKwkgICAiICBnY25fbnVtX2luZF9mdW5jcyxcbiIKIAkgICAiICBn Y25fbnVtX3ZhcnNcbiIKIAkgICAifTtcblxuIiwgb21wX3JlcXVpcmVzKTsKIApkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgYi9nY2MvY29uZmlnL252cHR4 L21rb2ZmbG9hZC5jYwppbmRleCBhYWVhOWZiMzIwZC4uZmI3NWNhMDkwZGYgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjCisrKyBiL2djYy9jb25maWcvbnZw dHgvbWtvZmZsb2FkLmNjCkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBpZF9tYXAKIH07CiAK IHN0YXRpYyBpZF9tYXAgKmZ1bmNfaWRzLCAqKmZ1bmNzX3RhaWwgPSAmZnVuY19pZHM7Citz dGF0aWMgaWRfbWFwICppbmRfZnVuY19pZHMsICoqaW5kX2Z1bmNzX3RhaWwgPSAmaW5kX2Z1 bmNfaWRzOwogc3RhdGljIGlkX21hcCAqdmFyX2lkcywgKip2YXJzX3RhaWwgPSAmdmFyX2lk czsKIAogLyogRmlsZXMgdG8gdW5saW5rLiAgKi8KQEAgLTMwMiw2ICszMDMsMTEgQEAgcHJv Y2VzcyAoRklMRSAqaW4sIEZJTEUgKm91dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQogCQkg ICAgICBvdXRwdXRfZm5fcHRyID0gdHJ1ZTsKIAkJICAgICAgcmVjb3JkX2lkIChpbnB1dCAr IGkgKyA5LCAmZnVuY3NfdGFpbCk7CiAJCSAgICB9CisJCSAgZWxzZSBpZiAoc3RhcnRzd2l0 aCAoaW5wdXQgKyBpLCAiSU5EX0ZVTkNfTUFQICIpKQorCQkgICAgeworCQkgICAgICBvdXRw dXRfZm5fcHRyID0gdHJ1ZTsKKwkJICAgICAgcmVjb3JkX2lkIChpbnB1dCArIGkgKyAxMywg JmluZF9mdW5jc190YWlsKTsKKwkJICAgIH0KIAkJICBlbHNlCiAJCSAgICBhYm9ydCAoKTsK IAkJICAvKiBTa2lwIHRvIG5leHQgbGluZS4gKi8KQEAgLTQyMiw2ICs0MjgsNzcgQEAgcHJv Y2VzcyAoRklMRSAqaW4sIEZJTEUgKm91dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQogICAg ICAgZnByaW50ZiAob3V0LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQogCisgIGlmIChpbmRf ZnVuY19pZHMpCisgICAgeworICAgICAgY29uc3QgY2hhciBuZWVkbGVbXSA9ICIvLyBCRUdJ TiBHTE9CQUwgRlVOQ1RJT04gREVDTDogIjsKKworICAgICAgZnByaW50ZiAob3V0LCAic3Rh dGljIGNvbnN0IGNoYXIgcHR4X2NvZGVfJXVbXSA9XG4iLCBvYmpfY291bnQrKyk7CisgICAg ICBmcHJpbnRmIChvdXQsICJcdFwiLnZlcnNpb24gIik7CisgICAgICBmb3IgKHNpemVfdCBp ID0gMDsgdmVyc2lvbltpXSAhPSAnXDAnICYmIHZlcnNpb25baV0gIT0gJ1xuJzsgaSsrKQor CWZwdXRjICh2ZXJzaW9uW2ldLCBvdXQpOworICAgICAgZnByaW50ZiAob3V0LCAiXCJcblx0 XCIudGFyZ2V0IHNtXyIpOworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IHNtX3ZlcltpXSAh PSAnXDAnICYmIHNtX3ZlcltpXSAhPSAnXG4nOyBpKyspCisJZnB1dGMgKHNtX3ZlcltpXSwg b3V0KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlwiXG5cdFwiLmZpbGUgMiBcXFwiPGR1bW15 PlxcXCJcIlxuIik7CisKKyAgICAgIC8qIFdPUktBUk9VTkQgLSBzZWUgUFIgMTA4MDk4CisJ IEl0IHNlZW1zIGFzIGlmIG9sZGVyIENVREEgSklUIGNvbXBpbGVyIG9wdGltaXplcyB0aGUg ZnVuY3Rpb24gcG9pbnRlcnMKKwkgaW4gb2ZmbG9hZF9mdW5jX3RhYmxlIHRvIE5VTEwsIHdo aWNoIGNhbiBiZSBwcmV2ZW50ZWQgYnkgYWRkaW5nIGEKKwkgZHVtbXkgcHJvY2VkdXJlLiBX aXRoIENVREEgMTEuMSwgaXQgc2VlbXMgdG8gd29yayBmaW5lIHdpdGhvdXQKKwkgd29ya2Fy b3VuZCB3aGlsZSBDVURBIDEwLjIgYXMgc29tZSBhbmNpZW50IHZlcnNpb24gaGF2ZSBuZWVk IHRoZQorCSB3b3JrYXJvdW5kLiBBc3N1bWluZyBDVURBIDExLjAgZml4ZXMgaXQsIGVtaXR0 aW5nIGl0IGNvdWxkIGJlCisJIHJlc3RyaWN0ZWQgdG8gJ2lmIChzbV92ZXIyWzBdIDwgOCAm JiB2ZXJzaW9uMlswXSA8IDcpJyBhcyBzbV84MCBhbmQKKwkgUFRYIElTQSA3LjAgYXJlIG5l dyBpbiBDVURBIDExLjA7IGZvciAxMS4xIGl0IHdvdWxkIGJlIHNtXzg2IGFuZAorCSBQVFgg SVNBIDcuMS4gICovCisgICAgICBmcHJpbnRmIChvdXQsICJcblx0XCIuZnVuYyBfX2R1bW15 JGZ1bmMyICggKTtcIlxuIik7CisgICAgICBmcHJpbnRmIChvdXQsICJcdFwiLmZ1bmMgX19k dW1teSRmdW5jMiAoIClcIlxuIik7CisgICAgICBmcHJpbnRmIChvdXQsICJcdFwie1wiXG4i KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlx0XCJ9XCJcbiIpOworCisgICAgICBzaXplX3Qg ZmlkeCA9IDA7CisgICAgICBmb3IgKGlkID0gaW5kX2Z1bmNfaWRzOyBpZDsgaWQgPSBpZC0+ bmV4dCkKKwl7CisJICBmcHJpbnRmIChvdXQsICJcdFwiLmV4dGVybiAiKTsKKwkgIGNvbnN0 IGNoYXIgKnAgPSBpbnB1dCArIGZpbGVfaWR4W2ZpZHhdOworCSAgd2hpbGUgKHRydWUpCisJ ICAgIHsKKwkgICAgICBwID0gc3Ryc3RyIChwLCBuZWVkbGUpOworCSAgICAgIGlmICghcCkK KwkJeworCQkgIGZpZHgrKzsKKwkJICBpZiAoZmlkeCA+PSBmaWxlX2NudCkKKwkJICAgIGJy ZWFrOworCQkgIHAgPSBpbnB1dCArIGZpbGVfaWR4W2ZpZHhdOworCQkgIGNvbnRpbnVlOwor CQl9CisJICAgICAgcCArPSBzdHJsZW4gKG5lZWRsZSk7CisJICAgICAgaWYgKCFzdGFydHN3 aXRoIChwLCBpZC0+cHR4X25hbWUpKQorCQljb250aW51ZTsKKwkgICAgICBwICs9IHN0cmxl biAoaWQtPnB0eF9uYW1lKTsKKwkgICAgICBpZiAoKnAgIT0gJ1xuJykKKwkJY29udGludWU7 CisJICAgICAgcCsrOworCSAgICAgIC8qIFNraXAgb3ZlciBhbnkgZGlyZWN0aXZlcy4gICov CisJICAgICAgd2hpbGUgKCFzdGFydHN3aXRoIChwLCAiLmZ1bmMiKSkKKwkJd2hpbGUgKCpw KysgIT0gJyAnKTsKKwkgICAgICBmb3IgKDsgKnAgIT0gJ1wwJyAmJiAqcCAhPSAnXG4nOyBw KyspCisJCWZwdXRjICgqcCwgb3V0KTsKKwkgICAgICBicmVhazsKKwkgICAgfQorCSAgZnBy aW50ZiAob3V0LCAiXCJcbiIpOworCSAgaWYgKGZpZHggPT0gZmlsZV9jbnQpCisJICAgIGZh dGFsX2Vycm9yIChpbnB1dF9sb2NhdGlvbiwKKwkJCSAiQ2Fubm90IGZpbmQgZnVuY3Rpb24g ZGVjbGFyYXRpb24gZm9yICVxcyIsCisJCQkgaWQtPnB0eF9uYW1lKTsKKwl9CisKKyAgICAg IGZwcmludGYgKG91dCwgIlx0XCIudmlzaWJsZSAuZ2xvYmFsIC5hbGlnbiA4IC51NjQgIgor CQkgICAgIiRvZmZsb2FkX2luZF9mdW5jX3RhYmxlW10gPSB7Iik7CisgICAgICBmb3IgKGNv bW1hID0gIiIsIGlkID0gaW5kX2Z1bmNfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlkID0gaWQt Pm5leHQpCisJZnByaW50ZiAob3V0LCAiJXNcIlxuXHRcdFwiJXMiLCBjb21tYSwgaWQtPnB0 eF9uYW1lKTsKKyAgICAgIGZwcmludGYgKG91dCwgIn07XFxuXCI7XG5cbiIpOworICAgIH0K KwogICAvKiBEdW1wIG91dCBhcnJheSBvZiBwb2ludGVycyB0byBwdHggb2JqZWN0IHN0cmlu Z3MuICAqLwogICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3Qgc3RydWN0IHB0eF9vYmog e1xuIgogCSAgICIgIGNvbnN0IGNoYXIgKmNvZGU7XG4iCkBAIC00NDcsNiArNTI0LDEyIEBA IHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykK IAkgICAgIGlkLT5kaW0gPyBpZC0+ZGltIDogIiIpOwogICBmcHJpbnRmIChvdXQsICJcbn07 XG5cbiIpOwogCisgIC8qIER1bXAgb3V0IGluZGlyZWN0IGZ1bmN0aW9uIGlkZW50cy4gICov CisgIGZwcmludGYgKG91dCwgInN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBpbmRfZnVuY19t YXBwaW5nc1tdID0geyIpOworICBmb3IgKGNvbW1hID0gIiIsIGlkID0gaW5kX2Z1bmNfaWRz OyBpZDsgY29tbWEgPSAiLCIsIGlkID0gaWQtPm5leHQpCisgICAgZnByaW50ZiAob3V0LCAi JXNcblx0XCIlc1wiIiwgY29tbWEsIGlkLT5wdHhfbmFtZSk7CisgIGZwcmludGYgKG91dCwg IlxufTtcblxuIik7CisKICAgZnByaW50ZiAob3V0LAogCSAgICJzdGF0aWMgY29uc3Qgc3Ry dWN0IG52cHR4X2RhdGEge1xuIgogCSAgICIgIHVpbnRwdHJfdCBvbXBfcmVxdWlyZXNfbWFz aztcbiIKQEAgLTQ1NiwxMiArNTM5LDE0IEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpv dXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkgICAiICB1bnNpZ25lZCB2YXJfbnVtO1xu IgogCSAgICIgIGNvbnN0IHN0cnVjdCBudnB0eF9mbiAqZm5fbmFtZXM7XG4iCiAJICAgIiAg dW5zaWduZWQgZm5fbnVtO1xuIgorCSAgICIgIHVuc2lnbmVkIGluZF9mbl9udW07XG4iCiAJ ICAgIn0gbnZwdHhfZGF0YSA9IHtcbiIKIAkgICAiICAlZCwgcHR4X29ianMsIHNpemVvZiAo cHR4X29ianMpIC8gc2l6ZW9mIChwdHhfb2Jqc1swXSksXG4iCiAJICAgIiAgdmFyX21hcHBp bmdzLCIKIAkgICAiICBzaXplb2YgKHZhcl9tYXBwaW5ncykgLyBzaXplb2YgKHZhcl9tYXBw aW5nc1swXSksXG4iCiAJICAgIiAgZnVuY19tYXBwaW5ncywiCi0JICAgIiAgc2l6ZW9mIChm dW5jX21hcHBpbmdzKSAvIHNpemVvZiAoZnVuY19tYXBwaW5nc1swXSlcbiIKKwkgICAiICBz aXplb2YgKGZ1bmNfbWFwcGluZ3MpIC8gc2l6ZW9mIChmdW5jX21hcHBpbmdzWzBdKSxcbiIK KwkgICAiICBzaXplb2YgKGluZF9mdW5jX21hcHBpbmdzKSAvIHNpemVvZiAoaW5kX2Z1bmNf bWFwcGluZ3NbMF0pXG4iCiAJICAgIn07XG5cbiIsIG9tcF9yZXF1aXJlcyk7CiAKICAgZnBy aW50ZiAob3V0LCAiI2lmZGVmIF9fY3BsdXNwbHVzXG4iCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL252cHR4L252cHR4LmNjIGIvZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYwppbmRleCBl ZGVmMzlmYjVlMS4uZWFmZjgxMmE1MjAgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbnZwdHgv bnZwdHguY2MKKysrIGIvZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYwpAQCAtNTkxOCw3ICs1 OTE4LDExIEBAIG52cHR4X3JlY29yZF9vZmZsb2FkX3N5bWJvbCAodHJlZSBkZWNsKQogCS8q IE9wZW5NUCBvZmZsb2FkaW5nIGRvZXMgbm90IHNldCB0aGlzIGF0dHJpYnV0ZS4gICovCiAJ dHJlZSBkaW1zID0gYXR0ciA/IFRSRUVfVkFMVUUgKGF0dHIpIDogTlVMTF9UUkVFOwogCi0J ZnByaW50ZiAoYXNtX291dF9maWxlLCAiLy86RlVOQ19NQVAgXCIlc1wiIiwKKwlmcHJpbnRm IChhc21fb3V0X2ZpbGUsICIvLzoiKTsKKwlpZiAobG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBk ZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJCQkgICAgICBERUNMX0FUVFJJQlVURVMgKGRl Y2wpKSkKKwkgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIklORF8iKTsKKwlmcHJpbnRmIChh c21fb3V0X2ZpbGUsICJGVU5DX01BUCBcIiVzXCIiLAogCQkgSURFTlRJRklFUl9QT0lOVEVS IChERUNMX0FTU0VNQkxFUl9OQU1FIChkZWNsKSkpOwogCiAJZm9yICg7IGRpbXM7IGRpbXMg PSBUUkVFX0NIQUlOIChkaW1zKSkKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10cmVlLmggYi9n Y2MvY3AvY3AtdHJlZS5oCmluZGV4IDZlMzQ5NTJkYTk5Li44ZDBhZDM4YzFhYiAxMDA2NDQK LS0tIGEvZ2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC0xODMx LDYgKzE4MzEsNyBAQCB1bmlvbiBHVFkoKGRlc2MgKCJjcF90cmVlX25vZGVfc3RydWN0dXJl ICgmJWgpIiksCiBzdHJ1Y3QgR1RZKCgpKSBjcF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0ciB7 CiAgIGJvb2wgYXR0cl9zeW50YXg7CiAgIGludCBkZXZpY2VfdHlwZTsKKyAgYm9vbCBpbmRp cmVjdDsKIH07CiAKIHN0cnVjdCBHVFkoKCkpIGNwX29tcF9iZWdpbl9hc3N1bWVzX2RhdGEg ewpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2RlY2wyLmNjIGIvZ2NjL2NwL2RlY2wyLmNjCmluZGV4 IDM0NGUxOWVjOThiLi5mODlkMzI5NTBlOSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wyLmNj CisrKyBiL2djYy9jcC9kZWNsMi5jYwpAQCAtMTc2OCw2ICsxNzY4LDEyIEBAIGNwbHVzX2Rl Y2xfYXR0cmlidXRlcyAodHJlZSAqZGVjbCwgdHJlZSBhdHRyaWJ1dGVzLCBpbnQgZmxhZ3Mp CiAJCWF0dHJpYnV0ZXMKIAkJICA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCJvbXAg ZGVjbGFyZSB0YXJnZXQgbm9ob3N0IiksCiAJCQkgICAgICAgTlVMTF9UUkVFLCBhdHRyaWJ1 dGVzKTsKKwkgICAgICBpZiAobGFzdC5pbmRpcmVjdAorCQkgICYmICFsb29rdXBfYXR0cmli dXRlICgib21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IiwKKwkJCQkJYXR0cmlidXRlcykp CisJCWF0dHJpYnV0ZXMKKwkJICA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCJvbXAg ZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QiKSwKKwkJCSAgICAgICBOVUxMX1RSRUUsIGF0dHJp YnV0ZXMpOwogCSAgICB9CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9jcC9wYXJzZXIu Y2MgYi9nY2MvY3AvcGFyc2VyLmNjCmluZGV4IGYzYWJhZTcxNmZlLi44Y2ExNTVhMjlmOCAx MDA2NDQKLS0tIGEvZ2NjL2NwL3BhcnNlci5jYworKysgYi9nY2MvY3AvcGFyc2VyLmNjCkBA IC0zNzUxNiw2ICszNzUxNiw4IEBAIGNwX3BhcnNlcl9vbXBfY2xhdXNlX25hbWUgKGNwX3Bh cnNlciAqcGFyc2VyKQogCSAgICByZXN1bHQgPSBQUkFHTUFfT01QX0NMQVVTRV9JTl9SRURV Q1RJT047CiAJICBlbHNlIGlmICghc3RyY21wICgiaW5icmFuY2giLCBwKSkKIAkgICAgcmVz dWx0ID0gUFJBR01BX09NUF9DTEFVU0VfSU5CUkFOQ0g7CisJICBlbHNlIGlmICghc3RyY21w ICgiaW5kaXJlY3QiLCBwKSkKKwkgICAgcmVzdWx0ID0gUFJBR01BX09NUF9DTEFVU0VfSU5E SVJFQ1Q7CiAJICBlbHNlIGlmICghc3RyY21wICgiaW5kZXBlbmRlbnQiLCBwKSkKIAkgICAg cmVzdWx0ID0gUFJBR01BX09BQ0NfQ0xBVVNFX0lOREVQRU5ERU5UOwogCSAgZWxzZSBpZiAo IXN0cmNtcCAoImlzX2RldmljZV9wdHIiLCBwKSkKQEAgLTM4NTQ4LDYgKzM4NTUwLDUwIEBA IGNwX3BhcnNlcl9vbXBfY2xhdXNlX2ZpbmFsIChjcF9wYXJzZXIgKnBhcnNlciwgdHJlZSBs aXN0LCBsb2NhdGlvbl90IGxvY2F0aW9uKQogICByZXR1cm4gYzsKIH0KIAorLyogT3Blbk1Q IDUuMToKKyAgIGluZGlyZWN0IFsoIGV4cHJlc3Npb24gKV0KKyovCisKK3N0YXRpYyB0cmVl CitjcF9wYXJzZXJfb21wX2NsYXVzZV9pbmRpcmVjdCAoY3BfcGFyc2VyICpwYXJzZXIsIHRy ZWUgbGlzdCwKKwkJCSAgICAgICBsb2NhdGlvbl90IGxvY2F0aW9uKQoreworICB0cmVlIHQ7 CisKKyAgaWYgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9P UEVOX1BBUkVOKSkKKyAgICB7CisgICAgICBtYXRjaGluZ19wYXJlbnMgcGFyZW5zOworICAg ICAgaWYgKCFwYXJlbnMucmVxdWlyZV9vcGVuIChwYXJzZXIpKQorCXJldHVybiBsaXN0Owor CisgICAgICB0ID0gY3BfcGFyc2VyX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbiAocGFyc2VyKTsK KworICAgICAgaWYgKHQgIT0gZXJyb3JfbWFya19ub2RlKQorCXsKKwkgIHQgPSBmb2xkX25v bl9kZXBlbmRlbnRfZXhwciAodCk7CisJICBpZiAoIXZhbHVlX2RlcGVuZGVudF9leHByZXNz aW9uX3AgKHQpCisJICAgICAgJiYgKCFJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAodCkp CisJCSAgfHwgIXRyZWVfZml0c19zaHdpX3AgKHQpKSkKKwkgICAgZXJyb3JfYXQgKGxvY2F0 aW9uLCAiZXhwZWN0ZWQgY29uc3RhbnQgaW50ZWdlciBleHByZXNzaW9uIik7CisJfQorICAg ICAgaWYgKHQgPT0gZXJyb3JfbWFya19ub2RlCisJICB8fCAhcGFyZW5zLnJlcXVpcmVfY2xv c2UgKHBhcnNlcikpCisJY3BfcGFyc2VyX3NraXBfdG9fY2xvc2luZ19wYXJlbnRoZXNpcyAo cGFyc2VyLCAvKnJlY292ZXJpbmc9Ki90cnVlLAorCQkJCQkgICAgICAgLypvcl9jb21tYT0q L2ZhbHNlLAorCQkJCQkgICAgICAgLypjb25zdW1lX3BhcmVuPSovdHJ1ZSk7CisgICAgfQor ICBlbHNlCisgICAgdCA9IGludGVnZXJfb25lX25vZGU7CisKKyAgY2hlY2tfbm9fZHVwbGlj YXRlX2NsYXVzZSAobGlzdCwgT01QX0NMQVVTRV9JTkRJUkVDVCwgImluZGlyZWN0IiwgbG9j YXRpb24pOworCisgIHRyZWUgYyA9IGJ1aWxkX29tcF9jbGF1c2UgKGxvY2F0aW9uLCBPTVBf Q0xBVVNFX0lORElSRUNUKTsKKyAgT01QX0NMQVVTRV9JTkRJUkVDVF9FWFBSIChjKSA9IHQ7 CisgIE9NUF9DTEFVU0VfQ0hBSU4gKGMpID0gbGlzdDsKKworICByZXR1cm4gYzsKK30KKwog LyogT3Blbk1QIDIuNToKICAgIGlmICggZXhwcmVzc2lvbiApCiAKQEAgLTQxNTcyLDYgKzQx NjE4LDExIEBAIGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMgKGNwX3BhcnNlciAqcGFyc2Vy LCBvbXBfY2xhdXNlX21hc2sgbWFzaywKIAkJCQkJICAgICAgdHJ1ZSwgY2xhdXNlcyk7CiAJ ICBjX25hbWUgPSAiaW5fcmVkdWN0aW9uIjsKIAkgIGJyZWFrOworCWNhc2UgUFJBR01BX09N UF9DTEFVU0VfSU5ESVJFQ1Q6CisJICBjbGF1c2VzID0gY3BfcGFyc2VyX29tcF9jbGF1c2Vf aW5kaXJlY3QgKHBhcnNlciwgY2xhdXNlcywKKwkJCQkJCSAgIHRva2VuLT5sb2NhdGlvbik7 CisJICBjX25hbWUgPSAiaW5kaXJlY3QiOworCSAgYnJlYWs7CiAJY2FzZSBQUkFHTUFfT01Q X0NMQVVTRV9MQVNUUFJJVkFURToKIAkgIGNsYXVzZXMgPSBjcF9wYXJzZXJfb21wX2NsYXVz ZV9sYXN0cHJpdmF0ZSAocGFyc2VyLCBjbGF1c2VzKTsKIAkgIGNfbmFtZSA9ICJsYXN0cHJp dmF0ZSI7CkBAIC00ODEwOSw3ICs0ODE2MCw4IEBAIGNwX21heWJlX3BhcnNlX29tcF9kZWNs ICh0cmVlIGRlY2wsIHRyZWUgZCkKICAgIG9uICNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0 LiAgUmV0dXJuIGZhbHNlIGlmIGVycm9ycyB3ZXJlIHJlcG9ydGVkLiAgKi8KIAogc3RhdGlj IGJvb2wKLWhhbmRsZV9vbXBfZGVjbGFyZV90YXJnZXRfY2xhdXNlICh0cmVlIGMsIHRyZWUg dCwgaW50IGRldmljZV90eXBlKQoraGFuZGxlX29tcF9kZWNsYXJlX3RhcmdldF9jbGF1c2Ug KHRyZWUgYywgdHJlZSB0LCBpbnQgZGV2aWNlX3R5cGUsCisJCQkJICBib29sIGluZGlyZWN0 KQogewogICB0cmVlIGF0MSA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJn ZXQiLCBERUNMX0FUVFJJQlVURVMgKHQpKTsKICAgdHJlZSBhdDIgPSBsb29rdXBfYXR0cmli dXRlICgib21wIGRlY2xhcmUgdGFyZ2V0IGxpbmsiLCBERUNMX0FUVFJJQlVURVMgKHQpKTsK QEAgLTQ4MTczLDYgKzQ4MjI1LDE3IEBAIGhhbmRsZV9vbXBfZGVjbGFyZV90YXJnZXRfY2xh dXNlICh0cmVlIGMsIHRyZWUgdCwgaW50IGRldmljZV90eXBlKQogCSAgREVDTF9BVFRSSUJV VEVTICh0KSA9IHRyZWVfY29ucyAoaWQsIE5VTExfVFJFRSwgREVDTF9BVFRSSUJVVEVTICh0 KSk7CiAJfQogICAgIH0KKyAgaWYgKGluZGlyZWN0KQorICAgIHsKKyAgICAgIHRyZWUgYXQ0 ID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJ CQkJICAgREVDTF9BVFRSSUJVVEVTICh0KSk7CisgICAgICBpZiAoYXQ0ID09IE5VTExfVFJF RSkKKwl7CisJICBpZCA9IGdldF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUgdGFyZ2V0IGlu ZGlyZWN0Iik7CisJICBERUNMX0FUVFJJQlVURVMgKHQpCisJICAgID0gdHJlZV9jb25zIChp ZCwgTlVMTF9UUkVFLCBERUNMX0FUVFJJQlVURVMgKHQpKTsKKwl9CisgICAgfQogICByZXR1 cm4gdHJ1ZTsKIH0KIApAQCAtNDgxOTAsMTMgKzQ4MjUzLDE1IEBAIGhhbmRsZV9vbXBfZGVj bGFyZV90YXJnZXRfY2xhdXNlICh0cmVlIGMsIHRyZWUgdCwgaW50IGRldmljZV90eXBlKQog CSggKE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX1RPKQkJXAogCXwg KE9NUF9DTEFVU0VfTUFTS18xIDw8IFBSQUdNQV9PTVBfQ0xBVVNFX0VOVEVSKQlcCiAJfCAo T01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfTElOSykJCVwKLQl8IChP TVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSkpCisJ fCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfREVWSUNFX1RZUEUp CVwKKwl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9JTkRJUkVD VCkpCiAKIHN0YXRpYyB2b2lkCiBjcF9wYXJzZXJfb21wX2RlY2xhcmVfdGFyZ2V0IChjcF9w YXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2spCiB7CiAgIHRyZWUgY2xhdXNl cyA9IE5VTExfVFJFRTsKICAgaW50IGRldmljZV90eXBlID0gMDsKKyAgYm9vbCBpbmRpcmVj dCA9IGZhbHNlOwogICBib29sIG9ubHlfZGV2aWNlX3R5cGUgPSB0cnVlOwogICBpZiAoY3Bf bGV4ZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgQ1BQX05BTUUpCiAgICAgICB8 fCAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgQ1BQX0NPTU1BKQpA QCAtNDgyMTUsMjEgKzQ4MjgwLDI2IEBAIGNwX3BhcnNlcl9vbXBfZGVjbGFyZV90YXJnZXQg KGNwX3BhcnNlciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaykKICAgZWxzZQogICAg IHsKICAgICAgIGNwX29tcF9kZWNsYXJlX3RhcmdldF9hdHRyIGEKLQk9IHsgcGFyc2VyLT5s ZXhlci0+aW5fb21wX2F0dHJpYnV0ZV9wcmFnbWEsIC0xIH07CisJPSB7IHBhcnNlci0+bGV4 ZXItPmluX29tcF9hdHRyaWJ1dGVfcHJhZ21hLCAtMSwgZmFsc2UgfTsKICAgICAgIHZlY19z YWZlX3B1c2ggKHNjb3BlX2NoYWluLT5vbXBfZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLCBh KTsKICAgICAgIGNwX3BhcnNlcl9yZXF1aXJlX3ByYWdtYV9lb2wgKHBhcnNlciwgcHJhZ21h X3Rvayk7CiAgICAgICByZXR1cm47CiAgICAgfQotICBmb3IgKHRyZWUgYyA9IGNsYXVzZXM7 IGM7IGMgPSBPTVBfQ0xBVVNFX0NIQUlOIChjKSkKLSAgICBpZiAoT01QX0NMQVVTRV9DT0RF IChjKSA9PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFKQotICAgICAgZGV2aWNlX3R5cGUgfD0g T01QX0NMQVVTRV9ERVZJQ0VfVFlQRV9LSU5EIChjKTsKICAgZm9yICh0cmVlIGMgPSBjbGF1 c2VzOyBjOyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCiAgICAgewogICAgICAgaWYgKE9N UF9DTEFVU0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSkKKwlkZXZpY2Vf dHlwZSB8PSBPTVBfQ0xBVVNFX0RFVklDRV9UWVBFX0tJTkQgKGMpOworICAgICAgaWYgKE9N UF9DTEFVU0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9JTkRJUkVDVCkKKwlpbmRpcmVjdCB8 PSAhaW50ZWdlcl96ZXJvcCAoT01QX0NMQVVTRV9JTkRJUkVDVF9FWFBSIChjKSk7CisgICAg fQorICBmb3IgKHRyZWUgYyA9IGNsYXVzZXM7IGM7IGMgPSBPTVBfQ0xBVVNFX0NIQUlOIChj KSkKKyAgICB7CisgICAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBfQ0xBVVNF X0RFVklDRV9UWVBFCisJICB8fCBPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFVU0Vf SU5ESVJFQ1QpCiAJY29udGludWU7CiAgICAgICB0cmVlIHQgPSBPTVBfQ0xBVVNFX0RFQ0wg KGMpOwogICAgICAgb25seV9kZXZpY2VfdHlwZSA9IGZhbHNlOwotICAgICAgaWYgKCFoYW5k bGVfb21wX2RlY2xhcmVfdGFyZ2V0X2NsYXVzZSAoYywgdCwgZGV2aWNlX3R5cGUpKQorICAg ICAgaWYgKCFoYW5kbGVfb21wX2RlY2xhcmVfdGFyZ2V0X2NsYXVzZSAoYywgdCwgZGV2aWNl X3R5cGUsIGluZGlyZWN0KSkKIAljb250aW51ZTsKICAgICAgIGlmIChWQVJfT1JfRlVOQ1RJ T05fREVDTF9QICh0KQogCSAgJiYgREVDTF9MT0NBTF9ERUNMX1AgKHQpCkBAIC00ODIzNyw3 ICs0ODMwNyw3IEBAIGNwX3BhcnNlcl9vbXBfZGVjbGFyZV90YXJnZXQgKGNwX3BhcnNlciAq cGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaykKIAkgICYmIERFQ0xfTE9DQUxfREVDTF9B TElBUyAodCkKIAkgICYmIERFQ0xfTE9DQUxfREVDTF9BTElBUyAodCkgIT0gZXJyb3JfbWFy a19ub2RlKQogCWhhbmRsZV9vbXBfZGVjbGFyZV90YXJnZXRfY2xhdXNlIChjLCBERUNMX0xP Q0FMX0RFQ0xfQUxJQVMgKHQpLAotCQkJCQkgIGRldmljZV90eXBlKTsKKwkJCQkJICBkZXZp Y2VfdHlwZSwgaW5kaXJlY3QpOwogICAgIH0KICAgaWYgKGRldmljZV90eXBlICYmIG9ubHlf ZGV2aWNlX3R5cGUpCiAgICAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9DQVRJT04gKGNsYXVz ZXMpLApAQCAtNDgyNTAsNyArNDgzMjAsOCBAQCBjcF9wYXJzZXJfb21wX2RlY2xhcmVfdGFy Z2V0IChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2spCiAgICAjIHBy YWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB0YXJnZXQgY2xhdXNlc1tvcHRzZXFdIG5ldy1saW5l ICAqLwogCiAjZGVmaW5lIE9NUF9CRUdJTl9ERUNMQVJFX1RBUkdFVF9DTEFVU0VfTUFTSwkJ CVwKLQkoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfREVWSUNFX1RZ UEUpCisJKCAoT01QX0NMQVVTRV9NQVNLXzEgPDwgUFJBR01BX09NUF9DTEFVU0VfREVWSUNF X1RZUEUpCVwKKwl8IChPTVBfQ0xBVVNFX01BU0tfMSA8PCBQUkFHTUFfT01QX0NMQVVTRV9J TkRJUkVDVCkpCiAKIHN0YXRpYyB2b2lkCiBjcF9wYXJzZXJfb21wX2JlZ2luIChjcF9wYXJz ZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2spCkBAIC00ODI4MCwxMSArNDgzNTEs MTYgQEAgY3BfcGFyc2VyX29tcF9iZWdpbiAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2Vu ICpwcmFnbWFfdG9rKQogCQkJCQkgIiNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0 IiwKIAkJCQkJIHByYWdtYV90b2spOwogCSAgaW50IGRldmljZV90eXBlID0gMDsKKwkgIGJv b2wgaW5kaXJlY3QgPSAwOwogCSAgZm9yICh0cmVlIGMgPSBjbGF1c2VzOyBjOyBjID0gT01Q X0NMQVVTRV9DSEFJTiAoYykpCi0JICAgIGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9N UF9DTEFVU0VfREVWSUNFX1RZUEUpCi0JICAgICAgZGV2aWNlX3R5cGUgfD0gT01QX0NMQVVT RV9ERVZJQ0VfVFlQRV9LSU5EIChjKTsKKwkgICAgeworCSAgICAgIGlmIChPTVBfQ0xBVVNF X0NPREUgKGMpID09IE9NUF9DTEFVU0VfREVWSUNFX1RZUEUpCisJCWRldmljZV90eXBlIHw9 IE9NUF9DTEFVU0VfREVWSUNFX1RZUEVfS0lORCAoYyk7CisJICAgICAgaWYgKE9NUF9DTEFV U0VfQ09ERSAoYykgPT0gT01QX0NMQVVTRV9JTkRJUkVDVCkKKwkJaW5kaXJlY3QgfD0gIWlu dGVnZXJfemVyb3AgKE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQUiAoYykpOworCSAgICB9CiAJ ICBjcF9vbXBfZGVjbGFyZV90YXJnZXRfYXR0ciBhCi0JICAgID0geyBpbl9vbXBfYXR0cmli dXRlX3ByYWdtYSwgZGV2aWNlX3R5cGUgfTsKKwkgICAgPSB7IGluX29tcF9hdHRyaWJ1dGVf cHJhZ21hLCBkZXZpY2VfdHlwZSwgaW5kaXJlY3QgfTsKIAkgIHZlY19zYWZlX3B1c2ggKHNj b3BlX2NoYWluLT5vbXBfZGVjbGFyZV90YXJnZXRfYXR0cmlidXRlLCBhKTsKIAl9CiAgICAg ICBlbHNlCmRpZmYgLS1naXQgYS9nY2MvY3Avc2VtYW50aWNzLmNjIGIvZ2NjL2NwL3NlbWFu dGljcy5jYwppbmRleCA4MGVmMTM2NGUzMy4uNWZkN2NjYjE4N2UgMTAwNjQ0Ci0tLSBhL2dj Yy9jcC9zZW1hbnRpY3MuY2MKKysrIGIvZ2NjL2NwL3NlbWFudGljcy5jYwpAQCAtODgzMCw2 ICs4ODMwLDcgQEAgZmluaXNoX29tcF9jbGF1c2VzICh0cmVlIGNsYXVzZXMsIGVudW0gY19v bXBfcmVnaW9uX3R5cGUgb3J0KQogCWNhc2UgT01QX0NMQVVTRV9JRl9QUkVTRU5UOgogCWNh c2UgT01QX0NMQVVTRV9GSU5BTElaRToKIAljYXNlIE9NUF9DTEFVU0VfTk9IT1NUOgorCWNh c2UgT01QX0NMQVVTRV9JTkRJUkVDVDoKIAkgIGJyZWFrOwogCiAJY2FzZSBPTVBfQ0xBVVNF X01FUkdFQUJMRToKZGlmZiAtLWdpdCBhL2djYy9sdG8tY2dyYXBoLmNjIGIvZ2NjL2x0by1j Z3JhcGguY2MKaW5kZXggMzJjMGY1YWM2ZGIuLmRiNmEyMmE0NDRlIDEwMDY0NAotLS0gYS9n Y2MvbHRvLWNncmFwaC5jYworKysgYi9nY2MvbHRvLWNncmFwaC5jYwpAQCAtNjgsNiArNjgs NyBAQCBlbnVtIExUT19zeW10YWJfdGFncwogICBMVE9fc3ltdGFiX2VkZ2UsCiAgIExUT19z eW10YWJfaW5kaXJlY3RfZWRnZSwKICAgTFRPX3N5bXRhYl92YXJpYWJsZSwKKyAgTFRPX3N5 bXRhYl9pbmRpcmVjdF9mdW5jdGlvbiwKICAgTFRPX3N5bXRhYl9sYXN0X3RhZwogfTsKIApA QCAtMTExMSw2ICsxMTEyLDE4IEBAIG91dHB1dF9vZmZsb2FkX3RhYmxlcyAodm9pZCkKIAkJ CSAgICAgICAoKm9mZmxvYWRfdmFycylbaV0pOwogICAgIH0KIAorICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgdmVjX3NhZmVfbGVuZ3RoIChvZmZsb2FkX2luZF9mdW5jcyk7IGkrKykK KyAgICB7CisgICAgICBzeW10YWJfbm9kZSAqbm9kZSA9IHN5bXRhYl9ub2RlOjpnZXQgKCgq b2ZmbG9hZF9pbmRfZnVuY3MpW2ldKTsKKyAgICAgIGlmICghbm9kZSkKKwljb250aW51ZTsK KyAgICAgIG5vZGUtPmZvcmNlX291dHB1dCA9IHRydWU7CisgICAgICBzdHJlYW1lcl93cml0 ZV9lbnVtIChvYi0+bWFpbl9zdHJlYW0sIExUT19zeW10YWJfdGFncywKKwkJCSAgIExUT19z eW10YWJfbGFzdF90YWcsIExUT19zeW10YWJfaW5kaXJlY3RfZnVuY3Rpb24pOworICAgICAg bHRvX291dHB1dF9mbl9kZWNsX3JlZiAob2ItPmRlY2xfc3RhdGUsIG9iLT5tYWluX3N0cmVh bSwKKwkJCSAgICAgICgqb2ZmbG9hZF9pbmRfZnVuY3MpW2ldKTsKKyAgICB9CisKICAgaWYg KG91dHB1dF9yZXF1aXJlcykKICAgICB7CiAgICAgICBIT1NUX1dJREVfSU5UIHZhbCA9ICgo SE9TVF9XSURFX0lOVCkgb21wX3JlcXVpcmVzX21hc2sKQEAgLTExMzQsNiArMTE0Nyw3IEBA IG91dHB1dF9vZmZsb2FkX3RhYmxlcyAodm9pZCkKICAgICB7CiAgICAgICB2ZWNfZnJlZSAo b2ZmbG9hZF9mdW5jcyk7CiAgICAgICB2ZWNfZnJlZSAob2ZmbG9hZF92YXJzKTsKKyAgICAg IHZlY19mcmVlIChvZmZsb2FkX2luZF9mdW5jcyk7CiAgICAgfQogfQogCkBAIC0xODYzLDYg KzE4NzcsMTkgQEAgaW5wdXRfb2ZmbG9hZF90YWJsZXMgKGJvb2wgZG9fZm9yY2Vfb3V0cHV0 KQogCQl2YXJwb29sX25vZGU6OmdldCAodmFyX2RlY2wpLT5mb3JjZV9vdXRwdXQgPSAxOwog CSAgICAgIHRtcF9kZWNsID0gdmFyX2RlY2w7CiAJICAgIH0KKwkgIGVsc2UgaWYgKHRhZyA9 PSBMVE9fc3ltdGFiX2luZGlyZWN0X2Z1bmN0aW9uKQorCSAgICB7CisJICAgICAgdHJlZSBm bl9kZWNsCisJCT0gbHRvX2lucHV0X2ZuX2RlY2xfcmVmIChpYiwgZmlsZV9kYXRhKTsKKwkg ICAgICB2ZWNfc2FmZV9wdXNoIChvZmZsb2FkX2luZF9mdW5jcywgZm5fZGVjbCk7CisKKwkg ICAgICAvKiBQcmV2ZW50IElQQSBmcm9tIHJlbW92aW5nIGZuX2RlY2wgYXMgdW5yZWFjaGFi bGUsIHNpbmNlIHRoZXJlCisJCSBtYXkgYmUgbm8gcmVmcyBmcm9tIHRoZSBwYXJlbnQgZnVu Y3Rpb24gdG8gY2hpbGRfZm4gaW4gb2ZmbG9hZAorCQkgTFRPIG1vZGUuICAqLworCSAgICAg IGlmIChkb19mb3JjZV9vdXRwdXQpCisJCWNncmFwaF9ub2RlOjpnZXQgKGZuX2RlY2wpLT5t YXJrX2ZvcmNlX291dHB1dCAoKTsKKwkgICAgICB0bXBfZGVjbCA9IGZuX2RlY2w7CisJICAg IH0KIAkgIGVsc2UgaWYgKHRhZyA9PSBMVE9fc3ltdGFiX2VkZ2UpCiAJICAgIHsKIAkgICAg ICBzdGF0aWMgYm9vbCBlcnJvcl9lbWl0dGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9nY2Mv bHRvLXNlY3Rpb24tbmFtZXMuaCBiL2djYy9sdG8tc2VjdGlvbi1uYW1lcy5oCmluZGV4IGFh MWIyZjJlZWZmLi5mN2VkNjIyNzcyZiAxMDA2NDQKLS0tIGEvZ2NjL2x0by1zZWN0aW9uLW5h bWVzLmgKKysrIGIvZ2NjL2x0by1zZWN0aW9uLW5hbWVzLmgKQEAgLTM3LDUgKzM3LDYgQEAg ZXh0ZXJuIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZV9wcmVmaXg7CiAKICNkZWZpbmUgT0ZG TE9BRF9WQVJfVEFCTEVfU0VDVElPTl9OQU1FICIuZ251Lm9mZmxvYWRfdmFycyIKICNkZWZp bmUgT0ZGTE9BRF9GVU5DX1RBQkxFX1NFQ1RJT05fTkFNRSAiLmdudS5vZmZsb2FkX2Z1bmNz IgorI2RlZmluZSBPRkZMT0FEX0lORF9GVU5DX1RBQkxFX1NFQ1RJT05fTkFNRSAiLmdudS5v ZmZsb2FkX2luZF9mdW5jcyIKIAogI2VuZGlmIC8qIEdDQ19MVE9fU0VDVElPTl9OQU1FU19I ICovCmRpZmYgLS1naXQgYS9nY2Mvb21wLWJ1aWx0aW5zLmRlZiBiL2djYy9vbXAtYnVpbHRp bnMuZGVmCmluZGV4IGUwZjAzMjYzZGIwLi5lZDc4ZDQ5ZDIwNSAxMDA2NDQKLS0tIGEvZ2Nj L29tcC1idWlsdGlucy5kZWYKKysrIGIvZ2NjL29tcC1idWlsdGlucy5kZWYKQEAgLTQ0NSw2 ICs0NDUsOSBAQCBERUZfR09NUF9CVUlMVElOIChCVUlMVF9JTl9HT01QX1RBUkdFVF9VUERB VEUsICJHT01QX3RhcmdldF91cGRhdGVfZXh0IiwKIERFRl9HT01QX0JVSUxUSU4gKEJVSUxU X0lOX0dPTVBfVEFSR0VUX0VOVEVSX0VYSVRfREFUQSwKIAkJICAiR09NUF90YXJnZXRfZW50 ZXJfZXhpdF9kYXRhIiwKIAkJICBCVF9GTl9WT0lEX0lOVF9TSVpFX1BUUl9QVFJfUFRSX1VJ TlRfUFRSLCBBVFRSX05PVEhST1dfTElTVCkKK0RFRl9HT01QX0JVSUxUSU4gKEJVSUxUX0lO X0dPTVBfVEFSR0VUX01BUF9JTkRJUkVDVF9QVFIsCisJCSAgIkdPTVBfdGFyZ2V0X21hcF9p bmRpcmVjdF9wdHIiLAorCQkgIEJUX0ZOX1BUUl9QVFIsIEFUVFJfTk9USFJPV19MSVNUKQog REVGX0dPTVBfQlVJTFRJTiAoQlVJTFRfSU5fR09NUF9URUFNUzQsICJHT01QX3RlYW1zNCIs CiAJCSAgQlRfRk5fQk9PTF9VSU5UX1VJTlRfVUlOVF9CT09MLCBBVFRSX05PVEhST1dfTElT VCkKIERFRl9HT01QX0JVSUxUSU4gKEJVSUxUX0lOX0dPTVBfVEVBTVNfUkVHLCAiR09NUF90 ZWFtc19yZWciLApkaWZmIC0tZ2l0IGEvZ2NjL29tcC1vZmZsb2FkLmNjIGIvZ2NjL29tcC1v ZmZsb2FkLmNjCmluZGV4IDBkM2M4Nzk0ZDU0Li4zZjE0NTk1YjViNCAxMDA2NDQKLS0tIGEv Z2NjL29tcC1vZmZsb2FkLmNjCisrKyBiL2djYy9vbXAtb2ZmbG9hZC5jYwpAQCAtODYsNyAr ODYsNyBAQCBzdHJ1Y3Qgb2FjY19sb29wCiB9OwogCiAvKiBIb2xkcyBvZmZsb2FkIHRhYmxl cyB3aXRoIGRlY2xzLiAgKi8KLXZlYzx0cmVlLCB2YV9nYz4gKm9mZmxvYWRfZnVuY3MsICpv ZmZsb2FkX3ZhcnM7Cit2ZWM8dHJlZSwgdmFfZ2M+ICpvZmZsb2FkX2Z1bmNzLCAqb2ZmbG9h ZF92YXJzLCAqb2ZmbG9hZF9pbmRfZnVuY3M7CiAKIC8qIFJldHVybiBsZXZlbCBhdCB3aGlj aCBvYWNjIHJvdXRpbmUgbWF5IHNwYXduIGEgcGFydGl0aW9uZWQgbG9vcCwgb3IKICAgIC0x IGlmIGl0IGlzIG5vdCBhIHJvdXRpbmUgKGkuZS4gaXMgYW4gb2ZmbG9hZCBmbikuICAqLwpA QCAtMzUxLDYgKzM1MSw5IEBAIG9tcF9kaXNjb3Zlcl9pbXBsaWNpdF9kZWNsYXJlX3Rhcmdl dCAodm9pZCkKICAgICBpZiAoREVDTF9TQVZFRF9UUkVFIChub2RlLT5kZWNsKSkKICAgICAg IHsKIAlzdHJ1Y3QgY2dyYXBoX25vZGUgKmNnbjsKKwlpZiAobG9va3VwX2F0dHJpYnV0ZSAo Im9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCIsCisJCQkgICAgICBERUNMX0FUVFJJQlVU RVMgKG5vZGUtPmRlY2wpKSkKKwkgIHZlY19zYWZlX3B1c2ggKG9mZmxvYWRfaW5kX2Z1bmNz LCBub2RlLT5kZWNsKTsKICAgICAgICAgaWYgKG9tcF9kZWNsYXJlX3RhcmdldF9mbl9wIChu b2RlLT5kZWNsKSkKIAkgIHdvcmtsaXN0LnNhZmVfcHVzaCAobm9kZS0+ZGVjbCk7CiAJZWxz ZSBpZiAoREVDTF9TVFJVQ1RfRlVOQ1RJT04gKG5vZGUtPmRlY2wpCkBAIC0zOTcsNDkgKzQw MCw2NiBAQCBvbXBfZmluaXNoX2ZpbGUgKHZvaWQpCiB7CiAgIHVuc2lnbmVkIG51bV9mdW5j cyA9IHZlY19zYWZlX2xlbmd0aCAob2ZmbG9hZF9mdW5jcyk7CiAgIHVuc2lnbmVkIG51bV92 YXJzID0gdmVjX3NhZmVfbGVuZ3RoIChvZmZsb2FkX3ZhcnMpOworICB1bnNpZ25lZCBudW1f aW5kX2Z1bmNzID0gdmVjX3NhZmVfbGVuZ3RoIChvZmZsb2FkX2luZF9mdW5jcyk7CiAKLSAg aWYgKG51bV9mdW5jcyA9PSAwICYmIG51bV92YXJzID09IDApCisgIGlmIChudW1fZnVuY3Mg PT0gMCAmJiBudW1fdmFycyA9PSAwICYmIG51bV9pbmRfZnVuY3MgPT0gMCkKICAgICByZXR1 cm47CiAKICAgaWYgKHRhcmdldG1fY29tbW9uLmhhdmVfbmFtZWRfc2VjdGlvbnMpCiAgICAg ewotICAgICAgdmVjPGNvbnN0cnVjdG9yX2VsdCwgdmFfZ2M+ICp2X2YsICp2X3Y7CisgICAg ICB2ZWM8Y29uc3RydWN0b3JfZWx0LCB2YV9nYz4gKnZfZiwgKnZfdiwgKnZfaWY7CiAgICAg ICB2ZWNfYWxsb2MgKHZfZiwgbnVtX2Z1bmNzKTsKICAgICAgIHZlY19hbGxvYyAodl92LCBu dW1fdmFycyAqIDIpOworICAgICAgdmVjX2FsbG9jICh2X2lmLCBudW1faW5kX2Z1bmNzKTsK IAogICAgICAgYWRkX2RlY2xzX2FkZHJlc3Nlc190b19kZWNsX2NvbnN0cnVjdG9yIChvZmZs b2FkX2Z1bmNzLCB2X2YpOwogICAgICAgYWRkX2RlY2xzX2FkZHJlc3Nlc190b19kZWNsX2Nv bnN0cnVjdG9yIChvZmZsb2FkX3ZhcnMsIHZfdik7CisgICAgICBhZGRfZGVjbHNfYWRkcmVz c2VzX3RvX2RlY2xfY29uc3RydWN0b3IgKG9mZmxvYWRfaW5kX2Z1bmNzLCB2X2lmKTsKIAog ICAgICAgdHJlZSB2YXJzX2RlY2xfdHlwZSA9IGJ1aWxkX2FycmF5X3R5cGVfbmVsdHMgKHBv aW50ZXJfc2l6ZWRfaW50X25vZGUsCiAJCQkJCQkgICAgdmVjX3NhZmVfbGVuZ3RoICh2X3Yp KTsKICAgICAgIHRyZWUgZnVuY3NfZGVjbF90eXBlID0gYnVpbGRfYXJyYXlfdHlwZV9uZWx0 cyAocG9pbnRlcl9zaXplZF9pbnRfbm9kZSwKIAkJCQkJCSAgICAgbnVtX2Z1bmNzKTsKKyAg ICAgIHRyZWUgaW5kX2Z1bmNzX2RlY2xfdHlwZSA9IGJ1aWxkX2FycmF5X3R5cGVfbmVsdHMg KHBvaW50ZXJfc2l6ZWRfaW50X25vZGUsCisJCQkJCQkJIG51bV9pbmRfZnVuY3MpOworCiAg ICAgICBTRVRfVFlQRV9BTElHTiAodmFyc19kZWNsX3R5cGUsIFRZUEVfQUxJR04gKHBvaW50 ZXJfc2l6ZWRfaW50X25vZGUpKTsKICAgICAgIFNFVF9UWVBFX0FMSUdOIChmdW5jc19kZWNs X3R5cGUsIFRZUEVfQUxJR04gKHBvaW50ZXJfc2l6ZWRfaW50X25vZGUpKTsKKyAgICAgIFNF VF9UWVBFX0FMSUdOIChpbmRfZnVuY3NfZGVjbF90eXBlLCBUWVBFX0FMSUdOIChwb2ludGVy X3NpemVkX2ludF9ub2RlKSk7CiAgICAgICB0cmVlIGN0b3JfdiA9IGJ1aWxkX2NvbnN0cnVj dG9yICh2YXJzX2RlY2xfdHlwZSwgdl92KTsKICAgICAgIHRyZWUgY3Rvcl9mID0gYnVpbGRf Y29uc3RydWN0b3IgKGZ1bmNzX2RlY2xfdHlwZSwgdl9mKTsKLSAgICAgIFRSRUVfQ09OU1RB TlQgKGN0b3JfdikgPSBUUkVFX0NPTlNUQU5UIChjdG9yX2YpID0gMTsKLSAgICAgIFRSRUVf U1RBVElDIChjdG9yX3YpID0gVFJFRV9TVEFUSUMgKGN0b3JfZikgPSAxOworICAgICAgdHJl ZSBjdG9yX2lmID0gYnVpbGRfY29uc3RydWN0b3IgKGluZF9mdW5jc19kZWNsX3R5cGUsIHZf aWYpOworICAgICAgVFJFRV9DT05TVEFOVCAoY3Rvcl92KSA9IFRSRUVfQ09OU1RBTlQgKGN0 b3JfZikgPSBUUkVFX0NPTlNUQU5UIChjdG9yX2lmKSA9IDE7CisgICAgICBUUkVFX1NUQVRJ QyAoY3Rvcl92KSA9IFRSRUVfU1RBVElDIChjdG9yX2YpID0gVFJFRV9TVEFUSUMgKGN0b3Jf aWYpID0gMTsKICAgICAgIHRyZWUgZnVuY3NfZGVjbCA9IGJ1aWxkX2RlY2wgKFVOS05PV05f TE9DQVRJT04sIFZBUl9ERUNMLAogCQkJCSAgICBnZXRfaWRlbnRpZmllciAoIi5vZmZsb2Fk X2Z1bmNfdGFibGUiKSwKIAkJCQkgICAgZnVuY3NfZGVjbF90eXBlKTsKICAgICAgIHRyZWUg dmFyc19kZWNsID0gYnVpbGRfZGVjbCAoVU5LTk9XTl9MT0NBVElPTiwgVkFSX0RFQ0wsCiAJ CQkJICAgZ2V0X2lkZW50aWZpZXIgKCIub2ZmbG9hZF92YXJfdGFibGUiKSwKIAkJCQkgICB2 YXJzX2RlY2xfdHlwZSk7Ci0gICAgICBUUkVFX1NUQVRJQyAoZnVuY3NfZGVjbCkgPSBUUkVF X1NUQVRJQyAodmFyc19kZWNsKSA9IDE7CisgICAgICB0cmVlIGluZF9mdW5jc19kZWNsID0g YnVpbGRfZGVjbCAoVU5LTk9XTl9MT0NBVElPTiwgVkFSX0RFQ0wsCisJCQkJCWdldF9pZGVu dGlmaWVyICgiLm9mZmxvYWRfaW5kX2Z1bmNfdGFibGUiKSwKKwkJCQkJaW5kX2Z1bmNzX2Rl Y2xfdHlwZSk7CisgICAgICBUUkVFX1NUQVRJQyAoZnVuY3NfZGVjbCkgPSBUUkVFX1NUQVRJ QyAoaW5kX2Z1bmNzX2RlY2wpID0gMTsKKyAgICAgIFRSRUVfU1RBVElDICh2YXJzX2RlY2wp ID0gMTsKICAgICAgIC8qIERvIG5vdCBhbGlnbiB0YWJsZXMgbW9yZSB0aGFuIFRZUEVfQUxJ R04gKHBvaW50ZXJfc2l6ZWRfaW50X25vZGUpLAogCSBvdGhlcndpc2UgYSBqb2ludCB0YWJs ZSBpbiBhIGJpbmFyeSB3aWxsIGNvbnRhaW4gcGFkZGluZyBiZXR3ZWVuCiAJIHRhYmxlcyBm cm9tIG11bHRpcGxlIG9iamVjdCBmaWxlcy4gICovCi0gICAgICBERUNMX1VTRVJfQUxJR04g KGZ1bmNzX2RlY2wpID0gREVDTF9VU0VSX0FMSUdOICh2YXJzX2RlY2wpID0gMTsKKyAgICAg IERFQ0xfVVNFUl9BTElHTiAoZnVuY3NfZGVjbCkgPSBERUNMX1VTRVJfQUxJR04gKGluZF9m dW5jc19kZWNsKSA9IDE7CisgICAgICBERUNMX1VTRVJfQUxJR04gKHZhcnNfZGVjbCkgPSAx OwogICAgICAgU0VUX0RFQ0xfQUxJR04gKGZ1bmNzX2RlY2wsIFRZUEVfQUxJR04gKGZ1bmNz X2RlY2xfdHlwZSkpOwogICAgICAgU0VUX0RFQ0xfQUxJR04gKHZhcnNfZGVjbCwgVFlQRV9B TElHTiAodmFyc19kZWNsX3R5cGUpKTsKKyAgICAgIFNFVF9ERUNMX0FMSUdOIChpbmRfZnVu Y3NfZGVjbCwgVFlQRV9BTElHTiAoaW5kX2Z1bmNzX2RlY2xfdHlwZSkpOwogICAgICAgREVD TF9JTklUSUFMIChmdW5jc19kZWNsKSA9IGN0b3JfZjsKICAgICAgIERFQ0xfSU5JVElBTCAo dmFyc19kZWNsKSA9IGN0b3JfdjsKKyAgICAgIERFQ0xfSU5JVElBTCAoaW5kX2Z1bmNzX2Rl Y2wpID0gY3Rvcl9pZjsKICAgICAgIHNldF9kZWNsX3NlY3Rpb25fbmFtZSAoZnVuY3NfZGVj bCwgT0ZGTE9BRF9GVU5DX1RBQkxFX1NFQ1RJT05fTkFNRSk7CiAgICAgICBzZXRfZGVjbF9z ZWN0aW9uX25hbWUgKHZhcnNfZGVjbCwgT0ZGTE9BRF9WQVJfVEFCTEVfU0VDVElPTl9OQU1F KTsKLQorICAgICAgc2V0X2RlY2xfc2VjdGlvbl9uYW1lIChpbmRfZnVuY3NfZGVjbCwKKwkJ CSAgICAgT0ZGTE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUpOwogICAgICAgdmFy cG9vbF9ub2RlOjpmaW5hbGl6ZV9kZWNsICh2YXJzX2RlY2wpOwogICAgICAgdmFycG9vbF9u b2RlOjpmaW5hbGl6ZV9kZWNsIChmdW5jc19kZWNsKTsKKyAgICAgIHZhcnBvb2xfbm9kZTo6 ZmluYWxpemVfZGVjbCAoaW5kX2Z1bmNzX2RlY2wpOwogICAgIH0KICAgZWxzZQogICAgIHsK QEAgLTQ3MSw2ICs0OTEsMTUgQEAgb21wX2ZpbmlzaF9maWxlICh2b2lkKQogI2VuZGlmCiAJ ICAgIHRhcmdldG0ucmVjb3JkX29mZmxvYWRfc3ltYm9sIChpdCk7CiAJfQorICAgICAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bV9pbmRfZnVuY3M7IGkrKykKKwl7CisJICB0cmVl IGl0ID0gKCpvZmZsb2FkX2luZF9mdW5jcylbaV07CisJICAvKiBTZWUgYWxzbyBhZGRfZGVj bHNfYWRkcmVzc2VzX3RvX2RlY2xfY29uc3RydWN0b3IKKwkgICAgIGFuZCBvdXRwdXRfb2Zm bG9hZF90YWJsZXMgaW4gbHRvLWNncmFwaC5jYy4gICovCisJICBpZiAoIWluX2x0b19wICYm ICFzeW10YWJfbm9kZTo6Z2V0IChpdCkpCisJICAgIGNvbnRpbnVlOworCSAgdGFyZ2V0bS5y ZWNvcmRfb2ZmbG9hZF9zeW1ib2wgKGl0KTsKKwl9CiAgICAgfQogfQogCkBAIC0yNjAzLDYg KzI2MzIsOCBAQCBleGVjdXRlX29tcF9kZXZpY2VfbG93ZXIgKCkKICAgZ2ltcGxlX3N0bXRf aXRlcmF0b3IgZ3NpOwogICBib29sIGNhbGxzX2RlY2xhcmVfdmFyaWFudF9hbHQKICAgICA9 IGNncmFwaF9ub2RlOjpnZXQgKGNmdW4tPmRlY2wpLT5jYWxsc19kZWNsYXJlX3ZhcmlhbnRf YWx0OworICBib29sIG9tcF9yZWRpcmVjdF9pbmRpcmVjdF9jYWxscworICAgID0gdmVjX3Nh ZmVfbGVuZ3RoIChvZmZsb2FkX2luZF9mdW5jcykgPiAwOwogICBGT1JfRUFDSF9CQl9GTiAo YmIsIGNmdW4pCiAgICAgZm9yIChnc2kgPSBnc2lfc3RhcnRfYmIgKGJiKTsgIWdzaV9lbmRf cCAoZ3NpKTsgZ3NpX25leHQgKCZnc2kpKQogICAgICAgewpAQCAtMjYyMSw2ICsyNjUyLDMz IEBAIGV4ZWN1dGVfb21wX2RldmljZV9sb3dlciAoKQogCQkgICAgICB1cGRhdGVfc3RtdCAo c3RtdCk7CiAJCSAgICB9CiAJCX0KKwkgICAgaWYgKG9tcF9yZWRpcmVjdF9pbmRpcmVjdF9j YWxscworCQkmJiBnaW1wbGVfY2FsbF9mbmRlY2wgKHN0bXQpID09IE5VTExfVFJFRSkKKwkg ICAgICB7CisJCWdjYWxsICpvcmlnX2NhbGwgPSBkeW5fY2FzdCA8Z2NhbGwgKj4gKHN0bXQp OworCQl0cmVlIGNhbGxfZm4gPSBnaW1wbGVfY2FsbF9mbiAoc3RtdCk7CisJCXRyZWUgbWFw X3B0cl9mbgorCQkgID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9HT01QX1RB UkdFVF9NQVBfSU5ESVJFQ1RfUFRSKTsKKwkJdHJlZSBmbl90eSA9IFRSRUVfVFlQRSAoY2Fs bF9mbik7CisKKwkJaWYgKFRSRUVfQ09ERSAoY2FsbF9mbikgPT0gT0JKX1RZUEVfUkVGKQor CQkgIHsKKwkJICAgIHRyZWUgb2JqX3JlZiA9IGNyZWF0ZV90bXBfcmVnIChUUkVFX1RZUEUg KGNhbGxfZm4pLAorCQkJCQkJICAgIi5pbmRfZm5fb2JqcmVmIik7CisJCSAgICBnaW1wbGUg Kmdhc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduIChvYmpfcmVmLCBjYWxsX2ZuKTsKKwkJ ICAgIGdzaV9pbnNlcnRfYmVmb3JlICAoJmdzaSwgZ2Fzc2lnbiwgR1NJX1NBTUVfU1RNVCk7 CisJCSAgICBjYWxsX2ZuID0gb2JqX3JlZjsKKwkJICB9CisJCXRyZWUgbWFwcGVkX2ZuID0g Y3JlYXRlX3RtcF9yZWcgKGZuX3R5LCAiLmluZF9mbiIpOworCQlnaW1wbGUgKmdjYWxsID0K KwkJICAgIGdpbXBsZV9idWlsZF9jYWxsIChtYXBfcHRyX2ZuLCAxLCBjYWxsX2ZuKTsKKwkJ Z2ltcGxlX3NldF9sb2NhdGlvbiAoZ2NhbGwsIGdpbXBsZV9sb2NhdGlvbiAoc3RtdCkpOwor CQlnaW1wbGVfY2FsbF9zZXRfbGhzIChnY2FsbCwgbWFwcGVkX2ZuKTsKKwkJZ3NpX2luc2Vy dF9iZWZvcmUgKCZnc2ksIGdjYWxsLCBHU0lfU0FNRV9TVE1UKTsKKworCQlnaW1wbGVfY2Fs bF9zZXRfZm4gKG9yaWdfY2FsbCwgbWFwcGVkX2ZuKTsKKwkJdXBkYXRlX3N0bXQgKG9yaWdf Y2FsbCk7CisJICAgICAgfQogCSAgICBjb250aW51ZTsKIAkgIH0KIAl0cmVlIGxocyA9IGdp bXBsZV9jYWxsX2xocyAoc3RtdCksIHJocyA9IE5VTExfVFJFRTsKQEAgLTI3NTksNyArMjgx Nyw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICByZXR1cm4gKCEoZnVuLT5jdXJyX3Byb3Bl cnRpZXMgJiBQUk9QX2dpbXBsZV9sb21wX2RldikKIAkgICAgICB8fCAoZmxhZ19vcGVubXAK LQkJICAmJiBjZ3JhcGhfbm9kZTo6Z2V0IChmdW4tPmRlY2wpLT5jYWxsc19kZWNsYXJlX3Zh cmlhbnRfYWx0KSk7CisJCSAgJiYgKGNncmFwaF9ub2RlOjpnZXQgKGZ1bi0+ZGVjbCktPmNh bGxzX2RlY2xhcmVfdmFyaWFudF9hbHQKKwkJICAgICAgfHwgdmVjX3NhZmVfbGVuZ3RoIChv ZmZsb2FkX2luZF9mdW5jcykgPiAwKSkpOwogICAgIH0KICAgdW5zaWduZWQgaW50IGV4ZWN1 dGUgKGZ1bmN0aW9uICopIGZpbmFsIG92ZXJyaWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvZ2Nj L29tcC1vZmZsb2FkLmggYi9nY2Mvb21wLW9mZmxvYWQuaAppbmRleCA3MzcxMWU3NGM3ZC4u YWUzNjQ0MjI0MTcgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtb2ZmbG9hZC5oCisrKyBiL2djYy9v bXAtb2ZmbG9hZC5oCkBAIC0yOCw2ICsyOCw3IEBAIGV4dGVybiBpbnQgb2FjY19mbl9hdHRy aWJfbGV2ZWwgKHRyZWUgYXR0cik7CiAKIGV4dGVybiBHVFkoKCkpIHZlYzx0cmVlLCB2YV9n Yz4gKm9mZmxvYWRfZnVuY3M7CiBleHRlcm4gR1RZKCgpKSB2ZWM8dHJlZSwgdmFfZ2M+ICpv ZmZsb2FkX3ZhcnM7CitleHRlcm4gR1RZKCgpKSB2ZWM8dHJlZSwgdmFfZ2M+ICpvZmZsb2Fk X2luZF9mdW5jczsKIAogZXh0ZXJuIHZvaWQgb21wX2ZpbmlzaF9maWxlICh2b2lkKTsKIGV4 dGVybiB2b2lkIG9tcF9kaXNjb3Zlcl9pbXBsaWNpdF9kZWNsYXJlX3RhcmdldCAodm9pZCk7 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUt dGFyZ2V0LWluZGlyZWN0LTEuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAv ZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi40NWUzZWU1OThkYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5jCkBA IC0wLDAgKzEsNTEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mb3Blbm1wIiB9ICovCisKK2V4dGVybiBpbnQgYSwgYjsKKyNkZWZpbmUgWCAxCisj ZGVmaW5lIFkgMAorCisjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHRhcmdldCBpbmRpcmVj dAordm9pZCBmbjEgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0 CisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0ICgxKQordm9p ZCBmbjIgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0CisKKyNw cmFnbWEgb21wIGJlZ2luIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0ICgwKQordm9pZCBmbjMg KHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0CisKK3ZvaWQgZm40 ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IHRvIChm bjQpCisKK3ZvaWQgZm41ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0 IGluZGlyZWN0ICgxKSB0byAoZm41KQorCit2b2lkIGZuNiAodm9pZCkgeyB9CisjcHJhZ21h IG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCAoMCkgdG8gKGZuNikKKwordm9pZCBmbjcg KHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QgKC0xKSB0 byAoZm43KQorCisvKiBDb21waWxlLXRpbWUgbm9uLWNvbnN0YW50IGV4cHJlc3Npb25zIGFy ZSBub3QgYWxsb3dlZC4gICovCit2b2lkIGZuOCAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBk ZWNsYXJlIHRhcmdldCBpbmRpcmVjdCAoYSArIGIpIHRvIChmbjgpIC8qIHsgZGctZXJyb3Ig ImV4cGVjdGVkIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIgfSAqLworCisvKiBDb21w aWxlLXRpbWUgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIHBlcm1pc3NpYmxlLiAgKi8KK3Zv aWQgZm45ICh2b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0 IChYKlkpIHRvIChmbjkpCisKKy8qICdvbXAgZGVjbGFyZSB0YXJnZXQnLi4uJ29tcCBlbmQg ZGVjbGFyZSB0YXJnZXQnIGZvcm0gY2Fubm90IHRha2UKKyAgIGNsYXVzZXMuICAqLworI3By YWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QKK3ZvaWQgZm4xMCAodm9pZCkgeyB9 CisjcHJhZ21hIG9tcCBlbmQgZGVjbGFyZSB0YXJnZXQgLyogeyBkZy1lcnJvciAiJyNwcmFn bWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldCcgd2l0aG91dCBjb3JyZXNwb25kaW5nICcjcHJh Z21hIG9tcCBkZWNsYXJlIHRhcmdldCcgb3IgJyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUg dGFyZ2V0JyIgfSAqLworCit2b2lkIGZuMTEgKHZvaWQpIHsgfQorI3ByYWdtYSBvbXAgZGVj bGFyZSB0YXJnZXQgaW5kaXJlY3QgKDEpIGluZGlyZWN0ICgwKSB0byAoZm4xMSkgLyogeyBk Zy1lcnJvciAidG9vIG1hbnkgLmluZGlyZWN0LiBjbGF1c2VzIiB9ICovCisKKy8qIEluZGly ZWN0IG9uIGEgdmFyaWFibGUgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LiAgKi8KK2ludCB4Owor I3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQgaW5kaXJlY3QgdG8oeCkKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS10YXJnZXQtaW5kaXJl Y3QtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXRhcmdl dC1pbmRpcmVjdC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjQ4YmE0Zjg2MzYyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZ29tcC9kZWNsYXJlLXRhcmdldC1pbmRpcmVjdC0yLmMKQEAgLTAsMCArMSwyMCBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZvcGVubXAg LWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xhcmUg dGFyZ2V0IGluZGlyZWN0Cit2b2lkIGZuMSAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBlbmQg ZGVjbGFyZSB0YXJnZXQKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19hdHRy aWJ1dGVfX1xcXChcXFwob21wIGRlY2xhcmUgdGFyZ2V0LCBvbXAgZGVjbGFyZSB0YXJnZXQg YmxvY2ssIG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdFxcXClcXFwpXFxcbnZvaWQgZm4x IiAiZ2ltcGxlIiB9IH0gKi8KKworI3ByYWdtYSBvbXAgYmVnaW4gZGVjbGFyZSB0YXJnZXQg aW5kaXJlY3QgKDApCit2b2lkIGZuMiAodm9pZCkgeyB9CisjcHJhZ21hIG9tcCBlbmQgZGVj bGFyZSB0YXJnZXQKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19hdHRyaWJ1 dGVfX1xcXChcXFwob21wIGRlY2xhcmUgdGFyZ2V0LCBvbXAgZGVjbGFyZSB0YXJnZXQgYmxv Y2tcXFwpXFxcKVxcXG52b2lkIGZuMiIgImdpbXBsZSIgfSB9ICovCisKK3ZvaWQgZm4zICh2 b2lkKSB7IH0KKyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0IGluZGlyZWN0IHRvIChmbjMp CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9fYXR0cmlidXRlX19cXFwoXFxc KG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCwgb21wIGRlY2xhcmUgdGFyZ2V0XFxcKVxc XClcXFxudm9pZCBmbjMiICJnaW1wbGUiIH0gfSAqLworCit2b2lkIGZuNCAodm9pZCkgeyB9 CisjcHJhZ21hIG9tcCBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdCAoMCkgdG8gKGZuNCkKKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19hdHRyaWJ1dGVfX1xcXChcXFwob21w IGRlY2xhcmUgdGFyZ2V0XFxcKVxcXClcXFxudm9pZCBmbjQiICJnaW1wbGUiIH0gfSAqLwpk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5oIGIvZ2NjL3RyZWUtY29yZS5oCmluZGV4IDkx NTUxZmRlOTAwLi5mNzU0OTAxN2RmNiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY29yZS5oCisr KyBiL2djYy90cmVlLWNvcmUuaApAQCAtMzQ3LDYgKzM0Nyw5IEBAIGVudW0gb21wX2NsYXVz ZV9jb2RlIHsKICAgLyogT3Blbk1QIGNsYXVzZTogZG9hY3Jvc3MgKHtzb3VyY2Usc2lua306 dmVjKS4gICovCiAgIE9NUF9DTEFVU0VfRE9BQ1JPU1MsCiAKKyAgLyogT3Blbk1QIGNsYXVz ZTogaW5kaXJlY3QgWyhjb25zdGFudC1pbnRlZ2VyLWV4cHJlc3Npb24pXS4gICovCisgIE9N UF9DTEFVU0VfSU5ESVJFQ1QsCisKICAgLyogSW50ZXJuYWwgc3RydWN0dXJlIHRvIGhvbGQg T3BlbkFDQyBjYWNoZSBkaXJlY3RpdmUncyB2YXJpYWJsZS1saXN0LgogICAgICAjcHJhZ21h IGFjYyBjYWNoZSAodmFyaWFibGUtbGlzdCkuICAqLwogICBPTVBfQ0xBVVNFX19DQUNIRV8s CmRpZmYgLS1naXQgYS9nY2MvdHJlZS5jYyBiL2djYy90cmVlLmNjCmluZGV4IDU0Y2E1ZTc1 MGRmLi4zNGEwM2ZmMDRjOCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuY2MKKysrIGIvZ2NjL3Ry ZWUuY2MKQEAgLTI2OSw2ICsyNjksNyBAQCB1bnNpZ25lZCBjb25zdCBjaGFyIG9tcF9jbGF1 c2VfbnVtX29wc1tdID0KICAgMiwgLyogT01QX0NMQVVTRV9NQVAgICovCiAgIDEsIC8qIE9N UF9DTEFVU0VfSEFTX0RFVklDRV9BRERSICAqLwogICAxLCAvKiBPTVBfQ0xBVVNFX0RPQUNS T1NTICAqLworICAxLCAvKiBPTVBfQ0xBVVNFX0lORElSRUNUICAqLwogICAyLCAvKiBPTVBf Q0xBVVNFX19DQUNIRV8gICovCiAgIDIsIC8qIE9NUF9DTEFVU0VfR0FORyAgKi8KICAgMSwg LyogT01QX0NMQVVTRV9BU1lOQyAgKi8KQEAgLTM2MCw2ICszNjEsNyBAQCBjb25zdCBjaGFy ICogY29uc3Qgb21wX2NsYXVzZV9jb2RlX25hbWVbXSA9CiAgICJtYXAiLAogICAiaGFzX2Rl dmljZV9hZGRyIiwKICAgImRvYWNyb3NzIiwKKyAgImluZGlyZWN0IiwKICAgIl9jYWNoZV8i LAogICAiZ2FuZyIsCiAgICJhc3luYyIsCmRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2Nj L3RyZWUuaAppbmRleCAwMDVjMTU3ZTliMC4uNzhiMTVjMjQ2NDEgMTAwNjQ0Ci0tLSBhL2dj Yy90cmVlLmgKKysrIGIvZ2NjL3RyZWUuaApAQCAtMTg0Miw2ICsxODQyLDEwIEBAIGNsYXNz IGF1dG9fc3VwcHJlc3NfbG9jYXRpb25fd3JhcHBlcnMKICNkZWZpbmUgT01QX0NMQVVTRV9E RVZJQ0VfVFlQRV9LSU5EKE5PREUpIFwKICAgKE9NUF9DTEFVU0VfU1VCQ09ERV9DSEVDSyAo Tk9ERSwgT01QX0NMQVVTRV9ERVZJQ0VfVFlQRSktPm9tcF9jbGF1c2Uuc3ViY29kZS5kZXZp Y2VfdHlwZV9raW5kKQogCisjZGVmaW5lIE9NUF9DTEFVU0VfSU5ESVJFQ1RfRVhQUihOT0RF KSBcCisgIE9NUF9DTEFVU0VfT1BFUkFORCAoT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNLIChO T0RFLCBPTVBfQ0xBVVNFX0lORElSRUNUKSwgMCkKKworCiAvKiBUcnVlIGlmIHRoZXJlIGlz IGEgZGV2aWNlIGNsYXVzZSB3aXRoIGEgZGV2aWNlLW1vZGlmaWVyICdhbmNlc3RvcicuICAq LwogI2RlZmluZSBPTVBfQ0xBVVNFX0RFVklDRV9BTkNFU1RPUihOT0RFKSBcCiAgIChPTVBf Q0xBVVNFX1NVQkNPREVfQ0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfREVWSUNFKS0+YmFzZS5w dWJsaWNfZmxhZykKZGlmZiAtLWdpdCBhL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYyBiL2xpYmdj Yy9vZmZsb2Fkc3R1ZmYuYwppbmRleCA0ZTFjNGQ0MWRkNS4uMThjNWJmODliNjkgMTAwNjQ0 Ci0tLSBhL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYworKysgYi9saWJnY2Mvb2ZmbG9hZHN0dWZm LmMKQEAgLTQzLDYgKzQzLDcgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlO Ry5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAjaWYgZGVmaW5lZChIQVZF X0dBU19ISURERU4pICYmIEVOQUJMRV9PRkZMT0FESU5HID09IDEKIAogI2RlZmluZSBPRkZM T0FEX0ZVTkNfVEFCTEVfU0VDVElPTl9OQU1FICIuZ251Lm9mZmxvYWRfZnVuY3MiCisjZGVm aW5lIE9GRkxPQURfSU5EX0ZVTkNfVEFCTEVfU0VDVElPTl9OQU1FICIuZ251Lm9mZmxvYWRf aW5kX2Z1bmNzIgogI2RlZmluZSBPRkZMT0FEX1ZBUl9UQUJMRV9TRUNUSU9OX05BTUUgIi5n bnUub2ZmbG9hZF92YXJzIgogCiAjaWZkZWYgQ1JUX0JFR0lOCkBAIC01Myw2ICs1NCw5IEBA IGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF9mdW5jX3RhYmxlWzBdCiBjb25zdCB2b2lk ICpjb25zdCBfX29mZmxvYWRfdmFyX3RhYmxlWzBdCiAgIF9fYXR0cmlidXRlX18gKChfX3Vz ZWRfXywgdmlzaWJpbGl0eSAoImhpZGRlbiIpLAogCQkgIHNlY3Rpb24gKE9GRkxPQURfVkFS X1RBQkxFX1NFQ1RJT05fTkFNRSkpKSA9IHsgfTsKK2NvbnN0IHZvaWQgKmNvbnN0IF9fb2Zm bG9hZF9pbmRfZnVuY190YWJsZVswXQorICBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18sIHZp c2liaWxpdHkgKCJoaWRkZW4iKSwKKwkJICBzZWN0aW9uIChPRkZMT0FEX0lORF9GVU5DX1RB QkxFX1NFQ1RJT05fTkFNRSkpKSA9IHsgfTsKIAogI2VsaWYgZGVmaW5lZCBDUlRfRU5ECiAK QEAgLTYyLDE5ICs2NiwyNSBAQCBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfZnVuY3Nf ZW5kWzBdCiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfdmFyc19lbmRbMF0KICAgX19h dHRyaWJ1dGVfXyAoKF9fdXNlZF9fLCB2aXNpYmlsaXR5ICgiaGlkZGVuIiksCiAJCSAgc2Vj dGlvbiAoT0ZGTE9BRF9WQVJfVEFCTEVfU0VDVElPTl9OQU1FKSkpID0geyB9OworY29uc3Qg dm9pZCAqY29uc3QgX19vZmZsb2FkX2luZF9mdW5jc19lbmRbMF0KKyAgX19hdHRyaWJ1dGVf XyAoKF9fdXNlZF9fLCB2aXNpYmlsaXR5ICgiaGlkZGVuIiksCisJCSAgc2VjdGlvbiAoT0ZG TE9BRF9JTkRfRlVOQ19UQUJMRV9TRUNUSU9OX05BTUUpKSkgPSB7IH07CiAKICNlbGlmIGRl ZmluZWQgQ1JUX1RBQkxFCiAKIGV4dGVybiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRf ZnVuY190YWJsZVtdOwogZXh0ZXJuIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF92YXJf dGFibGVbXTsKK2V4dGVybiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfaW5kX2Z1bmNf dGFibGVbXTsKIGV4dGVybiBjb25zdCB2b2lkICpjb25zdCBfX29mZmxvYWRfZnVuY3NfZW5k W107CiBleHRlcm4gY29uc3Qgdm9pZCAqY29uc3QgX19vZmZsb2FkX3ZhcnNfZW5kW107Citl eHRlcm4gY29uc3Qgdm9pZCAqY29uc3QgX19vZmZsb2FkX2luZF9mdW5jc19lbmRbXTsKIAog Y29uc3Qgdm9pZCAqY29uc3QgX19PRkZMT0FEX1RBQkxFX19bXQogICBfX2F0dHJpYnV0ZV9f ICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpID0KIHsKICAgJl9fb2ZmbG9hZF9mdW5j X3RhYmxlLCAmX19vZmZsb2FkX2Z1bmNzX2VuZCwKLSAgJl9fb2ZmbG9hZF92YXJfdGFibGUs ICZfX29mZmxvYWRfdmFyc19lbmQKKyAgJl9fb2ZmbG9hZF92YXJfdGFibGUsICZfX29mZmxv YWRfdmFyc19lbmQsCisgICZfX29mZmxvYWRfaW5kX2Z1bmNfdGFibGUsICZfX29mZmxvYWRf aW5kX2Z1bmNzX2VuZCwKIH07CiAKICNlbHNlIC8qICEgQ1JUX0JFR0lOICYmICEgQ1JUX0VO RCAmJiAhIENSVF9UQUJMRSAgKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0g Yi9saWJnb21wL01ha2VmaWxlLmFtCmluZGV4IDQyOGY3YTlkYWI1Li4yNTQ5ZWE4OTA2YiAx MDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmlsZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxl LmFtCkBAIC02Nyw3ICs2Nyw3IEBAIGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRv bWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52LmMgZXJyb3IuYyBcCiAJdGFyZ2V0LmMg c3BsYXktdHJlZS5jIGxpYmdvbXAtcGx1Z2luLmMgb2FjYy1wYXJhbGxlbC5jIG9hY2MtaG9z dC5jIFwKIAlvYWNjLWluaXQuYyBvYWNjLW1lbS5jIG9hY2MtYXN5bmMuYyBvYWNjLXBsdWdp bi5jIG9hY2MtY3VkYS5jIFwKIAlwcmlvcml0eV9xdWV1ZS5jIGFmZmluaXR5LWZtdC5jIHRl YW1zLmMgYWxsb2NhdG9yLmMgb2FjYy1wcm9maWxpbmcuYyBcCi0Jb2FjYy10YXJnZXQuYwor CW9hY2MtdGFyZ2V0LmMgdGFyZ2V0LWluZGlyZWN0LmMKIAogaW5jbHVkZSAkKHRvcF9zcmNk aXIpL3BsdWdpbi9NYWtlZnJhZy5hbQogCmRpZmYgLS1naXQgYS9saWJnb21wL01ha2VmaWxl LmluIGIvbGliZ29tcC9NYWtlZmlsZS5pbgppbmRleCA0MzFiYzg3YjYyOS4uMzJlNjQyOTJh NmQgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvTWFrZWZpbGUuaW4KKysrIGIvbGliZ29tcC9NYWtl ZmlsZS5pbgpAQCAtMjE5LDcgKzIxOSw3IEBAIGFtX2xpYmdvbXBfbGFfT0JKRUNUUyA9IGFs bG9jLmxvIGF0b21pYy5sbyBiYXJyaWVyLmxvIGNyaXRpY2FsLmxvIFwKIAlvYWNjLXBhcmFs bGVsLmxvIG9hY2MtaG9zdC5sbyBvYWNjLWluaXQubG8gb2FjYy1tZW0ubG8gXAogCW9hY2Mt YXN5bmMubG8gb2FjYy1wbHVnaW4ubG8gb2FjYy1jdWRhLmxvIHByaW9yaXR5X3F1ZXVlLmxv IFwKIAlhZmZpbml0eS1mbXQubG8gdGVhbXMubG8gYWxsb2NhdG9yLmxvIG9hY2MtcHJvZmls aW5nLmxvIFwKLQlvYWNjLXRhcmdldC5sbyAkKGFtX19vYmplY3RzXzEpCisJb2FjYy10YXJn ZXQubG8gdGFyZ2V0LWluZGlyZWN0LmxvICQoYW1fX29iamVjdHNfMSkKIGxpYmdvbXBfbGFf T0JKRUNUUyA9ICQoYW1fbGliZ29tcF9sYV9PQkpFQ1RTKQogQU1fVl9QID0gJChhbV9fdl9Q X0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQpAQCAtNTQ5 LDcgKzU0OSw3IEBAIGxpYmdvbXBfbGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFy cmllci5jIGNyaXRpY2FsLmMgZW52LmMgXAogCW9hY2MtcGFyYWxsZWwuYyBvYWNjLWhvc3Qu YyBvYWNjLWluaXQuYyBvYWNjLW1lbS5jIFwKIAlvYWNjLWFzeW5jLmMgb2FjYy1wbHVnaW4u YyBvYWNjLWN1ZGEuYyBwcmlvcml0eV9xdWV1ZS5jIFwKIAlhZmZpbml0eS1mbXQuYyB0ZWFt cy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAotCW9hY2MtdGFyZ2V0LmMgJChh bV9fYXBwZW5kXzMpCisJb2FjYy10YXJnZXQuYyB0YXJnZXQtaW5kaXJlY3QuYyAkKGFtX19h cHBlbmRfMykKIAogIyBOdmlkaWEgUFRYIE9wZW5BQ0MgcGx1Z2luLgogQFBMVUdJTl9OVlBU WF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWlu Zm8gJChsaWJ0b29sX1ZFUlNJT04pCkBAIC03NzcsNiArNzc3LDcgQEAgZGlzdGNsZWFuLWNv bXBpbGU6CiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJ Uikvc2VtLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9f cXVvdGVALi8kKERFUERJUikvc2luZ2xlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBA YW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvc3BsYXktdHJlZS5QbG9AYW1f X3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBE SVIpL3RhcmdldC1pbmRpcmVjdC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19p bmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3RhcmdldC5QbG9AYW1fX3F1b3RlQAog QEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3Rhc2su UGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAu LyQoREVQRElSKS90ZWFtLlBsb0BhbV9fcXVvdGVACmRpZmYgLS1naXQgYS9saWJnb21wL2Nv bmZpZy9hY2NlbC90YXJnZXQtaW5kaXJlY3QuYyBiL2xpYmdvbXAvY29uZmlnL2FjY2VsL3Rh cmdldC1pbmRpcmVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li42ZWU4MmEwZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvY29uZmlnL2FjY2Vs L3RhcmdldC1pbmRpcmVjdC5jCkBAIC0wLDAgKzEsMTI2IEBACisvKiBDb3B5cmlnaHQgKEMp IDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIENvbnRyaWJ1dGVk IGJ5IFNpZW1lbnMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9h ZGluZyBhbmQgTXVsdGkgUHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisKKyAg IExpYmdvbXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFu eSBsYXRlciB2ZXJzaW9uLgorCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKworICAg VW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRp dGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEg Y29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJV TlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJs aWJnb21wLmgiCisKKyNkZWZpbmUgc3BsYXlfdHJlZV9wcmVmaXggaW5kaXJlY3QKKyNkZWZp bmUgc3BsYXlfdHJlZV9jCisjaW5jbHVkZSAic3BsYXktdHJlZS5oIgorCit2b2xhdGlsZSB2 b2lkICoqR09NUF9JTkRJUkVDVF9BRERSX01BUCA9IE5VTEw7CisKKy8qIFVzZSBhIHNwbGF5 IHRyZWUgdG8gbG9va3VwIHRoZSB0YXJnZXQgYWRkcmVzcyBpbnN0ZWFkIG9mIHVzaW5nIGEK KyAgIGxpbmVhciBzZWFyY2guICAqLworI2RlZmluZSBVU0VfU1BMQVlfVFJFRV9MT09LVVAK KworI2lmZGVmIFVTRV9TUExBWV9UUkVFX0xPT0tVUAorCitzdGF0aWMgc3RydWN0IGluZGly ZWN0X3NwbGF5X3RyZWVfcyBpbmRpcmVjdF9tYXA7CitzdGF0aWMgaW5kaXJlY3Rfc3BsYXlf dHJlZV9ub2RlIGluZGlyZWN0X2FycmF5ID0gTlVMTDsKKworLyogQnVpbGQgdGhlIHNwbGF5 IHRyZWUgdXNlZCBmb3IgaG9zdC0+dGFyZ2V0IGFkZHJlc3MgbG9va3Vwcy4gICovCisKK3Zv aWQKK2J1aWxkX2luZGlyZWN0X21hcCAodm9pZCkKK3sKKyAgc2l6ZV90IG51bV9pbmRfZnVu Y3MgPSAwOworICB2b2xhdGlsZSB2b2lkICoqbWFwX2VudHJ5OworICBzdGF0aWMgaW50IGxv Y2sgPSAwOyAvKiA9PSBnb21wX211dGV4X3QgbG9jazsgZ29tcF9tdXRleF9pbml0ICgmbG9j ayk7ICovCisKKyAgaWYgKCFHT01QX0lORElSRUNUX0FERFJfTUFQKQorICAgIHJldHVybjsK KworICBnb21wX211dGV4X2xvY2sgKCZsb2NrKTsKKworICBpZiAoIWluZGlyZWN0X2FycmF5 KQorICAgIHsKKyAgICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUg TlVMTC10ZXJtaW5hdGVkIGFkZHJlc3MgbWFwLiAgKi8KKyAgICAgIGZvciAobWFwX2VudHJ5 ID0gR09NUF9JTkRJUkVDVF9BRERSX01BUDsgKm1hcF9lbnRyeTsKKwkgICBtYXBfZW50cnkg Kz0gMiwgbnVtX2luZF9mdW5jcysrKTsKKworICAgICAgLyogQnVpbGQgc3BsYXkgdHJlZSBm b3IgYWRkcmVzcyBsb29rdXAuICAqLworICAgICAgaW5kaXJlY3RfYXJyYXkgPSBnb21wX21h bGxvYyAobnVtX2luZF9mdW5jcyAqIHNpemVvZiAoKmluZGlyZWN0X2FycmF5KSk7CisgICAg ICBpbmRpcmVjdF9zcGxheV90cmVlX25vZGUgYXJyYXkgPSBpbmRpcmVjdF9hcnJheTsKKyAg ICAgIG1hcF9lbnRyeSA9IEdPTVBfSU5ESVJFQ1RfQUREUl9NQVA7CisKKyAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgbnVtX2luZF9mdW5jczsgaSsrLCBhcnJheSsrKQorCXsKKwkgIGlu ZGlyZWN0X3NwbGF5X3RyZWVfa2V5IGsgPSAmYXJyYXktPmtleTsKKwkgIGstPmhvc3RfYWRk ciA9ICh1aW50NjRfdCkgKm1hcF9lbnRyeSsrOworCSAgay0+dGFyZ2V0X2FkZHIgPSAodWlu dDY0X3QpICptYXBfZW50cnkrKzsKKwkgIGFycmF5LT5sZWZ0ID0gTlVMTDsKKwkgIGFycmF5 LT5yaWdodCA9IE5VTEw7CisJICBpbmRpcmVjdF9zcGxheV90cmVlX2luc2VydCAoJmluZGly ZWN0X21hcCwgYXJyYXkpOworCX0KKyAgICB9CisKKyAgZ29tcF9tdXRleF91bmxvY2sgKCZs b2NrKTsKK30KKwordm9pZCAqCitHT01QX3RhcmdldF9tYXBfaW5kaXJlY3RfcHRyICh2b2lk ICpwdHIpCit7CisgIC8qIE5VTEwgcG9pbnRlcnMgYWx3YXlzIHJlc29sdmUgdG8gTlVMTC4g ICovCisgIGlmICghcHRyKQorICAgIHJldHVybiBwdHI7CisKKyAgYXNzZXJ0IChpbmRpcmVj dF9hcnJheSk7CisKKyAgc3RydWN0IGluZGlyZWN0X3NwbGF5X3RyZWVfa2V5X3MgazsKKyAg aW5kaXJlY3Rfc3BsYXlfdHJlZV9rZXkgbm9kZSA9IE5VTEw7CisKKyAgay5ob3N0X2FkZHIg PSAodWludDY0X3QpIHB0cjsKKyAgbm9kZSA9IGluZGlyZWN0X3NwbGF5X3RyZWVfbG9va3Vw ICgmaW5kaXJlY3RfbWFwLCAmayk7CisKKyAgcmV0dXJuIG5vZGUgPyAodm9pZCAqKSBub2Rl LT50YXJnZXRfYWRkciA6IHB0cjsKK30KKworI2Vsc2UKKwordm9pZAorYnVpbGRfaW5kaXJl Y3RfbWFwICh2b2lkKQoreworfQorCit2b2lkICoKK0dPTVBfdGFyZ2V0X21hcF9pbmRpcmVj dF9wdHIgKHZvaWQgKnB0cikKK3sKKyAgLyogTlVMTCBwb2ludGVycyBhbHdheXMgcmVzb2x2 ZSB0byBOVUxMLiAgKi8KKyAgaWYgKCFwdHIpCisgICAgcmV0dXJuIHB0cjsKKworICBhc3Nl cnQgKEdPTVBfSU5ESVJFQ1RfQUREUl9NQVApOworCisgIGZvciAodm9sYXRpbGUgdm9pZCAq Km1hcF9lbnRyeSA9IEdPTVBfSU5ESVJFQ1RfQUREUl9NQVA7ICptYXBfZW50cnk7CisgICAg ICAgbWFwX2VudHJ5ICs9IDIpCisgICAgaWYgKCptYXBfZW50cnkgPT0gcHRyKQorICAgICAg cmV0dXJuICh2b2lkICopICoobWFwX2VudHJ5ICsgMSk7CisKKyAgcmV0dXJuIHB0cjsKK30K KworI2VuZGlmCmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZy9nY24vdGVhbS5jIGIvbGli Z29tcC9jb25maWcvZ2NuL3RlYW0uYwppbmRleCBmMDMyMDdjODRlMy4uZmIyMGNiYmNmOWYg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvY29uZmlnL2djbi90ZWFtLmMKKysrIGIvbGliZ29tcC9j b25maWcvZ2NuL3RlYW0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHN0cmluZy5o PgogCiBzdGF0aWMgdm9pZCBnb21wX3RocmVhZF9zdGFydCAoc3RydWN0IGdvbXBfdGhyZWFk X3Bvb2wgKik7CitleHRlcm4gdm9pZCBidWlsZF9pbmRpcmVjdF9tYXAgKHZvaWQpOwogCiAv KiBUaGlzIGV4dGVybmFsbHkgdmlzaWJsZSBmdW5jdGlvbiBoYW5kbGVzIHRhcmdldCByZWdp b24gZW50cnkuICBJdAogICAgc2V0cyB1cCBhIHBlci10ZWFtIHRocmVhZCBwb29sIGFuZCB0 cmFuc2ZlcnMgY29udHJvbCBieSByZXR1cm5pbmcgdG8KQEAgLTQ1LDYgKzQ2LDkgQEAgZ29t cF9nY25fZW50ZXJfa2VybmVsICh2b2lkKQogewogICBpbnQgdGhyZWFkaWQgPSBfX2J1aWx0 aW5fZ2NuX2RpbV9wb3MgKDEpOwogCisgIC8qIEluaXRpYWxpemUgaW5kaXJlY3QgZnVuY3Rp b24gc3VwcG9ydC4gICovCisgIGJ1aWxkX2luZGlyZWN0X21hcCAoKTsKKwogICBpZiAodGhy ZWFkaWQgPT0gMCkKICAgICB7CiAgICAgICBpbnQgbnVtdGhyZWFkcyA9IF9fYnVpbHRpbl9n Y25fZGltX3NpemUgKDEpOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvbGludXgvdGFy Z2V0LWluZGlyZWN0LmMgYi9saWJnb21wL2NvbmZpZy9saW51eC90YXJnZXQtaW5kaXJlY3Qu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGUyYzcwOGJiODEK LS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL2NvbmZpZy9saW51eC90YXJnZXQtaW5kaXJl Y3QuYwpAQCAtMCwwICsxLDMxIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIENvbnRyaWJ1dGVkIGJ5IFNpZW1lbnMuCisK KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkg UHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisKKyAgIExpYmdvbXAgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAor ICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwor ICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIgU2VjdGlvbiA3 IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisgICBwZXJt aXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9u LCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07Cisg ICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2 ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisKK3ZvaWQgKgorR09NUF90YXJnZXRfbWFwX2luZGlyZWN0X3B0ciAodm9pZCAqcHRy KQoreworICByZXR1cm4gcHRyOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvbnZw dHgvdGVhbS5jIGIvbGliZ29tcC9jb25maWcvbnZwdHgvdGVhbS5jCmluZGV4IGFmNWYzMTcx YTQ3Li41OTUyMWZhYmQ5OSAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcvbnZwdHgvdGVh bS5jCisrKyBiL2xpYmdvbXAvY29uZmlnL252cHR4L3RlYW0uYwpAQCAtMzUsNiArMzUsNyBA QCBzdHJ1Y3QgZ29tcF90aHJlYWQgKm52cHR4X3RocnMgX19hdHRyaWJ1dGVfXygoc2hhcmVk LG5vY29tbW9uKSk7CiBpbnQgX19nb21wX3RlYW1fbnVtIF9fYXR0cmlidXRlX18oKHNoYXJl ZCxub2NvbW1vbikpOwogCiBzdGF0aWMgdm9pZCBnb21wX3RocmVhZF9zdGFydCAoc3RydWN0 IGdvbXBfdGhyZWFkX3Bvb2wgKik7CitleHRlcm4gdm9pZCBidWlsZF9pbmRpcmVjdF9tYXAg KHZvaWQpOwogCiAKIC8qIFRoaXMgZXh0ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9uIGhhbmRs ZXMgdGFyZ2V0IHJlZ2lvbiBlbnRyeS4gIEl0CkBAIC01Miw2ICs1MywxMCBAQCBnb21wX252 cHR4X21haW4gKHZvaWQgKCpmbikgKHZvaWQgKiksIHZvaWQgKmZuX2RhdGEpCiAgIGludCB0 aWQsIG50aWRzOwogICBhc20gKCJtb3YudTMyICUwLCAlJXRpZC55OyIgOiAiPXIiICh0aWQp KTsKICAgYXNtICgibW92LnUzMiAlMCwgJSVudGlkLnk7IiA6ICI9ciIgKG50aWRzKSk7CisK KyAgLyogSW5pdGlhbGl6ZSBpbmRpcmVjdCBmdW5jdGlvbiBzdXBwb3J0LiAgKi8KKyAgYnVp bGRfaW5kaXJlY3RfbWFwICgpOworCiAgIGlmICh0aWQgPT0gMCkKICAgICB7CiAgICAgICBn b21wX2dsb2JhbF9pY3YubnRocmVhZHNfdmFyID0gbnRpZHM7CmRpZmYgLS1naXQgYS9saWJn b21wL2xpYmdvbXAtcGx1Z2luLmggYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKaW5kZXgg ZGM5OTM4ODJjM2IuLjNjZTAzMmM1Y2MwIDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAt cGx1Z2luLmgKKysrIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCkBAIC0xMDcsNiArMTA3 LDggQEAgc3RydWN0IGFkZHJfcGFpcgogICAgbXVzdCBiZSBzdHJpbmdpZmllZCkuICAqLwog I2RlZmluZSBHT01QX0FERElUSU9OQUxfSUNWUyBfX2dvbXBfYWRkaXRpb25hbF9pY3ZzCiAK KyNkZWZpbmUgR09NUF9JTkRJUkVDVF9BRERSX01BUCBfX2dvbXBfaW5kaXJlY3RfYWRkcl9t YXAKKwogLyogTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuICAqLwogZXh0ZXJuIHZvaWQgKkdP TVBfUExVR0lOX21hbGxvYyAoc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgobWFsbG9jKSk7CiBl eHRlcm4gdm9pZCAqR09NUF9QTFVHSU5fbWFsbG9jX2NsZWFyZWQgKHNpemVfdCkgX19hdHRy aWJ1dGVfXyAoKG1hbGxvYykpOwpAQCAtMTMyLDcgKzEzNCw4IEBAIGV4dGVybiBib29sIEdP TVBfT0ZGTE9BRF9pbml0X2RldmljZSAoaW50KTsKIGV4dGVybiBib29sIEdPTVBfT0ZGTE9B RF9maW5pX2RldmljZSAoaW50KTsKIGV4dGVybiB1bnNpZ25lZCBHT01QX09GRkxPQURfdmVy c2lvbiAodm9pZCk7CiBleHRlcm4gaW50IEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQs IHVuc2lnbmVkLCBjb25zdCB2b2lkICosCi0JCQkJICAgIHN0cnVjdCBhZGRyX3BhaXIgKios IHVpbnQ2NF90ICoqKTsKKwkJCQkgICAgc3RydWN0IGFkZHJfcGFpciAqKiwgdWludDY0X3Qg KiosCisJCQkJICAgIHVpbnQ2NF90ICopOwogZXh0ZXJuIGJvb2wgR09NUF9PRkZMT0FEX3Vu bG9hZF9pbWFnZSAoaW50LCB1bnNpZ25lZCwgY29uc3Qgdm9pZCAqKTsKIGV4dGVybiB2b2lk ICpHT01QX09GRkxPQURfYWxsb2MgKGludCwgc2l6ZV90KTsKIGV4dGVybiBib29sIEdPTVBf T0ZGTE9BRF9mcmVlIChpbnQsIHZvaWQgKik7CmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdv bXAuaCBiL2xpYmdvbXAvbGliZ29tcC5oCmluZGV4IDY4ZjIwNjUxZmJmLi4xNWE3NjdjZjMx NyAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLmgKKysrIGIvbGliZ29tcC9saWJnb21w LmgKQEAgLTEyNzQsNiArMTI3NCwyOSBAQCByZXZlcnNlX3NwbGF5X2NvbXBhcmUgKHJldmVy c2Vfc3BsYXlfdHJlZV9rZXkgeCwgcmV2ZXJzZV9zcGxheV90cmVlX2tleSB5KQogI2RlZmlu ZSBzcGxheV90cmVlX3ByZWZpeCByZXZlcnNlCiAjaW5jbHVkZSAic3BsYXktdHJlZS5oIgog CisvKiBJbmRpcmVjdCB0YXJnZXQgZnVuY3Rpb24gc3BsYXktdHJlZSBoYW5kbGluZy4gICov CisKK3N0cnVjdCBpbmRpcmVjdF9zcGxheV90cmVlX2tleV9zIHsKKyAgdWludDY0X3QgaG9z dF9hZGRyLCB0YXJnZXRfYWRkcjsKK307CisKK3R5cGVkZWYgc3RydWN0IGluZGlyZWN0X3Nw bGF5X3RyZWVfbm9kZV9zICppbmRpcmVjdF9zcGxheV90cmVlX25vZGU7Cit0eXBlZGVmIHN0 cnVjdCBpbmRpcmVjdF9zcGxheV90cmVlX3MgKmluZGlyZWN0X3NwbGF5X3RyZWU7Cit0eXBl ZGVmIHN0cnVjdCBpbmRpcmVjdF9zcGxheV90cmVlX2tleV9zICppbmRpcmVjdF9zcGxheV90 cmVlX2tleTsKKworc3RhdGljIGlubGluZSBpbnQKK2luZGlyZWN0X3NwbGF5X2NvbXBhcmUg KGluZGlyZWN0X3NwbGF5X3RyZWVfa2V5IHgsIGluZGlyZWN0X3NwbGF5X3RyZWVfa2V5IHkp Cit7CisgIGlmICh4LT5ob3N0X2FkZHIgPCB5LT5ob3N0X2FkZHIpCisgICAgcmV0dXJuIC0x OworICBpZiAoeC0+aG9zdF9hZGRyID4geS0+aG9zdF9hZGRyKQorICAgIHJldHVybiAxOwor ICByZXR1cm4gMDsKK30KKworI2RlZmluZSBzcGxheV90cmVlX3ByZWZpeCBpbmRpcmVjdAor I2luY2x1ZGUgInNwbGF5LXRyZWUuaCIKKwogc3RydWN0IHRhcmdldF9tZW1fZGVzYyB7CiAg IC8qIFJlZmVyZW5jZSBjb3VudC4gICovCiAgIHVpbnRwdHJfdCByZWZjb3VudDsKZGlmZiAt LWdpdCBhL2xpYmdvbXAvbGliZ29tcC5tYXAgYi9saWJnb21wL2xpYmdvbXAubWFwCmluZGV4 IGNlNmI3MTlhNTdmLi45MGM0MDE0NTNiMiAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21w Lm1hcAorKysgYi9saWJnb21wL2xpYmdvbXAubWFwCkBAIC00MTksNiArNDE5LDcgQEAgR09N UF81LjEgewogR09NUF81LjEuMSB7CiAgIGdsb2JhbDoKIAlHT01QX3Rhc2t3YWl0X2RlcGVu ZF9ub3dhaXQ7CisJR09NUF90YXJnZXRfbWFwX2luZGlyZWN0X3B0cjsKIH0gR09NUF81LjE7 CiAKIE9BQ0NfMi4wIHsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC50ZXhpIGIvbGli Z29tcC9saWJnb21wLnRleGkKaW5kZXggZDI0ZjU5MGZkODQuLmNkMmVmMDY1NDU2IDEwMDY0 NAotLS0gYS9saWJnb21wL2xpYmdvbXAudGV4aQorKysgYi9saWJnb21wL2xpYmdvbXAudGV4 aQpAQCAtMzA0LDcgKzMwNCw3IEBAIFRoZSBPcGVuTVAgNC41IHNwZWNpZmljYXRpb24gaXMg ZnVsbHkgc3VwcG9ydGVkLgogQGl0ZW0gSXRlcmF0b3JzIGluIEBjb2Rle3RhcmdldCB1cGRh dGV9IG1vdGlvbiBjbGF1c2VzIGFuZCBAY29kZXttYXB9CiAgICAgICBjbGF1c2VzIEB0YWIg TiBAdGFiCiBAaXRlbSBJbmRpcmVjdCBjYWxscyB0byB0aGUgZGV2aWNlIHZlcnNpb24gb2Yg YSBwcm9jZWR1cmUgb3IgZnVuY3Rpb24gaW4KLSAgICAgIEBjb2Rle3RhcmdldH0gcmVnaW9u cyBAdGFiIE4gQHRhYgorICAgICAgQGNvZGV7dGFyZ2V0fSByZWdpb25zIEB0YWIgUCBAdGFi IE9ubHkgQyBhbmQgQysrCiBAaXRlbSBAY29kZXtpbnRlcm9wfSBkaXJlY3RpdmUgQHRhYiBO IEB0YWIKIEBpdGVtIEBjb2Rle29tcF9pbnRlcm9wX3R9IG9iamVjdCBzdXBwb3J0IGluIHJ1 bnRpbWUgcm91dGluZXMgQHRhYiBOIEB0YWIKIEBpdGVtIEBjb2Rle25vd2FpdH0gY2xhdXNl IGluIEBjb2Rle3Rhc2t3YWl0fSBkaXJlY3RpdmUgQHRhYiBZIEB0YWIKQEAgLTM1Myw3ICsz NTMsNyBAQCB0byBhZGRyZXNzIG9mIG1hdGNoaW5nIG1hcHBlZCBsaXN0IGl0ZW0gcGVyIDUu MSwgU2VjdC4gMi4yMS43LjIgQHRhYiBOIEB0YWIKIEBpdGVtIEZvciBGb3J0cmFuLCBkaWFn bm9zZSBwbGFjaW5nIGRlY2xhcmF0aXZlIGJlZm9yZS9iZXR3ZWVuIEBjb2Rle1VTRX0sCiAg ICAgICBAY29kZXtJTVBPUlR9LCBhbmQgQGNvZGV7SU1QTElDSVR9IGFzIGludmFsaWQgQHRh YiBOIEB0YWIKIEBpdGVtIE9wdGlvbmFsIGNvbW1hIGJldHdlZW4gZGlyZWN0aXZlIGFuZCBj bGF1c2UgaW4gdGhlIEBjb2RleyNwcmFnbWF9IGZvcm0gQHRhYiBZIEB0YWIKLUBpdGVtIEBj b2Rle2luZGlyZWN0fSBjbGF1c2UgaW4gQGNvZGV7ZGVjbGFyZSB0YXJnZXR9IEB0YWIgTiBA dGFiCitAaXRlbSBAY29kZXtpbmRpcmVjdH0gY2xhdXNlIGluIEBjb2Rle2RlY2xhcmUgdGFy Z2V0fSBAdGFiIFAgQHRhYiBPbmx5IEMgYW5kIEMrKwogQGl0ZW0gQGNvZGV7ZGV2aWNlX3R5 cGUobm9ob3N0KX0vQGNvZGV7ZGV2aWNlX3R5cGUoaG9zdCl9IGZvciB2YXJpYWJsZXMgQHRh YiBOIEB0YWIKIEBpdGVtIEBjb2Rle3ByZXNlbnR9IG1vZGlmaWVyIHRvIHRoZSBAY29kZXtt YXB9LCBAY29kZXt0b30gYW5kIEBjb2Rle2Zyb219CiAgICAgICBjbGF1c2VzIEB0YWIgWSBA dGFiCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXBfZy5oIGIvbGliZ29tcC9saWJnb21w X2cuaAppbmRleCA1YzE2NzVjNzg2OS4uOTUwNDYzMTJhZTkgMTAwNjQ0Ci0tLSBhL2xpYmdv bXAvbGliZ29tcF9nLmgKKysrIGIvbGliZ29tcC9saWJnb21wX2cuaApAQCAtMzU3LDYgKzM1 Nyw3IEBAIGV4dGVybiB2b2lkIEdPTVBfdGFyZ2V0X2VudGVyX2V4aXRfZGF0YSAoaW50LCBz aXplX3QsIHZvaWQgKiosIHNpemVfdCAqLAogCQkJCQkgdm9pZCAqKik7CiBleHRlcm4gdm9p ZCBHT01QX3RlYW1zICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CiBleHRlcm4gYm9v bCBHT01QX3RlYW1zNCAodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGlu dCwgYm9vbCk7CitleHRlcm4gdm9pZCAqR09NUF90YXJnZXRfbWFwX2luZGlyZWN0X3B0ciAo dm9pZCAqKTsKIAogLyogdGVhbXMuYyAqLwogCmRpZmYgLS1naXQgYS9saWJnb21wL29hY2Mt aG9zdC5jIGIvbGliZ29tcC9vYWNjLWhvc3QuYwppbmRleCA1OTgwZDUxMDgzOC4uZmJhYjc1 ZDdkNDMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb2FjYy1ob3N0LmMKKysrIGIvbGliZ29tcC9v YWNjLWhvc3QuYwpAQCAtODIsNyArODIsOCBAQCBob3N0X2xvYWRfaW1hZ2UgKGludCBuIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSwKIAkJIHVuc2lnbmVkIHYgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLAogCQkgY29uc3Qgdm9pZCAqdCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSks CiAJCSBzdHJ1Y3QgYWRkcl9wYWlyICoqciBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0J CSB1aW50NjRfdCAqKmYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQorCQkgdWludDY0X3Qg KipmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJIHVpbnQ2NF90ICppIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSkKIHsKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9saWJn b21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMK aW5kZXggZWYyMmQ0OGRhNzkuLjU5N2JkNzU3OThkIDEwMDY0NAotLS0gYS9saWJnb21wL3Bs dWdpbi9wbHVnaW4tZ2NuLmMKKysrIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jCkBA IC0zNjUsNiArMzY1LDcgQEAgc3RydWN0IGdjbl9pbWFnZV9kZXNjCiAgIH0gKmdjbl9pbWFn ZTsKICAgY29uc3QgdW5zaWduZWQga2VybmVsX2NvdW50OwogICBzdHJ1Y3QgaHNhX2tlcm5l bF9kZXNjcmlwdGlvbiAqa2VybmVsX2luZm9zOworICBjb25zdCB1bnNpZ25lZCBpbmRfZnVu Y19jb3VudDsKICAgY29uc3QgdW5zaWduZWQgZ2xvYmFsX3ZhcmlhYmxlX2NvdW50OwogfTsK IApAQCAtMzM1OSw3ICszMzYwLDggQEAgR09NUF9PRkZMT0FEX2luaXRfZGV2aWNlIChpbnQg bikKIGludAogR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UgKGludCBvcmQsIHVuc2lnbmVkIHZl cnNpb24sIGNvbnN0IHZvaWQgKnRhcmdldF9kYXRhLAogCQkJIHN0cnVjdCBhZGRyX3BhaXIg Kip0YXJnZXRfdGFibGUsCi0JCQkgdWludDY0X3QgKipyZXZfZm5fdGFibGUpCisJCQkgdWlu dDY0X3QgKipyZXZfZm5fdGFibGUsCisJCQkgdWludDY0X3QgKmhvc3RfaW5kX2ZuX3RhYmxl KQogewogICBpZiAoR09NUF9WRVJTSU9OX0RFViAodmVyc2lvbikgIT0gR09NUF9WRVJTSU9O X0dDTikKICAgICB7CkBAIC0zMzc1LDYgKzMzNzcsNyBAQCBHT01QX09GRkxPQURfbG9hZF9p bWFnZSAoaW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2Rh dGEsCiAgIHN0cnVjdCBtb2R1bGVfaW5mbyAqbW9kdWxlOwogICBzdHJ1Y3Qga2VybmVsX2lu Zm8gKmtlcm5lbDsKICAgaW50IGtlcm5lbF9jb3VudCA9IGltYWdlX2Rlc2MtPmtlcm5lbF9j b3VudDsKKyAgdW5zaWduZWQgaW5kX2Z1bmNfY291bnQgPSBpbWFnZV9kZXNjLT5pbmRfZnVu Y19jb3VudDsKICAgdW5zaWduZWQgdmFyX2NvdW50ID0gaW1hZ2VfZGVzYy0+Z2xvYmFsX3Zh cmlhYmxlX2NvdW50OwogICAvKiBDdXJyZW50bHksICJvdGhlcnMiIGlzIGEgc3RydWN0IG9m IElDVlMuICAqLwogICBpbnQgb3RoZXJfY291bnQgPSAxOwpAQCAtMzM5Myw2ICszMzk2LDcg QEAgR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UgKGludCBvcmQsIHVuc2lnbmVkIHZlcnNpb24s IGNvbnN0IHZvaWQgKnRhcmdldF9kYXRhLAogICAgIHJldHVybiAtMTsKIAogICBHQ05fREVC VUcgKCJFbmNvdW50ZXJlZCAlZCBrZXJuZWxzIGluIGFuIGltYWdlXG4iLCBrZXJuZWxfY291 bnQpOworICBHQ05fREVCVUcgKCJFbmNvdW50ZXJlZCAlZCBpbmRpcmVjdCBmdW5jdGlvbnMg aW4gYW4gaW1hZ2VcbiIsIGluZF9mdW5jX2NvdW50KTsKICAgR0NOX0RFQlVHICgiRW5jb3Vu dGVyZWQgJXUgZ2xvYmFsIHZhcmlhYmxlcyBpbiBhbiBpbWFnZVxuIiwgdmFyX2NvdW50KTsK ICAgR0NOX0RFQlVHICgiRXhwZWN0ICVkIG90aGVyIHZhcmlhYmxlcyBpbiBhbiBpbWFnZVxu Iiwgb3RoZXJfY291bnQpOwogICBwYWlyID0gR09NUF9QTFVHSU5fbWFsbG9jICgoa2VybmVs X2NvdW50ICsgdmFyX2NvdW50ICsgb3RoZXJfY291bnQgLSAyKQpAQCAtMzQ3NCw2ICszNDc4 LDg3IEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJz aW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0YSwKIAl9CiAgICAgfQogCisgIGlmIChpbmRf ZnVuY19jb3VudCA+IDApCisgICAgeworICAgICAgaHNhX3N0YXR1c190IHN0YXR1czsKKwor ICAgICAgLyogUmVhZCBpbmRpcmVjdCBmdW5jdGlvbiB0YWJsZSBmcm9tIGltYWdlLiAgKi8K KyAgICAgIGhzYV9leGVjdXRhYmxlX3N5bWJvbF90IGluZF9mdW5jc19zeW1ib2w7CisgICAg ICBzdGF0dXMgPSBoc2FfZm5zLmhzYV9leGVjdXRhYmxlX2dldF9zeW1ib2xfZm4gKGFnZW50 LT5leGVjdXRhYmxlLCBOVUxMLAorCQkJCQkJICAgICAiLm9mZmxvYWRfaW5kX2Z1bmNfdGFi bGUiLAorCQkJCQkJICAgICBhZ2VudC0+aWQsCisJCQkJCQkgICAgIDAsICZpbmRfZnVuY3Nf c3ltYm9sKTsKKworICAgICAgaWYgKHN0YXR1cyAhPSBIU0FfU1RBVFVTX1NVQ0NFU1MpCisJ aHNhX2ZhdGFsICgiQ291bGQgbm90IGZpbmQgLm9mZmxvYWRfaW5kX2Z1bmNfdGFibGUgc3lt Ym9sIGluIHRoZSAiCisJCSAgICJjb2RlIG9iamVjdCIsIHN0YXR1cyk7CisKKyAgICAgIHVp bnQ2NF90IGluZF9mdW5jc190YWJsZV9hZGRyOworICAgICAgc3RhdHVzID0gaHNhX2Zucy5o c2FfZXhlY3V0YWJsZV9zeW1ib2xfZ2V0X2luZm9fZm4KKwkoaW5kX2Z1bmNzX3N5bWJvbCwg SFNBX0VYRUNVVEFCTEVfU1lNQk9MX0lORk9fVkFSSUFCTEVfQUREUkVTUywKKwkgJmluZF9m dW5jc190YWJsZV9hZGRyKTsKKyAgICAgIGlmIChzdGF0dXMgIT0gSFNBX1NUQVRVU19TVUND RVNTKQorCWhzYV9mYXRhbCAoIkNvdWxkIG5vdCBleHRyYWN0IGEgdmFyaWFibGUgZnJvbSBp dHMgc3ltYm9sIiwgc3RhdHVzKTsKKworICAgICAgdWludDY0X3QgaW5kX2Z1bmNzX3RhYmxl W2luZF9mdW5jX2NvdW50XTsKKyAgICAgIEdPTVBfT0ZGTE9BRF9kZXYyaG9zdCAoYWdlbnQt PmRldmljZV9pZCwgaW5kX2Z1bmNzX3RhYmxlLAorCQkJICAgICAodm9pZCopIGluZF9mdW5j c190YWJsZV9hZGRyLAorCQkJICAgICBzaXplb2YgKGluZF9mdW5jc190YWJsZSkpOworCisg ICAgICAvKiBCdWlsZCBob3N0LT50YXJnZXQgYWRkcmVzcyBtYXAgZm9yIGluZGlyZWN0IGZ1 bmN0aW9ucy4gICovCisgICAgICB1aW50NjRfdCBpbmRfZm5fbWFwW2luZF9mdW5jX2NvdW50 ICogMiArIDFdOworICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZF9mdW5jX2Nv dW50OyBpKyspCisJeworCSAgaW5kX2ZuX21hcFtpICogMl0gPSBob3N0X2luZF9mbl90YWJs ZVtpXTsKKwkgIGluZF9mbl9tYXBbaSAqIDIgKyAxXSA9IGluZF9mdW5jc190YWJsZVtpXTsK KwkgIEdDTl9ERUJVRyAoIkluZGlyZWN0IGZ1bmN0aW9uICVkOiAlbHgtPiVseFxuIiwKKwkJ ICAgICBpLCBob3N0X2luZF9mbl90YWJsZVtpXSwgaW5kX2Z1bmNzX3RhYmxlW2ldKTsKKwl9 CisgICAgICBpbmRfZm5fbWFwW2luZF9mdW5jX2NvdW50ICogMl0gPSAwOworCisgICAgICAv KiBXcml0ZSB0aGUgbWFwIG9udG8gdGhlIHRhcmdldC4gICovCisgICAgICB2b2lkICptYXBf dGFyZ2V0X2FkZHIKKwk9IEdPTVBfT0ZGTE9BRF9hbGxvYyAoYWdlbnQtPmRldmljZV9pZCwg c2l6ZW9mIChpbmRfZm5fbWFwKSk7CisgICAgICBHQ05fREVCVUcgKCJBbGxvY2F0ZWQgaW5k aXJlY3QgbWFwIGF0ICVwXG4iLCBtYXBfdGFyZ2V0X2FkZHIpOworCisgICAgICBHT01QX09G RkxPQURfaG9zdDJkZXYgKGFnZW50LT5kZXZpY2VfaWQsIG1hcF90YXJnZXRfYWRkciwKKwkJ CSAgICAgKHZvaWQqKSBpbmRfZm5fbWFwLAorCQkJICAgICBzaXplb2YgKGluZF9mbl9tYXAp KTsKKworICAgICAgLyogV3JpdGUgYWRkcmVzcyBvZiB0aGUgbWFwIG9udG8gdGhlIHRhcmdl dC4gICovCisgICAgICBoc2FfZXhlY3V0YWJsZV9zeW1ib2xfdCBzeW1ib2w7CisKKyAgICAg IHN0YXR1cworCT0gaHNhX2Zucy5oc2FfZXhlY3V0YWJsZV9nZXRfc3ltYm9sX2ZuIChhZ2Vu dC0+ZXhlY3V0YWJsZSwgTlVMTCwKKwkJCQkJCVhTVFJJTkcgKEdPTVBfSU5ESVJFQ1RfQURE Ul9NQVApLAorCQkJCQkJYWdlbnQtPmlkLCAwLCAmc3ltYm9sKTsKKyAgICAgIGlmIChzdGF0 dXMgIT0gSFNBX1NUQVRVU19TVUNDRVNTKQorCWhzYV9mYXRhbCAoIkNvdWxkIG5vdCBmaW5k IEdPTVBfSU5ESVJFQ1RfQUREUl9NQVAgaW4gY29kZSBvYmplY3QiLAorCQkgICBzdGF0dXMp OworCisgICAgICB1aW50NjRfdCB2YXJwdHI7CisgICAgICB1aW50MzJfdCB2YXJzaXplOwor CisgICAgICBzdGF0dXMgPSBoc2FfZm5zLmhzYV9leGVjdXRhYmxlX3N5bWJvbF9nZXRfaW5m b19mbgorCShzeW1ib2wsIEhTQV9FWEVDVVRBQkxFX1NZTUJPTF9JTkZPX1ZBUklBQkxFX0FE RFJFU1MsCisJICZ2YXJwdHIpOworICAgICAgaWYgKHN0YXR1cyAhPSBIU0FfU1RBVFVTX1NV Q0NFU1MpCisJaHNhX2ZhdGFsICgiQ291bGQgbm90IGV4dHJhY3QgYSB2YXJpYWJsZSBmcm9t IGl0cyBzeW1ib2wiLCBzdGF0dXMpOworICAgICAgc3RhdHVzID0gaHNhX2Zucy5oc2FfZXhl Y3V0YWJsZV9zeW1ib2xfZ2V0X2luZm9fZm4KKwkoc3ltYm9sLCBIU0FfRVhFQ1VUQUJMRV9T WU1CT0xfSU5GT19WQVJJQUJMRV9TSVpFLAorCSZ2YXJzaXplKTsKKyAgICAgIGlmIChzdGF0 dXMgIT0gSFNBX1NUQVRVU19TVUNDRVNTKQorCWhzYV9mYXRhbCAoIkNvdWxkIG5vdCBleHRy YWN0IGEgdmFyaWFibGUgc2l6ZSBmcm9tIGl0cyBzeW1ib2wiLAorCQkgICBzdGF0dXMpOwor CisgICAgICBHQ05fREVCVUcgKCJGb3VuZCBHT01QX0lORElSRUNUX0FERFJfTUFQIGF0ICVs eCB3aXRoIHNpemUgJWRcbiIsCisJCSB2YXJwdHIsIHZhcnNpemUpOworCisgICAgICBHT01Q X09GRkxPQURfaG9zdDJkZXYgKGFnZW50LT5kZXZpY2VfaWQsICh2b2lkICopIHZhcnB0ciwK KwkJCSAgICAgJm1hcF90YXJnZXRfYWRkciwKKwkJCSAgICAgc2l6ZW9mIChtYXBfdGFyZ2V0 X2FkZHIpKTsKKyAgICB9CisKICAgR0NOX0RFQlVHICgiTG9va2luZyBmb3IgdmFyaWFibGUg JXNcbiIsIFhTVFJJTkcgKEdPTVBfQURESVRJT05BTF9JQ1ZTKSk7CiAKICAgaHNhX3N0YXR1 c190IHN0YXR1czsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5j IGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggMDBkNDI0MWFlMDIuLjc4 YWE5NWM4NDNhIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwor KysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwpAQCAtMjY2LDYgKzI2Niw4IEBA IHR5cGVkZWYgc3RydWN0IG52cHR4X3RkYXRhCiAKICAgY29uc3Qgc3RydWN0IHRhcmdfZm5f bGF1bmNoICpmbl9kZXNjczsKICAgdW5zaWduZWQgZm5fbnVtOworCisgIHVuc2lnbmVkIGlu ZF9mbl9udW07CiB9IG52cHR4X3RkYXRhX3Q7CiAKIC8qIERlc2NyaXB0b3Igb2YgYSBsb2Fk ZWQgZnVuY3Rpb24uICAqLwpAQCAtMTI4NSwxMiArMTI4NywxMyBAQCBudnB0eF9zZXRfY2xv Y2t0aWNrIChDVW1vZHVsZSBtb2R1bGUsIHN0cnVjdCBwdHhfZGV2aWNlICpkZXYpCiBpbnQK IEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBj b25zdCB2b2lkICp0YXJnZXRfZGF0YSwKIAkJCSBzdHJ1Y3QgYWRkcl9wYWlyICoqdGFyZ2V0 X3RhYmxlLAotCQkJIHVpbnQ2NF90ICoqcmV2X2ZuX3RhYmxlKQorCQkJIHVpbnQ2NF90ICoq cmV2X2ZuX3RhYmxlLAorCQkJIHVpbnQ2NF90ICpob3N0X2luZF9mbl90YWJsZSkKIHsKICAg Q1Vtb2R1bGUgbW9kdWxlOwogICBjb25zdCBjaGFyICpjb25zdCAqdmFyX25hbWVzOwogICBj b25zdCBzdHJ1Y3QgdGFyZ19mbl9sYXVuY2ggKmZuX2Rlc2NzOwotICB1bnNpZ25lZCBpbnQg Zm5fZW50cmllcywgdmFyX2VudHJpZXMsIG90aGVyX2VudHJpZXMsIGksIGo7CisgIHVuc2ln bmVkIGludCBmbl9lbnRyaWVzLCB2YXJfZW50cmllcywgaW5kX2ZuX2VudHJpZXMsIG90aGVy X2VudHJpZXMsIGksIGo7CiAgIHN0cnVjdCB0YXJnX2ZuX2Rlc2NyaXB0b3IgKnRhcmdfZm5z OwogICBzdHJ1Y3QgYWRkcl9wYWlyICp0YXJnX3RibDsKICAgY29uc3QgbnZwdHhfdGRhdGFf dCAqaW1nX2hlYWRlciA9IChjb25zdCBudnB0eF90ZGF0YV90ICopIHRhcmdldF9kYXRhOwpA QCAtMTMxOSw2ICsxMzIyLDcgQEAgR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UgKGludCBvcmQs IHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IHZvaWQgKnRhcmdldF9kYXRhLAogICB2YXJfbmFt ZXMgPSBpbWdfaGVhZGVyLT52YXJfbmFtZXM7CiAgIGZuX2VudHJpZXMgPSBpbWdfaGVhZGVy LT5mbl9udW07CiAgIGZuX2Rlc2NzID0gaW1nX2hlYWRlci0+Zm5fZGVzY3M7CisgIGluZF9m bl9lbnRyaWVzID0gaW1nX2hlYWRlci0+aW5kX2ZuX251bTsKIAogICAvKiBDdXJyZW50bHks IG90aGVyX2VudHJpZXMgY29udGFpbnMgb25seSB0aGUgc3RydWN0IG9mIElDVnMuICAqLwog ICBvdGhlcl9lbnRyaWVzID0gMTsKQEAgLTEzNzMsNiArMTM3Nyw2MCBAQCBHT01QX09GRkxP QURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAq dGFyZ2V0X2RhdGEsCiAgICAgICB0YXJnX3RibC0+ZW5kID0gdGFyZ190YmwtPnN0YXJ0ICsg Ynl0ZXM7CiAgICAgfQogCisgIGlmIChpbmRfZm5fZW50cmllcyA+IDApCisgICAgeworICAg ICAgQ1VkZXZpY2VwdHIgdmFyOworICAgICAgc2l6ZV90IGJ5dGVzOworCisgICAgICAvKiBS ZWFkIGluZGlyZWN0IGZ1bmN0aW9uIHRhYmxlIGZyb20gaW1hZ2UuICAqLworICAgICAgQ1Vy ZXN1bHQgciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdU1vZHVsZUdldEdsb2JhbCwgJnZhciwg JmJ5dGVzLCBtb2R1bGUsCisJCQkJICAgICAgIiRvZmZsb2FkX2luZF9mdW5jX3RhYmxlIik7 CisgICAgICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCisJR09NUF9QTFVHSU5fZmF0YWwgKCJj dU1vZHVsZUdldEdsb2JhbCBlcnJvcjogJXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgICBh c3NlcnQgKGJ5dGVzID09IHNpemVvZiAodWludDY0X3QpICogaW5kX2ZuX2VudHJpZXMpOwor CisgICAgICB1aW50NjRfdCBpbmRfZm5fdGFibGVbaW5kX2ZuX2VudHJpZXNdOworICAgICAg ciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdU1lbWNweUR0b0gsIGluZF9mbl90YWJsZSwgdmFy LCBieXRlcyk7CisgICAgICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCisJR09NUF9QTFVHSU5f ZmF0YWwgKCJjdU1lbWNweUR0b0ggZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOworCisg ICAgICAvKiBCdWlsZCBob3N0LT50YXJnZXQgYWRkcmVzcyBtYXAgZm9yIGluZGlyZWN0IGZ1 bmN0aW9ucy4gICovCisgICAgICB1aW50NjRfdCBpbmRfZm5fbWFwW2luZF9mbl9lbnRyaWVz ICogMiArIDFdOworICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGluZF9mbl9lbnRy aWVzOyBrKyspCisJeworCSAgaW5kX2ZuX21hcFtrICogMl0gPSBob3N0X2luZF9mbl90YWJs ZVtrXTsKKwkgIGluZF9mbl9tYXBbayAqIDIgKyAxXSA9IGluZF9mbl90YWJsZVtrXTsKKwkg IEdPTVBfUExVR0lOX2RlYnVnICgwLCAiSW5kaXJlY3QgZnVuY3Rpb24gJWQ6ICVseC0+JWx4 XG4iLAorCQkJICAgICBrLCBob3N0X2luZF9mbl90YWJsZVtrXSwgaW5kX2ZuX3RhYmxlW2td KTsKKwl9CisgICAgICBpbmRfZm5fbWFwW2luZF9mbl9lbnRyaWVzICogMl0gPSAwOworCisg ICAgICAvKiBXcml0ZSB0aGUgbWFwIG9udG8gdGhlIHRhcmdldC4gICovCisgICAgICB2b2lk ICptYXBfdGFyZ2V0X2FkZHIKKwk9IEdPTVBfT0ZGTE9BRF9hbGxvYyAob3JkLCBzaXplb2Yg KGluZF9mbl9tYXApKTsKKyAgICAgIEdPTVBfUExVR0lOX2RlYnVnICgwLCAiQWxsb2NhdGVk IGluZGlyZWN0IG1hcCBhdCAlcFxuIiwgbWFwX3RhcmdldF9hZGRyKTsKKworICAgICAgR09N UF9PRkZMT0FEX2hvc3QyZGV2IChvcmQsIG1hcF90YXJnZXRfYWRkciwKKwkJCSAgICAgKHZv aWQqKSBpbmRfZm5fbWFwLAorCQkJICAgICBzaXplb2YgKGluZF9mbl9tYXApKTsKKworICAg ICAgLyogV3JpdGUgYWRkcmVzcyBvZiB0aGUgbWFwIG9udG8gdGhlIHRhcmdldC4gICovCisg ICAgICBDVWRldmljZXB0ciB2YXJwdHI7CisgICAgICBzaXplX3QgdmFyc2l6ZTsKKyAgICAg IHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXJwdHIsICZ2 YXJzaXplLAorCQkJICAgICBtb2R1bGUsIFhTVFJJTkcgKEdPTVBfSU5ESVJFQ1RfQUREUl9N QVApKTsKKyAgICAgIGlmIChyICE9IENVREFfU1VDQ0VTUykKKwlHT01QX1BMVUdJTl9mYXRh bCAoIkluZGlyZWN0IG1hcCB2YXJpYWJsZSBub3QgZm91bmQgaW4gaW1hZ2U6ICVzIiwKKwkJ CSAgIGN1ZGFfZXJyb3IgKHIpKTsKKworICAgICAgR09NUF9QTFVHSU5fZGVidWcgKDAsCisJ CQkgIkluZGlyZWN0IG1hcCB2YXJpYWJsZSBmb3VuZCBhdCAlbGx4IHdpdGggc2l6ZSAlbGRc biIsCisJCQkgdmFycHRyLCB2YXJzaXplKTsKKworICAgICAgR09NUF9PRkZMT0FEX2hvc3Qy ZGV2IChvcmQsICh2b2lkICopIHZhcnB0ciwgJm1hcF90YXJnZXRfYWRkciwKKwkJCSAgICAg c2l6ZW9mIChtYXBfdGFyZ2V0X2FkZHIpKTsKKyAgICB9CisKICAgQ1VkZXZpY2VwdHIgdmFy cHRyOwogICBzaXplX3QgdmFyc2l6ZTsKICAgQ1VyZXN1bHQgciA9IENVREFfQ0FMTF9OT0NI RUNLIChjdU1vZHVsZUdldEdsb2JhbCwgJnZhcnB0ciwgJnZhcnNpemUsCmRpZmYgLS1naXQg YS9saWJnb21wL3RhcmdldC5jIGIvbGliZ29tcC90YXJnZXQuYwppbmRleCA4MTI2NzRkMTlh OS4uZWMxNTQyMjJhZDUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGFyZ2V0LmMKKysrIGIvbGli Z29tcC90YXJnZXQuYwpAQCAtMjI1NiwxMSArMjI1NiwxNCBAQCBnb21wX2xvYWRfaW1hZ2Vf dG9fZGV2aWNlIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsIHVuc2lnbmVk IHZlcnNpb24sCiAgIHZvaWQgKipob3N0X2Z1bmNzX2VuZCAgPSAoKHZvaWQgKioqKSBob3N0 X3RhYmxlKVsxXTsKICAgdm9pZCAqKmhvc3RfdmFyX3RhYmxlICA9ICgodm9pZCAqKiopIGhv c3RfdGFibGUpWzJdOwogICB2b2lkICoqaG9zdF92YXJzX2VuZCAgID0gKCh2b2lkICoqKikg aG9zdF90YWJsZSlbM107CisgIHZvaWQgKipob3N0X2luZF9mdW5jX3RhYmxlID0gKCh2b2lk ICoqKikgaG9zdF90YWJsZSlbNF07CisgIHZvaWQgKipob3N0X2luZF9mdW5jc19lbmQgID0g KCh2b2lkICoqKikgaG9zdF90YWJsZSlbNV07CiAKLSAgLyogVGhlIGZ1bmMgdGFibGUgY29u dGFpbnMgb25seSBhZGRyZXNzZXMsIHRoZSB2YXIgdGFibGUgY29udGFpbnMgYWRkcmVzc2Vz Ci0gICAgIGFuZCBjb3JyZXNwb25kaW5nIHNpemVzLiAgKi8KKyAgLyogVGhlIGZ1bmMgYW5k IGluZF9mdW5jIHRhYmxlcyBjb250YWluIG9ubHkgYWRkcmVzc2VzLCB0aGUgdmFyIHRhYmxl CisgICAgIGNvbnRhaW5zIGFkZHJlc3NlcyBhbmQgY29ycmVzcG9uZGluZyBzaXplcy4gICov CiAgIGludCBudW1fZnVuY3MgPSBob3N0X2Z1bmNzX2VuZCAtIGhvc3RfZnVuY190YWJsZTsK ICAgaW50IG51bV92YXJzICA9IChob3N0X3ZhcnNfZW5kIC0gaG9zdF92YXJfdGFibGUpIC8g MjsKKyAgaW50IG51bV9pbmRfZnVuY3MgPSAoaG9zdF9pbmRfZnVuY3NfZW5kIC0gaG9zdF9p bmRfZnVuY190YWJsZSk7CiAKICAgLyogTG9hZCBpbWFnZSB0byBkZXZpY2UgYW5kIGdldCB0 YXJnZXQgYWRkcmVzc2VzIGZvciB0aGUgaW1hZ2UuICAqLwogICBzdHJ1Y3QgYWRkcl9wYWly ICp0YXJnZXRfdGFibGUgPSBOVUxMOwpAQCAtMjI3Myw3ICsyMjc2LDkgQEAgZ29tcF9sb2Fk X2ltYWdlX3RvX2RldmljZSAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLCB1 bnNpZ25lZCB2ZXJzaW9uLAogICBudW1fdGFyZ2V0X2VudHJpZXMKICAgICA9IGRldmljZXAt PmxvYWRfaW1hZ2VfZnVuYyAoZGV2aWNlcC0+dGFyZ2V0X2lkLCB2ZXJzaW9uLAogCQkJCXRh cmdldF9kYXRhLCAmdGFyZ2V0X3RhYmxlLAotCQkJCXJldl9sb29rdXAgPyAmcmV2X3Rhcmdl dF9mbl90YWJsZSA6IE5VTEwpOworCQkJCXJldl9sb29rdXAgPyAmcmV2X3RhcmdldF9mbl90 YWJsZSA6IE5VTEwsCisJCQkJbnVtX2luZF9mdW5jcworCQkJCSAgPyAodWludDY0X3QgKikg aG9zdF9pbmRfZnVuY190YWJsZSA6IE5VTEwpOwogCiAgIGlmIChudW1fdGFyZ2V0X2VudHJp ZXMgIT0gbnVtX2Z1bmNzICsgbnVtX3ZhcnMKICAgICAgIC8qICIrMSIgZHVlIHRvIHRoZSBh ZGRpdGlvbmFsIElDViBzdHJ1Y3QuICAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMS5jIGIv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQt aW5kaXJlY3QtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i MjBiZmE2NGRjYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuYy1jKystY29tbW9uL2RlY2xhcmUtdGFyZ2V0LWluZGlyZWN0LTEuYwpAQCAtMCwwICsx LDIxIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisKKyNwcmFnbWEgb21wIGJlZ2luIGRlY2xh cmUgdGFyZ2V0IGluZGlyZWN0CitpbnQgZm9vKHZvaWQpIHsgcmV0dXJuIDU7IH0KK2ludCBi YXIodm9pZCkgeyByZXR1cm4gODsgfQoraW50IGJheih2b2lkKSB7IHJldHVybiAxMTsgfQor I3ByYWdtYSBvbXAgZW5kIGRlY2xhcmUgdGFyZ2V0CisKK2ludCBtYWluICh2b2lkKQorewor ICBpbnQgeDsKKyAgaW50ICgqZm9vX3B0cikgKHZvaWQpID0gJmZvbzsKKyAgaW50ICgqYmFy X3B0cikgKHZvaWQpID0gJmJhcjsKKyAgaW50ICgqYmF6X3B0cikgKHZvaWQpID0gJmJhejsK KyAgaW50IGV4cGVjdGVkID0gZm9vICgpICsgYmFyICgpICsgYmF6ICgpOworCisjcHJhZ21h IG9tcCB0YXJnZXQgbWFwICh0bzogZm9vX3B0ciwgYmFyX3B0ciwgYmF6X3B0cikgbWFwIChm cm9tOiB4KQorICB4ID0gKCpmb29fcHRyKSAoKSArICgqYmFyX3B0cikgKCkgKyAoKmJhel9w dHIpICgpOworCisgIHJldHVybiB4IC0gZXhwZWN0ZWQ7Cit9CmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNsYXJlLXRhcmdldC1pbmRp cmVjdC0yLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9kZWNs YXJlLXRhcmdldC1pbmRpcmVjdC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjlmZTE5MGVmY2U4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0 c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vZGVjbGFyZS10YXJnZXQtaW5kaXJlY3QtMi5j CkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2RlZmluZSBOIDI1 NgorCisjcHJhZ21hIG9tcCBiZWdpbiBkZWNsYXJlIHRhcmdldCBpbmRpcmVjdAoraW50IGZv byh2b2lkKSB7IHJldHVybiA1OyB9CitpbnQgYmFyKHZvaWQpIHsgcmV0dXJuIDg7IH0KK2lu dCBiYXoodm9pZCkgeyByZXR1cm4gMTE7IH0KKyNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHRh cmdldAorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgaW50IGksIHggPSAwLCBleHBlY3RlZCA9 IDA7CisgIGludCAoKmZuX3B0cltOXSkodm9pZCk7CisKKyAgZm9yIChpID0gMDsgaSA8IE47 IGkrKykKKyAgICB7CisgICAgICBzd2l0Y2ggKGkgJSAzKQorCXsKKwljYXNlIDA6IGZuX3B0 cltpXSA9ICZmb287CisJY2FzZSAxOiBmbl9wdHJbaV0gPSAmYmFyOworCWNhc2UgMjogZm5f cHRyW2ldID0gJmJhejsKKwl9CisgICAgICBleHBlY3RlZCArPSAoKmZuX3B0cltpXSkgKCk7 CisgICAgfQorCisjcHJhZ21hIG9tcCB0YXJnZXQgdGVhbXMgZGlzdHJpYnV0ZSBwYXJhbGxl bCBmb3IgcmVkdWN0aW9uKCs6IHgpIFwKKwkJbWFwICh0bzogZm5fcHRyKSBtYXAgKHRvZnJv bTogeCkKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeCArPSAoKmZuX3B0 cltpXSkgKCk7CisKKyAgcmV0dXJuIHggLSBleHBlY3RlZDsKK30KLS0gCjIuMzQuMQoK --------------uy50Lo5Z8F7hlBttqydrf1x0--