From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,HTML_MESSAGE,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5555 invoked from network); 4 Mar 2023 19:50:07 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 4 Mar 2023 19:50:07 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id 9E4CC4129B; Sun, 5 Mar 2023 05:49:59 +1000 (AEST) Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by minnie.tuhs.org (Postfix) with ESMTPS id E85D541298 for ; Sun, 5 Mar 2023 05:49:51 +1000 (AEST) Received: by mail-pj1-x1029.google.com with SMTP id p3-20020a17090ad30300b0023a1cd5065fso5453798pju.0 for ; Sat, 04 Mar 2023 11:49:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677959391; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=l8+vJLWAcD4gc9MxJiw4ijFqQ/qpd8Sxt8J5OweIF2I=; b=g4tE7OdxC73Jz62jU/d6HffF13kd/jt6s+AoDWu/2WgtZdMwOiWyjNJqi7jCRjeig6 6QL+x4Ur3y4uM1K86xd4lZpVz5aioKaGR0PhCHnIEE9ZZKBg0xacLwAot89Uz87j4hKg YFR71hQKxrZtjQo88Xs/a4nIr1w2n+9HUhF3Du2cpjd7on0QSuHUpg6+O+HjPCbd+vXc ltASeqLVuoQIxxY7BNAhsE0Fs+geKv7WgLpl7PHwkM3M+n5uBRprrwMtsNHXHiG5cjTX rCeaMpfgl4pov3pPsX2L7/QOpWrIDsPEiPv8e10mwTxMvECQDJK1u5j2ybGJcwV04Qfj dJfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677959391; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=l8+vJLWAcD4gc9MxJiw4ijFqQ/qpd8Sxt8J5OweIF2I=; b=os5Q7mqAHuGuJuxJfaGERqNj+YVTaiM3rF1vEuFeE9y75kp/Wnd9IrUUlGisR4L0Wp GFkqYIBxPQ+XXUaXVu83DAVxiKFE0pZZayqLdpJ/wqZJGRbRqQ1sPiWP5xwUSHzDt15E l5fWsVp88YBXUNjo50a9EpNXfhJNNbRAyE7tInadbKzFFRpJnEWYMLjlSHjvWyZhP+N/ /PYuz2+FIRv7b/uBC7y09f/cVuv+Huk3vSJfZxKvfIQGfu+qUS5yX37xb/ApNxgUmPV8 doIUyqqeqGYG5WdcgTLeBl01QqQushogtU4x6a/S++eJTAht+KoaLqNFhQO8V7bCcJz+ VHhQ== X-Gm-Message-State: AO0yUKUnpiZQheRMvTfd/m5110NFUnsdUBArEi8NPv6Q2SkFkVZVay2m DeXiqsgpB/fYyOt9INYjIs5qO6I5tMECQF28Q73ZJoyy+9Q= X-Google-Smtp-Source: AK7set87xYVQi/6zoQepSbKHwDWZDsavfpahkyqm8FlkRRpOgIzqm+B1HtgalxJC4F6za04g+UygLeo1KMv7Gounlv4= X-Received: by 2002:a17:902:784e:b0:19c:9999:ea8b with SMTP id e14-20020a170902784e00b0019c9999ea8bmr2153884pln.8.1677959390792; Sat, 04 Mar 2023 11:49:50 -0800 (PST) MIME-Version: 1.0 From: KenUnix Date: Sat, 4 Mar 2023 14:49:33 -0500 Message-ID: To: UNIX TUHS Group Content-Type: multipart/mixed; boundary="000000000000700ed405f6185d84" Message-ID-Hash: HD6WNQJLOXDLTB4BQD2X7BG3Z4MC3OWH X-Message-ID-Hash: HD6WNQJLOXDLTB4BQD2X7BG3Z4MC3OWH X-MailFrom: ken.unix.guy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.6b1 Precedence: list Subject: [TUHS] Unix v7 ps command question List-Id: The Unix Heritage Society mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --000000000000700ed405f6185d84 Content-Type: multipart/alternative; boundary="000000000000700ed205f6185d82" --000000000000700ed205f6185d82 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, When executing ps alx on the interdata sim I get good output: # ps alx F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME CMD 3 S 0 0 0 255 0 20 2235 2 4262 ? 36:48 swapper 1 S 0 1 0 0 30 20 2255 8 46060 ? 0:00 /etc/init 1 S 0 19 1 0 30 20 2745 11 46114 co 0:00 -sh 1 R 0 301 19 4 50 20 4056 20 co 0:00 ps alx 1 S 0 12 1 0 40 20 2545 5 140000 ? 0:00 /etc/update 1 S 1 18 1 0 40 20 2625 10 140000 ? 0:00 /etc/cron # When executing ps alx on the pdp11 sim I get bad output: # ps alx F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME CMD 115 5120 0 0 1 26 1 55 1 3003 ? 120150:37 swapper # I tried copying the source from one machine to the other. No luck, same issue. I have attached the source from both machines. Any help appreciated. Ken --=20 WWL =F0=9F=93=9A --000000000000700ed205f6185d82 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

When executing ps alx on= the interdata sim I get good output:

# ps alx
= =C2=A0F S UID =C2=A0 PID =C2=A0PPID CPU PRI NICE =C2=A0ADDR =C2=A0SZ =C2=A0= WCHAN TTY TIME CMD
=C2=A03 S =C2=A0 0 =C2=A0 =C2=A0 0 =C2=A0 =C2=A0 0 25= 5 =C2=A0 0 =C2=A0 20 =C2=A02235 =C2=A0 2 =C2=A0 4262 ? =C2=A036:48 swapper<= br>=C2=A01 S =C2=A0 0 =C2=A0 =C2=A0 1 =C2=A0 =C2=A0 0 =C2=A0 0 =C2=A030 =C2= =A0 20 =C2=A02255 =C2=A0 8 =C2=A046060 ? =C2=A0 0:00 /etc/init
=C2=A01 S= =C2=A0 0 =C2=A0 =C2=A019 =C2=A0 =C2=A0 1 =C2=A0 0 =C2=A030 =C2=A0 20 =C2= =A02745 =C2=A011 =C2=A046114 co =C2=A00:00 -sh
=C2=A01 R =C2=A0 0 =C2= =A0 301 =C2=A0 =C2=A019 =C2=A0 4 =C2=A050 =C2=A0 20 =C2=A04056 =C2=A020 =C2= =A0 =C2=A0 =C2=A0 =C2=A0co =C2=A00:00 ps alx
=C2=A01 S =C2=A0 0 =C2=A0 = =C2=A012 =C2=A0 =C2=A0 1 =C2=A0 0 =C2=A040 =C2=A0 20 =C2=A02545 =C2=A0 5 14= 0000 ? =C2=A0 0:00 /etc/update
=C2=A01 S =C2=A0 1 =C2=A0 =C2=A018 =C2=A0= =C2=A0 1 =C2=A0 0 =C2=A040 =C2=A0 20 =C2=A02625 =C2=A010 140000 ? =C2=A0 0= :00 /etc/cron
#

When executing ps alx on the pdp11 si= m I get bad output:

# ps alx
=C2=A0F S UID =C2= =A0 PID =C2=A0PPID CPU PRI NICE =C2=A0ADDR =C2=A0SZ =C2=A0WCHAN TTY TIME CM= D
115
5120 =C2=A0 =C2=A0 0 =C2=A0 =C2=A0 0 =C2=A0 1 =C2=A026 =C2=A0 = =C2=A01 =C2=A0 =C2=A055 =C2=A0 1 =C2=A0 3003 ? =C2=A0120150:37 swapper
#=

I tried copying the source from one machine to the othe= r. No luck, same issue.

I have attached the source= from both machines.

Any help appreciated.

Ken

--
WWL =F0=9F=93=9A


--000000000000700ed205f6185d82-- --000000000000700ed405f6185d84 Content-Type: text/x-csrc; charset="US-ASCII"; name="ps1.c" Content-Disposition: attachment; filename="ps1.c" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leudnr1k1 LyoKICogICAgICBwcyAtIHByb2Nlc3Mgc3RhdHVzCiAqICAgICAgZXhhbWluZSBhbmQgcHJpbnQg Y2VydGFpbiB0aGluZ3MgYWJvdXQgcHJvY2Vzc2VzCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNp bmNsdWRlIDxhLm91dC5oPgojaW5jbHVkZSA8Y29yZS5oPgojaW5jbHVkZSA8c3lzL3BhcmFtLmg+ CiNpbmNsdWRlIDxzeXMvcHJvYy5oPgojaW5jbHVkZSA8c3lzL3R0eS5oPgojaW5jbHVkZSA8c3lz L2Rpci5oPgojaW5jbHVkZSA8c3lzL3VzZXIuaD4KCnN0cnVjdCBubGlzdCBubFtdID0gewogICAg ICAgIHsgIl9wcm9jIiB9LAogICAgICAgIHsgIl9zd2FwZGV2IiB9LAogICAgICAgIHsgIl9zd3Bs byIgfSwKICAgICAgICB7ICIiIH0sCn07CgpzdHJ1Y3QgIHByb2MgbXByb2M7CgpzdHJ1Y3QgIHVz ZXIgdTsKaW50ICAgICBjaGtwaWQ7CmludCAgICAgcmV0Y29kZT0xOwppbnQgICAgIGxmbGc7Cmlu dCAgICAgdmZsZzsKaW50ICAgICBrZmxnOwppbnQgICAgIHhmbGc7CmNoYXIgICAgKnRwdHI7Cmxv bmcgICAgbHNlZWsoKTsKY2hhciAgICAqZ2V0dHR5KCk7CmNoYXIgICAgKmdldHB0cigpOwpjaGFy ICAgICpzdHJuY21wKCk7CmludCAgICAgYWZsZzsKaW50ICAgICBtZW07CmludCAgICAgc3dtZW07 CmludCAgICAgc3dhcDsKZGFkZHJfdCBzd3BsbzsKCmludCAgICAgbmRldjsKc3RydWN0IGRldmwg ewogICAgICAgIGNoYXIgICAgZG5hbWVbRElSU0laXTsKICAgICAgICBkZXZfdCAgIGRldjsKfSBk ZXZsWzI1Nl07CgpjaGFyICAgICpjb3JlZjsKCm1haW4oYXJnYywgYXJndikKY2hhciAqKmFyZ3Y7 CnsKICAgICAgICBpbnQgaTsKICAgICAgICBjaGFyICphcDsKICAgICAgICBpbnQgdWlkLCBwdWlk OwoKICAgICAgICBpZiAoYXJnYz4xKSB7CiAgICAgICAgICAgICAgICBhcCA9IGFyZ3ZbMV07CiAg ICAgICAgICAgICAgICB3aGlsZSAoKmFwKSBzd2l0Y2ggKCphcCsrKSB7CgogICAgICAgICAgICAg ICAgY2FzZSAndic6CiAgICAgICAgICAgICAgICAgICAgICAgIHZmbGcrKzsKICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnYSc6CiAgICAgICAgICAg ICAgICAgICAgICAgIGFmbGcrKzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg ICAgICAgICAgICAgY2FzZSAndCc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCphcCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cHRyID0gYXA7CiAgICAgICAgICAgICAgICAg ICAgICAgIGFmbGcrKzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCp0cHRyID09ICc/JykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmxnKys7CiAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gYmJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAg ICAgICAgICAgICAgICB4ZmxnKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg ICAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg ICAgICAgICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgICAgICAgICAgICAgbGZsZysrOwog ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdrJzoK ICAgICAgICAgICAgICAgICAgICAgICAga2ZsZysrOwogICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBj aGtwaWQgPSBhdG9pKGFwLTEpOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJicmVhazsK ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg fQoKYmJyZWFrOgogICAgICAgIGlmKGNoZGlyKCIvZGV2IikgPCAwKSB7CiAgICAgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGNoYW5nZSB0byAvZGV2XG4iKTsKICAgICAgICAgICAg ICAgIGV4aXQoMSk7CiAgICAgICAgfQogICAgICAgIG5saXN0KGFyZ2M+Mj8gYXJndlsyXToiL3Vu aXgiLCBubCk7CiAgICAgICAgaWYgKG5sWzBdLm5fdHlwZT09MCkgewogICAgICAgICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJObyBuYW1lbGlzdFxuIik7CiAgICAgICAgICAgICAgICBleGl0KDEp OwogICAgICAgIH0KICAgICAgICBjb3JlZiA9ICIvZGV2L21lbSI7CiAgICAgICAgaWYoa2ZsZykK ICAgICAgICAgICAgICAgIGNvcmVmID0gIi91c3Ivc3lzL2NvcmUiOwogICAgICAgIGlmICgobWVt ID0gb3Blbihjb3JlZiwgMCkpIDwgMCkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICJObyBtZW1cbiIpOwogICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAg c3dtZW0gPSBvcGVuKGNvcmVmLCAwKTsKICAgICAgICAvKgogICAgICAgICAqIHJlYWQgbWVtIHRv IGZpbmQgc3dhcCBkZXYuCiAgICAgICAgICovCiAgICAgICAgbHNlZWsobWVtLCAobG9uZylubFsx XS5uX3ZhbHVlLCAwKTsKICAgICAgICByZWFkKG1lbSwgKGNoYXIgKikmbmxbMV0ubl92YWx1ZSwg c2l6ZW9mKG5sWzFdLm5fdmFsdWUpKTsKICAgICAgICAvKgogICAgICAgICAqIEZpbmQgYmFzZSBv ZiBzd2FwCiAgICAgICAgICovCiAgICAgICAgbHNlZWsobWVtLCAobG9uZylubFsyXS5uX3ZhbHVl LCAwKTsKICAgICAgICByZWFkKG1lbSwgKGNoYXIgKikmc3dwbG8sIHNpemVvZihzd3BsbykpOwog ICAgICAgIC8qCiAgICAgICAgICogTG9jYXRlIHByb2MgdGFibGUKICAgICAgICAgKi8KICAgICAg ICBsc2VlayhtZW0sIChsb25nKW5sWzBdLm5fdmFsdWUsIDApOwogICAgICAgIGdldGRldigpOwog ICAgICAgIHVpZCA9IGdldHVpZCgpOwogICAgICAgIGlmIChsZmxnKQogICAgICAgIHByaW50Zigi IEYgUyBVSUQgICBQSUQgIFBQSUQgQ1BVIFBSSSBOSUNFICBBRERSICBTWiAgV0NIQU4gVFRZIFRJ TUUgQ01EXG4iKTsgZWxzZQogICAgICAgICAgICAgICAgaWYgKGNoa3BpZD09MCkgcHJpbnRmKCIg ICBQSUQgVFRZIFRJTUUgQ01EXG4iKTsKICAgICAgICBmb3IgKGk9MDsgaTxOUFJPQzsgaSsrKSB7 CiAgICAgICAgICAgICAgICByZWFkKG1lbSwgKGNoYXIgKikmbXByb2MsIHNpemVvZiBtcHJvYyk7 CiAgICAgICAgICAgICAgICBpZiAobXByb2MucF9zdGF0PT0wKQogICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChtcHJvYy5wX3BncnA9PTAgJiYgeGZs Zz09MCAmJiBtcHJvYy5wX3VpZD09MCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 CiAgICAgICAgICAgICAgICBwdWlkID0gbXByb2MucF91aWQ7CiAgICAgICAgICAgICAgICBpZiAo KHVpZCAhPSBwdWlkICYmIGFmbGc9PTApIHx8CiAgICAgICAgICAgICAgICAgICAgKGNoa3BpZCE9 MCAmJiBjaGtwaWQhPW1wcm9jLnBfcGlkKSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7CiAgICAgICAgICAgICAgICBpZihwcmNvbShwdWlkKSkgewogICAgICAgICAgICAgICAgICAg ICAgICBwcmludGYoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldGNvZGU9MDsKICAg ICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZXhpdChyZXRjb2RlKTsKfQoKZ2V0ZGV2 KCkKewojaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAgICAgICByZWdpc3RlciBGSUxFICpkZjsKICAg ICAgICBzdHJ1Y3Qgc3RhdCBzYnVmOwogICAgICAgIHN0cnVjdCBkaXJlY3QgZGJ1ZjsKCiAgICAg ICAgaWYgKChkZiA9IGZvcGVuKCIvZGV2IiwgInIiKSkgPT0gTlVMTCkgewogICAgICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBvcGVuIC9kZXZcbiIpOwogICAgICAgICAgICAgICAg ZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAgbmRldiA9IDA7CiAgICAgICAgd2hpbGUgKGZyZWFk KChjaGFyICopJmRidWYsIHNpemVvZihkYnVmKSwgMSwgZGYpID09IDEpIHsKICAgICAgICAgICAg ICAgIGlmKGRidWYuZF9pbm8gPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 CiAgICAgICAgICAgICAgICBpZihzdGF0KGRidWYuZF9uYW1lLCAmc2J1ZikgPCAwKQogICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmICgoc2J1Zi5zdF9t b2RlJlNfSUZNVCkgIT0gU19JRkNIUikKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 CiAgICAgICAgICAgICAgICBzdHJjcHkoZGV2bFtuZGV2XS5kbmFtZSwgZGJ1Zi5kX25hbWUpOwog ICAgICAgICAgICAgICAgZGV2bFtuZGV2XS5kZXYgPSBzYnVmLnN0X3JkZXY7CiAgICAgICAgICAg ICAgICBuZGV2Kys7CiAgICAgICAgfQogICAgICAgIGZjbG9zZShkZik7CiAgICAgICAgaWYgKChz d2FwID0gb3BlbigiL2Rldi9zd2FwIiwgMCkpIDwgMCkgewogICAgICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJDYW4ndCBvcGVuIC9kZXYvc3dhcFxuIik7CiAgICAgICAgICAgICAgICBleGl0 KDEpOwogICAgICAgIH0KfQoKbG9uZwpyb3VuZChhLCBiKQogICAgICAgIGxvbmcgICAgICAgICAg ICBhLCBiOwp7CiAgICAgICAgbG9uZyAgICAgICAgICAgIHcgPSAoKGErYi0xKS9iKSpiOwoKICAg ICAgICByZXR1cm4odyk7Cn0KCnN0cnVjdCBtYXAgewogICAgICAgIGxvbmcgICAgYjEsIGUxOyBs b25nIGYxOwogICAgICAgIGxvbmcgICAgYjIsIGUyOyBsb25nIGYyOwp9OwpzdHJ1Y3QgbWFwIGRh dG1hcDsKaW50ICAgICBmaWxlOwpwcmNvbShwdWlkKQp7CiAgICAgICAgY2hhciBhYnVmWzUxMl07 CiAgICAgICAgbG9uZyBhZGRyOwogICAgICAgIHJlZ2lzdGVyIGludCAqaXA7CiAgICAgICAgcmVn aXN0ZXIgY2hhciAqY3AsICpjcDE7CiAgICAgICAgbG9uZyB0bTsKICAgICAgICBpbnQgYywgbmJh ZDsKICAgICAgICByZWdpc3RlciBjaGFyICp0cDsKICAgICAgICBsb25nIHR4dHNpeiwgZGF0c2l6 LCBzdGtzaXo7CiAgICAgICAgaW50IHNlcHR4dDsKICAgICAgICBpbnQgbHc9KGxmbGc/MzU6ODAp OwogICAgICAgIGNoYXIgKiphcDsKCiAgICAgICAgaWYgKG1wcm9jLnBfZmxhZyZTTE9BRCkgewog ICAgICAgICAgICAgICAgYWRkciA9IGN0b2IoKGxvbmcpbXByb2MucF9hZGRyKTsKICAgICAgICAg ICAgICAgIGZpbGUgPSBzd21lbTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYWRk ciA9IChtcHJvYy5wX2FkZHIrc3dwbG8pPDw5OwogICAgICAgICAgICAgICAgZmlsZSA9IHN3YXA7 CiAgICAgICAgfQogICAgICAgIGxzZWVrKGZpbGUsIGFkZHIsIDApOwogICAgICAgIGlmIChyZWFk KGZpbGUsIChjaGFyICopJnUsIHNpemVvZih1KSkgIT0gc2l6ZW9mKHUpKQogICAgICAgICAgICAg ICAgcmV0dXJuKDApOwoKICAgICAgICAvKiBzZXQgdXAgYWRkcmVzcyBtYXBzIGZvciB1c2VyIHBj cyAqLwogICAgICAgIHR4dHNpeiA9IGN0b2IodS51X3RzaXplKTsKICAgICAgICBkYXRzaXogPSBj dG9iKHUudV9kc2l6ZSk7CiAgICAgICAgc3Rrc2l6ID0gY3RvYih1LnVfc3NpemUpOwogICAgICAg IHNlcHR4dCA9IHUudV9zZXA7CiAgICAgICAgZGF0bWFwLmIxID0gKHNlcHR4dCA/IDAgOiByb3Vu ZCh0eHRzaXosVFhUUk5EU0laKSk7CiAgICAgICAgZGF0bWFwLmUxID0gZGF0bWFwLmIxK2RhdHNp ejsKICAgICAgICBkYXRtYXAuZjEgPSBjdG9iKFVTSVpFKSthZGRyOwogICAgICAgIGRhdG1hcC5i MiA9IHN0YWNrYmFzKHN0a3Npeik7CiAgICAgICAgZGF0bWFwLmUyID0gc3RhY2t0b3Aoc3Rrc2l6 KTsKICAgICAgICBkYXRtYXAuZjIgPSBjdG9iKFVTSVpFKSsoZGF0bWFwLmUxLWRhdG1hcC5iMSkr YWRkcjsKCiAgICAgICAgdHAgPSBnZXR0dHkoKTsKICAgICAgICBpZiAodHB0ciAmJiBzdHJuY21w KHRwdHIsIHRwLCAyKSkKICAgICAgICAgICAgICAgIHJldHVybigwKTsKICAgICAgICBpZiAobGZs ZykgewogICAgICAgICAgICAgICAgcHJpbnRmKCIlMm8gJWMlNGQiLCBtcHJvYy5wX2ZsYWcsCiAg ICAgICAgICAgICAgICAgICAgICAgICIwU1dSSVpUIlttcHJvYy5wX3N0YXRdLCBwdWlkKTsKICAg ICAgICB9CiAgICAgICAgcHJpbnRmKCIlNnUiLCBtcHJvYy5wX3BpZCk7CiAgICAgICAgaWYgKGxm bGcpIHsKICAgICAgICAgICAgICAgIHByaW50ZigiJTZ1JTRkJTRkJTVkJTZvJTRkIiwgbXByb2Mu cF9wcGlkLCBtcHJvYy5wX2NwdSYwMzc3LAogICAgICAgICAgICAgICAgICAgICAgICBtcHJvYy5w X3ByaSwKICAgICAgICAgICAgICAgICAgICAgICAgbXByb2MucF9uaWNlLAogICAgICAgICAgICAg ICAgICAgICAgICBtcHJvYy5wX2FkZHIsIChtcHJvYy5wX3NpemUrNyk+PjMpOwogICAgICAgICAg ICAgICAgaWYgKG1wcm9jLnBfd2NoYW4pCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi JTdvIiwgbXByb2MucF93Y2hhbik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgIHByaW50ZigiICAgICAgICIpOwogICAgICAgIH0KICAgICAgICBwcmludGYoIiAl LTIuMnMiLCB0cCk7CiAgICAgICAgaWYgKG1wcm9jLnBfc3RhdD09U1pPTUIpIHsKICAgICAgICAg ICAgICAgIHByaW50ZigiICA8ZGVmdW5jdD4iKTsKICAgICAgICAgICAgICAgIHJldHVybigxKTsK ICAgICAgICB9CiAgICAgICAgdG0gPSAodS51X3V0aW1lICsgdS51X3N0aW1lICsgMzApLzYwOwog ICAgICAgIHByaW50ZigiICUybGQ6IiwgdG0vNjApOwogICAgICAgIHRtICU9IDYwOwogICAgICAg IHByaW50Zih0bTwxMD8iMCVsZCI6IiVsZCIsIHRtKTsKICAgICAgICBpZiAodmZsZyAmJiBsZmxn PT0wKSB7ICAvKiAwID09IG9sZCB0ZmxnIChwcmludCBsb25nIHRpbWVzKSAqLwogICAgICAgICAg ICAgICAgdG0gPSAodS51X2NzdGltZSArIDMwKS82MDsKICAgICAgICAgICAgICAgIHByaW50Zigi ICUybGQ6IiwgdG0vNjApOwogICAgICAgICAgICAgICAgdG0gJT0gNjA7CiAgICAgICAgICAgICAg ICBwcmludGYodG08MTA/IjAlbGQiOiIlbGQiLCB0bSk7CiAgICAgICAgICAgICAgICB0bSA9ICh1 LnVfY3V0aW1lICsgMzApLzYwOwogICAgICAgICAgICAgICAgcHJpbnRmKCIgJTJsZDoiLCB0bS82 MCk7CiAgICAgICAgICAgICAgICB0bSAlPSA2MDsKICAgICAgICAgICAgICAgIHByaW50Zih0bTwx MD8iMCVsZCI6IiVsZCIsIHRtKTsKICAgICAgICB9CiAgICAgICAgaWYgKG1wcm9jLnBfcGlkID09 IDApIHsKICAgICAgICAgICAgICAgIHByaW50ZigiIHN3YXBwZXIiKTsKICAgICAgICAgICAgICAg IHJldHVybigxKTsKICAgICAgICB9CiAgICAgICAgYWRkciArPSBjdG9iKChsb25nKW1wcm9jLnBf c2l6ZSkgLSA1MTI7CgogICAgICAgIC8qIGxvb2sgZm9yIHNoIHNwZWNpYWwgKi8KICAgICAgICBs c2VlayhmaWxlLCBhZGRyKzUxMi1zaXplb2YoY2hhciAqKiksIDApOwogICAgICAgIGlmIChyZWFk KGZpbGUsIChjaGFyICopJmFwLCBzaXplb2YoY2hhciAqKSkgIT0gc2l6ZW9mKGNoYXIgKikpCiAg ICAgICAgICAgICAgICByZXR1cm4oMSk7CiAgICAgICAgaWYgKGFwKSB7CiAgICAgICAgICAgICAg ICBjaGFyIGJbODJdOwogICAgICAgICAgICAgICAgY2hhciAqYnAgPSBiOwogICAgICAgICAgICAg ICAgd2hpbGUoKGNwPWdldHB0cihhcCsrKSkgJiYgY3AgJiYgKGJwPGIrbHcpICkgewogICAgICAg ICAgICAgICAgICAgICAgICBuYmFkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUo KGM9Z2V0Ynl0ZShjcCsrKSkgJiYgKGJwPGIrbHcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGM8JyAnIHx8IGM+J34nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAobmJhZCsrPjMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpicCsrID0gYzsKICAgICAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAqYnArKyA9ICcgJzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICpicCsrID0gMDsKICAgICAgICAgICAgICAgIHByaW50Zihs ZmxnPyIgJS4zMHMiOiIgJS42MHMiLCBiKTsKICAgICAgICAgICAgICAgIHJldHVybigxKTsKICAg ICAgICB9CgogICAgICAgIGxzZWVrKGZpbGUsIGFkZHIsIDApOwogICAgICAgIGlmIChyZWFkKGZp bGUsIGFidWYsIHNpemVvZihhYnVmKSkgIT0gc2l6ZW9mKGFidWYpKQogICAgICAgICAgICAgICAg cmV0dXJuKDEpOwogICAgICAgIGZvciAoaXAgPSAoaW50ICopJmFidWZbNTEyXS0yOyBpcCA+IChp bnQgKilhYnVmOyApIHsKICAgICAgICAgICAgICAgIGlmICgqLS1pcCA9PSAtMSB8fCAqaXA9PTAp IHsKICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSAoY2hhciAqKShpcCsxKTsKICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCpjcD09MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjcCsrOwogICAgICAgICAgICAgICAgICAgICAgICBuYmFkID0gMDsKICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIChjcDEgPSBjcDsgY3AxIDwgJmFidWZbNTEyXTsgY3AxKyspIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gKmNwMSYwMTc3OwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChjPT0wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKmNwMSA9ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl IGlmIChjIDwgJyAnIHx8IGMgPiAwMTc2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoKytuYmFkID49IDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmNwMSsrID0gJyAnOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpjcDEgPSAnPyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChj PT0nPScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjcDEgPSAw OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNwMT5jcCAm JiAqLS1jcDEhPScgJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKmNwMSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCotLWNwMT09JyAnKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjcDEgPSAwOwogICAgICAgICAgICAgICAgICAg ICAgICBwcmludGYobGZsZz8iICUuMzBzIjoiICUuNjBzIiwgY3ApOwogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4oMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJl dHVybigxKTsKfQoKY2hhciAqCmdldHR0eSgpCnsKICAgICAgICByZWdpc3RlciBpOwogICAgICAg IHJlZ2lzdGVyIGNoYXIgKnA7CgogICAgICAgIGlmICh1LnVfdHR5cD09MCkKICAgICAgICAgICAg ICAgIHJldHVybigiPyIpOwogICAgICAgIGZvciAoaT0wOyBpPG5kZXY7IGkrKykgewogICAgICAg ICAgICAgICAgaWYgKGRldmxbaV0uZGV2ID09IHUudV90dHlkKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIHAgPSBkZXZsW2ldLmRuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocFsw XT09J3QnICYmIHBbMV09PSd0JyAmJiBwWzJdPT0neScpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcCArPSAzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ocCk7CiAgICAg ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybigiPyIpOwp9CgpjaGFyICoKZ2V0 cHRyKGFkcikKY2hhciAqKmFkcjsKewogICAgICAgIGNoYXIgKnB0cjsKICAgICAgICByZWdpc3Rl ciBjaGFyICpwLCAqcGE7CiAgICAgICAgcmVnaXN0ZXIgaTsKCiAgICAgICAgcHRyID0gMDsKICAg ICAgICBwYSA9IChjaGFyICopYWRyOwogICAgICAgIHAgPSAoY2hhciAqKSZwdHI7CiAgICAgICAg Zm9yIChpPTA7IGk8c2l6ZW9mKHB0cik7IGkrKykKICAgICAgICAgICAgICAgICpwKysgPSBnZXRi eXRlKHBhKyspOwogICAgICAgIHJldHVybihwdHIpOwp9CgpnZXRieXRlKGFkcikKY2hhciAqYWRy Owp7CiAgICAgICAgcmVnaXN0ZXIgc3RydWN0IG1hcCAqYW1hcCA9ICZkYXRtYXA7CiAgICAgICAg Y2hhciBiOwogICAgICAgIGxvbmcgc2FkZHI7CgogICAgICAgIGlmKCF3aXRoaW4oYWRyLCBhbWFw LT5iMSwgYW1hcC0+ZTEpKSB7CiAgICAgICAgICAgICAgICBpZih3aXRoaW4oYWRyLCBhbWFwLT5i MiwgYW1hcC0+ZTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNhZGRyID0gKHVuc2lnbmVk KWFkciArIGFtYXAtPmYyIC0gYW1hcC0+YjI7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICAg ICAgc2FkZHIgPSAodW5zaWduZWQpYWRyICsgYW1hcC0+ZjEgLSBhbWFwLT5iMTsKICAgICAgICBp Zihsc2VlayhmaWxlLCBzYWRkciwgMCk9PS0xCiAgICAgICAgICAgICAgICAgICB8fCByZWFkKGZp bGUsICZiLCAxKTwxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4oMCk7CiAgICAgICAgfQogICAg ICAgIHJldHVybigodW5zaWduZWQpYik7Cn0KCgp3aXRoaW4oYWRyLGxiZCx1YmQpCmNoYXIgKmFk cjsKbG9uZyBsYmQsIHViZDsKewogICAgICAgIHJldHVybigodW5zaWduZWQpYWRyPj1sYmQgJiYg KHVuc2lnbmVkKWFkcjx1YmQpOwp9Cg== --000000000000700ed405f6185d84 Content-Type: text/x-csrc; charset="US-ASCII"; name="ps2.c" Content-Disposition: attachment; filename="ps2.c" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leudnr130 LyoKICoJcHMgLSBwcm9jZXNzIHN0YXR1cwogKglleGFtaW5lIGFuZCBwcmludCBjZXJ0YWluIHRo aW5ncyBhYm91dCBwcm9jZXNzZXMKICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGEu b3V0Lmg+CiNpbmNsdWRlIDxjb3JlLmg+CiNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KI2luY2x1ZGUg PHN5cy9wcm9jLmg+CiNpbmNsdWRlIDxzeXMvdHR5Lmg+CiNpbmNsdWRlIDxzeXMvZGlyLmg+CiNp bmNsdWRlIDxzeXMvdXNlci5oPgoKc3RydWN0IG5saXN0IG5sW10gPSB7Cgl7ICJfcHJvYyIgfSwK CXsgIl9zd2FwZGV2IiB9LAoJeyAiX3N3cGxvIiB9LAoJeyAiIiB9LAp9OwoKc3RydWN0CXByb2Mg bXByb2M7CgpzdHJ1Y3QJdXNlciB1OwppbnQJY2hrcGlkOwppbnQJcmV0Y29kZT0xOwppbnQJbGZs ZzsKaW50CXZmbGc7CmludAlrZmxnOwppbnQJeGZsZzsKY2hhcgkqdHB0cjsKbG9uZwlsc2Vlaygp OwpjaGFyCSpnZXR0dHkoKTsKY2hhcgkqZ2V0cHRyKCk7CmNoYXIJKnN0cm5jbXAoKTsKaW50CWFm bGc7CmludAltZW07CmludAlzd21lbTsKaW50CXN3YXA7CmRhZGRyX3QJc3dwbG87CgppbnQJbmRl djsKc3RydWN0IGRldmwgewoJY2hhcglkbmFtZVtESVJTSVpdOwoJZGV2X3QJZGV2Owp9IGRldmxb MjU2XTsKCmNoYXIJKmNvcmVmOwoKbWFpbihhcmdjLCBhcmd2KQpjaGFyICoqYXJndjsKewoJaW50 IGk7CgljaGFyICphcDsKCWludCB1aWQsIHB1aWQ7CgoJaWYgKGFyZ2M+MSkgewoJCWFwID0gYXJn dlsxXTsKCQl3aGlsZSAoKmFwKSBzd2l0Y2ggKCphcCsrKSB7CgoJCWNhc2UgJ3YnOgoJCQl2Zmxn Kys7CgkJCWJyZWFrOwoKCQljYXNlICdhJzoKCQkJYWZsZysrOwoJCQlicmVhazsKCgkJY2FzZSAn dCc6CgkJCWlmKCphcCkKCQkJCXRwdHIgPSBhcDsKCQkJYWZsZysrOwoJCQlpZiAoKnRwdHIgPT0g Jz8nKQoJCQkJeGZsZysrOwoJCQlnb3RvIGJicmVhazsKCgkJY2FzZSAneCc6CgkJCXhmbGcrKzsK CQkJYnJlYWs7CgoJCWNhc2UgJy0nOgoJCQlicmVhazsKCgkJY2FzZSAnbCc6CgkJCWxmbGcrKzsK CQkJYnJlYWs7CgoJCWNhc2UgJ2snOgoJCQlrZmxnKys7CgkJCWJyZWFrOwoKCQlkZWZhdWx0OgoJ CQljaGtwaWQgPSBhdG9pKGFwLTEpOwoJCQlnb3RvIGJicmVhazsKCQkJYnJlYWs7CgkJfQoJfQoK YmJyZWFrOgoJaWYoY2hkaXIoIi9kZXYiKSA8IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgIkNhbid0 IGNoYW5nZSB0byAvZGV2XG4iKTsKCQlleGl0KDEpOwoJfQoJbmxpc3QoYXJnYz4yPyBhcmd2WzJd OiIvdW5peCIsIG5sKTsKCWlmIChubFswXS5uX3R5cGU9PTApIHsKCQlmcHJpbnRmKHN0ZGVyciwg Ik5vIG5hbWVsaXN0XG4iKTsKCQlleGl0KDEpOwoJfQoJY29yZWYgPSAiL2Rldi9tZW0iOwoJaWYo a2ZsZykKCQljb3JlZiA9ICIvdXNyL3N5cy9jb3JlIjsKCWlmICgobWVtID0gb3Blbihjb3JlZiwg MCkpIDwgMCkgewoJCWZwcmludGYoc3RkZXJyLCAiTm8gbWVtXG4iKTsKCQlleGl0KDEpOwoJfQoJ c3dtZW0gPSBvcGVuKGNvcmVmLCAwKTsKCS8qCgkgKiByZWFkIG1lbSB0byBmaW5kIHN3YXAgZGV2 LgoJICovCglsc2VlayhtZW0sIChsb25nKW5sWzFdLm5fdmFsdWUsIDApOwoJcmVhZChtZW0sIChj aGFyICopJm5sWzFdLm5fdmFsdWUsIHNpemVvZihubFsxXS5uX3ZhbHVlKSk7CgkvKgoJICogRmlu ZCBiYXNlIG9mIHN3YXAKCSAqLwoJbHNlZWsobWVtLCAobG9uZylubFsyXS5uX3ZhbHVlLCAwKTsK CXJlYWQobWVtLCAoY2hhciAqKSZzd3Bsbywgc2l6ZW9mKHN3cGxvKSk7CgkvKgoJICogTG9jYXRl IHByb2MgdGFibGUKCSAqLwoJbHNlZWsobWVtLCAobG9uZylubFswXS5uX3ZhbHVlLCAwKTsKCWdl dGRldigpOwoJdWlkID0gZ2V0dWlkKCk7CglpZiAobGZsZykKCXByaW50ZigiIEYgUyBVSUQgICBQ SUQgIFBQSUQgQ1BVIFBSSSBOSUNFICBBRERSICBTWiAgV0NIQU4gVFRZIFRJTUUgQ01EXG4iKTsg ZWxzZQoJCWlmIChjaGtwaWQ9PTApIHByaW50ZigiICAgUElEIFRUWSBUSU1FIENNRFxuIik7Cglm b3IgKGk9MDsgaTxOUFJPQzsgaSsrKSB7CgkJcmVhZChtZW0sIChjaGFyICopJm1wcm9jLCBzaXpl b2YgbXByb2MpOwoJCWlmIChtcHJvYy5wX3N0YXQ9PTApCgkJCWNvbnRpbnVlOwoJCWlmIChtcHJv Yy5wX3BncnA9PTAgJiYgeGZsZz09MCAmJiBtcHJvYy5wX3VpZD09MCkKCQkJY29udGludWU7CgkJ cHVpZCA9IG1wcm9jLnBfdWlkOwoJCWlmICgodWlkICE9IHB1aWQgJiYgYWZsZz09MCkgfHwKCQkg ICAgKGNoa3BpZCE9MCAmJiBjaGtwaWQhPW1wcm9jLnBfcGlkKSkKCQkJY29udGludWU7CgkJaWYo cHJjb20ocHVpZCkpIHsKCQkJcHJpbnRmKCJcbiIpOwoJCQlyZXRjb2RlPTA7CgkJfQoJfQoJZXhp dChyZXRjb2RlKTsKfQoKZ2V0ZGV2KCkKewojaW5jbHVkZSA8c3lzL3N0YXQuaD4KCXJlZ2lzdGVy IEZJTEUgKmRmOwoJc3RydWN0IHN0YXQgc2J1ZjsKCXN0cnVjdCBkaXJlY3QgZGJ1ZjsKCglpZiAo KGRmID0gZm9wZW4oIi9kZXYiLCAiciIpKSA9PSBOVUxMKSB7CgkJZnByaW50ZihzdGRlcnIsICJD YW4ndCBvcGVuIC9kZXZcbiIpOwoJCWV4aXQoMSk7Cgl9CgluZGV2ID0gMDsKCXdoaWxlIChmcmVh ZCgoY2hhciAqKSZkYnVmLCBzaXplb2YoZGJ1ZiksIDEsIGRmKSA9PSAxKSB7CgkJaWYoZGJ1Zi5k X2lubyA9PSAwKQoJCQljb250aW51ZTsKCQlpZihzdGF0KGRidWYuZF9uYW1lLCAmc2J1ZikgPCAw KQoJCQljb250aW51ZTsKCQlpZiAoKHNidWYuc3RfbW9kZSZTX0lGTVQpICE9IFNfSUZDSFIpCgkJ CWNvbnRpbnVlOwoJCXN0cmNweShkZXZsW25kZXZdLmRuYW1lLCBkYnVmLmRfbmFtZSk7CgkJZGV2 bFtuZGV2XS5kZXYgPSBzYnVmLnN0X3JkZXY7CgkJbmRldisrOwoJfQoJZmNsb3NlKGRmKTsKCWlm ICgoc3dhcCA9IG9wZW4oIi9kZXYvc3dhcCIsIDApKSA8IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwg IkNhbid0IG9wZW4gL2Rldi9zd2FwXG4iKTsKCQlleGl0KDEpOwoJfQp9Cgpsb25nCnJvdW5kKGEs IGIpCglsb25nCQlhLCBiOwp7Cglsb25nCQl3ID0gKChhK2ItMSkvYikqYjsKCglyZXR1cm4odyk7 Cn0KCnN0cnVjdCBtYXAgewoJbG9uZwliMSwgZTE7IGxvbmcgZjE7Cglsb25nCWIyLCBlMjsgbG9u ZyBmMjsKfTsKc3RydWN0IG1hcCBkYXRtYXA7CmludAlmaWxlOwpwcmNvbShwdWlkKQp7CgljaGFy IGFidWZbNTEyXTsKCWxvbmcgYWRkcjsKCXJlZ2lzdGVyIGludCAqaXA7CglyZWdpc3RlciBjaGFy ICpjcCwgKmNwMTsKCWxvbmcgdG07CglpbnQgYywgbmJhZDsKCXJlZ2lzdGVyIGNoYXIgKnRwOwoJ bG9uZyB0eHRzaXosIGRhdHNpeiwgc3Rrc2l6OwoJaW50IHNlcHR4dDsKCWludCBsdz0obGZsZz8z NTo4MCk7CgljaGFyICoqYXA7CgoJaWYgKG1wcm9jLnBfZmxhZyZTTE9BRCkgewoJCWFkZHIgPSBj dG9iKChsb25nKW1wcm9jLnBfYWRkcik7CgkJZmlsZSA9IHN3bWVtOwoJfSBlbHNlIHsKCQlhZGRy ID0gKG1wcm9jLnBfYWRkcitzd3Bsbyk8PDk7CgkJZmlsZSA9IHN3YXA7Cgl9Cglsc2VlayhmaWxl LCBhZGRyLCAwKTsKCWlmIChyZWFkKGZpbGUsIChjaGFyICopJnUsIHNpemVvZih1KSkgIT0gc2l6 ZW9mKHUpKQoJCXJldHVybigwKTsKCgkvKiBzZXQgdXAgYWRkcmVzcyBtYXBzIGZvciB1c2VyIHBj cyAqLwoJdHh0c2l6ID0gY3RvYih1LnVfdHNpemUpOwoJZGF0c2l6ID0gY3RvYih1LnVfZHNpemUp OwoJc3Rrc2l6ID0gY3RvYih1LnVfc3NpemUpOwoJc2VwdHh0ID0gdS51X3NlcDsKCWRhdG1hcC5i MSA9IChzZXB0eHQgPyAwIDogcm91bmQodHh0c2l6LFRYVFJORFNJWikpOwoJZGF0bWFwLmUxID0g ZGF0bWFwLmIxK2RhdHNpejsKCWRhdG1hcC5mMSA9IGN0b2IoVVNJWkUpK2FkZHI7CglkYXRtYXAu YjIgPSBzdGFja2JhcyhzdGtzaXopOwoJZGF0bWFwLmUyID0gc3RhY2t0b3Aoc3Rrc2l6KTsKCWRh dG1hcC5mMiA9IGN0b2IoVVNJWkUpKyhkYXRtYXAuZTEtZGF0bWFwLmIxKSthZGRyOwoKCXRwID0g Z2V0dHR5KCk7CglpZiAodHB0ciAmJiBzdHJuY21wKHRwdHIsIHRwLCAyKSkKCQlyZXR1cm4oMCk7 CglpZiAobGZsZykgewoJCXByaW50ZigiJTJvICVjJTRkIiwgbXByb2MucF9mbGFnLAoJCQkiMFNX UklaVCJbbXByb2MucF9zdGF0XSwgcHVpZCk7Cgl9CglwcmludGYoIiU2dSIsIG1wcm9jLnBfcGlk KTsKCWlmIChsZmxnKSB7CgkJcHJpbnRmKCIlNnUlNGQlNGQlNWQlNm8lNGQiLCBtcHJvYy5wX3Bw aWQsIG1wcm9jLnBfY3B1JjAzNzcsCgkJCW1wcm9jLnBfcHJpLAoJCQltcHJvYy5wX25pY2UsCgkJ CW1wcm9jLnBfYWRkciwgKG1wcm9jLnBfc2l6ZSs3KT4+Myk7CgkJaWYgKG1wcm9jLnBfd2NoYW4p CgkJCXByaW50ZigiJTdvIiwgbXByb2MucF93Y2hhbik7CgkJZWxzZQoJCQlwcmludGYoIiAgICAg ICAiKTsKCX0KCXByaW50ZigiICUtMi4ycyIsIHRwKTsKCWlmIChtcHJvYy5wX3N0YXQ9PVNaT01C KSB7CgkJcHJpbnRmKCIgIDxkZWZ1bmN0PiIpOwoJCXJldHVybigxKTsKCX0KCXRtID0gKHUudV91 dGltZSArIHUudV9zdGltZSArIDMwKS82MDsKCXByaW50ZigiICUybGQ6IiwgdG0vNjApOwoJdG0g JT0gNjA7CglwcmludGYodG08MTA/IjAlbGQiOiIlbGQiLCB0bSk7CglpZiAodmZsZyAmJiBsZmxn PT0wKSB7CS8qIDAgPT0gb2xkIHRmbGcgKHByaW50IGxvbmcgdGltZXMpICovCgkJdG0gPSAodS51 X2NzdGltZSArIDMwKS82MDsKCQlwcmludGYoIiAlMmxkOiIsIHRtLzYwKTsKCQl0bSAlPSA2MDsK CQlwcmludGYodG08MTA/IjAlbGQiOiIlbGQiLCB0bSk7CgkJdG0gPSAodS51X2N1dGltZSArIDMw KS82MDsKCQlwcmludGYoIiAlMmxkOiIsIHRtLzYwKTsKCQl0bSAlPSA2MDsKCQlwcmludGYodG08 MTA/IjAlbGQiOiIlbGQiLCB0bSk7Cgl9CglpZiAobXByb2MucF9waWQgPT0gMCkgewoJCXByaW50 ZigiIHN3YXBwZXIiKTsKCQlyZXR1cm4oMSk7Cgl9CglhZGRyICs9IGN0b2IoKGxvbmcpbXByb2Mu cF9zaXplKSAtIDUxMjsKCgkvKiBsb29rIGZvciBzaCBzcGVjaWFsICovCglsc2VlayhmaWxlLCBh ZGRyKzUxMi1zaXplb2YoY2hhciAqKiksIDApOwoJaWYgKHJlYWQoZmlsZSwgKGNoYXIgKikmYXAs IHNpemVvZihjaGFyICopKSAhPSBzaXplb2YoY2hhciAqKSkKCQlyZXR1cm4oMSk7CglpZiAoYXAp IHsKCQljaGFyIGJbODJdOwoJCWNoYXIgKmJwID0gYjsKCQl3aGlsZSgoY3A9Z2V0cHRyKGFwKysp KSAmJiBjcCAmJiAoYnA8YitsdykgKSB7CgkJCW5iYWQgPSAwOwoJCQl3aGlsZSgoYz1nZXRieXRl KGNwKyspKSAmJiAoYnA8YitsdykpIHsKCQkJCWlmIChjPCcgJyB8fCBjPid+JykgewoJCQkJCWlm IChuYmFkKys+MykKCQkJCQkJYnJlYWs7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQkqYnArKyA9 IGM7CgkJCX0KCQkJKmJwKysgPSAnICc7CgkJfQoJCSpicCsrID0gMDsKCQlwcmludGYobGZsZz8i ICUuMzBzIjoiICUuNjBzIiwgYik7CgkJcmV0dXJuKDEpOwoJfQoKCWxzZWVrKGZpbGUsIGFkZHIs IDApOwoJaWYgKHJlYWQoZmlsZSwgYWJ1Ziwgc2l6ZW9mKGFidWYpKSAhPSBzaXplb2YoYWJ1Zikp CgkJcmV0dXJuKDEpOwoJZm9yIChpcCA9IChpbnQgKikmYWJ1Zls1MTJdLTI7IGlwID4gKGludCAq KWFidWY7ICkgewoJCWlmICgqLS1pcCA9PSAtMSB8fCAqaXA9PTApIHsKCQkJY3AgPSAoY2hhciAq KShpcCsxKTsKCQkJaWYgKCpjcD09MCkKCQkJCWNwKys7CgkJCW5iYWQgPSAwOwoJCQlmb3IgKGNw MSA9IGNwOyBjcDEgPCAmYWJ1Zls1MTJdOyBjcDErKykgewoJCQkJYyA9ICpjcDEmMDE3NzsKCQkJ CWlmIChjPT0wKQoJCQkJCSpjcDEgPSAnICc7CgkJCQllbHNlIGlmIChjIDwgJyAnIHx8IGMgPiAw MTc2KSB7CgkJCQkJaWYgKCsrbmJhZCA+PSA1KSB7CgkJCQkJCSpjcDErKyA9ICcgJzsKCQkJCQkJ YnJlYWs7CgkJCQkJfQoJCQkJCSpjcDEgPSAnPyc7CgkJCQl9IGVsc2UgaWYgKGM9PSc9JykgewoJ CQkJCSpjcDEgPSAwOwoJCQkJCXdoaWxlIChjcDE+Y3AgJiYgKi0tY3AxIT0nICcpCgkJCQkJCSpj cDEgPSAwOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCXdoaWxlICgqLS1jcDE9PScgJykKCQkJ CSpjcDEgPSAwOwoJCQlwcmludGYobGZsZz8iICUuMzBzIjoiICUuNjBzIiwgY3ApOwoJCQlyZXR1 cm4oMSk7CgkJfQoJfQoJcmV0dXJuKDEpOwp9CgpjaGFyICoKZ2V0dHR5KCkKewoJcmVnaXN0ZXIg aTsKCXJlZ2lzdGVyIGNoYXIgKnA7CgoJaWYgKHUudV90dHlwPT0wKQoJCXJldHVybigiPyIpOwoJ Zm9yIChpPTA7IGk8bmRldjsgaSsrKSB7CgkJaWYgKGRldmxbaV0uZGV2ID09IHUudV90dHlkKSB7 CgkJCXAgPSBkZXZsW2ldLmRuYW1lOwoJCQlpZiAocFswXT09J3QnICYmIHBbMV09PSd0JyAmJiBw WzJdPT0neScpCgkJCQlwICs9IDM7CgkJCXJldHVybihwKTsKCQl9Cgl9CglyZXR1cm4oIj8iKTsK fQoKY2hhciAqCmdldHB0cihhZHIpCmNoYXIgKiphZHI7CnsKCWNoYXIgKnB0cjsKCXJlZ2lzdGVy IGNoYXIgKnAsICpwYTsKCXJlZ2lzdGVyIGk7CgoJcHRyID0gMDsKCXBhID0gKGNoYXIgKilhZHI7 CglwID0gKGNoYXIgKikmcHRyOwoJZm9yIChpPTA7IGk8c2l6ZW9mKHB0cik7IGkrKykKCQkqcCsr ID0gZ2V0Ynl0ZShwYSsrKTsKCXJldHVybihwdHIpOwp9CgpnZXRieXRlKGFkcikKY2hhciAqYWRy Owp7CglyZWdpc3RlciBzdHJ1Y3QgbWFwICphbWFwID0gJmRhdG1hcDsKCWNoYXIgYjsKCWxvbmcg c2FkZHI7CgoJaWYoIXdpdGhpbihhZHIsIGFtYXAtPmIxLCBhbWFwLT5lMSkpIHsKCQlpZih3aXRo aW4oYWRyLCBhbWFwLT5iMiwgYW1hcC0+ZTIpKSB7CgkJCXNhZGRyID0gKHVuc2lnbmVkKWFkciAr IGFtYXAtPmYyIC0gYW1hcC0+YjI7CgkJfSBlbHNlCgkJCXJldHVybigwKTsKCX0gZWxzZQoJCXNh ZGRyID0gKHVuc2lnbmVkKWFkciArIGFtYXAtPmYxIC0gYW1hcC0+YjE7CglpZihsc2VlayhmaWxl LCBzYWRkciwgMCk9PS0xCgkJICAgfHwgcmVhZChmaWxlLCAmYiwgMSk8MSkgewoJCXJldHVybigw KTsKCX0KCXJldHVybigodW5zaWduZWQpYik7Cn0KCgp3aXRoaW4oYWRyLGxiZCx1YmQpCmNoYXIg KmFkcjsKbG9uZyBsYmQsIHViZDsKewoJcmV0dXJuKCh1bnNpZ25lZClhZHI+PWxiZCAmJiAodW5z aWduZWQpYWRyPHViZCk7Cn0K --000000000000700ed405f6185d84--