From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id B34E0385780F for ; Fri, 29 Oct 2021 10:10:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B34E0385780F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: AOnkwY1kQjrit1RwyuJG0wHllafgN+sKhA9mpcMFoEQphR0zc5lxOY5InM28phrgc/Yro0tif2 Yk27QM/IzDVo5b81hQo7GkxVUKYvymPbA+Fg3CJWvR3pbfgDn4cSDYqNITpsadgWDTRV3xGTxR SFAHJuZdehD83t/MaxMz5sDEn6sERhtdxtvDaAD1O0y+4T1bnOrCJHSdA1J+b9uYhmu5lXjXvH rUvLGjLBZYOCSyCEYgpgj/V0pU8eMzxFLw4mJ7f2CRi8xDLnYCDAVR4lTBHrgsJfEaZxgg384u 12wrbfaOLK5gXSpWWQWF7UE9 X-IronPort-AV: E=Sophos;i="5.87,192,1631606400"; d="diff'?scan'208";a="67786667" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 29 Oct 2021 02:10:02 -0800 IronPort-SDR: BwVyL+Sp3wALfLtWrhCtbAH7jgAjZcOzR4Yl44mkVJ4Kj6r3eCBLbk6xPpfVV/X4qYEbGcvkpt DNamr6FT/bTngTPc1jNF34EK3HNgBfEYEvLm6ezyD6ITLn4jHJ0NghH6PwSUmWELc8wnBiU7Ba pe09o2s28au03Jyr1TdnAwlAbrRRQbnrWHPD4vvJIasUNz+4mjs0Wtn5xfNGSHb1FvNg5q+Sri DFefDs6AgsyrRMp64MY6iet1iwgTFq6D5c6kW+XKanBZCEoYSdpp2xiZukaUYGT/whPhSEthjl Mhw= Content-Type: multipart/mixed; boundary="------------XjhXz9ISPP96Dx0s5daFS8wW" Message-ID: <99130bc9-d3b7-f7c4-0b66-50288245a254@codesourcery.com> Date: Fri, 29 Oct 2021 12:09:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.1 Content-Language: en-US To: Jakub Jelinek , gcc-patches From: Tobias Burnus Subject: [Patch] OpenMP: Add strictly nested API call check [PR102972] X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-11.6 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Oct 2021 10:10:09 -0000 --------------XjhXz9ISPP96Dx0s5daFS8wW Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable The original motivation was to fix the routine part of the restriction quoted below. Namely that the only routines calls to omp_get_num_teams() and omp_get_team_num() are permitted in teams when closely nested. "Restrictions to the teams construct are as follows: ... =E2=80=A2 distribute regions, including any distribute regions arising from= composite constructs, parallel regions, including any parallel regions arising from combined cons= tructs, loop regions, omp_get_num_teams() regions, and omp_get_team_num() regions are th= e only OpenMP regions that may be strictly nested inside the teams region." While being there, I found one issue related to the ancestor check =E2=80=93 which checked too strictly =E2=80=93 and in the generic che= ck which assumed that the DECL_NAME in Fortran had the '_' suffix while only the assembler name has. That worked well with '_' as DECL_NAME then matched the C name but for the integer(8) version, only ..._8_ was matched and DECL_NAME only contained ..._8 without tailing '_'. The assembler name is also needed because in Fortran, module m contains subroutine omp_is_initial_device () has an OpenMP API name in DECL_NAME but internally, it is something like m_MOD_omp_is_initial_device_ - which is an odd user name but is not the API routine name. I hope that no target starts mangling the C name such that C's DECL_NAME() !=3D the assembler name as then the patch will break, but I think all targets do permit those simple names and don't introduce further mangling. While other testsuites had surprisingly little problems with this change =E2=80=93 most did use omp_get_num_teams() and omp_get_team_num() but that's fine - the GCC testsuite did have many violations. =E2=80=94 I hoped I have fixed them in a sensible way. OK for mainline? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------XjhXz9ISPP96Dx0s5daFS8wW Content-Type: text/x-patch; charset="UTF-8"; name="nested-routine.diff" Content-Disposition: attachment; filename="nested-routine.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBBZGQgc3RyaWN0bHkgbmVzdGVkIEFQSSBjYWxsIGNoZWNrIFtQUjEwMjk3Ml0K ClRoZSB0ZWFtcyBjb25zdHJ1Y3Qgb25seSBwZXJtaXRzIG9tcF9nZXRfbnVtX3RlYW1zIGFu ZCBvbXBfZ2V0X3RlYW1fbnVtCmFzIEFQSSBjYWxsIGluIHN0cmljdGx5IG5lc3RlZCByZWdp b25zIC0gY2hlY2sgZm9yIGl0LgoKQWRkaXRpb25hbGx5LCBmb3IgRm9ydHJhbiwgdXNpbmcg REVDTF9OQU1FIGRvZXMgbm90IHNob3cgdGhlIG1hbmdsZWQKbmFtZSwgaGVuY2UsIERFQ0xf QVNTRU1CTEVSX05BTUUgaGFkIHRvIGJlIHVzZWQgdG8uCgpGaW5hbGx5LCAndGFyZ2V0IGRl dmljZShhbmNlc3RvcjoxKScgd3JvbmdseSByZWplY3RlZCBub24tQVBJIGNhbGxzCmFzIHdl bGwuCgoJUFIgbWlkZGxlLWVuZC8xMDI5NzIKZ2NjL0NoYW5nZUxvZzoKCgkqIG9tcC1sb3cu YyAob21wX3J1bnRpbWVfYXBpX2NhbGwpOiBVc2UgREVDTF9BU1NFTUJMRVJfTkFNRSB0byBn ZXQKCWludGVybmFsIEZvcnRyYW4gbmFtZTsgbmV3IHBlcm1pdF9udW1fdGVhbXMgYXJnIHRv IHBlcm1pdAoJb21wX2dldF9udW1fdGVhbXMgYW5kIG9tcF9nZXRfdGVhbV9udW0uCgkoc2Nh bl9vbXBfMV9zdG10KTogVXBkYXRlIGNhbGwgdG8gaXQsIGFkZCBtaXNzaW5nIGNhbGwgZm9y CglyZXZlcnNlIG9mZmxvYWQsIGFuZCBjaGVjayBmb3Igc3RyaWN0bHkgbmVzdGVkIEFQSSBj YWxscyBpbiB0ZWFtcy4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogYy1jKystY29t bW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmM6IEFkZCBub24tQVBJCglyb3V0 aW5lIHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvb3JkZXItNi5mOTA6IEFkZCBtaXNzaW5n IGJpbmQoQykuCgkqIGMtYysrLWNvbW1vbi9nb21wL3RlYW1zLTMuYzogTmV3IHRlc3QuCgkq IGdmb3J0cmFuLmRnL2dvbXAvdGVhbXMtMy5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5k Zy9nb21wL3RlYW1zLTQuZjkwOiBOZXcgdGVzdC4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoJKiB0 ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vaWN2LTMuYzogTmVzdCBBUEkgY2FsbHMg aW5zaWRlCglwYXJhbGxlbCBjb25zdHJ1Y3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysr LWNvbW1vbi9pY3YtNC5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJn ZXQtMy5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtNS5jOiBM aWtld2lzZS4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtNi5jOiBMaWtld2lzZS4K CSogdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtdGVhbXMtMS5jOiBMaWtld2lzZS4KCSog dGVzdHN1aXRlL2xpYmdvbXAuYy90ZWFtcy0xLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUv bGliZ29tcC5jL3RocmVhZC1saW1pdC0yLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGli Z29tcC5jL3RocmVhZC1saW1pdC0zLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGliZ29t cC5jL3RocmVhZC1saW1pdC00LmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5j L3RocmVhZC1saW1pdC01LmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0 cmFuL2ljdi0zLmY5MDogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v aWN2LTQuZjkwOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90ZWFt czEuZjkwOiBMaWtld2lzZS4KCiBnY2Mvb21wLWxvdy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAzMCArKysrKy0KIC4uLi9jLWMrKy1jb21tb24vZ29tcC90 YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTMuYyAgIHwgICAyICsKIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvbXAvdGVhbXMtMy5jICAgICAgICAgIHwgIDY0ICsrKysrKysrKysrKwog Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL29yZGVyLTYuZjkwICAgICAgICAgfCAg IDIgKy0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90ZWFtcy0zLmY5MCAgICAg ICAgIHwgIDY1ICsrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L3RlYW1zLTQuZjkwICAgICAgICAgfCAgNDcgKysrKysrKysrCiBsaWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmMtYysrLWNvbW1vbi9pY3YtMy5jICAgICB8ICAgMyArCiBsaWJnb21wL3Rl c3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9pY3YtNC5jICAgICB8ICAgMSArCiBsaWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LTMuYyAgICAgICAgICAgICB8ICAgNiAr LQogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC01LmMgICAgICAgICAgICAg fCAgIDEgKwogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC02LmMgICAgICAg ICAgICAgfCAgMTIgKystCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXRl YW1zLTEuYyAgICAgICB8IDExNSArKysrKysrKysrKysrKystLS0tLS0KIGxpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy90ZWFtcy0xLmMgICAgICAgICAgICAgIHwgICA2ICstCiBsaWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTIuYyAgICAgICB8ICAyMSAr Ky0tCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTMuYyAgICAg ICB8ICAgMSArCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTQu YyAgICAgICB8ICAyNSArKystLQogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RocmVh ZC1saW1pdC01LmMgICAgICAgfCAgIDEgKwogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5m b3J0cmFuL2ljdi0zLmY5MCAgICAgICAgfCAgIDYgKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xp YmdvbXAuZm9ydHJhbi9pY3YtNC5mOTAgICAgICAgIHwgICAyICsKIGxpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuZm9ydHJhbi90ZWFtczEuZjkwICAgICAgIHwgIDE2ICstLQogMjAgZmls ZXMgY2hhbmdlZCwgMzUxIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2djYy9vbXAtbG93LmMgYi9nY2Mvb21wLWxvdy5jCmluZGV4IDE1ZTQ0MjRiMGJj Li4yZjViNWJlYzQ4YSAxMDA2NDQKLS0tIGEvZ2NjL29tcC1sb3cuYworKysgYi9nY2Mvb21w LWxvdy5jCkBAIC0zOTExLDcgKzM5MTEsNyBAQCBzZXRqbXBfb3JfbG9uZ2ptcF9wIChjb25z dF90cmVlIGZuZGVjbCkKIC8qIFJldHVybiB0cnVlIGlmIEZOREVDTCBpcyBhbiBvbXBfKiBy dW50aW1lIEFQSSBjYWxsLiAgKi8KIAogc3RhdGljIGJvb2wKLW9tcF9ydW50aW1lX2FwaV9j YWxsIChjb25zdF90cmVlIGZuZGVjbCkKK29tcF9ydW50aW1lX2FwaV9jYWxsICh0cmVlIGZu ZGVjbCwgYm9vbCBwZXJtaXRfbnVtX3RlYW1zKQogewogICB0cmVlIGRlY2xuYW1lID0gREVD TF9OQU1FIChmbmRlY2wpOwogICBpZiAoIWRlY2xuYW1lCkBAIC0zOTIwLDYgKzM5MjAsOCBA QCBvbXBfcnVudGltZV9hcGlfY2FsbCAoY29uc3RfdHJlZSBmbmRlY2wpCiAgICAgICB8fCAh VFJFRV9QVUJMSUMgKGZuZGVjbCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCisgIGlmIChIQVNf REVDTF9BU1NFTUJMRVJfTkFNRV9QIChmbmRlY2wpKQorICAgIGRlY2xuYW1lID0gREVDTF9B U1NFTUJMRVJfTkFNRSAoZm5kZWNsKTsKICAgY29uc3QgY2hhciAqbmFtZSA9IElERU5USUZJ RVJfUE9JTlRFUiAoZGVjbG5hbWUpOwogICBpZiAoIXN0YXJ0c3dpdGggKG5hbWUsICJvbXBf IikpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDAyOSw3ICs0MDMxLDE3IEBAIG9tcF9ydW50 aW1lX2FwaV9jYWxsIChjb25zdF90cmVlIGZuZGVjbCkKIAkJICAmJiAobmFtZVs0ICsgbGVu ICsgMV0gPT0gJ1wwJwogCQkgICAgICB8fCAobW9kZSA+IDEKIAkJCSAgJiYgc3RyY21wIChu YW1lICsgNCArIGxlbiArIDEsICI4XyIpID09IDApKSkpKQotCXJldHVybiB0cnVlOworCXsK KwkgIC8qIE9ubHkgb21wX2dldF9udW1fdGVhbXMgKyBvbXBfZ2V0X3RlYW1fbnVtLiAgKi8K KwkgIGlmIChwZXJtaXRfbnVtX3RlYW1zCisJICAgICAgJiYgbW9kZSA9PSAxCisJICAgICAg JiYgKHN0cm5jbXAgKG5hbWUgKyA0LCAiZ2V0X251bV90ZWFtcyIsCisJCQkgICBzdHJsZW4g KCJnZXRfbnVtX3RlYW1zIikpID09IDAKKwkJICB8fCBzdHJuY21wIChuYW1lICsgNCwgImdl dF90ZWFtX251bSIsCisJCQkgICAgICBzdHJsZW4gKCJnZXRfdGVhbV9udW0iKSkgPT0gMCkp CisJICAgIHJldHVybiBmYWxzZTsKKwkgIHJldHVybiB0cnVlOworCX0KICAgICB9CiAgIHJl dHVybiBmYWxzZTsKIH0KQEAgLTQwODgsMTYgKzQxMDAsMjYgQEAgc2Nhbl9vbXBfMV9zdG10 IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBib29sICpoYW5kbGVkX29wc19wLAogCSAg ICAgIG9tcF9jb250ZXh0ICpvY3R4ID0gY3R4OwogCSAgICAgIGlmIChnaW1wbGVfY29kZSAo Y3R4LT5zdG10KSA9PSBHSU1QTEVfT01QX1NDQU4gJiYgY3R4LT5vdXRlcikKIAkJb2N0eCA9 IGN0eC0+b3V0ZXI7Ci0JICAgICAgaWYgKG9jdHgtPm9yZGVyX2NvbmN1cnJlbnQgJiYgb21w X3J1bnRpbWVfYXBpX2NhbGwgKGZuZGVjbCkpCisJICAgICAgaWYgKG9jdHgtPm9yZGVyX2Nv bmN1cnJlbnQKKwkJICAmJiBvbXBfcnVudGltZV9hcGlfY2FsbCAoZm5kZWNsLCBmYWxzZSkp CiAJCXsKIAkJICByZW1vdmUgPSB0cnVlOwogCQkgIGVycm9yX2F0IChnaW1wbGVfbG9jYXRp b24gKHN0bXQpLAogCQkJICAgICJPcGVuTVAgcnVudGltZSBBUEkgY2FsbCAlcUQgaW4gYSBy ZWdpb24gd2l0aCAiCiAJCQkgICAgIiU8b3JkZXIoY29uY3VycmVudCklPiBjbGF1c2UiLCBm bmRlY2wpOwogCQl9CisJICAgICAgaWYgKGdpbXBsZV9jb2RlIChjdHgtPnN0bXQpID09IEdJ TVBMRV9PTVBfVEVBTVMKKwkJICAmJiBvbXBfcnVudGltZV9hcGlfY2FsbCAoZm5kZWNsLCB0 cnVlKSkKKwkJeworCQkgIHJlbW92ZSA9IHRydWU7CisJCSAgZXJyb3JfYXQgKGdpbXBsZV9s b2NhdGlvbiAoc3RtdCksCisJCQkgICAgIk9wZW5NUCBydW50aW1lIEFQSSBjYWxsICVxRCBz dHJpY3RseSBuZXN0ZWQgaW4gYSAiCisJCQkgICAgIiU8dGVhbXMlPiByZWdpb24iLCBmbmRl Y2wpOworCQl9CiAJICAgICAgaWYgKGdpbXBsZV9jb2RlIChjdHgtPnN0bXQpID09IEdJTVBM RV9PTVBfVEFSR0VUCiAJCSAgJiYgKGdpbXBsZV9vbXBfdGFyZ2V0X2tpbmQgKGN0eC0+c3Rt dCkKLQkJICAgICAgPT0gR0ZfT01QX1RBUkdFVF9LSU5EX1JFR0lPTikpCisJCSAgICAgID09 IEdGX09NUF9UQVJHRVRfS0lORF9SRUdJT04pCisJCSAgJiYgb21wX3J1bnRpbWVfYXBpX2Nh bGwgKGZuZGVjbCwgZmFsc2UpKQogCQl7CiAJCSAgdHJlZSB0Z3RfY2xhdXNlcyA9IGdpbXBs ZV9vbXBfdGFyZ2V0X2NsYXVzZXMgKGN0eC0+c3RtdCk7CiAJCSAgdHJlZSBjID0gb21wX2Zp bmRfY2xhdXNlICh0Z3RfY2xhdXNlcywgT01QX0NMQVVTRV9ERVZJQ0UpOwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2Vz dG9yLTMuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmlj ZS1hbmNlc3Rvci0zLmMKaW5kZXggNWUzYTQ3OGZkNWIuLmVhNmU1YTBjZjZjIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5j ZXN0b3ItMy5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0 LWRldmljZS1hbmNlc3Rvci0zLmMKQEAgLTMsNiArMyw3IEBAIGV4dGVybiAiQyIgewogI2Vu ZGlmCiAKIGludCBvbXBfZ2V0X251bV90ZWFtcyAodm9pZCk7CitpbnQgYmFyICh2b2lkKTsK IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkBAIC0yMiw2ICsyMyw3IEBAIGZvbyAodm9pZCkK IAogICAjcHJhZ21hIG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvcjogMSkKICAgICB7Cisg ICAgICBhID0gYmFyICgpOyAvKiBPSyAqLwogICAgICAgYSA9IG9tcF9nZXRfbnVtX3RlYW1z ICgpOyAvKiB7IGRnLWVycm9yICJPcGVuTVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0q b21wX2dldF9udW1fdGVhbXNcW15cblxyXSonIGluIGEgcmVnaW9uIHdpdGggJ2RldmljZVxc KGFuY2VzdG9yXFwpJyBjbGF1c2UiIH0gICovCiAgICAgfQogCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RlYW1zLTMuYyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvbXAvdGVhbXMtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi43ZjhiNDdmN2RmMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGVhbXMtMy5jCkBAIC0wLDAgKzEsNjQgQEAKKy8q IFBSIG1pZGRsZS1lbmQvMTAyOTcyICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu ICJDIiB7CisjZW5kaWYKKworLyogRnJvbSBvbXAuaCAgKi8KK2V4dGVybiBpbnQgb21wX2dl dF9udW1fdGVhbXMgKHZvaWQpOworZXh0ZXJuIHZvaWQgb21wX3NldF9udW1fdGVhbXMgKGlu dCk7CitleHRlcm4gaW50IG9tcF9nZXRfdGVhbV9zaXplIChpbnQpOworZXh0ZXJuIGludCBv bXBfZ2V0X3RlYW1fbnVtICh2b2lkKTsKK2V4dGVybiBpbnQgb21wX2dldF9tYXhfdGVhbXMg KHZvaWQpOworZXh0ZXJuIHZvaWQgb21wX3NldF90ZWFtc190aHJlYWRfbGltaXQgKGludCk7 CitleHRlcm4gaW50IG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICh2b2lkKTsKK2V4dGVy biBpbnQgb21wX2lzX2luaXRpYWxfZGV2aWNlICh2b2lkKTsKK2V4dGVybiBpbnQgb21wX2dl dF9udW1fdGhyZWFkcyAodm9pZCk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k aWYKKworCit2b2lkIHZhbGlkICgpCit7CisgICNwcmFnbWEgb21wIHRlYW1zCisgIHsKKyAg ICAjcHJhZ21hIG9tcCBkaXN0cmlidXRlCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsg aSsrKQorICAgICAgOworCisgICAgaW50IG4gPSBvbXBfZ2V0X251bV90ZWFtcyAoKTsKKyAg ICBpZiAobiA+PSBvbXBfZ2V0X3RlYW1fbnVtICgpKQorICAgICAgX19idWlsdGluX2Fib3J0 ICgpOworCisgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yCisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCA2NDsgaSsrKQorICAgICAgaWYgKCFvbXBfaXNfaW5pdGlhbF9kZXZpY2UgKCkg fHwgb21wX2dldF9udW1fdGhyZWFkcyAoKSA8IDApCisJX19idWlsdGluX2Fib3J0ICgpOwor CisgICAgI3ByYWdtYSBvbXAgbG9vcAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkr KykKKyAgICAgIDsKKyAgfQorfQorCit2b2lkIGludmFsaWRfbmVzdCAoKQoreworICAjcHJh Z21hIG9tcCB0ZWFtcworICB7CisgICAgI3ByYWdtYSBkaXN0cmlidXRlIHBhcmFsbGVsIGZv ciBzaW1kCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSsrKQorICAgICAgOworCisg ICAgaW50IG4gPSAwOworICAgIG4gKz0gb21wX2dldF90ZWFtX3NpemUgKDApOyAgLyogeyBk Zy1lcnJvciAiT3Blbk1QIHJ1bnRpbWUgQVBJIGNhbGwgJ1xbXlxuXHJdKm9tcF9nZXRfdGVh bV9zaXplXFteXG5ccl0qJyBzdHJpY3RseSBuZXN0ZWQgaW4gYSAndGVhbXMnIHJlZ2lvbiIg fSAgKi8KKyAgICBuICs9IG9tcF9nZXRfbnVtX3RlYW1zICgpOworICAgIG4gKz0gb21wX2dl dF90ZWFtX251bSAoKTsKKyAgICBvbXBfc2V0X251bV90ZWFtcyAobik7ICAvKiB7IGRnLWVy cm9yICJPcGVuTVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX3NldF9udW1fdGVh bXNcW15cblxyXSonIHN0cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9ICAq LworICAgIG4gKz0gb21wX2dldF9tYXhfdGVhbXMgKCk7ICAvKiB7IGRnLWVycm9yICJPcGVu TVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX2dldF9tYXhfdGVhbXNcW15cblxy XSonIHN0cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9ICAqLworICAgIG4g Kz0gb21wX2dldF90ZWFtc190aHJlYWRfbGltaXQgKCk7ICAvKiB7IGRnLWVycm9yICJPcGVu TVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX2dldF90ZWFtc190aHJlYWRfbGlt aXRcW15cblxyXSonIHN0cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9ICAq LworICAgIG9tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0IChuKTsgIC8qIHsgZGctZXJyb3Ig Ik9wZW5NUCBydW50aW1lIEFQSSBjYWxsICdcW15cblxyXSpvbXBfc2V0X3RlYW1zX3RocmVh ZF9saW1pdFxbXlxuXHJdKicgc3RyaWN0bHkgbmVzdGVkIGluIGEgJ3RlYW1zJyByZWdpb24i IH0gICovCisgIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Z29tcC9vcmRlci02LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9vcmRl ci02LmY5MAppbmRleCBjOGFlZWNiNmYyNy4uOGQ3ZjljNTdhOTggMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9vcmRlci02LmY5MAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvb3JkZXItNi5mOTAKQEAgLTgsNyArOCw3IEBAIG1v ZHVsZSBtCiAgICAgZW5kCiAgICAgaW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90aHJl YWRzICgpCiAgICAgZW5kCi0gICAgaW50ZWdlciBmdW5jdGlvbiBvbXBfdGFyZ2V0X2lzX3By ZXNlbnQgKHgsIGkpCisgICAgaW50ZWdlciBmdW5jdGlvbiBvbXBfdGFyZ2V0X2lzX3ByZXNl bnQgKHgsIGkpIGJpbmQoYykKICAgICAgIGltcG9ydCA6OiBjX3B0cgogICAgICAgdHlwZShj X3B0cikgOjogeAogICAgICAgaW50ZWdlciwgdmFsdWUgOjogaQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RlYW1zLTMuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL3RlYW1zLTMuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5mYWMzMzkzYmQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90ZWFtcy0zLmY5MApAQCAtMCwwICsxLDY1IEBA CishIFBSIG1pZGRsZS1lbmQvMTAyOTcyCisKK21vZHVsZSBtCitpbXBsaWNpdCBub25lICh0 eXBlLCBleHRlcm5hbCkKK2ludGVyZmFjZQorc3Vicm91dGluZSBvbXBfc2V0X251bV90ZWFt cyAobnVtX3RlYW1zKTsgaW50ZWdlciA6OiBudW1fdGVhbXM7IGVuZAorc3Vicm91dGluZSBv bXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdCAodGhyZWFkX2xpbWl0KTsgaW50ZWdlciA6OiB0 aHJlYWRfbGltaXQ7IGVuZAorc3Vicm91dGluZSBvbXBfc2V0X251bV90ZWFtc184IChudW1f dGVhbXMpOyBpbnRlZ2VyKDgpIDo6IG51bV90ZWFtczsgZW5kCitzdWJyb3V0aW5lIG9tcF9z ZXRfbnVtX3RlYW1zXzkgKG51bV90ZWFtcyk7IGludGVnZXIgOjogbnVtX3RlYW1zOyBlbmQK K3N1YnJvdXRpbmUgb21wX3NldF90ZWFtc190aHJlYWRfbGltaXRfOCAodGhyZWFkX2xpbWl0 KTsgaW50ZWdlcig4KSA6OiB0aHJlYWRfbGltaXQ7IGVuZAoraW50ZWdlciBmdW5jdGlvbiBv bXBfZ2V0X251bV90ZWFtcyAoKTsgZW5kCitpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfdGVh bV9zaXplIChsZXZlbCk7IGludGVnZXIgOjogbGV2ZWw7IGVuZAoraW50ZWdlciBmdW5jdGlv biBvbXBfZ2V0X3RlYW1fbnVtICgpOyBlbmQKK2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9t YXhfdGVhbXMgKCk7IGVuZAoraW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X3RlYW1zX3RocmVh ZF9saW1pdCAoKTsgZW5kCitsb2dpY2FsIGZ1bmN0aW9uIG9tcF9pc19pbml0aWFsX2Rldmlj ZSAoKTsgZW5kCitpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfbnVtX3RocmVhZHMgKCk7IGVu ZAorZW5kIGludGVyZmFjZQorCitjb250YWlucworCitzdWJyb3V0aW5lIHZhbGlkICgpCisg IGludGVnZXIgOjogaSwgbgorICAhJG9tcCB0ZWFtcworICAgICEkb21wIGRpc3RyaWJ1dGUK KyAgICBkbyBpID0gMSwgNjQKKyAgICBlbmQgZG8KKworICAgIG4gPSBvbXBfZ2V0X251bV90 ZWFtcyAoKQorICAgIGlmIChuID49IG9tcF9nZXRfdGVhbV9udW0gKCkpICYKKyAgICAgIGVy cm9yIHN0b3AKKworICAgICEkb21wIHBhcmFsbGVsIGRvCisgICAgZG8gaSA9IDEsIDY0Cisg ICAgICBpZiAoLm5vdC5vbXBfaXNfaW5pdGlhbF9kZXZpY2UgKCkgLm9yLiBvbXBfZ2V0X251 bV90aHJlYWRzICgpIDwgMCkgJgorICAgICAgICBlcnJvciBzdG9wCisgICAgZW5kIGRvCisK KyAgICAhJG9tcCBsb29wCisgICAgZG8gaSA9IDEsIDY0CisgICAgZW5kIGRvCisgICEkb21w IGVuZCB0ZWFtcworZW5kCisKK3N1YnJvdXRpbmUgaW52YWxpZF9uZXN0ICgpCisgIGludGVn ZXIgOjogaSwgbgorICAhJG9tcCB0ZWFtcworICAgICEkb21wIGRpc3RyaWJ1dGUgcGFyYWxs ZWwgZG8gc2ltZAorICAgIGRvIGkgPSAxLCA2NAorICAgIGVuZCBkbworCisgICAgbiA9IDAK KyAgICBuID0gbiArIG9tcF9nZXRfdGVhbV9zaXplICgwKSAgISB7IGRnLWVycm9yICJPcGVu TVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX2dldF90ZWFtX3NpemVcW15cblxy XSonIHN0cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9CisgICAgbiA9IG4g KyBvbXBfZ2V0X251bV90ZWFtcyAoKQorICAgIG4gPSBuICsgb21wX2dldF90ZWFtX251bSAo KQorICAgIGNhbGwgb21wX3NldF9udW1fdGVhbXMgKG4pICAhIHsgZGctZXJyb3IgIk9wZW5N UCBydW50aW1lIEFQSSBjYWxsICdcW15cblxyXSpvbXBfc2V0X251bV90ZWFtc1xbXlxuXHJd Kicgc3RyaWN0bHkgbmVzdGVkIGluIGEgJ3RlYW1zJyByZWdpb24iIH0KKyAgICBjYWxsIG9t cF9zZXRfbnVtX3RlYW1zXzggKDRfOCkgICEgeyBkZy1lcnJvciAiT3Blbk1QIHJ1bnRpbWUg QVBJIGNhbGwgJ1xbXlxuXHJdKm9tcF9zZXRfbnVtX3RlYW1zXzhcW15cblxyXSonIHN0cmlj dGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9CisgICAgY2FsbCBvbXBfc2V0X251 bV90ZWFtc185ICg0KSAgISBPSyAtIGJ1dCBtaXNuYW1lZCB1c2VyIGZ1bmN0aW9uCisgICAg biA9IG4gKyBvbXBfZ2V0X21heF90ZWFtcyAoKSAgISB7IGRnLWVycm9yICJPcGVuTVAgcnVu dGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX2dldF9tYXhfdGVhbXNcW15cblxyXSonIHN0 cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9CisgICAgbiA9IG4gKyBvbXBf Z2V0X3RlYW1zX3RocmVhZF9saW1pdCAoKSAgISB7IGRnLWVycm9yICJPcGVuTVAgcnVudGlt ZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX2dldF90ZWFtc190aHJlYWRfbGltaXRcW15cblxy XSonIHN0cmljdGx5IG5lc3RlZCBpbiBhICd0ZWFtcycgcmVnaW9uIiB9CisgICAgY2FsbCBv bXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdCAobikgICEgeyBkZy1lcnJvciAiT3Blbk1QIHJ1 bnRpbWUgQVBJIGNhbGwgJ1xbXlxuXHJdKm9tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0J1xb XlxuXHJdKiBzdHJpY3RseSBuZXN0ZWQgaW4gYSAndGVhbXMnIHJlZ2lvbiIgfQorICAgIGNh bGwgb21wX3NldF90ZWFtc190aHJlYWRfbGltaXRfOCAoM184KSAgISB7IGRnLWVycm9yICJP cGVuTVAgcnVudGltZSBBUEkgY2FsbCAnXFteXG5ccl0qb21wX3NldF90ZWFtc190aHJlYWRf bGltaXRfOCdcW15cblxyXSogc3RyaWN0bHkgbmVzdGVkIGluIGEgJ3RlYW1zJyByZWdpb24i IH0KKyAgISRvbXAgZW5kIHRlYW1zCitlbmQKK2VuZCBtb2R1bGUKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90ZWFtcy00LmY5MCBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC90ZWFtcy00LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNDIyYzJjOWVmOTIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGVhbXMtNC5mOTAKQEAgLTAsMCArMSw0NyBA QAorISBQUiBtaWRkbGUtZW5kLzEwMjk3MgorCittb2R1bGUgbQoraW1wbGljaXQgbm9uZSAo dHlwZSwgZXh0ZXJuYWwpCisKKyEgTm90ZTogVGhvc2UgYXJlIG1vZHVsZSBmdW5jdGlvbnMg LSBub3QgYW4gaW50ZXJmYWNlCishIEhlbmNlLCB0aGV5IGFyZSBpbnRlcm5hbGx5IG1hbmdl ZCB0byBjb250YWluIHRoZSBtb2R1bGUgbmFtZSEKKworY29udGFpbnMKKworc3Vicm91dGlu ZSBvbXBfc2V0X251bV90ZWFtcyAobnVtX3RlYW1zKTsgaW50ZWdlciA6OiBudW1fdGVhbXM7 IGVuZAorc3Vicm91dGluZSBvbXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdCAodGhyZWFkX2xp bWl0KTsgaW50ZWdlciA6OiB0aHJlYWRfbGltaXQ7IGVuZAorc3Vicm91dGluZSBvbXBfc2V0 X251bV90ZWFtc184IChudW1fdGVhbXMpOyBpbnRlZ2VyKDgpIDo6IG51bV90ZWFtczsgZW5k CitzdWJyb3V0aW5lIG9tcF9zZXRfbnVtX3RlYW1zXzkgKG51bV90ZWFtcyk7IGludGVnZXIg OjogbnVtX3RlYW1zOyBlbmQKK3N1YnJvdXRpbmUgb21wX3NldF90ZWFtc190aHJlYWRfbGlt aXRfOCAodGhyZWFkX2xpbWl0KTsgaW50ZWdlcig4KSA6OiB0aHJlYWRfbGltaXQ7IGVuZAor aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90ZWFtcyAoKTsgb21wX2dldF9udW1fdGVh bXMgPSAwOyBlbmQKK2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF90ZWFtX3NpemUgKGxldmVs KTsgaW50ZWdlciA6OiBsZXZlbDsgb21wX2dldF90ZWFtX3NpemUgPSAwOyBlbmQKK2ludGVn ZXIgZnVuY3Rpb24gb21wX2dldF90ZWFtX251bSAoKTsgb21wX2dldF90ZWFtX251bSA9IDA7 IGVuZAoraW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X21heF90ZWFtcyAoKTsgb21wX2dldF9t YXhfdGVhbXMgPSAwOyBlbmQKK2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF90ZWFtc190aHJl YWRfbGltaXQgKCk7IG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ID0gMDsgZW5kCitsb2dp Y2FsIGZ1bmN0aW9uIG9tcF9pc19pbml0aWFsX2RldmljZSAoKTsgb21wX2lzX2luaXRpYWxf ZGV2aWNlID0gLnRydWUuOyBlbmQKK2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9udW1fdGhy ZWFkcyAoKTsgb21wX2dldF9udW1fdGhyZWFkcyA9IDA7IGVuZAorZW5kIG1vZHVsZQorCitz dWJyb3V0aW5lIG5lc3RfdGVzdCAoKQorICB1c2UgbQorICBpbXBsaWNpdCBub25lICh0eXBl LCBleHRlcm5hbCkKKyAgCisgIGludGVnZXIgOjogaSwgbgorICAhJG9tcCB0ZWFtcworICAg ICEkb21wIGRpc3RyaWJ1dGUgcGFyYWxsZWwgZG8gc2ltZAorICAgIGRvIGkgPSAxLCA2NAor ICAgIGVuZCBkbworCisgICAgbiA9IDAKKyAgICBuID0gbiArIG9tcF9nZXRfdGVhbV9zaXpl ICgwKQorICAgIG4gPSBuICsgb21wX2dldF9udW1fdGVhbXMgKCkKKyAgICBuID0gbiArIG9t cF9nZXRfdGVhbV9udW0gKCkKKyAgICBjYWxsIG9tcF9zZXRfbnVtX3RlYW1zIChuKQorICAg IGNhbGwgb21wX3NldF9udW1fdGVhbXNfOCAoNF84KQorICAgIGNhbGwgb21wX3NldF9udW1f dGVhbXNfOSAoNCkKKyAgICBuID0gbiArIG9tcF9nZXRfbWF4X3RlYW1zICgpCisgICAgbiA9 IG4gKyBvbXBfZ2V0X3RlYW1zX3RocmVhZF9saW1pdCAoKQorICAgIGNhbGwgb21wX3NldF90 ZWFtc190aHJlYWRfbGltaXQgKG4pCisgICAgY2FsbCBvbXBfc2V0X3RlYW1zX3RocmVhZF9s aW1pdF84ICgzXzgpCisgICEkb21wIGVuZCB0ZWFtcworZW5kCmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9pY3YtMy5jIGIvbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vaWN2LTMuYwppbmRleCA1NGNiZjk5YjU5 Ny4uNzk1Yjk4MjQwYTMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL2ljdi0zLmMKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5j LWMrKy1jb21tb24vaWN2LTMuYwpAQCAtMTgsNiArMTgsNyBAQCBtYWluICgpCiAgICAgYWJv cnQgKCk7CiAgICNwcmFnbWEgb21wIHRlYW1zCiAgIHsKKyAgICAjcHJhZ21hIG9tcCBwYXJh bGxlbAogICAgIGlmIChvbXBfZ2V0X21heF90ZWFtcyAoKSAhPSA3CiAJfHwgb21wX2dldF90 ZWFtc190aHJlYWRfbGltaXQgKCkgIT0gMTUKIAl8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA8 IDEKQEAgLTMwLDYgKzMxLDcgQEAgbWFpbiAoKQogICB9CiAgICNwcmFnbWEgb21wIHRlYW1z IG51bV90ZWFtcyg1KSB0aHJlYWRfbGltaXQgKDEzKQogICB7CisgICAgI3ByYWdtYSBvbXAg cGFyYWxsZWwKICAgICBpZiAob21wX2dldF9tYXhfdGVhbXMgKCkgIT0gNwogCXx8IG9tcF9n ZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICgpICE9IDE1CiAJfHwgb21wX2dldF9udW1fdGVhbXMg KCkgIT0gNQpAQCAtNDEsNiArNDMsNyBAQCBtYWluICgpCiAgIH0KICAgI3ByYWdtYSBvbXAg dGVhbXMgbnVtX3RlYW1zKDgpIHRocmVhZF9saW1pdCAoMTYpCiAgIHsKKyAgICAjcHJhZ21h IG9tcCBwYXJhbGxlbAogICAgIGlmIChvbXBfZ2V0X21heF90ZWFtcyAoKSAhPSA3CiAJfHwg b21wX2dldF90ZWFtc190aHJlYWRfbGltaXQgKCkgIT0gMTUKIAl8fCBvbXBfZ2V0X251bV90 ZWFtcyAoKSAhPSA4CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMt YysrLWNvbW1vbi9pY3YtNC5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1j b21tb24vaWN2LTQuYwppbmRleCA2Y2I2NzFkOGFjNy4uZGI2ZjM0ZGJlNjggMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL2ljdi00LmMKKysr IGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vaWN2LTQuYwpAQCAt MjYsNiArMjYsNyBAQCBtYWluICgpCiAgICAgb21wX3NldF90ZWFtc190aHJlYWRfbGltaXQg KDEyKTsKICAgI3ByYWdtYSBvbXAgdGVhbXMKICAgeworICAgICNwcmFnbWEgb21wIHBhcmFs bGVsCiAgICAgaWYgKG9tcF9nZXRfbWF4X3RlYW1zICgpICE9IDYKIAl8fCBvbXBfZ2V0X3Rl YW1zX3RocmVhZF9saW1pdCAoKSAhPSAxMgogCXx8IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwg MQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC0zLmMg Yi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LTMuYwppbmRleCA3MDAyY2Yy ODdmOS4uMmRlODZmYjhmYzMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuYy90YXJnZXQtMy5jCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJn ZXQtMy5jCkBAIC0xMSw3ICsxMSw5IEBAIG1haW4gKCkKICAgICBhYm9ydCAoKTsKICAgI3By YWdtYSBvbXAgdGFyZ2V0IGlmICgwKQogICAjcHJhZ21hIG9tcCB0ZWFtcwotICBpZiAob21w X2dldF9sZXZlbCAoKSkKLSAgICBhYm9ydCAoKTsKKyAgI3ByYWdtYSBvbXAgZGlzdHJpYnV0 ZQorICBmb3IgKGludCBpID0gMDsgaSA8IDE7ICsraSkKKyAgICBpZiAob21wX2dldF9sZXZl bCAoKSkKKyAgICAgIGFib3J0ICgpOwogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xp YmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtNS5jIGIvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jL3RhcmdldC01LmMKaW5kZXggMjFhNjllYTY4MTIuLjgyYjg2MzdmNDRi IDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LTUuYwor KysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LTUuYwpAQCAtNTUsNiAr NTUsNyBAQCBtYWluICgpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCBp ZiAoMCkKICAgI3ByYWdtYSBvbXAgdGVhbXMKKyAgI3ByYWdtYSBvbXAgcGFyYWxsZWwKICAg ewogICAgIG9tcF9zY2hlZF90IHNfYzsKICAgICBpbnQgY19jOwpkaWZmIC0tZ2l0IGEvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RhcmdldC02LmMgYi9saWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmMvdGFyZ2V0LTYuYwppbmRleCA4ZmZjYjViNWI2YS4uZTg3OGZhNDFiYjIg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtNi5jCisr KyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtNi5jCkBAIC00NywxMSAr NDcsMTMgQEAgbWFpbiAoKQogCQl7CiAJCSAgI3ByYWdtYSBvbXAgdGVhbXMgdGhyZWFkX2xp bWl0ICgyKQogCQkgICAgewotCQkgICAgICBpZiAob21wX2luX3BhcmFsbGVsICgpCi0JCQkg IHx8IG9tcF9nZXRfbGV2ZWwgKCkgIT0gMAotCQkJICB8fCBvbXBfZ2V0X2FuY2VzdG9yX3Ro cmVhZF9udW0gKDApICE9IDAKLQkJCSAgfHwgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVt ICgxKSAhPSAtMSkKLQkJCWFib3J0ICgpOworCQkgICAgICAjcHJhZ21hIG9tcCBkaXN0cmli dXRlCisJCSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTsgKytpKQorCQkJaWYgKG9tcF9p bl9wYXJhbGxlbCAoKQorCQkJICAgIHx8IG9tcF9nZXRfbGV2ZWwgKCkgIT0gMAorCQkJICAg IHx8IG9tcF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bSAoMCkgIT0gMAorCQkJICAgIHx8IG9t cF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bSAoMSkgIT0gLTEpCisJCQkgIGFib3J0ICgpOwog CQkgICAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyAoMikKIAkJICAgICAg ewogCQkJaWYgKCFvbXBfaW5fcGFyYWxsZWwgKCkKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy90YXJnZXQtdGVhbXMtMS5jIGIvbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5jL3RhcmdldC10ZWFtcy0xLmMKaW5kZXggOGY1OTFlMDJjNDguLmU0MmE5ZWQ5 MTBkIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXRl YW1zLTEuYworKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGFyZ2V0LXRlYW1z LTEuYwpAQCAtMzUsNzYgKzM1LDExNSBAQCBmb28gKGludCBhLCBpbnQgYiwgbG9uZyBjLCBs b25nIGQpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCBtYXAoZnJvbTog ZXJyKQogICAjcHJhZ21hIG9tcCB0ZWFtcwotICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAo KSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxOworICB7CisgICAgZXJyID0g b21wX2dldF9udW1fdGVhbXMgKCkgPCAxOworICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIG1h c2tlZAorICAgIGVyciB8PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDE7CisgIH0KICAg aWYgKGVycikKICAgICBhYm9ydCAoKTsKICAgI3ByYWdtYSBvbXAgdGFyZ2V0IHRlYW1zIG1h cChmcm9tOiBlcnIpCi0gIGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBf Z2V0X3RocmVhZF9saW1pdCAoKSA8IDE7CisgIHsKKyAgICBlcnIgPSBvbXBfZ2V0X251bV90 ZWFtcyAoKSA8IDE7CisgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgbWFza2VkCisgICAgZXJy IHw9IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMTsKKyAgfQogICBpZiAoZXJyKQogICAg IGFib3J0ICgpOwogICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwKGZyb206IGVycikKICAgI3By YWdtYSBvbXAgdGVhbXMgbnVtX3RlYW1zICg0KQotICBlcnIgPSBvbXBfZ2V0X251bV90ZWFt cyAoKSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxCi0JfHwgb21wX2dldF9u dW1fdGVhbXMgKCkgPiA0OworICB7CisgICAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkg PCAxIHx8IG9tcF9nZXRfbnVtX3RlYW1zICgpID4gNDsKKyAgICAjcHJhZ21hIG9tcCBwYXJh bGxlbCBtYXNrZWQKKyAgICBlcnIgfD0gb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxOwor ICB9CiAgIGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCB0 ZWFtcyBudW1fdGVhbXMgKDQpIG1hcChmcm9tOiBlcnIpCi0gIGVyciA9IG9tcF9nZXRfbnVt X3RlYW1zICgpIDwgMSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEKLQl8fCBvbXBf Z2V0X251bV90ZWFtcyAoKSA+IDQ7CisgIHsKKyAgICBlcnIgPSBvbXBfZ2V0X251bV90ZWFt cyAoKSA8IDEgfHwgb21wX2dldF9udW1fdGVhbXMgKCkgPiA0OworICAgICNwcmFnbWEgb21w IHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8 IDE7CisgIH0KICAgaWYgKGVycikKICAgICBhYm9ydCAoKTsKICAgI3ByYWdtYSBvbXAgdGFy Z2V0IG1hcChmcm9tOiBlcnIpCiAgICNwcmFnbWEgb21wIHRlYW1zIHRocmVhZF9saW1pdCAo NykKLSAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFk X2xpbWl0ICgpIDwgMQotCXx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gNzsKKyAgewor ICAgIGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMTsKKyAgICAjcHJhZ21hIG9tcCBw YXJhbGxlbCBtYXNrZWQKKyAgICBlcnIgfD0gb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAx IHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gNzsKKyAgfQogICBpZiAoZXJyKQogICAg IGFib3J0ICgpOwogICAjcHJhZ21hIG9tcCB0YXJnZXQgdGVhbXMgdGhyZWFkX2xpbWl0ICg3 KSBtYXAoZnJvbTogZXJyKQotICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAoKSA8IDEgfHwg b21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxCi0JfHwgb21wX2dldF90aHJlYWRfbGltaXQg KCkgPiA3OworICB7CisgICAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxOworICAg ICNwcmFnbWEgb21wIHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8PSBvbXBfZ2V0X3RocmVh ZF9saW1pdCAoKSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPiA3OworICB9CiAg IGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCBtYXAoZnJv bTogZXJyKQogICAjcHJhZ21hIG9tcCB0ZWFtcyBudW1fdGVhbXMgKDQpIHRocmVhZF9saW1p dCAoOCkKICAgewogICAgIHsKLSAgICAgIGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwg MSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEKLQkgICAgfHwgb21wX2dldF9udW1f dGVhbXMgKCkgPiA0IHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gODsKKyAgICAgIGVy ciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA+ IDQ7CiAgICAgfQorICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8 PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQg KCkgPiA4OwogICB9CiAgIGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21w IHRhcmdldCB0ZWFtcyBudW1fdGVhbXMgKDQpIHRocmVhZF9saW1pdCAoOCkgbWFwKGZyb206 IGVycikKLSAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfdGhy ZWFkX2xpbWl0ICgpIDwgMQotCXx8IG9tcF9nZXRfbnVtX3RlYW1zICgpID4gNCB8fCBvbXBf Z2V0X3RocmVhZF9saW1pdCAoKSA+IDg7CisgIHsKKyAgICBlcnIgPSBvbXBfZ2V0X251bV90 ZWFtcyAoKSA8IDEgfHwgb21wX2dldF9udW1fdGVhbXMgKCkgPiA0OworICAgICNwcmFnbWEg b21wIHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAo KSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPiA4OworICB9CiAgIGlmIChlcnIp CiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCBtYXAoZnJvbTogZXJyKQog ICAjcHJhZ21hIG9tcCB0ZWFtcyBudW1fdGVhbXMgKGEpIHRocmVhZF9saW1pdCAoYikKLSAg ZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0 ICgpIDwgMQotCXx8IG9tcF9nZXRfbnVtX3RlYW1zICgpID4gYSB8fCBvbXBfZ2V0X3RocmVh ZF9saW1pdCAoKSA+IGI7CisgIHsKKyAgICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAoKSA8 IDEgfHwgb21wX2dldF9udW1fdGVhbXMgKCkgPiBhOworICAgICNwcmFnbWEgb21wIHBhcmFs bGVsIG1hc2tlZAorICAgIGVyciB8PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgfHwg b21wX2dldF90aHJlYWRfbGltaXQgKCkgPiBiOworICB9CiAgIGlmIChlcnIpCiAgICAgYWJv cnQgKCk7CiAgICNwcmFnbWEgb21wIHRhcmdldCB0ZWFtcyBudW1fdGVhbXMgKGEpIHRocmVh ZF9saW1pdCAoYikgbWFwKGZyb206IGVycikKLSAgZXJyID0gb21wX2dldF9udW1fdGVhbXMg KCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMQotCXx8IG9tcF9nZXRfbnVt X3RlYW1zICgpID4gYSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA+IGI7CisgIHsKKyAg ICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAoKSA8IDEgfHwgb21wX2dldF9udW1fdGVhbXMg KCkgPiBhOworICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8PSBv bXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkg PiBiOworICB9CiAgIGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAgICNwcmFnbWEgb21wIHRh cmdldCBtYXAoZnJvbTogZXJyKQogICAjcHJhZ21hIG9tcCB0ZWFtcyBudW1fdGVhbXMgKGMg KyAxKSB0aHJlYWRfbGltaXQgKGQgLSAxKQotICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAo KSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxCi0JfHwgb21wX2dldF9udW1f dGVhbXMgKCkgPiBjICsgMSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA+IGQgLSAxOwor ICB7CisgICAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfbnVt X3RlYW1zICgpID4gYyArIDE7CisgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgbWFza2VkCisg ICAgZXJyIHw9IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMSB8fCBvbXBfZ2V0X3RocmVh ZF9saW1pdCAoKSA+IGQgLSAxOworICB9CiAgIGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAg ICNwcmFnbWEgb21wIHRhcmdldCB0ZWFtcyBudW1fdGVhbXMgKGMgKyAxKSB0aHJlYWRfbGlt aXQgKGQgLSAxKSBtYXAoZnJvbTogZXJyKQotICBlcnIgPSBvbXBfZ2V0X251bV90ZWFtcyAo KSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxCi0JfHwgb21wX2dldF9udW1f dGVhbXMgKCkgPiBjICsgMSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA+IGQgLSAxOwor ICB7CisgICAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfbnVt X3RlYW1zICgpID4gYyArIDE7CisgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgbWFza2VkCisg ICAgZXJyIHw9IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMSB8fCBvbXBfZ2V0X3RocmVh ZF9saW1pdCAoKSA+IGQgLSAxOworICB9CiAgIGlmIChlcnIpCiAgICAgYWJvcnQgKCk7CiAg ICNwcmFnbWEgb21wIHRhcmdldCBtYXAgKGFsd2F5cywgdG86IGMsIGQpIG1hcChmcm9tOiBl cnIpCiAgICNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtcyAoYyArIDEpIHRocmVhZF9saW1p dCAoZCAtIDEpCi0gIGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBfZ2V0 X3RocmVhZF9saW1pdCAoKSA8IDEKLQl8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA+IGMgKyAx IHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gZCAtIDE7CisgIHsKKyAgICBlcnIgPSBv bXBfZ2V0X251bV90ZWFtcyAoKSA8IDEgfHwgb21wX2dldF9udW1fdGVhbXMgKCkgPiBjICsg MTsKKyAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBtYXNrZWQKKyAgICBlcnIgfD0gb21wX2dl dF90aHJlYWRfbGltaXQgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gZCAt IDE7CisgIH0KICAgaWYgKGVycikKICAgICBhYm9ydCAoKTsKICAgI3ByYWdtYSBvbXAgdGFy Z2V0IGRhdGEgbWFwICh0bzogYywgZCkKQEAgLTExNiw4ICsxNTUsMTEgQEAgZm9vIChpbnQg YSwgaW50IGIsIGxvbmcgYywgbG9uZyBkKQogICAgICAgIHRoZWlyIGRldmljZSBhbmQgb3Jp Z2luYWwgdmFsdWVzIG1hdGNoIGlzIHVuY2xlYXIuICAqLwogICAgICNwcmFnbWEgb21wIHRh cmdldCBtYXAgKHRvOiBjLCBkKSBtYXAoZnJvbTogZXJyKQogICAgICNwcmFnbWEgb21wIHRl YW1zIG51bV90ZWFtcyAoYyArIDEpIHRocmVhZF9saW1pdCAoZCAtIDEpCi0gICAgZXJyID0g b21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwg MQotCSAgfHwgb21wX2dldF9udW1fdGVhbXMgKCkgPiBjICsgMSB8fCBvbXBfZ2V0X3RocmVh ZF9saW1pdCAoKSA+IGQgLSAxOworICAgIHsKKyAgICAgIGVyciA9IG9tcF9nZXRfbnVtX3Rl YW1zICgpIDwgMSB8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA+IGMgKyAxOworICAgICAgI3By YWdtYSBvbXAgcGFyYWxsZWwgbWFza2VkCisgICAgICBlcnIgfD0gb21wX2dldF90aHJlYWRf bGltaXQgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gZCAtIDE7CisgICAg fQogICAgIGlmIChlcnIpCiAgICAgICBhYm9ydCAoKTsKICAgfQpAQCAtMTI1LDIxICsxNjcs MzAgQEAgZm9vIChpbnQgYSwgaW50IGIsIGxvbmcgYywgbG9uZyBkKQogICAgICB0YXJnZXQg aW52b2x2ZWQuICAqLwogICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwKGZyb206IGVycikKICAg I3ByYWdtYSBvbXAgdGVhbXMgbnVtX3RlYW1zIChiYXogKCkgKyAxKSB0aHJlYWRfbGltaXQg KGJheiAoKSAtIDEpCi0gIGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBf Z2V0X3RocmVhZF9saW1pdCAoKSA8IDEKLQl8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA+IGJh eiAoKSArIDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPiBiYXogKCkgLSAxOworICB7 CisgICAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfbnVtX3Rl YW1zICgpID4gYmF6ICgpICsgMTsKKyAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBtYXNrZWQK KyAgICBlcnIgfD0gb21wX2dldF90aHJlYWRfbGltaXQgKCkgPCAxIHx8IG9tcF9nZXRfdGhy ZWFkX2xpbWl0ICgpID4gYmF6ICgpIC0gMTsKKyAgfQogICBpZiAoZXJyKQogICAgIGFib3J0 ICgpOwogICAjcHJhZ21hIG9tcCB0YXJnZXQgdGVhbXMgbnVtX3RlYW1zIChiYXogKCkgKyAx KSB0aHJlYWRfbGltaXQgKGJheiAoKSAtIDEpIG1hcChmcm9tOiBlcnIpCi0gIGVyciA9IG9t cF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEK LQl8fCBvbXBfZ2V0X251bV90ZWFtcyAoKSA+IGJheiAoKSArIDEgfHwgb21wX2dldF90aHJl YWRfbGltaXQgKCkgPiBiYXogKCkgLSAxOworICB7CisgICAgZXJyID0gb21wX2dldF9udW1f dGVhbXMgKCkgPCAxIHx8IG9tcF9nZXRfbnVtX3RlYW1zICgpID4gYmF6ICgpICsgMTsKKyAg ICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBtYXNrZWQKKyAgICBlcnIgfD0gb21wX2dldF90aHJl YWRfbGltaXQgKCkgPCAxIHx8IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gYmF6ICgpIC0g MTsKKyAgfQogICBpZiAoZXJyKQogICAgIGFib3J0ICgpOwogICAvKiBUaGlzIG9uZSBjYW4n dCBiZSBvcHRpbWl6ZWQsIGFzIHYgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgYmV0d2Vl bgogICAgICBob3N0IGFuZCB0YXJnZXQuICAqLwogICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFw KGZyb206IGVycikKICAgI3ByYWdtYSBvbXAgdGVhbXMgbnVtX3RlYW1zICh2ICsgMSkgdGhy ZWFkX2xpbWl0ICh2IC0gMSkKLSAgZXJyID0gb21wX2dldF9udW1fdGVhbXMgKCkgPCAxIHx8 IG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMQotCXx8IG9tcF9nZXRfbnVtX3RlYW1zICgp ID4gdiArIDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQgKCkgPiB2IC0gMTsKKyAgeworICAg IGVyciA9IG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSB8fCBvbXBfZ2V0X251bV90ZWFtcyAo KSA+IHYgKyAxOworICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIG1hc2tlZAorICAgIGVyciB8 PSBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgfHwgb21wX2dldF90aHJlYWRfbGltaXQg KCkgPiB2IC0gMTsKKyAgfQogICBpZiAoZXJyKQogICAgIGFib3J0ICgpOwogfQpkaWZmIC0t Z2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RlYW1zLTEuYyBiL2xpYmdvbXAv dGVzdHN1aXRlL2xpYmdvbXAuYy90ZWFtcy0xLmMKaW5kZXggOTc3ZTVmYzUzMjMuLjAyM2Qz MGVhZmUzIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGVhbXMt MS5jCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90ZWFtcy0xLmMKQEAgLTYs MTUgKzYsMTcgQEAKIGludAogbWFpbiAoKQogeworICBvbXBfc2V0X2R5bmFtaWMgKDApOwor ICBvbXBfc2V0X25lc3RlZCAoMSk7CiAgICNwcmFnbWEgb21wIHRlYW1zIHRocmVhZF9saW1p dCAoMikKICAgeworICAgICNwcmFnbWEgb21wIGRpc3RyaWJ1dGUKKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IDE7ICsraSkKICAgICBpZiAob21wX2luX3BhcmFsbGVsICgpCiAJfHwgb21w X2dldF9sZXZlbCAoKSAhPSAwCiAJfHwgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtICgw KSAhPSAwCiAJfHwgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtICgxKSAhPSAtMSkKICAg ICAgIGFib3J0ICgpOwotICAgIG9tcF9zZXRfZHluYW1pYyAoMCk7Ci0gICAgb21wX3NldF9u ZXN0ZWQgKDEpOwogICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzICgyKQog ICAgIHsKICAgICAgIGlmICghb21wX2luX3BhcmFsbGVsICgpCmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTIuYyBiL2xpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy90aHJlYWQtbGltaXQtMi5jCmluZGV4IDJjZmYxZmQ0OGMzLi43 OTk3YTcwYWRjMyAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3Ro cmVhZC1saW1pdC0yLmMKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RocmVh ZC1saW1pdC0yLmMKQEAgLTIwLDI1ICsyMCwyNiBAQCBtYWluICgpCiAgIGlmIChvbXBfZ2V0 X251bV90aHJlYWRzICgpID4gOSkKICAgICBhYm9ydCAoKTsKICAgI3ByYWdtYSBvbXAgdGFy Z2V0IGlmICgwKQotICAjcHJhZ21hIG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKDYpCiAgIHsK LSAgICBpZiAob21wX2dldF90aHJlYWRfbGltaXQgKCkgPiA2KQotICAgICAgYWJvcnQgKCk7 Ci0gICAgaWYgKG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID09IDYpCisgICAgb21wX3NldF9k eW5hbWljICgwKTsKKyAgICBvbXBfc2V0X25lc3RlZCAoMSk7CisgICAgI3ByYWdtYSBvbXAg dGVhbXMgdGhyZWFkX2xpbWl0ICg2KQogICAgICAgewotCW9tcF9zZXRfZHluYW1pYyAoMCk7 Ci0Jb21wX3NldF9uZXN0ZWQgKDEpOwogCSNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJl YWRzICgzKQotCWlmIChvbXBfZ2V0X251bV90aHJlYWRzICgpICE9IDMpCisJaWYgKG9tcF9n ZXRfdGhyZWFkX2xpbWl0ICgpID4gNgorCSAgICB8fCAob21wX2dldF90aHJlYWRfbGltaXQg KCkgPT0gNiAmJiBvbXBfZ2V0X251bV90aHJlYWRzICgpICE9IDMpKQogCSAgYWJvcnQgKCk7 CiAJI3ByYWdtYSBvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKDMpCi0JaWYgKG9tcF9nZXRf bnVtX3RocmVhZHMgKCkgIT0gMykKKwlpZiAob21wX2dldF90aHJlYWRfbGltaXQgKCkgPiA2 CisJICAgIHx8IChvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA9PSA2ICYmIG9tcF9nZXRfbnVt X3RocmVhZHMgKCkgIT0gMykpCiAJICBhYm9ydCAoKTsKIAkjcHJhZ21hIG9tcCBwYXJhbGxl bCBudW1fdGhyZWFkcyAoOCkKLQlpZiAob21wX2dldF9udW1fdGhyZWFkcyAoKSA+IDYpCisJ aWYgKG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gNgorCSAgICB8fCAob21wX2dldF90aHJl YWRfbGltaXQgKCkgPT0gNiAmJiBvbXBfZ2V0X251bV90aHJlYWRzICgpID4gNikpCiAJICBh Ym9ydCAoKTsKIAkjcHJhZ21hIG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyAoNikKLQlpZiAo b21wX2dldF9udW1fdGhyZWFkcyAoKSAhPSA2KQorCWlmIChvbXBfZ2V0X3RocmVhZF9saW1p dCAoKSA+IDYKKwkgICAgfHwgKG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID09IDYgJiYgb21w X2dldF9udW1fdGhyZWFkcyAoKSAhPSA2KSkKIAkgIGFib3J0ICgpOwogCWludCBjbnQgPSAw OwogCSNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzICg1KQpkaWZmIC0tZ2l0IGEv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RocmVhZC1saW1pdC0zLmMgYi9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTMuYwppbmRleCBhZjliZDc4ODdh Yi4uNTAwYzFmYjNjMmMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy90aHJlYWQtbGltaXQtMy5jCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90 aHJlYWQtbGltaXQtMy5jCkBAIC02LDYgKzYsNyBAQCBtYWluICgpCiB7CiAgICNwcmFnbWEg b21wIHRhcmdldCBpZiAoMCkKICAgI3ByYWdtYSBvbXAgdGVhbXMgdGhyZWFkX2xpbWl0ICgx KQorICAjcHJhZ21hIG9tcCBwYXJhbGxlbAogICBpZiAob21wX2dldF90aHJlYWRfbGltaXQg KCkgIT0gMSkKICAgICBhYm9ydCAoKTsKICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTQuYyBiL2xpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy90aHJlYWQtbGltaXQtNC5jCmluZGV4IDM1MTQyM2NhYjk0Li5j NmNjYzdkNjMzMCAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3Ro cmVhZC1saW1pdC00LmMKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RocmVh ZC1saW1pdC00LmMKQEAgLTE4LDI1ICsxOCwyNSBAQCBtYWluICgpCiAgICNwcmFnbWEgb21w IHBhcmFsbGVsIG51bV90aHJlYWRzICgxNikKICAgaWYgKG9tcF9nZXRfbnVtX3RocmVhZHMg KCkgPiA5KQogICAgIGFib3J0ICgpOworICBvbXBfc2V0X2R5bmFtaWMgKDApOworICBvbXBf c2V0X25lc3RlZCAoMSk7CiAgICNwcmFnbWEgb21wIHRlYW1zIHRocmVhZF9saW1pdCAoNikK LSAgewotICAgIGlmIChvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA+IDYpCi0gICAgICBhYm9y dCAoKTsKLSAgICBpZiAob21wX2dldF90aHJlYWRfbGltaXQgKCkgPT0gNikKLSAgICAgIHsK LQlvbXBfc2V0X2R5bmFtaWMgKDApOwotCW9tcF9zZXRfbmVzdGVkICgxKTsKKyAgICB7CiAJ I3ByYWdtYSBvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKDMpCi0JaWYgKG9tcF9nZXRfbnVt X3RocmVhZHMgKCkgIT0gMykKKwlpZiAob21wX2dldF90aHJlYWRfbGltaXQgKCkgPiA2CisJ ICAgIHx8IChvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA9PSA2ICYmIG9tcF9nZXRfbnVtX3Ro cmVhZHMgKCkgIT0gMykpCiAJICBhYm9ydCAoKTsKIAkjcHJhZ21hIG9tcCBwYXJhbGxlbCBu dW1fdGhyZWFkcyAoMykKLQlpZiAob21wX2dldF9udW1fdGhyZWFkcyAoKSAhPSAzKQorCWlm IChvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA+IDYKKwkgICAgfHwgKG9tcF9nZXRfdGhyZWFk X2xpbWl0ICgpID09IDYgJiYgb21wX2dldF9udW1fdGhyZWFkcyAoKSAhPSAzKSkKIAkgIGFi b3J0ICgpOwogCSNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzICg4KQotCWlmIChv bXBfZ2V0X251bV90aHJlYWRzICgpID4gNikKKwlpZiAob21wX2dldF90aHJlYWRfbGltaXQg KCkgPiA2CisJICAgIHx8IChvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA9PSA2ICYmIG9tcF9n ZXRfbnVtX3RocmVhZHMgKCkgPiA2KSkKIAkgIGFib3J0ICgpOwogCSNwcmFnbWEgb21wIHBh cmFsbGVsIG51bV90aHJlYWRzICg2KQotCWlmIChvbXBfZ2V0X251bV90aHJlYWRzICgpICE9 IDYpCisJaWYgKG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gNgorCSAgICB8fCAob21wX2dl dF90aHJlYWRfbGltaXQgKCkgPT0gNiAmJiBvbXBfZ2V0X251bV90aHJlYWRzICgpICE9IDYp KQogCSAgYWJvcnQgKCk7CiAJaW50IGNudCA9IDA7CiAJI3ByYWdtYSBvbXAgcGFyYWxsZWwg bnVtX3RocmVhZHMgKDUpCkBAIC01Miw3ICs1Miw2IEBAIG1haW4gKCkKIAkgICNwcmFnbWEg b21wIGF0b21pYwogCSAgLS1jbnQ7CiAJfQotICAgICAgfQotICB9CisgICAgfQogICByZXR1 cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy90aHJl YWQtbGltaXQtNS5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3RocmVhZC1saW1p dC01LmMKaW5kZXggZDNkMjJiMWUxYTYuLjQ0ZWViN2I5ZGMxIDEwMDY0NAotLS0gYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTUuYworKysgYi9saWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmMvdGhyZWFkLWxpbWl0LTUuYwpAQCAtNSw2ICs1LDcgQEAg aW50CiBtYWluICgpCiB7CiAgICNwcmFnbWEgb21wIHRlYW1zIHRocmVhZF9saW1pdCAoMSkK KyAgI3ByYWdtYSBvbXAgcGFyYWxsZWwKICAgaWYgKG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgp ICE9IDEpCiAgICAgYWJvcnQgKCk7CiAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2ljdi0zLmY5MCBiL2xpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuZm9ydHJhbi9pY3YtMy5mOTAKaW5kZXggYjJjY2Q3NzYyMjMuLjY0NTA2 M2I5NTRlIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v aWN2LTMuZjkwCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9pY3Yt My5mOTAKQEAgLTEzLDYgKzEzLDcgQEAgaW1wbGljaXQgbm9uZSAodHlwZSwgZXh0ZXJuYWwp CiAgIGlmIChvbXBfZ2V0X3RlYW1zX3RocmVhZF9saW1pdCAoKSAvPSAxNSkgJgogICAgIGVy cm9yIHN0b3AgNAogICAhJG9tcCB0ZWFtcworICAgISRvbXAgcGFyYWxsZWwKICAgICBpZiAo b21wX2dldF9tYXhfdGVhbXMgKCkgLz0gNyAmCiAgICAgICAgIC5vci4gb21wX2dldF90ZWFt c190aHJlYWRfbGltaXQgKCkgLz0gMTUgJgogICAgICAgICAub3IuIG9tcF9nZXRfbnVtX3Rl YW1zICgpIDwgMSAmCkBAIC0yMiw4ICsyMywxMCBAQCBpbXBsaWNpdCBub25lICh0eXBlLCBl eHRlcm5hbCkKICAgICAgICAgLm9yLiBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgJgog ICAgICAgICAub3IuIG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gMTUpICYKICAgICAgIGVy cm9yIHN0b3AgNQorICAgISRvbXAgZW5kIHBhcmFsbGVsCiAgICEkb21wIGVuZCB0ZWFtcwog ICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoNSkgdGhyZWFkX2xpbWl0ICgxMykKKyAgICEkb21w IHBhcmFsbGVsCiAgICAgaWYgKG9tcF9nZXRfbWF4X3RlYW1zICgpIC89IDcgJgogICAgICAg ICAub3IuIG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0ICgpIC89IDE1ICYKICAgICAgICAg Lm9yLiBvbXBfZ2V0X251bV90ZWFtcyAoKSAvPSA1ICYKQEAgLTMyLDggKzM1LDEwIEBAIGlt cGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQogICAgICAgICAub3IuIG9tcF9nZXRfdGhy ZWFkX2xpbWl0ICgpIDwgMSAmCiAgICAgICAgIC5vci4gb21wX2dldF90aHJlYWRfbGltaXQg KCkgPiAxMykgJgogICAgICAgZXJyb3Igc3RvcCA2CisgICAhJG9tcCBlbmQgcGFyYWxsZWwK ICAgISRvbXAgZW5kIHRlYW1zCiAgICEkb21wIHRlYW1zIG51bV90ZWFtcyg4KSB0aHJlYWRf bGltaXQgKDE2KQorICAgISRvbXAgcGFyYWxsZWwKICAgICBpZiAob21wX2dldF9tYXhfdGVh bXMgKCkgLz0gNyAmCiAgICAgICAgIC5vci4gb21wX2dldF90ZWFtc190aHJlYWRfbGltaXQg KCkgLz0gMTUgJgogICAgICAgICAub3IuIG9tcF9nZXRfbnVtX3RlYW1zICgpIC89IDggJgpA QCAtNDIsNiArNDcsNyBAQCBpbXBsaWNpdCBub25lICh0eXBlLCBleHRlcm5hbCkKICAgICAg ICAgLm9yLiBvbXBfZ2V0X3RocmVhZF9saW1pdCAoKSA8IDEgJgogICAgICAgICAub3IuIG9t cF9nZXRfdGhyZWFkX2xpbWl0ICgpID4gMTYpICYKICAgICAgIGVycm9yIHN0b3AgNworICAg ISRvbXAgZW5kIHBhcmFsbGVsCiAgICEkb21wIGVuZCB0ZWFtcwogY29udGFpbnMKICAgbG9n aWNhbCBmdW5jdGlvbiBlbnZfZXhpc3RzIChuYW1lKQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2ljdi00LmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuZm9ydHJhbi9pY3YtNC5mOTAKaW5kZXggZjc2Yzk2ZDdkMGQuLjRmODg4YTgw ODUyIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vaWN2 LTQuZjkwCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9pY3YtNC5m OTAKQEAgLTE2LDYgKzE2LDcgQEAgaW1wbGljaXQgbm9uZSAodHlwZSwgZXh0ZXJuYWwpCiAg ICAgY2FsbCBvbXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdCAoMTIpCiAgIGVuZCBpZgogICAh JG9tcCB0ZWFtcworICAgISRvbXAgcGFyYWxsZWwKICAgICBpZiAob21wX2dldF9tYXhfdGVh bXMgKCkgLz0gNiAmCiAgICAgICAgIC5vci4gb21wX2dldF90ZWFtc190aHJlYWRfbGltaXQg KCkgLz0gMTIgJgogICAgICAgICAub3IuIG9tcF9nZXRfbnVtX3RlYW1zICgpIDwgMSAmCkBA IC0yNSw2ICsyNiw3IEBAIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQogICAgICAg ICAub3IuIG9tcF9nZXRfdGhyZWFkX2xpbWl0ICgpIDwgMSAmCiAgICAgICAgIC5vci4gb21w X2dldF90aHJlYWRfbGltaXQgKCkgPiAxMikgJgogICAgICAgZXJyb3Igc3RvcCAzCisgICAh JG9tcCBlbmQgcGFyYWxsZWwKICAgISRvbXAgZW5kIHRlYW1zCiBjb250YWlucwogICBsb2dp Y2FsIGZ1bmN0aW9uIGVudl9pc19zZXQgKG5hbWUsIHZhbCkKZGlmZiAtLWdpdCBhL2xpYmdv bXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90ZWFtczEuZjkwIGIvbGliZ29tcC90ZXN0 c3VpdGUvbGliZ29tcC5mb3J0cmFuL3RlYW1zMS5mOTAKaW5kZXggMDA3N2E3MDNmNzQuLjQ5 MDYwNDBkMDE5IDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRy YW4vdGVhbXMxLmY5MAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v dGVhbXMxLmY5MApAQCAtMiwxMyArMiwxNyBAQAogCiBwcm9ncmFtIHRlYW1zMQogICB1c2Ug b21wX2xpYgorICBpbnRlZ2VyIDo6IGkKICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoMikK LSAgaWYgKG9tcF9pbl9wYXJhbGxlbCAoKSkgc3RvcCAxCi0gIGlmIChvbXBfZ2V0X2xldmVs ICgpIC5uZS4gMCkgc3RvcCAyCi0gIGlmIChvbXBfZ2V0X2FuY2VzdG9yX3RocmVhZF9udW0g KDApIC5uZS4gMCkgc3RvcCAzCi0gIGlmIChvbXBfZ2V0X2FuY2VzdG9yX3RocmVhZF9udW0g KDEpIC5uZS4gLTEpIHN0b3AgNAotICBjYWxsIG9tcF9zZXRfZHluYW1pYyAoLmZhbHNlLikK LSAgY2FsbCBvbXBfc2V0X25lc3RlZCAoLnRydWUuKQorICAhJG9tcCBkaXN0cmlidXRlCisg IGRvIGkgPSAxLCAxCisgICAgaWYgKG9tcF9pbl9wYXJhbGxlbCAoKSkgc3RvcCAxCisgICAg aWYgKG9tcF9nZXRfbGV2ZWwgKCkgLm5lLiAwKSBzdG9wIDIKKyAgICBpZiAob21wX2dldF9h bmNlc3Rvcl90aHJlYWRfbnVtICgwKSAubmUuIDApIHN0b3AgMworICAgIGlmIChvbXBfZ2V0 X2FuY2VzdG9yX3RocmVhZF9udW0gKDEpIC5uZS4gLTEpIHN0b3AgNAorICAgIGNhbGwgb21w X3NldF9keW5hbWljICguZmFsc2UuKQorICAgIGNhbGwgb21wX3NldF9uZXN0ZWQgKC50cnVl LikKKyAgZW5kIGRvCiAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyAoMikKICAgaWYgKC5u b3QuIG9tcF9pbl9wYXJhbGxlbCAoKSkgc3RvcCA1CiAgIGlmIChvbXBfZ2V0X2xldmVsICgp IC5uZS4gMSkgc3RvcCA2Cg== --------------XjhXz9ISPP96Dx0s5daFS8wW--