From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13845 invoked by alias); 27 Jul 2011 16:42:36 -0000 Received: (qmail 13829 invoked by uid 22791); 27 Jul 2011 16:42:34 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-qy0-f182.google.com (HELO mail-qy0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 27 Jul 2011 16:42:19 +0000 Received: by qyk38 with SMTP id 38so1111998qyk.20 for ; Wed, 27 Jul 2011 09:42:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.118.69 with SMTP id u5mr15265qcq.122.1311784938739; Wed, 27 Jul 2011 09:42:18 -0700 (PDT) Received: by 10.229.98.193 with HTTP; Wed, 27 Jul 2011 09:42:18 -0700 (PDT) Date: Wed, 27 Jul 2011 17:00:00 -0000 Message-ID: Subject: RFC: PATCH: Require and use int64 for x86 options From: "H.J. Lu" To: Ian Lance Taylor , "Joseph S. Myers" , Uros Bizjak Cc: Igor Zamyatin , gcc@gcc.gnu.org Content-Type: multipart/mixed; boundary=000e0cd5c3464b993804a90fbb1e X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2011-07/txt/msg00483.txt.bz2 --000e0cd5c3464b993804a90fbb1e Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2045 On Wed, Jul 13, 2011 at 6:22 AM, Ian Lance Taylor wrote: > Igor Zamyatin writes: > >> As you may see pta_flags enum in i386.c is almost full. So there is a >> risk of overflow in quite near future. Comment in source code advises >> "widen struct pta flags" which is now defined as unsigned. But it >> looks not optimal. >> >> What will be the most proper solution for this problem? > > Why is widening pta_flags "not optimal?" > > It's hard for me to believe that we still care about bootstrapping a > i386-*-* compiler with a compiler which doesn't support any 64-bit type. > So I don't see any problem with setting need_64bit_hwint=yes in > config.gcc for i386-*-*, changing pta_flags to be unsigned > HOST_WIDE_INT, and letting pta_flags go up to (unsigned HOST_WIDE_INT) 1 > << 63. > > If anybody doesn't like that idea, we can simply add a flags2 field and > a pta_flags2 enum with PTA2_xxx constants. > Hi, We are also running out of bits in ix86_isa_flags. This patch uses int64 on both ix86_isa_flags and PTA. I added a new option to opt: ; Maximum number of mask bits in a variable. MaxMaskBits ix86_isa_flags = 64 It mark ix86_isa_flags as 64bit. Any comments? Thanks. -- H.J. --- gcc/ 2011-07-27 H.J. Lu * config.gcc: Set need_64bit_hwint to yes for x86 targets. * opt-read.awk (BEGIN): Set max_mask_bits[var] and var_mask_1[var]. * opth-gen.awk: Use var_mask_1[var] instead of 1. Check max_mask_bits[var] instead of 31. * config/i386/i386.c (pta): Use HOST_WIDE_INT on flags. (builtin_isa): Use HOST_WIDE_INT on isa. (def_builtin): Use HOST_WIDE_INT on mask. (def_builtin_const): Likewise. (builtin_description): Likewise. * config/i386/i386.opt (MaxMaskBits): New. (ix86_isa_flags): Replace int with HOST_WIDE_INT. (ix86_isa_flags_explicit): Likewise. (x_ix86_isa_flags_explicit): Likewise. libcpp/ 2011-07-27 H.J. Lu * configure.ac: Set need_64bit_hwint to yes for x86 targets. * configure: Regenerated. --000e0cd5c3464b993804a90fbb1e Content-Type: text/x-diff; charset=US-ASCII; name="gcc-x86-int64-1.patch" Content-Disposition: attachment; filename="gcc-x86-int64-1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqmiqzc60 Content-length: 9305 Z2NjLwoKMjAxMS0wNy0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgoKCSogY29uZmlnLmdjYzogU2V0IG5lZWRfNjRiaXRfaHdpbnQgdG8g eWVzIGZvciB4ODYgdGFyZ2V0cy4KCgkqIG9wdC1yZWFkLmF3ayAoQkVHSU4p OiBTZXQgbWF4X21hc2tfYml0c1t2YXJdIGFuZAoJdmFyX21hc2tfMVt2YXJd LgoKCSogb3B0aC1nZW4uYXdrOiBVc2UgdmFyX21hc2tfMVt2YXJdIGluc3Rl YWQgb2YgMS4gIENoZWNrCgltYXhfbWFza19iaXRzW3Zhcl0gaW5zdGVhZCBv ZiAzMS4gCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHB0YSk6IFVzZSBIT1NU X1dJREVfSU5UIG9uIGZsYWdzLgoJKGJ1aWx0aW5faXNhKTogVXNlIEhPU1Rf V0lERV9JTlQgb24gaXNhLgoJKGRlZl9idWlsdGluKTogVXNlIEhPU1RfV0lE RV9JTlQgb24gbWFzay4KCShkZWZfYnVpbHRpbl9jb25zdCk6IExpa2V3aXNl LgoJKGJ1aWx0aW5fZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KCgkqIGNvbmZp Zy9pMzg2L2kzODYub3B0IChNYXhNYXNrQml0cyk6IE5ldy4KCShpeDg2X2lz YV9mbGFncyk6IFJlcGxhY2UgaW50IHdpdGggSE9TVF9XSURFX0lOVC4KCShp eDg2X2lzYV9mbGFnc19leHBsaWNpdCk6IExpa2V3aXNlLgoJKHhfaXg4Nl9p c2FfZmxhZ3NfZXhwbGljaXQpOiBMaWtld2lzZS4KCmxpYmNwcC8KCjIwMTEt MDctMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNv bmZpZ3VyZS5hYzogU2V0IG5lZWRfNjRiaXRfaHdpbnQgdG8geWVzIGZvciB4 ODYgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCmluZGV4 IGQ3Y2Y4OTUuLjU0YWM5ODUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcuZ2Nj CisrKyBiL2djYy9jb25maWcuZ2NjCkBAIC0zNDUsNiArMzQ1LDcgQEAgaVsz NDU2N104Ni0qLSopCiAJY3B1X3R5cGU9aTM4NgogCWNfdGFyZ2V0X29ianM9 ImkzODYtYy5vIgogCWN4eF90YXJnZXRfb2Jqcz0iaTM4Ni1jLm8iCisJbmVl ZF82NGJpdF9od2ludD15ZXMKIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29w dGlvbnN9IGZ1c2VkLW1hZGQub3B0IgogCWV4dHJhX2hlYWRlcnM9ImNwdWlk LmggbW1pbnRyaW4uaCBtbTNkbm93LmggeG1taW50cmluLmggZW1taW50cmlu LmgKIAkJICAgICAgIHBtbWludHJpbi5oIHRtbWludHJpbi5oIGFtbWludHJp bi5oIHNtbWludHJpbi5oCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYv aTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwppbmRleCA5NjI2M2Vk Li5jNWRkODgxIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5j CisrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKQEAgLTI5MTgsNyArMjkx OCw3IEBAIGl4ODZfb3B0aW9uX292ZXJyaWRlX2ludGVybmFsIChib29sIG1h aW5fYXJnc19wKQogICAgICAgUFRBX0YxNkMgPSAxIDw8IDI2LAogICAgICAg UFRBX0JNSSA9IDEgPDwgMjcsCiAgICAgICBQVEFfVEJNID0gMSA8PCAyOAot ICAgICAgLyogaWYgdGhpcyByZWFjaGVzIDMyLCBuZWVkIHRvIHdpZGVuIHN0 cnVjdCBwdGEgZmxhZ3MgYmVsb3cgKi8KKyAgICAgIC8qIGlmIHRoaXMgcmVh Y2hlcyA2NCwgbmVlZCB0byB3aWRlbiBzdHJ1Y3QgcHRhIGZsYWdzIGJlbG93 ICovCiAgICAgfTsKIAogICBzdGF0aWMgc3RydWN0IHB0YQpAQCAtMjkyNiw3 ICsyOTI2LDcgQEAgaXg4Nl9vcHRpb25fb3ZlcnJpZGVfaW50ZXJuYWwgKGJv b2wgbWFpbl9hcmdzX3ApCiAgICAgICBjb25zdCBjaGFyICpjb25zdCBuYW1l OwkJLyogcHJvY2Vzc29yIG5hbWUgb3Igbmlja25hbWUuICAqLwogICAgICAg Y29uc3QgZW51bSBwcm9jZXNzb3JfdHlwZSBwcm9jZXNzb3I7CiAgICAgICBj b25zdCBlbnVtIGF0dHJfY3B1IHNjaGVkdWxlOwotICAgICAgY29uc3QgdW5z aWduZWQgLyplbnVtIHB0YV9mbGFncyovIGZsYWdzOworICAgICAgY29uc3Qg dW5zaWduZWQgSE9TVF9XSURFX0lOVCAvKmVudW0gcHRhX2ZsYWdzKi8gZmxh Z3M7CiAgICAgfQogICBjb25zdCBwcm9jZXNzb3JfYWxpYXNfdGFibGVbXSA9 CiAgICAgewpAQCAtMjQwMTYsNyArMjQwMTYsNyBAQCBzdGF0aWMgR1RZKCgp KSB0cmVlIGl4ODZfYnVpbHRpbnNbKGludCkgSVg4Nl9CVUlMVElOX01BWF07 CiBzdHJ1Y3QgYnVpbHRpbl9pc2EgewogICBjb25zdCBjaGFyICpuYW1lOwkJ LyogZnVuY3Rpb24gbmFtZSAqLwogICBlbnVtIGl4ODZfYnVpbHRpbl9mdW5j X3R5cGUgdGNvZGU7IC8qIHR5cGUgdG8gdXNlIGluIHRoZSBkZWNsYXJhdGlv biAqLwotICBpbnQgaXNhOwkJCS8qIGlzYV9mbGFncyB0aGlzIGJ1aWx0aW4g aXMgZGVmaW5lZCBmb3IgKi8KKyAgSE9TVF9XSURFX0lOVCBpc2E7CQkvKiBp c2FfZmxhZ3MgdGhpcyBidWlsdGluIGlzIGRlZmluZWQgZm9yICovCiAgIGJv b2wgY29uc3RfcDsJCQkvKiB0cnVlIGlmIHRoZSBkZWNsYXJhdGlvbiBpcyBj b25zdGFudCAqLwogICBib29sIHNldF9hbmRfbm90X2J1aWx0X3A7CiB9OwpA QCAtMjQwNDEsNyArMjQwNDEsOCBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW5f aXNhIGl4ODZfYnVpbHRpbnNfaXNhWyhpbnQpIElYODZfQlVJTFRJTl9NQVhd OwogICAgZXJyb3JzIGlmIGEgYnVpbHRpbiBpcyBhZGRlZCBpbiB0aGUgbWlk ZGxlIG9mIGEgZnVuY3Rpb24gc2NvcGUuICAqLwogCiBzdGF0aWMgaW5saW5l IHRyZWUKLWRlZl9idWlsdGluIChpbnQgbWFzaywgY29uc3QgY2hhciAqbmFt ZSwgZW51bSBpeDg2X2J1aWx0aW5fZnVuY190eXBlIHRjb2RlLAorZGVmX2J1 aWx0aW4gKEhPU1RfV0lERV9JTlQgbWFzaywgY29uc3QgY2hhciAqbmFtZSwK KwkgICAgIGVudW0gaXg4Nl9idWlsdGluX2Z1bmNfdHlwZSB0Y29kZSwKIAkg ICAgIGVudW0gaXg4Nl9idWlsdGlucyBjb2RlKQogewogICB0cmVlIGRlY2wg PSBOVUxMX1RSRUU7CkBAIC0yNDA3OSw3ICsyNDA4MCw3IEBAIGRlZl9idWls dGluIChpbnQgbWFzaywgY29uc3QgY2hhciAqbmFtZSwgZW51bSBpeDg2X2J1 aWx0aW5fZnVuY190eXBlIHRjb2RlLAogLyogTGlrZSBkZWZfYnVpbHRpbiwg YnV0IGFsc28gbWFya3MgdGhlIGZ1bmN0aW9uIGRlY2wgImNvbnN0Ii4gICov CiAKIHN0YXRpYyBpbmxpbmUgdHJlZQotZGVmX2J1aWx0aW5fY29uc3QgKGlu dCBtYXNrLCBjb25zdCBjaGFyICpuYW1lLAorZGVmX2J1aWx0aW5fY29uc3Qg KEhPU1RfV0lERV9JTlQgbWFzaywgY29uc3QgY2hhciAqbmFtZSwKIAkJICAg ZW51bSBpeDg2X2J1aWx0aW5fZnVuY190eXBlIHRjb2RlLCBlbnVtIGl4ODZf YnVpbHRpbnMgY29kZSkKIHsKICAgdHJlZSBkZWNsID0gZGVmX2J1aWx0aW4g KG1hc2ssIG5hbWUsIHRjb2RlLCBjb2RlKTsKQEAgLTI0MTMwLDcgKzI0MTMx LDcgQEAgaXg4Nl9hZGRfbmV3X2J1aWx0aW5zIChpbnQgaXNhKQogCiBzdHJ1 Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbgogewotICBjb25zdCB1bnNpZ25lZCBp bnQgbWFzazsKKyAgY29uc3QgSE9TVF9XSURFX0lOVCBtYXNrOwogICBjb25z dCBlbnVtIGluc25fY29kZSBpY29kZTsKICAgY29uc3QgY2hhciAqY29uc3Qg bmFtZTsKICAgY29uc3QgZW51bSBpeDg2X2J1aWx0aW5zIGNvZGU7CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5vcHQKaW5kZXggNWU2YjVkZi4uMjgxZmVjMyAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0CisrKyBiL2djYy9jb25m aWcvaTM4Ni9pMzg2Lm9wdApAQCAtMjIsMTQgKzIyLDE4IEBACiBIZWFkZXJJ bmNsdWRlCiBjb25maWcvaTM4Ni9pMzg2LW9wdHMuaAogCis7IE1heGltdW0g bnVtYmVyIG9mIG1hc2sgYml0cyBpbiBhIHZhcmlhYmxlLgorTWF4TWFza0Jp dHMKK2l4ODZfaXNhX2ZsYWdzID0gNjQKKwogOyBCaXQgZmxhZ3MgdGhhdCBz cGVjaWZ5IHRoZSBJU0Egd2UgYXJlIGNvbXBpbGluZyBmb3IuCiBWYXJpYWJs ZQotaW50IGl4ODZfaXNhX2ZsYWdzID0gVEFSR0VUXzY0QklUX0RFRkFVTFQg fCBUQVJHRVRfU1VCVEFSR0VUX0lTQV9ERUZBVUxUCitIT1NUX1dJREVfSU5U IGl4ODZfaXNhX2ZsYWdzID0gVEFSR0VUXzY0QklUX0RFRkFVTFQgfCBUQVJH RVRfU1VCVEFSR0VUX0lTQV9ERUZBVUxUCiAKIDsgQSBtYXNrIG9mIGl4ODZf aXNhX2ZsYWdzIHRoYXQgaW5jbHVkZXMgYml0IFggaWYgWCB3YXMgc2V0IG9y IGNsZWFyZWQKIDsgb24gdGhlIGNvbW1hbmQgbGluZS4KIFZhcmlhYmxlCi1p bnQgaXg4Nl9pc2FfZmxhZ3NfZXhwbGljaXQKK0hPU1RfV0lERV9JTlQgaXg4 Nl9pc2FfZmxhZ3NfZXhwbGljaXQKIAogOzsgRGVmaW5pdGlvbnMgdG8gYWRk IHRvIHRoZSBjbF90YXJnZXRfb3B0aW9uIHN0cnVjdHVyZQogOzsgLW1hcmNo PSBwcm9jZXNzb3IKQEAgLTUwLDcgKzU0LDcgQEAgdW5zaWduZWQgY2hhciBi cmFuY2hfY29zdAogCiA7OyB3aGljaCBmbGFncyB3ZXJlIHBhc3NlZCBieSB0 aGUgdXNlcgogVGFyZ2V0U2F2ZQotaW50IHhfaXg4Nl9pc2FfZmxhZ3NfZXhw bGljaXQKK0hPU1RfV0lERV9JTlQgeF9peDg2X2lzYV9mbGFnc19leHBsaWNp dAogCiA7OyB3aGljaCBmbGFncyB3ZXJlIHBhc3NlZCBieSB0aGUgdXNlcgog VGFyZ2V0U2F2ZQpkaWZmIC0tZ2l0IGEvZ2NjL29wdC1yZWFkLmF3ayBiL2dj Yy9vcHQtcmVhZC5hd2sKaW5kZXggYzQ4OGVkNS4uOTg4NDE3NSAxMDA2NDQK LS0tIGEvZ2NjL29wdC1yZWFkLmF3aworKysgYi9nY2Mvb3B0LXJlYWQuYXdr CkBAIC0xMDEsNiArMTAxLDE1IEBAIEJFR0lOIHsKIAkJCSAgIiAgeyAiIHF1 b3RlIHN0cmluZyBxdW90ZSAiLCAiIHZhbHVlICIsICIgdmFsX2ZsYWdzIFwK IAkJCSAgIiB9LFxuIgogCQl9CisJCWlmICgkMSA9PSAiTWF4TWFza0JpdHMi KSB7CisJCQltYXggPSAkMiAKKwkJCXZhciA9IG1heDsgCisJCQlzdWIoIiAq PS4qIiwgIiIsIHZhcikKKwkJCXN1YigiLio9IiwgIiIsIG1heCkKKwkJCW1h eF9tYXNrX2JpdHNbdmFyXSA9IG1heAorCQkJaWYgKG1heCA9PSA2NCkKKwkJ CSAgdmFyX21hc2tfMVt2YXJdID0gIjFMTCIKKwkJfQogCQllbHNlIHsKIAkJ CW5hbWUgPSBvcHRfYXJncygiTWFzayIsICQxKQogCQkJaWYgKG5hbWUgPT0g IiIpIHsKZGlmZiAtLWdpdCBhL2djYy9vcHRoLWdlbi5hd2sgYi9nY2Mvb3B0 aC1nZW4uYXdrCmluZGV4IDg3NmUwZjYuLmM0ZjdiMWQgMTAwNjQ0Ci0tLSBh L2djYy9vcHRoLWdlbi5hd2sKKysrIGIvZ2NjL29wdGgtZ2VuLmF3awpAQCAt MzAwLDE4ICszMDAsMjUgQEAgZm9yIChpID0gMDsgaSA8IG5fb3B0czsgaSsr KSB7CiAJbmFtZSA9IG9wdF9hcmdzKCJNYXNrIiwgZmxhZ3NbaV0pCiAJdm5h bWUgPSB2YXJfbmFtZShmbGFnc1tpXSkKIAltYXNrID0gIk1BU0tfIgorCW1h c2tfMSA9ICIiCiAJaWYgKHZuYW1lICE9ICIiKSB7CiAJCW1hc2sgPSAiT1BU SU9OX01BU0tfIgorCQltYXNrXzEgPSB2YXJfbWFza18xW3ZuYW1lXQogCX0K KwlpZiAobWFza18xID09ICIiKQorCSAgbWFza18xID0gIjEiCiAJaWYgKG5h bWUgIT0gIiIgJiYgIWZsYWdfc2V0X3AoIk1hc2tFeGlzdHMiLCBmbGFnc1tp XSkpCi0JCXByaW50ICIjZGVmaW5lICIgbWFzayBuYW1lICIgKDEgPDwgIiBt YXNrbnVtW3ZuYW1lXSsrICIpIgorCQlwcmludCAiI2RlZmluZSAiIG1hc2sg bmFtZSAiICgiIG1hc2tfMSAiIDw8ICIgbWFza251bVt2bmFtZV0rKyAiKSIK IH0KIGZvciAoaSA9IDA7IGkgPCBuX2V4dHJhX21hc2tzOyBpKyspIHsKIAlw cmludCAiI2RlZmluZSBNQVNLXyIgZXh0cmFfbWFza3NbaV0gIiAoMSA8PCAi IG1hc2tudW1bIiJdKysgIikiCiB9CiAKIGZvciAodmFyIGluIG1hc2tudW0p IHsKLQlpZiAobWFza251bVt2YXJdID4gMzEpIHsKKwltYXggPSBtYXhfbWFz a19iaXRzW3Zhcl0KKwlpZiAobWF4ID09ICIiKQorCSAgbWF4ID0gMzIKKwlp ZiAobWFza251bVt2YXJdID49IG1heCkgewogCQlpZiAodmFyID09ICIiKQog CQkJcHJpbnQgIiNlcnJvciB0b28gbWFueSB0YXJnZXQgbWFza3MiCiAJCWVs c2UKZGlmZiAtLWdpdCBhL2xpYmNwcC9jb25maWd1cmUgYi9saWJjcHAvY29u ZmlndXJlCmluZGV4IGI0NTNhN2IuLjI3YTg2N2MgMTAwNzU1Ci0tLSBhL2xp YmNwcC9jb25maWd1cmUKKysrIGIvbGliY3BwL2NvbmZpZ3VyZQpAQCAtNzMx Miw5ICs3MzEyLDcgQEAgY2FzZSAkdGFyZ2V0IGluCiAJeDg2XzY0LSotKiB8 IFwKIAlpYTY0LSotKiB8IFwKIAlocHBhKjY0Ki0qLSogfCBcCi0JaVszNDU2 N104Ni0qLWRhcndpbiogfCBcCi0JaVszNDU2N104Ni0qLXNvbGFyaXMyLjFb MC05XSogfCB4ODZfNjQtKi1zb2xhcmlzMi4xWzAtOV0qIHwgXAotCWlbMzQ1 NjddODYtdzY0LW1pbmd3KiB8IFwKKwlpWzM0NTY3XTg2LSotKiB8IHg4Nl82 NC0qLXNvbGFyaXMyLjFbMC05XSogfCBcCiAJbWlwcyotKi0qIHwgXAogCW1t aXgtKi0qIHwgXAogCXBvd2VycGMqLSotKiB8IFwKZGlmZiAtLWdpdCBhL2xp YmNwcC9jb25maWd1cmUuYWMgYi9saWJjcHAvY29uZmlndXJlLmFjCmluZGV4 IDE3MDkzMmMuLjZlOWFkYmYgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9jb25maWd1 cmUuYWMKKysrIGIvbGliY3BwL2NvbmZpZ3VyZS5hYwpAQCAtMTUwLDkgKzE1 MCw3IEBAIGNhc2UgJHRhcmdldCBpbgogCXg4Nl82NC0qLSogfCBcCiAJaWE2 NC0qLSogfCBcCiAJaHBwYSo2NCotKi0qIHwgXAotCWlbMzQ1NjddODYtKi1k YXJ3aW4qIHwgXAotCWlbMzQ1NjddODYtKi1zb2xhcmlzMi4xWzAtOV0qIHwg eDg2XzY0LSotc29sYXJpczIuMVswLTldKiB8IFwKLQlpWzM0NTY3XTg2LXc2 NC1taW5ndyogfCBcCisJaVszNDU2N104Ni0qLSogfCB4ODZfNjQtKi1zb2xh cmlzMi4xWzAtOV0qIHwgXAogCW1pcHMqLSotKiB8IFwKIAltbWl4LSotKiB8 IFwKIAlwb3dlcnBjKi0qLSogfCBcCg== --000e0cd5c3464b993804a90fbb1e--