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 E8E303858D32 for ; Thu, 1 Dec 2022 11:10:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E8E303858D32 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.96,209,1665475200"; d="scan'208,223";a="91368376" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 01 Dec 2022 03:10:42 -0800 IronPort-SDR: 6D3j5NiCxsoPzzR0hOoI+hOxUn7viAKqax8HTZ26EIYXdaULJay5luAKBlTFvIV9oDtMRpGi6N b++17sG1kXKLn0ygOV+LEaIdE1OnQkR51MeCz1VpUpY9dcB6QpK6YjQXqPhV0p0GxFWuz0x01i +1y4M2HYGUk2CiJ/x13CrVVhoIKiYMf3LXRQ6JeG1PyYy4WjIpbJox9wpTbQsX5436590+oZFp p41zdng3wLkfMLJvG0cIkalZ0HGAt0Nbodb1YHXtYeiPeSYDQDGJIKFfme1Ij4PTXcYiGzW2f7 E1Q= Content-Type: multipart/mixed; boundary="------------a7VHEAN55ScuEA4nadVT6vFH" Message-ID: <82a884ed-ea1d-5116-fedf-42de6e22e730@codesourcery.com> Date: Thu, 1 Dec 2022 12:10:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [PATCH][OG12] amdgcn: Support AMD-specific 'isa' and 'arch' traits in OpenMP context selectors Content-Language: en-GB To: Kwok Cheung Yeung CC: gcc-patches References: <202ee18b-90c8-830b-82a5-b705a9ec5c73@gmail.com> From: Paul-Antoine Arras In-Reply-To: <202ee18b-90c8-830b-82a5-b705a9ec5c73@gmail.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,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: --------------a7VHEAN55ScuEA4nadVT6vFH Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit Hi Kwok, On 30/11/2022 19:50, Kwok Cheung Yeung wrote: > Hello PA, > >> --- libgomp/config/gcn/selector.c >> +++ libgomp/config/gcn/selector.c >> @@ -36,7 +36,7 @@ GOMP_evaluate_current_device (const char *kind, >> const char *arch, >>    if (kind && strcmp (kind, "gpu") != 0) >>      return false; >> >> -  if (arch && strcmp (arch, "gcn") != 0) >> +  if (arch && (strcmp (arch, "gcn") != 0 || strcmp (arch, "amdgcn") >> != 0)) >>      return false; > > The logic here looks wrong to me - surely it should return false if arch > is not 'gcn' AND it is not 'amdgcn'? Sure. Fixed in revised patch. >> @@ -48,8 +48,17 @@ GOMP_evaluate_current_device (const char *kind, >> const char *arch, >>  #endif >> >>  #ifdef __GCN5__ >> -  if (strcmp (isa, "gfx900") == 0 || strcmp (isa, "gfx906") != 0 >> -      || strcmp (isa, "gfx908") == 0) >> +  if (strcmp (isa, "gfx900") == 0 || strcmp (isa, "gfx906") != 0) >> +    return true; >> +#endif >> + >> +#ifdef __CDNA1__ >> +  if (strcmp (isa, "gfx908") == 0) >> +    return true; >> +#endif >> + >> +#ifdef __CDNA2__ >> +  if (strcmp (isa, "gfx90a") == 0) >>      return true; >>  #endif > > Okay for gfx908 and gfx90a, but is there any way of distinguishing > between 'gfx900' and 'gfx906' ISAs? I don't think these are mutually > compatible. > Since I did not find any existing builtin to check the exact ISA, I added all of them for consistency. Let me know if that looks good to you. Thanks, -- PA --------------a7VHEAN55ScuEA4nadVT6vFH Content-Type: text/plain; charset="UTF-8"; name="0001-amdgcn-Support-AMD-specific-isa-and-arch-traits-in-O.patch" Content-Disposition: attachment; filename*0="0001-amdgcn-Support-AMD-specific-isa-and-arch-traits-in-O.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmODQ2MjkyZDJjZTk1M2E2MzNmZTQwMDIyNjI3N2NmMGNiMGQ2MjQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsLUFudG9pbmUgQXJyYXMgPHBhQGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IFdlZCwgMzAgTm92IDIwMjIgMTQ6NTI6NTUgKzAxMDAKU3ViamVj dDogW1BBVENIXSBhbWRnY246IFN1cHBvcnQgQU1ELXNwZWNpZmljICdpc2EnIGFuZCAnYXJj aCcgdHJhaXRzIGluCiBPcGVuTVAgY29udGV4dCBzZWxlY3RvcnMKCkFkZCBvciBmaXggbGli Z29tcCBzdXBwb3J0IGZvciAnYW1kZ2NuJyBhcyBhcmNoLCBhbmQgJ2dmeDkwOCcgYW5kICdn Zng5MGEnIGFzIGlzYSB0cmFpdHMuCkFkZCB0ZXN0IGNhc2UgZm9yIGFsbCBzdXBwb3J0ZWQg J2lzYScgdmFsdWVzIHVzZWQgYXMgY29udGV4dCBzZWxlY3RvcnMgaW4gYSBtZXRhZGlyZWN0 aXZlIGNvbnN0cnVjdC4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoKCSogY29uZmlnL2djbi9zZWxl Y3Rvci5jIChHT01QX2V2YWx1YXRlX2N1cnJlbnRfZGV2aWNlKTogUmVjb2duaXNlICdhbWRn Y24nIGFzIGFyY2gsIGFuZCAnZ2Z4OTA4JyBhbmQKCSdnZng5MGEnIGFzIGlzYSB0cmFpdHMu CgkqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9tZXRhZGlyZWN0aXZlLTYuYzog TmV3IHRlc3QuCi0tLQogZ2NjL2NvbmZpZy9nY24vZ2NuLW9wdHMuaCAgICAgICAgICAgICAg ICAgICAgIHwgIDYgKysrCiBnY2MvY29uZmlnL2djbi9nY24uaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAzNyArKysrKysrKy0tLS0tLQogbGliZ29tcC9jb25maWcvZ2NuL3NlbGVj dG9yLmMgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKystLQogLi4uL2xpYmdvbXAuYy1j KystY29tbW9uL21ldGFkaXJlY3RpdmUtNi5jICAgIHwgNDggKysrKysrKysrKysrKysrKysr KwogNCBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNv bW1vbi9tZXRhZGlyZWN0aXZlLTYuYwoKZGlmZiAtLWdpdCBnY2MvY29uZmlnL2djbi9nY24t b3B0cy5oIGdjYy9jb25maWcvZ2NuL2djbi1vcHRzLmgKaW5kZXggMDdkZGM3OWNkYTMuLmZi N2U1ZDlhNWU5IDEwMDY0NAotLS0gZ2NjL2NvbmZpZy9nY24vZ2NuLW9wdHMuaAorKysgZ2Nj L2NvbmZpZy9nY24vZ2NuLW9wdHMuaApAQCAtMjcsNiArMjcsMTIgQEAgZW51bSBwcm9jZXNz b3JfdHlwZQogICBQUk9DRVNTT1JfR0ZYOTBhCiB9OwogCisjZGVmaW5lIFRBUkdFVF9GSUpJ IChnY25fYXJjaCA9PSBQUk9DRVNTT1JfRklKSSkKKyNkZWZpbmUgVEFSR0VUX1ZFR0ExMCAo Z2NuX2FyY2ggPT0gUFJPQ0VTU09SX1ZFR0ExMCkKKyNkZWZpbmUgVEFSR0VUX1ZFR0EyMCAo Z2NuX2FyY2ggPT0gUFJPQ0VTU09SX1ZFR0EyMCkKKyNkZWZpbmUgVEFSR0VUX0dGWDkwOCAo Z2NuX2FyY2ggPT0gUFJPQ0VTU09SX0dGWDkwOCkKKyNkZWZpbmUgVEFSR0VUX0dGWDkwYSAo Z2NuX2FyY2ggPT0gUFJPQ0VTU09SX0dGWDkwYSkKKwogLyogU2V0IGluIGdjbl9vcHRpb25f b3ZlcnJpZGUuICAqLwogZXh0ZXJuIGVudW0gZ2NuX2lzYSB7CiAgIElTQV9VTktOT1dOLApk aWZmIC0tZ2l0IGdjYy9jb25maWcvZ2NuL2djbi5oIGdjYy9jb25maWcvZ2NuL2djbi5oCmlu ZGV4IDM4ZjcyMTJkYjU5Li4yMmE5NWJhNjYwOSAxMDA2NDQKLS0tIGdjYy9jb25maWcvZ2Nu L2djbi5oCisrKyBnY2MvY29uZmlnL2djbi9nY24uaApAQCAtMTYsMjAgKzE2LDI5IEBACiAK ICNpbmNsdWRlICJjb25maWcvZ2NuL2djbi1vcHRzLmgiCiAKLSNkZWZpbmUgVEFSR0VUX0NQ VV9DUFBfQlVJTFRJTlMoKQlcCi0gIGRvCQkJCQlcCi0gICAgewkJCQkJXAotICAgICAgYnVp bHRpbl9kZWZpbmUgKCJfX0FNREdDTl9fIik7CVwKLSAgICAgIGlmIChUQVJHRVRfR0NOMykJ CQlcCi0JYnVpbHRpbl9kZWZpbmUgKCJfX0dDTjNfXyIpOwlcCi0gICAgICBlbHNlIGlmIChU QVJHRVRfR0NONSkJCVwKLQlidWlsdGluX2RlZmluZSAoIl9fR0NONV9fIik7CVwKLSAgICAg IGVsc2UgaWYgKFRBUkdFVF9DRE5BMSkJCVwKLQlidWlsdGluX2RlZmluZSAoIl9fQ0ROQTFf XyIpOwlcCi0gICAgICBlbHNlIGlmIChUQVJHRVRfQ0ROQTIpCQlcCi0JYnVpbHRpbl9kZWZp bmUgKCJfX0NETkEyX18iKTsJXAotICAgIH0JCQkJCVwKLSAgd2hpbGUoMCkKKyNkZWZpbmUg VEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19BTURHQ05f XyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICBpZiAoVEFSR0VUX0dDTjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorCWJ1aWx0aW5fZGVmaW5lICgiX19HQ04zX18iKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxz ZSBpZiAoVEFSR0VUX0dDTjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKwlidWlsdGluX2RlZmluZSAoIl9fR0NONV9fIik7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVsc2UgaWYg KFRBUkdFVF9DRE5BMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisJYnVpbHRpbl9kZWZpbmUgKCJfX0NETkExX18iKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIGlmIChUQVJH RVRfQ0ROQTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorCWJ1aWx0aW5fZGVmaW5lICgiX19DRE5BMl9fIik7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFRBUkdFVF9GSUpJKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKwlidWlsdGluX2RlZmluZSAoIl9fRklKSV9fIik7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9WRUdBMTAp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJ YnVpbHRpbl9kZWZpbmUgKCJfX1ZFR0ExMF9fIik7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIGlmIChUQVJHRVRfVkVHQTIwKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWJ1aWx0 aW5fZGVmaW5lICgiX19WRUdBMjBfXyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgZWxzZSBpZiAoVEFSR0VUX0dGWDkwOCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlidWlsdGluX2Rl ZmluZSAoIl9fR0ZYOTA4X18iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9HRlg5MGEpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJYnVpbHRpbl9kZWZpbmUg KCJfX0dGWDkwYV9fIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgIH0gd2hpbGUgKDApCiAKIC8qIFN1cHBvcnQgZm9yIGEgY29tcGlsZS10aW1lIGRl ZmF1bHQgYXJjaGl0ZWN0dXJlIGFuZCB0dW5pbmcuCiAgICBUaGUgcnVsZXMgYXJlOgpkaWZm IC0tZ2l0IGxpYmdvbXAvY29uZmlnL2djbi9zZWxlY3Rvci5jIGxpYmdvbXAvY29uZmlnL2dj bi9zZWxlY3Rvci5jCmluZGV4IDYwNzkzZmMwNWQzLi5iMDdiZGI5YjdjNyAxMDA2NDQKLS0t IGxpYmdvbXAvY29uZmlnL2djbi9zZWxlY3Rvci5jCisrKyBsaWJnb21wL2NvbmZpZy9nY24v c2VsZWN0b3IuYwpAQCAtMzYsMjAgKzM2LDM0IEBAIEdPTVBfZXZhbHVhdGVfY3VycmVudF9k ZXZpY2UgKGNvbnN0IGNoYXIgKmtpbmQsIGNvbnN0IGNoYXIgKmFyY2gsCiAgIGlmIChraW5k ICYmIHN0cmNtcCAoa2luZCwgImdwdSIpICE9IDApCiAgICAgcmV0dXJuIGZhbHNlOwogCi0g IGlmIChhcmNoICYmIHN0cmNtcCAoYXJjaCwgImdjbiIpICE9IDApCisgIGlmIChhcmNoICYm IChzdHJjbXAgKGFyY2gsICJnY24iKSAhPSAwICYmIHN0cmNtcCAoYXJjaCwgImFtZGdjbiIp ICE9IDApKQogICAgIHJldHVybiBmYWxzZTsKIAogICBpZiAoIWlzYSkKICAgICByZXR1cm4g dHJ1ZTsKIAotI2lmZGVmIF9fR0NOM19fCisjaWZkZWYgX19GSUpJX18KICAgaWYgKHN0cmNt cCAoaXNhLCAiZmlqaSIpID09IDAgfHwgc3RyY21wIChpc2EsICJnZng4MDMiKSA9PSAwKQog ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSNpZmRlZiBfX0dDTjVfXwotICBpZiAoc3Ry Y21wIChpc2EsICJnZng5MDAiKSA9PSAwIHx8IHN0cmNtcCAoaXNhLCAiZ2Z4OTA2IikgIT0g MAotICAgICAgfHwgc3RyY21wIChpc2EsICJnZng5MDgiKSA9PSAwKQorI2lmZGVmIF9fVkVH QTEwX18KKyAgaWYgKHN0cmNtcCAoaXNhLCAiZ2Z4OTAwIikgPT0gMCkKKyAgICByZXR1cm4g dHJ1ZTsKKyNlbmRpZgorCisjaWZkZWYgX19WRUdBMjBfXworICBpZiAoc3RyY21wIChpc2Es ICJnZng5MDYiKSAhPSAwKQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyNpZmRlZiBf X0dGWDkwOF9fCisgIGlmIChzdHJjbXAgKGlzYSwgImdmeDkwOCIpID09IDApCisgICAgcmV0 dXJuIHRydWU7CisjZW5kaWYKKworI2lmZGVmIF9fR0ZYOTBhX18KKyAgaWYgKHN0cmNtcCAo aXNhLCAiZ2Z4OTBhIikgPT0gMCkKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYg LS1naXQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vbWV0YWRpcmVj dGl2ZS02LmMgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vbWV0YWRp cmVjdGl2ZS02LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZk MTY5MDAxZGIxCi0tLSAvZGV2L251bGwKKysrIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL21ldGFkaXJlY3RpdmUtNi5jCkBAIC0wLDAgKzEsNDggQEAKKy8qIHsg ZGctZG8gbGluayB7IHRhcmdldCB7IG9mZmxvYWRfdGFyZ2V0X2FtZGdjbiB9IH0gfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb2ZmbG9hZD0tZmR1bXAtdHJlZS1vbXBf ZXhwYW5kX21ldGFkaXJlY3RpdmUiIH0gKi8KKworI2RlZmluZSBOIDEwMAorCit2b2lkIGYg KGludCB4W10sIGludCB5W10sIGludCB6W10pCit7CisgIGludCBpOworCisgICNwcmFnbWEg b21wIHRhcmdldCBtYXAodG86IHgsIHkpIG1hcChmcm9tOiB6KQorICAgICNwcmFnbWEgb21w IG1ldGFkaXJlY3RpdmUgXAorICAgICAgd2hlbiAoZGV2aWNlPXtpc2EoImdmeDgwMyIpfTog dGVhbXMgbnVtX3RlYW1zKDUxMikpIFwKKyAgICAgIHdoZW4gKGRldmljZT17aXNhKCJnZng5 MDAiKX06IHRlYW1zIG51bV90ZWFtcygyNTYpKSBcCisgICAgICB3aGVuIChkZXZpY2U9e2lz YSgiZ2Z4OTA2Iil9OiB0ZWFtcyBudW1fdGVhbXMoMTI4KSkgXAorICAgICAgd2hlbiAoZGV2 aWNlPXtpc2EoImdmeDkwOCIpfTogdGVhbXMgbnVtX3RlYW1zKDY0KSkgXAorICAgICAgd2hl biAoZGV2aWNlPXtpc2EoImdmeDkwYSIpfTogdGVhbXMgbnVtX3RlYW1zKDMyKSkgXAorICAg ICAgZGVmYXVsdCAodGVhbXMgbnVtX3RlYW1zKDQpKQorCWZvciAoaSA9IDA7IGkgPCBOOyBp KyspCisJICB6W2ldID0geFtpXSAqIHlbaV07Cit9CisKK2ludCBtYWluICh2b2lkKQorewor ICBpbnQgeFtOXSwgeVtOXSwgeltOXTsKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8 IE47IGkrKykKKyAgICB7CisgICAgICB4W2ldID0gaTsKKyAgICAgIHlbaV0gPSAtaTsKKyAg ICB9CisKKyAgZiAoeCwgeSwgeik7CisKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAg ICBpZiAoeltpXSAhPSB4W2ldICogeVtpXSkKKyAgICAgIHJldHVybiAxOworCisgIHJldHVy biAwOworfQorCisvKiBUaGUgbWV0YWRpcmVjdGl2ZSBzaG91bGQgYmUgcmVzb2x2ZWQgYWZ0 ZXIgR2ltcGxpZmljYXRpb24uICAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1vZmZsb2Fk LXRyZWUtZHVtcCAiX19idWlsdGluX0dPTVBfdGVhbXM0IFxcKDUxMiwgNTEyIiAib21wX2V4 cGFuZF9tZXRhZGlyZWN0aXZlIiB7IHRhcmdldCB7IGFueS1vcHRzICItZm9mZmxvYWQ9LW1h cmNoPWZpamkiIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLW9mZmxvYWQtdHJl ZS1kdW1wICJfX2J1aWx0aW5fR09NUF90ZWFtczQgXFwoMjU2LCAyNTYiICJvbXBfZXhwYW5k X21ldGFkaXJlY3RpdmUiIHsgdGFyZ2V0IHsgYW55LW9wdHMgIi1mb2ZmbG9hZD0tbWFyY2g9 Z2Z4OTAwIiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1vZmZsb2FkLXRyZWUt ZHVtcCAiX19idWlsdGluX0dPTVBfdGVhbXM0IFxcKDEyOCwgMTI4IiAib21wX2V4cGFuZF9t ZXRhZGlyZWN0aXZlIiB7IHRhcmdldCB7IGFueS1vcHRzICItZm9mZmxvYWQ9LW1hcmNoPWdm eDkwNiIgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tb2ZmbG9hZC10cmVlLWR1 bXAgIl9fYnVpbHRpbl9HT01QX3RlYW1zNCBcXCg2NCwgNjQiICJvbXBfZXhwYW5kX21ldGFk aXJlY3RpdmUiIHsgdGFyZ2V0IHsgYW55LW9wdHMgIi1mb2ZmbG9hZD0tbWFyY2g9Z2Z4OTA4 IiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1vZmZsb2FkLXRyZWUtZHVtcCAi X19idWlsdGluX0dPTVBfdGVhbXM0IFxcKDMyLCAzMiIgIm9tcF9leHBhbmRfbWV0YWRpcmVj dGl2ZSIgeyB0YXJnZXQgeyBhbnktb3B0cyAiLWZvZmZsb2FkPS1tYXJjaD1nZng5MGEiIH0g fSB9IH0gKi8KLS0gCjIuMzEuMQoK --------------a7VHEAN55ScuEA4nadVT6vFH--