From owner-freebsd-hackers@FreeBSD.ORG Sat May 21 06:29:54 2011 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 975FB1065672 for ; Sat, 21 May 2011 06:29:54 +0000 (UTC) (envelope-from kaduk@mit.edu) Received: from dmz-mailsec-scanner-8.mit.edu (DMZ-MAILSEC-SCANNER-8.MIT.EDU [18.7.68.37]) by mx1.freebsd.org (Postfix) with ESMTP id 43FBD8FC19 for ; Sat, 21 May 2011 06:29:53 +0000 (UTC) X-AuditID: 12074425-b7b78ae000007e02-b8-4dd7585d4d7c Received: from mailhub-auth-4.mit.edu ( [18.7.62.39]) by dmz-mailsec-scanner-8.mit.edu (Symantec Messaging Gateway) with SMTP id C7.CC.32258.D5857DD4; Sat, 21 May 2011 02:14:53 -0400 (EDT) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id p4L6Ep6d021134 for ; Sat, 21 May 2011 02:14:51 -0400 Received: from multics.mit.edu (MULTICS.MIT.EDU [18.187.1.73]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id p4L6EmKP026725 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Sat, 21 May 2011 02:14:51 -0400 (EDT) Received: (from kaduk@localhost) by multics.mit.edu (8.12.9.20060308) id p4L6ElRq027871; Sat, 21 May 2011 02:14:47 -0400 (EDT) Date: Sat, 21 May 2011 02:14:47 -0400 (EDT) From: Benjamin Kaduk To: freebsd-hackers@freebsd.org Message-ID: User-Agent: Alpine 1.10 (GSO 962 2008-03-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-2023889498-1305958487=:6818" X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrLKsWRmVeSWpSXmKPExsUixG6nrhsbcd3X4MwxFYvtm/8xOjB6zPg0 nyWAMYrLJiU1J7MstUjfLoEro3/7GraC7REV5w6FNDA+Cupi5OSQEDCRmDH5PDOELSZx4d56 NhBbSGAfo8TF9+FdjFxA9iVGiU+HfjBCOI+YJK6/3sAG4TQwSvTPuscC0sIioC3x/FwD2Cg2 ARWJmW82AhVxcIgIyEssOG8PEhYWsJBYvm4lWDmvgIPE/VtTmUBsUQEdidX7p0DFBSVOznwC ZjMLBEg0Nq1jncDINwtJahaSFIRtKfFv7S84e9LD30wQtqLE5gO7oeIOEtf72hghbFGJFTfm QNlGEmceLYSaaSZx9/tXFmx6fx5rYMfUayyxeO8p1gWMvKsYZVNyq3RzEzNzilOTdYuTE/Py Uot0LfRyM0v0UlNKNzGCY8pFdQfjhENKhxgFOBiVeHh/Nl7zFWJNLCuuzD3EKMnBpCTKezT8 uq8QX1J+SmVGYnFGfFFpTmrxIUYJDmYlEd51wUA53pTEyqrUonyYlDQHi5I473xJdV8hgfTE ktTs1NSC1CKYrAwHh5IEbxPIUMGi1PTUirTMnBKENBMHJ8hwHqDhS0FqeIsLEnOLM9Mh8qcY dTmWXf59gFGIJS8/L1VKnHcbSJEASFFGaR7cHFgqfMUoDvSWMO8ukCoeYBqFm/QKaAkT0JKP eddAlpQkIqSkGhgNrklousyw9oq9Onv+7dvu72WviRxt4NtrKsi6+VzwxQrHz57WO5dv47ix qcVFbllJy4vvhVrnvvOZ10j6VitftHvs/3B63Lk5gas3fqpgVbw9d9amxY3aM31NI/7EXjB0 fOb/9Fze8dsB85UEvpS4dBT5Llvy1GHxxwuhOq+yr1dGeX19bhqqxFKckWioxVxUnAgAifKw F2ADAAA= Subject: porting third-party build system to bsd.kmod.mk 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: Sat, 21 May 2011 06:29:54 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-2023889498-1305958487=:6818 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII After getting a few pointers from jhb at BSDCan on what a bsd.kmod.mk-using Makefile should look like, I have been trying my hand at porting the OpenAFS kernel module build system to use it. (The main thing this gets us is not having to manually track version- and architecture-dependent CFLAGS and the like.) However, the path is not exactly smooth. A lot of the difficulty is in getting an autogenerated vnode_if.h while using a list of files to include in the module(from the common OpenAFS code) that's given as a list of object files. If there's already a vnode_if.h sitting around, I can just use OBJS and things progress quite nicely; however, if I have to get back to SRCS for the use of sys/conf/kmod.mk's vnode_if.h logic, I get this sort of build failure (full log attached) with the attached Makefile: gcc -I. -I.. -I../nfs [more includes and defines] -I/usr/devel/openafs/git/openafs/include/afs -I@/sys -Imachine -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wno-redundant-decls -Wsystem-headers -Werror -Wno-pointer-sign -o osi_crypto.o -c /usr/devel/openafs/git/openafs/src/afs/FBSD/osi_crypto.c /usr/devel/openafs/git/openafs/src/libafs/MODLOAD/../../afs/FBSD/osi_crypto.c vnode_if.h gcc: cannot specify -o with -c or -S with multiple files That last bit, "-o osi_crypto.o -c /path/to/osi_crypto.c /path/to/osi_crypto.c vnode_if.h" is quite troublesome. Any thoughts on what is causing those extra files to be listed would be greatly appreciated. (Comments on other issues in the Makefile are welcome, too -- it's still in pretty rough shape.) I should note that though Makefile.common does define a osi_crypto.o target, "make -d A" reports: using existing source /usr/devel/openafs/git/openafs/src/afs/FBSD/osi_crypto.c applying .c -> .o to "osi_crypto.o" Thanks, Ben Kaduk ---559023410-2023889498-1305958487=:6818 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=Makefile Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=Makefile IyBDb3B5cmlnaHQgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo aW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLg0KIyBBbGwgUmlnaHRzIFJl c2VydmVkLg0KIw0KIyBUaGlzIHNvZnR3YXJlIGhhcyBiZWVuIHJlbGVhc2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgSUJNIFB1YmxpYw0KIyBMaWNlbnNl LiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0 b3AtbGV2ZWwgc291cmNlDQojIGRpcmVjdG9yeSBvciBvbmxpbmUgYXQgaHR0 cDovL3d3dy5vcGVuYWZzLm9yZy9kbC9saWNlbnNlMTAuaHRtbA0KIw0Kc3Jj ZGlyPS4NCmluY2x1ZGUgL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVuYWZz L3NyYy9jb25maWcvTWFrZWZpbGUuY29uZmlnDQojIHdlIHVuc2V0IHRoZXNl IHRvIHdvcmsgYXJvdW5kIGZsYWdzIHdlIGRvbid0IHdhbnQNCiMgWENGTEFH UyBzZXRzIC1mUElDLCB3aGljaCBpcyBmb3JiaWRkZW4gZm9yIG1jbW9kZWw9 a2VybmVsDQpYQ0ZMQUdTPQ0KQ09NTU9OX0NGTEFHUz0NCiMgWFhYIG5vdCBz dXJlIGlmIHRoZXNlIG5lZWQgdG8gYmUgKHJlKWRlZmluZWQgaGVyZQ0KSU5T VEFMTCA9IC91c3IvYmluL2luc3RhbGwgLWMNCklOU1RBTExfREFUQSA9ICR7 SU5TVEFMTH0gLW0gNjQ0DQpJTlNUQUxMX1BST0dSQU0gPSAke0lOU1RBTEx9 IA0KSU5TVEFMTF9TQ1JJUFQgPSAke0lOU1RBTEx9DQoNCiMgU3lzdGVtIHNw ZWNpZmljIGJ1aWxkIGNvbW1hbmRzIGFuZCBmbGFncw0KS1NSQyA9IC91c3Iv c3JjL3N5cw0KS0JMRCA9IC91c3Ivb2JqL3Vzci9zcmMvc3lzL0dFTkVSSUMN Cg0KIyBXZSBzdWNrDQpXQVJOUz0gMQ0KIyBzZXR0aW5nIFdBUk5TPTAgZGlk IG5vdCBoZWxwIHdpdGggdGhpcz8hDQpDV0FSTkZMQUdTKz0gLVduby1yZWR1 bmRhbnQtZGVjbHMNCg0KIyBzZXR1cCBmb3IgYnNkLmttb2QubWsgaW5mcmFz dHJ1Y3R1cmUNCi5QQVRIOgkkey5DVVJESVJ9Ly4uLy4uL2FmcyBcDQoJJHsu Q1VSRElSfS8uLi8uLi9hZnMvRkJTRCBcDQoJJHsuQ1VSRElSfS8uLi8uLi9h ZnMvVk5PUFMNCktNT0RESVI9L2Jvb3QvbW9kdWxlcw0KS01PRD0JbGliYWZz DQpTWVNESVI9ICR7S1NSQ30NCiMgTmFtZSBvZiBkaXJlY3RvcnkgdG8gaG9s ZCBvYmplY3QgZmlsZXMgYW5kIGxpYnJhcmllcy4NCktPQkogPSBNT0RMT0FE DQoNCiMgVGhpcyB0ZWxscyBNYWtlZmlsZS5jb21tb24gdG8gdXNlIGl0J3Mg c2luZ2xlIGRpcmVjdG9yeSBidWlsZCB0YXJnZXQuDQpDT01QRElSUyA9IHNp bmdsZV9jb21wZGlyDQpJTlNURElSUyA9IHNpbmdsZV9pbnN0ZGlyDQpERVNU RElSUyA9IHNpbmdsZV9kZXN0ZGlyDQoNCiMgVmVyeSB1Z2x5LiAgQnV0IG1h bnkgb2YgdGhlc2UgbGlua3MgYXJlIG5lZWRlZCBmb3IgY29tbW9uIGNvZGUg dG8gd29yay4NCnNldHVwOg0KCS1ta2RpciAkKEtPQkopDQoJLSQoUk0pICQo S09CSikvTWFrZWZpbGUgJChLT0JKKS9NYWtlZmlsZS5jb21tb24NCglsbiAt ZnMgLi4vTWFrZWZpbGUgJChLT0JKKS9NYWtlZmlsZQ0KCWxuIC1mcyAuLi9N YWtlZmlsZS5jb21tb24gJChLT0JKKS9NYWtlZmlsZS5jb21tb24NCgktJChS TSkgLWYgIGggcnBjIHVmcyBtYWNoaW5lDQoJLWxuIC1mcyAke0tTUkN9L2Ft ZDY0L2luY2x1ZGUgbWFjaGluZQ0KCS1sbiAtZnMgJHtLU1JDfS91ZnMvdWZz IHVmcw0KCS1sbiAtZnMgJHtLU1JDfS9ycGMgcnBjDQoJLWxuIC1mcyAke0tT UkN9L3N5cyBoDQoNCiMgTWFrZWZpbGUuY29tbW9uIHNldHMgQUZTQU9CSlMs IENPTU1PTl9JTkNMVURFLCBUT1Bfe1NSQyxPQkp9KiwgYW5kIHRoZSBsaWtl Lg0KIyBXZSBtdXN0IGxpdmUgd2l0aCBpdHMgb3RoZXIgcG9sbHV0aW9uIG9m IHRhcmdldHMgYW5kIGJ1aWxkIHJ1bGVzLg0KaW5jbHVkZSBNYWtlZmlsZS5j b21tb24NCg0KIyBUaGlzIGlzIHF1aXRlIGF3a3dhcmQuICBUaGUgY29kZSBp biBrbW9kLm1rIGNoZWNrcyBmb3Igdm5vZGVfaWYuaCBpbg0KIyBTUkNTLCBi dXQgSSBhbSBnaXZlbiBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZyb20gdGhl IGNvbW1vbiBjb2RlLg0KIyBSZXNvcnQgdG8gdmFyaWFibGUgc3Vic3RpdHV0 aW9uIGJsYWNrIG1hZ2ljLCBiZWxvdy4NClNSQ1MgPSB2bm9kZV9pZi5oDQoN CiMgT1Mgc3BlY2lmaWMgb2JqZWN0IGZpbGVzOg0KQUZTX09TX09CSlMgPSBv c2lfY3J5cHRvLm8gXA0KCW9zaV9nY3BhZ3MubyBcDQoJb3NpX2dyb3Vwcy5v IFwNCglvc2lfZmlsZS5vIFwNCglvc2lfaW5vZGUubyBcDQoJb3NpX21pc2Mu byBcDQoJb3NpX3NsZWVwLm8gXA0KCW9zaV92Y2FjaGUubyBcDQoJb3NpX3Zt Lm8gXA0KCW9zaV92bm9kZW9wcy5vIFwNCglvc2lfbW9kdWxlLm8gDQoNCkFG U19PU19OT05GU09CSlMgPSBcDQoJb3NpX3Zmc29wcy5vDQoNClNSQ1MrPQkk e0FGU19PU19PQkpTOlMvLm8kLy5jL2d9ICR7QUZTX09TX05PTkZTT0JKUzpT Ly5vJC8uYy9nfSBcDQoJJHtBRlNBT0JKUzpTLy5vJC8uYy9nfQ0KDQpERUZJ TkVTPSAtREFGU0RFQlVHIC1ES0VSTkVMIC1EQUZTIC1EVklDRSAtRE5GUyAt RFVGUyAtRElORVQgLURRVU9UQSAtREdFVE1PVU5UDQpDRkxBR1MrPSAkKERF RklORVMpICR7Q09NTU9OX0lOQ0xVREV9IC1JQC9zeXMgLUltYWNoaW5lDQoN CklOU1RfTElCQUZTID0gJHtERVNURElSfSR7YWZza2VybmVsZGlyfS8ke0xJ QkFGU30NCklOU1RfTElCQUZTTk9ORlMgPSAke0RFU1RESVJ9JHthZnNrZXJu ZWxkaXJ9LyR7TElCQUZTTk9ORlN9DQoNCkRFU1RfTElCQUZTID0gJHtERVNU fS9yb290LmNsaWVudC9iaW4vJHtMSUJBRlN9DQpERVNUX0xJQkFGU05PTkZT ID0gJHtERVNUfS9yb290LmNsaWVudC9iaW4vJHtMSUJBRlNOT05GU30NCg0K aW5zdGFsbF9saWJhZnM6CWluc3RhbGwNCg0KZGVzdF9saWJhZnM6ICQoTElC QUZTTk9ORlMpDQoJJHtJTlNUQUxMfSAtZCAke0RFU1R9L3Jvb3QuY2xpZW50 L2Jpbg0KCSR7SU5TVEFMTH0gLW0gNjQ0ICQoTElCQUZTTk9ORlMpICQoREVT VF9MSUJBRlNOT05GUykNCg0KIyBUaGlzIGlzIHVnbHksIGJ1dCB0aGUgY29t bW9uIGluZnJhc3RydWN0dXJlIG5lZWRzIGEgbGliYWZzIHRhcmdldC4NCmxp YmFmczogbGliYWZzLmtvDQoNCi5pbmNsdWRlIDxic2Qua21vZC5taz4NCg== ---559023410-2023889498-1305958487=:6818 Content-Type: APPLICATION/octet-stream; name=build.log Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=build.log bWtkaXIgTU9ETE9BRApta2RpcjogTU9ETE9BRDogRmlsZSBleGlzdHMKKioq IEVycm9yIGNvZGUgMSAoaWdub3JlZCkKcm0gTU9ETE9BRC9NYWtlZmlsZSBN T0RMT0FEL01ha2VmaWxlLmNvbW1vbgpsbiAtZnMgLi4vTWFrZWZpbGUgTU9E TE9BRC9NYWtlZmlsZQpsbiAtZnMgLi4vTWFrZWZpbGUuY29tbW9uIE1PRExP QUQvTWFrZWZpbGUuY29tbW9uCnJtIC1mICBoIHJwYyB1ZnMgbWFjaGluZQps biAtZnMgL3Vzci9zcmMvc3lzL2FtZDY0L2luY2x1ZGUgbWFjaGluZQpsbiAt ZnMgL3Vzci9zcmMvc3lzL3Vmcy91ZnMgdWZzCmxuIC1mcyAvdXNyL3NyYy9z eXMvcnBjIHJwYwpsbiAtZnMgL3Vzci9zcmMvc3lzL3N5cyBoCmNkIE1PRExP QUQgOyAgZWNobyBtYWtlIERFU1RESVI9IHNpbmdsZV9jb21wZGlyX2xpYmFm czsgIG1ha2UgREVTVERJUj0gIHNpbmdsZV9jb21wZGlyX2xpYmFmcwptYWtl IERFU1RESVI9IHNpbmdsZV9jb21wZGlyX2xpYmFmcwpnY2MgLUkuIC1JLi4g LUkuLi9uZnMgIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVuYWZzL3Ny Yy9jcnlwdG8vaGNyeXB0by9rZXJuZWwgIC1JL3Vzci9kZXZlbC9vcGVuYWZz L2dpdC9vcGVuYWZzL3NyYyAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29w ZW5hZnMvc3JjL2FmcyAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29wZW5h ZnMvc3JjL2Fmcy9GQlNEICAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQvb3Bl bmFmcy9zcmMvY29uZmlnICAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQvb3Bl bmFmcy9zcmMvcngvRkJTRCAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29w ZW5hZnMvc3JjL2V4dGVybmFsL2hlaW1kYWwgIC1JL3Vzci9kZXZlbC9vcGVu YWZzL2dpdC9vcGVuYWZzL3NyYyAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0 L29wZW5hZnMvc3JjL2FmcyAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29w ZW5hZnMvc3JjL2Fmcy9GQlNEICAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvY29uZmlnICAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvZnNpbnQgIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9v cGVuYWZzL3NyYy92bHNlcnZlciAgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0 L29wZW5hZnMvc3JjL2F1dGggIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9v cGVuYWZzL2luY2x1ZGUgIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVu YWZzL2luY2x1ZGUvYWZzIC1nIC1PIC1EQUZTREVCVUcgLURLRVJORUwgLURB RlMgLURWSUNFIC1ETkZTIC1EVUZTIC1ESU5FVCAtRFFVT1RBIC1ER0VUTU9V TlQgLVdlcnJvciAtRF9LRVJORUwgLURLTERfTU9EVUxFIC1ub3N0ZGluYyAg LUkuIC1JLi4gLUkuLi9uZnMgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29w ZW5hZnMvc3JjL2NyeXB0by9oY3J5cHRvL2tlcm5lbCAtSS91c3IvZGV2ZWwv b3BlbmFmcy9naXQvb3BlbmFmcy9zcmMgLUkvdXNyL2RldmVsL29wZW5hZnMv Z2l0L29wZW5hZnMvc3JjL2FmcyAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvYWZzL0ZCU0QgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0 L29wZW5hZnMvc3JjL2NvbmZpZyAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvcngvRkJTRCAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvZXh0ZXJuYWwvaGVpbWRhbCAtSS91c3IvZGV2ZWwvb3Bl bmFmcy9naXQvb3BlbmFmcy9zcmMgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0 L29wZW5hZnMvc3JjL2FmcyAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQvb3Bl bmFmcy9zcmMvYWZzL0ZCU0QgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29w ZW5hZnMvc3JjL2NvbmZpZyAtSS91c3IvZGV2ZWwvb3BlbmFmcy9naXQvb3Bl bmFmcy9zcmMvZnNpbnQgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29wZW5h ZnMvc3JjL3Zsc2VydmVyIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVu YWZzL3NyYy9hdXRoIC1JL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVuYWZz L2luY2x1ZGUgLUkvdXNyL2RldmVsL29wZW5hZnMvZ2l0L29wZW5hZnMvaW5j bHVkZS9hZnMgLUlAL3N5cyAtSW1hY2hpbmUgLUkuIC1JQCAtSUAvY29udHJp Yi9hbHRxIC1maW5saW5lLWxpbWl0PTgwMDAgLS1wYXJhbSBpbmxpbmUtdW5p dC1ncm93dGg9MTAwIC0tcGFyYW0gbGFyZ2UtZnVuY3Rpb24tZ3Jvd3RoPTEw MDAgLWZuby1jb21tb24gIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICAtbWNt b2RlbD1rZXJuZWwgLW1uby1yZWQtem9uZSAgLW1mcG1hdGg9Mzg3IC1tbm8t bW14IC1tbm8tM2Rub3cgLW1uby1zc2UgLW1uby1zc2UyIC1tbm8tc3NlMyAg LW1zb2Z0LWZsb2F0IC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMg LWZmcmVlc3RhbmRpbmcgLWZzdGFjay1wcm90ZWN0b3IgLXN0ZD1pc285ODk5 OjE5OTkgLWZzdGFjay1wcm90ZWN0b3IgLVduby1yZWR1bmRhbnQtZGVjbHMg LVdzeXN0ZW0taGVhZGVycyAtV2Vycm9yIC1Xbm8tcG9pbnRlci1zaWduICAt byBvc2lfY3J5cHRvLm8gLWMgL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVu YWZzL3NyYy9hZnMvRkJTRC9vc2lfY3J5cHRvLmMgL3Vzci9kZXZlbC9vcGVu YWZzL2dpdC9vcGVuYWZzL3NyYy9saWJhZnMvTU9ETE9BRC8uLi8uLi9hZnMv RkJTRC9vc2lfY3J5cHRvLmMgdm5vZGVfaWYuaApnY2M6IGNhbm5vdCBzcGVj aWZ5IC1vIHdpdGggLWMgb3IgLVMgd2l0aCBtdWx0aXBsZSBmaWxlcwoqKiog RXJyb3IgY29kZSAxCgpTdG9wIGluIC91c3IvZGV2ZWwvb3BlbmFmcy9naXQv b3BlbmFmcy9zcmMvbGliYWZzL01PRExPQUQuCioqKiBFcnJvciBjb2RlIDEK ClN0b3AgaW4gL3Vzci9kZXZlbC9vcGVuYWZzL2dpdC9vcGVuYWZzL3NyYy9s aWJhZnMuCg== ---559023410-2023889498-1305958487=:6818--