From owner-freebsd-hackers@FreeBSD.ORG Tue Apr 21 05:27:25 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1164C106566B for ; Tue, 21 Apr 2009 05:27:25 +0000 (UTC) (envelope-from k.menshikov@peterhost.ru) Received: from fb0.z8.ru (fb0.z8.ru [80.93.58.95]) by mx1.freebsd.org (Postfix) with ESMTP id 097D98FC1A for ; Tue, 21 Apr 2009 05:27:23 +0000 (UTC) (envelope-from k.menshikov@peterhost.ru) Received: from mail.z8.ru ([80.93.58.56]) by fb0.z8.ru with esmtp (Exim 4.69 (FreeBSD)) (envelope-from ) id 1Lw8Ha-0004dW-95 for freebsd-hackers@freebsd.org; Tue, 21 Apr 2009 09:12:34 +0400 Received: from [85.235.196.139] (helo=kostjn.pht) by mail.z8.ru with esmtpa (Exim 4.67 (FreeBSD)) (envelope-from ) id 1Lw8HX-0009d0-DZ for freebsd-hackers@freebsd.org; Tue, 21 Apr 2009 09:12:31 +0400 Message-ID: <49ED55FF.5080306@peterhost.ru> Date: Tue, 21 Apr 2009 09:13:35 +0400 From: =?UTF-8?B?0JzQtdC90YzRiNC40LrQvtCyINCa0L7QvdGB0YLQsNC90YLQuNC9?= User-Agent: Thunderbird 2.0.0.18 (X11/20090328) MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: multipart/mixed; boundary="------------010009050107010301000504" X-Mailman-Approved-At: Tue, 21 Apr 2009 11:32:59 +0000 Subject: CPU limit for Jails(patch for ULE scheduler) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Apr 2009 05:27:25 -0000 This is a multi-part message in MIME format. --------------010009050107010301000504 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello all! Many users want have limits on resourse for jail, for examle cpu and memory limit. I`m rewrire original cdjones patch for cpu limit for jail under ULE scheduler. So, this work simple. We count cpu usage for all jails, and if jail use cpu more than have shared cpu, we move his threads to IDLE queue and return to TIMESHARE in reverse case. Jailed thread can use all avaliable cpu time, if system has avaliable cpu. If system under heavy load, jailed thread can`t use cpu long as ratio (shared cpu for jail/ all shared cpu) < (estimate usage cpu for jail / all usage cpu) . Unjailed thread and interactive thread are not subject to this regime. Add 2 sysctl kern.sched.total_sched_shares - total count shares cpu in system, increase if we have more cpu kern.sched.flush_estcpu_interval - flush estcpu interval in ticks, default is 2560 = 2 * 128 * 10, NCPU*stathz*sec, increase if we have more cpu For use cpu limit, you need use flag -S NSharedCPU in /usr/sbin/jail program. My example jail -S100 /usr/jails/root/ root.kostjn.pht 192.168.0.245 /bin/csh I`m tested this under 10 simultaneous process in jail and in main system. test program is infinity cycle an 8 core xeon, use RELENG_7. First run process in jail, and after in main system. This one process tracking cpu usage Jail root 1052 0.0 0.0 3692 784 p1 RJ 7:38PM 0:00.39 /test.o root 1052 21.2 0.0 3692 784 p1 RJ 7:38PM 0:02.40 /test.o root 1052 35.6 0.0 3692 784 p1 RJ 7:38PM 0:04.40 /test.o root 1052 47.5 0.0 3692 784 p1 RJ 7:38PM 0:06.41 /test.o root 1052 39.9 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 33.2 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 27.6 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 22.9 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 19.0 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 15.8 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 13.0 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 10.8 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /test.o root 1052 8.9 0.0 3692 784 p1 RJ 7:38PM 0:06.62 /tes Main system root 1088 14.9 0.0 3692 780 p0 R 7:38PM 0:01.57 /root/test.o root 1088 30.8 0.0 3692 780 p0 R 7:38PM 0:03.60 /root/test.o root 1088 43.8 0.0 3692 780 p0 R 7:38PM 0:05.60 /root/test.o root 1088 51.0 0.0 3692 780 p0 R 7:38PM 0:07.25 /root/test.o root 1088 50.8 0.0 3692 780 p0 R 7:38PM 0:08.28 /root/test.o root 1088 49.1 0.0 3692 780 p0 R 7:38PM 0:09.21 /root/test.o root 1088 48.1 0.0 3692 780 p0 R 7:38PM 0:10.24 /root/test.o root 1088 46.2 0.0 3692 780 p0 R 7:38PM 0:11.17 /root/test.o root 1088 42.9 0.0 3692 780 p0 R 7:38PM 0:11.95 /root/test.o So we see, that after run in main system, jailed process can`t usage cpu. Please communicate me about all problem in this patch. This is initial version, without tune jail parameter in runtime. So, this work. But i`m not sure, that is best way. Attempt increase priority for jailed thread not work, because non interactive thread (that utilize many cpu) already have small prioriry(numerical high). Attempt decrease number ticks in cpu time slice, also not good idea, because, this increase number context switching on high load. May be you see other way for do this? Share you idea. Thank. Original cdjones cpu and memory limit patch http://wiki.freebsd.org/JailResourceLimits --------------010009050107010301000504 Content-Type: text/plain; name="patch-jail-limit-7RELENG" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch-jail-limit-7RELENG" ZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdu b3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4va2Vybl9q YWlsLmMgc3lzLm5ldy9rZXJuL2tlcm5famFpbC5jCi0tLSBzeXMva2Vybi9rZXJuX2phaWwu YwkyMDA5LTAzLTEwIDIyOjMzOjUwLjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJu L2tlcm5famFpbC5jCTIwMDktMDQtMTcgMTg6NTE6MzQuMDAwMDAwMDAwICswNDAwCkBAIC01 MzEsNiArNTMyLDcgQEAga2Vybl9qYWlsKHN0cnVjdCB0aHJlYWQgKnRkLCBzdHJ1Y3QgamFp bAogCX0KICNlbmRpZgogCXByLT5wcl9saW51eCA9IE5VTEw7CisgICAgcHItPnByX3NjaGVk X3NoYXJlcyA9IGotPnNjaGVkX3NoYXJlczsKIAlwci0+cHJfc2VjdXJlbGV2ZWwgPSBzZWN1 cmVsZXZlbDsKIAlpZiAocHJpc29uX3NlcnZpY2Vfc2xvdHMgPT0gMCkKIAkJcHItPnByX3Ns b3RzID0gTlVMTDsKZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxs LXNwYWNlIC0taWdub3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lz L2tlcm4vc2NoZWRfdWxlLmMgc3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCi0tLSBzeXMva2Vy bi9zY2hlZF91bGUuYwkyMDA5LTAzLTMwIDIzOjIwOjU2LjAwMDAwMDAwMCArMDQwMAorKysg c3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCTIwMDktMDQtMTcgMTk6MTA6MDcuMDAwMDAwMDAw ICswNDAwCkBAIC02MSw2ICs2MSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogc3JjL3N5cy9r ZXJuL3NjaGVkX3UKICNpbmNsdWRlIDxzeXMvdW10eC5oPgogI2luY2x1ZGUgPHN5cy92bW1l dGVyLmg+CiAjaW5jbHVkZSA8c3lzL2NwdXNldC5oPgorI2luY2x1ZGUgPHN5cy9qYWlsLmg+ CiAjaWZkZWYgS1RSQUNFCiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy9r dHJhY2UuaD4KQEAgLTE4Niw2ICsxODcsMjIgQEAgc3RhdGljIGludCBzY2hlZF9pbnRlcmFj dCA9IFNDSEVEX0lOVEVSQQogc3RhdGljIGludCByZWFsc3RhdGh6Owogc3RhdGljIGludCB0 aWNraW5jcjsKIHN0YXRpYyBpbnQgc2NoZWRfc2xpY2U7CisKKyNkZWZpbmUgRVNUQ1BVX1NI SUZUCTEwCisvKgorICogZXN0Y3B1OgkJCQkJR2xvYmFsIGNvdW50ZXIgdGlja3MgZnJvbSBz dGF0IHRpbWVyIAorICogZmx1c2hfZXN0Y3B1X2ludGVydmFsOiAgIE51bWJlciB0aWNrcywg YWZ0ZXIgdGhhdCB3ZSB0byB6ZXJvIGVzdGNwdSwKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICBmbHVzaF9lc3RjcHVfaW50ZXJ2YWwgPSBtcF9uY3B1cypzdGF0aHoqMTAsIAorICoJ CQkJCQkJZGVmYXVsdCAyKjEyOCoxMCA9IDI1NjAKKyAqIHRvdGFsX3NjaGVkX3NoYXJlczog ICAgICBUb3RhbCBjb3VudCBzaGFyZXMgY3B1LCAxMDAwIHBlciBjb3JlLCAKKyAqCQkJCQkJ CWRlZmF1bHQgMioxMDAwID0gMjAwMCAKKyovCisKKworc3RhdGljIGludCBlc3RjcHU7Citz dGF0aWMgaW50IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCA9IDI1NjA7CitzdGF0aWMgaW50IHRv dGFsX3NjaGVkX3NoYXJlcyA9IDIwMDA7CisKICNpZmRlZiBQUkVFTVBUSU9OCiAjaWZkZWYg RlVMTF9QUkVFTVBUSU9OCiBzdGF0aWMgaW50IHByZWVtcHRfdGhyZXNoID0gUFJJX01BWF9J RExFOwpAQCAtMjIwMCw2ICsyMjE5LDcgQEAgc2NoZWRfY2xvY2soc3RydWN0IHRocmVhZCAq dGQpCiB7CiAJc3RydWN0IHRkcSAqdGRxOwogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7CisJc3Ry dWN0IHByaXNvbiAqcHIgPSB0ZC0+dGRfcHJvYy0+cF91Y3JlZC0+Y3JfcHJpc29uOwogCiAJ VEhSRUFEX0xPQ0tfQVNTRVJUKHRkLCBNQV9PV05FRCk7CiAJdGRxID0gVERRX1NFTEYoKTsK QEAgLTIyMzQsNiArMjI1NCwyMCBAQCBzY2hlZF9jbG9jayhzdHJ1Y3QgdGhyZWFkICp0ZCkK IAkJdGQtPnRkX3NjaGVkLT50c19ydW50aW1lICs9IHRpY2tpbmNyOwogCQlzY2hlZF9pbnRl cmFjdF91cGRhdGUodGQpOwogCX0KKworCS8qIEluY3JlYXNlIGNvdW50ZXIgYW5kIGZsdXNo IGlmIG5lZWQgKi8KKwllc3RjcHUrKzsKKwlpZiAocHIgIT0gTlVMTCkKKwkJcHItPnByX2Vz dGNwdSsrOworCisJaWYgKGVzdGNwdSA+IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCl7CisJCWVz dGNwdSA9IDA7CisJCUxJU1RfRk9SRUFDSChwciwgJmFsbHByaXNvbiwgcHJfbGlzdCkgewor CQkJcHItPnByX2VzdGNwdSA9IDA7CisJCX0KKwkJQ1RSMChLVFJfU0NIRUQsIkZsdXNoIGVz dGNwdSBhbmQgcHJfZXN0Y3B1IGZvciBhbGwgamFpbHMiKTsKKwl9CisKIAkvKgogCSAqIFdl IHVzZWQgdXAgb25lIHRpbWUgc2xpY2UuCiAJICovCkBAIC0yMzc1LDYgKzI0MDksOCBAQCB0 ZHFfYWRkKHN0cnVjdCB0ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJaW50IGNwdW1hc2s7 CiAjZW5kaWYKIAorICAgIHN0cnVjdCBwcmlzb24gKnByID0gdGQtPnRkX3Byb2MtPnBfdWNy ZWQtPmNyX3ByaXNvbjsKKwogCVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsKIAlL QVNTRVJUKCh0ZC0+dGRfaW5oaWJpdG9ycyA9PSAwKSwKIAkgICAgKCJzY2hlZF9hZGQ6IHRy eWluZyB0byBydW4gaW5oaWJpdGVkIHRocmVhZCIpKTsKQEAgLTIzODMsNiArMjQxOSwzMiBA QCB0ZHFfYWRkKHN0cnVjdCB0ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJS0FTU0VSVCh0 ZC0+dGRfZmxhZ3MgJiBUREZfSU5NRU0sCiAJICAgICgic2NoZWRfYWRkOiB0aHJlYWQgc3dh cHBlZCBvdXQiKSk7CiAKKyAgICAgICAgLyogV2UgbW92ZSB0aHJlYWQgaW4gSURMRSBxdWV1 ZSBpZiBwcmlzb24gZXN0aW1hdGUgY3B1IG1vcmUgdGhhbiBzaGFyZXMKKwkJICogY3B1IGFu ZCB0aHJlYWQgaXMgbm90IGludGVyYWN0aXZlLiBVc2UgRVNUQ1BVX1NISUZUIHRvIGF2b2lk CisJCSAqIHJvdW5kaW5nIGF3YXkgcmVzdWx0cyAqLworICAgIGlmKHByICE9IE5VTEwpCisg ICAgCUNUUjYoS1RSX1NDSEVELCJwaWQgJWksIHByaXNvbiAlaSwgcHJfZXN0Y3B1ICVpLFwK KwkJCQkJCWVzdGNwdSAlaSBzaGFyZXMgJWkgaW50ZXJhY3QgJWkiLAorICAgICAgICAgICAg ICAgICAgIAkJdGQtPnRkX3Byb2MtPnBfcGlkLHByLT5wcl9pZCxwci0+cHJfZXN0Y3B1LAor CQkJCQkJZXN0Y3B1LCBwci0+cHJfc2NoZWRfc2hhcmVzLCBzY2hlZF9pbnRlcmFjdF9zY29y ZSh0ZCkpOworICAgIGlmIChwciAhPSBOVUxMICYmIHByLT5wcl9zY2hlZF9zaGFyZXMgIT0g MCAmJgorICAgICAgICBzY2hlZF9pbnRlcmFjdF9zY29yZSh0ZCkgPiBzY2hlZF9pbnRlcmFj dCAmJgorCQllc3RjcHUgIT0gMCAmJiB0b3RhbF9zY2hlZF9zaGFyZXMgIT0gMCl7CisKKyAg ICAJaWYgKChwci0+cHJfZXN0Y3B1ICAgICAgICAgIDw8IEVTVENQVV9TSElGVCkgIC8gKGVz dGNwdSkgPgorICAgICAgICAgIAkocHItPnByX3NjaGVkX3NoYXJlcyAgICA8PCBFU1RDUFVf U0hJRlQpICAvICh0b3RhbF9zY2hlZF9zaGFyZXMpKQorICAgICAgICB7CisgICAgICAgICAg CXRkLT50ZF9wcmlvcml0eSAgPSBQUklfTUlOX0lETEU7IAorCQkJdGQtPnRkX3ByaV9jbGFz cyA9IFBSSV9JRExFOworICAgICAgICAgICAgQ1RSMihLVFJfU0NIRUQsInByaXNvbiAlaSBl eGNlc3MgY3B1IGxpbWl0ISEhIG5ldyBwcmkgPSAlaSAiLHByLT5wcl9pZCx0ZC0+dGRfcHJp b3JpdHkpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDVFIxKEtUUl9TQ0hF RCwicHJpc29uICVpIHVzZSBjcHUgbGVzcyBsaW1pdCIscHItPnByX2lkKTsgICAgIAorCQkJ c2NoZWRfcHJpb3JpdHkodGQpOworCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9USU1FU0hB UkU7CisgICAgICAgIH0KKyAgICB9CisKIAl0cyA9IHRkLT50ZF9zY2hlZDsKIAljbGFzcyA9 IFBSSV9CQVNFKHRkLT50ZF9wcmlfY2xhc3MpOwogICAgICAgICBURF9TRVRfUlVOUSh0ZCk7 CkBAIC0yNzQ2LDYgKzI4MDgsMTAgQEAgU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FV VE8sIGludGVyYQogICAgICAiSW50ZXJhY3Rpdml0eSBzY29yZSB0aHJlc2hvbGQiKTsKIFNZ U0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBwcmVlbXB0X3RocmVzaCwgQ1RMRkxB R19SVywgJnByZWVtcHRfdGhyZXNoLAogICAgICAwLCJNaW4gcHJpb3JpdHkgZm9yIHByZWVt cHRpb24sIGxvd2VyIHByaW9yaXRpZXMgaGF2ZSBncmVhdGVyIHByZWNlZGVuY2UiKTsKK1NZ U0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBmbHVzaF9lc3RjcHVfaW50ZXJ2YWws IENUTEZMQUdfUlcsICZmbHVzaF9lc3RjcHVfaW50ZXJ2YWwsCisgICAgIDAsIk51bWJlciB0 aWNrcyBzdGF0IHRpbWVyIGFmdGVyIHRoYXIgd2UgemVybyBlc3RjcHUgY291bnRlciIpOwor U1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIHRvdGFsX3NjaGVkX3NoYXJlcywg Q1RMRkxBR19SVywgJnRvdGFsX3NjaGVkX3NoYXJlcywKKyAgICAgMCwiVG90YWwgbnVtYmVy IHNoYXJlZCBjcHUgZm9yIHN5c3RlbSIpOwogI2lmZGVmIFNNUAogU1lTQ1RMX0lOVChfa2Vy bl9zY2hlZCwgT0lEX0FVVE8sIHBpY2tfcHJpLCBDVExGTEFHX1JXLCAmcGlja19wcmksIDAs CiAgICAgIlBpY2sgdGhlIHRhcmdldCBjcHUgYmFzZWQgb24gcHJpb3JpdHkgcmF0aGVyIHRo YW4gbG9hZC4iKTsKZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxs LXNwYWNlIC0taWdub3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lz L3N5cy9qYWlsLmggc3lzLm5ldy9zeXMvamFpbC5oCi0tLSBzeXMvc3lzL2phaWwuaAkyMDA5 LTAyLTE4IDIzOjEyOjA4LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9zeXMvamFpbC5o CTIwMDktMDQtMTcgMTg6NTM6NDMuMDAwMDAwMDAwICswNDAwCkBAIC0zMSw2ICszMSw3IEBA IHN0cnVjdCBqYWlsIHsKIAl1aW50MzJfdAlpcDZzOwogCXN0cnVjdCBpbl9hZGRyCSppcDQ7 CiAJc3RydWN0IGluNl9hZGRyCSppcDY7CisJdWludDMyX3QJc2NoZWRfc2hhcmVzOwogfTsK ICNkZWZpbmUJSkFJTF9BUElfVkVSU0lPTiAyCiAKQEAgLTEzMiw2ICsxMzMsOSBAQCBzdHJ1 Y3QgcHJpc29uIHsKIAlzdHJ1Y3QgdGFzawkgcHJfdGFzazsJCQkvKiAoZCkgZGVzdHJveSB0 YXNrICovCiAJc3RydWN0IG10eAkgcHJfbXR4OwogCXZvaWQJCSoqcHJfc2xvdHM7CQkJLyog KHApIGFkZGl0aW9uYWwgZGF0YSAqLworCXVpbnQzMl90CXByX2VzdGNwdTsJCQkvKiAocCkg Y3B1IHVzYWdlICovCisJdWludDMyX3QJcHJfc2NoZWRfc2hhcmVzOwkvKiAoYykgbnVtYmVy IHZpcnR1YWwgY3B1ICovCisKIAlpbnQJCSBwcl9pcDRzOwkJCS8qIChjKSBudW1iZXIgb2Yg djQgSVBzICovCiAJc3RydWN0IGluX2FkZHIJKnByX2lwNDsJCQkvKiAoYykgdjQgSVBzIG9m IGphaWwgKi8KIAlpbnQJCSBwcl9pcDZzOwkJCS8qIChjKSBudW1iZXIgb2YgdjYgSVBzICov CmRpZmYgLVUzIC1yIC0tc2hvdy1jLWZ1bmN0aW9uIC0taWdub3JlLWFsbC1zcGFjZSAtLWln bm9yZS10YWItZXhwYW5zaW9uIC0taWdub3JlLWJsYW5rLWxpbmVzIHVzci5zYmluL2phaWwv amFpbC5jIHVzci5zYmluLm5ldy9qYWlsL2phaWwuYwotLS0gdXNyLnNiaW4vamFpbC9qYWls LmMJMjAwOS0wMi0wNyAxNjoxOTowOC4wMDAwMDAwMDAgKzAzMDAKKysrIHVzci5zYmluLm5l dy9qYWlsL2phaWwuYwkyMDA5LTA0LTE3IDE4OjU3OjE1LjAwMDAwMDAwMCArMDQwMApAQCAt ODMsNiArODMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQgY2gsIGVy cm9yLCBpLCBuZ3JvdXBzLCBzZWN1cmVsZXZlbDsKIAlpbnQgaGZsYWcsIGlmbGFnLCBKZmxh ZywgbGZsYWcsIHVmbGFnLCBVZmxhZzsKIAljaGFyIHBhdGhbUEFUSF9NQVhdLCAqamFpbG5h bWUsICplcCwgKnVzZXJuYW1lLCAqSmlkRmlsZSwgKmlwOworCXVpbnQzMl90IHNjaGVkX3No YXJlcyA9IDA7CiAJc3RhdGljIGNoYXIgKmNsZWFuZW52OwogCWNvbnN0IGNoYXIgKnNoZWxs LCAqcCA9IE5VTEw7CiAJbG9uZyBsdG1wOwpAQCAtOTQsNyArOTUsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAlqYWlsbmFtZSA9IHVzZXJuYW1lID0gSmlkRmlsZSA9IGNs ZWFuZW52ID0gTlVMTDsKIAlmcCA9IE5VTEw7CiAKLQl3aGlsZSAoKGNoID0gZ2V0b3B0KGFy Z2MsIGFyZ3YsICJoaWxuOnM6dTpVOko6IikpICE9IC0xKSB7CisJd2hpbGUgKChjaCA9IGdl dG9wdChhcmdjLCBhcmd2LCAiaGlsUzpuOnM6dTpVOko6IikpICE9IC0xKSB7CiAJCXN3aXRj aCAoY2gpIHsKIAkJY2FzZSAnaCc6CiAJCQloZmxhZyA9IDE7CkBAIC0xMTUsNiArMTE2LDkg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZXJyeCgxLCAiaW52YWxpZCBz ZWN1cmVsZXZlbDogYCVzJyIsIG9wdGFyZyk7CiAJCQlzZWN1cmVsZXZlbCA9IGx0bXA7CiAJ CQlicmVhazsKKwkJY2FzZSAnUyc6CisJCQlzY2hlZF9zaGFyZXMgPSAodWludDMyX3Qpc3Ry dG9sKG9wdGFyZyxOVUxMLDEwKTsKKwkJCWJyZWFrOwogCQljYXNlICd1JzoKIAkJCXVzZXJu YW1lID0gb3B0YXJnOwogCQkJdWZsYWcgPSAxOwpAQCAtMTUyLDYgKzE1Niw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChqYWlsbmFtZSAhPSBOVUxMKQogCQlqLmph aWxuYW1lID0gamFpbG5hbWU7CiAKKwlqLnNjaGVkX3NoYXJlcyA9IHNjaGVkX3NoYXJlczsK KwogCS8qIEhhbmRsZSBJUCBhZGRyZXNzZXMuIElmIHJlcXVlc3RlZCByZXNvbHZlIGhvc3Ru YW1lIHRvby4gKi8KIAliemVybygmaGludHMsIHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsK IAloaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwpAQCAtMjY0LDkgKzI3MCwxMCBA QCBzdGF0aWMgdm9pZAogdXNhZ2Uodm9pZCkKIHsKIAotCSh2b2lkKWZwcmludGYoc3RkZXJy LCAiJXMlcyVzXG4iLAorCSh2b2lkKWZwcmludGYoc3RkZXJyLCAiJXMlcyVzJXNcbiIsCiAJ ICAgICAidXNhZ2U6IGphaWwgWy1oaV0gWy1uIGphaWxuYW1lXSBbLUogamlkX2ZpbGVdICIs CiAJICAgICAiWy1zIHNlY3VyZWxldmVsXSBbLWwgLXUgdXNlcm5hbWUgfCAtVSB1c2VybmFt ZV0gIiwKKwkJICJbLVMgbnVtYmVyIHNoYXJlZCBjcHVdICIsCiAJICAgICAicGF0aCBob3N0 bmFtZSBbaXBbLC4uXV0gY29tbWFuZCAuLi4iKTsKIAlleGl0KDEpOwogfQo= --------------010009050107010301000504 Content-Type: text/plain; name="patch-jail-limit-71RELEASE" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch-jail-limit-71RELEASE" ZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdu b3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4va2Vybl9q YWlsLmMgc3lzLm5ldy9rZXJuL2tlcm5famFpbC5jCi0tLSBzeXMva2Vybi9rZXJuX2phaWwu YwkyMDA4LTExLTI1IDA1OjU5OjI5LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJu L2tlcm5famFpbC5jCTIwMDktMDQtMTcgMjA6MjM6NDAuMDAwMDAwMDAwICswNDAwCkBAIC0x NTYsNiArMTU2LDcgQEAgamFpbChzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGphaWxfYXJn cwogCQlnb3RvIGVfZHJvcHZucmVmOwogCXByLT5wcl9pcCA9IGouaXBfbnVtYmVyOwogCXBy LT5wcl9saW51eCA9IE5VTEw7CisgICAgcHItPnByX3NjaGVkX3NoYXJlcyA9IGotPnNjaGVk X3NoYXJlczsKIAlwci0+cHJfc2VjdXJlbGV2ZWwgPSBzZWN1cmVsZXZlbDsKIAlpZiAocHJp c29uX3NlcnZpY2Vfc2xvdHMgPT0gMCkKIAkJcHItPnByX3Nsb3RzID0gTlVMTDsKZGlmZiAt VTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdub3JlLXRh Yi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4vc2NoZWRfdWxlLmMg c3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCi0tLSBzeXMva2Vybi9zY2hlZF91bGUuYwkyMDA4 LTExLTI1IDA1OjU5OjI5LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJuL3NjaGVk X3VsZS5jCTIwMDktMDQtMTcgMjA6MjM6NDAuMDAwMDAwMDAwICswNDAwCkBAIC02MSw2ICs2 MSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogc3JjL3N5cy9rZXJuL3NjaGVkX3UKICNpbmNs dWRlIDxzeXMvdW10eC5oPgogI2luY2x1ZGUgPHN5cy92bW1ldGVyLmg+CiAjaW5jbHVkZSA8 c3lzL2NwdXNldC5oPgorI2luY2x1ZGUgPHN5cy9qYWlsLmg+CiAjaWZkZWYgS1RSQUNFCiAj aW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy9rdHJhY2UuaD4KQEAgLTE4Niw2 ICsxODcsMjIgQEAgc3RhdGljIGludCBzY2hlZF9pbnRlcmFjdCA9IFNDSEVEX0lOVEVSQQog c3RhdGljIGludCByZWFsc3RhdGh6Owogc3RhdGljIGludCB0aWNraW5jcjsKIHN0YXRpYyBp bnQgc2NoZWRfc2xpY2U7CisKKyNkZWZpbmUgRVNUQ1BVX1NISUZUCTEwCisvKgorICogZXN0 Y3B1OgkJCQkJR2xvYmFsIGNvdW50ZXIgdGlja3MgZnJvbSBzdGF0IHRpbWVyIAorICogZmx1 c2hfZXN0Y3B1X2ludGVydmFsOiAgIE51bWJlciB0aWNrcywgYWZ0ZXIgdGhhdCB3ZSB0byB6 ZXJvIGVzdGNwdSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9lc3RjcHVf aW50ZXJ2YWwgPSBtcF9uY3B1cypzdGF0aHoqMTAsIAorICoJCQkJCQkJZGVmYXVsdCAyKjEy OCoxMCA9IDI1NjAKKyAqIHRvdGFsX3NjaGVkX3NoYXJlczogICAgICBUb3RhbCBjb3VudCBz aGFyZXMgY3B1LCAxMDAwIHBlciBjb3JlLCAKKyAqCQkJCQkJCWRlZmF1bHQgMioxMDAwID0g MjAwMCAKKyovCisKKworc3RhdGljIGludCBlc3RjcHU7CitzdGF0aWMgaW50IGZsdXNoX2Vz dGNwdV9pbnRlcnZhbCA9IDI1NjA7CitzdGF0aWMgaW50IHRvdGFsX3NjaGVkX3NoYXJlcyA9 IDIwMDA7CisKICNpZmRlZiBQUkVFTVBUSU9OCiAjaWZkZWYgRlVMTF9QUkVFTVBUSU9OCiBz dGF0aWMgaW50IHByZWVtcHRfdGhyZXNoID0gUFJJX01BWF9JRExFOwpAQCAtMjIwMCw2ICsy MjE3LDcgQEAgc2NoZWRfY2xvY2soc3RydWN0IHRocmVhZCAqdGQpCiB7CiAJc3RydWN0IHRk cSAqdGRxOwogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7CisJc3RydWN0IHByaXNvbiAqcHIgPSB0 ZC0+dGRfcHJvYy0+cF91Y3JlZC0+Y3JfcHJpc29uOwogCiAJVEhSRUFEX0xPQ0tfQVNTRVJU KHRkLCBNQV9PV05FRCk7CiAJdGRxID0gVERRX1NFTEYoKTsKQEAgLTIyMzQsNiArMjI1Miwy MCBAQCBzY2hlZF9jbG9jayhzdHJ1Y3QgdGhyZWFkICp0ZCkKIAkJdGQtPnRkX3NjaGVkLT50 c19ydW50aW1lICs9IHRpY2tpbmNyOwogCQlzY2hlZF9pbnRlcmFjdF91cGRhdGUodGQpOwog CX0KKworCS8qIEluY3JlYXNlIGNvdW50ZXIgYW5kIGZsdXNoIGlmIG5lZWQgKi8KKwllc3Rj cHUrKzsKKwlpZiAocHIgIT0gTlVMTCkKKwkJcHItPnByX2VzdGNwdSsrOworCisJaWYgKGVz dGNwdSA+IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCl7CisJCWVzdGNwdSA9IDA7CisJCUxJU1Rf Rk9SRUFDSChwciwgJmFsbHByaXNvbiwgcHJfbGlzdCkgeworCQkJcHItPnByX2VzdGNwdSA9 IDA7CisJCX0KKwkJQ1RSMChLVFJfU0NIRUQsIkZsdXNoIGVzdGNwdSBhbmQgcHJfZXN0Y3B1 IGZvciBhbGwgamFpbHMiKTsKKwl9CisKIAkvKgogCSAqIFdlIHVzZWQgdXAgb25lIHRpbWUg c2xpY2UuCiAJICovCkBAIC0yMzc1LDYgKzI0MDcsOCBAQCB0ZHFfYWRkKHN0cnVjdCB0ZHEg KnRkcSwgc3RydWN0IHRocmVhZCAqCiAJaW50IGNwdW1hc2s7CiAjZW5kaWYKIAorICAgIHN0 cnVjdCBwcmlzb24gKnByID0gdGQtPnRkX3Byb2MtPnBfdWNyZWQtPmNyX3ByaXNvbjsKKwog CVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsKIAlLQVNTRVJUKCh0ZC0+dGRfaW5o aWJpdG9ycyA9PSAwKSwKIAkgICAgKCJzY2hlZF9hZGQ6IHRyeWluZyB0byBydW4gaW5oaWJp dGVkIHRocmVhZCIpKTsKQEAgLTIzODMsNiArMjQxNywzMiBAQCB0ZHFfYWRkKHN0cnVjdCB0 ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJS0FTU0VSVCh0ZC0+dGRfZmxhZ3MgJiBUREZf SU5NRU0sCiAJICAgICgic2NoZWRfYWRkOiB0aHJlYWQgc3dhcHBlZCBvdXQiKSk7CiAKKyAg ICAgICAgLyogV2UgbW92ZSB0aHJlYWQgaW4gSURMRSBxdWV1ZSBpZiBwcmlzb24gZXN0aW1h dGUgY3B1IG1vcmUgdGhhbiBzaGFyZXMKKwkJICogY3B1IGFuZCB0aHJlYWQgaXMgbm90IGlu dGVyYWN0aXZlLiBVc2UgRVNUQ1BVX1NISUZUIHRvIGF2b2lkCisJCSAqIHJvdW5kaW5nIGF3 YXkgcmVzdWx0cyAqLworICAgIGlmKHByICE9IE5VTEwpCisgICAgCUNUUjYoS1RSX1NDSEVE LCJwaWQgJWksIHByaXNvbiAlaSwgcHJfZXN0Y3B1ICVpLFwKKwkJCQkJCWVzdGNwdSAlaSBz aGFyZXMgJWkgaW50ZXJhY3QgJWkiLAorICAgICAgICAgICAgICAgICAgIAkJdGQtPnRkX3By b2MtPnBfcGlkLHByLT5wcl9pZCxwci0+cHJfZXN0Y3B1LAorCQkJCQkJZXN0Y3B1LCBwci0+ cHJfc2NoZWRfc2hhcmVzLCBzY2hlZF9pbnRlcmFjdF9zY29yZSh0ZCkpOworICAgIGlmIChw ciAhPSBOVUxMICYmIHByLT5wcl9zY2hlZF9zaGFyZXMgIT0gMCAmJgorICAgICAgICBzY2hl ZF9pbnRlcmFjdF9zY29yZSh0ZCkgPiBzY2hlZF9pbnRlcmFjdCAmJgorCQllc3RjcHUgIT0g MCAmJiB0b3RhbF9zY2hlZF9zaGFyZXMgIT0gMCl7CisKKyAgICAJaWYgKChwci0+cHJfZXN0 Y3B1ICAgICAgICAgIDw8IEVTVENQVV9TSElGVCkgIC8gKGVzdGNwdSkgPgorICAgICAgICAg IAkocHItPnByX3NjaGVkX3NoYXJlcyAgICA8PCBFU1RDUFVfU0hJRlQpICAvICh0b3RhbF9z Y2hlZF9zaGFyZXMpKQorICAgICAgICB7CisgICAgICAgICAgCXRkLT50ZF9wcmlvcml0eSAg PSBQUklfTUlOX0lETEU7IAorCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9JRExFOworICAg ICAgICAgICAgQ1RSMihLVFJfU0NIRUQsInByaXNvbiAlaSBleGNlc3MgY3B1IGxpbWl0ISEh IG5ldyBwcmkgPSAlaSAiLHByLT5wcl9pZCx0ZC0+dGRfcHJpb3JpdHkpOworCisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICBDVFIxKEtUUl9TQ0hFRCwicHJpc29uICVpIHVzZSBj cHUgbGVzcyBsaW1pdCIscHItPnByX2lkKTsgICAgIAorCQkJc2NoZWRfcHJpb3JpdHkodGQp OworCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9USU1FU0hBUkU7CisgICAgICAgIH0KKyAg ICB9CisKIAl0cyA9IHRkLT50ZF9zY2hlZDsKIAljbGFzcyA9IFBSSV9CQVNFKHRkLT50ZF9w cmlfY2xhc3MpOwogICAgICAgICBURF9TRVRfUlVOUSh0ZCk7CkBAIC0yNzQxLDYgKzI4MDEs MTAgQEAgU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIGludGVyYQogICAgICAi SW50ZXJhY3Rpdml0eSBzY29yZSB0aHJlc2hvbGQiKTsKIFNZU0NUTF9JTlQoX2tlcm5fc2No ZWQsIE9JRF9BVVRPLCBwcmVlbXB0X3RocmVzaCwgQ1RMRkxBR19SVywgJnByZWVtcHRfdGhy ZXNoLAogICAgICAwLCJNaW4gcHJpb3JpdHkgZm9yIHByZWVtcHRpb24sIGxvd2VyIHByaW9y aXRpZXMgaGF2ZSBncmVhdGVyIHByZWNlZGVuY2UiKTsKK1NZU0NUTF9JTlQoX2tlcm5fc2No ZWQsIE9JRF9BVVRPLCBmbHVzaF9lc3RjcHVfaW50ZXJ2YWwsIENUTEZMQUdfUlcsICZmbHVz aF9lc3RjcHVfaW50ZXJ2YWwsCisgICAgIDAsIk51bWJlciB0aWNrcyBzdGF0IHRpbWVyIGFm dGVyIHRoYXIgd2UgemVybyBlc3RjcHUgY291bnRlciIpOworU1lTQ1RMX0lOVChfa2Vybl9z Y2hlZCwgT0lEX0FVVE8sIHRvdGFsX3NjaGVkX3NoYXJlcywgQ1RMRkxBR19SVywgJnRvdGFs X3NjaGVkX3NoYXJlcywKKyAgICAgMCwiVG90YWwgbnVtYmVyIHNoYXJlZCBjcHUgZm9yIHN5 c3RlbSIpOwogI2lmZGVmIFNNUAogU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8s IHBpY2tfcHJpLCBDVExGTEFHX1JXLCAmcGlja19wcmksIDAsCiAgICAgIlBpY2sgdGhlIHRh cmdldCBjcHUgYmFzZWQgb24gcHJpb3JpdHkgcmF0aGVyIHRoYW4gbG9hZC4iKTsKZGlmZiAt VTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdub3JlLXRh Yi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL3N5cy9qYWlsLmggc3lzLm5l dy9zeXMvamFpbC5oCi0tLSBzeXMvc3lzL2phaWwuaAkyMDA4LTExLTI1IDA1OjU5OjI5LjAw MDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9zeXMvamFpbC5oCTIwMDktMDQtMTcgMjA6MjY6 NTQuMDAwMDAwMDAwICswNDAwCkBAIC0xOCw2ICsxOCw3IEBAIHN0cnVjdCBqYWlsIHsKIAlj aGFyCQkqcGF0aDsKIAljaGFyCQkqaG9zdG5hbWU7CiAJdV9pbnQzMl90CWlwX251bWJlcjsK Kwl1aW50MzJfdAlzY2hlZF9zaGFyZXM7CiB9OwogCiBzdHJ1Y3QgeHByaXNvbiB7CkBAIC03 NCw2ICs3NSw4IEBAIHN0cnVjdCBwcmlzb24gewogCXN0cnVjdCB0YXNrCSBwcl90YXNrOwkJ CS8qIChkKSBkZXN0cm95IHRhc2sgKi8KIAlzdHJ1Y3QgbXR4CSBwcl9tdHg7CiAJdm9pZAkJ Kipwcl9zbG90czsJCQkvKiAocCkgYWRkaXRpb25hbCBkYXRhICovCisJdWludDMyX3QJcHJf ZXN0Y3B1OwkJCS8qIChwKSBjcHUgdXNhZ2UgKi8KKwl1aW50MzJfdAlwcl9zY2hlZF9zaGFy ZXM7CS8qIChjKSBudW1iZXIgdmlydHVhbCBjcHUgKi8KIH07CiAjZW5kaWYgLyogX0tFUk5F TCB8fCBfV0FOVF9QUklTT04gKi8KIApkaWZmIC1VMyAtciAtLXNob3ctYy1mdW5jdGlvbiAt LWlnbm9yZS1hbGwtc3BhY2UgLS1pZ25vcmUtdGFiLWV4cGFuc2lvbiAtLWlnbm9yZS1ibGFu ay1saW5lcyB1c3Iuc2Jpbi9qYWlsL2phaWwuYyB1c3Iuc2Jpbi5uZXcvamFpbC9qYWlsLmMK LS0tIHVzci5zYmluL2phaWwvamFpbC5jCTIwMDgtMTEtMjUgMDU6NTk6MjkuMDAwMDAwMDAw ICswMzAwCisrKyB1c3Iuc2Jpbi5uZXcvamFpbC9qYWlsLmMJMjAwOS0wNC0xNyAyMDozMTox Ny4wMDAwMDAwMDAgKzA0MDAKQEAgLTU3LDYgKzU3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJZ2lkX3QgZ3JvdXBzW05HUk9VUFNdOwogCWludCBjaCwgaSwgaWZsYWcs IEpmbGFnLCBsZmxhZywgbmdyb3Vwcywgc2VjdXJlbGV2ZWwsIHVmbGFnLCBVZmxhZzsKIAlj aGFyIHBhdGhbUEFUSF9NQVhdLCAqZXAsICp1c2VybmFtZSwgKkppZEZpbGU7CisJdWludDMy X3Qgc2NoZWRfc2hhcmVzID0gMDsKIAlzdGF0aWMgY2hhciAqY2xlYW5lbnY7CiAJY29uc3Qg Y2hhciAqc2hlbGwsICpwID0gTlVMTDsKIAlsb25nIGx0bXA7CkBAIC02Nyw3ICs2OCw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXVzZXJuYW1lID0gSmlkRmlsZSA9IGNs ZWFuZW52ID0gTlVMTDsKIAlmcCA9IE5VTEw7CiAKLQl3aGlsZSAoKGNoID0gZ2V0b3B0KGFy Z2MsIGFyZ3YsICJpbHM6dTpVOko6IikpICE9IC0xKSB7CisJd2hpbGUgKChjaCA9IGdldG9w dChhcmdjLCBhcmd2LCAiaWxTOnM6dTpVOko6IikpICE9IC0xKSB7CiAJCXN3aXRjaCAoY2gp IHsKIAkJY2FzZSAnaSc6CiAJCQlpZmxhZyA9IDE7CkBAIC04Miw2ICs4Myw5IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWVycngoMSwgImludmFsaWQgc2VjdXJlbGV2 ZWw6IGAlcyciLCBvcHRhcmcpOwogCQkJc2VjdXJlbGV2ZWwgPSBsdG1wOwogCQkJYnJlYWs7 CisJCWNhc2UgJ1MnOgorCQkJc2NoZWRfc2hhcmVzID0gKHVpbnQzMl90KXN0cnRvbChvcHRh cmcsTlVMTCwxMCk7CisJCQlicmVhazsKIAkJY2FzZSAndSc6CiAJCQl1c2VybmFtZSA9IG9w dGFyZzsKIAkJCXVmbGFnID0gMTsKQEAgLTExNSw2ICsxMTksNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAlqLnZlcnNpb24gPSAwOwogCWoucGF0aCA9IHBhdGg7CiAJai5o b3N0bmFtZSA9IGFyZ3ZbMV07CisJai5zY2hlZF9zaGFyZXMgPSBzY2hlZF9zaGFyZXM7CiAJ aWYgKGluZXRfYXRvbihhcmd2WzJdLCAmaW4pID09IDApCiAJCWVycngoMSwgIkNvdWxkIG5v dCBtYWtlIHNlbnNlIG9mIGlwLW51bWJlcjogJXMiLCBhcmd2WzJdKTsKIAlqLmlwX251bWJl ciA9IG50b2hsKGluLnNfYWRkcik7CkBAIC0xODIsOSArMTg3LDEwIEBAIHN0YXRpYyB2b2lk CiB1c2FnZSh2b2lkKQogewogCi0JKHZvaWQpZnByaW50ZihzdGRlcnIsICIlcyVzJXNcbiIs CisJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlcyVzJXMlc1xuIiwKIAkgICAgICJ1c2FnZTog amFpbCBbLWldIFstSiBqaWRfZmlsZV0gWy1zIHNlY3VyZWxldmVsXSBbLWwgLXUgIiwKIAkg ICAgICJ1c2VybmFtZSB8IC1VIHVzZXJuYW1lXSIsCisJCSAiWy1TIG51bWJlciBzaGFyZWQg Y3B1XSAiLAogCSAgICAgIiBwYXRoIGhvc3RuYW1lIGlwLW51bWJlciBjb21tYW5kIC4uLiIp OwogCWV4aXQoMSk7CiB9Cg== --------------010009050107010301000504--