From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1347 invoked by alias); 18 Apr 2011 20:04:55 -0000 Received: (qmail 1333 invoked by uid 22791); 18 Apr 2011 20:04:51 -0000 X-SWARE-Spam-Status: No, hits=1.7 required=5.0 tests=AWL,BAYES_99,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_DW,TW_WC X-Spam-Check-By: sourceware.org Received: from mail-qw0-f41.google.com (HELO mail-qw0-f41.google.com) (209.85.216.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 18 Apr 2011 20:04:34 +0000 Received: by qwa26 with SMTP id 26so3615972qwa.0 for ; Mon, 18 Apr 2011 13:04:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.77.162 with SMTP id g34mr2906433qck.70.1303157073161; Mon, 18 Apr 2011 13:04:33 -0700 (PDT) Received: by 10.229.67.96 with HTTP; Mon, 18 Apr 2011 13:04:33 -0700 (PDT) In-Reply-To: References: Date: Mon, 18 Apr 2011 20:04:00 -0000 Message-ID: Subject: Re: [patch ld bfd gas]: Handle linkonce for cfi generated debug_frame and eh_frame data From: Kai Tietz To: "H.J. Lu" Cc: Binutils , Alan Modra , Nick Clifton Content-Type: multipart/mixed; boundary=002354470ac06eafab04a136e653 X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-04/txt/msg00255.txt.bz2 --002354470ac06eafab04a136e653 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5947 2011/4/18 H.J. Lu : > On Mon, Apr 18, 2011 at 2:33 AM, Kai Tietz wrot= e: >> Hello, >> >> The recent patch about this subject I withdraw and replace it by the >> more enhanced version. =A0I noticed that a bit more checkings and a >> different approach on writing eh_frame/debug_frame sections out, was >> necessary. =A0Additionally this patch allows for PE-COFF targets, that >> debugging sections can have link-once flags active. >> >> >> ChangeLog bfd/ >> >> 2011-04-18 =A0Kai Tietz >> >> =A0 =A0 =A0 =A0* coffcode.h (sec_to_styp_flags): Allow linkonce for >> =A0 =A0 =A0 =A0debugging sections. >> >> ChangeLog gas/ >> >> 2011-04-18 =A0Kai Tietz >> >> =A0 =A0 =A0 * dw2gencfi.c (dwcfi_seg_list): New struct. >> =A0 =A0 =A0 (dwcfi_hash): New static hash variable. >> =A0 =A0 =A0 (get_debugseg_name): New. >> =A0 =A0 =A0 (alloc_debugseg_item): New. >> =A0 =A0 =A0 (make_debug_seg): New. >> =A0 =A0 =A0 (dwcfi_hash_insert): New. >> =A0 =A0 =A0 (dwcfi_hash_find): New. >> =A0 =A0 =A0 (dwcfi_hash_find_or_make): New. >> =A0 =A0 =A0 (cfi_insn_data): New member cur_seg. >> =A0 =A0 =A0 (cie_entry): Likewise. >> =A0 =A0 =A0 (fde_entry): New cseg and handled members. >> =A0 =A0 =A0 (alloc_fde_entry): Initialize cseg member. >> =A0 =A0 =A0 (alloc_cfi_insn_data): Initialize cur_seg member. >> =A0 =A0 =A0 (dot_cfi_sections): Compare for beginning of >> =A0 =A0 =A0 section names via strncmp. >> =A0 =A0 =A0 (get_cfi_seg): New. >> =A0 =A0 =A0 (cfi_finish): Treat link-once sections. >> =A0 =A0 =A0 (is_now_linkonce_segment): New local helper. >> =A0 =A0 =A0 (output_cie): Ignore cie entries not member of current >> =A0 =A0 =A0 segment. >> =A0 =A0 =A0 (output_fde): Likewise. >> =A0 =A0 =A0 (select_cie_for_fde): Likewise. >> =A0 =A0 =A0 (cfi_change_reg_numbers): Add new argument for current segme= nt >> =A0 =A0 =A0 and ignore insn elements, if not part of current segment. >> =A0 =A0 =A0 * ehopt.c (get_cie_info): Use strncmp for >> =A0 =A0 =A0 section name matching. >> =A0 =A0 =A0 (heck_eh_frame): Likewise. >> >> ChangeLog ld/ >> >> 2011-04-18 =A0Kai Tietz >> >> =A0 =A0 =A0 * scripttempl/alphavms.sc: Handle .eh_frame($|.)* sections. >> =A0 =A0 =A0 * scripttempl/armbpabi.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/avr.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/crisaout.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf32cr16.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf32crx.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf32msp430.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf32msp430_3.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf32sh-symbian.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf64hppa.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elf_chaos.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfd10v.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfd30v.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfi370.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfm68hc11.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfm68hc12.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfmicroblaze.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/elfxtensa.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/epocpe.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/i386beos.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/i386go32.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/ip2k.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/iq2000.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/mcorepe.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/mep.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/mmo.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/pe.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/pep.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/v850.sc: Likewise. >> =A0 =A0 =A0 * scripttempl/xstormy16.sc: Likewise. >> >> Tested for x86_64-w64-mingw32, i686-w64-mingw32, and i686-pc-cygwin. >> Ok for apply? > > 2 comments: > > 1. You should test Linux/x86 since you change ELF targets. > 2. You should add some testcases to show gas/ld work correctly. > > > -- > H.J. > I tested things for x86_64-pc-linux-gnu and found that the linkonce code collides with eh_frame_hdr code in bfd. So I removed complete ELF handling here and just enable cfi linkonce handling for PE-COFF targets. ChangeLog bfd/ 2011-04-18 Kai Tietz * coffcode.h (sec_to_styp_flags): Allow linkonce for debugging sections. ChangeLog gas/ 2011-04-18 Kai Tietz * dw2gencfi.c (dwcfi_seg_list): New struct. (dwcfi_hash): New static hash variable. (get_debugseg_name): New. (alloc_debugseg_item): New. (make_debug_seg): New. (dwcfi_hash_insert): New. (dwcfi_hash_find): New. (dwcfi_hash_find_or_make): New. (cfi_insn_data): New member cur_seg. (cie_entry): Likewise. (fde_entry): New cseg and handled members. (alloc_fde_entry): Initialize cseg member. (alloc_cfi_insn_data): Initialize cur_seg member. (dot_cfi_sections): Compare for beginning of section names via strncmp. (get_cfi_seg): New. (cfi_finish): Treat link-once sections. (is_now_linkonce_segment): New local helper. (output_cie): Ignore cie entries not member of current segment. (output_fde): Likewise. (select_cie_for_fde): Likewise. (cfi_change_reg_numbers): Add new argument for current segment and ignore insn elements, if not part of current segment. * ehopt.c (get_cie_info): Use strncmp for section name matching. (heck_eh_frame): Likewise. ChangeLog ld/ 2011-04-18 Kai Tietz * scripttempl/pe.sc: Likewise. * scripttempl/pep.sc: Likewise. ChangeLog ld/testsuite/ 2011-04-18 Kai Tietz * ld-pe/pe.exp: Add cfi/cfi32 tests. * ld-pe/cfi.d: New. * ld-pe/cfi32.d: New. * ld-pe/cfia.s: New. * ld-pe/cfib.s: New. I added a testcase for pe and pe+ and regression tested it for i686-w64-mingw32, i686-pc-cygwin, x86_64-w64-mingw32, and x86_64-pc-linux-gnu. Ok for apply? Regards, Kai --002354470ac06eafab04a136e653 Content-Type: text/plain; charset=US-ASCII; name="cfi_lonce.txt" Content-Disposition: attachment; filename="cfi_lonce.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gmnu2ipa0 Content-length: 29024 SW5kZXg6IHNyYy9nYXMvZHcyZ2VuY2ZpLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3JjLm9yaWcvZ2FzL2R3MmdlbmNmaS5jCTIwMTEtMDQtMTgg MjA6MzY6NDEuNDcyODcwNTAwICswMjAwCisrKyBzcmMvZ2FzL2R3MmdlbmNm aS5jCTIwMTEtMDQtMTggMjA6NDc6MzIuNTIxODA0OTAwICswMjAwCkBAIC03 Niw2ICs3NiwxNDkgQEAKICMgZGVmaW5lIERXQVJGMl9BRERSX1NJWkUoYmZk KSAoYmZkX2FyY2hfYml0c19wZXJfYWRkcmVzcyAoYmZkKSAvIDgpCiAjZW5k aWYKIAorLyogUHJpdmF0ZSBzZWdtZW50IGNvbGxlY3Rpb24gbGlzdC4gICov CitzdHJ1Y3QgZHdjZmlfc2VnX2xpc3QgeworICBzZWdUIHNlZzsKKyAgaW50 IHN1YnNlZzsKKyAgY2hhciAqc2VnX25hbWU7Cit9OworCitzdGF0aWMgc3Ry dWN0IGhhc2hfY29udHJvbCAqZHdjZmlfaGFzaDsKKworLyogQnVpbGQgYmFz ZWQgb24gc2VnbWVudCB0aGUgZGVyaXZlZCAuZGVidWdfLi4uCisgICBzZWdt ZW50IG5hbWUgY29udGFpbmluZyBvcmlnaW4gc2VnbWVudCdzIHBvc3RmaXgg bmFtZSBwYXJ0LiAgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9kZWJ1Z3NlZ19u YW1lIChzZWdUIHNlZywgY29uc3QgY2hhciAqYmFzZV9uYW1lKQoreworICBj b25zdCBjaGFyICpuYW1lLCpkb2xsYXIsICpkb3Q7CisgIGNoYXIgKnNuYW1l OworCisgIGlmICghc2VnKQorICAgIG5hbWUgPSAiIjsKKyAgZWxzZQorICAg IG5hbWUgPSBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoc3Rkb3V0cHV0LCBzZWcp OworCisgIGRvbGxhciA9IHN0cmNociAobmFtZSwgJyQnKTsKKyAgZG90ID0g c3RyY2hyIChuYW1lICsgMSwgJy4nKTsKKworICBpZiAoIWRvbGxhciAmJiAh ZG90KQorICAgIG5hbWUgPSAiIjsKKyAgZWxzZSBpZiAoIWRvbGxhcikKKyAg ICBuYW1lID0gZG90OworICBlbHNlIGlmICghZG90KQorICAgIG5hbWUgPSBk b2xsYXI7CisgIGVsc2UgaWYgKGRvdCA8IGRvbGxhcikKKyAgICBuYW1lID0g ZG90OworICBlbHNlCisgICAgbmFtZSA9IGRvbGxhcjsKKworICBzbmFtZSA9 IGNvbmNhdCAoYmFzZV9uYW1lLCBuYW1lLCBOVUxMKTsKKworICByZXR1cm4g c25hbWU7Cit9CisKKy8qIEFsbG9jYXRlIGEgZHdjZmlfc2VnX2xpc3Qgc3Ry dWN0dXJlLiAgKi8KK3N0YXRpYyBzdHJ1Y3QgZHdjZmlfc2VnX2xpc3QgKgor YWxsb2NfZGVidWdzZWdfaXRlbSAoc2VnVCBzZWcsIGludCBzdWJzZWcsIGNo YXIgKm5hbWUpCit7CisgIHN0cnVjdCBkd2NmaV9zZWdfbGlzdCAqcjsKKwor ICByID0gKHN0cnVjdCBkd2NmaV9zZWdfbGlzdCAqKQorICAgIHhtYWxsb2Mg KHNpemVvZiAoc3RydWN0IGR3Y2ZpX3NlZ19saXN0KSArIHN0cmxlbiAobmFt ZSkpOworICByLT5zZWcgPSBzZWc7CisgIHItPnN1YnNlZyA9IHN1YnNlZzsK KyAgci0+c2VnX25hbWUgPSBuYW1lOworICByZXR1cm4gcjsKK30KKworc3Rh dGljIHNlZ1QKK2lzX25vd19saW5rb25jZV9zZWdtZW50ICh2b2lkKQorewor I2lmIGRlZmluZWQgKFRFX1BFKSB8fCBkZWZpbmVkIChURV9QRVApCisgIGlm ICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChzdGRvdXRwdXQsIG5vd19zZWcp CisgICAgICAgJiAoU0VDX0xJTktfT05DRSB8IFNFQ19MSU5LX0RVUExJQ0FU RVNfRElTQ0FSRAorCSAgfCBTRUNfTElOS19EVVBMSUNBVEVTX09ORV9PTkxZ IHwgU0VDX0xJTktfRFVQTElDQVRFU19TQU1FX1NJWkUKKwkgIHwgU0VDX0xJ TktfRFVQTElDQVRFU19TQU1FX0NPTlRFTlRTKSkgIT0gMCkKKyAgICByZXR1 cm4gbm93X3NlZzsKKyNlbmRpZgorICByZXR1cm4gTlVMTDsKK30KKworLyog R2VuZXJhdGUgZGVidWcuLi4gc2VnbWVudCB3aXRoIHNhbWUgbGlua29uY2Ug cHJvcGVydGllcworICAgb2YgYmFzZWQgc2VnbWVudC4gICovCitzdGF0aWMg c2VnVAorbWFrZV9kZWJ1Z19zZWcgKHNlZ1QgY3NlZywgY2hhciAqbmFtZSwg aW50IHNmbGFncykKK3sKKyAgc2VnVCBzYXZlX3NlZyA9IG5vd19zZWc7Cisg IGludCBzYXZlX3N1YnNlZyA9IG5vd19zdWJzZWc7CisgIHNlZ1QgcjsKKyAg ZmxhZ3dvcmQgZmxhZ3M7CisKKyAgciA9IHN1YnNlZ19uZXcgKG5hbWUsIDAp OworICAvKiBDaGVjayBpZiBjb2RlIHNlZ21lbnQgaXMgbWFya2VkIGFzIGxp bmtlZCBvbmNlLiAgKi8KKyAgaWYgKCFjc2VnKQorICAgIGZsYWdzID0gMDsK KyAgZWxzZQorICAgIGZsYWdzID0gYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChz dGRvdXRwdXQsIGNzZWcpCisgICAgICAmIChTRUNfTElOS19PTkNFIHwgU0VD X0xJTktfRFVQTElDQVRFU19ESVNDQVJECisgICAgICAgICB8IFNFQ19MSU5L X0RVUExJQ0FURVNfT05FX09OTFkgfCBTRUNfTElOS19EVVBMSUNBVEVTX1NB TUVfU0laRQorICAgICAgICAgfCBTRUNfTElOS19EVVBMSUNBVEVTX1NBTUVf Q09OVEVOVFMpOworCisgIC8qIEFkZCBzdGFuZGFyZCBzZWN0aW9uIGZsYWdz LiAgKi8KKyAgZmxhZ3MgfD0gc2ZsYWdzOworCisgIC8qIEFwcGx5IHBvc3Np Ymx5IGxpbmtlZCBvbmNlIGZsYWdzIHRvIG5ldyBnZW5lcmF0ZWQgc2VnbWVu dCwgdG9vLiAgKi8KKyAgaWYgKCFiZmRfc2V0X3NlY3Rpb25fZmxhZ3MgKHN0 ZG91dHB1dCwgciwgZmxhZ3MpKQorICAgIGFzX2JhZCAoXygiYmZkX3NldF9z ZWN0aW9uX2ZsYWdzOiAlcyIpLAorCSAgICBiZmRfZXJybXNnIChiZmRfZ2V0 X2Vycm9yICgpKSk7CisKKyAgLyogUmVzdG9yZSB0byBwcmV2aW91cyBzZWdt ZW50LiAgKi8KKyAgaWYgKHNhdmVfc2VnICE9IE5VTEwpCisgICAgc3Vic2Vn X3NldCAoc2F2ZV9zZWcsIHNhdmVfc3Vic2VnKTsKKyAgcmV0dXJuIHI7Cit9 CisKK3N0YXRpYyB2b2lkCitkd2NmaV9oYXNoX2luc2VydCAoY29uc3QgY2hh ciAqbmFtZSwgc3RydWN0IGR3Y2ZpX3NlZ19saXN0ICppdGVtKQoreworICBj b25zdCBjaGFyICplcnJvcl9zdHJpbmc7CisKKyAgaWYgKChlcnJvcl9zdHJp bmcgPSBoYXNoX2phbSAoZHdjZmlfaGFzaCwgbmFtZSwgKGNoYXIgKikgaXRl bSkpKQorICAgIGFzX2ZhdGFsIChfKCJJbnNlcnRpbmcgXCIlc1wiIGludG8g c3RydWN0dXJlIHRhYmxlIGZhaWxlZDogJXMiKSwKKwkgICAgICBuYW1lLCBl cnJvcl9zdHJpbmcpOworfQorCitzdGF0aWMgc3RydWN0IGR3Y2ZpX3NlZ19s aXN0ICoKK2R3Y2ZpX2hhc2hfZmluZCAoY2hhciAqbmFtZSkKK3sKKyAgcmV0 dXJuIChzdHJ1Y3QgZHdjZmlfc2VnX2xpc3QgKikgaGFzaF9maW5kIChkd2Nm aV9oYXNoLCBuYW1lKTsKK30KKworc3RhdGljIHN0cnVjdCBkd2NmaV9zZWdf bGlzdCAqCitkd2NmaV9oYXNoX2ZpbmRfb3JfbWFrZSAoc2VnVCBjc2VnLCBj b25zdCBjaGFyICpiYXNlX25hbWUsIGludCBmbGFncykKK3sKKyAgc3RydWN0 IGR3Y2ZpX3NlZ19saXN0ICppdGVtOworICBjaGFyICpuYW1lOworCisgIC8q IEluaXRpYWxpemUgZHdjZmlfaGFzaCBvbmNlLiAgKi8KKyAgaWYgKCFkd2Nm aV9oYXNoKQorICAgIGR3Y2ZpX2hhc2ggPSBoYXNoX25ldyAoKTsKKworICBu YW1lID0gZ2V0X2RlYnVnc2VnX25hbWUgKGNzZWcsIGJhc2VfbmFtZSk7CisK KyAgaXRlbSA9IGR3Y2ZpX2hhc2hfZmluZCAobmFtZSk7CisgIGlmICghaXRl bSkKKyAgICB7CisgICAgICBpdGVtID0gYWxsb2NfZGVidWdzZWdfaXRlbSAo bWFrZV9kZWJ1Z19zZWcgKGNzZWcsIG5hbWUsIGZsYWdzKSwgMCwgbmFtZSk7 CisKKyAgICAgIGR3Y2ZpX2hhc2hfaW5zZXJ0IChpdGVtLT5zZWdfbmFtZSwg aXRlbSk7CisgICAgfQorICBlbHNlCisgICAgZnJlZSAobmFtZSk7CisKKyAg cmV0dXJuIGl0ZW07Cit9CisKIC8qID8/PyBTaGFyZSB0aGlzIHdpdGggZHdh cmYyY2ZnLmMuICAqLwogI2lmbmRlZiBUQ19EV0FSRjJfRU1JVF9PRkZTRVQK ICNkZWZpbmUgVENfRFdBUkYyX0VNSVRfT0ZGU0VUICBnZW5lcmljX2R3YXJm Ml9lbWl0X29mZnNldApAQCAtMTAyLDYgKzI0NSw3IEBAIHN0cnVjdCBjZmlf ZXNjYXBlX2RhdGEgewogc3RydWN0IGNmaV9pbnNuX2RhdGEKIHsKICAgc3Ry dWN0IGNmaV9pbnNuX2RhdGEgKm5leHQ7CisgIHNlZ1QgY3VyX3NlZzsKICAg aW50IGluc247CiAgIHVuaW9uIHsKICAgICBzdHJ1Y3QgewpAQCAtMTM0LDYg KzI3OCw3IEBAIHN0cnVjdCBjZmlfaW5zbl9kYXRhCiBzdHJ1Y3QgZmRlX2Vu dHJ5CiB7CiAgIHN0cnVjdCBmZGVfZW50cnkgKm5leHQ7CisgIHNlZ1QgY3Nl ZzsKICAgc3ltYm9sUyAqc3RhcnRfYWRkcmVzczsKICAgc3ltYm9sUyAqZW5k X2FkZHJlc3M7CiAgIHN0cnVjdCBjZmlfaW5zbl9kYXRhICpkYXRhOwpAQCAt MTQ0LDExICsyODksMTMgQEAgc3RydWN0IGZkZV9lbnRyeQogICBleHByZXNz aW9uUyBsc2RhOwogICB1bnNpZ25lZCBpbnQgcmV0dXJuX2NvbHVtbjsKICAg dW5zaWduZWQgaW50IHNpZ25hbF9mcmFtZTsKKyAgaW50IGhhbmRsZWQ7CiB9 OwogCiBzdHJ1Y3QgY2llX2VudHJ5CiB7CiAgIHN0cnVjdCBjaWVfZW50cnkg Km5leHQ7CisgIHNlZ1QgY3VyX3NlZzsKICAgc3ltYm9sUyAqc3RhcnRfYWRk cmVzczsKICAgdW5zaWduZWQgaW50IHJldHVybl9jb2x1bW47CiAgIHVuc2ln bmVkIGludCBzaWduYWxfZnJhbWU7CkBAIC0xOTUsNyArMzQyLDggQEAgYWxs b2NfZmRlX2VudHJ5ICh2b2lkKQogICBmcmNoYWluX25vdy0+ZnJjaF9jZmlf ZGF0YS0+Y3VyX2ZkZV9kYXRhID0gZmRlOwogICAqbGFzdF9mZGVfZGF0YSA9 IGZkZTsKICAgbGFzdF9mZGVfZGF0YSA9ICZmZGUtPm5leHQ7Ci0KKyAgZmRl LT5jc2VnID0gaXNfbm93X2xpbmtvbmNlX3NlZ21lbnQgKCk7CisgIGZkZS0+ aGFuZGxlZCA9IDA7CiAgIGZkZS0+bGFzdCA9ICZmZGUtPmRhdGE7CiAgIGZk ZS0+cmV0dXJuX2NvbHVtbiA9IERXQVJGMl9ERUZBVUxUX1JFVFVSTl9DT0xV TU47CiAgIGZkZS0+cGVyX2VuY29kaW5nID0gRFdfRUhfUEVfb21pdDsKQEAg LTIxOSw2ICszNjcsNyBAQCBhbGxvY19jZmlfaW5zbl9kYXRhICh2b2lkKQog CiAgICpjdXJfZmRlX2RhdGEtPmxhc3QgPSBpbnNuOwogICBjdXJfZmRlX2Rh dGEtPmxhc3QgPSAmaW5zbi0+bmV4dDsKKyAgaW5zbi0+Y3VyX3NlZyA9IGlz X25vd19saW5rb25jZV9zZWdtZW50ICgpOwogCiAgIHJldHVybiBpbnNuOwog fQpAQCAtMjU0LDcgKzQwMyw3IEBAIGNmaV9zZXRfcmV0dXJuX2NvbHVtbiAo dW5zaWduZWQgcmVnbm8pCiAvKiBVbml2ZXJzYWwgZnVuY3Rpb25zIHRvIHN0 b3JlIG5ldyBpbnN0cnVjdGlvbnMuICAqLwogCiBzdGF0aWMgdm9pZAotY2Zp X2FkZF9DRkFfaW5zbihpbnQgaW5zbikKK2NmaV9hZGRfQ0ZBX2luc24gKGlu dCBpbnNuKQogewogICBzdHJ1Y3QgY2ZpX2luc25fZGF0YSAqaW5zbl9wdHIg PSBhbGxvY19jZmlfaW5zbl9kYXRhICgpOwogCkBAIC05MTYsOSArMTA2NSwx MCBAQCBkb3RfY2ZpX3NlY3Rpb25zIChpbnQgaWdub3JlZCBBVFRSSUJVVEVf CiAJbmFtZSA9IGlucHV0X2xpbmVfcG9pbnRlcjsKIAljID0gZ2V0X3N5bWJv bF9lbmQgKCk7CiAKLQlpZiAoc3RyY21wIChuYW1lLCAiLmVoX2ZyYW1lIikg PT0gMCkKKwlpZiAoc3RybmNtcCAobmFtZSwgIi5laF9mcmFtZSIsIDkpID09 IDAKKwkgICAgJiYgbmFtZVs5XSAhPSAnXycpCiAJICBzZWN0aW9ucyB8PSBD RklfRU1JVF9laF9mcmFtZTsKLQllbHNlIGlmIChzdHJjbXAgKG5hbWUsICIu ZGVidWdfZnJhbWUiKSA9PSAwKQorCWVsc2UgaWYgKHN0cm5jbXAgKG5hbWUs ICIuZGVidWdfZnJhbWUiLCAxMikgPT0gMCkKIAkgIHNlY3Rpb25zIHw9IENG SV9FTUlUX2RlYnVnX2ZyYW1lOwogCWVsc2UKIAkgIHsKQEAgLTEzODQsOCAr MTUzNCwxNCBAQCBvdXRwdXRfY2llIChzdHJ1Y3QgY2llX2VudHJ5ICpjaWUs IGJmZF9iCiAgICAgb3V0X29uZSAoZW5jKTsKIAogICBpZiAoY2llLT5maXJz dCkKLSAgICBmb3IgKGkgPSBjaWUtPmZpcnN0OyBpICE9IGNpZS0+bGFzdDsg aSA9IGktPm5leHQpCi0gICAgICBvdXRwdXRfY2ZpX2luc24gKGkpOworICAg IHsKKyAgICAgIGZvciAoaSA9IGNpZS0+Zmlyc3Q7IGkgIT0gY2llLT5sYXN0 OyBpID0gaS0+bmV4dCkKKyAgICAgICAgeworCSAgaWYgKGktPmN1cl9zZWcg IT0gY2llLT5jdXJfc2VnKQorCSAgICBjb250aW51ZTsKKwkgIG91dHB1dF9j ZmlfaW5zbiAoaSk7CisJfQorICAgIH0KIAogICBmcmFnX2FsaWduIChhbGln biwgRFdfQ0ZBX25vcCwgMCk7CiAgIHN5bWJvbF9zZXRfdmFsdWVfbm93IChl bmRfYWRkcmVzcyk7CkBAIC0xNDkyLDcgKzE2NDgsMTAgQEAgb3V0cHV0X2Zk ZSAoc3RydWN0IGZkZV9lbnRyeSAqZmRlLCBzdHJ1YwogICAgIH0KIAogICBm b3IgKDsgZmlyc3Q7IGZpcnN0ID0gZmlyc3QtPm5leHQpCi0gICAgb3V0cHV0 X2NmaV9pbnNuIChmaXJzdCk7CisgICAgeworICAgICAgaWYgKGZpcnN0LT5j dXJfc2VnID09IGZkZS0+Y3NlZykKKyAgICAgICAgb3V0cHV0X2NmaV9pbnNu IChmaXJzdCk7CisgICAgfQogCiAgIGZyYWdfYWxpZ24gKGFsaWduLCBEV19D RkFfbm9wLCAwKTsKICAgc3ltYm9sX3NldF92YWx1ZV9ub3cgKGVuZF9hZGRy ZXNzKTsKQEAgLTE1MDcsNyArMTY2Niw4IEBAIHNlbGVjdF9jaWVfZm9yX2Zk ZSAoc3RydWN0IGZkZV9lbnRyeSAqZmQKIAogICBmb3IgKGNpZSA9IGNpZV9y b290OyBjaWU7IGNpZSA9IGNpZS0+bmV4dCkKICAgICB7Ci0gICAgICBpZiAo Y2llLT5yZXR1cm5fY29sdW1uICE9IGZkZS0+cmV0dXJuX2NvbHVtbgorICAg ICAgaWYgKGNpZS0+Y3VyX3NlZyAhPSBmZGUtPmNzZWcKKyAgICAgICAgICB8 fCBjaWUtPnJldHVybl9jb2x1bW4gIT0gZmRlLT5yZXR1cm5fY29sdW1uCiAJ ICB8fCBjaWUtPnNpZ25hbF9mcmFtZSAhPSBmZGUtPnNpZ25hbF9mcmFtZQog CSAgfHwgY2llLT5wZXJfZW5jb2RpbmcgIT0gZmRlLT5wZXJfZW5jb2RpbmcK IAkgIHx8IGNpZS0+bHNkYV9lbmNvZGluZyAhPSBmZGUtPmxzZGFfZW5jb2Rp bmcpCkBAIC0xNjA1LDYgKzE3NjUsNyBAQCBzZWxlY3RfY2llX2Zvcl9mZGUg KHN0cnVjdCBmZGVfZW50cnkgKmZkCiAgIGNpZSA9IChzdHJ1Y3QgY2llX2Vu dHJ5ICopIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGNpZV9lbnRyeSkpOwog ICBjaWUtPm5leHQgPSBjaWVfcm9vdDsKICAgY2llX3Jvb3QgPSBjaWU7Cisg IGNpZS0+Y3VyX3NlZyA9IGZkZS0+Y3NlZzsKICAgY2llLT5yZXR1cm5fY29s dW1uID0gZmRlLT5yZXR1cm5fY29sdW1uOwogICBjaWUtPnNpZ25hbF9mcmFt ZSA9IGZkZS0+c2lnbmFsX2ZyYW1lOwogICBjaWUtPnBlcl9lbmNvZGluZyA9 IGZkZS0+cGVyX2VuY29kaW5nOwpAQCAtMTYyOSwxMzAgKzE3OTAsMTg5IEBA IHNlbGVjdF9jaWVfZm9yX2ZkZSAoc3RydWN0IGZkZV9lbnRyeSAqZmQKIAog I2lmZGVmIG1kX3JlZ19laF9mcmFtZV90b19kZWJ1Z19mcmFtZQogc3RhdGlj IHZvaWQKLWNmaV9jaGFuZ2VfcmVnX251bWJlcnMgKHN0cnVjdCBjZmlfaW5z bl9kYXRhICppbnNuKQorY2ZpX2NoYW5nZV9yZWdfbnVtYmVycyAoc3RydWN0 IGNmaV9pbnNuX2RhdGEgKmluc24sIHNlZ1QgY2NzZWcpCiB7CiAgIGZvciAo OyBpbnNuOyBpbnNuID0gaW5zbi0+bmV4dCkKLSAgICBzd2l0Y2ggKGluc24t Pmluc24pCi0gICAgICB7Ci0gICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xv YzoKLSAgICAgIGNhc2UgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OgotICAgICAg Y2FzZSBEV19DRkFfcmVtZW1iZXJfc3RhdGU6Ci0gICAgICBjYXNlIERXX0NG QV9yZXN0b3JlX3N0YXRlOgotICAgICAgY2FzZSBEV19DRkFfR05VX3dpbmRv d19zYXZlOgotICAgICAgY2FzZSBDRklfZXNjYXBlOgotCWJyZWFrOworICAg IHsKKyAgICAgIGlmIChpbnNuLT5jdXJfc2VnICE9IGNjc2VnKQorICAgICAg ICBjb250aW51ZTsKKyAgICAgIHN3aXRjaCAoaW5zbi0+aW5zbikKKwl7CisJ Y2FzZSBEV19DRkFfYWR2YW5jZV9sb2M6CisJY2FzZSBEV19DRkFfZGVmX2Nm YV9vZmZzZXQ6CisJY2FzZSBEV19DRkFfcmVtZW1iZXJfc3RhdGU6CisJY2Fz ZSBEV19DRkFfcmVzdG9yZV9zdGF0ZToKKwljYXNlIERXX0NGQV9HTlVfd2lu ZG93X3NhdmU6CisJY2FzZSBDRklfZXNjYXBlOgorCSAgYnJlYWs7CiAKLSAg ICAgIGNhc2UgRFdfQ0ZBX2RlZl9jZmE6Ci0gICAgICBjYXNlIERXX0NGQV9v ZmZzZXQ6Ci0JaW5zbi0+dS5yaS5yZWcgPSBtZF9yZWdfZWhfZnJhbWVfdG9f ZGVidWdfZnJhbWUgKGluc24tPnUucmkucmVnKTsKLQlicmVhazsKKwljYXNl IERXX0NGQV9kZWZfY2ZhOgorCWNhc2UgRFdfQ0ZBX29mZnNldDoKKwkgIGlu c24tPnUucmkucmVnID0gbWRfcmVnX2VoX2ZyYW1lX3RvX2RlYnVnX2ZyYW1l IChpbnNuLT51LnJpLnJlZyk7CisJICBicmVhazsKIAotICAgICAgY2FzZSBE V19DRkFfZGVmX2NmYV9yZWdpc3RlcjoKLSAgICAgIGNhc2UgRFdfQ0ZBX3Vu ZGVmaW5lZDoKLSAgICAgIGNhc2UgRFdfQ0ZBX3NhbWVfdmFsdWU6Ci0gICAg ICBjYXNlIERXX0NGQV9yZXN0b3JlOgotCWluc24tPnUuciA9IG1kX3JlZ19l aF9mcmFtZV90b19kZWJ1Z19mcmFtZSAoaW5zbi0+dS5yKTsKLQlicmVhazsK KwljYXNlIERXX0NGQV9kZWZfY2ZhX3JlZ2lzdGVyOgorCWNhc2UgRFdfQ0ZB X3VuZGVmaW5lZDoKKwljYXNlIERXX0NGQV9zYW1lX3ZhbHVlOgorCWNhc2Ug RFdfQ0ZBX3Jlc3RvcmU6CisJICBpbnNuLT51LnIgPSBtZF9yZWdfZWhfZnJh bWVfdG9fZGVidWdfZnJhbWUgKGluc24tPnUucik7CisJICBicmVhazsKIAot ICAgICAgY2FzZSBEV19DRkFfcmVnaXN0ZXI6Ci0JaW5zbi0+dS5yci5yZWcx ID0gbWRfcmVnX2VoX2ZyYW1lX3RvX2RlYnVnX2ZyYW1lIChpbnNuLT51LnJy LnJlZzEpOwotCWluc24tPnUucnIucmVnMiA9IG1kX3JlZ19laF9mcmFtZV90 b19kZWJ1Z19mcmFtZSAoaW5zbi0+dS5yci5yZWcyKTsKLQlicmVhazsKKwlj YXNlIERXX0NGQV9yZWdpc3RlcjoKKwkgIGluc24tPnUucnIucmVnMSA9IG1k X3JlZ19laF9mcmFtZV90b19kZWJ1Z19mcmFtZSAoaW5zbi0+dS5yci5yZWcx KTsKKwkgIGluc24tPnUucnIucmVnMiA9IG1kX3JlZ19laF9mcmFtZV90b19k ZWJ1Z19mcmFtZSAoaW5zbi0+dS5yci5yZWcyKTsKKwkgIGJyZWFrOwogCi0g ICAgICBjYXNlIENGSV92YWxfZW5jb2RlZF9hZGRyOgotCWluc24tPnUuZWEu cmVnID0gbWRfcmVnX2VoX2ZyYW1lX3RvX2RlYnVnX2ZyYW1lIChpbnNuLT51 LmVhLnJlZyk7Ci0JYnJlYWs7CisJY2FzZSBDRklfdmFsX2VuY29kZWRfYWRk cjoKKwkgIGluc24tPnUuZWEucmVnID0gbWRfcmVnX2VoX2ZyYW1lX3RvX2Rl YnVnX2ZyYW1lIChpbnNuLT51LmVhLnJlZyk7CisJICBicmVhazsKIAotICAg ICAgZGVmYXVsdDoKLQlhYm9ydCAoKTsKLSAgICAgIH0KKwlkZWZhdWx0Ogor CSAgYWJvcnQgKCk7CisJfQorICAgIH0KIH0KICNlbHNlCi0jZGVmaW5lIGNm aV9jaGFuZ2VfcmVnX251bWJlcnMoaW5zbikgZG8geyB9IHdoaWxlICgwKQor I2RlZmluZSBjZmlfY2hhbmdlX3JlZ19udW1iZXJzKGluc24sIGNzZWcpIGRv IHsgfSB3aGlsZSAoMCkKICNlbmRpZgogCitzdGF0aWMgc2VnVAorZ2V0X2Nm aV9zZWcgKHNlZ1QgY3NlZywgY29uc3QgY2hhciAqYmFzZSwgZmxhZ3dvcmQg ZmxhZ3MsIGludCBhbGlnbikKK3sKKyAgc3RydWN0IGR3Y2ZpX3NlZ19saXN0 ICpsOworCisgIGwgPSBkd2NmaV9oYXNoX2ZpbmRfb3JfbWFrZSAoY3NlZywg YmFzZSwgZmxhZ3MpOworCisgIHN1YnNlZ19zZXQgKGwtPnNlZywgbC0+c3Vi c2VnKTsKKyAgcmVjb3JkX2FsaWdubWVudCAobC0+c2VnLCBhbGlnbik7Cisg IHJldHVybiBsLT5zZWc7Cit9CisKIHZvaWQKIGNmaV9maW5pc2ggKHZvaWQp CiB7Ci0gIHNlZ1QgY2ZpX3NlZzsKKyAgc3RydWN0IGNpZV9lbnRyeSAqY2ll LCAqY2llX25leHQ7CisgIHNlZ1QgY2ZpX3NlZywgY2NzZWc7CiAgIHN0cnVj dCBmZGVfZW50cnkgKmZkZTsKLSAgaW50IHNhdmVfZmxhZ190cmFkaXRpb25h bF9mb3JtYXQ7CisgIHN0cnVjdCBjZmlfaW5zbl9kYXRhICpmaXJzdDsKKyAg aW50IHNhdmVfZmxhZ190cmFkaXRpb25hbF9mb3JtYXQsIHNlZWtfbmV4dF9z ZWc7CiAKICAgaWYgKGFsbF9mZGVfZGF0YSA9PSAwKQogICAgIHJldHVybjsK IAogICBpZiAoKGNmaV9zZWN0aW9ucyAmIENGSV9FTUlUX2VoX2ZyYW1lKSAh PSAwKQogICAgIHsKLSAgICAgIC8qIE9wZW4gLmVoX2ZyYW1lIHNlY3Rpb24u ICAqLwotICAgICAgY2ZpX3NlZyA9IHN1YnNlZ19uZXcgKCIuZWhfZnJhbWUi LCAwKTsKLSAgICAgIGJmZF9zZXRfc2VjdGlvbl9mbGFncyAoc3Rkb3V0cHV0 LCBjZmlfc2VnLAotCQkJICAgICBTRUNfQUxMT0MgfCBTRUNfTE9BRCB8IFNF Q19EQVRBCi0JCQkgICAgIHwgRFdBUkYyX0VIX0ZSQU1FX1JFQURfT05MWSk7 Ci0gICAgICBzdWJzZWdfc2V0IChjZmlfc2VnLCAwKTsKLSAgICAgIHJlY29y ZF9hbGlnbm1lbnQgKGNmaV9zZWcsIEVIX0ZSQU1FX0FMSUdOTUVOVCk7Ci0K LSNpZmRlZiBtZF9maXhfdXBfZWhfZnJhbWUKLSAgICAgIG1kX2ZpeF91cF9l aF9mcmFtZSAoY2ZpX3NlZyk7Ci0jZW5kaWYKLQogICAgICAgLyogTWFrZSBz dXJlIGNoZWNrX2VoX2ZyYW1lIGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCBv dXIgb3V0cHV0LiAgKi8KICAgICAgIHNhdmVfZmxhZ190cmFkaXRpb25hbF9m b3JtYXQgPSBmbGFnX3RyYWRpdGlvbmFsX2Zvcm1hdDsKICAgICAgIGZsYWdf dHJhZGl0aW9uYWxfZm9ybWF0ID0gMTsKIAotICAgICAgZm9yIChmZGUgPSBh bGxfZmRlX2RhdGE7IGZkZSA7IGZkZSA9IGZkZS0+bmV4dCkKLQl7Ci0JICBz dHJ1Y3QgY2ZpX2luc25fZGF0YSAqZmlyc3Q7Ci0JICBzdHJ1Y3QgY2llX2Vu dHJ5ICpjaWU7Ci0KLQkgIGlmIChmZGUtPmVuZF9hZGRyZXNzID09IE5VTEwp CisgICAgICBkbworICAgICAgICB7CisJICBjY3NlZyA9IE5VTEw7CisJICBj Zmlfc2VnID0gTlVMTDsKKwkgIHNlZWtfbmV4dF9zZWcgPSAwOworCSAgZm9y IChjaWUgPSBjaWVfcm9vdDsgY2llOyBjaWUgPSBjaWVfbmV4dCkKIAkgICAg ewotCSAgICAgIGFzX2JhZCAoXygib3BlbiBDRkkgYXQgdGhlIGVuZCBvZiBm aWxlOyBtaXNzaW5nIC5jZmlfZW5kcHJvYyBkaXJlY3RpdmUiKSk7Ci0JICAg ICAgZmRlLT5lbmRfYWRkcmVzcyA9IGZkZS0+c3RhcnRfYWRkcmVzczsKKwkg ICAgICBjaWVfbmV4dCA9IGNpZS0+bmV4dDsKKwkgICAgICBmcmVlICgodm9p ZCAqKSBjaWUpOwogCSAgICB9CisJICBjaWVfcm9vdCA9IE5VTEw7CiAKLQkg IGNpZSA9IHNlbGVjdF9jaWVfZm9yX2ZkZSAoZmRlLCBUUlVFLCAmZmlyc3Qs IDIpOwotCSAgb3V0cHV0X2ZkZSAoZmRlLCBjaWUsIFRSVUUsIGZpcnN0LAot CQkgICAgICBmZGUtPm5leHQgPT0gTlVMTCA/IEVIX0ZSQU1FX0FMSUdOTUVO VCA6IDIpOworCSAgZm9yIChmZGUgPSBhbGxfZmRlX2RhdGE7IGZkZSA7IGZk ZSA9IGZkZS0+bmV4dCkKKwkgICAgeworCSAgICAgIGlmIChmZGUtPmhhbmRs ZWQgIT0gMCkKKwkgICAgICAgIGNvbnRpbnVlOworCSAgICAgIGlmIChzZWVr X25leHRfc2VnICYmIGZkZS0+Y3NlZyAhPSBjY3NlZykKKwkgICAgICAgIHsK KwkJICBzZWVrX25leHRfc2VnID0gMjsKKwkJICBjb250aW51ZTsKKwkJfQor CSAgICAgIGlmICghc2Vla19uZXh0X3NlZykKKwkgICAgICAgIHsKKwkJICBj Y3NlZyA9IGZkZS0+Y3NlZzsKKwkJICAvKiBPcGVuIC5laF9mcmFtZSBzZWN0 aW9uLiAgKi8KKwkJICBjZmlfc2VnID0gZ2V0X2NmaV9zZWcgKGNjc2VnLCAi LmVoX2ZyYW1lIiwKKwkJCQkJIFNFQ19BTExPQyB8IFNFQ19MT0FEIHwgU0VD X0RBVEEKKwkJCQkJIHwgRFdBUkYyX0VIX0ZSQU1FX1JFQURfT05MWSwKKwkJ CQkJIEVIX0ZSQU1FX0FMSUdOTUVOVCk7CisjaWZkZWYgbWRfZml4X3VwX2Vo X2ZyYW1lCisJCSAgbWRfZml4X3VwX2VoX2ZyYW1lIChjZmlfc2VnKTsKKyNl bmRpZgorCQkgIHNlZWtfbmV4dF9zZWcgPSAxOworCQl9CisJICAgICAgZmRl LT5oYW5kbGVkID0gMTsKKworCSAgICAgIGlmIChmZGUtPmVuZF9hZGRyZXNz ID09IE5VTEwpCisJCXsKKwkJICBhc19iYWQgKF8oIm9wZW4gQ0ZJIGF0IHRo ZSBlbmQgb2YgZmlsZTsgbWlzc2luZyAuY2ZpX2VuZHByb2MgZGlyZWN0aXZl IikpOworCQkgIGZkZS0+ZW5kX2FkZHJlc3MgPSBmZGUtPnN0YXJ0X2FkZHJl c3M7CisJCX0KKworCSAgICAgIGNpZSA9IHNlbGVjdF9jaWVfZm9yX2ZkZSAo ZmRlLCBUUlVFLCAmZmlyc3QsIDIpOworCSAgICAgIG91dHB1dF9mZGUgKGZk ZSwgY2llLCBUUlVFLCBmaXJzdCwKKwkJCSAgZmRlLT5uZXh0ID09IE5VTEwg PyBFSF9GUkFNRV9BTElHTk1FTlQgOiAyKTsKKwkgICAgfQogCX0KKyAgICAg IHdoaWxlIChzZWVrX25leHRfc2VnID09IDIpOworCisgICAgICBmb3IgKGZk ZSA9IGFsbF9mZGVfZGF0YTsgZmRlIDsgZmRlID0gZmRlLT5uZXh0KQorICAg ICAgICBmZGUtPmhhbmRsZWQgPSAwOwogCiAgICAgICBmbGFnX3RyYWRpdGlv bmFsX2Zvcm1hdCA9IHNhdmVfZmxhZ190cmFkaXRpb25hbF9mb3JtYXQ7CiAg ICAgfQogCiAgIGlmICgoY2ZpX3NlY3Rpb25zICYgQ0ZJX0VNSVRfZGVidWdf ZnJhbWUpICE9IDApCiAgICAgewotICAgICAgc3RydWN0IGNpZV9lbnRyeSAq Y2llLCAqY2llX25leHQ7CiAgICAgICBpbnQgYWxpZ25tZW50ID0gZmZzIChE V0FSRjJfQUREUl9TSVpFIChzdGRvdXRwdXQpKSAtIDE7CiAKLSAgICAgIGZv ciAoY2llID0gY2llX3Jvb3Q7IGNpZTsgY2llID0gY2llX25leHQpCi0Jewot CSAgY2llX25leHQgPSBjaWUtPm5leHQ7Ci0JICBmcmVlICgodm9pZCAqKSBj aWUpOwotCX0KLSAgICAgIGNpZV9yb290ID0gTlVMTDsKLQotICAgICAgLyog T3BlbiAuZGVidWdfZnJhbWUgc2VjdGlvbi4gICovCi0gICAgICBjZmlfc2Vn ID0gc3Vic2VnX25ldyAoIi5kZWJ1Z19mcmFtZSIsIDApOwotICAgICAgYmZk X3NldF9zZWN0aW9uX2ZsYWdzIChzdGRvdXRwdXQsIGNmaV9zZWcsCi0JCQkg ICAgIFNFQ19SRUFET05MWSB8IFNFQ19ERUJVR0dJTkcpOwotICAgICAgc3Vi c2VnX3NldCAoY2ZpX3NlZywgMCk7Ci0gICAgICByZWNvcmRfYWxpZ25tZW50 IChjZmlfc2VnLCBhbGlnbm1lbnQpOwotCi0gICAgICBmb3IgKGZkZSA9IGFs bF9mZGVfZGF0YTsgZmRlIDsgZmRlID0gZmRlLT5uZXh0KQotCXsKLQkgIHN0 cnVjdCBjZmlfaW5zbl9kYXRhICpmaXJzdDsKLQotCSAgaWYgKGZkZS0+ZW5k X2FkZHJlc3MgPT0gTlVMTCkKKyAgICAgIGRvCisgICAgICAgIHsKKwkgIGNj c2VnID0gTlVMTDsKKwkgIGNmaV9zZWcgPSBOVUxMOworCSAgc2Vla19uZXh0 X3NlZyA9IDA7CisJICBmb3IgKGNpZSA9IGNpZV9yb290OyBjaWU7IGNpZSA9 IGNpZV9uZXh0KQogCSAgICB7Ci0JICAgICAgYXNfYmFkIChfKCJvcGVuIENG SSBhdCB0aGUgZW5kIG9mIGZpbGU7IG1pc3NpbmcgLmNmaV9lbmRwcm9jIGRp cmVjdGl2ZSIpKTsKLQkgICAgICBmZGUtPmVuZF9hZGRyZXNzID0gZmRlLT5z dGFydF9hZGRyZXNzOworCSAgICAgIGNpZV9uZXh0ID0gY2llLT5uZXh0Owor CSAgICAgIGZyZWUgKCh2b2lkICopIGNpZSk7CiAJICAgIH0KKwkgIGNpZV9y b290ID0gTlVMTDsKIAotCSAgZmRlLT5wZXJfZW5jb2RpbmcgPSBEV19FSF9Q RV9vbWl0OwotCSAgZmRlLT5sc2RhX2VuY29kaW5nID0gRFdfRUhfUEVfb21p dDsKLQkgIGNmaV9jaGFuZ2VfcmVnX251bWJlcnMgKGZkZS0+ZGF0YSk7Ci0J ICBjaWUgPSBzZWxlY3RfY2llX2Zvcl9mZGUgKGZkZSwgRkFMU0UsICZmaXJz dCwgYWxpZ25tZW50KTsKLQkgIG91dHB1dF9mZGUgKGZkZSwgY2llLCBGQUxT RSwgZmlyc3QsIGFsaWdubWVudCk7CisJICBmb3IgKGZkZSA9IGFsbF9mZGVf ZGF0YTsgZmRlIDsgZmRlID0gZmRlLT5uZXh0KQorCSAgICB7CisJICAgICAg aWYgKGZkZS0+aGFuZGxlZCAhPSAwKQorCSAgICAgICAgY29udGludWU7CisJ ICAgICAgaWYgKHNlZWtfbmV4dF9zZWcgJiYgZmRlLT5jc2VnICE9IGNjc2Vn KQorCSAgICAgICAgeworCQkgIHNlZWtfbmV4dF9zZWcgPSAyOworCQkgIGNv bnRpbnVlOworCQl9CisJICAgICAgaWYgKCFzZWVrX25leHRfc2VnKQorCSAg ICAgICAgeworCQkgIGNjc2VnID0gZmRlLT5jc2VnOworCQkgIC8qIE9wZW4g LmRlYnVnX2ZyYW1lIHNlY3Rpb24uICAqLworCQkgIGNmaV9zZWcgPSBnZXRf Y2ZpX3NlZyAoY2NzZWcsICIuZGVidWdfZnJhbWUiLAorCQkJCQkgU0VDX1JF QURPTkxZIHwgU0VDX0RFQlVHR0lORywKKwkJCQkJIGFsaWdubWVudCk7CisJ CSAgc2Vla19uZXh0X3NlZyA9IDE7CisJCX0KKwkgICAgICBmZGUtPmhhbmRs ZWQgPSAxOworCSAgICAgIGlmIChmZGUtPmVuZF9hZGRyZXNzID09IE5VTEwp CisJCXsKKwkJICBhc19iYWQgKF8oIm9wZW4gQ0ZJIGF0IHRoZSBlbmQgb2Yg ZmlsZTsgbWlzc2luZyAuY2ZpX2VuZHByb2MgZGlyZWN0aXZlIikpOworCQkg IGZkZS0+ZW5kX2FkZHJlc3MgPSBmZGUtPnN0YXJ0X2FkZHJlc3M7CisJCX0K KworCSAgICAgIGZkZS0+cGVyX2VuY29kaW5nID0gRFdfRUhfUEVfb21pdDsK KwkgICAgICBmZGUtPmxzZGFfZW5jb2RpbmcgPSBEV19FSF9QRV9vbWl0Owor CSAgICAgIGNmaV9jaGFuZ2VfcmVnX251bWJlcnMgKGZkZS0+ZGF0YSwgY2Nz ZWcpOworCSAgICAgIGNpZSA9IHNlbGVjdF9jaWVfZm9yX2ZkZSAoZmRlLCBG QUxTRSwgJmZpcnN0LCBhbGlnbm1lbnQpOworCSAgICAgIG91dHB1dF9mZGUg KGZkZSwgY2llLCBGQUxTRSwgZmlyc3QsIGFsaWdubWVudCk7CisJICAgIH0K IAl9CisgICAgICB3aGlsZSAoc2Vla19uZXh0X3NlZyA9PSAyKTsKKworICAg ICAgZm9yIChmZGUgPSBhbGxfZmRlX2RhdGE7IGZkZSA7IGZkZSA9IGZkZS0+ bmV4dCkKKyAgICAgICAgZmRlLT5oYW5kbGVkID0gMDsKICAgICB9CiB9CiAK SW5kZXg6IHNyYy9nYXMvZWhvcHQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzcmMub3JpZy9nYXMvZWhvcHQuYwkyMDExLTA0LTE4IDIwOjM2OjQx LjQ4Mzg3MDUwMCArMDIwMAorKysgc3JjL2dhcy9laG9wdC5jCTIwMTEtMDQt MTggMjA6NDc6MzIuNTI1MzA1NDAwICswMjAwCkBAIC0xMjAsNyArMTIwLDcg QEAgZ2V0X2NpZV9pbmZvIChzdHJ1Y3QgY2llX2luZm8gKmluZm8pCiAKICAg LyogRmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIENJRSBJZGVudGlmaWVyIFRh ZyBpcyAwLy0xLiAgKi8KIAotICBpZiAoc3RyY21wIChzZWdtZW50X25hbWUg KG5vd19zZWcpLCAiLmRlYnVnX2ZyYW1lIikgPT0gMCkKKyAgaWYgKHN0cm5j bXAgKHNlZ21lbnRfbmFtZSAobm93X3NlZyksICIuZGVidWdfZnJhbWUiLCAx MikgPT0gMCkKICAgICBDSUVfaWQgPSAoY2hhcikweGZmOwogICBlbHNlCiAg ICAgQ0lFX2lkID0gMDsKQEAgLTI4NSw5ICsyODUsMTAgQEAgY2hlY2tfZWhf ZnJhbWUgKGV4cHJlc3Npb25TICpleHAsIHVuc2lnbgogI2VuZGlmCiAKICAg LyogU2VsZWN0IHRoZSBwcm9wZXIgc2VjdGlvbiBkYXRhLiAgKi8KLSAgaWYg KHN0cmNtcCAoc2VnbWVudF9uYW1lIChub3dfc2VnKSwgIi5laF9mcmFtZSIp ID09IDApCisgIGlmIChzdHJuY21wIChzZWdtZW50X25hbWUgKG5vd19zZWcp LCAiLmVoX2ZyYW1lIiwgOSkgPT0gMAorICAgICAgJiYgc2VnbWVudF9uYW1l IChub3dfc2VnKVs5XSAhPSAnXycpCiAgICAgZCA9ICZlaF9mcmFtZV9kYXRh OwotICBlbHNlIGlmIChzdHJjbXAgKHNlZ21lbnRfbmFtZSAobm93X3NlZyks ICIuZGVidWdfZnJhbWUiKSA9PSAwKQorICBlbHNlIGlmIChzdHJuY21wIChz ZWdtZW50X25hbWUgKG5vd19zZWcpLCAiLmRlYnVnX2ZyYW1lIiwgMTIpID09 IDApCiAgICAgZCA9ICZkZWJ1Z19mcmFtZV9kYXRhOwogICBlbHNlCiAgICAg cmV0dXJuIDA7CkluZGV4OiBzcmMvbGQvc2NyaXB0dGVtcGwvcGUuc2MKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gc3JjLm9yaWcvbGQvc2NyaXB0dGVt cGwvcGUuc2MJMjAxMS0wNC0xOCAyMDozNjo0MS41MTM4NzA1MDAgKzAyMDAK KysrIHNyYy9sZC9zY3JpcHR0ZW1wbC9wZS5zYwkyMDExLTA0LTE4IDIwOjQ3 OjMyLjUyNzgwNTcwMCArMDIwMApAQCAtMTE1LDcgKzExNSw3IEBAIFNFQ1RJ T05TCiAKICAgLmVoX2ZyYW1lICR7UkVMT0NBVElORytCTE9DSyhfX3NlY3Rp b25fYWxpZ25tZW50X18pfSA6CiAgIHsKLSAgICAqKC5laF9mcmFtZSkKKyAg ICAqKC5laF9mcmFtZSopCiAgIH0KIAogICAucGRhdGEgJHtSRUxPQ0FUSU5H K0JMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyl9IDoKQEAgLTI1MCw3ICsy NTAsNyBAQCBTRUNUSU9OUwogCiAgIC5kZWJ1Z19mcmFtZSAke1JFTE9DQVRJ TkcrQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKX0gJHtSRUxPQ0FUSU5H KyhOT0xPQUQpfSA6CiAgIHsKLSAgICAqKC5kZWJ1Z19mcmFtZSkKKyAgICAq KC5kZWJ1Z19mcmFtZSopCiAgIH0KIAogICAuZGVidWdfc3RyICR7UkVMT0NB VElORytCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pfSAke1JFTE9DQVRJ TkcrKE5PTE9BRCl9IDoKSW5kZXg6IHNyYy9sZC9zY3JpcHR0ZW1wbC9wZXAu c2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjLm9yaWcvbGQvc2Ny aXB0dGVtcGwvcGVwLnNjCTIwMTEtMDQtMTggMjA6MzY6NDEuNTE0ODcwNTAw ICswMjAwCisrKyBzcmMvbGQvc2NyaXB0dGVtcGwvcGVwLnNjCTIwMTEtMDQt MTggMjA6NDc6MzIuNTMxMzA2MTAwICswMjAwCkBAIC0xMTYsNyArMTE2LDcg QEAgU0VDVElPTlMKIAogICAuZWhfZnJhbWUgJHtSRUxPQ0FUSU5HK0JMT0NL KF9fc2VjdGlvbl9hbGlnbm1lbnRfXyl9IDoKICAgewotICAgICooLmVoX2Zy YW1lKQorICAgICooLmVoX2ZyYW1lKikKICAgfQogCiAgIC5wZGF0YSAke1JF TE9DQVRJTkcrQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKX0gOgpAQCAt MjU2LDcgKzI1Niw3IEBAIFNFQ1RJT05TCiAKICAgLmRlYnVnX2ZyYW1lICR7 UkVMT0NBVElORytCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pfSAke1JF TE9DQVRJTkcrKE5PTE9BRCl9IDoKICAgewotICAgICooLmRlYnVnX2ZyYW1l KQorICAgICooLmRlYnVnX2ZyYW1lKikKICAgfQogCiAgIC5kZWJ1Z19zdHIg JHtSRUxPQ0FUSU5HK0JMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyl9ICR7 UkVMT0NBVElORysoTk9MT0FEKX0gOgpJbmRleDogc3JjL2JmZC9jb2ZmY29k ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy5vcmlnL2JmZC9j b2ZmY29kZS5oCTIwMTEtMDQtMTggMjA6MzY6NDEuNDcxODcwNTAwICswMjAw CisrKyBzcmMvYmZkL2NvZmZjb2RlLmgJMjAxMS0wNC0xOCAyMDo0NzozMi41 MzU4MDY3MDAgKzAyMDAKQEAgLTY1OCw3ICs2NTgsMTAgQEAgc2VjX3RvX3N0 eXBfZmxhZ3MgKGNvbnN0IGNoYXIgKnNlY19uYW1lLAogCiAgIC8qIEZJWE1F OiBUaGVyZSBpcyBubyBnYXMgc3ludGF4IHRvIHNwZWNpZnkgdGhlIGRlYnVn IHNlY3Rpb24gZmxhZy4gICovCiAgIGlmIChpc19kYmcpCi0gICAgICBzZWNf ZmxhZ3MgPSBTRUNfREVCVUdHSU5HIHwgU0VDX1JFQURPTkxZOworICAgIHsK KyAgICAgIHNlY19mbGFncyAmPSAoU0VDX0xJTktfT05DRSB8IFNFQ19MSU5L X0RVUExJQ0FURVNfRElTQ0FSRCk7CisgICAgICBzZWNfZmxhZ3MgfD0gU0VD X0RFQlVHR0lORyB8IFNFQ19SRUFET05MWTsKKyAgICB9CiAKICAgLyogc2tp cCBMT0FEICovCiAgIC8qIFJFQURPTkxZIGxhdGVyICovCkluZGV4OiBzcmMv bGQvdGVzdHN1aXRlL2xkLXBlL2NmaS5kCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysgc3JjL2xkL3Rlc3RzdWl0ZS9sZC1wZS9jZmkuZAkyMDEx LTA0LTE4IDIxOjU3OjQxLjEzMTIzMDQwMCArMDIwMApAQCAtMCwwICsxLDM2 IEBACisjc291cmNlOiBjZmlhLnMKKyNzb3VyY2U6IGNmaWIucworI2xkOiAt LWZpbGUtYWxpZ24gMSAtLXNlY3Rpb24tYWxpZ24gMQorI29iamR1bXA6IC1X ZgorCisjLi4uCiswMDAwMDAwNCAwMDAwMDAxNCBmZmZmZmZmZiBDSUUKKyAg VmVyc2lvbjogICAgICAgICAgICAgICAxCisgIEF1Z21lbnRhdGlvbjogICAg ICAgICAgIiIKKyAgQ29kZSBhbGlnbm1lbnQgZmFjdG9yOiAxCisgIERhdGEg YWxpZ25tZW50IGZhY3RvcjogXC04CisgIFJldHVybiBhZGRyZXNzIGNvbHVt bjogMzIKKworICBEV19DRkFfZGVmX2NmYTogcjcgXChyc3BcKSBvZnMgOAor ICBEV19DRkFfb2Zmc2V0OiByMzIgXCh4bW0xNVwpIGF0IGNmYVwtOAorICBE V19DRkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBEV19D RkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorCiswMDAwMDAx YyAwMDAwMDAyNCAwMDAwMDAwNCBGREUgY2llPTAwMDAwMDA0IHBjPS4qCisg IERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAuKgorICBEV19DRkFfZGVmX2Nm YV9vZmZzZXQ6IDE2CisgIERXX0NGQV9vZmZzZXQ6IHI2IFwocmJwXCkgYXQg Y2ZhXC0xNgorICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gLioKK14gIERX X0NGQV9kZWZfY2ZhOiByNyBcKHJzcFwpIG9mcyA4CisgIERXX0NGQV9yZXN0 b3JlOiByNiBcKHJicFwpCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAor ICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBE V19DRkFfbm9wCisjcGFzcwpJbmRleDogc3JjL2xkL3Rlc3RzdWl0ZS9sZC1w ZS9jZmkzMi5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgc3Jj L2xkL3Rlc3RzdWl0ZS9sZC1wZS9jZmkzMi5kCTIwMTEtMDQtMTggMjE6NTY6 NDIuMTg2MjQ1NDAwICswMjAwCkBAIC0wLDAgKzEsMjggQEAKKyNzb3VyY2U6 IGNmaWEucworI3NvdXJjZTogY2ZpYi5zCisjbGQ6IC0tZmlsZS1hbGlnbiAx IC0tc2VjdGlvbi1hbGlnbiAxCisjb2JqZHVtcDogLVdmCisKKyMuLi4KKzAw MDAwMDAwIDAwMDAwMDEwIGZmZmZmZmZmIENJRQorICBWZXJzaW9uOiAgICAg ICAgICAgICAgIDEKKyAgQXVnbWVudGF0aW9uOiAgICAgICAgICAiIgorICBD b2RlIGFsaWdubWVudCBmYWN0b3I6IDEKKyAgRGF0YSBhbGlnbm1lbnQgZmFj dG9yOiBcLTQKKyAgUmV0dXJuIGFkZHJlc3MgY29sdW1uOiA4CisKKyAgRFdf Q0ZBX2RlZl9jZmE6IHI0IFwoZXNwXCkgb2ZzIDQKKyAgRFdfQ0ZBX29mZnNl dDogcjggXChlaXBcKSBhdCBjZmFcLTQKKyAgRFdfQ0ZBX25vcAorICBEV19D RkFfbm9wCisKKzAwMDAwMDE0IDAwMDAwMDE4IDAwMDAwMDAwIEZERSBjaWU9 MDAwMDAwMDAgcGM9LioKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIC4q CisgIERXX0NGQV9kZWZfY2ZhX29mZnNldDogMTYKKyAgRFdfQ0ZBX29mZnNl dDogcjYgXChlc2lcKSBhdCBjZmFcLTE2CisgIERXX0NGQV9hZHZhbmNlX2xv YzogNCB0byAuKgorICBEV19DRkFfZGVmX2NmYTogcjcgXChlZGlcKSBvZnMg OAorICBEV19DRkFfcmVzdG9yZTogcjYgXChlc2lcKQorICBEV19DRkFfbm9w CisgIERXX0NGQV9ub3AKKyNwYXNzCkluZGV4OiBzcmMvbGQvdGVzdHN1aXRl L2xkLXBlL2NmaWEucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysr IHNyYy9sZC90ZXN0c3VpdGUvbGQtcGUvY2ZpYS5zCTIwMTEtMDQtMTggMjE6 Mzc6NTAuOTMxNTk0MzAwICswMjAwCkBAIC0wLDAgKzEsMjYgQEAKKyAuZ2xv YmwgX21haW5DUlRTdGFydHVwCisgLmdsb2JsIF9zdGFydAorIC50ZXh0Citf bWFpbkNSVFN0YXJ0dXA6CittYWluQ1JUU3RhcnR1cDoKK19zdGFydDoKK3N0 YXJ0OgorIC5sb25nIC0xCisKKyAuY2ZpX3NlY3Rpb25zCS5kZWJ1Z19mcmFt ZQorIC5zZWN0aW9uIC50ZXh0JGFiYywieCIKKyAubGlua29uY2UgZGlzY2Fy ZAorIC5hbGlnbiAyCisgLmdsb2JsIF90c3QKKyAuZGVmIF90c3Q7IC5zY2wg MjsgLnR5cGUgMzI7IC5lbmRlZgorX3RzdDoKKyAuY2ZpX3N0YXJ0cHJvYwor IC5sb25nIDAKKyAuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2CisgLmNmaV9vZmZz ZXQgNiwgLTE2CisgLmxvbmcgMQorIC5jZmlfZGVmX2NmYSA3LCA4CisgLmNm aV9yZXN0b3JlIDYKKyAubG9uZyAyCisgLmNmaV9lbmRwcm9jCisKSW5kZXg6 IHNyYy9sZC90ZXN0c3VpdGUvbGQtcGUvY2ZpYi5zCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAorKysgc3JjL2xkL3Rlc3RzdWl0ZS9sZC1wZS9jZmli LnMJMjAxMS0wNC0xOCAyMTozODowMC42MjAzMjQ2MDAgKzAyMDAKQEAgLTAs MCArMSwxNiBAQAorIC5jZmlfc2VjdGlvbnMJLmRlYnVnX2ZyYW1lCisgLnNl Y3Rpb24gLnRleHQkYWJjLCJ4IgorIC5saW5rb25jZSBkaXNjYXJkCisgLmFs aWduIDIKKyAuZ2xvYmwgX3RzdAorIC5kZWYgX3RzdDsgLnNjbCAyOyAudHlw ZSAzMjsgLmVuZGVmCitfdHN0OgorIC5jZmlfc3RhcnRwcm9jCisgLmxvbmcg MAorIC5jZmlfZGVmX2NmYV9vZmZzZXQgMTYKKyAuY2ZpX29mZnNldCA2LCAt MTYKKyAubG9uZyAxCisgLmNmaV9kZWZfY2ZhIDcsIDgKKyAuY2ZpX3Jlc3Rv cmUgNgorIC5sb25nIDIKKyAuY2ZpX2VuZHByb2MKSW5kZXg6IHNyYy9sZC90 ZXN0c3VpdGUvbGQtcGUvcGUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHNyYy5vcmlnL2xkL3Rlc3RzdWl0ZS9sZC1wZS9wZS5leHAJMjAxMC0x Mi0yMSAxOTozMzoyNi4wMDAwMDAwMDAgKzAxMDAKKysrIHNyYy9sZC90ZXN0 c3VpdGUvbGQtcGUvcGUuZXhwCTIwMTEtMDQtMTggMjE6NDE6MzAuMDQyOTE3 OTAwICswMjAwCkBAIC03Nyw2ICs3NywxMiBAQCBydW5fZHVtcF90ZXN0ICJs b25nc2Vjbi01IgogcnVuX2R1bXBfdGVzdCAib3JwaGFuIgogcnVuX2R1bXBf dGVzdCAib3JwaGFuX251IgogCitpZiB7W2lzdGFyZ2V0IHg4Nl82NC0qLW1p bmd3Kl0gfSB7CisJcnVuX2R1bXBfdGVzdCAiY2ZpIgorfSBlbHNlaWYge1tp c3RhcmdldCBpKjg2LSotY3lnd2luKl0gfHwgW2lzdGFyZ2V0IGkqODYtKi1t aW5ndypdIH0geworCXJ1bl9kdW1wX3Rlc3QgImNmaTMyIgorfQorCiBzZXQg Zm9yZWlnbl9zeW1fdGVzdCB7CiAgIHsibm9uLUMgYWxpZ25lZCBjb21tb24i ICIiICIiIHtub24tYy1sYW5nLXN5bXMuc30KICAgIHt7bm0gLUMgbm9uLWMt bGFuZy1zeW1zLmR9fSAibm9uLWMtbGFuZy1zeW1zLngifQo= --002354470ac06eafab04a136e653--