From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5621 invoked by alias); 25 Nov 2009 00:55:03 -0000 Received: (qmail 5566 invoked by uid 22791); 25 Nov 2009 00:55:01 -0000 X-SWARE-Spam-Status: No, hits=-9.3 required=5.0 tests=AWL,BAYES_20,RCVD_IN_DNSWL_HI,SPF_PASS X-Spam-Check-By: sourceware.org Received: from proofpoint1.lanl.gov (HELO proofpoint1.lanl.gov) (204.121.3.25) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 25 Nov 2009 00:54:56 +0000 Received: from mailrelay1.lanl.gov (mailrelay1.lanl.gov [128.165.4.101]) by proofpoint1.lanl.gov (8.14.3/8.14.3) with ESMTP id nAP0srqP029764 for ; Tue, 24 Nov 2009 17:54:53 -0700 Received: from alvie-mail.lanl.gov (alvie-mail.lanl.gov [128.165.4.110]) by mailrelay1.lanl.gov (Postfix) with ESMTP id 7C01C1830D5 for ; Tue, 24 Nov 2009 17:54:53 -0700 (MST) Received: from localhost (localhost.localdomain [127.0.0.1]) by alvie-mail.lanl.gov (Postfix) with ESMTP id 79BC47D00EE for ; Tue, 24 Nov 2009 17:54:53 -0700 (MST) X-NIE-2-Virus-Scanner: amavisd-new at alvie-mail.lanl.gov Received: from [130.55.124.157] (manticore.lanl.gov [130.55.124.157]) by alvie-mail.lanl.gov (Postfix) with ESMTP id 4DF477D0059 for ; Tue, 24 Nov 2009 17:54:53 -0700 (MST) Subject: gsl container designs From: Gerard Jungman To: gsl-discuss@sourceware.org Content-Type: multipart/mixed; boundary="=-C7z3pTdfK05E02lgfAiZ" Date: Wed, 25 Nov 2009 00:55:00 -0000 Message-Id: <1259110486.3028.69.camel@manticore.lanl.gov> Mime-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5,1.2.40,4.0.166 definitions=2009-11-24_12:2009-11-16,2009-11-24,2009-11-24 signatures=0 Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2009-q4/txt/msg00047.txt.bz2 --=-C7z3pTdfK05E02lgfAiZ Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 266 Here are header files for a couple different approaches to containers. I didn't bother with any implementations; it seems obvious how to implement most of these functions. The designs are not complete, but they express most of the important stuff. -- G. Jungman --=-C7z3pTdfK05E02lgfAiZ Content-Disposition: attachment; filename="gsl-container-designs.tar.gz" Content-Type: application/x-compressed-tar; name="gsl-container-designs.tar.gz" Content-Transfer-Encoding: base64 Content-length: 15702 H4sIAP5+DEsAA+19aZPbRpKovz78itqeD+rWkFQfOiKk9TpkSbY1Y1kOSfNm XygUHSBRJDECARpHtzgb+99fXnXg4NHd7PYFRDisBoGsqrwzKysxK5LhJEvL ME51Pox0Ec/S4sFXe72O4Xry5BH///HD2v/l+urk5Oz4DJ46PX381fHJo5NH x1+pR/udRvdVFWWYK/XVv6p0tgjTtc9t+/13es066Z/rMFroUfml3McYSODH Dbo7+p+dPnzk6H/yCOkP/3v4lTrex+Dbrj85/V+nZZ5F1aSMszQYelcQfJhr NanyXKelYsZQaprl6vv3P6qT0Rdl2aZQRTWd4v/jNCj0hc7DRF2Gq2KkPszj QpXZMp6oeViosdapiuJiUhWFjlRYqiJbaJXodFbOgyxVJYy5COMkTmcqiYty AA+o1ypLkxUMsliEefxvreY616MgUDANhbOU2WVTdaEnZQYTCdMI4JR5PNEF DrhMYDoAsSwTrWANaQbTXyyyNIR7K4AEF7/zGV6IYcHxdBpPqqSE2asS5KHE uS1UWNBPmrBSrpbw9CKLNE0YHmBIRQiLAvRM9BJWgGs6WACoeBjmebg6MD+N 1KsvpU4jedcso8wYSpxOkioCfLhXeWEwo3FuXupccZwaIPjINEsiletfqjiH 3wjjOOMx0KmEec7DdKYLwudpDZ9AurkOl8MJrBXgCjWRjobIsJAC4GpYDgNA NI7U6xLfraGwKjTNBbC+zFIAWKhpni1UBjdzlcAUqhBmMWAYcKVZGY6B6i/+ +tcBrEeFcCdfMGPRLHONgwAh4QaOMA0RESqrSgsDB8QVqDBJskmIPI5Mggzs MS/NAx6NYR7ZLJ6EiQWA6ytzlo6BuozLOYBX49UyLApDAITmwZ9WKT1eWCCw WEB8sgIA83gyV/FimcRACAcGaZdr4NGJARqncRkDb/6bgI4sLKJALDILMKo0 nCArAaoQt9WSGTETfoIlJgUuWSZq4eAc9AJmJpMGxIUpoHEe55Fahnm5AmEZ 52G+MmQdj9R3VY7UWmS5Htile4gMl0sNuhT4NktneZVVBRMOSEiP6S+lo+9Y T0JhipWKMqS3msYkZWocFqAw8DVQzmkUwpxkNm44FjsH75I4glnMzQhuzWFa xCBjkHzWMAB18nmk3qYapwHy4IgF6ASLALciK4dyFWX09ClL239GWQUI/y91 8cytx+M7vMCwnvPT8JTce/BAzav5N2ufU1+rb76R5xaLxWhkkD8hmVoAoyOa YCFpWFYogLCsyxwYvLZutcyARVgfA1lJxOyYRtQMRZ6htgOmqooKuHilkLot 8Nn4XzBFh6UIGHpSJqun6gDUwTA88CGMdQmDw5TCVH4eyoSGZXZASzpr6m3S ZLG+FJVKgl2CXbgAPfVvoAWKntOvaZYO3dPPajyUZNnnB1OtE6Y0aOKReg8s qY0+BNjLPAPyLZxJ0l+WGRoksy5c+ASEFNSUcNg0/oKSBbiqK1Jk9sUSpIgE kFWp0mAgQAmkM9GISYL6LydJdPMmTDxkTPCyZQlFtVxmOYvCIitKNdMpqVv4 UVRYkcSoK0QxvF2iKkelA++ChoFlHfA4AAGAATWKajyM4nCGFg8BhGwsvhzI FFGbGp0AiCDGUWE0nGcTeDKF8UELT9Fiw2po5o945gyGFgDz10VtBZMsqRbp cBH+C9gbxCoHxnsQp5FGZApmweQKZmsGgxgGdLpm2n8H4HKYEuuBmLBHHgoY tyS7RAjATZMcrJozT0DUgggjfi3rOU9QRKsEYRQBRY1KB60kHFII7+BdwBBi aaJzfBl4hE2XeRL5vQyWOgMkit65QHiGczvcpgGzELN/4WYJch6MdU2OaCye P/giBVKah6dfwSzB67P4Alg5HGcXwPI/00SCAgwWGP8JTGhaoXDqL+ECBpcR 4wiAkfmJ9AT+QBKDdUYPifQAT20RFFly4ZAidoykDlapUXw00AQQFQ3w3SmY HaQhv4YQkFov9ZTMGtrGmqP5HFwN4QlY+xKlH5dMOgcFhzwe/CEEypY4KXhc /Bx8kl5WxRKYJYAn4Smw4WCIsukUn6/YxgL/5bDECFU80JrtB/NwWi3AGfIA B4dRDJJQiLSxRbaDHOEMYYgEZwY/AV9+rj0mCxkF7+tDolOESIA745W4Zjm4 dyHKE8/28H/ij8efBgp0Pwjcx/TTERgF8HwP86+PB+mRLOJj/kndh5/zT0Hg DJ8/D8Fj+tcTQP1z34esoxe5FgUcnS/AEbAJurbI8YjIKCwR5zPUCsEh+RR4 J8vjWQyTQcYJG8QTH6ewhBPZCmgkHyDioE6TkXrjz7PmoxRBmEAsUMxRtkIj hipcZFVKPDEGxT/8rPWSdAGMQwsX04prriEBXmB0pZoRxGps7XPlJfhU2UyT 0FmZZv8Q5sGIDMjVn4agsgkn6OlD/FSAx0uoqID9ZcniTCOJNC4dfRtghgAh QtwDJFi5YZzel2mC31gtWE2zdbdqcWAtwDgR0U7CJbo7LGd1v8/x8QH5RMMp inGUQIwSCx+BD0lEE+2KRq3ubFh7CK54w9kmJR28oEBLfafRqdA12XeBptF9 RomDhGjQ60LvsqboOXJTUwFoIsHnSeL7fiTfvAaPnib0kmin8Q6OtZyvCgwC kpXyTLulhbHFHtDAxAoMZmBMmhfTjYFMJroAwEgWbxxwuJEKifONyMun8K/g +BHN+QG7CRQTkzSVHuJo6nkGihgAWsfJ+Bgv3BonILFjL8JA6YPpkLj6/jEq chNAiZ/xoe1do2/T5B3jHjSQu9atYUo5r0ZZIRCXmpDfUBUotHVGUOcgJ+dG 31gd6xnWmJFZjwbRq/TVEj2zKDSYrsIEmmJGx6h57Kw1untxsRCrLOFb0BgB 9UOpZyTdNdufYWiEiRNYMwwLVEPLMJyhOtFRQCTE+XEUJwEMUAns+AiFiviY PO5BPUVAJrlACWfuAgAQtJHVQVUma5pSFEe+f2DdfWQqHYL+IJ3nlFfB5qDQ yKklu6vCpos4zzH/UGZZghmWzzoATVyUT5/SpM5pUgPVsFKkZ0sN2gjBIdQF ztKkDqoUpldCcFtqthuX2jjHtLrQhjFDY1AtMEcXmHNEkTBo1QVorhAsQYwZ hCz/TOSogAwQtxF0jT+wkIeoHl4hGkR6yfJ4UXfYpQUIKQNn/6y0Bw1pJ0lD 3awOINAFiQJFXRywb1qTGIy4JZkAYVgM3mCK/k225MQNMFDHNKyAQ9gLEUyE 9gAFht0/JGO6Cpz2ZjdgpF6uUnAMJ0QdI9lobllmJSKwceElkBTsMaZDZnPJ nWAwb1Ib5Nde6iSx5IE5o68Tomux1BCElPBcAEBJx+ZxgaonM9qnlJlIoKR+ AgM4kSkRP0hACvIRAB/lFbrc47ikFIF9EdACWga9VsokAS+jiys6jtUa2R5U mxz+iZ6AGxf4aOQ8ViKPzIyDNcpJwpRpuK/V2SAocPmM44ssBpWa6jSJZ3Og G2o1UBG6JGh+9MvIBjc8Ju8c84Eg/UQnb02HyKYQg+roCKzLlxgTYR6eRuoH HUZa0oBNx2lilVdVZgurF5h5SjISb2o5RjS0tGAdk7/zAm2BicCKcpVoE8yB wKaUeRtwZA3KBPynuEiBAfJnQk56ElQN6NSpCe1DCpEB54dzGItnGGNq42ik 3oU46iCo+dPAsheYSWOvxbzOmFzzEOFLiVtWgkPf8gbECSZra83hyNg5A4rp GpjoHoFQztGaYBMrFA/YSCnraGc5UAVBgl7D6DjAtTMgD44W5595ASWiQtSY xKQNd5C4PELNs/oAGi9FoqqfMc/S8rDqnhaRHfimqbo4OgFllJt8S9O1RwuN 6fcTz3nNygAjdWRajtphpqicUBtIKMIZVFDck89GPV4SvcVzbHqNo0AYgKyT APSVLioSBJ6EK015cKtznePgMka14Unbm6eBbSunkWH2BFBB/JyvUURB8JoN EKXhyPXmNwVxlES1GWCYfALKj9LXxAhONRRLiLenK/QXGtKKobtTleALk7g6 oM7BN7QJ4PcJBJHy82UMRkQj75p0nMwD5fw10Gqm8+FFmFQ6MqRZaIx/mfsE yeQ3CDPAWPeAyPeMxXdpSNA5v1RopFFZoIUZAjs+fqhAbSFSR+pbwPdrCNLo BfK9c7QG4Rjz6CRAOSpI+PlypP6pyXZN5hmmM8I0MOCZP9G6A1NYfX4vydLZ PTIOWhkvgVT+WJuMh4xEijY4ZB1O8qM0kQAXekQONWdBjQtpxgXKgnFAAiLn n5eI2Hx1yRtQz8EcDZRwBKpr+I1SBrTfgYxZpTgysginNVOX1kJCai36gzbE cAcOnvj4Y5iDX/MeqKopB/4+m5aXSJqXZDAG6m8j9WP4OSs+AUF/EhVNaqIe 3KXiwBcaeAm4qLACZ/QJ+5Rg+4DJMGn0Har8LyGCYe1rQ1/itaEE04cnAzU8 oSxImOA+nwJ2iiOzjQF21rjRQDMgh+ZZobE+yDMIY45dWo2EFpUBegvOwx2w rjO5N0nGGj9cuA/IOeE8PTqzM8wRpfHSSAKrH3T5yS+zOrSR6SRHzKMSM3lQ kOFmrwE3v2Q9ElzQdktOWpxTiiaXIGki0Jasa0qnJ5GhYWCwokANuFdUMNbz GbhhzAlEUsWCRPssEBcBWcKS8hmWRXDCmJafrzxeCjzEoOat892AF2nUZ14l 2mmyCeYOU0r9gG+XDscrVg6sZafCQ1k6hP8NOTC0u2IZ+qhg2UidY8qSkoZm HFKL6P25F4ZxOsQ4iaGbzCM90xg+YGaie2Ach2Qj+CWQEQxohMBZYSIR1B3C j2MMF1JRGTBFoHg4g1E4mKDgUzK1pC3N5mQXCopnynd0V6T+2CEAvlmgxw46 sppQlgBNB8w0Eq+WbcO61dMe2irAtC1FgmPc7EInRBUrkOEJ2p4x4HIalxhL o64hiywwPCoEpPUkhXtJbgmFPkbNStpuGuskYqdMNmRoMYCsf1Xp50GAebLS 3ApFqAnx1jSPRpIKr229fib1/VpmFvj8YUTWam0A/RkCV9ynNQ4CuEMRUVN2 eGmvBDj0JQRxgBHa0jQOv/gPOIVxFSdlPWVhtD+IC4pNFRdz8aOCg2muNdw7 sKDsNDHxMZ26qAA0LpoSEg9nzImdxUvRgUWqSWaa2DhZkWvGulqdBM75Mrf8 SJLSimQbyN3GmNOIj4vRbLnAB8xmBPx82N7tlAxDUZJc4SYZ/1XLbnBahmAE CMMlpSjHBIEoFg9ITFd7k3Wy2wkB+usvS0zZlIG3q0XecxJP9XCymiTkBdbT K+ynAQoo8TheAatNk1C8uMA5fGBlSQ1SuUbp5axjtGSYl+DNHVw2UffwaIgE Dg5jFxlbktEeU8qRKW9oHakmEUX3e5OXiXLOPARc4aZ2KUFozKxnamRwf91P 8LiUBy2PnSzFBskkGDn5ei+7hFfuAeP8nGfFU8pmfquR/zij4g/hE/yAlBx5 UAe2RuAUs31NkVuAS6MOwwRV3xEgoQLLOWymN80oXgaCEk0yo9eCPaIKpktA 2lOibzgusqTCWhLMGE3KFEwkVwiYtAfoUOD9hc3ocREC28VZBYID2gjDpB+y S/SwBpQJQbXCCYI4weVG5KXRcuvFCB5M0QVUNFBQghDzJriZBh7EheZtOszx Z5QvJS1b21m1m8x0HUiKUcJDwygHbL9Z39R9bZd+lFxFbXLijhDSDEZMwsbH w3tMdqkiTLVdv4Jhoiz3wJHtEq0PgT3gHkJp1vyAp8s8sxvExBVvwpX1ACfg l0l1xhQk1ybs67EK2sUFkDsDVCKHeGOTZhkiod28MSfiqR3Rs3YKsukvzM5C AfigYg/OihNuhmSmmH0KzBezH2fCPG8OxQJ8RgQQSV4LpYE42W1I0npoIsMM 75Q2zTPyIFm24yjASo7dm2Hdx7+K+OK8Xqi3b38eBf9HuTQIZfrJZcJlsk+M ziH8SK4bK3tcIiPbOJoIxFWWUfWcb0eqoBbGU6xuirSKeBHjficgwTw+kPgX zAtYsCikqCDxTI3dvQrqtsIQzaHEabEWILQCfpRYpbzpQ7lT+oNKLICu4WwG j4gKtDGC2SSR7VFAe5lNssSFuOyUEctGgWO5kXrLQY8P1iY+KZont5zBYpRj 86xooJ6nmCREfg+TwAzKwT+6Aib8t7rLOgwMH5hLJJzkGevRAqO5QU2+SoAc KVkwYoMJyBoNBdwkE7PSJ2HNJIsgQvF9RkNHq4ABMFUVAlLsb7irU4xOAivh 78xWHCs5u3yvaEpQNUPdlBunVmgF6CwGTSnznBXS/s43neTVtKwFjbXCpnoF VP2nixF60CO0vR+PP6mvISI89oqkYJHZklOyMPuLxnNNUMQX510AAZTVnhq3 KZ6qsMSNAnKQJQ1HDoBBBguB4Yn2engsWdWkuaxJ12Se2WVln1uPr0VDa+oD 4/2gRKWZJ7L3EMi9jklzVIRUYv8lzVbiBZH0o0ywjxISRxp7jGxKCX8HybGc VQtlHThm5hNkt65hHCCvSg9HvDSZaR6T7J6NL4jdyhw8F4wAjbo+awsCy4E6 A8VYz4Q+hXfehBOQTGVz4CbXp42Yoje4MqGIFQT1C1j0eBqbjWyu0gIBCbhY ymzZ4jJTmM+gFiUqMD1JxvVETlMa7W7yaDpMC+MiLBrTjGlDihJWvKuAxZWu VFgcLZopDo/T4LA2odxS4KO6ZEMrewzedqAUobCJNwWBoB95NkIdyX5T7fcl lmLKNg1MKM+WeUwxDy0zEkgD3kGwc2Ulh1slehGSPU7iixg8aap6kZDO6uFD S4Mj0K02aRU1ea+eQyZmkcRJgJ4WkqJ8hnEcqm3Jn3CaDF23wuQGOJMN2Dbs j4HxTPIXboPdN8an7aDu1FTVJBF5apwH5JXBqrMLsQY156cjzgBjHPBWMpeh Y4mMv+latHgHVZfWHpsZfNmIMlgXSfI2XyGVFVxHccAKLNfTg6fNiimTyyCV OUAlRKsp5vES3+R3xDVrvVkPR9tv21fVziDc+8EHLykxzZAN2M82Vcb2UWQ4 diQQRoBqRtKjZicgIQfj4LnshWGiIcs9v3Z04Bn7dx20dU4skaBN5ZGz2D+L GmEI7Y1zk8DzhLlBbtacvr12/rvhKoKN8SQIHZW5Gafe+FlYh85pDPQGJ9ly NahBzPWM4inKgejlEJ9QF4CmYk6izjdsonmT1yJOi4eD7idOPYX/2t965xp1 Tuoyr3N5nxzuoMAOZRjQSvs7alythr4xo201qe5tKpW5OJ3LDDeRYtYCpAHj 6Uoy2mlUTMKlriGIdT5oPstwU9F9WBFvECN5Kbs7JKuKqJbVmS4ps3wqI5x4 Rage4VHjUa4PUx+JZIPZp8H0NMUyZofLzVXq3WGhoskx7c6bEFNT+jfW5SVW RbP3bQsCeeTU4zWaEG6+O/HiFPoPuKcL6tBk0TAwM5k0OquR89bHwsGCaQ6k 6MxKciRFCZJmpLna3Tv6xzcNb6fQWJ9KOZMQU4+Xw6LMqAAaS0i1V/vC9Gbl 7pESyM8bKBeI03ev/vbqxYdXL0fBr31O67au7vN/YvNO9nMQ9CrnP/n83+NH j0/78593cW2hP8Y8C7JEo/m1x9h8/vMErzr9T0/g+f78511cf4mnaaTpTNz5 m+fv3j3/f+c/nL/+6cWP/3j56mXwF9mc6/41+Is5ovifjk/OsWJ4NP8vMGkP 7t9XX3detgiFUmPNSpSi4y11/wFApCgDZsv7NsH/BMp4pHQgS90XNY6+Hcbm jWlRqG9Lmp8F/xu4mJ4fe9Y5RgP6Ncaw0Dchxa832Rknu6Jk44TPT7wpK9WB mPOTK6Bm97Fq6KEx9rSg0810Pj/d23I6RvLG2NNyzrYs52xvy+kYyRtjI/82 t89r+8Dd75BUt3mt49Y5bjEeNlAXDQSZ3jTj6AuGJUv98dPRs6DGXrU/GOB+ QOFWdHS47f0OLuy4tYeFntb+uNFCG6Cuu9Czjlt7WOhZ7Y8bLbQBaseFbhKH A1OqcYBhxhZB8IwcFQh6Y+YagshCn6NIHrr7sMJFuHUSVL6xgyA2J9EWQHV/ nVSepzeWTAHeBrsvgG6KV5LPrkWf7mnRp/U5nt540S2A11v0Wdeiz/a06LP6 HM9uvOgWwJ0WvVVkdpTYLrGt4Y3qUpp3jeg2Jd0+fAUJh+Ftkfa2iXqzxSOL NQGR46cOc03ph7nghrUcbYRpNUCcbgFxKiD4ZwKExFBNOGdb4Jx1w2mCebgF zMM1YLYh25xR2x3XCO59QudXXJ2o59973UzoTAn9rEM8M4IVzLY0JUA/zgxv 9vAtQNxnG1AZJ9er0sEFHHVkMmOJlipWAoSZU3DTuC4XzyIV1Zj3NbGUCOa9 3tshsG0ZMzxSFzt+mqdiRHe7s9ccopMZNw/UxjtWQ/hx1XjlY4u3+OAGPEEY oh0dPmVvX+c9WG+zzxVM4nYtNREYY3ltA4MNN4omeW4Gb6OyLivr1+m04Xa3 cu2YG6R028g1HNv64g4eN+WejhJUh5hdUjUKoZtqfCR3e6C/lFSbZU7RSueK Az5yniS25iWzrS82c61Z/8k2ZKMmGOtZnH785N+KdFKGa9DdwcFdw23RhpsH ZVR/9/q/37x6qt6OafsUdMUlbwDxrod3RoQ2jkVVzOOZ4WFCtJSzDJQusaeT jhAWl6vTYfbZvJStXkZpEPwFd56nSj24r/6jMxUET/3aiaz+uta1U/4Xew7c Wv73+Mnx2ZNm/hf+7PO/d3HV878f3r3+7/X53+avnflfTv3qtFpQBsp7893b f8I///b2nfraTyi///D23fPvX52/GNQff/H2x02Pfxf8rzFAfG7MnH2RNBiX OZqOeG5jtqz3LCpIJdJ+aiUdUbjsgyxQs8EH10Ha/h5U/0sAxry5H8+w6xmW MWFfH9eVieod8wt74MkCpe1UeB83Szl9ZjszPTNNf0DX08H2jnfdBOzLqOaH DU/H7zFVPyIxwY5s9029DB9waTTBiCPN5RHGGtx6gpZWf6vpWRlB/BdXPmt2 2PGAT1aU5lBFhAWreCghkn4yTDPvoD6f57ZP+Qxm+16gc8+0yi6lJRbXtgyY 0pexsOe9Mgrv2VNzfLhKmExKDai2m2u9/kM9dxW9rYkWTF6pjpINeDOhRvUd IQCZCBmNPeCU2j6gZ5voEksOkkr6Ee629WAIg+zqXcijeHsyR9VrL6oi6Lgv J8g7fsHGNuDidPxyLhIXdQyPRzlPOu4D2tc8fdpx/3weRyAahqkc6q/Cxy0E GdTYGxYp9g4fNwcHM7us3eeCqfZ9eR7VVu2+XUANBqH6nEqIOpbWEJ01Ue81 NwKaOqB1Y13GGKcPBuccBKtwf02yRP4CwrqskYXsw9wbNM4brwdxW1ljL5VE 8+hIGpNKgqjjtnLGTWo10ogW2WuSiFdGu0381SHvESaCuwEpr5dIbOURaSqt PKJHzSbtvTTirjS/XhbRpdxo3LUJNzMLyR8iLs0/AZG3lnT7wZxU5IMLfN6f Gl7JeQU6dOpa3FDIjodLsES0ygttfCN3ptlMpN78qdZ+B9NGFyF4FFSEJwcL LCA/J2LjdbGniDLxLzysciLBZEBq6Qufug7fHogaC60F1MFSmycDhN44HyYu t92ekBdzlRl2Q+/mpeYYG6cNbLdhuvDrVWZZB9Y9OwG5cVIgABsmJeKx66Tq wLonZSWundVpBHh9VuePf+2U//Hquq4zxpb8z9npk2b93+nJcf/9hzu5Our/ 3rz68HxLEWDzke5KwDj64goB35jaOHaHsF9j03Q2O0byPhWftjQ7AR29PPG8 c5HVLK2twMcuYOECjz1lUzeyMbiUplIuTVXPR+F5vEH3b9/BbyeUgOqC8PPz F39//dP35//46e8/vf3nTwSHzzWafm4PqpQOt3e/9+2Pb1/8/dVLHIPf8zJO 0jyBE03dr394/f0PH+DlU4ro4HVCOx4Akw8R+BBsEu3bsDB9HQE1HTErxYgU nioDuNU3WR1SgzDENW62cx+0IxOdcyhrXq4dyaEpSlMS87gJ+/lx00aOD7cc mubYeEh+Jbihn+xoJjfAr8tfak4N0uSRWpKgUS0A/308wcObODYupl4M53JK gr8P9mi1V8ZZjNYlShw269hpLr65mitMvXvCa4ssb3tGp2tntK5O8rZndLZ2 Rq7U8bXtC+haIccpp95kZ9248QPeu+RTM4XpW8BazL5rv38yMOcNcau/lHak mvekZxXmI80RJdJVGON1ThU7Uxx2/IAOn0TAiEL+F+GP/ynIq203xovC29d9 IRvadvIj9V7r5p6w2fY+POKJAqDOedrn1s11nVPaZXB6z3Rf1+7+H1nza42x 5fzH2aNHj5r7f0/w+2+9/3f7V4f/9/rlhj3ArifEAPL2lKg3k1bh45SuvY4r EwmnCFb2Gbwuo+aAvrRBta1RqVkN9rEMuS8Vb2wYl27AxzqbX4hoft8BD7ya IfkLEtJfHXXkQfdHHNR9euODbdOqZKG2SWvAO1LyK3+vIR0wmI8pfqpBPtuQ fjrinBKf502586z6eDzA8Y+8sbhtILYZoWOoeMI+jy/gX1yogS3TMH8VyulN rP4qTOsO2pvyvztwQDPBj3PIoeoDaXslPpXt64UHI+l96YBca3VNZ4azJJut 7DxfsIniGhSvxSed7eQW6q5zfv1zVC3CF+b454obG1EtHDVsML4/F7IMqTM6 W1UveDCtZflbFtyGx4KnPoP0SQj2+5FfX8qXBrh6zvKtsABzZydnCoKZO/HM P5N9Df89N3cs67lPoA1sS13sN2o7DnR9T4TXi20luXVsLIfOF5Sq5/25ZFVj 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 xTZbu/irXJMraLWOWaeGutvG7D5C25VveT2/TTf+2tdm/7/aSwPoa/R/fvLw Sd//+S6ubfT3HfvrjrGl/u/00Vkr/jt9/KiP/+7i6vs/1yNN/NTD7TaBNkPY Meh7NzRE52xkifLaxpbVV4JUT6XRz3xtGOj32736qoS9dgvrq5CXH95C31rn 7SsBU/XZn/hU9kfzxrmz9tv7pceGHtxXocfpTvQ43Y0ebWANepxuocfpHumx tX/4fumxoYn4VehxthM9znajRxtYgx5nW+hxtkUB9u3PN7+/Y5/Kvv35zrPr 25/37c/79udrAfbtz68jt33787W+9c17oPtwvFMC12uEvgHYlbuhb4LVt0Tv W6L3LdH7luh9S/Q/Xkv02U75/5s1AN9S//X4STv/D3/0+f+7uH7v/b/vphv1 HWQrTV/d3TOLksoag5fzrPGYnTNOZX36rNGg+GpDql3HXJ/0VP7cGxC60nC2 93Dft7vv2+2uvm9337e779vd9+22MPu+3ZunepW+3TYx1Dfv7pt3b59h37xb /a6ad+8W/9v45VpJgGv0f8Zbffx/B1ff/7nv/9z3f+77P/f9n8O+/3Pf//lP d13B/7t2A+ir938+hZu9/3cXV9//ue//3Pd/7vs/9/2f+/7Pff/nvv9z3/+5 7//c93/u+z/3/Z/7/s9B3/+57//c93/u+z/3/Z/7/s99/+e+/3Pf//lP1v+5 2ksD6C31P4+On5y1+n896b//fifXLfV/3tDKWU54NKvi5LBIZ1Pn2qEQx5HX aLW09syMBxEHWXdmptVR+HaG3LB8H04DAl/+pPsO2H0H7L4Dtl9e3nfAdrjo O2CvxWrfAfs31AHbHEHp22D3bbD7a7/XxvjvdC/tv6/T//vR47O+//ddXFvo 78d11x5jW//v0yePW99/Ou7j/zu59t//m0/9YF0SbXxCODgajfbcDXznduBb Qht/2pS8bpydqMXzuZ5etyvAtnHuaoRfp4X3nolQa4h9S2S49THWncLZB+pO 16PudL/Lap3puYsx1h0X2gfqztaj7my/y2odPrqLMc5uKT2yRk7Xdcy9WQ9V B7oO9NftZU2cv65b7s0X/NvraU38uq5T7s0X/EfsbY1HSbVWBx/0ZJ7GkzBR P+cZrGhRYLEZCF8YLfSo/FL+Rptgk+TdZiNsf4A26F+3GTZJ4W02xPYHaIP+ dZtik0TeZmNsf4A26N95c+xryH0NyX+ULtrq5g201Z56Z3fDuXLb7DVg+o7Z 7Y7ZHW7bmq7ZYgWu0zl7rdu5sXv27gP+pjpod/iF27poi425SSfttY7ubt20 rz6D33RH7RZXb+iq3V76NTprr+Hwrd21rzP4vjpsqz9zh+3f9rVz/v/67R+2 5f8fnR43+3+dPDl70uf/7+Lq+z/0/R/6/g99/4e+/0Pf/6Hv/9D3f+j7P+yh /4MyMVPJPpE58csH/aV54Gikciqf/+abK7eM4ONOGw87/UFaShz3PSX+UD0l jvumEn1Tid97UwkUCOAr8mvp0O4+O0vMY9tVIsn+IC0l5nGjn0SScWdlsZN4 ahrCOxzCWdkkA9P4DbaUnqXSvhuPWDQc4L4HRd+Dou9B0feguJMeFL5v/0N2 SWlKP4YuNGqseqOKVVahfus7UPQdKG6vAwXqr+9F27jdSpVJ3Kw5/QmK6Jcq zj3SxKU8W0vvqn+ijreusJA7tNnLONHDEhiX5xNSM3trhECJkikzwfFlDoOA cYeB8smcql9QtJIsWxZWKH5sd85vJF+LsppOmR3FDZL++Ohh4bi5pjQ5paKB kfH7GrX8Y0zfFykyb64myalBr0/IaQslZUXI8D/ngLDpcfpuh/m4AyUG7Y4F HlPkbz+anjTkzEA0QwBsSseQpLmt3MV9SKBzYozDtfmkda+Bv7s2SbXpvRTk kEZjRe4V7Pgjr0s/yNbx77gnyp/p2mH/96btX7b1fzl5fPKkdf7r5Ljf/72L 6zb6v7TPft34tEbjtmyWtH+oB4W1Q9E3OFxlb3SMWx/x7se6lcpO/vKNvBab nUZw3azJktB5DCZtiq4h7b3J+bFD30c4slYz0dFMG9tOqXJw/shTjPQkCXMd yRYa7fSLkQcfETzMAoIQm9w3LkjkDG7IMe08u0SeG3i7yPB3WlbkGYzdQC6p YiAAtBDTdlhg0Pq245WaFQDtVVevgv5MfX/1V3/1V3/1V3/1V3/1V3/1V3/1 V3/1V3/d/fX/AdqHbJcAQAEA --=-C7z3pTdfK05E02lgfAiZ--