[Pkg-Cyrus-imapd-Debian-devel] (fwd) Cyrus admin script

Henrique de Moraes Holschuh pkg-cyrus-imapd-debian-devel@lists.alioth.debian.org
Sat, 2 Jul 2005 02:50:13 -0300


--rS8CxjVDS/+yyDmU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I am finally getting my email in order, and found this one that might be
interesting... so I am forwarding it.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

--rS8CxjVDS/+yyDmU
Content-Type: message/rfc822
Content-Disposition: inline

Return-Path: <jv.castro@gadelek.com>
X-Original-To: hmh@khazad-dum.debian.net
Delivered-To: hmh@khazad-dum.debian.net
Received: from localhost (localhost.localdomain [127.0.0.1])
	by localhost.khazad-dum.debian.net (Postfix) with ESMTP id 09FC23C008
	for <hmh@khazad-dum.debian.net>; Tue, 14 Jun 2005 13:03:17 -0300 (BRT)
Received: from khazad-dum.debian.net ([127.0.0.1])
	by localhost (router-ima02 [127.0.0.1]) (amavisd-new, port 10024)
	with LMTP id 28940-01-3 for <hmh@khazad-dum.debian.net>;
	Tue, 14 Jun 2005 13:03:16 -0300 (BRT)
Received: from master.debian.org (master.debian.org [146.82.138.7])
	by khazad-dum.debian.net (Postfix) with ESMTP id BCB363C003
	for <hmh@khazad-dum.debian.net>; Tue, 14 Jun 2005 13:03:07 -0300 (BRT)
Received: from (zeus.local.gadelek.com) [212.145.81.194] 
	by master.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1DiEh2-0008UC-00; Tue, 14 Jun 2005 11:55:17 -0500
Received: from [192.168.0.6] (unknown [192.168.0.6])
	by zeus.local.gadelek.com (Postfix) with ESMTP id 92D631F75D
	for <hmh@debian.org>; Tue, 14 Jun 2005 18:53:16 +0200 (CEST)
Subject: Cyrus admin script
From: =?ISO-8859-1?Q?Jes=FAs?= Villaverde Castro <jv.castro@gadelek.com>
To: hmh@debian.org
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-WLPhp0V74L2cod7zlBfH"
Date: Tue, 14 Jun 2005 18:55:11 +0200
Message-Id: <1118768111.4021.23.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.2.2 
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at khazad-dum.debian.net


--=-WLPhp0V74L2cod7zlBfH
Content-Type: multipart/mixed; boundary="=-liiUPGRNJ64Zm6nqU/mL"


--=-liiUPGRNJ64Zm6nqU/mL
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hello,

	I made the atached script a couple of months ago, because it was very
tedious the way of creating mailboxes in cyrus, setting permissions,
sasl accounts, and adding these cyrus users to postfix users file to
check if the recipient exists when new mail arrives.
I would like that you take a look at the script just in case you
consider that it is useful for the package that you maintain.

The script is useful to add and remove users, sasl accounts, change
permissions, etc.

Thanks in advance four your time.

Greetings,

--=20
Jes=FAs Villaverde Castro <jv.castro@gadelek.com>

--=-liiUPGRNJ64Zm6nqU/mL
Content-Disposition: attachment; filename=imap.pl
Content-Type: application/x-perl; name=imap.pl
Content-Transfer-Encoding: base64

IyEvdXNyL2Jpbi9wZXJsCiMKIyBpbWFwYWRtaW4ucGwKIwojIFdyaXR0ZW4gYnkgSmVz+nMgVmls
bGF2ZXJkZSBDYXN0cm8gPGNvcnJlbyBBVCBqZXN1c3ZpbGxhdmVyZGUuY29tPgojIFZlcnNpb246
IDIwMDUtMDQtMjIKIwojIFdpdGggdGhpcyBzY3JpcHQgd2UgY2FuIGFkZCBhbmQgcmVtb3ZlIGlt
YXAgdXNlcnMgKHdpdGggb3Igd2l0aG91dCB0aGVpciBzYXNsIGFjY291bnQpLCBhbGxvdyB1c2Vy
cyB0byBhY2Nlc3Mgb3RoZXIncyBtYWlsYm94ZXMsCiMgYW5kIHNldCBxdW90YXMuCiMgRmluYWxs
eSwgaWYgd2Ugc2V0ICRkb19wb3N0Zml4PTEsIHRoZSBzY3JpcHQgd2lsbCBjcmVhdGUgYSBwb3N0
Zml4IHVzZXJzIGZpbGUgaW50byAkVVNFUlNfRklMRQojIFRoZSB1c2VycyBmaWxlIGlzIGludGVu
ZGVkIHRvIGxldCBwb3N0Zml4IGNoZWNrIGlmIHRoZSByZWNpcGllbnQgZXhpc3RzIHdoZW4gbmV3
IG1haWwgYXJyaXZlcwoKIyBOb3RlOiBUbyBjcmVhdGUgc2FzbCB1c2VycyB5b3UgbXVzdCBleGVj
dXRlIHRoaXMgc2NyaXB0IGFzIHJvb3Qgb24gdGhlIHNlcnZlci4KCgp1c2UgSU1BUDo6QWRtaW47
CnVzZSBGaWxlSGFuZGxlOwp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGY250bCAnOmZsb2NrJzsg
IyBpbXBvcnQgTE9DS18qIGNvbnN0YW50cwoKIyBNb2RpZnkgdGhlc2UgdmFyaWFibGVzIHRvIHlv
dXIgbmVlZHMKJFNFUlZFUj0ibG9jYWxob3N0IjsKJEFETUlOPSJjeXJ1cyI7CiRQQVNTV09SRD0i
Y3lydXNfYWRtaW5fcGFzc3dkIjsKJERFQlVHPTA7CiRWRVJCT1NFPTA7CiRVU0VSU19GSUxFID0g
Jy9ldGMvcG9zdGZpeC91c2Vycyc7CiRkb19wb3N0Zml4PTE7CiRkb21haW4gPSAiamVzdXN2aWxs
YXZlcmRlLmNvbSI7CgojIE90aGVyIHZhcmlhYmxlcwokQVJHUz0iIjsKCiMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFBhcnNlIGFyZ3VtZW50cwojLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCm15ICRVU0VSOwpt
eSAkcGFzc3dkPSIiOwkjIEluaXRpYWxpemVkIHRvIGtub3cgaWYgdGhlIHVzZXIgc3VwcGxpZXMg
YSBwYXNzd2Qgb3Igd2FudCdzIHRoZSBwcm9ncmFtIHRvIGFzayBmb3IgaXQKbXkgJHVzZXJzOwpt
eSAkcXVvdGE7Cgp3aGlsZSAoJF8gPSBzaGlmdCkgewoJaWYgKC9eLWgoZWxwKT8kLyl7CgkJdXNh
Z2UoKTsKCQlleGl0OwoJfSBlbHNpZiAoL14tbShlbnUpPyQvKSB7CgkJY29uZWN0YXIoKTsKCQlt
ZW51KCk7CgkJJGltYXAtPmNsb3NlOwoJCXNhbGlyKCk7Cgl9IGVsc2lmICgvXi1hKGRkKT8kLykg
ewoJCSRBUkdTID0gIiRBUkdTIC1hZGQiOwoJfSBlbHNpZiAoL14tZChlbCk/JC8pIHsKCQkkQVJH
UyA9ICIkQVJHUyAtZGVsIjsKCX0gZWxzaWYgKC9eLXUoc2VyKT86LykgewoJCSRBUkdTID0gIiRB
UkdTIC11c2VyIjsKCQkkXyA9fiBzLy11KHNlcik/Oi8vZzsKCQkkVVNFUiA9ICRfOwoJfSBlbHNp
ZiAoL14tc2FzbDovKSB7CgkJJEFSR1MgPSAiJEFSR1MgLXNhc2wiOwoJCSRfID1+IHMvLXNhc2w6
Ly9nOwoJCSRwYXNzd2QgPSAkXzsKCX0gZWxzaWYgKC9eLWFsbG93Oi8pIHsKCQkkQVJHUyA9ICIk
QVJHUyAtYWxsb3ciOwoJCSRfID1+IHMvLWFsbG93Oi8vZzsKCQkkdXNlcnMgPSAkXzsKCX0gZWxz
aWYgKC9eLWRpc2FsbG93Oi8pIHsKCQkkQVJHUyA9ICIkQVJHUyAtZGlzYWxsb3ciOwoJCSRfID1+
IHMvLWRpc2FsbG93Oi8vZzsKCQkkdXNlcnMgPSAkXzsKCX0gZWxzaWYgKC9eLXEodW90YSk/Lykg
ewoJCSRBUkdTID0gIiRBUkdTIC1xdW90YSI7CgkJJF8gPX4gcy8tcSh1b3RhKT86Ly9nOwoJCSRx
dW90YSA9ICRfOwoJCWlmICgkcXVvdGEgPX4gL14oXGQrKW1iPy9pKSAjSWYgcXVvdGEgc2l6ZSBp
cyBzcGVjaWZpZWQgaW4gTUIgKG0pCgkJCXsKCQkJJF8gPX4gcy9tYj8vL2c7CgkJCSRxdW90YSA9
ICRfICogMTAyNDsKCQkJJERFQlVHICYmIHByaW50ICJRdW90YTogJHF1b3RhXG4iOwoJCQl9Cgl9
IGVsc2UgewoJCXByaW50ICJVbmtub3duIHBhcmFtZXRlciBbJF9dXG4iOwoJCXVzYWdlKCk7CgkJ
ZXhpdDsKCX0KCSR0cmFzaD0iIjsKfQoKCmlmICghZGVmaW5lZCAoJHRyYXNoKSl7CSMgTm8gYXJn
dW1lbnRzIGFyZSBnaXZlbgoJdXNhZ2UoKTsKCWV4aXQ7IAoJfQoJCgpjb25lY3RhcigpOwoKaWYg
KCRERUJVRz09MSkgeyBwcmludCAiQXJndW1lbnRzOiAkQVJHU1xuIn0KCmlmICgkQVJHUyA9fiAv
LWFkZC8gJiYgJEFSR1MgPX4gLy1kZWwvKQoJewoJcHJpbnQgIllvdSBjYW4ndCBjcmVhdGUgYW5k
IGRlbGV0ZSBhIHVzZXIgYXQgdGhlIHNhbWUgdGltZSEhXG4iOwoJZXhpdDsKCX0KZWxzaWYgKCRB
UkdTID1+IC8tYWRkLykKCXsKCWFkZHVzZXIoJFVTRVIsJHBhc3N3ZCk7Cgl9CmVsc2lmICgkQVJH
UyA9fiAvLWRlbC8pCgl7CglzZXRhY2woJ2FsbG93JywnY3lydXMnKTsKCWRlbHVzZXIoJFVTRVIs
JHBhc3N3ZCk7Cgl9CmVsc2lmICgkQVJHUyA9fiAvLXNhc2wvICYmICRBUkdTID1+Ly11LykKCXsK
CWlmICgkcGFzc3dkIGVxICIiKQoJCXsKCQkkcGFzc3dkPXF1ZXJ5KCdFbnRlciBuZXcgcGFzc3dv
cmQ6ICcsJzEnKTsKCQlzYXNsKCdwYXNzd2QnLCRVU0VSLCRwYXNzd2QpOwoJCX0KCWVsc2lmICgk
cGFzc3dkIGVxICdkaXNhYmxlJykKCQl7CgkJc2FzbCgnZGVsZXRlJywkVVNFUik7CgkJfQoJZWxz
ZSB7CgkJc2FzbCgncGFzc3dkJywkVVNFUiwkcGFzc3dkKTsKCQl9Cgl9CgppZiAoJEFSR1MgPX4g
Ly1hbGxvdy8gJiYgJEFSR1MgPX4gLy11LykKCXsKCUBhcmcgPSAoJ2FsbG93JyxzcGxpdCAoLywr
LywkdXNlcnMpKTsJIyBXZSBwdXQgdXNlcnMgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbnRvIHRoZSBh
cnJheS4gRmlyc3QgaXRlbSBpcyB0aGUgYWN0aW9uIHRvIGJlIGRvbmUKCXNldGFjbChAYXJnKTsK
CX0KaWYgKCRBUkdTID1+IC8tZGlzYWxsb3cvICYmICRBUkdTID1+IC8tdS8pCgl7CglAYXJnID0g
KCdkaXNhbGxvdycsc3BsaXQgKC8sKy8sJHVzZXJzKSk7CSMgV2UgcHV0IHVzZXJzIHNlcGFyYXRl
ZCBieSBjb21tYXMgaW50byB0aGUgYXJyYXkuIEZpcnN0IGl0ZW0gaXMgdGhlIGFjdGlvbiB0byBi
ZSBkb25lCglzZXRhY2woQGFyZyk7Cgl9CmlmICgkQVJHUyA9fiAvLXF1b3RhLyAmJiAkQVJHUyA9
fiAvLXUvKQoJewoJc2V0cXVvdGEoInVzZXIuJFVTRVIiLCRxdW90YSk7Cgl9CQkKJGltYXAtPmNs
b3NlOwpleGl0OwoKc3ViIGNvbmVjdGFyCgl7CgkkaW1hcCA9IElNQVA6OkFkbWluLT5uZXcoCgkJ
CSdTZXJ2ZXInPT4kU0VSVkVSLAoJCQknTG9naW4nPT4kQURNSU4sCgkJCSdQYXNzd29yZCc9PiRQ
QVNTV09SRAoJCQkpOwoJZGVmaW5lZCAoJGltYXAtPmxpc3QoIioiKSkgfHwgc2FsaXIgKC0xKTsJ
IyBEaWRuJ3QgZmluZCBhbnkgb3RoZXIgd2F5IHRvIGNoZWNrIGlmIEkgd2FzIGNvbm5lY3RlZCB0
byBpbWFwIHNlcnZlcgoJfQoJCnN1YiBsaXN0X3VzZXJzCXsKCUB1c3VhcmlvcyA9ICRpbWFwLT5s
aXN0KCJ1c2VyLioiKTsKCW9wZW4gKExJU1QsICI+L3RtcC9saXN0Iik7Cglmb3JlYWNoIChAdXN1
YXJpb3MpIAoJCXsgCgkJJF8gPX4gcy91c2VyXC4vL2c7CgkJaWYgKG5vdCAkXyA9fiAvXC4vKQoJ
CQl7CgkJCXByaW50IExJU1QgIiRfXG4iOwoJCQl9CgkJfQoJcHJpbnQgTElTVCAiLS1FT0YtLVxu
IjsKCXByaW50IExJU1QgIlByZXNzICdxJyB0byBleGl0XG4iOwoJY2xvc2UgKExJU1QpOwoJc3lz
dGVtICgibGVzcyAvdG1wL2xpc3QiKTsKCX0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGNyZWF0ZSBtYWlsYm94ZXMgYW5kIHNhc2wgdXNl
cnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgYWRkdXNlcgl7CgkJCW15
ICR1c2VyID0gc2hpZnQ7CgkJCW15ICRwYXNzd2QgPSBzaGlmdDsKCQkJaWYgKCRBUkdTICF+IC8t
dS8pCgkJCQl7CgkJCQkkdXNlcj1xdWVyeSAoJ0VudGVyIG5ldyB1c2VyXCdzIGxvZ2luOiAnKTsK
CQkJCX0KCQkJIyBEZWZpbmUgb25lIHZhcmlhYmxlIGZvciBlYWNoIGZvbGRlcgoJCQkkaW5ib3gg
PSAidXNlci4kdXNlciI7CgkJCSRkcmFmdHMgPSAidXNlci4kdXNlclwuRHJhZnRzIjsKCQkJJHNl
bnQgPSAidXNlci4kdXNlclwuU2VudCI7CgkJCSR0cmFzaCA9ICJ1c2VyLiR1c2VyXC5UcmFzaCI7
CgkJCSMgQ3JlYXRlIG1haWxib3hlcyB1c2luZyBsYXN0IHZhcmlhYmxlcwoJCQkkZXJyb3IgPSAk
aW1hcC0+Y3JlYXRlKCRpbmJveCk7CgkJCWlmICgkZXJyb3IgIT0gMCkgewkJCSMgSWYgdGhlcmUn
cyBhbiBlcnJvciB3aGlsZSBjcmVhdGluZyBtYWlsYm94CgkJCQkJCWlmICgkaW1hcC0+eydFcnJv
cid9ID1+IC9hbHJlYWR5XCBleGlzdHMvKQkjIEFuZCBlcnJvcmlzIGJlY2F1c2UgdGhlIHVzZXIg
YWxyZWFkeSBleGlzdHMuLi4KCQkJCQkJCXsKCQkJCQkJCXByaW50ICJFcnJvcjogVXNlciBhbHJl
YWR5IGV4aXN0c1xuIjsJICMgV2Ugbm90aWZ5IHRoYXQKCQkJCQkJCX0KCQkJCQkJZWxzZQkJIyBP
dGhlcndpc2Ugd2UgcHV0IHRoZSBlcnJvciBhcyBpbWFwIHNlcnZlciB0ZWxscyBpdC4KCQkJCQkJ
CXsKCQkJCQkJCXByaW50ICIkaW1hcC0+eydFcnJvcid9XG4iOwkKCQkJCQkJCX0KICAgICAgICAg
CQkJCQl9CgkJCWVsc2UJCQkjIElmIHRoZXJlJ3Mgbm8gZXJyb3IsIHVzZXIgbWFpbGJveGVzIGFy
ZSBjcmVhdGVkCgkJCQl7CgkJCQkkVkVSQk9TRSAmJiBwcmludCAiQ3JlYXRpbmcgSW5ib3ggZm9y
ICR1c2VyXG4iOwoJCQkJJFZFUkJPU0UgJiYgcHJpbnQgIkNyZWF0aW5nICRkcmFmdHNcbiI7CgkJ
CQkkaW1hcC0+Y3JlYXRlKCRkcmFmdHMpOwoJCQkJJFZFUkJPU0UgJiYgcHJpbnQgIkNyZWF0aW5n
ICRzZW50XG4iOwoJCQkJJGltYXAtPmNyZWF0ZSgkc2VudCk7CgkJCQkkVkVSQk9TRSAmJiBwcmlu
dCAiQ3JlYXRpbmcgJHRyYXNoXG4iOwoJCQkJJGltYXAtPmNyZWF0ZSgkdHJhc2gpOwoJCQkJIyBT
ZXQgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlc2UgbWFpbGJveGVzIHdpdGggdXNlciBjeXJ1cwoJ
CQkJc2V0YWNsKCdhbGxvdycsJ2N5cnVzJyk7CgkJCQl9CgkJCWlmICgkQVJHUyA9fiAvLXNhc2wv
ICYmICRwYXNzd2QgbmUgJ2Rpc2FibGUnKQkjIElmIGEgdmFsaWQgcGFzc3dvcmQgaXMgcGFzc2Vk
IGFzIGFuIGFyZ3VtZW50CgkJCQl7CgkJCQlzYXNsICgnYWRkJywkdXNlciwkcGFzc3dkKTsKCQkJ
CX0KCQkJZWxzaWYgKCRwYXNzd2QgZXEgJ2Rpc2FibGUnKQoJCQkJewoJCQkJcHJpbnQgIk5vdCBj
cmVhdGluZyBzYXNsIGFjY291bnQgZm9yICR1c2VyXG4iOwoJCQkJc2xlZXAgMTsKCQkJCX0KCQkJ
ZWxzZQoJCQkJewoJCQkJbXkgJHBlcm1pdF9sb2dpbj0iIjsJIyBEZWZpbmUgdmFyaWFibGUgYmVm
b3JlIGxvb3AsIGJlY2F1c2UgaWYgd2UgZG8gbm90LCB0aGUgdmFyaWFibGUgZXhpc3RzIG9ubHkg
aW50byB0aGUgbG9vcAoJCQkJZG8KCQkJCXsKCQkJCSRwZXJtaXRfbG9naW4gPSBxdWVyeSAoJ0Ny
ZWF0ZSBzYXNsIGFjY291bnQ/ICh5L24pJyk7CgkJCQkJaWYgKCRwZXJtaXRfbG9naW4gPX4gL155
JC8pIAoJCQkJCQl7CgkJCQkJCW15ICRxdWVzdGlvbiA9ICJFbnRlciBwYXNzd29yZCBmb3IgJHVz
ZXIgOiI7CgkJCQkJCW15ICRwYXNzd2QgPSBxdWVyeSAoJHF1ZXN0aW9uLCcxJyk7CgkJCQkJCXNh
c2wgKCdhZGQnLCR1c2VyLCRwYXNzd2QpOwoJCQkJCQl9CgkJCQkJZWxzaWYgKCRwZXJtaXRfbG9n
aW4gPX4gL15uJC8pCgkJCQkJCXsKCQkJCQkJcHJpbnQgIk5vdCBjcmVhdGluZyBzYXNsIGFjY291
bnQgZm9yICR1c2VyXG4iOwoJCQkJCQlzbGVlcCAxOwoJCQkJCQl9CgkJCQkJZWxzZQoJCQkJCQl7
CgkJCQkJCXByaW50ICJVbmtub3duIG9wdGlvbjogJHBlcm1pdF9sb2dpblxuIgoJCQkJCQl9CgkJ
CQl9dW50aWwgKCRwZXJtaXRfbG9naW4gPX4gL155JC8gfHwgJHBlcm1pdF9sb2dpbiA9fiAvXm4k
Lyk7CgkJCQl9CgkJCW15ICRsaW5lID0gIiR1c2VyXEAkZG9tYWluXHRPSyI7CgkJCWlmICgkZG9f
cG9zdGZpeCkKCQkJCXsKCQkJCWVkaXRGaWxlKCRVU0VSU19GSUxFLCAnY3lydXMtdXNlcnMnLCAk
bGluZSk7CgkJCQlzeXN0ZW0oInBvc3RtYXAgJFVTRVJTX0ZJTEUiKTsKCQkJCX0KCQkJfQoKIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmVtb3ZlIG1h
aWxib3hlcyBhbmQgc2FzbCB1c2VycwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBk
ZWx1c2VyCXsKCQkJbXkgJHVzZXIgPSBzaGlmdDsKCQkJbXkgJHBhc3N3ZCA9IHNoaWZ0OwoJCQlp
ZiAoJEFSR1MgIX4gLy11LykKCQkJCXsKCQkJCSR1c2VyPXF1ZXJ5ICgnRW50ZXIgdGhlIHVzZXIg
bG9naW4geW91IHdhbnQgdG8gcmVtb3ZlOiAnKTsKCQkJCX0KCQkJJGVycm9yID0gJGltYXAtPmhf
ZGVsZXRlKCJ1c2VyLiR1c2VyIik7CgkJCWlmICgkZXJyb3IgIT0gMCkgewkJCSMgSWYgYW55IGVy
cm9yIG9jY3VycyB3aGlsZSBkZWxldGluZyB1c2VyCgkJCQkJCWlmICgkaW1hcC0+eydFcnJvcid9
ID1+IC9kb2VzXCBub3RcIGV4aXN0LykJIyBBbmR0aGUgZXJyb3IgaXMgYmVjYXVzZSB1c2VyIGRv
ZXNuJ3QgZXhpc3QKCQkJCQkJCXsKCQkJCQkJCXByaW50ICJFcnJvcjogVXNlciBub3QgZm91bmRc
biIKCQkJCQkJCX0KCQkJCQkJZWxzZQkJIyBPdGhlcndpc2Ugd2UgcHV0IHRoZSBlcnJvciBhcyBp
bWFwIHNlcnZlciByZXR1cm5zIHRvIHVzCgkJCQkJCQl7CgkJCQkJCQlwcmludCAiJGltYXAtPnsn
RXJyb3InfVxuIjsJCgkJCQkJCQl9CiAgICAgICAgIAkJCQkJfQoJCQllbHNlCgkJCQl7CgkJCQkk
VkVSQk9TRSAmJiBwcmludCAiUmVtb3ZpbmcgbWFpbGJveCAkdXNlciB5IGFuZCBhbGwgc3ViZm9s
ZGVyc1xuIjsKCQkJCX0KCQkJaWYgKCRBUkdTID1+IC8tc2FzbC8gJiYgJHBhc3N3ZCBlcSAnZGlz
YWJsZScpCSNTaSBsZSBwYXNhbW9zIGNvbW8gYXJndW1lbnRvICdkaXNhYmxlJwoJCQkJewoJCQkJ
c2FzbCAoJ2RlbGV0ZScsJHVzZXIpOwoJCQkJfQoJCQllbHNlCgkJCQl7CgkJCQlteSAkZGVsZV9s
b2dpbiA9ICIiOwoJCQkJZG8KCQkJCXsKCQkJCSRkZWxlX2xvZ2luID0gcXVlcnkgKCdSZW1vdmUg
c2FzbCBhY2NvdW50PyAoeS9uKScpOwoJCQkJaWYgKCRkZWxlX2xvZ2luID1+IC9eeSQvKSAKCQkJ
CQl7CgkJCQkJc2FzbCAoJ2RlbGV0ZScsJHVzZXIpOwoJCQkJCX0KCQkJCWVsc2lmICgkZGVsZV9s
b2dpbiA9fiAvXm4kLykKCQkJCQl7CgkJCQkJcHJpbnQgIlNhc2wgYWNjb3VudCBmb3IgJHVzZXIg
bm90IHJlbW92ZWRcbiI7CgkJCQkJc2xlZXAgMTsKCQkJCQl9CgkJCQllbHNlCgkJCQkJewoJCQkJ
CXByaW50ICJVbmtub3duIG9wdGlvbjogJGRlbGVfbG9naW5cbiIKCQkJCQl9CgkJCQl9dW50aWwg
KCRkZWxlX2xvZ2luID1+IC9eeSQvIHx8ICRkZWxlX2xvZ2luID1+IC9ebiQvKTsKCQkJCX0KCQkJ
aWYgKCRkb19wb3N0Zml4KQoJCQkJewoJCQkJZWRpdEZpbGUoJFVTRVJTX0ZJTEUsICIkdXNlclxA
JGRvbWFpbiIsICdkZWwnKTsKCQkJCXN5c3RlbSgicG9zdG1hcCAkVVNFUlNfRklMRSIpOwoJCQkJ
fQoJCQl9CgkJCQoJCQkKc3ViIG1lbnUKCXsKCWRvCgkJewoJCXN5c3RlbSgiY2xlYXIiKTsKCQlw
cmludCA8PF9FT0ZfOwoJCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
CQkqKioqKiAgQ3lydXMgSU1BUCBBZG1pbmlzdHJhdGlvbiAgICoqKioqCgkJKioqKiogIFNlbGVj
dCBvcHRpb24gICAgICAgICAgICAgICAqKioqKgoJCSoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKCQkxLi0gQWRkIHVzZXIKCQkyLi0gUmVtb3ZlIHVzZXIKCQkzLi0gTGlz
dCB1c2VycwoJCTAuLSBFeGl0CgkJT3B0aW9uOgpfRU9GXwoJCgkJJF8gPSA8U1RESU4+OwoJCWNo
b21wOwoJCXByaW50ICJcbiI7CgkJCgkJaWYgKC9eMS8pCQoJCXsKCQlhZGR1c2VyKCk7CgkJfQoJ
CWVsc2lmICgvXjIvKQkKCQl7CgkJZGVsdXNlcigpOwoJCX0KCQllbHNpZiAoL14zLykJCgkJewoJ
CWxpc3RfdXNlcnMoKTsKCQl9OwoJCQkKCQl9IHdoaWxlICgkXyBuZSAwKTsJIyBOb3QgRXF1YWws
IG5lCgl9CgkKc3ViIHVzYWdlCgl7CglwcmludCA8PF9FT0ZfOwpVc2FnZTogJDAgW29wdGlvbnNd
CgkKT3B0aW9uczoKCS1tW2VudV0JCQkJU3RhcnQgaW4gbWVudSBtb2RlCgktaFtlbHBdCQkJCVBy
aW50IHRoaXMgc2hvcnQgaGVscAoJLWFbZGRdCQkJCUFkZCBuZXcgVXNlcgoJLWRbZWxdCQkJCVJl
bW92ZSB1c2VyCgktdVtzZXJdOgkJCVNwZWNpZnkgdXNlciBuYW1lCgktc2FzbDoJCQkJU3BlY2lm
eSB1c2VyIHBhc3N3ZC4gVGhpcyBvcHRpb24gYWRkcyB1c2VyIAoJCQkJCXRvIHNhc2wgZGF0YWJh
c2UuIFVzZSB0aGlzIHVubGVzcyB5b3Ugd2FudCAKCQkJCQlhbiBhY2NvdW50ICB3aXRob3V0IGxv
Z2luIGFjY2VzcyB0byB0aGUKCQkJCQlpbWFwIHNlcnZlci4gU3BlY2lmeSBzYXNsPWRpc2FibGUK
CQkJCQl0byBkaXNhYmxlIHNhc2wgYWNjb3VudAoJLXFbdW90YV06cXVvdGEJCQlTcGVjaWZ5IHVz
ZXIgcXVvdGEgaW4gYnl0ZXMgb3IgaW4gbWIuICJub25lIiB0byBkaXNhYmxlIHF1b3RhLiBFLmc6
IC1xOjEwbQoJLWFsbG93OgkJCQlMaXN0IG9mIHVzZXJzIHNlcGFyYXRlZCBieSBjb21tYXMgYWxs
b3dlZCB0bwoJCQkJCXNlZSAidXNlciIgbWFpbGJveGVzCgktZGlzYWxsb3c6CQkJCUxpc3Qgb2Yg
dXNlcnMgc2VwYXJhdGVkIGJ5IGNvbW1hcyBkaXNhbGxvd2VkIHRvCgkJCQkJc2VlICJ1c2VyIiBt
YWlsYm94ZXMKCUV4YW1wbGVzOgoJCSQwIC1hIC11OmN5cnVzIC1zYXNsOmN5cnVzcGFzcwkjIENy
ZWF0ZSBjeXJ1cyB1c2VyIHdpdGggY3lydXNwYXNzIHBhc3N3b3JkCgkJJDAgLWQgLXU6cGVwZSAt
c2FzbDpkaXNhYmxlCSMgRGVsZXRlIHVzZXIgcGVwZSBhbmQgZGlzYWJsZSBoaXMgc2FzbCBhY2Nv
dW50CgkJJDAgLXU6cGVwZSAtc2FzbDpkaXNhYmxlCQkjIERpc2FibGUgcGVwZSdzIHNhc2wgYWNj
b3VudAoJCSQwIC11OnBlcGUgLXNhc2w6CQkjIENyZWF0ZSBwZXBlJ3Mgc2FzbCBhY2NvdW50IChU
aGUgc2NyaXB0IHdpbGwgcHJvbXB0IGZvciBwYXNzd2QuIE5vdGUgdGhlIGNvbG9ucyBhcmUgcHJl
c2VudCkKCQkkMCAtdTpwZXBlIC1hbGxvdzpqZXN1cyxqdWFuCSMgQWxsb3cgSmVzdXMgYW5kIEp1
YW4gZnVsbCBhY2Nlc3MgdG8gcGVwZSdzIG1haWxib3hlcwoJCQpDeXJ1cyBpbWFwIGFuZCBQb3N0
Zml4IG1hbmFnZSBzY3JpcHQKQ29udGFjdCBhdXRob3Igb24gY29ycmVvIEFUIGplc3VzdmlsbGF2
ZXJkZS5jb20KCl9FT0ZfCn0KCnN1YiBzYXNsCgl7CglteSAoJGFjdGlvbiwkdXNlciwkcGFzc3dk
KSA9IEBfOwoJaWYgKCRhY3Rpb24gPX4gL15hZGQkLykKCQl7CgkJJFZFUkJPU0UgJiYgcHJpbnQg
IkFkZGluZyBzYXNsIHVzZXIgJHVzZXJcbiI7CgkJbXkgJGZoID0gRmlsZUhhbmRsZS0+bmV3OwoJ
CW9wZW4oJGZoLCAifHNhc2xwYXNzd2QyIC1wICR1c2VyIikgfHwgc2FsaXIoJ0Vycm9yIHdoaWxl
IGNyZWF0aW5nIHVzZXIgd2l0aCBzYXNscGFzc3dkMi4gQXJlIHlvdSByb290PycpOwoJCXByaW50
ICRmaCAiJHBhc3N3ZFxuIjsKCQljbG9zZSgkZmgpOwoJCX0KCWVsc2lmICgkYWN0aW9uID1+IC9e
ZGVsZXRlJC8pCgkJewoJCSRWRVJCT1NFICYmIHByaW50ICJSZW1vdmluZyBzYXNsIHVzZXIgJHVz
ZXJcbiI7CgkJbXkgJGZoID0gRmlsZUhhbmRsZS0+bmV3OwoJCW9wZW4oJGZoLCAifHNhc2xwYXNz
d2QyIC1kICR1c2VyIikgfHwgc2FsaXIgKCdFcnJvciByZW1vdmluZyB1c2VyIHdpdGggc2FzbHBh
c3N3ZDIuIEFyZSB5b3Ugcm9vdD8nKTsKCQljbG9zZSAoJGZoKTsKCQl9CgllbHNpZiAoJGFjdGlv
biA9fiAvXnBhc3N3ZCQvKQoJCXsKCQlwcmludCAiQ3JlYXRpbmcvbW9kaWZ5aW5nIHNhc2wgcGFz
c3dvcmQgZm9yICR1c2VyXG4iOwoJCW15ICRmaCA9IEZpbGVIYW5kbGUtPm5ldzsKCQlvcGVuKCRm
aCwgInxzYXNscGFzc3dkMiAtcCAkdXNlciIpIHx8IHNhbGlyKCdFcnJvciBpbiBzYXNscGFzc3dk
Mi4gQXJlIHlvdSByb290PycpOwoJCXByaW50ICRmaCAiJHBhc3N3ZFxuIjsKCQljbG9zZSgkZmgp
OwoJCX0KCX0KCnN1YiBzZXRhY2wKCXsKCW15ICRhY3Rpb24gPSBzaGlmdDsKCW15IEB1c2VycyA9
IEBfOwoJbXkgQGZvbGRlcnMgPSAkaW1hcC0+bGlzdCgidXNlci4kVVNFUioiKTsKCWlmICgkYWN0
aW9uIGVxICJhbGxvdyIpCgkJewoJCSRERUJVRyAmJiBwcmludCAiXG5BbGxvd2luZzogQHVzZXJz
IHRvIGFjY2VzcyAkVVNFUiBNYWlsYm94ZXM6XG5AZm9sZGVyc1xuXG4iOwoJCXdoaWxlICgkdXNl
ciA9IHNoaWZ0IEB1c2VycykgCgkJCXsKCQkJd2hpbGUgKCRmb2xkZXIgPSBzaGlmdCBAZm9sZGVy
cykKCQkJCXsKCQkJCSRWRVJCT1NFICYmIHByaW50ICJBbG93aW5nIHVzZXIgJHVzZXIgdG8gYWNj
ZXNzIG1haWxib3ggJGZvbGRlclxuIjsKCQkJCSRpbWFwLT5zZXRfYWNsKCRmb2xkZXIsICR1c2Vy
LCAibHJzd2lwZGNhIik7CgkJCQl9CgkJCX0KCQl9CgllbHNpZiAoJGFjdGlvbiBlcSAiZGlzYWxs
b3ciKQoJCXsKCQkkREVCVUcgJiYgcHJpbnQgIlxuRGlzYWxsb3dpbmc6IEB1c2VycyB0byBhY2Nl
c3MgJFVTRVIgTWFpbGJveGVzOlxuQGZvbGRlcnNcblxuIjsKCQl3aGlsZSAoJHVzZXIgPSBzaGlm
dCBAdXNlcnMpIAoJCQl7CgkJCXdoaWxlICgkZm9sZGVyID0gc2hpZnQgQGZvbGRlcnMpCgkJCQl7
CgkJCQkkVkVSQk9TRSAmJiBwcmludCAiRGlzYWxvd2luZyB1c2VyICR1c2VyIHRvIGFjY2VzcyBt
YWlsYm94ICRmb2xkZXJcbiI7CgkJCQkkaW1hcC0+c2V0X2FjbCgkZm9sZGVyLCAkdXNlciwgIiIp
OwoJCQkJfQoJCQl9CgkJfQoJfQoKc3ViIHF1ZXJ5CnsKCW15ICgkcHJvbXB0LCRlY2hvX29mZikg
PSBAXzsKCXByaW50ICIke3Byb21wdH0gIjsKCW15ICRhbnN3ZXI7CglkbyB7CgkJaWYgKCRlY2hv
X29mZikgeyBzeXN0ZW0oInN0dHkgLWVjaG8iKTsgfQoJCWNob21wKCRhbnN3ZXIgPSA8U1RESU4+
KTsKCQlpZiAoJGVjaG9fb2ZmKSB7IHN5c3RlbSgic3R0eSBlY2hvIik7IH0KCQlpZiAoISRhbnN3
ZXIpIHsgcHJpbnQgIlxuWW91IG11c3Qgc3VwcGx5IGFuIGFuc3dlcjogIjsgfQoJfSB3aGlsZSgh
bGVuZ3RoKCRhbnN3ZXIpKTsKCXByaW50ICJcbiI7CgkkYW5zd2VyOwp9CQoJCnN1YiBzYWxpcgoJ
ewoJJF8gPSBzaGlmdDsKCWlmICgkXyA9PSAtMSkKCQl7CgkJcHJpbnQgIkNvdWxkbicgY29ubmVj
dCB0byAkU0VSVkVSLiBDaGVjayBjb25maWd1cmF0aW9uIGFuZCB0aGF0IHRoZSBzZXJ2ZXIgaXMg
cnVubmluZ1xuIjsKCQl9CgllbHNlCgkJewoJCXByaW50ICIkX1xuIjsKCQl9Cgl1bmxpbmsgKCIv
dG1wL2xpc3QiKTsKCWV4aXQ7Cgl9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBlZGl0RmlsZSgpCiMKIyBpbiBvcmRl
ciB0byB3b3JrIHdpdGggZmxvY2soKSwgdGhlIGNvbnRlbnRzIG11c3QgYmUga2VwdCBpbgojIG1l
bW9yeSBhbmQgd3JpdHRlbiBiYWNrIHRvIGlucHV0IGZpbGUuCiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgZWRpdEZp
bGUKCXsKCW15ICgkZmlsZSwgJHRhZywgJGxpbmUpID0gQF87CSMgSWYgKCRsaW5lIGVxICdkZWwn
KSBkZWxldGVzIHRoZSBsaW5lIGNvbnRhaW5pbmcgJHRhZyAoVXNlZCB0byByZW1vdmUgdXNlcnMp
CgoJbXkgKEBjb250ZW50cyk7CgoJJFZFUkJPU0UgJiYgcHJpbnQgIkVkaXRpbmcgWyRmaWxlXVxu
IjsKCglteSAkZmggPSBGaWxlSGFuZGxlLT5uZXcoIis8JGZpbGUiKTsKCWRlZmluZWQoJGZoKSB8
fCBkaWUgIkNvdWxkbid0IG9wZW4gJGZpbGUgZm9yIHJlYWRpbmciOwoJbG9ja0ZpbGUoJGZoKTsK
CglteSAkc3RhdGUgPSAnbG9va2luZyc7Cgl3aGlsZSg8JGZoPikgCgkJewoJCWlmICgkc3RhdGUg
ZXEgJ2xvb2tpbmcnKSAKCQkJewoJCQkkVkVSQk9TRSAmJiBwcmludCAiTG9va2luZyBmb3IgdGFn
Li4uXG4iOwoJCQlpZiAoLyR0YWcvKSAKCQkJCXsJCgkJCQkkVkVSQk9TRSAmJiBwcmludCAiRm91
bmQgVEFHOiAkdGFnXG4iOwoJCQkJaWYgKCRsaW5lIG5lICdkZWwnKQoJCQkJCXsKCQkJCQlwdXNo
KEBjb250ZW50cywgJF8pOwkjUHJpbnQgdGFnIGxpbmUgaW50byBAY29udGVudHMKCQkJCQlwdXNo
KEBjb250ZW50cywgIiRsaW5lXG4iKTsJI1ByaW50IHVzZXIncyBsaW5lIGludG8gQGNvbnRlbnRz
CgkJCQkJJHN0YXRlID0gJ2NvcHlyZXN0JzsKCQkJCQl9CgkJCQllbHNlCgkJCQkJewoJCQkJCXNo
aWZ0OwkjUHJpbnQgdGFnIGxpbmUgaW50byBAY29udGVudHMKCQkJCQkkc3RhdGUgPSAnY29weXJl
c3QnOwoJCQkJCX0KCQkJCX0KCQkJZWxzZQoJCQkJewoJCQkJcHVzaChAY29udGVudHMsICRfKTsJ
I0p1bXAgdG8gbmV4dCBsaW5lCgkJCQl9CgkJCX0KCQkgZWxzZSAKCQkgCXsKCQkJIyBzdGF0ZSA9
IGNvcHlyZXN0CgkJCXB1c2goQGNvbnRlbnRzLCAkXyk7CgkJCX0KCQl9CgoJaWYgKCRzdGF0ZSBl
cSAnbG9va2luZycpIHsKCQlkaWUgIlRhZyBbJHRhZ10gbm90IGZvdW5kIGluIGZpbGUgWyRmaWxl
XSI7Cgl9CgoJIyByZXdpbmQgZmlsZS1wb2ludGVyCglzZWVrKCRmaCwgMCwgMCkgfHwgZGllICJz
ZWVrIjsKCXRydW5jYXRlKCRmaCwgMCkgfHwgZGllICJ0cnVuY2F0ZSI7CgoJIyB3cml0ZSBuZXcg
Y29udGVudHMKCWZvcmVhY2ggKEBjb250ZW50cykgCgkJewoJCXByaW50ICRmaCAkXzsKCQl9CgoJ
dW5sb2NrRmlsZSgkZmgpOwoJJGZoLT5jbG9zZTsKCX0KCnN1YiB1bmxvY2tGaWxlCgl7CglteSAk
ZmggPSBzaGlmdDsKCQogICAgCSRERUJVRyAmJiBwcmludCAidW5sb2NraW5nIGZpbGVcbiI7CiAg
ICAJZmxvY2soJGZoLCBMT0NLX1VOKSB8fCBkaWUgImZsb2NrIGxvY2tfdW4gKCQhKSI7Cgl9Cgpz
dWIgbG9ja0ZpbGUKCXsKCW15ICRmaCA9IHNoaWZ0OwoKCSRERUJVRyAmJiBwcmludCAibG9ja2lu
ZyBmaWxlXG4iOwoJZmxvY2soJGZoLCBMT0NLX0VYKSB8fCBkaWUgImZsb2NrIGxvY2tfZXggKCQh
KSI7Cgl9CgpzdWIgc2V0cXVvdGEKCXsKCW15ICgkdXNlciwkcXVvdGEpID0gQF87CgkkVkVSQk9T
RSAmJiBwcmludCAiU2V0dGluZyBxdW90YSBmb3IgWyR1c2VyXSB0byAkcXVvdGFcbiI7CglteSAk
ZXJyID0gJGltYXAtPnNldF9xdW90YSgiJHVzZXIiLCRxdW90YSk7CglpZiAoJGVyciA9IDApCgkJ
ewoJCXByaW50ICJGYWlsZWQgdG8gc2V0IHF1b3RhIGZvciBbJHVzZXJdXG4iOwoJCXByaW50ICIk
aW1hcC0+eydFcnJvcid9XG4iOwoJCX0KCX0K


--=-liiUPGRNJ64Zm6nqU/mL--

--=-WLPhp0V74L2cod7zlBfH
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQBCrwvvFxKekyWgIQcRAivdAJwIDzo5WZr9PhbC1uorePZsM9pgWgCfUKvX
Smy4Ps9EkMatn8pdBpLb8/0=
=qcYI
-----END PGP SIGNATURE-----

--=-WLPhp0V74L2cod7zlBfH--


--rS8CxjVDS/+yyDmU--