From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 3D59D3858D20 for ; Fri, 3 Feb 2023 13:45:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3D59D3858D20 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-IronPort-AV: E=Sophos;i="5.97,270,1669104000"; d="scan'208,223";a="99467940" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 03 Feb 2023 05:45:29 -0800 IronPort-SDR: bpesgP5R3ODfcNOCOEnXkfZ7Wo8AZ3n5PJkZWcvxzugazeJDD6PA3rAbbvTbiDE3ajlUGASo/w UO3iVZsJI3atOwwiWWDBQX4Gls2iKh5owVR4g7MiXPWBQcQVi5ZhfHJJJIUzXh3kg0a4lAqNEf GYl9HfLbjDW8nvcaXiMyCyEvBx40d7DFCUiEhIg64rGArSIDxSjlzdfhdZshXgG2lmhCVwY7Qo AY6hwi0/vjyUiozdmTC9Q7mP1haatGI9a1wLJNlt+sbVyfFPxTX6GvZx6R8ySkeqdi7E1cgBxv jHc= Content-Type: multipart/mixed; boundary="------------uh0aYfIR4HWBAp8UgExLq1gr" Message-ID: <6eb5d0dd-da2a-6d8e-eaa2-d14bf708cf36@codesourcery.com> Date: Fri, 3 Feb 2023 13:44:33 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 From: Kwok Cheung Yeung Subject: [PATCH] openmp: Add support for 'present' modifier To: Jakub Jelinek , gcc-patches X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) 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: --------------uh0aYfIR4HWBAp8UgExLq1gr Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hello This patch implements support for the OpenMP 5.1 'present' modifier in C, C++ and Fortran. 'present' can be used in the 'map' clause for the 'target', 'target data', 'target data enter' and 'target data exit' constructs, and the 'to'/'from' clauses of 'target update'. It can be used in conjunction with other modifiers too (currently only 'always' on map clauses). It can also be used in defaultmap, which applies 'present, alloc' to the default clauses. It behaves similarly to the OpenACC 'present' clause, and causes an fatal runtime error when the referenced data is not already present in device memory. Similarly to the OpenACC error message, the error is expressed in terms of the equivalent OpenMP function !omp_target_is_present. Regarding the representation of the map kind - the bit space is getting a bit crowded. I have made bit 7 (GOMP_MAP_FLAG_FORCE) into another special bit (GOMP_MAP_FLAG_SPECIAL_5), and redefined GOMP_MAP_FLAG_FORCE to be GOMP_MAP_FLAG_SPECIAL_5 with no other special flags set. The 'present' modifier is represented by setting GOMP_MAP_FLAG_SPECIAL_5 | GOMP_MAP_FLAG_SPECIAL_0 - this does not interfere with 'always' (GOMP_MAP_FLAG_SPECIAL_2) or 'implicit' (GOMP_MAP_FLAG_SPECIAL_3 | GOMP_MAP_FLAG_SPECIAL_4) which is used by clauses generated by defaultmap. During gimplification of defaultmap, the present defaultmap is represented by setting GOVD_MAP_FORCE_PRESENT (as that is presently only used in OpenACC and has a similar meaning). GOVD_MAP_ALLOC ONLY will be added, and this is eventually lowered to a GOMP_MAP_PRESENT_ALLOC map kind for the default clauses. Bootstrapped on x86-64, no regressions in GCC testsuite, libgomp tested with x86-64 (no offloading), AMD GCN and NVPTX offloading. This is too late for GCC 13 now, but will this be okay for GCC 14? Thanks Kwok --------------uh0aYfIR4HWBAp8UgExLq1gr Content-Type: text/plain; charset="UTF-8"; name="0001-openmp-Add-support-for-the-present-modifier.patch" Content-Disposition: attachment; filename="0001-openmp-Add-support-for-the-present-modifier.patch" Content-Transfer-Encoding: base64 RnJvbSBiYTkzNjhmODg1MTRhMjdmMzc0ZDg0ZTUzZTM2Y2UzNmZhOWFjNWJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IEZyaSwgMyBGZWIgMjAyMyAxMzowNDoyMSArMDAwMApTdWJqZWN0 OiBbUEFUQ0hdIG9wZW5tcDogQWRkIHN1cHBvcnQgZm9yIHRoZSAncHJlc2VudCcgbW9kaWZp ZXIKClRoaXMgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgT3Blbk1QIDUuMSAncHJlc2Vu dCcgbW9kaWZpZXIsIHdoaWNoIGNhbiBiZQp1c2VkIGluIG1hcCBjbGF1c2VzIGluIHRoZSAn dGFyZ2V0JywgJ3RhcmdldCBkYXRhJywgJ3RhcmdldCBkYXRhIGVudGVyJyBhbmQKJ3Rhcmdl dCBkYXRhIGV4aXQnIGNvbnN0cnVjdHMsIGFuZCBpbiB0aGUgJ3RvJyBhbmQgJ2Zyb20nIGNs YXVzZXMgb2YgdGhlCid0YXJnZXQgdXBkYXRlJyBjb25zdHJ1Y3QuICBJdCBpcyBhbHNvIHN1 cHBvcnRlZCBpbiBkZWZhdWx0bWFwLgoKVGhlIG1vZGlmaWVyIHRyaWdnZXJzIGEgZmF0YWwg cnVudGltZSBlcnJvciBpZiB0aGUgZGF0YSBzcGVjaWZpZWQgYnkgdGhlCmNsYXVzZSBpcyBu b3QgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSB0YXJnZXQgZGV2aWNlLiAgSXQgY2FuIGFsc28g YmUgY29tYmluZWQKd2l0aCAnYWx3YXlzJyBpbiBtYXAgY2xhdXNlcy4KCjIwMjMtMDItMDEg IEt3b2sgQ2hldW5nIFlldW5nICA8a2N5QGNvZGVzb3VyY2VyeS5jb20+CgoJZ2NjL2MvCgkq IGMtcGFyc2VyLmNjIChjX3BhcnNlcl9vbXBfdmFyaWFibGVfbGlzdCk6IFNldCBkZWZhdWx0 IG1vdGlvbgoJbW9kaWZpZXIuCgkoY19wYXJzZXJfb21wX3Zhcl9saXN0X3BhcmVucyk6IEFk ZCBuZXcgcGFyYW1ldGVyIHdpdGggZGVmYXVsdC4gIFBhcnNlCgkncHJlc2VudCcgbW90aW9u IG1vZGlmaWVyIGFuZCBhcHBseS4KCShjX3BhcnNlcl9vbXBfY2xhdXNlX2RlZmF1bHRtYXAp OiBQYXJzZSAncHJlc2VudCcgaW4gZGVmYXVsdG1hcC4KCShjX3BhcnNlcl9vbXBfY2xhdXNl X21hcCk6IFBhcnNlICdwcmVzZW50JyBtb2RpZmllciBpbiBtYXAgY2xhdXNlcy4KCShjX3Bh cnNlcl9vbXBfY2xhdXNlX3RvKTogQWxsb3cgdXNlIG9mICdwcmVzZW50JyBpbiB2YXJpYWJs ZSBsaXN0LgoJKGNfcGFyc2VyX29tcF9jbGF1c2VfZnJvbSk6IExpa2V3aXNlLgoJKGNfcGFy c2VyX29tcF90YXJnZXRfZGF0YSk6IEFsbG93IG1hcCBjbGF1c2VzIHdpdGggJ3ByZXNlbnQn Cgltb2RpZmllcnMuCgkoY19wYXJzZXJfb21wX3RhcmdldF9lbnRlcl9kYXRhKTogTGlrZXdp c2UuCgkoY19wYXJzZXJfb21wX3RhcmdldF9leGl0X2RhdGEpOiBMaWtld2lzZS4KCShjX3Bh cnNlcl9vbXBfdGFyZ2V0KTogTGlrZXdpc2UuCgoJZ2NjL2NwLwoJKiBwYXJzZXIuY2MgKGNw X3BhcnNlcl9vbXBfdmFyX2xpc3Rfbm9fb3Blbik6IEFkZCBuZXcgcGFyYW1ldGVyIHdpdGgK CWRlZmF1bHQuICBQYXJzZQkncHJlc2VudCcgbW90aW9uIG1vZGlmaWVyIGFuZCBhcHBseS4K CShjcF9wYXJzZXJfb21wX2NsYXVzZV9kZWZhdWx0bWFwKTogUGFyc2UgJ3ByZXNlbnQnIGlu IGRlZmF1bHRtYXAuCgkoY3BfcGFyc2VyX29tcF9jbGF1c2VfbWFwKTogUGFyc2UgJ3ByZXNl bnQnIG1vZGlmaWVyIGluIG1hcCBjbGF1c2VzLgoJKGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVz ZXMpOiBBbGxvdyB1c2Ugb2YgJ3ByZXNlbnQnIGluICd0bycgYW5kICdmcm9tJwoJY2xhdXNl cy4KCShjcF9wYXJzZXJfb21wX3RhcmdldF9kYXRhKTogQWxsb3cgbWFwIGNsYXVzZXMgd2l0 aCAncHJlc2VudCcKCW1vZGlmaWVycy4KCShjcF9wYXJzZXJfb21wX3RhcmdldF9lbnRlcl9k YXRhKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29tcF90YXJnZXRfZXhpdF9kYXRhKTogTGlr ZXdpc2UuCgkqIHNlbWFudGljcy5jYyAoZmluaXNoX29tcF90YXJnZXQpOiBBY2NlcHQgbWFw IGNsYXVzZXMgd2l0aCAncHJlc2VudCcKCW1vZGlmaWVycy4KCglnY2MvZm9ydHJhbi8KCSog Z2ZvcnRyYW4uaCAoZW51bSBnZmNfb21wX21hcF9vcCk6IEFkZCBlbnRyaWVzIHdpdGggJ3By ZXNlbnQnCgltb2RpZmllcnMuCgkoZW51bSBnZmNfb21wX21vdGlvbl9tb2RpZmllcik6IE5l dy4KCShzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdCk6IEFkZCBtb3Rpb25fbW9kaWZpZXIgZmll bGQuCgkqIG9wZW5tcC5jYyAoZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0KTogQWRkIG5l dyBwYXJhbWV0ZXIgd2l0aAoJZGVmYXVsdC4gIFBhcnNlICdwcmVzZW50JyBtb3Rpb24gbW9k aWZpZXIgYW5kIGFwcGx5LgoJKGdmY19tYXRjaF9vbXBfY2xhdXNlcyk6IFBhcnNlICdwcmVz ZW50JyBpbiBkZWZhdWx0bWFwLCAnZnJvbScKCWNsYXVzZXMsICdtYXAnIGNsYXVzZXMgYW5k ICd0bycgY2xhdXNlcy4KCShyZXNvbHZlX29tcF9jbGF1c2VzKTogQWxsb3cgJ3ByZXNlbnQn IG1vZGlmaWVycyBvbiAndGFyZ2V0JywKCSd0YXJnZXQgZGF0YScsICd0YXJnZXQgZW50ZXIn IGFuZCAndGFyZ2V0IGV4aXQnCWRpcmVjdGl2ZXMuCgkqIHRyYW5zLW9wZW5tcC5jYyAoZ2Zj X3RyYW5zX29tcF9jbGF1c2VzKTogQXBwbHkgJ3ByZXNlbnQnIG1vZGlmaWVycwoJdG8gdHJl ZSBub2RlIGZvciAnbWFwJywgJ3RvJyBhbmQgJ2Zyb20nCWNsYXVzZXMuICBBcHBseSAncHJl c2VudCcgZm9yCglkZWZhdWx0bWFwLgoKCWdjYy8KCSogZ2ltcGxpZnkuY2MgKG9tcF9ub3Rp Y2VfdmFyaWFibGUpOiBBcHBseSBHT1ZEX01BUF9BTExPQ19PTkxZIGZsYWcKCWFuZCBkZWZh dWx0bWFwIGZsYWdzIGlmIHRoZSBkZWZhdWx0bWFwIGhhcyBHT1ZEX01BUF9GT1JDRV9QUkVT RU5UIGZsYWcKCXNldC4KCShvbXBfZ2V0X2F0dGFjaG1lbnQpOiBIYW5kbGUgbWFwIGNsYXVz ZXMgd2l0aCAncHJlc2VudCcgbW9kaWZpZXIuCgkob21wX2dyb3VwX2Jhc2UpOiBMaWtld2lz ZS4KCShnaW1wbGlmeV9zY2FuX29tcF9jbGF1c2VzKTogU2V0IEdPVkQgZmxhZ3MgZm9yIHBy ZXNlbnQgZGVmYXVsdG1hcHMuCgkoZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2VzXzEpOiBT ZXQgbWFwIGtpbmQgZm9yIHByZXNlbnQgZGVmYXVsdG1hcHMuCgkoZ2ltcGxpZnlfYWRqdXN0 X29tcF9jbGF1c2VzKTogUmVvcmRlciBwcmVzZW50IG1hcHMgdG8gY29tZSBmaXJzdC4KCSog b21wLWxvdy5jYyAoc2Nhbl9zaGFyaW5nX2NsYXVzZXMpOiBIYW5kbGUgJ2Fsd2F5cywgcHJl c2VudCcgbWFwCgljbGF1c2VzLgoJKGxvd2VyX29tcF90YXJnZXQpOiBIYW5kbGUgbWFwIGNs YXVzZXMgd2l0aCAncHJlc2VudCcgbW9kaWZpZXIuCglIYW5kbGUgJ3RvJyBhbmQgJ2Zyb20n IGNsYXVzZXMgd2l0aCAncHJlc2VudCcuCgkqIHRyZWUtY29yZS5oIChlbnVtIG9tcF9jbGF1 c2VfZGVmYXVsdG1hcF9raW5kKTogQWRkCglPTVBfQ0xBVVNFX0RFRkFVTFRNQVBfUFJFU0VO VCBkZWZhdWx0bWFwIGtpbmQuCgkoZW51bSBvbXBfY2xhdXNlX21vdGlvbl9tb2RpZmllcik6 IE5ldy4KCShzdHJ1Y3QgdHJlZV9vbXBfY2xhdXNlKTogQWRkIG1vdGlvbl9tb2RpZmllciBm aWVsZC4KCSogdHJlZS1wcmV0dHktcHJpbnQuY2MgKGR1bXBfb21wX2NsYXVzZSk6IEhhbmRs ZSAnbWFwJywgJ3RvJyBhbmQKCSdmcm9tJyBjbGF1c2VzIHdpdGggJ3ByZXNlbnQnIG1vZGlm aWVyLiAgSGFuZGxlIHByZXNlbnQgZGVmYXVsdG1hcC4KCSogdHJlZS5oIChPTVBfQ0xBVVNF X01PVElPTl9NT0RJRklFUik6IE5ldy4KCShPTVBfQ0xBVVNFX1NFVF9NT1RJT05fTU9ESUZJ RVIpOiBOZXcuCgoJZ2NjL3Rlc3RzdWl0ZS8KCSogYy1jKystY29tbW9uL2dvbXAvZGVmYXVs dG1hcC00LmM6IE5ldy4KCSogYy1jKystY29tbW9uL2dvbXAvbWFwLTYuYzogVXBkYXRlIGV4 cGVjdGVkIGVycm9yIG1lc3NhZ2VzLgoJKiBjLWMrKy1jb21tb24vZ29tcC9tYXAtOC5jOiBO ZXcuCgkqIGMtYysrLWNvbW1vbi9nb21wL3RhcmdldC11cGRhdGUtMS5jOiBOZXcuCgkqIGdm b3J0cmFuLmRnL2dvbXAvZGVmYXVsdG1hcC0xLmY5MDogVXBkYXRlIGV4cGVjdGVkIGVycm9y IG1lc3NhZ2VzLgoJKiBnZm9ydHJhbi5kZy9nb21wL2RlZmF1bHRtYXAtOC5mOTA6IE5ldy4K CSogZ2ZvcnRyYW4uZGcvZ29tcC9tYXAtOS5mOTA6IE5ldy4KCSogZ2ZvcnRyYW4uZGcvZ29t cC90YXJnZXQtdXBkYXRlLTEuZjkwOiBOZXcuCgoJaW5jbHVkZS8KCSogZ29tcC1jb25zdGFu dHMuaCAoR09NUF9NQVBfRkxBR19TUEVDSUFMXzUpOiBOZXcuCgkoR09NUF9NQVBfRkxBR19G T1JDRSk6IFJlZGVmaW5lLgoJKEdPTVBfTUFQX0ZMQUdfUFJFU0VOVCk6IE5ldy4KCShHT01Q X01BUF9GTEFHX0FMV0FZU19QUkVTRU5UKTogTmV3LgoJKGVudW0gZ29tcF9tYXBfa2luZCk6 IEFkZCBtYXAga2luZHMgd2l0aCAncHJlc2VudCcgbW9kaWZpZXJzLgoJKEdPTVBfTUFQX0NP UFlfVE9fUCk6IEV2YWx1YXRlIHRvIHRydWUgZm9yIG1hcCB2YXJpYW50cyB3aXRoICdwcmVz ZW50JwoJbW9kaWZpZXJzLgoJKEdPTVBfTUFQX0NPUFlfRlJPTV9QKTogTGlrZXdpc2UuCgko R09NUF9NQVBfQUxXQVlTX1RPX1ApOiBFdmFsdWF0ZSB0byB0cnVlIGZvciBtYXAgdmFyaWFu dHMgd2l0aAoJJ2Fsd2F5cywgcHJlc2VudCcgbW9kaWZpZXJzLgoJKEdPTVBfTUFQX0FMV0FZ U19GUk9NX1ApOiBMaWtld2lzZS4KCShHT01QX01BUF9BTFdBWVMpOiBSZWRlZmluZS4KCShH T01QX01BUF9GT1JDRV9QKTogTmV3LgoJKEdPTVBfTUFQX1BSRVNFTlRfUCk6IE5ldy4KCgls aWJnb21wLwoJKiB0YXJnZXQuYyAoZ29tcF90b19kZXZpY2Vfa2luZF9wKTogQWRkIG1hcCBr aW5kcyB3aXRoICdwcmVzZW50JwoJbW9kaWZpZXIuCgkoZ29tcF9tYXBfdmFyc19leGlzdGlu Zyk6IFVzZSBuZXcgR09NUF9NQVBfRk9SQ0VfUCBtYWNyby4KCShnb21wX21hcF92YXJzX2lu dGVybmFsKTogRW1pdCBydW50aW1lIGVycm9yIGlmIG1lbW9yeSByZWdpb24gbm90CglwcmVz ZW50LgoJKGdvbXBfdXBkYXRlKTogTGlrZXdpc2UuCgkoZ29tcF90YXJnZXRfcmV2KTogTGlr ZXdpc2UuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2Vu dC0xLmM6IE5ldy4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1w cmVzZW50LTIuYzogTmV3LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFy Z2V0LXByZXNlbnQtMy5jOiBOZXcuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vdGFy Z2V0LXByZXNlbnQtMS5mOTA6IE5ldy4KCSogdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90 YXJnZXQtcHJlc2VudC0yLmY5MDogTmV3LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L3RhcmdldC1wcmVzZW50LTMuZjkwOiBOZXcuCi0tLQogZ2NjL2MvYy1wYXJzZXIuY2MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTA2ICsrKysrKysrKysrKysrKystLQogZ2Nj L2NwL3BhcnNlci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAzICsrKysr KysrKysrKysrKy0tCiBnY2MvY3Avc2VtYW50aWNzLmNjICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDcgKysKIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNiArKy0KIGdjYy9mb3J0cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA3NyArKysrKysrKysrKy0tCiBnY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuY2MgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKysKIGdjYy9naW1wbGlmeS5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3MSArKysrKysrKysrKysKIGdjYy9v bXAtbG93LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNiArKysrLQog Li4uL2MtYysrLWNvbW1vbi9nb21wL2RlZmF1bHRtYXAtNC5jICAgICAgICAgIHwgIDI0ICsr KysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbWFwLTYuYyAgICAgICB8ICAg NCArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9tYXAtOC5jICAgICAgIHwg IDMyICsrKysrKwogLi4uL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC11cGRhdGUtMS5jICAg ICAgIHwgIDE1ICsrKwogLi4uL2dmb3J0cmFuLmRnL2dvbXAvZGVmYXVsdG1hcC0xLmY5MCAg ICAgICAgIHwgICAyICstCiAuLi4vZ2ZvcnRyYW4uZGcvZ29tcC9kZWZhdWx0bWFwLTguZjkw ICAgICAgICAgfCAgMjYgKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9t YXAtOS5mOTAgICAgICB8ICAzNCArKysrKysKIC4uLi9nZm9ydHJhbi5kZy9nb21wL3Rhcmdl dC11cGRhdGUtMS5mOTAgICAgICB8ICAxMyArKysKIGdjYy90cmVlLWNvcmUuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogZ2NjL3RyZWUtcHJldHR5LXByaW50 LmNjICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKysrCiBnY2MvdHJlZS5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogaW5jbHVkZS9nb21wLWNv bnN0YW50cy5oICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrKysrKy0tCiBsaWJnb21w L3RhcmdldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjYgKysrKysrKysr Ky0KIC4uLi9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2VudC0xLmMgICB8ICAy NyArKysrKwogLi4uL2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1wcmVzZW50LTIuYyAg IHwgIDI3ICsrKysrCiAuLi4vbGliZ29tcC5jLWMrKy1jb21tb24vdGFyZ2V0LXByZXNlbnQt My5jICAgfCAgMjcgKysrKysKIC4uLi9saWJnb21wLmZvcnRyYW4vdGFyZ2V0LXByZXNlbnQt MS5mOTAgICAgICB8ICAzMCArKysrKwogLi4uL2xpYmdvbXAuZm9ydHJhbi90YXJnZXQtcHJl c2VudC0yLmY5MCAgICAgIHwgIDMwICsrKysrCiAuLi4vbGliZ29tcC5mb3J0cmFuL3Rhcmdl dC1wcmVzZW50LTMuZjkwICAgICAgfCAgMjIgKysrKwogMjcgZmlsZXMgY2hhbmdlZCwgODU4 IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVmYXVsdG1hcC00LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL21hcC04LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3Rhcmdl dC11cGRhdGUtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2RlZmF1bHRtYXAtOC5mOTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbWFwLTkuZjkwCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC11cGRhdGUtMS5mOTAKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1v bi90YXJnZXQtcHJlc2VudC0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2VudC0yLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJn ZXQtcHJlc2VudC0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmZvcnRyYW4vdGFyZ2V0LXByZXNlbnQtMS5mOTAKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vdGFyZ2V0LXByZXNlbnQtMi5m OTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRy YW4vdGFyZ2V0LXByZXNlbnQtMy5mOTAKCmRpZmYgLS1naXQgYS9nY2MvYy9jLXBhcnNlci5j YyBiL2djYy9jL2MtcGFyc2VyLmNjCmluZGV4IDgwM2IwNGI4ZGMxLi41NGUzNWNlMjU4MyAx MDA2NDQKLS0tIGEvZ2NjL2MvYy1wYXJzZXIuY2MKKysrIGIvZ2NjL2MvYy1wYXJzZXIuY2MK QEAgLTE0MDI1LDYgKzE0MDI1LDggQEAgY19wYXJzZXJfb21wX3ZhcmlhYmxlX2xpc3QgKGNf cGFyc2VyICpwYXJzZXIsCiAJICAgICAgdHJlZSB1ID0gYnVpbGRfb21wX2NsYXVzZSAoY2xh dXNlX2xvYywga2luZCk7CiAJICAgICAgT01QX0NMQVVTRV9ERUNMICh1KSA9IHQ7CiAJICAg ICAgT01QX0NMQVVTRV9DSEFJTiAodSkgPSBsaXN0OworCSAgICAgIGlmIChraW5kID09IE9N UF9DTEFVU0VfRlJPTSB8fCBraW5kID09IE9NUF9DTEFVU0VfVE8pCisJCU9NUF9DTEFVU0Vf U0VUX01PVElPTl9NT0RJRklFUiAodSwgT01QX0NMQVVTRV9NT1RJT05fTk9ORSk7CiAJICAg ICAgbGlzdCA9IHU7CiAJICAgIH0KIAl9CkBAIC0xNDA1Miw3ICsxNDA1NCw4IEBAIGNfcGFy c2VyX29tcF92YXJpYWJsZV9saXN0IChjX3BhcnNlciAqcGFyc2VyLAogCiBzdGF0aWMgdHJl ZQogY19wYXJzZXJfb21wX3Zhcl9saXN0X3BhcmVucyAoY19wYXJzZXIgKnBhcnNlciwgZW51 bSBvbXBfY2xhdXNlX2NvZGUga2luZCwKLQkJCSAgICAgIHRyZWUgbGlzdCwgYm9vbCBhbGxv d19kZXJlZiA9IGZhbHNlKQorCQkJICAgICAgdHJlZSBsaXN0LCBib29sIGFsbG93X2RlcmVm ID0gZmFsc2UsCisJCQkgICAgICBib29sIGFsbG93X3ByZXNlbnQgPSBmYWxzZSkKIHsKICAg LyogVGhlIGNsYXVzZXMgbG9jYXRpb24uICAqLwogICBsb2NhdGlvbl90IGxvYyA9IGNfcGFy c2VyX3BlZWtfdG9rZW4gKHBhcnNlciktPmxvY2F0aW9uOwpAQCAtMTQwNjAsNyArMTQwNjMs MjYgQEAgY19wYXJzZXJfb21wX3Zhcl9saXN0X3BhcmVucyAoY19wYXJzZXIgKnBhcnNlciwg ZW51bSBvbXBfY2xhdXNlX2NvZGUga2luZCwKICAgbWF0Y2hpbmdfcGFyZW5zIHBhcmVuczsK ICAgaWYgKHBhcmVucy5yZXF1aXJlX29wZW4gKHBhcnNlcikpCiAgICAgeworICAgICAgYm9v bCBwcmVzZW50ID0gZmFsc2U7CisKKyAgICAgIGlmIChhbGxvd19wcmVzZW50KQorCXsKKwkg ICBjX3Rva2VuICp0b2tlbiA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlcik7CisKKwkg ICBpZiAodG9rZW4tPnR5cGUgPT0gQ1BQX05BTUUKKwkgICAgICAgJiYgc3RyY21wIChJREVO VElGSUVSX1BPSU5URVIgKHRva2VuLT52YWx1ZSksICJwcmVzZW50IikgPT0gMAorCSAgICAg ICAmJiBjX3BhcnNlcl9wZWVrXzJuZF90b2tlbiAocGFyc2VyKS0+dHlwZSA9PSBDUFBfQ09M T04pCisJICAgIHsKKwkgICAgICBwcmVzZW50ID0gdHJ1ZTsKKwkgICAgICBjX3BhcnNlcl9j b25zdW1lX3Rva2VuIChwYXJzZXIpOworCSAgICAgIGNfcGFyc2VyX2NvbnN1bWVfdG9rZW4g KHBhcnNlcik7CisJICAgIH0KKwl9CiAgICAgICBsaXN0ID0gY19wYXJzZXJfb21wX3Zhcmlh YmxlX2xpc3QgKHBhcnNlciwgbG9jLCBraW5kLCBsaXN0LCBhbGxvd19kZXJlZik7CisKKyAg ICAgIGlmIChwcmVzZW50KQorCWZvciAodHJlZSBjbGF1c2UgPSBsaXN0OyBjbGF1c2U7IGNs YXVzZSA9IE9NUF9DTEFVU0VfQ0hBSU4gKGNsYXVzZSkpCisJICBPTVBfQ0xBVVNFX1NFVF9N T1RJT05fTU9ESUZJRVIgKGNsYXVzZSwgT01QX0NMQVVTRV9NT1RJT05fUFJFU0VOVCk7CiAg ICAgICBwYXJlbnMuc2tpcF91bnRpbF9mb3VuZF9jbG9zZSAocGFyc2VyKTsKICAgICB9CiAg IHJldHVybiBsaXN0OwpAQCAtMTQ5NDQsNiArMTQ5NjYsMTMgQEAgY19wYXJzZXJfb21wX2Ns YXVzZV9kZWZhdWx0bWFwIChjX3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAJZ290byBp bnZhbGlkX2JlaGF2aW9yOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlICdwJzoKKyAgICAg IGlmIChzdHJjbXAgKCJwcmVzZW50IiwgcCkgPT0gMCkKKwliZWhhdmlvciA9IE9NUF9DTEFV U0VfREVGQVVMVE1BUF9QUkVTRU5UOworICAgICAgZWxzZQorCWdvdG8gaW52YWxpZF9iZWhh dmlvcjsKKyAgICAgIGJyZWFrOworCiAgICAgY2FzZSAndCc6CiAgICAgICBpZiAoc3RyY21w ICgidG9mcm9tIiwgcCkgPT0gMCkKIAliZWhhdmlvciA9IE9NUF9DTEFVU0VfREVGQVVMVE1B UF9UT0ZST007CkBAIC0xNzExNCw2ICsxNzE0Myw3IEBAIGNfcGFyc2VyX29tcF9jbGF1c2Vf bWFwIChjX3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAKICAgaW50IGFsd2F5c19tb2Rp ZmllciA9IDA7CiAgIGludCBjbG9zZV9tb2RpZmllciA9IDA7CisgIGludCBwcmVzZW50X21v ZGlmaWVyID0gMDsKICAgZm9yIChpbnQgcG9zID0gMTsgcG9zIDwgbWFwX2tpbmRfcG9zOyAr K3BvcykKICAgICB7CiAgICAgICBjX3Rva2VuICp0b2sgPSBjX3BhcnNlcl9wZWVrX3Rva2Vu IChwYXJzZXIpOwpAQCAtMTcxNDUsMTEgKzE3MTc1LDIxIEBAIGNfcGFyc2VyX29tcF9jbGF1 c2VfbWFwIChjX3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAJICAgIH0KIAkgIGNsb3Nl X21vZGlmaWVyKys7CiAJfQorICAgICAgZWxzZSBpZiAoc3RyY21wICgicHJlc2VudCIsIHAp ID09IDApCisJeworCSAgaWYgKHByZXNlbnRfbW9kaWZpZXIpCisJICAgIHsKKwkgICAgICBj X3BhcnNlcl9lcnJvciAocGFyc2VyLCAidG9vIG1hbnkgJTxwcmVzZW50JT4gbW9kaWZpZXJz Iik7CisJICAgICAgcGFyZW5zLnNraXBfdW50aWxfZm91bmRfY2xvc2UgKHBhcnNlcik7CisJ ICAgICAgcmV0dXJuIGxpc3Q7CisJICAgIH0KKwkgIHByZXNlbnRfbW9kaWZpZXIrKzsKKwl9 CiAgICAgICBlbHNlCiAJewogCSAgY19wYXJzZXJfZXJyb3IgKHBhcnNlciwgIiU8I3ByYWdt YSBvbXAgdGFyZ2V0JT4gd2l0aCAiCi0JCQkJICAibW9kaWZpZXIgb3RoZXIgdGhhbiAlPGFs d2F5cyU+IG9yICIKLQkJCQkgICIlPGNsb3NlJT4gb24gJTxtYXAlPiBjbGF1c2UiKTsKKwkJ CQkgICJtb2RpZmllciBvdGhlciB0aGFuICU8YWx3YXlzJT4sICU8Y2xvc2UlPiAiCisJCQkJ ICAib3IgJTxwcmVzZW50JT4gb24gJTxtYXAlPiBjbGF1c2UiKTsKIAkgIHBhcmVucy5za2lw X3VudGlsX2ZvdW5kX2Nsb3NlIChwYXJzZXIpOwogCSAgcmV0dXJuIGxpc3Q7CiAJfQpAQCAt MTcxNjEsMTQgKzE3MjAxLDI1IEBAIGNfcGFyc2VyX29tcF9jbGF1c2VfbWFwIChjX3BhcnNl ciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAgICAgICAmJiBjX3BhcnNlcl9wZWVrXzJuZF90b2tl biAocGFyc2VyKS0+dHlwZSA9PSBDUFBfQ09MT04pCiAgICAgewogICAgICAgY29uc3QgY2hh ciAqcCA9IElERU5USUZJRVJfUE9JTlRFUiAoY19wYXJzZXJfcGVla190b2tlbiAocGFyc2Vy KS0+dmFsdWUpOworICAgICAgaW50IGFsd2F5c19wcmVzZW50X21vZGlmaWVyID0gYWx3YXlz X21vZGlmaWVyICYmIHByZXNlbnRfbW9kaWZpZXI7CisKICAgICAgIGlmIChzdHJjbXAgKCJh bGxvYyIsIHApID09IDApCi0Ja2luZCA9IEdPTVBfTUFQX0FMTE9DOworCWtpbmQgPSBwcmVz ZW50X21vZGlmaWVyID8gR09NUF9NQVBfUFJFU0VOVF9BTExPQyA6IEdPTVBfTUFQX0FMTE9D OwogICAgICAgZWxzZSBpZiAoc3RyY21wICgidG8iLCBwKSA9PSAwKQotCWtpbmQgPSBhbHdh eXNfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdBWVNfVE8gOiBHT01QX01BUF9UTzsKKwlraW5k ID0gYWx3YXlzX3ByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9U TworCSAgICAgICA6IHByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9QUkVTRU5UX1RPCisJ ICAgICAgIDogYWx3YXlzX21vZGlmaWVyID8gR09NUF9NQVBfQUxXQVlTX1RPCisJICAgICAg IDogR09NUF9NQVBfVE87CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKCJmcm9tIiwgcCkgPT0g MCkKLQlraW5kID0gYWx3YXlzX21vZGlmaWVyID8gR09NUF9NQVBfQUxXQVlTX0ZST00gOiBH T01QX01BUF9GUk9NOworCWtpbmQgPSBhbHdheXNfcHJlc2VudF9tb2RpZmllciA/IEdPTVBf TUFQX0FMV0FZU19QUkVTRU5UX0ZST00KKwkgICAgICAgOiBwcmVzZW50X21vZGlmaWVyID8g R09NUF9NQVBfUFJFU0VOVF9GUk9NCisJICAgICAgIDogYWx3YXlzX21vZGlmaWVyID8gR09N UF9NQVBfQUxXQVlTX0ZST00KKwkgICAgICAgOiBHT01QX01BUF9GUk9NOwogICAgICAgZWxz ZSBpZiAoc3RyY21wICgidG9mcm9tIiwgcCkgPT0gMCkKLQlraW5kID0gYWx3YXlzX21vZGlm aWVyID8gR09NUF9NQVBfQUxXQVlTX1RPRlJPTSA6IEdPTVBfTUFQX1RPRlJPTTsKKwlraW5k ID0gYWx3YXlzX3ByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9U T0ZST00KKwkgICAgICAgOiBwcmVzZW50X21vZGlmaWVyID8gR09NUF9NQVBfUFJFU0VOVF9U T0ZST00KKwkgICAgICAgOiBhbHdheXNfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdBWVNfVE9G Uk9NCisJICAgICAgIDogR09NUF9NQVBfVE9GUk9NOwogICAgICAgZWxzZSBpZiAoc3RyY21w ICgicmVsZWFzZSIsIHApID09IDApCiAJa2luZCA9IEdPTVBfTUFQX1JFTEVBU0U7CiAgICAg ICBlbHNlIGlmIChzdHJjbXAgKCJkZWxldGUiLCBwKSA9PSAwKQpAQCAtMTc0MjksNyArMTc0 ODAsOCBAQCBjX3BhcnNlcl9vbXBfY2xhdXNlX2RldmljZV90eXBlIChjX3BhcnNlciAqcGFy c2VyLCB0cmVlIGxpc3QpCiBzdGF0aWMgdHJlZQogY19wYXJzZXJfb21wX2NsYXVzZV90byAo Y19wYXJzZXIgKnBhcnNlciwgdHJlZSBsaXN0KQogewotICByZXR1cm4gY19wYXJzZXJfb21w X3Zhcl9saXN0X3BhcmVucyAocGFyc2VyLCBPTVBfQ0xBVVNFX1RPLCBsaXN0LCB0cnVlKTsK KyAgcmV0dXJuIGNfcGFyc2VyX29tcF92YXJfbGlzdF9wYXJlbnMgKHBhcnNlciwgT01QX0NM QVVTRV9UTywgbGlzdCwgdHJ1ZSwKKwkJCQkgICAgICAgdHJ1ZSk7CiB9CiAKIC8qIE9wZW5N UCA0LjA6CkBAIC0xNzQzOCw3ICsxNzQ5MCw4IEBAIGNfcGFyc2VyX29tcF9jbGF1c2VfdG8g KGNfcGFyc2VyICpwYXJzZXIsIHRyZWUgbGlzdCkKIHN0YXRpYyB0cmVlCiBjX3BhcnNlcl9v bXBfY2xhdXNlX2Zyb20gKGNfcGFyc2VyICpwYXJzZXIsIHRyZWUgbGlzdCkKIHsKLSAgcmV0 dXJuIGNfcGFyc2VyX29tcF92YXJfbGlzdF9wYXJlbnMgKHBhcnNlciwgT01QX0NMQVVTRV9G Uk9NLCBsaXN0LCB0cnVlKTsKKyAgcmV0dXJuIGNfcGFyc2VyX29tcF92YXJfbGlzdF9wYXJl bnMgKHBhcnNlciwgT01QX0NMQVVTRV9GUk9NLCBsaXN0LCB0cnVlLAorCQkJCSAgICAgICB0 cnVlKTsKIH0KIAogLyogT3Blbk1QIDQuMDoKQEAgLTIxNzEzLDExICsyMTc2NiwxOCBAQCBj X3BhcnNlcl9vbXBfdGFyZ2V0X2RhdGEgKGxvY2F0aW9uX3QgbG9jLCBjX3BhcnNlciAqcGFy c2VyLCBib29sICppZl9wKQogCSAgewogCSAgY2FzZSBHT01QX01BUF9UTzoKIAkgIGNhc2Ug R09NUF9NQVBfQUxXQVlTX1RPOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPOgorCSAg Y2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKIAkgIGNhc2UgR09NUF9NQVBfRlJP TToKIAkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX0ZST006CisJICBjYXNlIEdPTVBfTUFQX1BS RVNFTlRfRlJPTToKKwkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKIAkg IGNhc2UgR09NUF9NQVBfVE9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfVE9GUk9N OgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJPTToKKwkgIGNhc2UgR09NUF9NQVBf QUxXQVlTX1BSRVNFTlRfVE9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTExPQzoKKwkgIGNh c2UgR09NUF9NQVBfUFJFU0VOVF9BTExPQzoKIAkgICAgbWFwX3NlZW4gPSAzOwogCSAgICBi cmVhazsKIAkgIGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1BPSU5URVI6CkBAIC0yMTg2 Myw3ICsyMTkyMywxMCBAQCBjX3BhcnNlcl9vbXBfdGFyZ2V0X2VudGVyX2RhdGEgKGxvY2F0 aW9uX3QgbG9jLCBjX3BhcnNlciAqcGFyc2VyLAogCSAgewogCSAgY2FzZSBHT01QX01BUF9U TzoKIAkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1RPOgorCSAgY2FzZSBHT01QX01BUF9QUkVT RU5UX1RPOgorCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKIAkgIGNhc2Ug R09NUF9NQVBfQUxMT0M6CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfQUxMT0M6CiAJICAg IG1hcF9zZWVuID0gMzsKIAkgICAgYnJlYWs7CiAJICBjYXNlIEdPTVBfTUFQX1RPRlJPTToK QEAgLTIxODc0LDYgKzIxOTM3LDE0IEBAIGNfcGFyc2VyX29tcF90YXJnZXRfZW50ZXJfZGF0 YSAobG9jYXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsCiAJICAgIE9NUF9DTEFVU0Vf U0VUX01BUF9LSU5EICgqcGMsIEdPTVBfTUFQX0FMV0FZU19UTyk7CiAJICAgIG1hcF9zZWVu ID0gMzsKIAkgICAgYnJlYWs7CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfVE9GUk9NOgor CSAgICBPTVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAoKnBjLCBHT01QX01BUF9QUkVTRU5UX1RP KTsKKwkgICAgbWFwX3NlZW4gPSAzOworCSAgICBicmVhazsKKwkgIGNhc2UgR09NUF9NQVBf QUxXQVlTX1BSRVNFTlRfVE9GUk9NOgorCSAgICBPTVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAo KnBjLCBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTyk7CisJICAgIG1hcF9zZWVuID0gMzsK KwkgICAgYnJlYWs7CiAJICBjYXNlIEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9QT0lOVEVSOgog CSAgY2FzZSBHT01QX01BUF9BTFdBWVNfUE9JTlRFUjoKIAkgIGNhc2UgR09NUF9NQVBfQVRU QUNIX0RFVEFDSDoKQEAgLTIxOTYxLDYgKzIyMDMyLDggQEAgY19wYXJzZXJfb21wX3Rhcmdl dF9leGl0X2RhdGEgKGxvY2F0aW9uX3QgbG9jLCBjX3BhcnNlciAqcGFyc2VyLAogCSAgewog CSAgY2FzZSBHT01QX01BUF9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfRlJPTToK KwkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAgY2FzZSBHT01QX01BUF9BTFdB WVNfUFJFU0VOVF9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9SRUxFQVNFOgogCSAgY2FzZSBH T01QX01BUF9ERUxFVEU6CiAJICAgIG1hcF9zZWVuID0gMzsKQEAgLTIxOTczLDYgKzIyMDQ2 LDE0IEBAIGNfcGFyc2VyX29tcF90YXJnZXRfZXhpdF9kYXRhIChsb2NhdGlvbl90IGxvYywg Y19wYXJzZXIgKnBhcnNlciwKIAkgICAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQgKCpwYywg R09NUF9NQVBfQUxXQVlTX0ZST00pOwogCSAgICBtYXBfc2VlbiA9IDM7CiAJICAgIGJyZWFr OworCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJPTToKKwkgICAgT01QX0NMQVVTRV9T RVRfTUFQX0tJTkQgKCpwYywgR09NUF9NQVBfUFJFU0VOVF9GUk9NKTsKKwkgICAgbWFwX3Nl ZW4gPSAzOworCSAgICBicmVhazsKKwkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRf VE9GUk9NOgorCSAgICBPTVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAoKnBjLCBHT01QX01BUF9B TFdBWVNfUFJFU0VOVF9GUk9NKTsKKwkgICAgbWFwX3NlZW4gPSAzOworCSAgICBicmVhazsK IAkgIGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1BPSU5URVI6CiAJICBjYXNlIEdPTVBf TUFQX0FMV0FZU19QT0lOVEVSOgogCSAgY2FzZSBHT01QX01BUF9BVFRBQ0hfREVUQUNIOgpA QCAtMjIyMTgsMTEgKzIyMjk5LDE4IEBAIGNoZWNrX2NsYXVzZXM6CiAJICB7CiAJICBjYXNl IEdPTVBfTUFQX1RPOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfVE86CisJICBjYXNlIEdP TVBfTUFQX1BSRVNFTlRfVE86CisJICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RP OgogCSAgY2FzZSBHT01QX01BUF9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfRlJP TToKKwkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAgY2FzZSBHT01QX01BUF9B TFdBWVNfUFJFU0VOVF9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9UT0ZST006CiAJICBjYXNl IEdPTVBfTUFQX0FMV0FZU19UT0ZST006CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfVE9G Uk9NOgorCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UT0ZST006CiAJICBjYXNl IEdPTVBfTUFQX0FMTE9DOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX0FMTE9DOgogCSAg Y2FzZSBHT01QX01BUF9GSVJTVFBSSVZBVEVfUE9JTlRFUjoKIAkgIGNhc2UgR09NUF9NQVBf QUxXQVlTX1BPSU5URVI6CiAJICBjYXNlIEdPTVBfTUFQX0FUVEFDSF9ERVRBQ0g6CmRpZmYg LS1naXQgYS9nY2MvY3AvcGFyc2VyLmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCBiMzhj MjJlOWEzZC4uZjNiMzI5NzQzYTAgMTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysr IGIvZ2NjL2NwL3BhcnNlci5jYwpAQCAtMzc2MDIsMTEgKzM3NjAyLDMzIEBAIGNwX3BhcnNl cl9vbXBfdmFyX2xpc3Rfbm9fb3BlbiAoY3BfcGFyc2VyICpwYXJzZXIsIGVudW0gb21wX2Ns YXVzZV9jb2RlIGtpbmQsCiAKIHN0YXRpYyB0cmVlCiBjcF9wYXJzZXJfb21wX3Zhcl9saXN0 IChjcF9wYXJzZXIgKnBhcnNlciwgZW51bSBvbXBfY2xhdXNlX2NvZGUga2luZCwgdHJlZSBs aXN0LAotCQkJYm9vbCBhbGxvd19kZXJlZiA9IGZhbHNlKQorCQkJYm9vbCBhbGxvd19kZXJl ZiA9IGZhbHNlLCBib29sIGFsbG93X3ByZXNlbnQgPSBmYWxzZSkKIHsKICAgaWYgKGNwX3Bh cnNlcl9yZXF1aXJlIChwYXJzZXIsIENQUF9PUEVOX1BBUkVOLCBSVF9PUEVOX1BBUkVOKSkK LSAgICByZXR1cm4gY3BfcGFyc2VyX29tcF92YXJfbGlzdF9ub19vcGVuIChwYXJzZXIsIGtp bmQsIGxpc3QsIE5VTEwsCi0JCQkJCSAgIGFsbG93X2RlcmVmKTsKKyAgICB7CisgICAgICBi b29sIHByZXNlbnQgPSBmYWxzZTsKKworICAgICAgaWYgKGFsbG93X3ByZXNlbnQpCisJewor CSAgIGNwX3Rva2VuICp0b2tlbiA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4 ZXIpOworCisJICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FCisJICAgICAgICYmIHN0 cmNtcCAoSURFTlRJRklFUl9QT0lOVEVSICh0b2tlbi0+dS52YWx1ZSksICJwcmVzZW50Iikg PT0gMAorCSAgICAgICAmJiBjcF9sZXhlcl9udGhfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIs IDIsIENQUF9DT0xPTikpCisJICAgIHsKKwkgICAgICBwcmVzZW50ID0gdHJ1ZTsKKwkgICAg ICBjcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkgICAgICBjcF9s ZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkgICAgfQorCX0KKworICAg ICAgbGlzdCA9IGNwX3BhcnNlcl9vbXBfdmFyX2xpc3Rfbm9fb3BlbiAocGFyc2VyLCBraW5k LCBsaXN0LCBOVUxMLAorCQkJCQkgICAgIGFsbG93X2RlcmVmKTsKKworICAgICAgaWYgKHBy ZXNlbnQpCisJZm9yICh0cmVlIGNsYXVzZSA9IGxpc3Q7IGNsYXVzZTsgY2xhdXNlID0gT01Q X0NMQVVTRV9DSEFJTiAoY2xhdXNlKSkKKwkgIE9NUF9DTEFVU0VfU0VUX01PVElPTl9NT0RJ RklFUiAoY2xhdXNlLCBPTVBfQ0xBVVNFX01PVElPTl9QUkVTRU5UKTsKKyAgICB9CiAgIHJl dHVybiBsaXN0OwogfQogCkBAIC0zODY1OCw2ICszODY4MCwxMyBAQCBjcF9wYXJzZXJfb21w X2NsYXVzZV9kZWZhdWx0bWFwIChjcF9wYXJzZXIgKnBhcnNlciwgdHJlZSBsaXN0LAogCWdv dG8gaW52YWxpZF9iZWhhdmlvcjsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSAncCc6Cisg ICAgICBpZiAoc3RyY21wICgicHJlc2VudCIsIHApID09IDApCisJYmVoYXZpb3IgPSBPTVBf Q0xBVVNFX0RFRkFVTFRNQVBfUFJFU0VOVDsKKyAgICAgIGVsc2UKKwlnb3RvIGludmFsaWRf YmVoYXZpb3I7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgJ3QnOgogICAgICAgaWYgKHN0 cmNtcCAoInRvZnJvbSIsIHApID09IDApCiAJYmVoYXZpb3IgPSBPTVBfQ0xBVVNFX0RFRkFV TFRNQVBfVE9GUk9NOwpAQCAtNDA0MTEsNiArNDA0NDAsNyBAQCBjcF9wYXJzZXJfb21wX2Ns YXVzZV9tYXAgKGNwX3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAKICAgYm9vbCBhbHdh eXNfbW9kaWZpZXIgPSBmYWxzZTsKICAgYm9vbCBjbG9zZV9tb2RpZmllciA9IGZhbHNlOwor ICBib29sIHByZXNlbnRfbW9kaWZpZXIgPSBmYWxzZTsKICAgZm9yIChpbnQgcG9zID0gMTsg cG9zIDwgbWFwX2tpbmRfcG9zOyArK3BvcykKICAgICB7CiAgICAgICBjcF90b2tlbiAqdG9r ID0gY3BfbGV4ZXJfcGVla190b2tlbiAocGFyc2VyLT5sZXhlcik7CkBAIC00MDQ0NywxMSAr NDA0NzcsMjQgQEAgY3BfcGFyc2VyX29tcF9jbGF1c2VfbWFwIChjcF9wYXJzZXIgKnBhcnNl ciwgdHJlZSBsaXN0KQogCSAgICB9CiAJICBjbG9zZV9tb2RpZmllciA9IHRydWU7CiAJfQor ICAgICAgZWxzZSBpZiAoc3RyY21wICgicHJlc2VudCIsIHApID09IDApCisJeworCSAgaWYg KHByZXNlbnRfbW9kaWZpZXIpCisJICAgIHsKKwkgICAgICBjcF9wYXJzZXJfZXJyb3IgKHBh cnNlciwgInRvbyBtYW55ICU8cHJlc2VudCU+IG1vZGlmaWVycyIpOworCSAgICAgIGNwX3Bh cnNlcl9za2lwX3RvX2Nsb3NpbmdfcGFyZW50aGVzaXMgKHBhcnNlciwKKwkJCQkJCSAgICAg LypyZWNvdmVyaW5nPSovdHJ1ZSwKKwkJCQkJCSAgICAgLypvcl9jb21tYT0qL2ZhbHNlLAor CQkJCQkJICAgICAvKmNvbnN1bWVfcGFyZW49Ki90cnVlKTsKKwkgICAgICByZXR1cm4gbGlz dDsKKwkgICAgfQorCSAgcHJlc2VudF9tb2RpZmllciA9IHRydWU7CisgICAgICAgfQogICAg ICAgZWxzZQogCXsKIAkgIGNwX3BhcnNlcl9lcnJvciAocGFyc2VyLCAiJTwjcHJhZ21hIG9t cCB0YXJnZXQlPiB3aXRoICIKLQkJCQkgICAibW9kaWZpZXIgb3RoZXIgdGhhbiAlPGFsd2F5 cyU+IG9yICIKLQkJCQkgICAiJTxjbG9zZSU+IG9uICU8bWFwJT4gY2xhdXNlIik7CisJCQkJ ICAgIm1vZGlmaWVyIG90aGVyIHRoYW4gJTxhbHdheXMlPiwgJTxjbG9zZSU+ICIKKwkJCQkg ICAib3IgJTxwcmVzZW50JT4gb24gJTxtYXAlPiBjbGF1c2UiKTsKIAkgIGNwX3BhcnNlcl9z a2lwX3RvX2Nsb3NpbmdfcGFyZW50aGVzaXMgKHBhcnNlciwKIAkJCQkJCSAvKnJlY292ZXJp bmc9Ki90cnVlLAogCQkJCQkJIC8qb3JfY29tbWE9Ki9mYWxzZSwKQEAgLTQwNDY3LDE1ICs0 MDUxMCwyNSBAQCBjcF9wYXJzZXJfb21wX2NsYXVzZV9tYXAgKGNwX3BhcnNlciAqcGFyc2Vy LCB0cmVlIGxpc3QpCiAgICAgewogICAgICAgdHJlZSBpZCA9IGNwX2xleGVyX3BlZWtfdG9r ZW4gKHBhcnNlci0+bGV4ZXIpLT51LnZhbHVlOwogICAgICAgY29uc3QgY2hhciAqcCA9IElE RU5USUZJRVJfUE9JTlRFUiAoaWQpOworICAgICAgaW50IGFsd2F5c19wcmVzZW50X21vZGlm aWVyID0gYWx3YXlzX21vZGlmaWVyICYmIHByZXNlbnRfbW9kaWZpZXI7CiAKICAgICAgIGlm IChzdHJjbXAgKCJhbGxvYyIsIHApID09IDApCi0Ja2luZCA9IEdPTVBfTUFQX0FMTE9DOwor CWtpbmQgPSBwcmVzZW50X21vZGlmaWVyID8gR09NUF9NQVBfUFJFU0VOVF9BTExPQyA6IEdP TVBfTUFQX0FMTE9DOwogICAgICAgZWxzZSBpZiAoc3RyY21wICgidG8iLCBwKSA9PSAwKQot CWtpbmQgPSBhbHdheXNfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdBWVNfVE8gOiBHT01QX01B UF9UTzsKKwlraW5kID0gYWx3YXlzX3ByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdB WVNfUFJFU0VOVF9UTworCSAgICAgICA6IHByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9Q UkVTRU5UX1RPCisJICAgICAgIDogYWx3YXlzX21vZGlmaWVyID8gR09NUF9NQVBfQUxXQVlT X1RPCisJICAgICAgIDogR09NUF9NQVBfVE87CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKCJm cm9tIiwgcCkgPT0gMCkKLQlraW5kID0gYWx3YXlzX21vZGlmaWVyID8gR09NUF9NQVBfQUxX QVlTX0ZST00gOiBHT01QX01BUF9GUk9NOworCWtpbmQgPSBhbHdheXNfcHJlc2VudF9tb2Rp ZmllciA/IEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX0ZST00KKwkgICAgICAgOiBwcmVzZW50 X21vZGlmaWVyID8gR09NUF9NQVBfUFJFU0VOVF9GUk9NCisJICAgICAgIDogYWx3YXlzX21v ZGlmaWVyID8gR09NUF9NQVBfQUxXQVlTX0ZST00KKwkgICAgICAgOiBHT01QX01BUF9GUk9N OwogICAgICAgZWxzZSBpZiAoc3RyY21wICgidG9mcm9tIiwgcCkgPT0gMCkKLQlraW5kID0g YWx3YXlzX21vZGlmaWVyID8gR09NUF9NQVBfQUxXQVlTX1RPRlJPTSA6IEdPTVBfTUFQX1RP RlJPTTsKKwlraW5kID0gYWx3YXlzX3ByZXNlbnRfbW9kaWZpZXIgPyBHT01QX01BUF9BTFdB WVNfUFJFU0VOVF9UT0ZST00KKwkgICAgICAgOiBwcmVzZW50X21vZGlmaWVyID8gR09NUF9N QVBfUFJFU0VOVF9UT0ZST00KKwkgICAgICAgOiBhbHdheXNfbW9kaWZpZXIgPyBHT01QX01B UF9BTFdBWVNfVE9GUk9NCisJICAgICAgIDogR09NUF9NQVBfVE9GUk9NOwogICAgICAgZWxz ZSBpZiAoc3RyY21wICgicmVsZWFzZSIsIHApID09IDApCiAJa2luZCA9IEdPTVBfTUFQX1JF TEVBU0U7CiAgICAgICBlbHNlCkBAIC00MTI1MywxMiArNDEzMDYsMTIgQEAgY3BfcGFyc2Vy X29tcF9hbGxfY2xhdXNlcyAoY3BfcGFyc2VyICpwYXJzZXIsIG9tcF9jbGF1c2VfbWFzayBt YXNrLAogCSAgICB9CiAJICBlbHNlCiAJICAgIGNsYXVzZXMgPSBjcF9wYXJzZXJfb21wX3Zh cl9saXN0IChwYXJzZXIsIE9NUF9DTEFVU0VfVE8sIGNsYXVzZXMsCi0JCQkJCSAgICAgIHRy dWUpOworCQkJCQkgICAgICB0cnVlLCB0cnVlKTsKIAkgIGNfbmFtZSA9ICJ0byI7CiAJICBi cmVhazsKIAljYXNlIFBSQUdNQV9PTVBfQ0xBVVNFX0ZST006CiAJICBjbGF1c2VzID0gY3Bf cGFyc2VyX29tcF92YXJfbGlzdCAocGFyc2VyLCBPTVBfQ0xBVVNFX0ZST00sIGNsYXVzZXMs Ci0JCQkJCSAgICB0cnVlKTsKKwkJCQkJICAgIHRydWUsIHRydWUpOwogCSAgY19uYW1lID0g ImZyb20iOwogCSAgYnJlYWs7CiAJY2FzZSBQUkFHTUFfT01QX0NMQVVTRV9VTklGT1JNOgpA QCAtNDQ5OTksMTEgKzQ1MDUyLDE4IEBAIGNwX3BhcnNlcl9vbXBfdGFyZ2V0X2RhdGEgKGNw X3BhcnNlciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaywgYm9vbCAqaWZfcCkKIAkg IHsKIAkgIGNhc2UgR09NUF9NQVBfVE86CiAJICBjYXNlIEdPTVBfTUFQX0FMV0FZU19UTzoK KwkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9UTzoKKwkgIGNhc2UgR09NUF9NQVBfQUxXQVlT X1BSRVNFTlRfVE86CiAJICBjYXNlIEdPTVBfTUFQX0ZST006CiAJICBjYXNlIEdPTVBfTUFQ X0FMV0FZU19GUk9NOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX0ZST006CisJICBjYXNl IEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX0ZST006CiAJICBjYXNlIEdPTVBfTUFQX1RPRlJP TToKIAkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1RPRlJPTToKKwkgIGNhc2UgR09NUF9NQVBf UFJFU0VOVF9UT0ZST006CisJICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJP TToKIAkgIGNhc2UgR09NUF9NQVBfQUxMT0M6CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRf QUxMT0M6CiAJICAgIG1hcF9zZWVuID0gMzsKIAkgICAgYnJlYWs7CiAJICBjYXNlIEdPTVBf TUFQX0ZJUlNUUFJJVkFURV9QT0lOVEVSOgpAQCAtNDUxMDYsNyArNDUxNjYsMTAgQEAgY3Bf cGFyc2VyX29tcF90YXJnZXRfZW50ZXJfZGF0YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rv a2VuICpwcmFnbWFfdG9rLAogCSAgewogCSAgY2FzZSBHT01QX01BUF9UTzoKIAkgIGNhc2Ug R09NUF9NQVBfQUxXQVlTX1RPOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPOgorCSAg Y2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKIAkgIGNhc2UgR09NUF9NQVBfQUxM T0M6CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfQUxMT0M6CiAJICAgIG1hcF9zZWVuID0g MzsKIAkgICAgYnJlYWs7CiAJICBjYXNlIEdPTVBfTUFQX1RPRlJPTToKQEAgLTQ1MTE3LDYg KzQ1MTgwLDE0IEBAIGNwX3BhcnNlcl9vbXBfdGFyZ2V0X2VudGVyX2RhdGEgKGNwX3BhcnNl ciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaywKIAkgICAgT01QX0NMQVVTRV9TRVRf TUFQX0tJTkQgKCpwYywgR09NUF9NQVBfQUxXQVlTX1RPKTsKIAkgICAgbWFwX3NlZW4gPSAz OwogCSAgICBicmVhazsKKwkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9UT0ZST006CisJICAg IE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EICgqcGMsIEdPTVBfTUFQX1BSRVNFTlRfVE8pOwor CSAgICBtYXBfc2VlbiA9IDM7CisJICAgIGJyZWFrOworCSAgY2FzZSBHT01QX01BUF9BTFdB WVNfUFJFU0VOVF9UT0ZST006CisJICAgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EICgqcGMs IEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPKTsKKwkgICAgbWFwX3NlZW4gPSAzOworCSAg ICBicmVhazsKIAkgIGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1BPSU5URVI6CiAJICBj YXNlIEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9SRUZFUkVOQ0U6CiAJICBjYXNlIEdPTVBfTUFQ X0FMV0FZU19QT0lOVEVSOgpAQCAtNDUyMDksNiArNDUyODAsOCBAQCBjcF9wYXJzZXJfb21w X3RhcmdldF9leGl0X2RhdGEgKGNwX3BhcnNlciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21h X3RvaywKIAkgIHsKIAkgIGNhc2UgR09NUF9NQVBfRlJPTToKIAkgIGNhc2UgR09NUF9NQVBf QUxXQVlTX0ZST006CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfRlJPTToKKwkgIGNhc2Ug R09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKIAkgIGNhc2UgR09NUF9NQVBfUkVMRUFT RToKIAkgIGNhc2UgR09NUF9NQVBfREVMRVRFOgogCSAgICBtYXBfc2VlbiA9IDM7CkBAIC00 NTIyMSw2ICs0NTI5NCwxNCBAQCBjcF9wYXJzZXJfb21wX3RhcmdldF9leGl0X2RhdGEgKGNw X3BhcnNlciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaywKIAkgICAgT01QX0NMQVVT RV9TRVRfTUFQX0tJTkQgKCpwYywgR09NUF9NQVBfQUxXQVlTX0ZST00pOwogCSAgICBtYXBf c2VlbiA9IDM7CiAJICAgIGJyZWFrOworCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJP TToKKwkgICAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQgKCpwYywgR09NUF9NQVBfUFJFU0VO VF9GUk9NKTsKKwkgICAgbWFwX3NlZW4gPSAzOworCSAgICBicmVhazsKKwkgIGNhc2UgR09N UF9NQVBfQUxXQVlTX1BSRVNFTlRfVE9GUk9NOgorCSAgICBPTVBfQ0xBVVNFX1NFVF9NQVBf S0lORCAoKnBjLCBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9GUk9NKTsKKwkgICAgbWFwX3Nl ZW4gPSAzOworCSAgICBicmVhazsKIAkgIGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1BP SU5URVI6CiAJICBjYXNlIEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9SRUZFUkVOQ0U6CiAJICBj YXNlIEdPTVBfTUFQX0FMV0FZU19QT0lOVEVSOgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlbWFu dGljcy5jYyBiL2djYy9jcC9zZW1hbnRpY3MuY2MKaW5kZXggMTY1NmQwMmQ2ZDEuLmU2OTQy NzVjZTUyIDEwMDY0NAotLS0gYS9nY2MvY3Avc2VtYW50aWNzLmNjCisrKyBiL2djYy9jcC9z ZW1hbnRpY3MuY2MKQEAgLTk5ODgsMTEgKzk5ODgsMTggQEAgZmluaXNoX29tcF90YXJnZXQg KGxvY2F0aW9uX3QgbG9jLCB0cmVlIGNsYXVzZXMsIHRyZWUgYm9keSwgYm9vbCBjb21iaW5l ZF9wKQogCSAgewogCSAgY2FzZSBHT01QX01BUF9UTzoKIAkgIGNhc2UgR09NUF9NQVBfQUxX QVlTX1RPOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPOgorCSAgY2FzZSBHT01QX01B UF9BTFdBWVNfUFJFU0VOVF9UTzoKIAkgIGNhc2UgR09NUF9NQVBfRlJPTToKIAkgIGNhc2Ug R09NUF9NQVBfQUxXQVlTX0ZST006CisJICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfRlJPTToK KwkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKIAkgIGNhc2UgR09NUF9N QVBfVE9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfVE9GUk9NOgorCSAgY2FzZSBH T01QX01BUF9QUkVTRU5UX1RPRlJPTToKKwkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNF TlRfVE9GUk9NOgogCSAgY2FzZSBHT01QX01BUF9BTExPQzoKKwkgIGNhc2UgR09NUF9NQVBf UFJFU0VOVF9BTExPQzoKIAkgIGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1BPSU5URVI6 CiAJICBjYXNlIEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9SRUZFUkVOQ0U6CiAJICBjYXNlIEdP TVBfTUFQX0FMV0FZU19QT0lOVEVSOgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRy YW4uaCBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKaW5kZXggOTg4NGE1NTg4MmIuLmYyZjI5 OTc4NzZhIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9m b3J0cmFuL2dmb3J0cmFuLmgKQEAgLTEzMDMsNyArMTMwMywxNCBAQCBlbnVtIGdmY19vbXBf bWFwX29wCiAgIE9NUF9NQVBfUkVMRUFTRSwKICAgT01QX01BUF9BTFdBWVNfVE8sCiAgIE9N UF9NQVBfQUxXQVlTX0ZST00sCi0gIE9NUF9NQVBfQUxXQVlTX1RPRlJPTQorICBPTVBfTUFQ X0FMV0FZU19UT0ZST00sCisgIE9NUF9NQVBfUFJFU0VOVF9BTExPQywKKyAgT01QX01BUF9Q UkVTRU5UX1RPLAorICBPTVBfTUFQX1BSRVNFTlRfRlJPTSwKKyAgT01QX01BUF9QUkVTRU5U X1RPRlJPTSwKKyAgT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTywKKyAgT01QX01BUF9BTFdB WVNfUFJFU0VOVF9GUk9NLAorICBPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJPTQogfTsK IAogZW51bSBnZmNfb21wX2RlZmF1bHRtYXAKQEAgLTEzMzcsNiArMTM0NCwxMiBAQCBlbnVt IGdmY19vbXBfbGluZWFyX29wCiAgIE9NUF9MSU5FQVJfVVZBTAogfTsKIAorZW51bSBnZmNf b21wX21vdGlvbl9tb2RpZmllcgoreworICBPTVBfTU9USU9OX05PTkUsCisgIE9NUF9NT1RJ T05fUFJFU0VOVAorfTsKKwogLyogRm9yIHVzZSBpbiBPcGVuTVAgY2xhdXNlcyBpbiBjYXNl IHdlIG5lZWQgZXh0cmEgaW5mb3JtYXRpb24KICAgIChhbGlnbmVkIGNsYXVzZSBhbGlnbm1l bnQsIGxpbmVhciBjbGF1c2Ugc3RlcCwgZXRjLikuICAqLwogCkBAIC0xMzU1LDYgKzEzNjgs NyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX25hbWVsaXN0CiAJICBFTlVNX0JJVEZJRUxE IChnZmNfb21wX2xpbmVhcl9vcCkgb3A6NDsKIAkgIGJvb2wgb2xkX21vZGlmaWVyOwogCX0g bGluZWFyOworICAgICAgZ2ZjX29tcF9tb3Rpb25fbW9kaWZpZXIgbW90aW9uX21vZGlmaWVy OwogICAgICAgc3RydWN0IGdmY19jb21tb25faGVhZCAqY29tbW9uOwogICAgICAgYm9vbCBs YXN0cHJpdmF0ZV9jb25kaXRpb25hbDsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9nY2MvZm9y dHJhbi9vcGVubXAuY2MgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKaW5kZXggY2MxZWFiOTBi OGMuLmUwYTM4Mjg0ZGRhIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MKKysr IGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCkBAIC0zOTQsNyArMzk0LDggQEAgZ2ZjX21hdGNo X29tcF92YXJpYWJsZV9saXN0IChjb25zdCBjaGFyICpzdHIsIGdmY19vbXBfbmFtZWxpc3Qg KipsaXN0LAogCQkJICAgICBnZmNfb21wX25hbWVsaXN0ICoqKmhlYWRwID0gTlVMTCwKIAkJ CSAgICAgYm9vbCBhbGxvd19zZWN0aW9ucyA9IGZhbHNlLAogCQkJICAgICBib29sIGFsbG93 X2Rlcml2ZWQgPSBmYWxzZSwKLQkJCSAgICAgYm9vbCAqaGFzX2FsbF9tZW1vcnkgPSBOVUxM KQorCQkJICAgICBib29sICpoYXNfYWxsX21lbW9yeSA9IE5VTEwsCisJCQkgICAgIGJvb2wg YWxsb3dfbW90aW9uX21vZGlmaWVyID0gZmFsc2UpCiB7CiAgIGdmY19vbXBfbmFtZWxpc3Qg KmhlYWQsICp0YWlsLCAqcDsKICAgbG9jdXMgb2xkX2xvYywgY3VyX2xvYzsKQEAgLTQwMiw2 ICs0MDMsNyBAQCBnZmNfbWF0Y2hfb21wX3ZhcmlhYmxlX2xpc3QgKGNvbnN0IGNoYXIgKnN0 ciwgZ2ZjX29tcF9uYW1lbGlzdCAqKmxpc3QsCiAgIGdmY19zeW1ib2wgKnN5bTsKICAgbWF0 Y2ggbTsKICAgZ2ZjX3N5bXRyZWUgKnN0OworICBib29sIHByZXNlbnQgPSBmYWxzZTsKIAog ICBoZWFkID0gdGFpbCA9IE5VTEw7CiAKQEAgLTQzNyw2ICs0MzksMTIgQEAgZ2ZjX21hdGNo X29tcF92YXJpYWJsZV9saXN0IChjb25zdCBjaGFyICpzdHIsIGdmY19vbXBfbmFtZWxpc3Qg KipsaXN0LAogCSAgdGFpbC0+d2hlcmUgPSBjdXJfbG9jOwogCSAgZ290byBuZXh0X2l0ZW07 CiAJfQorICAgICAgZWxzZSBpZiAoYWxsb3dfbW90aW9uX21vZGlmaWVyICYmIG0gPT0gTUFU Q0hfWUVTICYmIHN0cmNtcCAobiwgInByZXNlbnQiKSA9PSAwCisJICAgICAgICYmIGdmY19t YXRjaF9jaGFyICgnOicpID09IE1BVENIX1lFUykKKwl7CisJICBwcmVzZW50ID0gdHJ1ZTsK KwkgIG0gPSBnZmNfbWF0Y2hfbmFtZSAobik7CisJfQogICAgICAgaWYgKG0gPT0gTUFUQ0hf WUVTKQogCXsKIAkgIGdmY19zeW10cmVlICpzdDsKQEAgLTUzNyw2ICs1NDUsMTMgQEAgZ2Zj X21hdGNoX29tcF92YXJpYWJsZV9saXN0IChjb25zdCBjaGFyICpzdHIsIGdmY19vbXBfbmFt ZWxpc3QgKipsaXN0LAogICAqbGlzdCA9IGhlYWQ7CiAgIGlmIChoZWFkcCkKICAgICAqaGVh ZHAgPSBsaXN0OworCisgIGlmIChwcmVzZW50KQorICAgIHsKKyAgICAgIGdmY19vbXBfbmFt ZWxpc3QgKm47CisgICAgICBmb3IgKG4gPSBoZWFkOyBuOyBuID0gbi0+bmV4dCkKKwluLT51 Lm1vdGlvbl9tb2RpZmllciA9IE9NUF9NT1RJT05fUFJFU0VOVDsKKyAgICB9CiAgIHJldHVy biBNQVRDSF9ZRVM7CiAKIHN5bnRheDoKQEAgLTIwODcsNiArMjEwMiw4IEBAIGdmY19tYXRj aF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1h c2ssCiAJCWJlaGF2aW9yID0gT01QX0RFRkFVTFRNQVBfRlJPTTsKIAkgICAgICBlbHNlIGlm IChnZmNfbWF0Y2ggKCJmaXJzdHByaXZhdGUgIikgPT0gTUFUQ0hfWUVTKQogCQliZWhhdmlv ciA9IE9NUF9ERUZBVUxUTUFQX0ZJUlNUUFJJVkFURTsKKwkgICAgICBlbHNlIGlmIChnZmNf bWF0Y2ggKCJwcmVzZW50ICIpID09IE1BVENIX1lFUykKKwkJYmVoYXZpb3IgPSBPTVBfREVG QVVMVE1BUF9QUkVTRU5UOwogCSAgICAgIGVsc2UgaWYgKGdmY19tYXRjaCAoIm5vbmUgIikg PT0gTUFUQ0hfWUVTKQogCQliZWhhdmlvciA9IE9NUF9ERUZBVUxUTUFQX05PTkU7CiAJICAg ICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiZGVmYXVsdCAiKSA9PSBNQVRDSF9ZRVMpCkBAIC0y MDk0LDcgKzIxMTEsNyBAQCBnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNl cyAqKmNwLCBjb25zdCBvbXBfbWFzayBtYXNrLAogCSAgICAgIGVsc2UKIAkJewogCQkgIGdm Y19lcnJvciAoIkV4cGVjdGVkIEFMTE9DLCBUTywgRlJPTSwgVE9GUk9NLCBGSVJTVFBSSVZB VEUsICIKLQkJCSAgICJOT05FIG9yIERFRkFVTFQgYXQgJUMiKTsKKwkJCSAgICAgIlBSRVNF TlQsIE5PTkUgb3IgREVGQVVMVCBhdCAlQyIpOwogCQkgIGJyZWFrOwogCQl9CiAJICAgICAg aWYgKCcpJyA9PSBnZmNfcGVla19hc2NpaV9jaGFyICgpKQpAQCAtMjUyMCw3ICsyNTM3LDgg QEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qg b21wX21hc2sgbWFzaywKIAkgIGlmICgobWFzayAmIE9NUF9DTEFVU0VfRlJPTSkKIAkgICAg ICAmJiAoZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0ICgiZnJvbSAoIiwKIAkJCQkJICAg ICAgJmMtPmxpc3RzW09NUF9MSVNUX0ZST01dLCBmYWxzZSwKLQkJCQkJICAgICAgTlVMTCwg JmhlYWQsIHRydWUsIHRydWUpCisJCQkJCSAgICAgIE5VTEwsICZoZWFkLCB0cnVlLCB0cnVl LCBOVUxMLAorCQkJCQkgICAgICB0cnVlKQogCQkgID09IE1BVENIX1lFUykpCiAJICAgIGNv bnRpbnVlOwogCSAgYnJlYWs7CkBAIC0yODc3LDYgKzI4OTUsNyBAQCBnZmNfbWF0Y2hfb21w X2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBvbXBfbWFzayBtYXNrLAog CSAgICAgIGxvY3VzIG9sZF9sb2MyID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CiAJICAgICAgaW50 IGFsd2F5c19tb2RpZmllciA9IDA7CiAJICAgICAgaW50IGNsb3NlX21vZGlmaWVyID0gMDsK KwkgICAgICBpbnQgcHJlc2VudF9tb2RpZmllciA9IDA7CiAJICAgICAgbG9jdXMgc2Vjb25k X2Fsd2F5c19sb2N1cyA9IG9sZF9sb2MyOwogCSAgICAgIGxvY3VzIHNlY29uZF9jbG9zZV9s b2N1cyA9IG9sZF9sb2MyOwogCkBAIC0yODkzLDIwICsyOTEyLDM4IEBAIGdmY19tYXRjaF9v bXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ss CiAJCSAgICAgIGlmIChjbG9zZV9tb2RpZmllcisrID09IDEpCiAJCQlzZWNvbmRfY2xvc2Vf bG9jdXMgPSBjdXJyZW50X2xvY3VzOwogCQkgICAgfQorCQkgIGVsc2UgaWYgKGdmY19tYXRj aCAoInByZXNlbnQgIikgPT0gTUFUQ0hfWUVTKQorCQkgICAgeworCQkgICAgICBpZiAocHJl c2VudF9tb2RpZmllcisrID09IDEpCisJCQlzZWNvbmRfY2xvc2VfbG9jdXMgPSBjdXJyZW50 X2xvY3VzOworCQkgICAgfQogCQkgIGVsc2UKIAkJICAgIGJyZWFrOwogCQkgIGdmY19tYXRj aCAoIiwgIik7CiAJCX0KIAogCSAgICAgIGdmY19vbXBfbWFwX29wIG1hcF9vcCA9IE9NUF9N QVBfVE9GUk9NOworCSAgICAgIGludCBhbHdheXNfcHJlc2VudF9tb2RpZmllcgorCQk9IGFs d2F5c19tb2RpZmllciAmJiBwcmVzZW50X21vZGlmaWVyOworCiAJICAgICAgaWYgKGdmY19t YXRjaCAoImFsbG9jIDogIikgPT0gTUFUQ0hfWUVTKQotCQltYXBfb3AgPSBPTVBfTUFQX0FM TE9DOworCQltYXBfb3AgPSBwcmVzZW50X21vZGlmaWVyID8gT01QX01BUF9QUkVTRU5UX0FM TE9DCisJCQkgOiBPTVBfTUFQX0FMTE9DOwogCSAgICAgIGVsc2UgaWYgKGdmY19tYXRjaCAo InRvZnJvbSA6ICIpID09IE1BVENIX1lFUykKLQkJbWFwX29wID0gYWx3YXlzX21vZGlmaWVy ID8gT01QX01BUF9BTFdBWVNfVE9GUk9NIDogT01QX01BUF9UT0ZST007CisJCW1hcF9vcCA9 IGFsd2F5c19wcmVzZW50X21vZGlmaWVyID8gT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UT0ZS T00KKwkJCSA6IHByZXNlbnRfbW9kaWZpZXIgPyBPTVBfTUFQX1BSRVNFTlRfVE9GUk9NCisJ CQkgOiBhbHdheXNfbW9kaWZpZXIgPyBPTVBfTUFQX0FMV0FZU19UT0ZST00KKwkJCSA6IE9N UF9NQVBfVE9GUk9NOwogCSAgICAgIGVsc2UgaWYgKGdmY19tYXRjaCAoInRvIDogIikgPT0g TUFUQ0hfWUVTKQotCQltYXBfb3AgPSBhbHdheXNfbW9kaWZpZXIgPyBPTVBfTUFQX0FMV0FZ U19UTyA6IE9NUF9NQVBfVE87CisJCW1hcF9vcCA9IGFsd2F5c19wcmVzZW50X21vZGlmaWVy ID8gT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTworCQkJIDogcHJlc2VudF9tb2RpZmllciA/ IE9NUF9NQVBfUFJFU0VOVF9UTworCQkJIDogYWx3YXlzX21vZGlmaWVyID8gT01QX01BUF9B TFdBWVNfVE8KKwkJCSA6IE9NUF9NQVBfVE87CiAJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNo ICgiZnJvbSA6ICIpID09IE1BVENIX1lFUykKLQkJbWFwX29wID0gYWx3YXlzX21vZGlmaWVy ID8gT01QX01BUF9BTFdBWVNfRlJPTSA6IE9NUF9NQVBfRlJPTTsKKwkJbWFwX29wID0gYWx3 YXlzX3ByZXNlbnRfbW9kaWZpZXIgPyBPTVBfTUFQX0FMV0FZU19QUkVTRU5UX0ZST00KKwkJ CSA6IHByZXNlbnRfbW9kaWZpZXIgPyBPTVBfTUFQX1BSRVNFTlRfRlJPTQorCQkJIDogYWx3 YXlzX21vZGlmaWVyID8gT01QX01BUF9BTFdBWVNfRlJPTQorCQkJIDogT01QX01BUF9GUk9N OwogCSAgICAgIGVsc2UgaWYgKGdmY19tYXRjaCAoInJlbGVhc2UgOiAiKSA9PSBNQVRDSF9Z RVMpCiAJCW1hcF9vcCA9IE9NUF9NQVBfUkVMRUFTRTsKIAkgICAgICBlbHNlIGlmIChnZmNf bWF0Y2ggKCJkZWxldGUgOiAiKSA9PSBNQVRDSF9ZRVMpCkBAIC0zNDU4LDcgKzM0OTUsOCBA QCBnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBv bXBfbWFzayBtYXNrLAogCSAgZWxzZSBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX1RPKQogCSAg ICAgICYmIChnZmNfbWF0Y2hfb21wX3ZhcmlhYmxlX2xpc3QgKCJ0byAoIiwKIAkJCQkJICAg ICAgJmMtPmxpc3RzW09NUF9MSVNUX1RPXSwgZmFsc2UsCi0JCQkJCSAgICAgIE5VTEwsICZo ZWFkLCB0cnVlLCB0cnVlKQorCQkJCQkgICAgICBOVUxMLCAmaGVhZCwgdHJ1ZSwgdHJ1ZSwg TlVMTCwKKwkJCQkJICAgICAgdHJ1ZSkKIAkJICA9PSBNQVRDSF9ZRVMpKQogCSAgICBjb250 aW51ZTsKIAkgIGJyZWFrOwpAQCAtNzgwNCwxMSArNzg0MiwxOCBAQCByZXNvbHZlX29tcF9j bGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcywK IAkJCXsKIAkJCWNhc2UgT01QX01BUF9UTzoKIAkJCWNhc2UgT01QX01BUF9BTFdBWVNfVE86 CisJCQljYXNlIE9NUF9NQVBfUFJFU0VOVF9UTzoKKwkJCWNhc2UgT01QX01BUF9BTFdBWVNf UFJFU0VOVF9UTzoKIAkJCWNhc2UgT01QX01BUF9GUk9NOgogCQkJY2FzZSBPTVBfTUFQX0FM V0FZU19GUk9NOgorCQkJY2FzZSBPTVBfTUFQX1BSRVNFTlRfRlJPTToKKwkJCWNhc2UgT01Q X01BUF9BTFdBWVNfUFJFU0VOVF9GUk9NOgogCQkJY2FzZSBPTVBfTUFQX1RPRlJPTToKIAkJ CWNhc2UgT01QX01BUF9BTFdBWVNfVE9GUk9NOgorCQkJY2FzZSBPTVBfTUFQX1BSRVNFTlRf VE9GUk9NOgorCQkJY2FzZSBPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJPTToKIAkJCWNh c2UgT01QX01BUF9BTExPQzoKKwkJCWNhc2UgT01QX01BUF9QUkVTRU5UX0FMTE9DOgogCQkJ ICBicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkgIGdmY19lcnJvciAoIlRBUkdFVCVzIHdpdGgg bWFwLXR5cGUgb3RoZXIgdGhhbiBUTywgIgpAQCAtNzgyNCw2ICs3ODY5LDggQEAgcmVzb2x2 ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2Ns YXVzZXMsCiAJCQl7CiAJCQljYXNlIE9NUF9NQVBfVE86CiAJCQljYXNlIE9NUF9NQVBfQUxX QVlTX1RPOgorCQkJY2FzZSBPTVBfTUFQX1BSRVNFTlRfVE86CisJCQljYXNlIE9NUF9NQVBf QUxXQVlTX1BSRVNFTlRfVE86CiAJCQljYXNlIE9NUF9NQVBfQUxMT0M6CiAJCQkgIGJyZWFr OwogCQkJY2FzZSBPTVBfTUFQX1RPRlJPTToKQEAgLTc4MzIsNiArNzg3OSwxMiBAQCByZXNv bHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBf Y2xhdXNlcywKIAkJCWNhc2UgT01QX01BUF9BTFdBWVNfVE9GUk9NOgogCQkJICBuLT51Lm1h cF9vcCA9IE9NUF9NQVBfQUxXQVlTX1RPOwogCQkJICBicmVhazsKKwkJCWNhc2UgT01QX01B UF9QUkVTRU5UX1RPRlJPTToKKwkJCSAgbi0+dS5tYXBfb3AgPSBPTVBfTUFQX1BSRVNFTlRf VE87CisJCQkgIGJyZWFrOworCQkJY2FzZSBPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJP TToKKwkJCSAgbi0+dS5tYXBfb3AgPSBPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPOworCQkJ ICBicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkgIGdmY19lcnJvciAoIlRBUkdFVCBFTlRFUiBE QVRBIHdpdGggbWFwLXR5cGUgb3RoZXIgIgogCQkJCSAgICAgInRoYW4gVE8sIFRPRlJPTSBv ciBBTExPQyBvbiBNQVAgY2xhdXNlICIKQEAgLTc4NDQsNiArNzg5Nyw4IEBAIHJlc29sdmVf b21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1 c2VzLAogCQkJewogCQkJY2FzZSBPTVBfTUFQX0ZST006CiAJCQljYXNlIE9NUF9NQVBfQUxX QVlTX0ZST006CisJCQljYXNlIE9NUF9NQVBfUFJFU0VOVF9GUk9NOgorCQkJY2FzZSBPTVBf TUFQX0FMV0FZU19QUkVTRU5UX0ZST006CiAJCQljYXNlIE9NUF9NQVBfUkVMRUFTRToKIAkJ CWNhc2UgT01QX01BUF9ERUxFVEU6CiAJCQkgIGJyZWFrOwpAQCAtNzg1Myw2ICs3OTA4LDEy IEBAIHJlc29sdmVfb21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVz ZXMgKm9tcF9jbGF1c2VzLAogCQkJY2FzZSBPTVBfTUFQX0FMV0FZU19UT0ZST006CiAJCQkg IG4tPnUubWFwX29wID0gT01QX01BUF9BTFdBWVNfRlJPTTsKIAkJCSAgYnJlYWs7CisJCQlj YXNlIE9NUF9NQVBfUFJFU0VOVF9UT0ZST006CisJCQkgIG4tPnUubWFwX29wID0gT01QX01B UF9QUkVTRU5UX0ZST007CisJCQkgIGJyZWFrOworCQkJY2FzZSBPTVBfTUFQX0FMV0FZU19Q UkVTRU5UX1RPRlJPTToKKwkJCSAgbi0+dS5tYXBfb3AgPSBPTVBfTUFQX0FMV0FZU19QUkVT RU5UX0ZST007CisJCQkgIGJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCSAgZ2ZjX2Vycm9yICgi VEFSR0VUIEVYSVQgREFUQSB3aXRoIG1hcC10eXBlIG90aGVyICIKIAkJCQkgICAgICJ0aGFu IEZST00sIFRPRlJPTSwgUkVMRUFTRSwgb3IgREVMRVRFIG9uICIKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5j YwppbmRleCA4NzIxM2RlMDkxOC4uNTc5MmZjMjUxM2UgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0 cmFuL3RyYW5zLW9wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MK QEAgLTMwNjYsNiArMzA2NiwzMCBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMgKHN0bXRibG9j a190ICpibG9jaywgZ2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogCQkgIGFsd2F5c19tb2Rp ZmllciA9IHRydWU7CiAJCSAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQgKG5vZGUsIEdPTVBf TUFQX0FMV0FZU19UT0ZST00pOwogCQkgIGJyZWFrOworCQljYXNlIE9NUF9NQVBfUFJFU0VO VF9BTExPQzoKKwkJICBPTVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAobm9kZSwgR09NUF9NQVBf UFJFU0VOVF9BTExPQyk7CisJCSAgYnJlYWs7CisJCWNhc2UgT01QX01BUF9QUkVTRU5UX1RP OgorCQkgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EIChub2RlLCBHT01QX01BUF9QUkVTRU5U X1RPKTsKKwkJICBicmVhazsKKwkJY2FzZSBPTVBfTUFQX1BSRVNFTlRfRlJPTToKKwkJICBP TVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAobm9kZSwgR09NUF9NQVBfUFJFU0VOVF9GUk9NKTsK KwkJICBicmVhazsKKwkJY2FzZSBPTVBfTUFQX1BSRVNFTlRfVE9GUk9NOgorCQkgIE9NUF9D TEFVU0VfU0VUX01BUF9LSU5EIChub2RlLCBHT01QX01BUF9QUkVTRU5UX1RPRlJPTSk7CisJ CSAgYnJlYWs7CisJCWNhc2UgT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKKwkJICBhbHdh eXNfbW9kaWZpZXIgPSB0cnVlOworCQkgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EIChub2Rl LCBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTyk7CisJCSAgYnJlYWs7CisJCWNhc2UgT01Q X01BUF9BTFdBWVNfUFJFU0VOVF9GUk9NOgorCQkgIGFsd2F5c19tb2RpZmllciA9IHRydWU7 CisJCSAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQgKG5vZGUsIEdPTVBfTUFQX0FMV0FZU19Q UkVTRU5UX0ZST00pOworCQkgIGJyZWFrOworCQljYXNlIE9NUF9NQVBfQUxXQVlTX1BSRVNF TlRfVE9GUk9NOgorCQkgIGFsd2F5c19tb2RpZmllciA9IHRydWU7CisJCSAgT01QX0NMQVVT RV9TRVRfTUFQX0tJTkQgKG5vZGUsIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJPTSk7 CisJCSAgYnJlYWs7CiAJCWNhc2UgT01QX01BUF9SRUxFQVNFOgogCQkgIE9NUF9DTEFVU0Vf U0VUX01BUF9LSU5EIChub2RlLCBHT01QX01BUF9SRUxFQVNFKTsKIAkJICBicmVhazsKQEAg LTM3MDUsNiArMzcyOSw5IEBAIGdmY190cmFuc19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3Qg KmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNsYXVzZXMsCiAJCSAgZ2NjX2Fzc2VydCAoUE9J TlRFUl9UWVBFX1AgKFRSRUVfVFlQRSAocHRyKSkpOwogCQkgIE9NUF9DTEFVU0VfREVDTCAo bm9kZSkgPSBidWlsZF9mb2xkX2luZGlyZWN0X3JlZiAocHRyKTsKIAkJfQorCSAgICAgIGlm IChuLT51Lm1vdGlvbl9tb2RpZmllciA9PSBPTVBfTU9USU9OX1BSRVNFTlQpCisJCU9NUF9D TEFVU0VfU0VUX01PVElPTl9NT0RJRklFUiAobm9kZSwKKwkJCQkJCU9NUF9DTEFVU0VfTU9U SU9OX1BSRVNFTlQpOwogCSAgICAgIG9tcF9jbGF1c2VzID0gZ2ZjX3RyYW5zX2FkZF9jbGF1 c2UgKG5vZGUsIG9tcF9jbGF1c2VzKTsKIAkgICAgfQogCSAgYnJlYWs7CkBAIC00MjQ2LDYg KzQyNzMsOSBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMgKHN0bXRibG9ja190ICpibG9jaywg Z2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogCWNhc2UgT01QX0RFRkFVTFRNQVBfRklSU1RQ UklWQVRFOgogCSAgYmVoYXZpb3IgPSBPTVBfQ0xBVVNFX0RFRkFVTFRNQVBfRklSU1RQUklW QVRFOwogCSAgYnJlYWs7CisJY2FzZSBPTVBfREVGQVVMVE1BUF9QUkVTRU5UOgorCSAgYmVo YXZpb3IgPSBPTVBfQ0xBVVNFX0RFRkFVTFRNQVBfUFJFU0VOVDsKKwkgIGJyZWFrOwogCWNh c2UgT01QX0RFRkFVTFRNQVBfTk9ORTogYmVoYXZpb3IgPSBPTVBfQ0xBVVNFX0RFRkFVTFRN QVBfTk9ORTsgYnJlYWs7CiAJY2FzZSBPTVBfREVGQVVMVE1BUF9ERUZBVUxUOgogCSAgYmVo YXZpb3IgPSBPTVBfQ0xBVVNFX0RFRkFVTFRNQVBfREVGQVVMVDsKZGlmZiAtLWdpdCBhL2dj Yy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5jYwppbmRleCAxYjM2MmRkODNlMy4uMTYy MTM2MTAwZGYgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGlmeS5jYworKysgYi9nY2MvZ2ltcGxp ZnkuY2MKQEAgLTc5MDQsNiArNzkwNCwxMSBAQCBvbXBfbm90aWNlX3ZhcmlhYmxlIChzdHJ1 Y3QgZ2ltcGxpZnlfb21wX2N0eCAqY3R4LCB0cmVlIGRlY2wsIGJvb2wgaW5fY29kZSkKIAkJ ICBlbHNlIGlmIChjdHgtPmRlZmF1bHRtYXBbZ2Rta10KIAkJCSAgICYgKEdPVkRfTUFQXzBM RU5fQVJSQVkgfCBHT1ZEX0ZJUlNUUFJJVkFURSkpCiAJCSAgICBuZmxhZ3MgfD0gY3R4LT5k ZWZhdWx0bWFwW2dkbWtdOworCQkgIGVsc2UgaWYgKGN0eC0+ZGVmYXVsdG1hcFtnZG1rXSAm IEdPVkRfTUFQX0ZPUkNFX1BSRVNFTlQpCisJCSAgICB7CisJCSAgICAgIGdjY19hc3NlcnQg KGN0eC0+ZGVmYXVsdG1hcFtnZG1rXSAmIEdPVkRfTUFQKTsKKwkJICAgICAgbmZsYWdzIHw9 IGN0eC0+ZGVmYXVsdG1hcFtnZG1rXSB8IEdPVkRfTUFQX0FMTE9DX09OTFk7CisJCSAgICB9 CiAJCSAgZWxzZQogCQkgICAgewogCQkgICAgICBnY2NfYXNzZXJ0IChjdHgtPmRlZmF1bHRt YXBbZ2Rta10gJiBHT1ZEX01BUCk7CkBAIC05MDYyLDYgKzkwNjcsMTMgQEAgb21wX2dldF9h dHRhY2htZW50IChvbXBfbWFwcGluZ19ncm91cCAqZ3JwKQogICAgIGNhc2UgR09NUF9NQVBf Rk9SQ0VfVE86CiAgICAgY2FzZSBHT01QX01BUF9GT1JDRV9UT0ZST006CiAgICAgY2FzZSBH T01QX01BUF9GT1JDRV9QUkVTRU5UOgorICAgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9BTExP QzoKKyAgICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfRlJPTToKKyAgICBjYXNlIEdPTVBfTUFQ X1BSRVNFTlRfVE86CisgICAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJPTToKKyAgICBj YXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX0ZST006CisgICAgY2FzZSBHT01QX01BUF9B TFdBWVNfUFJFU0VOVF9UTzoKKyAgICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RP RlJPTToKICAgICBjYXNlIEdPTVBfTUFQX0FMTE9DOgogICAgIGNhc2UgR09NUF9NQVBfUkVM RUFTRToKICAgICBjYXNlIEdPTVBfTUFQX0RFTEVURToKQEAgLTkyOTMsNiArOTMwNSwxMyBA QCBvbXBfZ3JvdXBfYmFzZSAob21wX21hcHBpbmdfZ3JvdXAgKmdycCwgdW5zaWduZWQgaW50 ICpjaGFpbmVkLAogICAgIGNhc2UgR09NUF9NQVBfRk9SQ0VfVE86CiAgICAgY2FzZSBHT01Q X01BUF9GT1JDRV9UT0ZST006CiAgICAgY2FzZSBHT01QX01BUF9GT1JDRV9QUkVTRU5UOgor ICAgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9BTExPQzoKKyAgICBjYXNlIEdPTVBfTUFQX1BS RVNFTlRfRlJPTToKKyAgICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfVE86CisgICAgY2FzZSBH T01QX01BUF9QUkVTRU5UX1RPRlJPTToKKyAgICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVT RU5UX0ZST006CisgICAgY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKKyAgICBj YXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJPTToKICAgICBjYXNlIEdPTVBfTUFQ X0FMTE9DOgogICAgIGNhc2UgR09NUF9NQVBfUkVMRUFTRToKICAgICBjYXNlIEdPTVBfTUFQ X0RFTEVURToKQEAgLTExOTcyLDYgKzExOTkxLDkgQEAgZ2ltcGxpZnlfc2Nhbl9vbXBfY2xh dXNlcyAodHJlZSAqbGlzdF9wLCBnaW1wbGVfc2VxICpwcmVfcCwKIAkgICAgICBjYXNlIE9N UF9DTEFVU0VfREVGQVVMVE1BUF9OT05FOgogCQljdHgtPmRlZmF1bHRtYXBbZ2Rta10gPSAw OwogCQlicmVhazsKKwkgICAgICBjYXNlIE9NUF9DTEFVU0VfREVGQVVMVE1BUF9QUkVTRU5U OgorCQljdHgtPmRlZmF1bHRtYXBbZ2Rta10gPSBHT1ZEX01BUCB8IEdPVkRfTUFQX0ZPUkNF X1BSRVNFTlQ7CisJCWJyZWFrOwogCSAgICAgIGNhc2UgT01QX0NMQVVTRV9ERUZBVUxUTUFQ X0RFRkFVTFQ6CiAJCXN3aXRjaCAoZ2RtaykKIAkJICB7CkBAIC0xMjQxNiw2ICsxMjQzOCw5 IEBAIGdpbXBsaWZ5X2FkanVzdF9vbXBfY2xhdXNlc18xIChzcGxheV90cmVlX25vZGUgbiwg dm9pZCAqZGF0YSkKIAljYXNlIEdPVkRfTUFQX0ZPUkNFX1BSRVNFTlQ6CiAJICBraW5kID0g R09NUF9NQVBfRk9SQ0VfUFJFU0VOVDsKIAkgIGJyZWFrOworCWNhc2UgR09WRF9NQVBfRk9S Q0VfUFJFU0VOVCB8IEdPVkRfTUFQX0FMTE9DX09OTFk6CisJICBraW5kID0gR09NUF9NQVBf UFJFU0VOVF9BTExPQzsKKwkgIGJyZWFrOwogCWRlZmF1bHQ6CiAJICBnY2NfdW5yZWFjaGFi bGUgKCk7CiAJfQpAQCAtMTMxMDIsNiArMTMxMjcsNTIgQEAgZ2ltcGxpZnlfYWRqdXN0X29t cF9jbGF1c2VzIChnaW1wbGVfc2VxICpwcmVfcCwgZ2ltcGxlX3NlcSBib2R5LCB0cmVlICps aXN0X3AsCiAgIGRhdGEucHJlX3AgPSBwcmVfcDsKICAgc3BsYXlfdHJlZV9mb3JlYWNoIChj dHgtPnZhcmlhYmxlcywgZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2VzXzEsICZkYXRhKTsK IAorICAvKiBPcGVuTVAgbWFwIGNsYXVzZXMgd2l0aCAncHJlc2VudCcgbmVlZCB0byBnbyBp biBmcm9udCBvZiB0aG9zZSB3aXRob3V0LiAgKi8KKyAgaWYgKChnaW1wbGlmeV9vbXBfY3R4 cC0+cmVnaW9uX3R5cGUgJiBPUlRfQUNDKSA9PSAwKQorICAgIHsKKyAgICAgIHRyZWUgcHJl c2VudF9tYXBfaGVhZCA9IE5VTEw7CisgICAgICB0cmVlICpwcmVzZW50X21hcF90YWlsX3Ag PSAmcHJlc2VudF9tYXBfaGVhZDsKKyAgICAgIHRyZWUgKmZpcnN0X21hcF9jbGF1c2VfcCA9 IE5VTEw7CisKKyAgICAgIGZvciAodHJlZSAqY19wID0gZGF0YS5saXN0X3A7ICpjX3A7ICkK Kwl7CisJICB0cmVlIGMgPSAqY19wOworCSAgdHJlZSAqbmV4dF9jX3AgPSAmT01QX0NMQVVT RV9DSEFJTiAoYyk7CisKKwkgIGlmIChPTVBfQ0xBVVNFX0NPREUgKGMpID09IE9NUF9DTEFV U0VfTUFQKQorCSAgICB7CisJICAgICAgaWYgKCFmaXJzdF9tYXBfY2xhdXNlX3ApCisJCWZp cnN0X21hcF9jbGF1c2VfcCA9IGNfcDsKKwkgICAgICBzd2l0Y2ggKE9NUF9DTEFVU0VfTUFQ X0tJTkQgKGMpKQorCQl7CisJCWNhc2UgR09NUF9NQVBfUFJFU0VOVF9BTExPQzoKKwkJY2Fz ZSBHT01QX01BUF9QUkVTRU5UX0ZST006CisJCWNhc2UgR09NUF9NQVBfUFJFU0VOVF9UTzoK KwkJY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJPTToKKwkJICBuZXh0X2NfcCA9IGNfcDsK KwkJICAqY19wID0gT01QX0NMQVVTRV9DSEFJTiAoYyk7CisKKwkJICBPTVBfQ0xBVVNFX0NI QUlOIChjKSA9IE5VTEw7CisJCSAgKnByZXNlbnRfbWFwX3RhaWxfcCA9IGM7CisJCSAgcHJl c2VudF9tYXBfdGFpbF9wID0gJk9NUF9DTEFVU0VfQ0hBSU4gKGMpOworCisJCSAgYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJICBicmVhazsKKwkJfQorCSAgICB9CisKKwkgIGNfcCA9IG5l eHRfY19wOworCX0KKyAgICAgIGlmIChmaXJzdF9tYXBfY2xhdXNlX3AgJiYgcHJlc2VudF9t YXBfaGVhZCkKKwl7CisJICB0cmVlIG5leHQgPSAqZmlyc3RfbWFwX2NsYXVzZV9wOworCSAg KmZpcnN0X21hcF9jbGF1c2VfcCA9IHByZXNlbnRfbWFwX2hlYWQ7CisJICAqcHJlc2VudF9t YXBfdGFpbF9wID0gbmV4dDsKKwl9CisgICAgfQorCiAgIGlmIChoYXNfaW5zY2FuX3JlZHVj dGlvbnMpCiAgICAgZm9yIChjID0gKm9yaWdfbGlzdF9wOyBjOyBjID0gT01QX0NMQVVTRV9D SEFJTiAoYykpCiAgICAgICBpZiAoT01QX0NMQVVTRV9DT0RFIChjKSA9PSBPTVBfQ0xBVVNF X0xJTkVBUgpkaWZmIC0tZ2l0IGEvZ2NjL29tcC1sb3cuY2MgYi9nY2Mvb21wLWxvdy5jYwpp bmRleCBmZWY0MWEwMTNlYy4uYzFhYzM0ZTVlYzAgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtbG93 LmNjCisrKyBiL2djYy9vbXAtbG93LmNjCkBAIC0xNTc2LDYgKzE1NzYsOSBAQCBzY2FuX3No YXJpbmdfY2xhdXNlcyAodHJlZSBjbGF1c2VzLCBvbXBfY29udGV4dCAqY3R4KQogCSAgICAg ICYmIE9NUF9DTEFVU0VfTUFQX0tJTkQgKGMpICE9IEdPTVBfTUFQX0FMV0FZU19UTwogCSAg ICAgICYmIE9NUF9DTEFVU0VfTUFQX0tJTkQgKGMpICE9IEdPTVBfTUFQX0FMV0FZU19GUk9N CiAJICAgICAgJiYgT01QX0NMQVVTRV9NQVBfS0lORCAoYykgIT0gR09NUF9NQVBfQUxXQVlT X1RPRlJPTQorCSAgICAgICYmIE9NUF9DTEFVU0VfTUFQX0tJTkQgKGMpICE9IEdPTVBfTUFQ X0FMV0FZU19QUkVTRU5UX1RPCisJICAgICAgJiYgT01QX0NMQVVTRV9NQVBfS0lORCAoYykg IT0gR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTQorCSAgICAgICYmIE9NUF9DTEFVU0Vf TUFQX0tJTkQgKGMpICE9IEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPRlJPTQogCSAgICAg ICYmIE9NUF9DTEFVU0VfTUFQX0tJTkQgKGMpICE9IEdPTVBfTUFQX1RPX1BTRVQKIAkgICAg ICAmJiBpc19nbG9iYWxfdmFyIChtYXliZV9sb29rdXBfZGVjbF9pbl9vdXRlcl9jdHggKGRl Y2wsIGN0eCkpCiAJICAgICAgJiYgdmFycG9vbF9ub2RlOjpnZXRfY3JlYXRlIChkZWNsKS0+ b2ZmbG9hZGFibGUKQEAgLTEyNzk3LDYgKzEyODAwLDE0IEBAIGxvd2VyX29tcF90YXJnZXQg KGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2lfcCwgb21wX2NvbnRleHQgKmN0eCkKIAkgIGNh c2UgR09NUF9NQVBfQUxXQVlTX1RPOgogCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfRlJPTToK IAkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1RPRlJPTToKKwkgIGNhc2UgR09NUF9NQVBfUFJF U0VOVF9BTExPQzoKKwkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAgY2FzZSBH T01QX01BUF9QUkVTRU5UX1RPOgorCSAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RPRlJPTToK KwkgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKKwkgIGNhc2UgR09NUF9N QVBfQUxXQVlTX1BSRVNFTlRfVE86CisJICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5U X1RPRlJPTToKKwogCSAgY2FzZSBHT01QX01BUF9GSVJTVFBSSVZBVEVfUE9JTlRFUjoKIAkg IGNhc2UgR09NUF9NQVBfRklSU1RQUklWQVRFX1JFRkVSRU5DRToKIAkgIGNhc2UgR09NUF9N QVBfU1RSVUNUOgpAQCAtMTMzMzgsNiArMTMzNDksMTMgQEAgbG93ZXJfb21wX3RhcmdldCAo Z2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaV9wLCBvbXBfY29udGV4dCAqY3R4KQogCQkgICAg Y2FzZSBHT01QX01BUF9BTFdBWVNfVE86CiAJCSAgICBjYXNlIEdPTVBfTUFQX0FMV0FZU19G Uk9NOgogCQkgICAgY2FzZSBHT01QX01BUF9BTFdBWVNfVE9GUk9NOgorCQkgICAgY2FzZSBH T01QX01BUF9QUkVTRU5UX0FMTE9DOgorCQkgICAgY2FzZSBHT01QX01BUF9QUkVTRU5UX1RP OgorCQkgICAgY2FzZSBHT01QX01BUF9QUkVTRU5UX0ZST006CisJCSAgICBjYXNlIEdPTVBf TUFQX1BSRVNFTlRfVE9GUk9NOgorCQkgICAgY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VO VF9UTzoKKwkJICAgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKKwkJICAg IGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfVE9GUk9NOgogCQkgICAgY2FzZSBHT01Q X01BUF9SRUxFQVNFOgogCQkgICAgY2FzZSBHT01QX01BUF9GT1JDRV9UTzoKIAkJICAgIGNh c2UgR09NUF9NQVBfRk9SQ0VfRlJPTToKQEAgLTEzMzc3LDExICsxMzM5NSwxNSBAQCBsb3dl cl9vbXBfdGFyZ2V0IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpX3AsIG9tcF9jb250ZXh0 ICpjdHgpCiAJCXRraW5kX3plcm8gPSB0a2luZDsKIAkJYnJlYWs7CiAJICAgICAgY2FzZSBP TVBfQ0xBVVNFX1RPOgotCQl0a2luZCA9IEdPTVBfTUFQX1RPOworCQl0a2luZAorCQkgID0g T01QX0NMQVVTRV9NT1RJT05fTU9ESUZJRVIgKGMpID09IE9NUF9DTEFVU0VfTU9USU9OX1BS RVNFTlQKKwkJICAgID8gR09NUF9NQVBfUFJFU0VOVF9UTyA6IEdPTVBfTUFQX1RPOwogCQl0 a2luZF96ZXJvID0gdGtpbmQ7CiAJCWJyZWFrOwogCSAgICAgIGNhc2UgT01QX0NMQVVTRV9G Uk9NOgotCQl0a2luZCA9IEdPTVBfTUFQX0ZST007CisJCXRraW5kCisJCSAgPSBPTVBfQ0xB VVNFX01PVElPTl9NT0RJRklFUiAoYykgPT0gT01QX0NMQVVTRV9NT1RJT05fUFJFU0VOVAor CQkgICAgPyBHT01QX01BUF9QUkVTRU5UX0ZST00gOiBHT01QX01BUF9GUk9NOwogCQl0a2lu ZF96ZXJvID0gdGtpbmQ7CiAJCWJyZWFrOwogCSAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlZmF1bHRtYXAtNC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWZhdWx0bWFwLTQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWFmZmY3ZWEzOGYKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlZmF1bHRtYXAtNC5j CkBAIC0wLDAgKzEsMjQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKKyNkZWZpbmUg TiAxMDAwCisKK3ZvaWQKK2ZvbyAodm9pZCkKK3sKKyAgaW50IGFbTl0sIGJbTl0sIGNbTl07 CisKKyAgLyogU2hvdWxkIGdlbmVyYXRlIGltcGxpY2l0ICdtYXAocHJlc2VudCwgYWxsb2Mp JyBjbGF1c2VzLiAgKi8KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRlZmF1bHRtYXAgKHByZXNl bnQ6IGFnZ3JlZ2F0ZSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICAg IGNbaV0gPSBhW2ldICsgYltpXTsKKworICAvKiBTaG91bGQgZ2VuZXJhdGUgaW1wbGljaXQg J21hcChwcmVzZW50LCBhbGxvYyknIGNsYXVzZXMsCisgICAgIGFuZCB0aGV5IHNob3VsZCBn byBiZWZvcmUgb3RoZXIgbm9uLXByZXNlbnQgY2xhdXNlcy4gICovCisgICNwcmFnbWEgb21w IHRhcmdldCBtYXAoZnJvbTogYykgZGVmYXVsdG1hcCAocHJlc2VudDogYWdncmVnYXRlKQor ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQorICAgICAgY1tpXSA9IGFbaV0gKyBi W2ldOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdtYSBvbXAg dGFyZ2V0LipkZWZhdWx0bWFwXFwocHJlc2VudDphZ2dyZWdhdGVcXCkgbWFwXFwocHJlc2Vu dCxhbGxvYzpjIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkgbWFw XFwocHJlc2VudCxhbGxvYzpiIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxc XF1cXCkgbWFwXFwocHJlc2VudCxhbGxvYzphIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtp bXBsaWNpdFxcXF1cXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJwcmFnbWEgb21wIHRhcmdldC4qZGVmYXVsdG1hcFxcKHByZXNlbnQ6YWdn cmVnYXRlXFwpIG1hcFxcKHByZXNlbnQsYWxsb2M6YiBcXFxbbGVuOiBcWzAtOVxdK1xcXF1c XFxbaW1wbGljaXRcXFxdXFwpIG1hcFxcKHByZXNlbnQsYWxsb2M6YSBcXFxbbGVuOiBcWzAt OVxdK1xcXF1cXFxbaW1wbGljaXRcXFxdXFwpIG1hcFxcKGZyb206YyBcXFxbbGVuOiBcWzAt OVxdK1xcXF1cXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZ29tcC9tYXAtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9tYXAtNi5jCmluZGV4IDZlZTU5NzE0ODQ3Li5iNDY4M2RkYmFiZiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9tYXAtNi5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbWFwLTYuYwpAQCAtMTMsMTAgKzEzLDEw IEBAIGZvbyAodm9pZCkKICAgI3ByYWdtYSBvbXAgdGFyZ2V0IG1hcCAodG86YSkKICAgOwog Ci0gICNwcmFnbWEgb21wIHRhcmdldCBtYXAgKGEgdG86IGIpIC8qIHsgZGctZXJyb3IgIicj cHJhZ21hIG9tcCB0YXJnZXQnIHdpdGggbW9kaWZpZXIgb3RoZXIgdGhhbiAnYWx3YXlzJyBv ciAnY2xvc2UnIiB9ICovCisgICNwcmFnbWEgb21wIHRhcmdldCBtYXAgKGEgdG86IGIpIC8q IHsgZGctZXJyb3IgIicjcHJhZ21hIG9tcCB0YXJnZXQnIHdpdGggbW9kaWZpZXIgb3RoZXIg dGhhbiAnYWx3YXlzJywgJ2Nsb3NlJyBvciAncHJlc2VudCciIH0gKi8KICAgOwogCi0gICNw cmFnbWEgb21wIHRhcmdldCBtYXAgKGNsb3NlLCBhIHRvOiBiKSAvKiB7IGRnLWVycm9yICIn I3ByYWdtYSBvbXAgdGFyZ2V0JyB3aXRoIG1vZGlmaWVyIG90aGVyIHRoYW4gJ2Fsd2F5cycg b3IgJ2Nsb3NlJyIgfSAqLworICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwIChjbG9zZSwgYSB0 bzogYikgLyogeyBkZy1lcnJvciAiJyNwcmFnbWEgb21wIHRhcmdldCcgd2l0aCBtb2RpZmll ciBvdGhlciB0aGFuICdhbHdheXMnLCAnY2xvc2UnIG9yICdwcmVzZW50JyIgfSAqLwogICA7 CiAKICAgI3ByYWdtYSBvbXAgdGFyZ2V0IG1hcCAoY2xvc2UgYSkgLyogeyBkZy1lcnJvciAi J2Nsb3NlJyB1bmRlY2xhcmVkIiAiIiB7IHRhcmdldCBjIH0gfSAqLyAKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbWFwLTguYyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2dvbXAvbWFwLTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNGI0YmQ2ZDJhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL21hcC04LmMKQEAgLTAsMCArMSwzMiBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1 bXAtdHJlZS1naW1wbGUiIH0gKi8KKworI2RlZmluZSBOIDEwMDAKKwordm9pZAorZm9vICh2 b2lkKQoreworICBpbnQgYVtOXSwgYltOXSwgY1tOXTsKKworICAvKiBTaG91bGQgYmUgYWJs ZSB0byBwYXJzZSAncHJlc2VudCcgbWFwIG1vZGlmaWVyLiAgKi8KKyAgI3ByYWdtYSBvbXAg dGFyZ2V0IGVudGVyIGRhdGEgbWFwIChwcmVzZW50LCB0bzogYSwgYikKKworICAjcHJhZ21h IG9tcCB0YXJnZXQgZGF0YSBtYXAgKHByZXNlbnQsIHRvOiBhLCBiKSBtYXAgKGFsd2F5cywg cHJlc2VudCwgZnJvbTogYykKKworICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwIChwcmVzZW50 LCB0bzogYSwgYikgbWFwIChwcmVzZW50LCBmcm9tOiBjKQorICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTjsgaSsrKQorICAgICAgY1tpXSA9IGFbaV0gKyBiW2ldOworCisgICNwcmFnbWEg b21wIHRhcmdldCBleGl0IGRhdGEgbWFwIChhbHdheXMsIHByZXNlbnQsIGZyb206IGMpCisK KyAgLyogTWFwIGNsYXVzZXMgd2l0aCAncHJlc2VudCcgbW9kaWZpZXIgc2hvdWxkIGdvIGFo ZWFkIG9mIHRob3NlIHdpdGhvdXQuICAqLworICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwICh0 bzogYSkgbWFwIChwcmVzZW50LCB0bzogYikgbWFwIChmcm9tOiBjKQorICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTjsgaSsrKQorICAgICAgY1tpXSA9IGFbaV0gKyBiW2ldOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdtYSBvbXAgdGFyZ2V0IGVudGVy IGRhdGEgbWFwXFwocHJlc2VudCx0bzpiIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSBtYXBc XChwcmVzZW50LHRvOmEgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiAiZ2ltcGxlIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicHJhZ21hIG9tcCB0YXJnZXQg ZGF0YSBtYXBcXChwcmVzZW50LHRvOmIgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIG1hcFxc KHByZXNlbnQsdG86YSBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkgbWFwXFwoYWx3YXlzLHBy ZXNlbnQsZnJvbTpjIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgImdpbXBsZSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdtYSBvbXAgdGFyZ2V0Lipt YXBcXChwcmVzZW50LGZyb206YyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkgbWFwXFwocHJl c2VudCx0bzpiIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSBtYXBcXChwcmVzZW50LHRvOmEg XFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAicHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcFxc KGFsd2F5cyxwcmVzZW50LGZyb206YyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiICJnaW1w bGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJwcmFnbWEgb21w IHRhcmdldC4qbWFwXFwocHJlc2VudCx0bzpiIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSBt YXBcXChmcm9tOmMgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIG1hcFxcKHRvOmEgXFxcW2xl bjogXFswLTlcXStcXFxdXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LXVwZGF0ZS0xLmMgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC11cGRhdGUtMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMjMzZmU1YTdhZgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LXVwZGF0ZS0x LmMKQEAgLTAsMCArMSwxNSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct YWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworI2RlZmlu ZSBOIDEwMDAKKwordm9pZAorZm9vICh2b2lkKQoreworICBpbnQgYVtOXSwgYltOXTsKKwor ICAvKiBTaG91bGQgYmUgYWJsZSB0byBwYXJzZSBwcmVzZW50IGluIHRvL2Zyb20gY2xhdXNl cyBvZiAndGFyZ2V0IHVwZGF0ZScuICAqLworICAjcHJhZ21hIG9tcCB0YXJnZXQgdXBkYXRl IHRvKHByZXNlbnQ6IGEpIGZyb20ocHJlc2VudDogYikKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJwcmFnbWEgb21wIHRhcmdldCB1cGRhdGUgZnJvbVxcKHByZXNl bnQ6YiBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkgdG9cXChwcmVzZW50OmEgXFxcW2xlbjog XFswLTlcXStcXFxdXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9kZWZhdWx0bWFwLTEuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2RlZmF1bHRtYXAtMS5mOTAKaW5kZXggMjk5ZDk3MWYyM2Mu LjFmMWI4NTI4YWVmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvZGVmYXVsdG1hcC0xLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvZGVmYXVsdG1hcC0xLmY5MApAQCAtMiw3ICsyLDcgQEAKIAogaW1wbGljaXQgbm9uZQog Ci0hJG9tcCB0YXJnZXQgZGVmYXVsdG1hcChiYXIpICAhIHsgZGctZXJyb3IgIjI1OiBFeHBl Y3RlZCBBTExPQywgVE8sIEZST00sIFRPRlJPTSwgRklSU1RQUklWQVRFLCBOT05FIG9yIERF RkFVTFQiIH0KKyEkb21wIHRhcmdldCBkZWZhdWx0bWFwKGJhcikgICEgeyBkZy1lcnJvciAi MjU6IEV4cGVjdGVkIEFMTE9DLCBUTywgRlJPTSwgVE9GUk9NLCBGSVJTVFBSSVZBVEUsIFBS RVNFTlQsIE5PTkUgb3IgREVGQVVMVCIgfQogCiAhJG9tcCB0YXJnZXQgZGVmYXVsdG1hcCAo IGFsbG9jOiBmb28pICAhIHsgZGctZXJyb3IgIjM0OiBFeHBlY3RlZCBTQ0FMQVIsIEFHR1JF R0FURSwgQUxMT0NBVEFCTEUgb3IgUE9JTlRFUiIgfQogCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvZGVmYXVsdG1hcC04LmY5MCBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9kZWZhdWx0bWFwLTguZjkwCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NjlhNjIzZjc0NgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9kZWZhdWx0bWFwLTguZjkwCkBAIC0w LDAgKzEsMjYgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1mZHVtcC10cmVlLWdpbXBsZSIgfQorCitwcm9ncmFtIG1haW4KKyAgaW1wbGlj aXQgbm9uZQorICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogTiA9IDEwMDAKKyAgaW50ZWdlciA6 OiBhKE4pLCBiKE4pLCBjKE4pLCBpCisgIAorICAhIFNob3VsZCBnZW5lcmF0ZSBpbXBsaWNp dCAnbWFwKHByZXNlbnQsIGFsbG9jKScgY2xhdXNlcy4KKyAgISRvbXAgdGFyZ2V0IGRlZmF1 bHRtYXAgKHByZXNlbnQ6IGFnZ3JlZ2F0ZSkKKyAgICBkbyBpID0gMSwgTgorICAgICAgYyhp KSA9IGEoaSkgKyBiKGkpCisgICAgZW5kIGRvCisgICEkb21wIGVuZCB0YXJnZXQKKworICAh IFNob3VsZCBnZW5lcmF0ZSBpbXBsaWNpdCAnbWFwKHByZXNlbnQsIGFsbG9jKScgY2xhdXNl cywKKyAgISBhbmQgdGhleSBzaG91bGQgZ28gYmVmb3JlIG90aGVyIG5vbi1wcmVzZW50IGNs YXVzZXMuCisgICEkb21wIHRhcmdldCBtYXAoZnJvbTogYykgZGVmYXVsdG1hcCAocHJlc2Vu dDogYWdncmVnYXRlKQorICAgIGRvIGkgPSAxLCBOCisgICAgICBjKGkpID0gYShpKSArIGIo aSkKKyAgICBlbmQgZG8KKyAgISRvbXAgZW5kIHRhcmdldAorZW5kIHByb2dyYW0KKyAgCish IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicHJhZ21hIG9tcCB0YXJnZXQuKmRlZmF1 bHRtYXBcXChwcmVzZW50OmFnZ3JlZ2F0ZVxcKS4qbWFwXFwocHJlc2VudCxhbGxvYzpjIFxc XFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkgbWFwXFwocHJlc2VudCxh bGxvYzpiIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkgbWFwXFwo cHJlc2VudCxhbGxvYzphIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1c XCkiICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdt YSBvbXAgdGFyZ2V0LiptYXBcXChwcmVzZW50LGFsbG9jOmIgXFxcW2xlbjogXFswLTlcXStc XFxdXFxcW2ltcGxpY2l0XFxcXVxcKSBtYXBcXChwcmVzZW50LGFsbG9jOmEgXFxcW2xlbjog XFswLTlcXStcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSBtYXBcXChmcm9tOmMgXFxcW2xlbjog XFswLTlcXStcXFxdXFwpIGRlZmF1bHRtYXBcXChwcmVzZW50OmFnZ3JlZ2F0ZVxcKSIgImdp bXBsZSIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv bWFwLTkuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL21hcC05LmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2M4NzIxMmY4ZDAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbWFwLTku ZjkwCkBAIC0wLDAgKzEsMzQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLWdpbXBsZSIgfQorCitwcm9ncmFtIG1haW4K KyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogTiA9IDEwMDAKKyAg aW50ZWdlciA6OiBhKE4pLCBiKE4pLCBjKE4pLCBpCisKKyAgISBTaG91bGQgYmUgYWJsZSB0 byBwYXJzZSAncHJlc2VudCcgbWFwIG1vZGlmaWVyLgorICAhJG9tcCB0YXJnZXQgZW50ZXIg ZGF0YSBtYXAgKHByZXNlbnQsIHRvOiBhLCBiKQorCisgICEkb21wIHRhcmdldCBkYXRhIG1h cCAocHJlc2VudCwgdG86IGEsIGIpIG1hcCAoYWx3YXlzLCBwcmVzZW50LCBmcm9tOiBjKQor ICAgICEkb21wIHRhcmdldCBtYXAgKHByZXNlbnQsIHRvOiBhLCBiKSBtYXAgKHByZXNlbnQs IGZyb206IGMpCisgICAgICBkbyBpID0gMSwgTgorCWMoaSkgPSBhKGkpICsgYihpKQorICAg ICAgZW5kIGRvCisgICAgISRvbXAgZW5kIHRhcmdldAorICAhJG9tcCBlbmQgdGFyZ2V0IGRh dGEKKworICAhJG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoYWx3YXlzLCBwcmVzZW50LCBm cm9tOiBjKQorCisgICEgTWFwIGNsYXVzZXMgd2l0aCAncHJlc2VudCcgbW9kaWZpZXIgc2hv dWxkIGdvIGFoZWFkIG9mIHRob3NlIHdpdGhvdXQuCisgICEkb21wIHRhcmdldCBtYXAgKHRv OiBhKSBtYXAgKHByZXNlbnQsIHRvOiBiKSBtYXAgKGZyb206IGMpCisgICAgZG8gaSA9IDEs IE4KKyAgICAgIGMoaSkgPSBhKGkpICsgYihpKQorICAgIGVuZCBkbworICAhJG9tcCBlbmQg dGFyZ2V0CitlbmQgcHJvZ3JhbQorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi cHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXBcXChwcmVzZW50LHRvOmEgXFxcW2xl bjogXFswLTlcXStcXFxdXFwpIG1hcFxcKHByZXNlbnQsdG86YiBcXFxbbGVuOiBcWzAtOVxd K1xcXF1cXCkiICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg InByYWdtYSBvbXAgdGFyZ2V0IGRhdGEgbWFwXFwocHJlc2VudCx0bzphIFxcXFtsZW46IFxb MC05XF0rXFxcXVxcKSBtYXBcXChwcmVzZW50LHRvOmIgXFxcW2xlbjogXFswLTlcXStcXFxd XFwpIG1hcFxcKGFsd2F5cyxwcmVzZW50LGZyb206YyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1c XCkiICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdt YSBvbXAgdGFyZ2V0LiptYXBcXChwcmVzZW50LHRvOmEgXFxcW2xlbjogXFswLTlcXStcXFxd XFwpIG1hcFxcKHByZXNlbnQsdG86YiBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkgbWFwXFwo cHJlc2VudCxmcm9tOmMgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiAiZ2ltcGxlIiB9IH0K KyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJwcmFnbWEgb21wIHRhcmdldCBleGl0 IGRhdGEgbWFwXFwoYWx3YXlzLHByZXNlbnQsZnJvbTpjIFxcXFtsZW46IFxbMC05XF0rXFxc XVxcKSIgImdpbXBsZSIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAicHJh Z21hIG9tcCB0YXJnZXQuKm1hcFxcKHByZXNlbnQsdG86YiBcXFxbbGVuOiBcWzAtOVxdK1xc XF1cXCkgbWFwXFwodG86YSBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkgbWFwXFwoZnJvbTpj IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgImdpbXBsZSIgfSB9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LXVwZGF0ZS0xLmY5MCBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtdXBkYXRlLTEuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMzgyYjg3ZjIyOQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtdXBk YXRlLTEuZjkwCkBAIC0wLDAgKzEsMTMgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLWdpbXBsZSIgfQorCitwcm9ncmFt IG1haW4KKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogTiA9IDEw MDAKKyAgaW50ZWdlciA6OiBhKE4pLCBiKE4pLCBpCisKKyAgISBTaG91bGQgYmUgYWJsZSB0 byBwYXJzZSBwcmVzZW50IGluIHRvL2Zyb20gY2xhdXNlcyBvZiAndGFyZ2V0IHVwZGF0ZScu CisgICEkb21wIHRhcmdldCB1cGRhdGUgdG8ocHJlc2VudDogYSkgZnJvbShwcmVzZW50OiBi KQorZW5kIHByb2dyYW0KKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInByYWdt YSBvbXAgdGFyZ2V0IHVwZGF0ZSB0b1xcKHByZXNlbnQ6YSBcXFxbbGVuOiBcWzAtOVxdK1xc XF1cXCkgZnJvbVxcKHByZXNlbnQ6YiBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiICJnaW1w bGUiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5oIGIvZ2NjL3RyZWUtY29yZS5o CmluZGV4IDgxMjRhMTMyOGQ0Li40NWEwMWE4OTBiNyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUt Y29yZS5oCisrKyBiL2djYy90cmVlLWNvcmUuaApAQCAtNTczLDcgKzU3Myw4IEBAIGVudW0g b21wX2NsYXVzZV9kZWZhdWx0bWFwX2tpbmQgewogICBPTVBfQ0xBVVNFX0RFRkFVTFRNQVBf Tk9ORSA9IDYgKiAoT01QX0NMQVVTRV9ERUZBVUxUTUFQX0NBVEVHT1JZX01BU0sgKyAxKSwK ICAgT01QX0NMQVVTRV9ERUZBVUxUTUFQX0RFRkFVTFQKICAgICA9IDcgKiAoT01QX0NMQVVT RV9ERUZBVUxUTUFQX0NBVEVHT1JZX01BU0sgKyAxKSwKLSAgT01QX0NMQVVTRV9ERUZBVUxU TUFQX01BU0sgPSA3ICogKE9NUF9DTEFVU0VfREVGQVVMVE1BUF9DQVRFR09SWV9NQVNLICsg MSkKKyAgT01QX0NMQVVTRV9ERUZBVUxUTUFQX1BSRVNFTlQgPSA4ICogKE9NUF9DTEFVU0Vf REVGQVVMVE1BUF9DQVRFR09SWV9NQVNLICsgMSksCisgIE9NUF9DTEFVU0VfREVGQVVMVE1B UF9NQVNLID0gMTUgKiAoT01QX0NMQVVTRV9ERUZBVUxUTUFQX0NBVEVHT1JZX01BU0sgKyAx KQogfTsKIAogZW51bSBvbXBfY2xhdXNlX2JpbmRfa2luZCB7CkBAIC01ODIsNiArNTgzLDEx IEBAIGVudW0gb21wX2NsYXVzZV9iaW5kX2tpbmQgewogICBPTVBfQ0xBVVNFX0JJTkRfVEhS RUFECiB9OwogCitlbnVtIG9tcF9jbGF1c2VfbW90aW9uX21vZGlmaWVyIHsKKyAgT01QX0NM QVVTRV9NT1RJT05fTk9ORSwKKyAgT01QX0NMQVVTRV9NT1RJT05fUFJFU0VOVAorfTsKKwog LyogbWVtb3J5LW9yZGVyLWNsYXVzZSBvbiBPcGVuTVAgYXRvbWljL2ZsdXNoIGNvbnN0cnVj dHMgb3IKICAgIGFyZ3VtZW50IG9mIGF0b21pY19kZWZhdWx0X21lbV9vcmRlciBjbGF1c2Uu ICAqLwogZW51bSBvbXBfbWVtb3J5X29yZGVyIHsKQEAgLTE2NDYsNiArMTY1Miw3IEBAIHN0 cnVjdCBHVFkoKCkpIHRyZWVfb21wX2NsYXVzZSB7CiAgICAgZW51bSBvbXBfY2xhdXNlX2Rl ZmF1bHRtYXBfa2luZCBkZWZhdWx0bWFwX2tpbmQ7CiAgICAgZW51bSBvbXBfY2xhdXNlX2Jp bmRfa2luZCAgICAgIGJpbmRfa2luZDsKICAgICBlbnVtIG9tcF9jbGF1c2VfZGV2aWNlX3R5 cGVfa2luZCBkZXZpY2VfdHlwZV9raW5kOworICAgIGVudW0gb21wX2NsYXVzZV9tb3Rpb25f bW9kaWZpZXIgbW90aW9uX21vZGlmaWVyOwogICB9IEdUWSAoKHNraXApKSBzdWJjb2RlOwog CiAgIC8qIFRoZSBnaW1wbGlmaWNhdGlvbiBvZiBPTVBfQ0xBVVNFX1JFRFVDVElPTl97SU5J VCxNRVJHRX0gZm9yIG9tcC1sb3cncwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtcHJldHR5LXBy aW50LmNjIGIvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjCmluZGV4IDc5NDdmOTY0N2ExLi45 OWY4YWNjM2FjYyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjCisrKyBi L2djYy90cmVlLXByZXR0eS1wcmludC5jYwpAQCAtOTkxLDYgKzk5MSwyNyBAQCBkdW1wX29t cF9jbGF1c2UgKHByZXR0eV9wcmludGVyICpwcCwgdHJlZSBjbGF1c2UsIGludCBzcGMsIGR1 bXBfZmxhZ3NfdCBmbGFncykKIAljYXNlIEdPTVBfTUFQX0FUVEFDSF9aRVJPX0xFTkdUSF9B UlJBWV9TRUNUSU9OOgogCSAgcHBfc3RyaW5nIChwcCwgImF0dGFjaF96ZXJvX2xlbmd0aF9h cnJheV9zZWN0aW9uIik7CiAJICBicmVhazsKKwljYXNlIEdPTVBfTUFQX1BSRVNFTlRfQUxM T0M6CisJICBwcF9zdHJpbmcgKHBwLCAicHJlc2VudCxhbGxvYyIpOworCSAgYnJlYWs7CisJ Y2FzZSBHT01QX01BUF9QUkVTRU5UX1RPOgorCSAgcHBfc3RyaW5nIChwcCwgInByZXNlbnQs dG8iKTsKKwkgIGJyZWFrOworCWNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAgcHBf c3RyaW5nIChwcCwgInByZXNlbnQsZnJvbSIpOworCSAgYnJlYWs7CisJY2FzZSBHT01QX01B UF9QUkVTRU5UX1RPRlJPTToKKwkgIHBwX3N0cmluZyAocHAsICJwcmVzZW50LHRvZnJvbSIp OworCSAgYnJlYWs7CisJY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UTzoKKwkgIHBw X3N0cmluZyAocHAsICJhbHdheXMscHJlc2VudCx0byIpOworCSAgYnJlYWs7CisJY2FzZSBH T01QX01BUF9BTFdBWVNfUFJFU0VOVF9GUk9NOgorCSAgcHBfc3RyaW5nIChwcCwgImFsd2F5 cyxwcmVzZW50LGZyb20iKTsKKwkgIGJyZWFrOworCWNhc2UgR09NUF9NQVBfQUxXQVlTX1BS RVNFTlRfVE9GUk9NOgorCSAgcHBfc3RyaW5nIChwcCwgImFsd2F5cyxwcmVzZW50LHRvZnJv bSIpOworCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGdjY191bnJlYWNoYWJsZSAoKTsKIAl9 CkBAIC0xMDM4LDEyICsxMDU5LDE2IEBAIGR1bXBfb21wX2NsYXVzZSAocHJldHR5X3ByaW50 ZXIgKnBwLCB0cmVlIGNsYXVzZSwgaW50IHNwYywgZHVtcF9mbGFnc190IGZsYWdzKQogCiAg ICAgY2FzZSBPTVBfQ0xBVVNFX0ZST006CiAgICAgICBwcF9zdHJpbmcgKHBwLCAiZnJvbSgi KTsKKyAgICAgIGlmIChPTVBfQ0xBVVNFX01PVElPTl9NT0RJRklFUiAoY2xhdXNlKSA9PSBP TVBfQ0xBVVNFX01PVElPTl9QUkVTRU5UKQorCXBwX3N0cmluZyAocHAsICJwcmVzZW50OiIp OwogICAgICAgZHVtcF9nZW5lcmljX25vZGUgKHBwLCBPTVBfQ0xBVVNFX0RFQ0wgKGNsYXVz ZSksCiAJCQkgc3BjLCBmbGFncywgZmFsc2UpOwogICAgICAgZ290byBwcmludF9jbGF1c2Vf c2l6ZTsKIAogICAgIGNhc2UgT01QX0NMQVVTRV9UTzoKICAgICAgIHBwX3N0cmluZyAocHAs ICJ0bygiKTsKKyAgICAgIGlmIChPTVBfQ0xBVVNFX01PVElPTl9NT0RJRklFUiAoY2xhdXNl KSA9PSBPTVBfQ0xBVVNFX01PVElPTl9QUkVTRU5UKQorCXBwX3N0cmluZyAocHAsICJwcmVz ZW50OiIpOwogICAgICAgZHVtcF9nZW5lcmljX25vZGUgKHBwLCBPTVBfQ0xBVVNFX0RFQ0wg KGNsYXVzZSksCiAJCQkgc3BjLCBmbGFncywgZmFsc2UpOwogICAgICAgZ290byBwcmludF9j bGF1c2Vfc2l6ZTsKQEAgLTEyMTAsNiArMTIzNSw5IEBAIGR1bXBfb21wX2NsYXVzZSAocHJl dHR5X3ByaW50ZXIgKnBwLCB0cmVlIGNsYXVzZSwgaW50IHNwYywgZHVtcF9mbGFnc190IGZs YWdzKQogCWNhc2UgT01QX0NMQVVTRV9ERUZBVUxUTUFQX05PTkU6CiAJICBwcF9zdHJpbmcg KHBwLCAibm9uZSIpOwogCSAgYnJlYWs7CisJY2FzZSBPTVBfQ0xBVVNFX0RFRkFVTFRNQVBf UFJFU0VOVDoKKwkgIHBwX3N0cmluZyAocHAsICJwcmVzZW50Iik7CisJICBicmVhazsKIAlj YXNlIE9NUF9DTEFVU0VfREVGQVVMVE1BUF9ERUZBVUxUOgogCSAgcHBfc3RyaW5nIChwcCwg ImRlZmF1bHQiKTsKIAkgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90 cmVlLmgKaW5kZXggZTczMGEyYTNlNTYuLmYyNTZjYjQxNzMzIDEwMDY0NAotLS0gYS9nY2Mv dHJlZS5oCisrKyBiL2djYy90cmVlLmgKQEAgLTE3NDIsNiArMTc0MiwxMiBAQCBjbGFzcyBh dXRvX3N1cHByZXNzX2xvY2F0aW9uX3dyYXBwZXJzCiAgIChPTVBfQ0xBVVNFX1NVQkNPREVf Q0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfTUFQKS0+b21wX2NsYXVzZS5zdWJjb2RlLm1hcF9r aW5kIFwKICAgID0gKHVuc2lnbmVkIGludCkgKE1BUF9LSU5EKSkKIAorI2RlZmluZSBPTVBf Q0xBVVNFX01PVElPTl9NT0RJRklFUihOT0RFKSBcCisgICgoZW51bSBvbXBfY2xhdXNlX21v dGlvbl9tb2RpZmllcikgT01QX0NMQVVTRV9SQU5HRV9DSEVDSyAoTk9ERSwgT01QX0NMQVVT RV9GUk9NLCBPTVBfQ0xBVVNFX1RPKS0+b21wX2NsYXVzZS5zdWJjb2RlLm1vdGlvbl9tb2Rp ZmllcikKKyNkZWZpbmUgT01QX0NMQVVTRV9TRVRfTU9USU9OX01PRElGSUVSKE5PREUsIE1P VElPTl9NT0RJRklFUikgXAorICAoT01QX0NMQVVTRV9SQU5HRV9DSEVDSyAoTk9ERSwgT01Q X0NMQVVTRV9GUk9NLCBPTVBfQ0xBVVNFX1RPKS0+b21wX2NsYXVzZS5zdWJjb2RlLm1vdGlv bl9tb2RpZmllciBcCisgICA9IChNT1RJT05fTU9ESUZJRVIpKQorCiAvKiBOb256ZXJvIGlm IHRoaXMgbWFwIGNsYXVzZSBpcyBmb3IgYXJyYXkgKHJhdGhlciB0aGFuIHBvaW50ZXIpIGJh c2VkIGFycmF5CiAgICBzZWN0aW9uIHdpdGggemVybyBiaWFzLiAgQm90aCB0aGUgbm9uLWRl Y2wgT01QX0NMQVVTRV9NQVAgYW5kIGNvcnJlc3BvbmRpbmcKICAgIE9NUF9DTEFVU0VfTUFQ IHdpdGggR09NUF9NQVBfUE9JTlRFUiBhcmUgbWFya2VkIHdpdGggdGhpcyBmbGFnLiAgKi8K ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaCBiL2luY2x1ZGUvZ29tcC1j b25zdGFudHMuaAppbmRleCAzZjcyYTE1ZWY1NS4uNDRjYjBiYmI5OTQgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaAorKysgYi9pbmNsdWRlL2dvbXAtY29uc3RhbnRz LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgR09NUF9NQVBfRkxBR19TUEVDSUFMXzIJ CSgxIDw8IDQpCiAjZGVmaW5lIEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8zCQkoMSA8PCA1KQog I2RlZmluZSBHT01QX01BUF9GTEFHX1NQRUNJQUxfNAkJKDEgPDwgNikKKyNkZWZpbmUgR09N UF9NQVBfRkxBR19TUEVDSUFMXzUJCSgxIDw8IDcpCiAjZGVmaW5lIEdPTVBfTUFQX0ZMQUdf U1BFQ0lBTAkJKEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8xIFwKIAkJCQkJIHwgR09NUF9NQVBf RkxBR19TUEVDSUFMXzApCiAjZGVmaW5lIEdPTVBfTUFQX0RFRVBfQ09QWQkJKEdPTVBfTUFQ X0ZMQUdfU1BFQ0lBTF80IFwKQEAgLTU1LDkgKzU2LDE0IEBACiAJCQkJCSB8IEdPTVBfTUFQ X0ZMQUdfU1BFQ0lBTF8xIFwKIAkJCQkJIHwgR09NUF9NQVBfRkxBR19TUEVDSUFMXzIgXAog CQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxfMyBcCi0JCQkJCSB8IEdPTVBfTUFQX0ZM QUdfU1BFQ0lBTF80KQorCQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxfNCBcCisJCQkJ CSB8IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF81KQogLyogRmxhZyB0byBmb3JjZSBhIHNwZWNp ZmljIGJlaGF2aW9yIChvciBlbHNlLCB0cmlnZ2VyIGEgcnVuLXRpbWUgZXJyb3IpLiAgKi8K LSNkZWZpbmUgR09NUF9NQVBfRkxBR19GT1JDRQkJKDEgPDwgNykKKyNkZWZpbmUgR09NUF9N QVBfRkxBR19GT1JDRQkJKEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF81KQorI2RlZmluZSBHT01Q X01BUF9GTEFHX1BSRVNFTlQJCShHT01QX01BUF9GTEFHX1NQRUNJQUxfNSBcCisJCQkJCSB8 IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8wKQorI2RlZmluZSBHT01QX01BUF9GTEFHX0FMV0FZ U19QUkVTRU5UCShHT01QX01BUF9GTEFHX1NQRUNJQUxfMiBcCisJCQkJCSB8IEdPTVBfTUFQ X0ZMQUdfUFJFU0VOVCkKIAogZW51bSBnb21wX21hcF9raW5kCiAgIHsKQEAgLTEzMCw2ICsx MzYsMjMgQEAgZW51bSBnb21wX21hcF9raW5kCiAgICAgICAgZGV2aWNlLiAgKi8KICAgICBH T01QX01BUF9BTFdBWVNfVE9GUk9NID0JCShHT01QX01BUF9GTEFHX1NQRUNJQUxfMgogCQkJ CQkgfCBHT01QX01BUF9UT0ZST00pLAorICAgIC8qIE11c3QgYWxyZWFkeSBiZSBwcmVzZW50 LiAgKi8KKyAgICBHT01QX01BUF9QUkVTRU5UX0FMTE9DID0JCShHT01QX01BUF9GTEFHX1BS RVNFTlQgfCBHT01QX01BUF9BTExPQyksCisgICAgLyogTXVzdCBhbHJlYWR5IGJlIHByZXNl bnQsIGNvcHkgdG8gZGV2aWNlLiAgKi8KKyAgICBHT01QX01BUF9QUkVTRU5UX1RPID0JCShH T01QX01BUF9GTEFHX1BSRVNFTlQgfCBHT01QX01BUF9UTyksCisgICAgLyogTXVzdCBhbHJl YWR5IGJlIHByZXNlbnQsIGNvcHkgZnJvbSBkZXZpY2UuICAqLworICAgIEdPTVBfTUFQX1BS RVNFTlRfRlJPTSA9CQkoR09NUF9NQVBfRkxBR19QUkVTRU5UIHwgR09NUF9NQVBfRlJPTSks CisgICAgLyogTXVzdCBhbHJlYWR5IGJlIHByZXNlbnQsIGNvcHkgdG8gYW5kIGZyb20gZGV2 aWNlLiAgKi8KKyAgICBHT01QX01BUF9QUkVTRU5UX1RPRlJPTSA9CQkoR09NUF9NQVBfRkxB R19QUkVTRU5UIHwgR09NUF9NQVBfVE9GUk9NKSwKKyAgICAvKiBNdXN0IGFscmVhZHkgYmUg cHJlc2VudCwgdW5jb25kaXRpb25hbGx5IGNvcHkgdG8gZGV2aWNlLiAgKi8KKyAgICBHT01Q X01BUF9BTFdBWVNfUFJFU0VOVF9UTyA9CShHT01QX01BUF9GTEFHX0FMV0FZU19QUkVTRU5U CisJCQkJCSB8IEdPTVBfTUFQX1RPKSwKKyAgICAvKiBNdXN0IGFscmVhZHkgYmUgcHJlc2Vu dCwgdW5jb25kaXRpb25hbGx5IGNvcHkgZnJvbSBkZXZpY2UuICAqLworICAgIEdPTVBfTUFQ X0FMV0FZU19QUkVTRU5UX0ZST00gPQkoR09NUF9NQVBfRkxBR19BTFdBWVNfUFJFU0VOVAor CQkJCQkgfCBHT01QX01BUF9GUk9NKSwKKyAgICAvKiBNdXN0IGFscmVhZHkgYmUgcHJlc2Vu dCwgdW5jb25kaXRpb25hbGx5IGNvcHkgdG8gYW5kIGZyb20gZGV2aWNlLiAgKi8KKyAgICBH T01QX01BUF9BTFdBWVNfUFJFU0VOVF9UT0ZST00gPQkoR09NUF9NQVBfRkxBR19BTFdBWVNf UFJFU0VOVAorCQkJCQkgfCBHT01QX01BUF9UT0ZST00pLAogICAgIC8qIE1hcCBhIHNwYXJz ZSBzdHJ1Y3Q7IHRoZSBhZGRyZXNzIGlzIHRoZSBiYXNlIG9mIHRoZSBzdHJ1Y3R1cmUsIGFs aWdubWVudAogICAgICAgIGl0J3MgcmVxdWlyZWQgYWxpZ25tZW50LCBhbmQgc2l6ZSBpcyB0 aGUgbnVtYmVyIG9mIGFkamFjZW50IGVudHJpZXMKICAgICAgICB0aGF0IGJlbG9uZyB0byB0 aGUgc3RydWN0LiAgVGhlIGFkamFjZW50IGVudHJpZXMgc2hvdWxkIGJlIHNvcnRlZCBieQpA QCAtMTg2LDExICsyMDksMTEgQEAgZW51bSBnb21wX21hcF9raW5kCiAgIH07CiAKICNkZWZp bmUgR09NUF9NQVBfQ09QWV9UT19QKFgpIFwKLSAgKCEoKFgpICYgR09NUF9NQVBfRkxBR19T UEVDSUFMKSBcCisgICgoISgoWCkgJiBHT01QX01BUF9GTEFHX1NQRUNJQUwpIHx8IEdPTVBf TUFQX1BSRVNFTlRfUCAoWCkpIFwKICAgICYmICgoWCkgJiBHT01QX01BUF9GTEFHX1RPKSkK IAogI2RlZmluZSBHT01QX01BUF9DT1BZX0ZST01fUChYKSBcCi0gICghKChYKSAmIEdPTVBf TUFQX0ZMQUdfU1BFQ0lBTCkgXAorICAoKCEoKFgpICYgR09NUF9NQVBfRkxBR19TUEVDSUFM KSB8fCBHT01QX01BUF9QUkVTRU5UX1AgKFgpKSBcCiAgICAmJiAoKFgpICYgR09NUF9NQVBf RkxBR19GUk9NKSkKIAogI2RlZmluZSBHT01QX01BUF9BTFdBWVNfUE9JTlRFUl9QKFgpIFwK QEAgLTIwMSwxNyArMjI0LDI3IEBAIGVudW0gZ29tcF9tYXBfa2luZAogICAgfHwgKFgpID09 IEdPTVBfTUFQX1BPSU5URVJfVE9fWkVST19MRU5HVEhfQVJSQVlfU0VDVElPTikKIAogI2Rl ZmluZSBHT01QX01BUF9BTFdBWVNfVE9fUChYKSBcCi0gICgoKFgpID09IEdPTVBfTUFQX0FM V0FZU19UTykgfHwgKChYKSA9PSBHT01QX01BUF9BTFdBWVNfVE9GUk9NKSkKKyAgKCgoWCkg PT0gR09NUF9NQVBfQUxXQVlTX1RPKSB8fCAoKFgpID09IEdPTVBfTUFQX0FMV0FZU19UT0ZS T00pIFwKKyAgIHx8ICgoWCkgPT0gR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfVE8pIFwKKyAg IHx8ICgoWCkgPT0gR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfVE9GUk9NKSkKIAogI2RlZmlu ZSBHT01QX01BUF9BTFdBWVNfRlJPTV9QKFgpIFwKLSAgKCgoWCkgPT0gR09NUF9NQVBfQUxX QVlTX0ZST00pIHx8ICgoWCkgPT0gR09NUF9NQVBfQUxXQVlTX1RPRlJPTSkpCisgICgoKFgp ID09IEdPTVBfTUFQX0FMV0FZU19GUk9NKSB8fCAoKFgpID09IEdPTVBfTUFQX0FMV0FZU19U T0ZST00pIFwKKyAgIHx8ICgoWCkgPT0gR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTSkg XAorICAgfHwgKChYKSA9PSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UT0ZST00pKQogCiAj ZGVmaW5lIEdPTVBfTUFQX0FMV0FZU19QKFgpIFwKLSAgKEdPTVBfTUFQX0FMV0FZU19UT19Q IChYKSB8fCAoKFgpID09IEdPTVBfTUFQX0FMV0FZU19GUk9NKSkKKyAgKEdPTVBfTUFQX0FM V0FZU19UT19QIChYKSB8fCBHT01QX01BUF9BTFdBWVNfRlJPTV9QIChYKSkKIAogI2RlZmlu ZSBHT01QX01BUF9JTVBMSUNJVF9QKFgpIFwKICAgKCgoWCkgJiBHT01QX01BUF9GTEFHX1NQ RUNJQUxfQklUUykgPT0gR09NUF9NQVBfSU1QTElDSVQpCiAKKyNkZWZpbmUgR09NUF9NQVBf Rk9SQ0VfUChYKSBcCisgICgoKFgpICYgR09NUF9NQVBfRkxBR19TUEVDSUFMX0JJVFMpID09 IEdPTVBfTUFQX0ZMQUdfRk9SQ0UpCisKKyNkZWZpbmUgR09NUF9NQVBfUFJFU0VOVF9QKFgp IFwKKyAgKCgoWCkgJiBHT01QX01BUF9GTEFHX1BSRVNFTlQpID09IEdPTVBfTUFQX0ZMQUdf UFJFU0VOVCkKKwogCiAvKiBBc3luY2hyb25vdXMgYmVoYXZpb3IuICBLZWVwIGluIHN5bmMg d2l0aAogICAgbGliZ29tcC97b3BlbmFjYy5oLG9wZW5hY2MuZjkwLG9wZW5hY2NfbGliLmh9 OmFjY19hc3luY190LiAgKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJn b21wL3RhcmdldC5jCmluZGV4IGIxNmVlNzYxYTk1Li4zYWY2NDAyY2M4MyAxMDA2NDQKLS0t IGEvbGliZ29tcC90YXJnZXQuYworKysgYi9saWJnb21wL3RhcmdldC5jCkBAIC0zNjAsNiAr MzYwLDggQEAgZ29tcF90b19kZXZpY2Vfa2luZF9wIChpbnQga2luZCkKICAgICBjYXNlIEdP TVBfTUFQX0ZPUkNFX0FMTE9DOgogICAgIGNhc2UgR09NUF9NQVBfRk9SQ0VfRlJPTToKICAg ICBjYXNlIEdPTVBfTUFQX0FMV0FZU19GUk9NOgorICAgIGNhc2UgR09NUF9NQVBfUFJFU0VO VF9GUk9NOgorICAgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKICAgICAg IHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIHRydWU7CkBAIC01 OTIsNyArNTk0LDcgQEAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoc3RydWN0IGdvbXBfZGV2 aWNlX2Rlc2NyICpkZXZpY2VwLAogICBlbHNlCiAgICAgdGd0X3Zhci0+bGVuZ3RoID0gbmV3 bi0+aG9zdF9lbmQgLSBuZXduLT5ob3N0X3N0YXJ0OwogCi0gIGlmICgoa2luZCAmIEdPTVBf TUFQX0ZMQUdfRk9SQ0UpCisgIGlmIChHT01QX01BUF9GT1JDRV9QIChraW5kKQogICAgICAg LyogRm9yIGltcGxpY2l0IG1hcHMsIG9sZCBjb250YWluZWQgaW4gbmV3IGlzIHZhbGlkLiAg Ki8KICAgICAgIHx8ICEoaW1wbGljaXRfc3Vic2V0CiAJICAgLyogT3RoZXJ3aXNlLCBuZXcg Y29udGFpbmVkIGluc2lkZSBvbGQgaXMgY29uc2lkZXJlZCB2YWxpZC4gICovCkBAIC0xNzA3 LDYgKzE3MDksMjAgQEAgZ29tcF9tYXBfdmFyc19pbnRlcm5hbCAoc3RydWN0IGdvbXBfZGV2 aWNlX2Rlc2NyICpkZXZpY2VwLAogI2VuZGlmCiAJCSAgICB9CiAJCSAgICBicmVhazsKKwkJ ICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfQUxMT0M6CisJCSAgY2FzZSBHT01QX01BUF9QUkVT RU5UX1RPOgorCQkgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCQkgIGNhc2UgR09N UF9NQVBfUFJFU0VOVF9UT0ZST006CisJCSAgY2FzZSBHT01QX01BUF9BTFdBWVNfUFJFU0VO VF9UTzoKKwkJICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX0ZST006CisJCSAgY2Fz ZSBHT01QX01BUF9BTFdBWVNfUFJFU0VOVF9UT0ZST006CisJCSAgICAvKiBXZSBhbHJlYWR5 IGxvb2tlZCB1cCB0aGUgbWVtb3J5IHJlZ2lvbiBhYm92ZSBhbmQgaXQKKwkJICAgICAgIHdh cyBtaXNzaW5nLiAgKi8KKwkJICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZGV2aWNlcC0+bG9j ayk7CisJCSAgICBnb21wX2ZhdGFsICgicHJlc2VudCBjbGF1c2U6ICFvbXBfdGFyZ2V0X2lz X3ByZXNlbnQgIgorCQkJCSIoJXAsICVkKSIsCisJCQkJKHZvaWQgKikgay0+aG9zdF9zdGFy dCwgZGV2aWNlcC0+dGFyZ2V0X2lkKTsKKwkJICAgIGJyZWFrOwogCQkgIGNhc2UgR09NUF9N QVBfRk9SQ0VfREVWSUNFUFRSOgogCQkgICAgYXNzZXJ0IChrLT5ob3N0X2VuZCAtIGstPmhv c3Rfc3RhcnQgPT0gc2l6ZW9mICh2b2lkICopKTsKIAkJICAgIGdvbXBfY29weV9ob3N0MmRl diAoZGV2aWNlcCwgYXEsCkBAIC0yMTE2LDYgKzIxMzIsMjAgQEAgZ29tcF91cGRhdGUgKHN0 cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwgc2l6ZV90IG1hcG51bSwgdm9pZCAq Kmhvc3RhZGRycywKIAkJICBnb21wX2NvcHlfZGV2Mmhvc3QgKGRldmljZXAsIE5VTEwsIGhv c3RhZGRyLCBkZXZhZGRyLCBzaXplKTsKIAkgICAgICB9CiAJICB9CisJZWxzZQorCSAgewor CSAgICBpbnQga2luZCA9IGdldF9raW5kIChzaG9ydF9tYXBraW5kLCBraW5kcywgaSk7CisK KwkgICAgaWYgKEdPTVBfTUFQX1BSRVNFTlRfUCAoa2luZCkpCisJICAgICAgeworCQkvKiBX ZSBhbHJlYWR5IGxvb2tlZCB1cCB0aGUgbWVtb3J5IHJlZ2lvbiBhYm92ZSBhbmQgaXQKKwkJ ICAgd2FzIG1pc3NpbmcuICAqLworCQlnb21wX211dGV4X3VubG9jayAoJmRldmljZXAtPmxv Y2spOworCQlnb21wX2ZhdGFsICgicHJlc2VudCBjbGF1c2U6ICFvbXBfdGFyZ2V0X2lzX3By ZXNlbnQgIgorCQkJICAgICIoJXAsICVkKSIsCisJCQkgICAgKHZvaWQgKikgaG9zdGFkZHJz W2ldLCBkZXZpY2VwLT50YXJnZXRfaWQpOworCSAgICAgIH0KKwkgIH0KICAgICAgIH0KICAg Z29tcF9tdXRleF91bmxvY2sgKCZkZXZpY2VwLT5sb2NrKTsKIH0KQEAgLTM0MjQsNyArMzQ1 NCw4IEBAIGdvbXBfdGFyZ2V0X3JldiAodWludDY0X3QgZm5fcHRyLCB1aW50NjRfdCBtYXBu dW0sIHVpbnQ2NF90IGRldmFkZHJzX3B0ciwKIAkgICAgICBjYXNlIEdPTVBfTUFQX0RFTEVU RToKIAkgICAgICBjYXNlIEdPTVBfTUFQX1JFTEVBU0U6CiAJICAgICAgY2FzZSBHT01QX01B UF9ERUxFVEVfWkVST19MRU5fQVJSQVlfU0VDVElPTjoKLQkJLyogQXNzdW1lIGl0IGlzIHBy ZXNlbnQ7IGxvb2sgaXQgdXAgLSBidXQgaWdub3JlIG90aGVyd2lzZS4gKi8KKwkJLyogQXNz dW1lIGl0IGlzIHByZXNlbnQ7IGxvb2sgaXQgdXAgLSBidXQgaWdub3JlIHVubGVzcyB0aGUK KwkJICAgcHJlc2VudCBjbGF1c2UgaXMgdGhlcmUuICovCiAJICAgICAgY2FzZSBHT01QX01B UF9BTExPQzoKIAkgICAgICBjYXNlIEdPTVBfTUFQX0ZST006CiAJICAgICAgY2FzZSBHT01Q X01BUF9GT1JDRV9BTExPQzoKQEAgLTM0MzYsNiArMzQ2NywxMiBAQCBnb21wX3RhcmdldF9y ZXYgKHVpbnQ2NF90IGZuX3B0ciwgdWludDY0X3QgbWFwbnVtLCB1aW50NjRfdCBkZXZhZGRy c19wdHIsCiAJICAgICAgY2FzZSBHT01QX01BUF9GT1JDRV9UT0ZST006CiAJICAgICAgY2Fz ZSBHT01QX01BUF9BTFdBWVNfVE86CiAJICAgICAgY2FzZSBHT01QX01BUF9BTFdBWVNfVE9G Uk9NOgorCSAgICAgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAgICAgIGNhc2Ug R09NUF9NQVBfUFJFU0VOVF9UTzoKKwkgICAgICBjYXNlIEdPTVBfTUFQX1BSRVNFTlRfVE9G Uk9NOgorCSAgICAgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BSRVNFTlRfRlJPTToKKwkgICAg ICBjYXNlIEdPTVBfTUFQX0FMV0FZU19QUkVTRU5UX1RPOgorCSAgICAgIGNhc2UgR09NUF9N QVBfQUxXQVlTX1BSRVNFTlRfVE9GUk9NOgogCSAgICAgIGNhc2UgR09NUF9NQVBfWkVST19M RU5fQVJSQVlfU0VDVElPTjoKIAkJY2RhdGFbaV0uZGV2YWRkciA9IGRldmFkZHJzW2ldOwog CQlib29sIHplcm9fbGVuID0gKGtpbmQgPT0gR09NUF9NQVBfREVMRVRFX1pFUk9fTEVOX0FS UkFZX1NFQ1RJT04KQEAgLTM0NTYsNyArMzQ5MywyMyBAQCBnb21wX3RhcmdldF9yZXYgKHVp bnQ2NF90IGZuX3B0ciwgdWludDY0X3QgbWFwbnVtLCB1aW50NjRfdCBkZXZhZGRyc19wdHIs CiAJCQkJCSAgICAgIGRldmFkZHJzW2ldICsgc2l6ZXNbaV0sIHplcm9fbGVuKTsKIAkJICAg IGNkYXRhW2ldLnByZXNlbnQgPSBuMiAhPSBOVUxMOwogCQkgIH0KLQkJaWYgKCFjZGF0YVtp XS5wcmVzZW50CisJCWlmICghY2RhdGFbaV0ucHJlc2VudCAmJiBHT01QX01BUF9QUkVTRU5U X1AgKGtpbmQpKQorCQkgIHsKKwkJICAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZGV2aWNlcC0+ bG9jayk7CisjaWZkZWYgSEFWRV9JTlRUWVBFU19ICisJCSAgICBnb21wX2ZhdGFsICgicHJl c2VudCBjbGF1c2U6IG5vIGNvcnJlc3BvbmRpbmcgZGF0YSBvbiAiCisJCQkJInBhcmVudCBk ZXZpY2UgYXQgJXAgd2l0aCBzaXplICUiUFJJdTY0LAorCQkJCSh2b2lkICopIGRldmFkZHJz W2ldLAorCQkJCSh1aW50NjRfdCkgc2l6ZXNbaV0pOworI2Vsc2UKKwkJICAgIGdvbXBfZmF0 YWwgKCJwcmVzZW50IGNsYXVzZTogbm8gY29ycmVzcG9uZGluZyBkYXRhIG9uICIKKwkJCQki cGFyZW50IGRldmljZSBhdCAlcCB3aXRoIHNpemUgJWx1IiwKKwkJCQkodm9pZCAqKSBkZXZh ZGRyc1tpXSwKKwkJCQkodW5zaWduZWQgbG9uZykgc2l6ZXNbaV0pOworI2VuZGlmCisJCSAg ICBicmVhazsKKwkJICB9CisJCWVsc2UgaWYgKCFjZGF0YVtpXS5wcmVzZW50CiAJCSAgICAm JiBraW5kICE9IEdPTVBfTUFQX0RFTEVURQogCQkgICAgJiYga2luZCAhPSBHT01QX01BUF9S RUxFQVNFCiAJCSAgICAmJiBraW5kICE9IEdPTVBfTUFQX0RFTEVURV9aRVJPX0xFTl9BUlJB WV9TRUNUSU9OKQpAQCAtMzQ3NCw4ICszNTI3LDcgQEAgZ29tcF90YXJnZXRfcmV2ICh1aW50 NjRfdCBmbl9wdHIsIHVpbnQ2NF90IG1hcG51bSwgdWludDY0X3QgZGV2YWRkcnNfcHRyLAog CQkgICAgICYmIChraW5kID09IEdPTVBfTUFQX1RPIHx8IGtpbmQgPT0gR09NUF9NQVBfVE9G Uk9NKSkKIAkJICAgIHx8IGtpbmQgPT0gR09NUF9NQVBfRk9SQ0VfVE8KIAkJICAgIHx8IGtp bmQgPT0gR09NUF9NQVBfRk9SQ0VfVE9GUk9NCi0JCSAgICB8fCBraW5kID09IEdPTVBfTUFQ X0FMV0FZU19UTwotCQkgICAgfHwga2luZCA9PSBHT01QX01BUF9BTFdBWVNfVE9GUk9NKQor CQkgICAgfHwgR09NUF9NQVBfQUxXQVlTX1RPX1AgKGtpbmQpKQogCQkgIHsKIAkJICAgIGlm IChkZXZfdG9faG9zdF9jcHkpCiAJCSAgICAgIGRldl90b19ob3N0X2NweSAoKHZvaWQgKikg KHVpbnRwdHJfdCkgZGV2YWRkcnNbaV0sCkBAIC0zNjU0LDYgKzM3MDYsMTAgQEAgZ29tcF90 YXJnZXRfcmV2ICh1aW50NjRfdCBmbl9wdHIsIHVpbnQ2NF90IG1hcG51bSwgdWludDY0X3Qg ZGV2YWRkcnNfcHRyLAogCSAgICAgIGNhc2UgR09NUF9NQVBfRk9SQ0VfVE9GUk9NOgogCSAg ICAgIGNhc2UgR09NUF9NQVBfQUxXQVlTX0ZST006CiAJICAgICAgY2FzZSBHT01QX01BUF9B TFdBWVNfVE9GUk9NOgorCSAgICAgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9GUk9NOgorCSAg ICAgIGNhc2UgR09NUF9NQVBfUFJFU0VOVF9UT0ZST006CisJICAgICAgY2FzZSBHT01QX01B UF9BTFdBWVNfUFJFU0VOVF9GUk9NOgorCSAgICAgIGNhc2UgR09NUF9NQVBfQUxXQVlTX1BS RVNFTlRfVE9GUk9NOgogCQljb3B5ID0gdHJ1ZTsKIAkJLyogRkFMTFRIUlUgKi8KIAkgICAg ICBjYXNlIEdPTVBfTUFQX0ZST006CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2VudC0xLmMgYi9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2VudC0xLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJiYzQ1NTliMTJlCi0tLSAvZGV2L251 bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFyZ2V0 LXByZXNlbnQtMS5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0 IG9mZmxvYWRfdGFyZ2V0X2FueSB9IH0gKi8KKy8qIHsgZGctc2hvdWxkZmFpbCAicHJlc2Vu dCBlcnJvciB0cmlnZ2VyZWQiIH0gKi8KKworI2RlZmluZSBOIDEwMAorCitpbnQgbWFpbiAo dm9pZCkKK3sKKyAgaW50IGFbTl0sIGJbTl0sIGNbTl07CisKKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBOOyBpKyspIHsKKyAgICBhW2ldID0gaSAqIDI7CisgICAgYltpXSA9IGkgKiAzICsg MTsKKyAgfQorCisgICNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcCAoYWxsb2M6 IGEsIGMpCisgICAgLyogYSBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgc28gdGhpcyBz aG91bGQgYmUgb2theS4gICovCisgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IG1hcCAocHJlc2Vu dCwgdG86IGEpCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKwljW2ldID0g YVtpXTsKKworICAgIC8qIGIgaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCwgc28gdGhpcyBzaG91 bGQgcmVzdWx0IGluIGFuIGVycm9yLiAgKi8KKyAgICAvKiB7IGRnLW91dHB1dCAibGliZ29t cDogcHJlc2VudCBjbGF1c2U6ICFvbXBfdGFyZ2V0X2lzX3ByZXNlbnQgXFxcKDB4XFswLTlh LWZcXSssIFxbMC05XF0rXFxcKSIgfSAqLworICAgICNwcmFnbWEgb21wIHRhcmdldCBtYXAg KHByZXNlbnQsIHRvOiBiKQorICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspCisJ Y1tpXSArPSBiW2ldOworICAjcHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZnJv bTogYykKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKyst Y29tbW9uL3RhcmdldC1wcmVzZW50LTIuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL3RhcmdldC1wcmVzZW50LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNjI1OWM5NTljMDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtcHJlc2VudC0yLmMK QEAgLTAsMCArMSwyNyBAQAorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgb2ZmbG9hZF90YXJn ZXRfYW55IH0gfSAqLworLyogeyBkZy1zaG91bGRmYWlsICJwcmVzZW50IGVycm9yIHRyaWdn ZXJlZCIgfSAqLworCisjZGVmaW5lIE4gMTAwCisKK2ludCBtYWluICh2b2lkKQoreworICBp bnQgYVtOXSwgYltOXSwgY1tOXTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykg eworICAgIGFbaV0gPSBpICogMjsKKyAgICBiW2ldID0gaSAqIDMgKyAxOworICB9CisKKyAg I3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRhdGEgbWFwIChhbGxvYzogYSwgYykKKyAgICAv KiBhIGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLCBzbyB0aGlzIHNob3VsZCBiZSBva2F5 LiAgKi8KKyAgICAjcHJhZ21hIG9tcCB0YXJnZXQgZGVmYXVsdG1hcCAocHJlc2VudCkKKyAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQorCWNbaV0gPSBhW2ldOworCisgICAg LyogYiBoYXMgbm90IGJlZW4gYWxsb2NhdGVkLCBzbyB0aGlzIHNob3VsZCByZXN1bHQgaW4g YW4gZXJyb3IuICAqLworICAgIC8qIHsgZGctb3V0cHV0ICJsaWJnb21wOiBwcmVzZW50IGNs YXVzZTogIW9tcF90YXJnZXRfaXNfcHJlc2VudCBcXFwoMHhcWzAtOWEtZlxdKywgXFswLTlc XStcXFwpIiB9ICovCisgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRlZmF1bHRtYXAgKHByZXNl bnQpCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKwljW2ldICs9IGJbaV07 CisgICNwcmFnbWEgb21wIHRhcmdldCBleGl0IGRhdGEgbWFwIChmcm9tOiBjKQorfQpkaWZm IC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFyZ2V0 LXByZXNlbnQtMy5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24v dGFyZ2V0LXByZXNlbnQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi44OWU2NDg2NDViMgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1wcmVzZW50LTMuYwpAQCAtMCwwICsxLDI3 IEBACisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBvZmZsb2FkX3RhcmdldF9hbnkgfSB9ICov CisvKiB7IGRnLXNob3VsZGZhaWwgInByZXNlbnQgZXJyb3IgdHJpZ2dlcmVkIiB9ICovCisK KyNpbmNsdWRlIDxzdGRpby5oPgorCisjZGVmaW5lIE4gMTAwCisKK2ludCBtYWluICh2b2lk KQoreworICBpbnQgYVtOXSwgYltOXSwgY1tOXTsKKworICBmb3IgKGludCBpID0gMDsgaSA8 IE47IGkrKykgeworICAgIGFbaV0gPSBpICogMjsKKyAgICBiW2ldID0gaSAqIDMgKyAxOwor ICB9CisKKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRhdGEgbWFwIChhbGxvYzogYSwg YykKKworICAvKiBUaGlzIHNob3VsZCB3b3JrIGFzIGEgaGFzIGFscmVhZHkgYmVlbiBhbGxv Y2F0ZWQuICAqLworICAjcHJhZ21hIG9tcCB0YXJnZXQgdXBkYXRlIHRvIChwcmVzZW50OiBh KQorCisgIC8qIFRoaXMgc2hvdWxkIGZhaWwgYXMgYiBoYXMgbm90IGJlZW4gYWxsb2NhdGVk LiAgKi8KKyAgLyogeyBkZy1vdXRwdXQgImxpYmdvbXA6IHByZXNlbnQgY2xhdXNlOiAhb21w X3RhcmdldF9pc19wcmVzZW50IFxcXCgweFxbMC05YS1mXF0rLCBcWzAtOVxdK1xcXCkiIH0g Ki8KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IHVwZGF0ZSB0byAocHJlc2VudDogYikKKworICAj cHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZnJvbTogYykKK30KZGlmZiAtLWdp dCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90YXJnZXQtcHJlc2VudC0x LmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90YXJnZXQtcHJlc2Vu dC0xLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODAwNDYw MTFiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZv cnRyYW4vdGFyZ2V0LXByZXNlbnQtMS5mOTAKQEAgLTAsMCArMSwzMCBAQAorISB7IGRnLWRv IHJ1biB7IHRhcmdldCBvZmZsb2FkX3RhcmdldF9hbnkgfSB9CishIHsgZGctc2hvdWxkZmFp bCAicHJlc2VudCBlcnJvciB0cmlnZ2VyZWQiIH0KKworcHJvZ3JhbSBtYWluCisgIGltcGxp Y2l0IG5vbmUKKyAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IE4gPSAxMDAKKyAgaW50ZWdlciA6 OiBhKE4pLCBiKE4pLCBjKE4pLCBpCisKKyAgZG8gaSA9IDEsIE4KKyAgICBhKGkpID0gaSAq IDIKKyAgICBiKGkpID0gaSAqIDMgKyAxCisgIGVuZCBkbworCisgICEkb21wIHRhcmdldCBl bnRlciBkYXRhIG1hcCAoYWxsb2M6IGEpCisgICAgISBhIGhhcyBhbHJlYWR5IGJlZW4gYWxs b2NhdGVkLCBzbyB0aGlzIHNob3VsZCBiZSBva2F5LgorICAgICEkb21wIHRhcmdldCBtYXAg KHByZXNlbnQsIHRvOiBhKQorICAgICAgZG8gaSA9IDEsIE4KKwljKGkpID0gYShpKQorICAg ICAgZW5kIGRvCisgICAgISRvbXAgZW5kIHRhcmdldAorCisgICAgISBiIGhhcyBub3QgYmVl biBhbGxvY2F0ZWQsIHNvIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhbiBlcnJvci4KKyAgICAh IHsgZGctb3V0cHV0ICJsaWJnb21wOiBwcmVzZW50IGNsYXVzZTogIW9tcF90YXJnZXRfaXNf cHJlc2VudCBcXFwoMHhcWzAtOWEtZlxdKywgXFswLTlcXStcXFwpIiB9CisgICAgISRvbXAg dGFyZ2V0IG1hcCAocHJlc2VudCwgdG86IGIpCisgICAgICBkbyBpID0gMSwgTgorCWMoaSkg PSBjKGkpICsgYihpKQorICAgICAgZW5kIGRvCisgICAgISRvbXAgZW5kIHRhcmdldAorICAh JG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZnJvbTogYykKK2VuZCBwcm9ncmFtCmRpZmYg LS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vdGFyZ2V0LXByZXNl bnQtMi5mOTAgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vdGFyZ2V0LXBy ZXNlbnQtMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBh MzhkZWExZTQxCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5mb3J0cmFuL3RhcmdldC1wcmVzZW50LTIuZjkwCkBAIC0wLDAgKzEsMzAgQEAKKyEgeyBk Zy1kbyBydW4geyB0YXJnZXQgb2ZmbG9hZF90YXJnZXRfYW55IH0gfQorISB7IGRnLXNob3Vs ZGZhaWwgInByZXNlbnQgZXJyb3IgdHJpZ2dlcmVkIiB9CisKK3Byb2dyYW0gbWFpbgorICBp bXBsaWNpdCBub25lCisgIGludGVnZXIsIHBhcmFtZXRlciA6OiBOID0gMTAwCisgIGludGVn ZXIgOjogYShOKSwgYihOKSwgYyhOKSwgaQorCisgIGRvIGkgPSAxLCBOCisgICAgYShpKSA9 IGkgKiAyCisgICAgYihpKSA9IGkgKiAzICsgMQorICBlbmQgZG8KKworICAhJG9tcCB0YXJn ZXQgZW50ZXIgZGF0YSBtYXAgKGFsbG9jOiBhKQorICAgICEgYSBoYXMgYWxyZWFkeSBiZWVu IGFsbG9jYXRlZCwgc28gdGhpcyBzaG91bGQgYmUgb2theS4KKyAgICAhJG9tcCB0YXJnZXQg ZGVmYXVsdG1hcCAocHJlc2VudCkKKyAgICAgIGRvIGkgPSAxLCBOCisJYyhpKSA9IGEoaSkK KyAgICAgIGVuZCBkbworICAgICEkb21wIGVuZCB0YXJnZXQKKworICAgICEgYiBoYXMgbm90 IGJlZW4gYWxsb2NhdGVkLCBzbyB0aGlzIHNob3VsZCByZXN1bHQgaW4gYW4gZXJyb3IuCisg ICAgISB7IGRnLW91dHB1dCAibGliZ29tcDogcHJlc2VudCBjbGF1c2U6ICFvbXBfdGFyZ2V0 X2lzX3ByZXNlbnQgXFxcKDB4XFswLTlhLWZcXSssIFxbMC05XF0rXFxcKSIgfQorICAgICEk b21wIHRhcmdldCBkZWZhdWx0bWFwIChwcmVzZW50KQorICAgICAgZG8gaSA9IDEsIE4KKwlj KGkpID0gYyhpKSArIGIoaSkKKyAgICAgIGVuZCBkbworICAgICEkb21wIGVuZCB0YXJnZXQK KyEkb21wIHRhcmdldCBleGl0IGRhdGEgbWFwIChmcm9tOiBjKQorZW5kIHByb2dyYW0KZGlm ZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90YXJnZXQtcHJl c2VudC0zLmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90YXJnZXQt cHJlc2VudC0zLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YzRkZWI4NjUyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmZvcnRyYW4vdGFyZ2V0LXByZXNlbnQtMy5mOTAKQEAgLTAsMCArMSwyMiBAQAorISB7 IGRnLWRvIHJ1biB7IHRhcmdldCBvZmZsb2FkX3RhcmdldF9hbnkgfSB9CishIHsgZGctc2hv dWxkZmFpbCAicHJlc2VudCBlcnJvciB0cmlnZ2VyZWQiIH0KKworcHJvZ3JhbSBtYWluCisg IGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IE4gPSAxMDAKKyAgaW50 ZWdlciA6OiBhKE4pLCBiKE4pLCBjKE4pLCBpCisKKyAgZG8gaSA9IDEsIE4KKyAgICBhKGkp ID0gaSAqIDIKKyAgICBiKGkpID0gaSAqIDMgKyAxCisgIGVuZCBkbworCisgICEkb21wIHRh cmdldCBlbnRlciBkYXRhIG1hcCAoYWxsb2M6IGEsIGMpCisgICAgISBUaGlzIHNob3VsZCB3 b3JrIGFzIGEgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQuCisgICAgISRvbXAgdGFyZ2V0 IHVwZGF0ZSB0byAocHJlc2VudDogYSkKKworICAgICEgVGhpcyBzaG91bGQgZmFpbCBhcyBi IGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQuCisgICAgISB7IGRnLW91dHB1dCAibGliZ29tcDog cHJlc2VudCBjbGF1c2U6ICFvbXBfdGFyZ2V0X2lzX3ByZXNlbnQgXFxcKDB4XFswLTlhLWZc XSssIFxbMC05XF0rXFxcKSIgfQorICAgICEkb21wIHRhcmdldCB1cGRhdGUgdG8gKHByZXNl bnQ6IGIpCisgICEkb21wIHRhcmdldCBleGl0IGRhdGEgbWFwIChmcm9tOiBjKQorZW5kIHBy b2dyYW0KLS0gCjIuMzQuMQoK --------------uh0aYfIR4HWBAp8UgExLq1gr--