From owner-freebsd-security Fri Mar 31 11:44:27 1995 Return-Path: security-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id LAA01887 for security-outgoing; Fri, 31 Mar 1995 11:44:27 -0800 Received: from aries.ibms.sinica.edu.tw ([140.109.40.248]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id LAA01843 for ; Fri, 31 Mar 1995 11:43:56 -0800 Received: (from taob@localhost) by aries.ibms.sinica.edu.tw (8.6.11/8.6.9) id DAA12102; Sat, 1 Apr 1995 03:44:12 +0800 Date: Sat, 1 Apr 1995 03:44:11 +0800 (CST) From: Brian Tao To: FREEBSD-SECURITY-L Subject: New /etc/security script for FreeBSD Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-668466482-796679051=:1567" Sender: security-owner@FreeBSD.org Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-668466482-796679051=:1567 Content-Type: TEXT/PLAIN; charset=US-ASCII A little while ago, I posted on freebsd-hackers that BSD/OS had a nice /etc/security script that seems to work well on a standard FreeBSD system. I've asked BSDI and there isn't a problem redistributing the file because they don't have a copyright on it. I've attached the script to this message and seek comments on it. Two functional changes have been made to the script. The first is changing line 33 to reflect FreeBSD's 8-char username limit. The second is the addition of a checksum module starting at line 557. It uses md5(1) to calculate checksums for all files in a specified set of directories chosen to contain system binaries. It's purpose is to aid in the detection of trojan horses. The standard FreeBSD /etc/security script is rather anemic in comparison. Could this be included as the standard script in future FreeBSD distributions? I just looked on a friend's NetBSD 1.0 machine and this is the file they use. -- Brian ("Though this be madness, yet there is method in't") Tao taob@gate.sinica.edu.tw <-- work ........ play --> taob@io.org --0-668466482-796679051=:1567 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=security Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: IyEvYmluL3NoIC0NCiMNCiMJQCgjKXNlY3VyaXR5CTguMSAoQmVya2VsZXkp IDYvOS85Mw0KIw0KDQpQQVRIPS9zYmluOi91c3Ivc2JpbjovYmluOi91c3Iv YmluDQoNCnVtYXNrIDA3Nw0KDQpFUlI9L3RtcC9fc2VjdXJlMS4kJA0KVE1Q MT0vdG1wL19zZWN1cmUyLiQkDQpUTVAyPS90bXAvX3NlY3VyZTMuJCQNClRN UDM9L3RtcC9fc2VjdXJlNC4kJA0KTElTVD0vdG1wL19zZWN1cmU1LiQkDQpP VVRQVVQ9L3RtcC9fc2VjdXJlNi4kJA0KDQp0cmFwICdybSAtZiAkRVJSICRU TVAxICRUTVAyICRUTVAzICRMSVNUICRPVVRQVVQnIDANCg0KDQojDQojIENo ZWNrIHRoZSBtYXN0ZXIgcGFzc3dvcmQgZmlsZSBzeW50YXguDQojDQpNUD0v ZXRjL21hc3Rlci5wYXNzd2QNCmF3ayAtRjogJ3sNCglpZiAoJDAgfiAvXlsJ IF0qJC8pIHsNCgkJcHJpbnRmKCJMaW5lICVkIGlzIGEgYmxhbmsgbGluZS5c biIsIE5SKTsNCgkJbmV4dDsNCgl9DQoJaWYgKE5GICE9IDEwKQ0KCQlwcmlu dGYoIkxpbmUgJWQgaGFzIHRoZSB3cm9uZyBudW1iZXIgb2YgZmllbGRzLlxu IiwgTlIpOw0KCWlmICgkMSAhfiAvXltBLVphLXowLTldKiQvKQ0KCQlwcmlu dGYoIkxvZ2luICVzIGhhcyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMu XG4iLCAkMSk7DQoJaWYgKGxlbmd0aCgkMSkgPiA4KQ0KCQlwcmludGYoIkxv Z2luICVzIGhhcyBtb3JlIHRoYW4gOCBjaGFyYWN0ZXJzLlxuIiwgJDEpOw0K CWlmICgkMiA9PSAiIikNCgkJcHJpbnRmKCJMb2dpbiAlcyBoYXMgbm8gcGFz c3dvcmQuXG4iLCAkMSk7DQoJaWYgKGxlbmd0aCgkMikgIT0gMzQgJiYgKCQx MCB+IC8uKnNoJC8gfHwgJDEwID09ICIiKSkNCgkJcHJpbnRmKCJMb2dpbiAl cyBpcyBvZmYgYnV0IHN0aWxsIGhhcyBhIHZhbGlkIHNoZWxsLlxuIiwgJDEp Ow0KCWlmICgkMyA9PSAwICYmICQxICE9ICJyb290IiAmJiAkMSAhPSAidG9v ciIpDQoJCXByaW50ZigiTG9naW4gJXMgaGFzIGEgdXNlciBpZCBvZiAwLlxu IiwgJDEpOw0KCWlmICgkMyA8IDApDQoJCXByaW50ZigiTG9naW4gJXMgaGFz IGEgbmVnYXRpdmUgdXNlciBpZC5cbiIsICQxKTsNCglpZiAoJDQgPCAwKQ0K CQlwcmludGYoIkxvZ2luICVzIGhhcyBhIG5lZ2F0aXZlIGdyb3VwIGlkLlxu IiwgJDEpOw0KfScgPCAkTVAgPiAkT1VUUFVUDQppZiBbIC1zICRPVVRQVVQg XSA7IHRoZW4NCglwcmludGYgIlxuQ2hlY2tpbmcgdGhlICRNUCBmaWxlOlxu Ig0KCWNhdCAkT1VUUFVUDQpmaQ0KDQphd2sgLUY6ICd7IHByaW50ICQxIH0n ICRNUCB8IHNvcnQgfCB1bmlxIC1kID4gJE9VVFBVVA0KaWYgWyAtcyAkT1VU UFVUIF0gOyB0aGVuDQoJcHJpbnRmICJcbiRNUCBoYXMgZHVwbGljYXRlIHVz ZXIgbmFtZXMuXG4iDQoJY29sdW1uICRPVVRQVVQNCmZpDQoNCmF3ayAtRjog J3sgcHJpbnQgJDEgIiAiICQzIH0nICRNUCB8IHNvcnQgLW4gKzEgfCB0ZWUg JFRNUDEgfA0KdW5pcSAtZCAtZiAxIHwgYXdrICd7IHByaW50ICQyIH0nID4g JFRNUDINCmlmIFsgLXMgJFRNUDIgXSA7IHRoZW4NCglwcmludGYgIlxuJE1Q IGhhcyBkdXBsaWNhdGUgdXNlciBpZCdzLlxuIg0KICAgICAgICB3aGlsZSBy ZWFkIHVpZDsgZG8NCiAgICAgICAgICAgICAgICBncmVwIC13ICR1aWQgJFRN UDENCiAgICAgICAgZG9uZSA8ICRUTVAyIHwgY29sdW1uDQpmaQ0KDQoNCiMN CiMgQmFja3VwIHRoZSBtYXN0ZXIgcGFzc3dvcmQgZmlsZTsgYSBzcGVjaWFs IGNhc2UsIHRoZSBub3JtYWwgYmFja3VwDQojIG1lY2hhbmlzbXMgYWxzbyBw cmludCBvdXQgZmlsZSBkaWZmZXJlbmNlcyBhbmQgd2UgZG9uJ3Qgd2FudCB0 byBkbw0KIyB0aGF0IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBlbmNyeXB0ZWQg cGFzc3dvcmRzIGluIGl0Lg0KIw0KQ1VSPS92YXIvYmFja3Vwcy9gYmFzZW5h bWUgJE1QYC5jdXJyZW50DQpCQUNLPS92YXIvYmFja3Vwcy9gYmFzZW5hbWUg JE1QYC5iYWNrdXANCmlmIFsgLXMgJENVUiBdIDsgdGhlbg0KCWlmIGNtcCAt cyAkQ1VSICRNUDsgdGhlbg0KCQk6DQoJZWxzZQ0KCQljcCAtcCAkQ1VSICRC QUNLDQoJCWNwIC1wICRNUCAkQ1VSDQoJCWNob3duIHJvb3Qud2hlZWwgJENV Ug0KCWZpDQplbHNlDQoJY3AgLXAgJE1QICRDVVINCgljaG93biByb290Lndo ZWVsICRDVVINCmZpDQoNCg0KIw0KIyBDaGVjayB0aGUgZ3JvdXAgZmlsZSBz eW50YXguDQojDQpHUlA9L2V0Yy9ncm91cA0KYXdrIC1GOiAnew0KCWlmICgk MCB+IC9eWwkgXSokLykgew0KCQlwcmludGYoIkxpbmUgJWQgaXMgYSBibGFu ayBsaW5lLlxuIiwgTlIpOw0KCQluZXh0Ow0KCX0NCglpZiAoTkYgIT0gNCkN CgkJcHJpbnRmKCJMaW5lICVkIGhhcyB0aGUgd3JvbmcgbnVtYmVyIG9mIGZp ZWxkcy5cbiIsIE5SKTsNCglpZiAoJDEgIX4gL15bQS16YS16MC05XSokLykN CgkJcHJpbnRmKCJHcm91cCAlcyBoYXMgbm9uLWFscGhhbnVtZXJpYyBjaGFy YWN0ZXJzLlxuIiwgJDEpOw0KCWlmIChsZW5ndGgoJDEpID4gOCkNCgkJcHJp bnRmKCJHcm91cCAlcyBoYXMgbW9yZSB0aGFuIDggY2hhcmFjdGVycy5cbiIs ICQxKTsNCglpZiAoJDMgIX4gL1swLTldKi8pDQoJCXByaW50ZigiTG9naW4g JXMgaGFzIGEgbmVnYXRpdmUgZ3JvdXAgaWQuXG4iLCAkMSk7DQp9JyA8ICRH UlAgPiAkT1VUUFVUDQppZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4NCglwcmlu dGYgIlxuQ2hlY2tpbmcgdGhlICRHUlAgZmlsZTpcbiINCgljYXQgJE9VVFBV VA0KZmkNCg0KYXdrIC1GOiAneyBwcmludCAkMSB9JyAkR1JQIHwgc29ydCB8 IHVuaXEgLWQgPiAkT1VUUFVUDQppZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4N CglwcmludGYgIlxuJEdSUCBoYXMgZHVwbGljYXRlIGdyb3VwIG5hbWVzLlxu Ig0KCWNvbHVtbiAkT1VUUFVUDQpmaQ0KDQoNCiMNCiMgQ2hlY2sgZm9yIHJv b3QgcGF0aHMsIHVtYXNrIHZhbHVlcyBpbiBzdGFydHVwIGZpbGVzLg0KIyBU aGUgY2hlY2sgZm9yIHRoZSByb290IHBhdGhzIGlzIHByb2JsZW1hdGljYWwg LS0gaXQncyBsaWtlbHkgdG8gZmFpbA0KIyBpbiBvdGhlciBlbnZpcm9ubWVu dHMuICBPbmNlIHRoZSBzaGVsbHMgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIHdh cm4NCiMgb2YgJy4nIGluIHRoZSBwYXRoLCB0aGUgcGF0aCB0ZXN0cyBzaG91 bGQgZ28gYXdheS4NCiMNCj4gJE9VVFBVVA0KcmhvbWU9L3Jvb3QNCnVtYXNr c2V0PW5vDQpsaXN0PSIvZXRjL2NzaC5jc2hyYyAvZXRjL2NzaC5sb2dpbiAk e3Job21lfS8uY3NocmMgJHtyaG9tZX0vLmxvZ2luIg0KZm9yIGkgaW4gJGxp c3QgOyBkbw0KCWlmIFsgLWYgJGkgXSA7IHRoZW4NCgkJaWYgZWdyZXAgdW1h c2sgJGkgPiAvZGV2L251bGwgOyB0aGVuDQoJCQl1bWFza3NldD15ZXMNCgkJ ZmkNCgkJZWdyZXAgdW1hc2sgJGkgfA0KCQlhd2sgJyQyICUgMTAwIDwgMjAg XA0KCQkJeyBwcmludCAiUm9vdCB1bWFzayBpcyBncm91cCB3cml0ZWFibGUi IH0NCgkJICAgICAkMiAlIDEwIDwgMiBcDQoJCQl7IHByaW50ICJSb290IHVt YXNrIGlzIG90aGVyIHdyaXRlYWJsZSIgfScgPj4gJE9VVFBVVA0KCQkvYmlu L2NzaCAtZiAtcyA8PCBlbmQtb2YtY3NoID4gL2Rldi9udWxsIDI+JjENCgkJ CXVuc2V0IHBhdGgNCgkJCXNvdXJjZSAkaQ0KCQkJL2Jpbi9scyAtbGRnVCBc JHBhdGggPiAkVE1QMQ0KZW5kLW9mLWNzaA0KCQlhd2sgJ3sNCgkJCWlmICgk MTAgfiAvXlwuJC8pIHsNCgkJCQlwcmludCAiVGhlIHJvb3QgcGF0aCBpbmNs dWRlcyAuIjsNCgkJCQluZXh0Ow0KCQkJfQ0KCQkgICAgIH0NCgkJICAgICAk MSB+IC9eZC4uLi53LyBcDQogICAgICAgIHsgcHJpbnQgIlJvb3QgcGF0aCBk aXJlY3RvcnkgIiAkMTAgIiBpcyBncm91cCB3cml0ZWFibGUuIiB9IFwNCgkJ ICAgICAkMSB+IC9eZC4uLi4uLi53LyBcDQogICAgICAgIHsgcHJpbnQgIlJv b3QgcGF0aCBkaXJlY3RvcnkgIiAkMTAgIiBpcyBvdGhlciB3cml0ZWFibGUu IiB9JyBcDQoJCTwgJFRNUDEgPj4gJE9VVFBVVA0KCWZpDQpkb25lDQppZiBb ICR1bWFza3NldCA9ICJubyIgLW8gLXMgJE9VVFBVVCBdIDsgdGhlbg0KCXBy aW50ZiAiXG5DaGVja2luZyByb290IGNzaCBwYXRocywgdW1hc2sgdmFsdWVz OlxuJGxpc3RcbiINCglpZiBbIC1zICRPVVRQVVQgXTsgdGhlbg0KCQljYXQg JE9VVFBVVA0KCWZpDQoJaWYgWyAkdW1hc2tzZXQgPSAibm8iIF0gOyB0aGVu DQoJCXByaW50ZiAiXG5Sb290IGNzaCBzdGFydHVwIGZpbGVzIGRvIG5vdCBz ZXQgdGhlIHVtYXNrLlxuIg0KCWZpDQpmaQ0KDQo+ICRPVVRQVVQNCnJob21l PS9yb290DQp1bWFza3NldD1ubw0KbGlzdD0iJHtyaG9tZX0vLnByb2ZpbGUi DQpmb3IgaSBpbiAkbGlzdDsgZG8NCglpZiBbIC1mICRpIF0gOyB0aGVuDQoJ CWlmIGVncmVwIHVtYXNrICRpID4gL2Rldi9udWxsIDsgdGhlbg0KCQkJdW1h c2tzZXQ9eWVzDQoJCWZpDQoJCWVncmVwIHVtYXNrICRpIHwNCgkJYXdrICck MiAlIDEwMCA8IDIwIFwNCgkJCXsgcHJpbnQgIlJvb3QgdW1hc2sgaXMgZ3Jv dXAgd3JpdGVhYmxlIiB9IFwNCgkJICAgICAkMiAlIDEwIDwgMiBcDQoJCQl7 IHByaW50ICJSb290IHVtYXNrIGlzIG90aGVyIHdyaXRlYWJsZSIgfScgPj4g JE9VVFBVVA0KCQkvYmluL3NoIDw8IGVuZC1vZi1zaCA+IC9kZXYvbnVsbCAy PiYxDQoJCQlQQVRIPQ0KCQkJLiAkaQ0KCQkJbGlzdD1cYGVjaG8gXCRQQVRI IHwgL3Vzci9iaW4vc2VkIC1lICdzLzovIC9nJ1xgDQoJCQkvYmluL2xzIC1s ZGdUIFwkbGlzdCA+ICRUTVAxDQplbmQtb2Ytc2gNCgkJYXdrICd7DQoJCQlp ZiAoJDEwIH4gL15cLiQvKSB7DQoJCQkJcHJpbnQgIlRoZSByb290IHBhdGgg aW5jbHVkZXMgLiI7DQoJCQkJbmV4dDsNCgkJCX0NCgkJICAgICB9DQoJCSAg ICAgJDEgfiAvXmQuLi4udy8gXA0KICAgICAgICB7IHByaW50ICJSb290IHBh dGggZGlyZWN0b3J5ICIgJDEwICIgaXMgZ3JvdXAgd3JpdGVhYmxlLiIgfSBc DQoJCSAgICAgJDEgfiAvXmQuLi4uLi4udy8gXA0KICAgICAgICB7IHByaW50 ICJSb290IHBhdGggZGlyZWN0b3J5ICIgJDEwICIgaXMgb3RoZXIgd3JpdGVh YmxlLiIgfScgXA0KCQk8ICRUTVAxID4+ICRPVVRQVVQNCg0KCWZpDQpkb25l DQppZiBbICR1bWFza3NldCA9ICJubyIgLW8gLXMgJE9VVFBVVCBdIDsgdGhl bg0KCXByaW50ZiAiXG5DaGVja2luZyByb290IHNoIHBhdGhzLCB1bWFzayB2 YWx1ZXM6XG4kbGlzdFxuIg0KCWlmIFsgLXMgJE9VVFBVVCBdOyB0aGVuDQoJ CWNhdCAkT1VUUFVUDQoJZmkNCglpZiBbICR1bWFza3NldCA9ICJubyIgXSA7 IHRoZW4NCgkJcHJpbnRmICJcblJvb3Qgc2ggc3RhcnR1cCBmaWxlcyBkbyBu b3Qgc2V0IHRoZSB1bWFzay5cbiINCglmaQ0KZmkNCg0KDQojDQojIFJvb3Qg YW5kIHV1Y3Agc2hvdWxkIGJvdGggYmUgaW4gL2V0Yy9mdHB1c2Vycy4NCiMN CmlmIGVncmVwIHJvb3QgL2V0Yy9mdHB1c2VycyA+IC9kZXYvbnVsbCA7IHRo ZW4NCgk6DQplbHNlDQoJcHJpbnRmICJcblJvb3Qgbm90IGxpc3RlZCBpbiAv ZXRjL2Z0cHVzZXJzIGZpbGUuXG4iDQpmaQ0KaWYgZWdyZXAgdXVjcCAvZXRj L2Z0cHVzZXJzID4gL2Rldi9udWxsIDsgdGhlbg0KCToNCmVsc2UNCglwcmlu dGYgIlxuVXVjcCBub3QgbGlzdGVkIGluIC9ldGMvZnRwdXNlcnMgZmlsZS5c biINCmZpDQoNCiMgVXVkZWNvZGUgc2hvdWxkIG5vdCBiZSBpbiB0aGUgL2V0 Yy9hbGlhc2VzIGZpbGUuDQppZiBlZ3JlcCAndXVkZWNvZGU6LipcfHxkZWNv ZGU6LipcfCcgL2V0Yy9hbGlhc2VzOyB0aGVuDQogICAgICAgIHByaW50ZiAi XG5Qcm9ncmFtIGVudHJ5IGZvciB1dWRlY29kZSBleGlzdHMgaW4gdGhlIC9l dGMvYWxpYXNlcyBmaWxlLlxuIg0KZmkNCg0KIyBGaWxlcyB0aGF0IHNob3Vs ZCBub3QgaGF2ZSArIHNpZ25zLg0KbGlzdD0iL2V0Yy9ob3N0cy5lcXVpdiAv ZXRjL2hvc3RzLmxwZCINCmZvciBmIGluICRsaXN0IDsgZG8NCglpZiBlZ3Jl cCAnXCsnICRmID4gL2Rldi9udWxsIDsgdGhlbg0KCQlwcmludGYgIlxuUGx1 cyBzaWduIGluICRmIGZpbGUuXG4iDQoJZmkNCmRvbmUNCg0KDQojDQojIENo ZWNrIGZvciBzcGVjaWFsIHVzZXJzIHdpdGggLnJob3N0cyBmaWxlcy4gIE9u bHkgcm9vdCBhbmQgdG9vciBzaG91bGQNCiMgaGF2ZSBhIC5yaG9zdHMgZmls ZXMuICBBbHNvLCAucmhvc3RzIGZpbGVzIHNob3VsZCBub3QgaGF2ZSBwbHVz IHNpZ25zLg0KIw0KYXdrIC1GOiAnJDEgIT0gInJvb3QiICYmICQxICE9ICJ0 b29yIiAmJiBcDQoJKCQzIDwgMTAwIHx8ICQxID09ICJmdHAiIHx8ICQxID09 ICJ1dWNwIikgXA0KCQl7IHByaW50ICQxICIgIiAkNiB9JyAvZXRjL3Bhc3N3 ZCB8DQp3aGlsZSByZWFkIHVpZCBob21lZGlyOyBkbw0KCWlmIFsgLWYgJHto b21lZGlyfS8ucmhvc3RzIF0gOyB0aGVuDQoJCXJob3N0PWBscyAtbGRnVCAk e2hvbWVkaXJ9Ly5yaG9zdHNgDQoJCXByaW50ZiAiJHVpZDogJHJob3N0XG4i DQoJZmkNCmRvbmUgPiAkT1VUUFVUDQppZiBbIC1zICRPVVRQVVQgXSA7IHRo ZW4NCglwcmludGYgIlxuQ2hlY2tpbmcgZm9yIHNwZWNpYWwgdXNlcnMgd2l0 aCAucmhvc3RzIGZpbGVzOlxuIg0KCWNhdCAkT1VUUFVUDQpmaQ0KDQphd2sg LUY6ICd7IHByaW50ICQxICIgIiAkNiB9JyAvZXRjL3Bhc3N3ZCB8IFwNCndo aWxlIHJlYWQgdWlkIGhvbWVkaXI7IGRvDQoJaWYgWyAtZiAke2hvbWVkaXJ9 Ly5yaG9zdHMgXSAmJiBcDQoJICAgIGVncmVwICdcKycgJHtob21lZGlyfS8u cmhvc3RzID4gL2Rldi9udWxsIDI+JjE7IHRoZW4NCgkJcHJpbnRmICIkdWlk OiArIGluIC5yaG9zdHMgZmlsZS5cbiINCglmaQ0KZG9uZSA+ICRPVVRQVVQN CmlmIFsgLXMgJE9VVFBVVCBdIDsgdGhlbg0KCXByaW50ZiAiXG5DaGVja2lu ZyAucmhvc3RzIGZpbGVzIHN5bnRheDpcbiINCgljYXQgJE9VVFBVVA0KZmkN Cg0KDQojDQojIENoZWNrIGhvbWUgZGlyZWN0b3JpZXMuICBEaXJlY3Rvcmll cyBzaG91bGQgbm90IGJlIG93bmVkIGJ5IHNvbWVvbmUgZWxzZQ0KIyBvciB3 cml0ZWFibGUuDQojDQphd2sgLUY6ICd7IHByaW50ICQxICIgIiAkNiB9JyAv ZXRjL3Bhc3N3ZCB8IFwNCndoaWxlIHJlYWQgdWlkIGhvbWVkaXI7IGRvDQoJ aWYgWyAtZCAke2hvbWVkaXJ9LyBdIDsgdGhlbg0KCQlmaWxlPWBscyAtbGRn VCAke2hvbWVkaXJ9YA0KCQlwcmludGYgIiR1aWQgJGZpbGVcbiINCglmaQ0K ZG9uZSB8DQphd2sgJyQxICE9ICQ0ICYmICQ0ICE9ICJyb290IiBcDQoJeyBw cmludCAidXNlciAiICQxICIgaG9tZSBkaXJlY3RvcnkgaXMgb3duZWQgYnkg IiAkNCB9DQogICAgICQyIH4gL14tLi4uLncvIFwNCgl7IHByaW50ICJ1c2Vy ICIgJDEgIiBob21lIGRpcmVjdG9yeSBpcyBncm91cCB3cml0ZWFibGUiIH0N CiAgICAgJDIgfiAvXi0uLi4uLi4udy8gXA0KCXsgcHJpbnQgInVzZXIgIiAk MSAiIGhvbWUgZGlyZWN0b3J5IGlzIG90aGVyIHdyaXRlYWJsZSIgfScgPiAk T1VUUFVUDQppZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4NCglwcmludGYgIlxu Q2hlY2tpbmcgaG9tZSBkaXJlY3RvcmllczpcbiINCgljYXQgJE9VVFBVVA0K ZmkNCg0KDQojDQojIEZpbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvd25lZCBi eSBzb21lb25lIGVsc2Ugb3IgcmVhZGFibGUuDQojDQpsaXN0PSIubmV0cmMg LnJob3N0cyINCmF3ayAtRjogJ3sgcHJpbnQgJDEgIiAiICQ2IH0nIC9ldGMv cGFzc3dkIHwgXA0Kd2hpbGUgcmVhZCB1aWQgaG9tZWRpcjsgZG8NCglmb3Ig ZiBpbiAkbGlzdCA7IGRvDQoJCWZpbGU9JHtob21lZGlyfS8ke2Z9DQoJCWlm IFsgLWYgJGZpbGUgXSA7IHRoZW4NCgkJCXByaW50ZiAiJHVpZCAkZiBgbHMg LWxkZ1QgJGZpbGVgXG4iDQoJCWZpDQoJZG9uZQ0KZG9uZSB8DQphd2sgJyQx ICE9ICQ1ICYmICQ1ICE9ICJyb290IiBcDQoJeyBwcmludCAidXNlciAiICQx ICIgIiAkMiAiIGZpbGUgaXMgb3duZWQgYnkgIiAkNSB9DQogICAgICQzIH4g L14tLi4uci8gXA0KCXsgcHJpbnQgInVzZXIgIiAkMSAiICIgJDIgIiBmaWxl IGlzIGdyb3VwIHJlYWRhYmxlIiB9DQogICAgICQzIH4gL14tLi4uLi4uci8g XA0KCXsgcHJpbnQgInVzZXIgIiAkMSAiICIgJDIgIiBmaWxlIGlzIG90aGVy IHJlYWRhYmxlIiB9DQogICAgICQzIH4gL14tLi4uLncvIFwNCgl7IHByaW50 ICJ1c2VyICIgJDEgIiAiICQyICIgZmlsZSBpcyBncm91cCB3cml0ZWFibGUi IH0NCiAgICAgJDMgfiAvXi0uLi4uLi4udy8gXA0KCXsgcHJpbnQgInVzZXIg IiAkMSAiICIgJDIgIiBmaWxlIGlzIG90aGVyIHdyaXRlYWJsZSIgfScgPiAk T1VUUFVUDQoNCg0KIw0KIyBGaWxlcyB0aGF0IHNob3VsZCBub3QgYmUgb3du ZWQgYnkgc29tZW9uZSBlbHNlIG9yIHdyaXRlYWJsZS4NCiMNCmxpc3Q9Ii5i YXNocmMgLmNzaHJjIC5lbWFjc3JjIC5leHJjIC5mb3J3YXJkIC5rbG9naW4g LmxvZ2luIC5sb2dvdXQgXA0KICAgICAgLnByb2ZpbGUgLnRjc2hyYyINCmF3 ayAtRjogJ3sgcHJpbnQgJDEgIiAiICQ2IH0nIC9ldGMvcGFzc3dkIHwgXA0K d2hpbGUgcmVhZCB1aWQgaG9tZWRpcjsgZG8NCglmb3IgZiBpbiAkbGlzdCA7 IGRvDQoJCWZpbGU9JHtob21lZGlyfS8ke2Z9DQoJCWlmIFsgLWYgJGZpbGUg XSA7IHRoZW4NCgkJCXByaW50ZiAiJHVpZCAkZiBgbHMgLWxkZ1QgJGZpbGVg XG4iDQoJCWZpDQoJZG9uZQ0KZG9uZSB8DQphd2sgJyQxICE9ICQ1ICYmICQ1 ICE9ICJyb290IiBcDQoJeyBwcmludCAidXNlciAiICQxICIgIiAkMiAiIGZp bGUgaXMgb3duZWQgYnkgIiAkNSB9DQogICAgICQzIH4gL14tLi4uLncvIFwN Cgl7IHByaW50ICJ1c2VyICIgJDEgIiAiICQyICIgZmlsZSBpcyBncm91cCB3 cml0ZWFibGUiIH0NCiAgICAgJDMgfiAvXi0uLi4uLi4udy8gXA0KCXsgcHJp bnQgInVzZXIgIiAkMSAiICIgJDIgIiBmaWxlIGlzIG90aGVyIHdyaXRlYWJs ZSIgfScgPj4gJE9VVFBVVA0KaWYgWyAtcyAkT1VUUFVUIF0gOyB0aGVuDQoJ cHJpbnRmICJcbkNoZWNraW5nIGRvdCBmaWxlczpcbiINCgljYXQgJE9VVFBV VA0KZmkNCg0KDQojDQojIE1haWxib3hlcyBzaG91bGQgYmUgb3duZWQgYnkg dXNlciBhbmQgdW5yZWFkYWJsZS4NCiMNCmxzIC1sIC92YXIvbWFpbCB8IHNl ZCAxZCB8IFwNCmF3ayAnJDMgIT0gJDkgJiYgJDkgIT0gIi4iJDMiLnBvcCJc DQoJeyBwcmludCAidXNlciAiICQ5ICIgbWFpbGJveCBpcyBvd25lZCBieSAi ICQzIH0NCiAgICAgJDEgIT0gIi1ydy0tLS0tLS0iIFwNCgl7IHByaW50ICJ1 c2VyICIgJDkgIiBtYWlsYm94IGlzICIgJDEgIiwgZ3JvdXAgIiAkNCB9JyA+ ICRPVVRQVVQNCmlmIFsgLXMgJE9VVFBVVCBdIDsgdGhlbg0KCXByaW50ZiAi XG5DaGVja2luZyBtYWlsYm94IG93bmVyc2hpcDpcbiINCgljYXQgJE9VVFBV VA0KZmkNCg0KDQojDQojIEZpbGUgc3lzdGVtcyBzaG91bGQgbm90IGJlIGds b2JhbGx5IGV4cG9ydGVkLg0KIw0KYXdrICd7DQoJcmVhZG9ubHkgPSAwOw0K CWZvciAoaSA9IDI7IGkgPD0gTkY7ICsraSkgew0KCQlpZiAoJGkgfiAvLXJv LykNCgkJCXJlYWRvbmx5ID0gMTsNCgkJZWxzZSBpZiAoJGkgIX4gL14tLykN CgkJCW5leHQ7DQoJfQ0KCWlmIChyZWFkb25seSkNCgkJcHJpbnQgIkZpbGUg c3lzdGVtICIgJDEgIiBnbG9iYWxseSBleHBvcnRlZCwgcmVhZC1vbmx5LiIN CgllbHNlDQoJCXByaW50ICJGaWxlIHN5c3RlbSAiICQxICIgZ2xvYmFsbHkg ZXhwb3J0ZWQsIHJlYWQtd3JpdGUuIg0KfScgPCAvZXRjL2V4cG9ydHMgPiAk T1VUUFVUDQppZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4NCglwcmludGYgIlxu Q2hlY2tpbmcgZm9yIGdsb2JhbGx5IGV4cG9ydGVkIGZpbGUgc3lzdGVtczpc biINCgljYXQgJE9VVFBVVA0KZmkNCg0KDQojDQojIERpc3BsYXkgYW55IGNo YW5nZXMgaW4gc2V0dWlkIGZpbGVzIGFuZCBkZXZpY2VzLg0KIw0KcHJpbnRm ICJcbkNoZWNraW5nIHNldHVpZCBmaWxlcyBhbmQgZGV2aWNlczpcbiINCihm aW5kIC8gISAtZnN0eXBlIGxvY2FsIC1hIC1wcnVuZSAtbyBcDQogICAgXCgg LXBlcm0gLXUrcyAtbyAtcGVybSAtZytzIC1vICEgLXR5cGUgZCAtYSAhIC10 eXBlIGYgLWEgISAtdHlwZSBsIC1hIFwNCiAgICAgICAhIC10eXBlIHMgXCkg fCBcDQpzb3J0IHwgc2VkIC1lICdzL14vbHMgLWxkZ1QgLycgfCBzaCA+ICRM SVNUKSAyPiAkT1VUUFVUDQoNCiMgRGlzcGxheSBhbnkgZXJyb3JzIHRoYXQg b2NjdXJyZWQgZHVyaW5nIHN5c3RlbSBmaWxlIHdhbGsuDQppZiBbIC1zICRP VVRQVVQgXSA7IHRoZW4NCglwcmludGYgIlNldHVpZC9kZXZpY2UgZmluZCBl cnJvcnM6XG4iDQoJY2F0ICRPVVRQVVQNCglwcmludGYgIlxuIg0KZmkNCg0K IyBEaXNwbGF5IGFueSBjaGFuZ2VzIGluIHRoZSBzZXR1aWQgZmlsZSBsaXN0 Lg0KZWdyZXAgLXYgJ15bYmNdJyAkTElTVCA+ICRUTVAxDQppZiBbIC1zICRU TVAxIF0gOyB0aGVuDQoJIyBDaGVjayB0byBtYWtlIHN1cmUgdXVkZWNvZGUg aXNuJ3Qgc2V0dWlkLg0KCWlmIGdyZXAgLXcgdXVkZWNvZGUgJFRNUDEgPiAv ZGV2L251bGwgOyB0aGVuDQoJCXByaW50ZiAiXG5VdWRlY29kZSBpcyBzZXR1 aWQuXG4iDQoJZmkNCg0KCUNVUj0vdmFyL2JhY2t1cHMvc2V0dWlkLmN1cnJl bnQNCglCQUNLPS92YXIvYmFja3Vwcy9zZXR1aWQuYmFja3VwDQoNCglpZiBb IC1zICRDVVIgXSA7IHRoZW4NCgkJaWYgY21wIC1zICRDVVIgJFRNUDEgOyB0 aGVuDQoJCQk6DQoJCWVsc2UNCgkJCT4gJFRNUDINCgkJCWpvaW4gLTExMCAt MjEwIC12MiAkQ1VSICRUTVAxID4gJE9VVFBVVA0KCQkJaWYgWyAtcyAkT1VU UFVUIF0gOyB0aGVuDQoJCQkJcHJpbnRmICJTZXR1aWQgYWRkaXRpb25zOlxu Ig0KCQkJCXRlZSAtYSAkVE1QMiA8ICRPVVRQVVQNCgkJCQlwcmludGYgIlxu Ig0KCQkJZmkNCg0KCQkJam9pbiAtMTEwIC0yMTAgLXYxICRDVVIgJFRNUDEg PiAkT1VUUFVUDQoJCQlpZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4NCgkJCQlw cmludGYgIlNldHVpZCBkZWxldGlvbnM6XG4iDQoJCQkJdGVlIC1hICRUTVAy IDwgJE9VVFBVVA0KCQkJCXByaW50ZiAiXG4iDQoJCQlmaQ0KDQoJCQlzb3J0 ICs5ICRUTVAyICRDVVIgJFRNUDEgfCBcDQoJCQkgICAgc2VkIC1lICdzL1sJ IF1bCSBdKi8gL2cnIHwgdW5pcSAtdSA+ICRPVVRQVVQNCgkJCWlmIFsgLXMg JE9VVFBVVCBdIDsgdGhlbg0KCQkJCXByaW50ZiAiU2V0dWlkIGNoYW5nZXM6 XG4iDQoJCQkJY29sdW1uIC10ICRPVVRQVVQNCgkJCQlwcmludGYgIlxuIg0K CQkJZmkNCg0KCQkJY3AgJENVUiAkQkFDSw0KCQkJY3AgJFRNUDEgJENVUg0K CQlmaQ0KCWVsc2UNCgkJcHJpbnRmICJTZXR1aWQgYWRkaXRpb25zOlxuIg0K CQljb2x1bW4gLXQgJFRNUDENCgkJcHJpbnRmICJcbiINCgkJY3AgJFRNUDEg JENVUg0KCWZpDQpmaQ0KDQoNCiMNCiMgQ2hlY2sgZm9yIGJsb2NrIGFuZCBj aGFyYWN0ZXIgZGlzayBkZXZpY2VzIHRoYXQgYXJlIHJlYWRhYmxlIG9yIHdy aXRlYWJsZQ0KIyBvciBub3Qgb3duZWQgYnkgcm9vdC5vcGVyYXRvci4NCiMN Cj4kVE1QMQ0KRElTS0xJU1Q9ImRrIGhkIGhrIGhwIGpiIGtyYSByYSByYiBy ZCBybCByeCByeiBzZCB1cCB3ZCINCmZvciBpIGluICRESVNLTElTVDsgZG8N CgllZ3JlcCAiXmIuKi8ke2l9WzAtOV1bMC05XSpbYS1oXSQiICAkTElTVCA+ PiAkVE1QMQ0KCWVncmVwICJeYy4qL3Ike2l9WzAtOV1bMC05XSpbYS1oXSQi ICAkTElTVCA+PiAkVE1QMQ0KZG9uZQ0KDQphd2sgJyQzICE9ICJyb290IiB8 fCAkNCAhPSAib3BlcmF0b3IiIHx8ICQxICF+IC8ucnctci0tLS0tLyBcDQoJ eyBwcmludGYoIkRpc2sgJXMgaXMgdXNlciAlcywgZ3JvdXAgJXMsIHBlcm1p c3Npb25zICVzLlxuIiwgXA0KCSAgICAkMTEsICQzLCAkNCwgJDEpOyB9JyA8 ICRUTVAxID4gJE9VVFBVVA0KaWYgWyAtcyAkT1VUUFVUIF0gOyB0aGVuDQoJ cHJpbnRmICJcbkNoZWNraW5nIGRpc2sgb3duZXJzaGlwIGFuZCBwZXJtaXNz aW9uczpcbiINCgljYXQgJE9VVFBVVA0KCXByaW50ZiAiXG4iDQpmaQ0KDQoN CiMNCiMgRGlzcGxheSBhbnkgY2hhbmdlcyBpbiB0aGUgZGV2aWNlIGZpbGUg bGlzdC4NCiMNCmVncmVwICdeW2JjXScgJExJU1QgfCBzb3J0ICsxMCA+ICRU TVAxDQppZiBbIC1zICRUTVAxIF0gOyB0aGVuDQoJQ1VSPS92YXIvYmFja3Vw cy9kZXZpY2UuY3VycmVudA0KCUJBQ0s9L3Zhci9iYWNrdXBzL2RldmljZS5i YWNrdXANCg0KCWlmIFsgLXMgJENVUiBdIDsgdGhlbg0KCQlpZiBjbXAgLXMg JENVUiAkVE1QMSA7IHRoZW4NCgkJCToNCgkJZWxzZQ0KCQkJPiAkVE1QMg0K CQkJam9pbiAtMTExIC0yMTEgLXYyICRDVVIgJFRNUDEgPiAkT1VUUFVUDQoJ CQlpZiBbIC1zICRPVVRQVVQgXSA7IHRoZW4NCgkJCQlwcmludGYgIkRldmlj ZSBhZGRpdGlvbnM6XG4iDQoJCQkJdGVlIC1hICRUTVAyIDwgJE9VVFBVVA0K CQkJCXByaW50ZiAiXG4iDQoJCQlmaQ0KDQoJCQlqb2luIC0xMTEgLTIxMSAt djEgJENVUiAkVE1QMSA+ICRPVVRQVVQNCgkJCWlmIFsgLXMgJE9VVFBVVCBd IDsgdGhlbg0KCQkJCXByaW50ZiAiRGV2aWNlIGRlbGV0aW9uczpcbiINCgkJ CQl0ZWUgLWEgJFRNUDIgPCAkT1VUUFVUDQoJCQkJcHJpbnRmICJcbiINCgkJ CWZpDQoNCgkJCSMgUmVwb3J0IGFueSBibG9jayBkZXZpY2UgY2hhbmdlLiAg SWdub3JlIGNoYXJhY3Rlcg0KCQkJIyBkZXZpY2VzLCBvbmx5IHRoZSBuYW1l IGlzIHNpZ25pZmljYW50Lg0KCQkJY2F0ICRUTVAyICRDVVIgJFRNUDEgfCBc DQoJCQlzZWQgLWUgJy9eYy9kJyB8IFwNCgkJCXNvcnQgKzEwIHwgXA0KCQkJ c2VkIC1lICdzL1sJIF1bCSBdKi8gL2cnIHwgXA0KCQkJdW5pcSAtdSA+ICRP VVRQVVQNCgkJCWlmIFsgLXMgJE9VVFBVVCBdIDsgdGhlbg0KCQkJCXByaW50 ZiAiQmxvY2sgZGV2aWNlIGNoYW5nZXM6XG4iDQoJCQkJY29sdW1uIC10ICRP VVRQVVQNCgkJCQlwcmludGYgIlxuIg0KCQkJZmkNCg0KCQkJY3AgJENVUiAk QkFDSw0KCQkJY3AgJFRNUDEgJENVUg0KCQlmaQ0KCWVsc2UNCgkJcHJpbnRm ICJEZXZpY2UgYWRkaXRpb25zOlxuIg0KCQljb2x1bW4gLXQgJFRNUDENCgkJ cHJpbnRmICJcbiINCgkJY3AgJFRNUDEgJENVUg0KCWZpDQpmaQ0KDQoNCiMN CiMgQ2hlY2sgc3BlY2lhbCBmaWxlcy4NCiMgQ2hlY2sgc3lzdGVtIGJpbmFy aWVzLg0KIw0KIyBDcmVhdGUgdGhlIG10cmVlIHRyZWUgc3BlY2lmaWNhdGlv bnMgdXNpbmc6DQojDQojCW10cmVlIC1jeCAtcERJUiAta2Nrc3VtLGdpZCxt b2RlLG5saW5rLHNpemUsbGluayx0aW1lLHVpZCA+IERJUi5zZWN1cmUNCiMJ Y2hvd24gcm9vdC53aGVlbCBESVIuU0VDVVJFDQojCWNobW9kIDYwMCBESVIu U0VDVVJFDQojDQojIE5vdGUsIHRoaXMgaXMgbm90IGNvbXBsZXRlIHByb3Rl Y3Rpb24gYWdhaW5zdCBUcm9qYW4gaG9yc2VkIGJpbmFyaWVzLCBhcw0KIyB0 aGUgaGFja2VyIGNhbiBtb2RpZnkgdGhlIHRyZWUgc3BlY2lmaWNhdGlvbiB0 byBtYXRjaCB0aGUgcmVwbGFjZWQgYmluYXJ5Lg0KIyBGb3IgZGV0YWlscyBv biByZWFsbHkgcHJvdGVjdGluZyB5b3Vyc2VsZiBhZ2FpbnN0IG1vZGlmaWVk IGJpbmFyaWVzLCBzZWUNCiMgdGhlIG10cmVlKDgpIG1hbnVhbCBwYWdlLg0K Iw0KaWYgY2QgL2V0Yy9tdHJlZTsgdGhlbg0KCW10cmVlIC1lIC1wIC8gLWYg L2V0Yy9tdHJlZS9zcGVjaWFsID4gJE9VVFBVVA0KCWlmIFsgLXMgJE9VVFBV VCBdIDsgdGhlbg0KCQlwcmludGYgIlxuQ2hlY2tpbmcgc3BlY2lhbCBmaWxl cyBhbmQgZGlyZWN0b3JpZXM6XG4iDQoJCWNhdCAkT1VUUFVUDQoJZmkNCg0K CT4gJE9VVFBVVA0KCWZvciBmaWxlIGluICouc2VjdXJlOyBkbw0KCQl0cmVl PWBzZWQgLW4gLWUgJzNzLy4qIC8vcCcgLWUgM3EgJGZpbGUgMj4vZGV2L251 bGxgDQoJCW10cmVlIC1mICRmaWxlIC1wICR0cmVlID4gJFRNUDEgMj4vZGV2 L251bGwNCgkJaWYgWyAtcyAkVE1QMSBdOyB0aGVuDQoJCQlwcmludGYgIlxu Q2hlY2tpbmcgJHRyZWU6XG4iID4+ICRPVVRQVVQNCgkJCWNhdCAkVE1QMSA+ PiAkT1VUUFVUDQoJCWZpDQoJZG9uZQ0KCWlmIFsgLXMgJE9VVFBVVCBdIDsg dGhlbg0KCQlwcmludGYgIlxuQ2hlY2tpbmcgc3lzdGVtIGJpbmFyaWVzOlxu Ig0KCQljYXQgJE9VVFBVVA0KCWZpDQpmaQ0KDQoNCiMgDQojIENoZWNrc3Vt IHN5c3RlbSBiaW5hcmllcyBhbmQgbG9vayBmb3IgZGlmZmVyZW5jZXMuICBB bHRob3VnaA0KIyBkaXNjcmVwYW5jaWVzIGZsYWdnZWQgaW4gdGhpcyBzZWN0 aW9uIG1heSBpbmRpY2F0ZSBhIHRyb2phbiBob3JzZQ0KIyBiaW5hcnksICpu byogZGlzY3JlcGFuY3kgZG9lcyAqbm90KiBtZWFuIHlvdSBhcmUgaW4gdGhl IGNsZWFyIQ0KIyBLZWVwIGEgY29weSBvZiB0aGUgY2hlY2tzdW1zIG9uIGEg c2VjdXJlLCByZW1vdGUgaG9zdCBmb3IgYmV0dGVyDQojIHByb3RlY3Rpb24u DQojDQoNCnJtICRUTVAxDQpmb3IgZGlyIGluIC9iaW4gL3NiaW4gL3Vzci9i aW4gL3Vzci9zYmluIC91c3IvbG9jYWwvYmluIC91c3IvWDExL2JpbiA7IGRv DQoJaWYgWyAtZCAkZGlyIF0gOyB0aGVuDQoJCWNkICRkaXINCgkJbHMgLTEg fCB4YXJncyBtZDUgPj4gJFRNUDENCglmaQ0KZG9uZQ0KDQpDVVI9Ii92YXIv YmFja3Vwcy9tZDUuY3VycmVudCINCkJBQ0s9Ii92YXIvYmFja3Vwcy9tZDUu YmFja3VwIg0KaWYgWyAtcyAkQ1VSIF0gOyB0aGVuDQoJZGlmZiAkQ1VSICRU TVAxID4gJE9VVFBVVA0KCWlmIFsgLXMgJE9VVFBVVCBdIDsgdGhlbg0KCXBy aW50ZiAiXG49PT09PT1cbk1ENSBkaWZmcyAoT0xEIDwgPiBORVcpXG49PT09 PT1cbiINCgkJY2F0ICRPVVRQVVQNCgkJY3AgLXAgJENVUiAkQkFDSw0KCQlj cCAtcCAkVE1QMSAkQ1VSDQoJCWNob3duIHJvb3Qud2hlZWwgJENVUiAkQkFD Sw0KCQljaG1vZCA2MDAgJENVUiAkQkFDSw0KCWZpDQplbHNlDQoJY3AgLXAg JFRNUDEgJENVUg0KCWNob3duIHJvb3Qud2hlZWwgJENVUg0KCWNobW9kIDYw MCAkQ1VSDQpmaQ0KDQoNCiMNCiMgTGlzdCBvZiBmaWxlcyB0aGF0IGdldCBi YWNrZWQgdXAgYW5kIGNoZWNrZWQgZm9yIGFueSBtb2RpZmljYXRpb25zLiAg RWFjaA0KIyBmaWxlIGlzIGV4cGVjdGVkIHRvIGhhdmUgdHdvIGJhY2t1cHMs IC92YXIvYmFja3Vwcy9maWxlLntjdXJyZW50LGJhY2t1cH0uDQojIEFueSBj aGFuZ2VzIGNhdXNlIHRoZSBmaWxlcyB0byByb3RhdGUuDQojDQppZiBbIC1z IC9ldGMvY2hhbmdlbGlzdCBdIDsgdGhlbg0KCWZvciBmaWxlIGluIGBjYXQg L2V0Yy9jaGFuZ2VsaXN0YDsgZG8NCgkJQ1VSPS92YXIvYmFja3Vwcy9gYmFz ZW5hbWUgJGZpbGVgLmN1cnJlbnQNCgkJQkFDSz0vdmFyL2JhY2t1cHMvYGJh c2VuYW1lICRmaWxlYC5iYWNrdXANCgkJaWYgWyAtcyAkZmlsZSBdOyB0aGVu DQoJCQlpZiBbIC1zICRDVVIgXSA7IHRoZW4NCgkJCQlkaWZmICRDVVIgJGZp bGUgPiAkT1VUUFVUDQoJCQkJaWYgWyAtcyAkT1VUUFVUIF0gOyB0aGVuDQoJ CXByaW50ZiAiXG49PT09PT1cbiVzIGRpZmZzIChPTEQgPCA+IE5FVylcbj09 PT09PVxuIiAkZmlsZQ0KCQkJCQljYXQgJE9VVFBVVA0KCQkJCQljcCAtcCAk Q1VSICRCQUNLDQoJCQkJCWNwIC1wICRmaWxlICRDVVINCgkJCQkJY2hvd24g cm9vdC53aGVlbCAkQ1VSICRCQUNLDQoJCQkJZmkNCgkJCWVsc2UNCgkJCQlj cCAtcCAkZmlsZSAkQ1VSDQoJCQkJY2hvd24gcm9vdC53aGVlbCAkQ1VSDQoJ CQlmaQ0KCQlmaQ0KCWRvbmUNCmZpDQo= --0-668466482-796679051=:1567--