From hannes@cmpxchg.org Fri Oct 1 02:42:59 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o917gw7g041456 for ; Fri, 1 Oct 2010 02:42:58 -0500 X-ASG-Debug-ID: 1285919832-098c021c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cmpxchg.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF49D1500830 for ; Fri, 1 Oct 2010 00:57:13 -0700 (PDT) Received: from cmpxchg.org (f0.cmpxchg.org [85.214.51.133]) by cuda.sgi.com with ESMTP id Mmnp4w9M4oNqKsZ9 for ; Fri, 01 Oct 2010 00:57:13 -0700 (PDT) Date: Fri, 1 Oct 2010 09:43:54 +0200 From: Johannes Weiner To: xfs@oss.sgi.com Cc: John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: [patch] xfs: properly account for reclaimed inodes Subject: [patch] xfs: properly account for reclaimed inodes Message-ID: <20101001074354.GF2618@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Barracuda-Connect: f0.cmpxchg.org[85.214.51.133] X-Barracuda-Start-Time: 1285919833 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42396 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When marking an inode reclaimable, a per-AG counter is increased, the inode is tagged reclaimable in its per-AG tree, and, when this is the first reclaimable inode in the AG, the AG entry in the per-mount tree is also tagged. When an inode is finally reclaimed, however, it is only deleted from the per-AG tree. Neither the counter is decreased, nor is the parent tree's AG entry untagged properly. Since the tags in the per-mount tree are not cleared, the inode shrinker iterates over all AGs that have had reclaimable inodes at one point in time. The counters on the other hand signal an increasing amount of slab objects to reclaim. Since "70e60ce xfs: convert inode shrinker to per-filesystem context" this is not a real issue anymore because the shrinker bails out after one iteration. But the problem was observable on a machine running v2.6.34, where the reclaimable work increased and each process going into direct reclaim eventually got stuck on the xfs inode shrinking path, trying to scan several million objects. Fix this by properly unwinding the reclaimable-state tracking of an inode when it is reclaimed. Signed-off-by: Johannes Weiner Cc: stable@kernel.org --- fs/xfs/linux-2.6/xfs_sync.c | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index d59c4a6..81976ff 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -668,14 +668,11 @@ xfs_inode_set_reclaim_tag( xfs_perag_put(pag); } -void -__xfs_inode_clear_reclaim_tag( - xfs_mount_t *mp, +STATIC void +__xfs_inode_clear_reclaim( xfs_perag_t *pag, xfs_inode_t *ip) { - radix_tree_tag_clear(&pag->pag_ici_root, - XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); pag->pag_ici_reclaimable--; if (!pag->pag_ici_reclaimable) { /* clear the reclaim tag from the perag radix tree */ @@ -689,6 +686,17 @@ __xfs_inode_clear_reclaim_tag( } } +void +__xfs_inode_clear_reclaim_tag( + xfs_mount_t *mp, + xfs_perag_t *pag, + xfs_inode_t *ip) +{ + radix_tree_tag_clear(&pag->pag_ici_root, + XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); + __xfs_inode_clear_reclaim(pag, ip); +} + /* * Inodes in different states need to be treated differently, and the return * value of xfs_iflush is not sufficient to get this right. The following table @@ -838,6 +846,7 @@ reclaim: if (!radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) ASSERT(0); + __xfs_inode_clear_reclaim(pag, ip); write_unlock(&pag->pag_ici_lock); /* -- 1.7.2.3 From BATV+e75be7f76c630e3ca68c+2595+infradead.org+hch@bombadil.srs.infradead.org Fri Oct 1 03:34:30 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_23 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o918YUfc046911 for ; Fri, 1 Oct 2010 03:34:30 -0500 X-ASG-Debug-ID: 1285922130-3d3e03bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C5F73158583D for ; Fri, 1 Oct 2010 01:35:30 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id y3JEGY7dbKj1pTcZ for ; Fri, 01 Oct 2010 01:35:30 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P1b5V-0004jR-Oy; Fri, 01 Oct 2010 08:35:29 +0000 Date: Fri, 1 Oct 2010 04:35:29 -0400 From: Christoph Hellwig To: An?bal Monsalve Salazar Cc: Christoph Hellwig , nathans@debian.org, xfs@oss.sgi.com, Nathan Scott X-ASG-Orig-Subj: Re: xfsprogs Debian mantainaince Subject: Re: xfsprogs Debian mantainaince Message-ID: <20101001083529.GA15777@infradead.org> References: <20100814111513.GA8214@infradead.org> <1697333467.18161281921959476.JavaMail.root@mail-au.aconex.com> <20100829041924.GB2648@mapuche.apana.org.au> <20101001010226.GB3066@master.debian.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101001010226.GB3066@master.debian.org> User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1285922130 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 01, 2010 at 11:02:26AM +1000, An?bal Monsalve Salazar wrote: > Any news about access to kernel.org to merge changes before uploading? You'll need to apply yourself at ftpadmin@kernel.org. Please say it's for xfsprogs maintaince and quote me as sponsor. From BATV+e75be7f76c630e3ca68c+2595+infradead.org+hch@bombadil.srs.infradead.org Fri Oct 1 03:35:25 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o918ZPtp047010 for ; Fri, 1 Oct 2010 03:35:25 -0500 X-ASG-Debug-ID: 1285922981-099d03210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8D83E150035E for ; Fri, 1 Oct 2010 01:49:41 -0700 (PDT) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id akq6czWgxFGOMrXT for ; Fri, 01 Oct 2010 01:49:41 -0700 (PDT) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P1b6N-0004kj-2u; Fri, 01 Oct 2010 08:36:23 +0000 Date: Fri, 1 Oct 2010 04:36:23 -0400 From: Christoph Hellwig To: nathans@debian.org, anibal@debian.org Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsprogs Debian mantainaince Subject: Re: xfsprogs Debian mantainaince Message-ID: <20101001083623.GB15777@infradead.org> References: <20100814111513.GA8214@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100814111513.GA8214@infradead.org> User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1285922982 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Aug 14, 2010 at 07:15:13AM -0400, Christoph Hellwig wrote: > Also can we add xfs@oss.sgi.com to the Cc list for debian xfs > bugreports? I think most issues are upstream ones anyway, and > automatically sending them to the XFS list will get them a bigger > audience. Guys, any idea how to get this done? From timh.bergstrom@diino.net Fri Oct 1 04:26:54 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_40,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o919QrQd053047 for ; Fri, 1 Oct 2010 04:26:54 -0500 X-ASG-Debug-ID: 1285926069-297e01720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iw0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CC77315008CB for ; Fri, 1 Oct 2010 02:41:09 -0700 (PDT) Received: from mail-iw0-f181.google.com (mail-iw0-f181.google.com [209.85.214.181]) by cuda.sgi.com with ESMTP id 3rINjdOD68RmWv3A for ; Fri, 01 Oct 2010 02:41:09 -0700 (PDT) Received: by iwn39 with SMTP id 39so3441035iwn.26 for ; Fri, 01 Oct 2010 02:27:52 -0700 (PDT) Received: by 10.231.31.196 with SMTP id z4mr5319084ibc.111.1285925272720; Fri, 01 Oct 2010 02:27:52 -0700 (PDT) MIME-Version: 1.0 Received: by 10.231.193.211 with HTTP; Fri, 1 Oct 2010 02:27:32 -0700 (PDT) From: =?ISO-8859-1?Q?Timh_Bergstr=F6m?= Date: Fri, 1 Oct 2010 11:27:32 +0200 Message-ID: X-ASG-Orig-Subj: unsubscribe Subject: unsubscribe To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iw0-f181.google.com[209.85.214.181] X-Barracuda-Start-Time: 1285926069 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4129 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42404 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --=20 Timh Bergstr=F6m System Operations Manager Diino AB - www.diino.com :wq From arenaud@sgi.com Fri Oct 1 08:08:37 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91D8bxH074965 for ; Fri, 1 Oct 2010 08:08:37 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2FD51304066 for ; Fri, 1 Oct 2010 06:09:35 -0700 (PDT) Received: from [134.15.95.106] (cf-vpn-hw-arenaud-9.corp.sgi.com [134.15.95.106]) by estes.americas.sgi.com (Postfix) with ESMTP id D3C72700186B for ; Fri, 1 Oct 2010 08:09:34 -0500 (CDT) Message-ID: <4CA5DD8D.3010200@sgi.com> Date: Fri, 01 Oct 2010 09:09:33 -0400 From: Alain Renaud User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100915 Thunderbird/3.0.8 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: [PATCH] xfstests: make 223 use more compatible indirection operator Content-Type: multipart/mixed; boundary="------------020905090800000305080804" X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------020905090800000305080804 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello all, I notice while running xfstests on SLES machine that the test 223 fail because of syntax error. # bash 223 QA output created by 223 223: line 66: syntax error near unexpected token `>' 223: line 66: ` _scratch_mkfs_geom $SUNIT_BYTES 4 $BLOCKSIZE&>> $seq.full' The error is due to the use of the '&>>' operator for redirection that does not work on older bash version(3.2.x). Note that this operator only seem to work with bash version 4.X+ This patch simply replace the operator with '>> $seq.full 2>&1' which does the same thing. -- Signed-off-by: Alain Renaud --------------020905090800000305080804 Content-Type: text/x-patch; name="223.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="223.patch" Index: xfstests/223 =================================================================== --- xfstests/223.orig +++ xfstests/223 @@ -63,7 +63,7 @@ let SUNIT_BLOCKS=$SUNIT_BYTES/$BLOCKSIZE echo "=== mkfs with su $SUNIT_BLOCKS blocks x 4 ===" - _scratch_mkfs_geom $SUNIT_BYTES 4 $BLOCKSIZE &>> $seq.full + _scratch_mkfs_geom $SUNIT_BYTES 4 $BLOCKSIZE >> $seq.full 2>&1 _scratch_mount for SIZE_MULT in 1 2 8 64 256; do @@ -73,10 +73,10 @@ for FILE in 1 2 3 4; do xfs_io -F -f -c "falloc 0 $SIZE" \ $SCRATCH_MNT/file-$FILE-$SIZE-falloc \ - &>> $seq.full + >> $seq.full 2>&1 xfs_io -F -f -c "pwrite 0 $SIZE" \ $SCRATCH_MNT/file-$FILE-$SIZE-write \ - &>> $seq.full + >> $seq.full 2>&1 src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-falloc \ $SUNIT_BLOCKS | _filter_scratch src/t_stripealign $SCRATCH_MNT/file-$FILE-$SIZE-write \ @@ -85,7 +85,8 @@ done echo "=== Testing size 1g falloc on ${SUNIT_K}k stripe ===" - xfs_io -F -f -c "falloc 0 1g" $SCRATCH_MNT/file-1g-falloc &>> $seq.full + xfs_io -F -f -c "falloc 0 1g" \ + $SCRATCH_MNT/file-1g-falloc >> $seq.full 2>&1 src/t_stripealign $SCRATCH_MNT/file-1g-falloc $SUNIT_BLOCKS \ | _filter_scratch @@ -93,7 +94,7 @@ echo "=== Testing size 1073745920 falloc on ${SUNIT_K}k stripe ===" xfs_io -F -f -c "falloc 0 1073745920" \ - $SCRATCH_MNT/file-1073745920-falloc &>> $seq.full + $SCRATCH_MNT/file-1073745920-falloc >> $seq.full 2>&1 src/t_stripealign $SCRATCH_MNT/file-1073745920-falloc \ $SUNIT_BLOCKS | _filter_scratch --------------020905090800000305080804-- From aelder@sgi.com Fri Oct 1 08:55:53 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91Dtqio079847 for ; Fri, 1 Oct 2010 08:55:53 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id CCB3A30408D; Fri, 1 Oct 2010 06:56:53 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:56:47 -0500 Subject: Re: [PATCH 2/3] [PATCH 2/3] xfs: do not use xfs_mod_incore_sb for per-cpu counters From: Alex Elder Reply-To: aelder@sgi.com To: Christoph Hellwig Cc: xfs@oss.sgi.com In-Reply-To: <20100930022601.268875972@bombadil.infradead.org> References: <20100930022553.391390964@bombadil.infradead.org> <20100930022601.268875972@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:56:46 -0500 Message-ID: <1285941406.5119.454.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Oct 2010 13:56:47.0868 (UTC) FILETIME=[7D6C6BC0:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2010-09-29 at 22:25 -0400, Christoph Hellwig wrote: > plain text document attachment > (xfs-dont-use-xfs_mod_incore_sb-for-percpu-counters) > Export xfs_icsb_modify_counters and always use it for modifying the per-cpu > counters. Remove support for per-cpu counters from xfs_mod_incore_sb to > simplify it. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Fri Oct 1 08:55:53 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91DtqHf079848 for ; Fri, 1 Oct 2010 08:55:52 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id D8FD930408F; Fri, 1 Oct 2010 06:56:53 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:56:52 -0500 Subject: Re: [PATCH 3/3] [PATCH 3/3] xfs: do not use xfs_mod_incore_sb_batch for per-cpu counters From: Alex Elder Reply-To: aelder@sgi.com To: Christoph Hellwig Cc: xfs@oss.sgi.com In-Reply-To: <20100930022601.566811585@bombadil.infradead.org> References: <20100930022553.391390964@bombadil.infradead.org> <20100930022601.566811585@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:56:51 -0500 Message-ID: <1285941411.5119.455.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Oct 2010 13:56:52.0805 (UTC) FILETIME=[805DBF50:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2010-09-29 at 22:25 -0400, Christoph Hellwig wrote: > plain text document attachment (xfs-simplify-icsb-updates) > Update the per-cpu counters manually in xfs_trans_unreserve_and_mod_sb and > remove support for per-cpu counters from xfs_mod_incore_sb_batch to > simplify it. And added benefit is that we don't have to take m_sb_lock > for transactions that only modify per-cpu counters. > > Signed-off-by: Christoph Hellwig Looks good. I'll pull this series in today. Reviewed-by: Alex Elder From aelder@sgi.com Fri Oct 1 08:55:53 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91DtqRv079846 for ; Fri, 1 Oct 2010 08:55:53 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id C02F130408C; Fri, 1 Oct 2010 06:56:53 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:56:41 -0500 Subject: Re: [PATCH 1/3] [PATCH 1/3] xfs: remove XFS_MOUNT_NO_PERCPU_SB From: Alex Elder Reply-To: aelder@sgi.com To: Christoph Hellwig Cc: xfs@oss.sgi.com In-Reply-To: <20100930022600.975540107@bombadil.infradead.org> References: <20100930022553.391390964@bombadil.infradead.org> <20100930022600.975540107@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:56:40 -0500 Message-ID: <1285941400.5119.453.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Oct 2010 13:56:41.0962 (UTC) FILETIME=[79E73CA0:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2010-09-29 at 22:25 -0400, Christoph Hellwig wrote: > Fail the mount if we can't allocate memory for the per-CPU counters. > This is consistent with how we handle everything else in the mount > path and makes the superblock counter modification a lot simpler. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Fri Oct 1 08:56:59 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91DuxWf080000 for ; Fri, 1 Oct 2010 08:56:59 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 75E8D8F8081; Fri, 1 Oct 2010 06:58:00 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:57:19 -0500 Subject: Re: [PATCH VER 6] xfsprogs: projid32bit handling From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz =?UTF-8?Q?Mi=C5=9Bkiewicz?= Cc: xfs@oss.sgi.com In-Reply-To: <1285481438-31799-1-git-send-email-arekm@maven.pl> References: <1285481418-31739-1-git-send-email-arekm@maven.pl> <1285481438-31799-1-git-send-email-arekm@maven.pl> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:57:18 -0500 Message-ID: <1285941438.5119.461.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 01 Oct 2010 13:57:19.0087 (UTC) FILETIME=[90080FF0:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 2010-09-26 at 08:10 +0200, Arkadiusz Mi=C5=9Bkiewicz wrote: > Add projid32bit handling to userspace. mkfs.xfs is able to enable this > feature for new filesystems. xfs_db knows what projid_lo/hi are. >=20 > Signed-off-by: Arkadiusz Mi=C5=9Bkiewicz > Reviewed-by: Christoph Hellwig This looks good (although I've only done a quick review). I have found a few nits, below, which could be pretty easily fixed before it's committed (by me unless some else is going to do it). I think it would be nice to have xfs_repair (and check) report the existence of non-zero bs_projid_hi on a filesystem without the PROJID32BIT superblock bit set. But that wait. Reviewed-by: Alex Elder > --- >=20 > News: > - use 0x80 instead of 0x20 for PROJID32BIT superblock bit (as 0x20 > and 0x40 are reserved) = = =20 . . . > diff --git a/include/xfs_fs.h b/include/xfs_fs.h > index 74e7274..9a51c64 100644 > --- a/include/xfs_fs.h > +++ b/include/xfs_fs.h > @@ -299,9 +299,10 @@ typedef struct xfs_bstat { > __s32 bs_extsize; /* extent size */ > __s32 bs_extents; /* number of extents */ > __u32 bs_gen; /* generation count */ > - __u16 bs_projid; /* project id */ > + __u16 bs_projid; /* lower part of project id */ This: __u16 bs_projid_lo; /* lower part... */ #define bs_projid bs_projid_lo ...would make the old code compile but would make the struct definition more consistent with the others. > __u16 bs_forkoff; /* inode fork offset in bytes */ > - unsigned char bs_pad[12]; /* pad space, unused */ > + __u16 bs_projid_hi; /* higher part of project id */ > + unsigned char bs_pad[10]; /* pad space, unused */ > __u32 bs_dmevmask; /* DMIG event mask */ > __u16 bs_dmstate; /* DMIG state info */ > __u16 bs_aextents; /* attribute number of extents */ . . . > diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 > index fdd38d4..a59bc89 100644 > --- a/man/man8/mkfs.xfs.8 > +++ b/man/man8/mkfs.xfs.8 > @@ -350,6 +350,13 @@ between attribute and extent data. > The previous version 1, which has fixed regions for attribute and > extent data, is kept for backwards compatibility with kernels older > than version 2.6.16. > +.TP > +.BI projid32bit[=3D value] projid32bit[=3Dvalue] > +This is used to enable 32bit quota project identifiers. The > +.I value > +is either 0 or 1, with 1 signifying that 32bit projid are to be enabled. > +If the If the value > +is omitted, 0 is assumed. > .RE > .TP > .BI \-l " log_section_options" . . . From aelder@sgi.com Fri Oct 1 08:56:59 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91DuxwW080001 for ; Fri, 1 Oct 2010 08:56:59 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 58DC48F8035; Fri, 1 Oct 2010 06:57:57 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:57:13 -0500 Subject: Re: [PATCH VER 6] Extend project quotas to support 32bit project identifiers. From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz =?UTF-8?Q?Mi=C5=9Bkiewicz?= Cc: xfs@oss.sgi.com In-Reply-To: <1285481418-31739-1-git-send-email-arekm@maven.pl> References: <1285481418-31739-1-git-send-email-arekm@maven.pl> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:57:13 -0500 Message-ID: <1285941433.5119.460.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 01 Oct 2010 13:57:13.0759 (UTC) FILETIME=[8CDB12F0:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 2010-09-26 at 08:10 +0200, Arkadiusz Mi=C5=9Bkiewicz wrote: > This patch adds support for 32bit project quota identifiers. >=20 > On disk format is backward compatible with 16bit projid numbers. projid > on disk is now keept in two 16bit values - di_projid_lo (which holds the > same position as old 16bit projid value) and new di_projid_hi (takes > existing padding) and convertes from/to 32bit value on the fly. >=20 > xfs_admin (for existing fs), mkfs.xfs (for new fs) needs to be used > to enable PROJID32BIT support. >=20 > Signed-off-by: Arkadiusz Mi=C5=9Bkiewicz > Reviewed-by: Christoph Hellwig > --- Minor suggestion, below (which I can implement), otherwise this looks good. I didn't review it as carefully this time. But the model now is that 32-bit project id's are only supported if the filesystem has that feature bit set. And the feature bit is only set at mkfs time or by xfs_db (not automatically as you had it before). This sounds good to me. Reviewed-by: Alex Elder > News: > - use 0x80 instead of 0x20 for PROJID32BIT superblock bit (as 0x20 > and 0x40 are reserved) > - style fix . . . > diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.h b/fs/xfs/linux-2.6/xfs_ioctl3= 2.h > index 1024c4f..f92d662 100644 > --- a/fs/xfs/linux-2.6/xfs_ioctl32.h > +++ b/fs/xfs/linux-2.6/xfs_ioctl32.h > @@ -65,8 +65,9 @@ typedef struct compat_xfs_bstat { > __s32 bs_extsize; /* extent size */ > __s32 bs_extents; /* number of extents */ > __u32 bs_gen; /* generation count */ > - __u16 bs_projid; /* project id */ > - unsigned char bs_pad[14]; /* pad space, unused */ > + __u16 bs_projid; /* lower part of project id */ This could be: __u16 bs_projid_lo; /* ... */ #define bs_projid bs_projid_lo ...to make it work with old code but be more consistent with new. > + __u16 bs_projid_hi; /* high part of project id */ > + unsigned char bs_pad[12]; /* pad space, unused */ > __u32 bs_dmevmask; /* DMIG event mask */ > __u16 bs_dmstate; /* DMIG state info */ > __u16 bs_aextents; /* attribute number of extents */ . . . > diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h > index 87c2e9d..ae1c500 100644 > --- a/fs/xfs/xfs_fs.h > +++ b/fs/xfs/xfs_fs.h > @@ -293,9 +293,10 @@ typedef struct xfs_bstat { > __s32 bs_extsize; /* extent size */ > __s32 bs_extents; /* number of extents */ > __u32 bs_gen; /* generation count */ > - __u16 bs_projid; /* project id */ > + __u16 bs_projid; /* lower part of project id */ Same thing here. > __u16 bs_forkoff; /* inode fork offset in bytes */ > - unsigned char bs_pad[12]; /* pad space, unused */ > + __u16 bs_projid_hi; /* higher part of project id */ > + unsigned char bs_pad[10]; /* pad space, unused */ > __u32 bs_dmevmask; /* DMIG event mask */ > __u16 bs_dmstate; /* DMIG state info */ > __u16 bs_aextents; /* attribute number of extents */ . . . From aelder@sgi.com Fri Oct 1 08:57:00 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91Dv0Gm080019 for ; Fri, 1 Oct 2010 08:57:00 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 16F988F8096; Fri, 1 Oct 2010 06:58:01 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:57:41 -0500 Subject: Re: [PATCH VER 6] xfsprogs: projid32bit handling From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com In-Reply-To: <201009260814.00111.arekm@maven.pl> References: <1285481418-31739-1-git-send-email-arekm@maven.pl> <1285481438-31799-1-git-send-email-arekm@maven.pl> <201009260814.00111.arekm@maven.pl> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:57:40 -0500 Message-ID: <1285941460.5119.463.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 01 Oct 2010 13:57:41.0478 (UTC) FILETIME=[9D60A860:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 2010-09-26 at 08:13 +0200, Arkadiusz Miskiewicz wrote: > On Sunday 26 of September 2010, Arkadiusz Mi=C5=9Bkiewicz wrote: > > Add projid32bit handling to userspace. mkfs.xfs is able to enable this > > feature for new filesystems. xfs_db knows what projid_lo/hi are. >=20 > ... and xfs_admin if someone needs it anyway. Do you intend for this to be included or not? I also have a question, below. >=20 > News: > - use 0x80 instead of 0x20 for PROJID32BIT superblock bit (as 0x20 > and 0x40 are reserved) >=20 > diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh > index a7a3fdb..ec8424d 100755 > --- a/db/xfs_admin.sh > +++ b/db/xfs_admin.sh > @@ -6,9 +6,43 @@ > status=3D0 > DB_OPTS=3D"" > REPAIR_OPTS=3D"" > -USAGE=3D"Usage: xfs_admin [-efjluV] [-c 0|1] [-L label] [-U uuid] device= " > +USAGE=3D"Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] devic= e" Here you are describing a "p" flag, but below you are actually adding a "3" flag (and documented as such in the man page). I prefer "p" (but maybe there's a reason you used "3" below). Which is it? =20 > -while getopts "efjluc:L:U:V" c > +set_features2_bit() { > + device=3D"$1" > + bit=3D"$2" > + > + if [ -z "$device" ]; then > + echo "$0: device name is missing" >&2 > + return 1 > + fi > + > + if [ -z "$bit" ]; then > + echo "$0: bits to set are missing" >&2 > + return 1 > + fi > + > + # read current bits > + features2=3D$(xfs_db -p xfs_admin -x -r -c 'sb' -c 'print features2' "$= device" | awk ' { print $3 } ') > + if [ -z "$features2" ]; then > + echo "$0: can't read features2 from superblock!" >&2 > + return 1 > + fi > + bad_features2=3D$(xfs_db -p xfs_admin -x -r -c 'sb' -c 'print bad_featu= res2' "$device" | awk ' { print $3 } ') > + if [ -z "$bad_features2" ]; then > + echo "$0: can't read bad_features2 from superblock!" >&2 > + return 1 > + fi > + > + # set new bits > + features2=3D$((features2 | bit)) > + bad_features2=3D$((bad_features2 | bit)) > + xfs_db -p xfs_admin -x -c 'sb' -c "write features2 $features2" "$device= " && \ > + xfs_db -p xfs_admin -x -c 'sb' -c "write bad_features2 $bad_features2"= "$device" > + return $? > +} > + > +while getopts "efjlu3c:L:U:V" > do > case $c in > c) REPAIR_OPTS=3D$REPAIR_OPTS" -c lazycount=3D"$OPTARG;; > @@ -17,6 +51,7 @@ do > j) DB_OPTS=3D$DB_OPTS" -c 'version log2'";; > l) DB_OPTS=3D$DB_OPTS" -r -c label";; > L) DB_OPTS=3D$DB_OPTS" -c 'label "$OPTARG"'";; > + 3) FEATURES_BIT=3D"0x80";; > u) DB_OPTS=3D$DB_OPTS" -r -c uuid";; > U) DB_OPTS=3D$DB_OPTS" -c 'uuid "$OPTARG"'";; > V) xfs_db -p xfs_admin -V > @@ -31,7 +66,12 @@ done > set -- extra $@ > shift $OPTIND > case $# in > - 1) if [ -n "$DB_OPTS" ] > + 1) if [ -n "$FEATURES_BIT" ] > + then > + set_features2_bit "$1" "$FEATURES_BIT" > + status=3D$? > + fi > + if [ -n "$DB_OPTS" ] > then > eval xfs_db -x -p xfs_admin $DB_OPTS $1 > status=3D$? > diff --git a/man/man8/xfs_admin.8 b/man/man8/xfs_admin.8 > index 8e3155b..6b727f3 100644 > --- a/man/man8/xfs_admin.8 > +++ b/man/man8/xfs_admin.8 > @@ -4,7 +4,7 @@ xfs_admin \- change parameters of an XFS filesystem > .SH SYNOPSIS > .B xfs_admin > [ > -.B \-eflu > +.B \-eflu3 > ] [ > .BR "\-c 0" | 1 > ] [ > @@ -55,6 +55,9 @@ Print the current filesystem label. > .B \-u > Print the current filesystem UUID (Universally Unique IDentifier). > .TP > +.B \-3 > +Enable 32bit project identifier support (PROJID32BIT feature). > +.TP > .BR "\-c 0" | 1 > Enable (1) or disable (0) lazy-counters in the filesystem. > This operation may take quite a bit of time on large filesystems as the >=20 >=20 From aelder@sgi.com Fri Oct 1 08:57:00 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91DuxkS080016 for ; Fri, 1 Oct 2010 08:57:00 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id DA8F48F8084; Fri, 1 Oct 2010 06:58:00 -0700 (PDT) Received: from [134.15.64.54] ([134.15.64.54]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 08:57:36 -0500 Subject: Re: [PATCH VER 6] xfstests: Quota project id setting overflow From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz =?UTF-8?Q?Mi=C5=9Bkiewicz?= Cc: xfs@oss.sgi.com In-Reply-To: <1285481456-31856-1-git-send-email-arekm@maven.pl> References: <1285481438-31799-1-git-send-email-arekm@maven.pl> <1285481456-31856-1-git-send-email-arekm@maven.pl> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 08:57:35 -0500 Message-ID: <1285941455.5119.462.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 01 Oct 2010 13:57:36.0649 (UTC) FILETIME=[9A7FCF90:01CB6170] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 2010-09-26 at 08:10 +0200, Arkadiusz Mi=C5=9Bkiewicz wrote: > From: Arkadiusz Miskiewicz >=20 > Test 3 quota project setting id conditions: > - set 16bit project quota id -> should succeed > - set 32bit project quota id -> should succeed (with projid32bit > patch applied; fail otherwise) > - over 32bit project quota id -> should always fail >=20 > Signed-off-by: Arkadiusz Mi=C5=9Bkiewicz > Reviewed-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder From SRS0+99R5+33+fromorbit.com=david@internode.on.net Fri Oct 1 09:01:50 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91E1oYL080551 for ; Fri, 1 Oct 2010 09:01:50 -0500 X-ASG-Debug-ID: 1285941768-559702320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B9F31E72D4A for ; Fri, 1 Oct 2010 07:02:49 -0700 (PDT) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id 48LktbxfBpsYXqqj for ; Fri, 01 Oct 2010 07:02:49 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41184596-1927428 for multiple; Fri, 01 Oct 2010 23:32:39 +0930 (CST) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P1gC5-0001ke-4E; Sat, 02 Oct 2010 00:02:37 +1000 Date: Sat, 2 Oct 2010 00:02:37 +1000 From: Dave Chinner To: Johannes Weiner Cc: xfs@oss.sgi.com, John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes Message-ID: <20101001140237.GC4681@dastard> References: <20101001074354.GF2618@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101001074354.GF2618@cmpxchg.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1285941770 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42423 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 01, 2010 at 09:43:54AM +0200, Johannes Weiner wrote: > When marking an inode reclaimable, a per-AG counter is increased, the > inode is tagged reclaimable in its per-AG tree, and, when this is the > first reclaimable inode in the AG, the AG entry in the per-mount tree > is also tagged. > > When an inode is finally reclaimed, however, it is only deleted from > the per-AG tree. Neither the counter is decreased, nor is the parent > tree's AG entry untagged properly. > > Since the tags in the per-mount tree are not cleared, the inode > shrinker iterates over all AGs that have had reclaimable inodes at one > point in time. > > The counters on the other hand signal an increasing amount of slab > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > per-filesystem context" this is not a real issue anymore because the > shrinker bails out after one iteration. > > But the problem was observable on a machine running v2.6.34, where the > reclaimable work increased and each process going into direct reclaim > eventually got stuck on the xfs inode shrinking path, trying to scan > several million objects. > > Fix this by properly unwinding the reclaimable-state tracking of an > inode when it is reclaimed. > > Signed-off-by: Johannes Weiner > Cc: stable@kernel.org Looks OK to me, and has run through a few hours of testing without problems. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@sgi.com Fri Oct 1 12:17:07 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91HH7QV100479 for ; Fri, 1 Oct 2010 12:17:07 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id DE773AC00C; Fri, 1 Oct 2010 10:18:01 -0700 (PDT) Received: from [128.162.232.145] ([128.162.232.145]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 1 Oct 2010 12:17:24 -0500 Subject: Re: [patch] xfs: properly account for reclaimed inodes From: Alex Elder Reply-To: aelder@sgi.com To: Johannes Weiner Cc: xfs@oss.sgi.com, John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org In-Reply-To: <20101001074354.GF2618@cmpxchg.org> References: <20101001074354.GF2618@cmpxchg.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 01 Oct 2010 12:17:23 -0500 Message-ID: <1285953443.2422.4.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Oct 2010 17:17:24.0195 (UTC) FILETIME=[83A22B30:01CB618C] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > When marking an inode reclaimable, a per-AG counter is increased, the > inode is tagged reclaimable in its per-AG tree, and, when this is the > first reclaimable inode in the AG, the AG entry in the per-mount tree > is also tagged. > > When an inode is finally reclaimed, however, it is only deleted from > the per-AG tree. Neither the counter is decreased, nor is the parent > tree's AG entry untagged properly. > > Since the tags in the per-mount tree are not cleared, the inode > shrinker iterates over all AGs that have had reclaimable inodes at one > point in time. > > The counters on the other hand signal an increasing amount of slab > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > per-filesystem context" this is not a real issue anymore because the > shrinker bails out after one iteration. > > But the problem was observable on a machine running v2.6.34, where the > reclaimable work increased and each process going into direct reclaim > eventually got stuck on the xfs inode shrinking path, trying to scan > several million objects. > > Fix this by properly unwinding the reclaimable-state tracking of an > inode when it is reclaimed. > > Signed-off-by: Johannes Weiner > Cc: stable@kernel.org Yes, this looks right to me. The state was correctly adjusted in xfs_iget_cache_hit() when a RECLAIMABLE inode is found in the cache, but it was not done when reclaim completes. Reviewed-by: Alex Elder From upgradecct212@indiatimes.com Fri Oct 1 14:21:52 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91JLpPr114601 for ; Fri, 1 Oct 2010 14:21:51 -0500 X-ASG-Debug-ID: 1285960969-1d3703500000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vomta2.indiatimes.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 6F65818A0D45 for ; Fri, 1 Oct 2010 12:22:49 -0700 (PDT) Received: from vomta2.indiatimes.com (vomta2.inidiatimes.com [223.165.24.79]) by cuda.sgi.com with SMTP id R5HhoHEeXOD3eBZK for ; Fri, 01 Oct 2010 12:22:49 -0700 (PDT) Received: (qmail 18208 invoked by uid 508); 1 Oct 2010 19:22:53 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=private; d=indiatimes.com; b=PZZLzy/YoFIfiVK4cVUq6HkFcy6KBal/Kgy8Tq1cLiXZi6mQApgmY5laOjxNy9m+ ; Received: from 192.168.24.55 by IndiatimesMail-24.79 (envelope-from , uid 502) with qmail-scanner-1.25st (perlscan: 1.25st. Clear:RC:1(192.168.24.55):. Processed in 0.017482 secs); 01 Oct 2010 19:22:53 -0000 X-Indiatimes-Scanner-Mail-From: upgradecct212@indiatimes.com via IndiatimesMail-24.79 X-Indiatimes-Scanner: 1.25st (Clear:RC:1(192.168.24.55):. Processed in 0.017482 secs Process 18197) Received: from unknown (HELO irmta8.indiatimes.com) (192.168.24.55) by vomta2.indiatimes.com with SMTP; 1 Oct 2010 19:22:53 -0000 Received: from tilmb14.indiatimes.com (unknown [192.168.23.10]) by irmta8.indiatimes.com (Postfix) with ESMTP id 9F440BC8159; Sat, 2 Oct 2010 00:52:43 +0530 (IST) Date: Sat, 2 Oct 2010 00:52:43 +0530 (IST) From: Webmail Upgrade Team Message-ID: <1191339331.1012701285960963717.JavaMail.root@tilmb14.indiatimes.com> X-ASG-Orig-Subj: Upgrade Your Email Account Subject: Upgrade Your Email Account MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [115.184.58.112] X-Mailer: Zimbra 5.0.6_GA_2313.RHEL4_64 (ZimbraWebClient - FF3.0 (Win)/5.0.6_GA_2313.RHEL4_64) To: undisclosed-recipients:; X-Barracuda-Connect: vomta2.inidiatimes.com[223.165.24.79] X-Barracuda-Start-Time: 1285960971 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4909 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42444 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean You have reached the limit of your email quota. You will not be able to send or receive new mail until you boost your mailbox size. Click the below link and fill the form to upgrade your account. http://use.my/%20system-helpdesk5/ Technical Support 192.168.0.1 From arekm@maven.pl Fri Oct 1 14:35:55 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91JZsbL116124 for ; Fri, 1 Oct 2010 14:35:55 -0500 X-ASG-Debug-ID: 1285962611-5197029e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F97C15F1D7A for ; Fri, 1 Oct 2010 12:50:11 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id CNk48HMvRDTAybvf for ; Fri, 01 Oct 2010 12:50:11 -0700 (PDT) Received: from chello087207113141.chello.pl ([87.207.113.141]:46528 helo=tarm.maven.pl) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1P1lPX-0007tM-Hn for xfs@oss.sgi.com; Fri, 01 Oct 2010 21:36:51 +0200 Received: from arekm by tarm.maven.pl with local (Exim 4.72) (envelope-from ) id 1P1lPT-0005a7-K6 for xfs@oss.sgi.com; Fri, 01 Oct 2010 21:36:47 +0200 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_metadump in never ending loop Subject: xfs_metadump in never ending loop Date: Fri, 1 Oct 2010 21:36:47 +0200 User-Agent: KMail/1.13.5 (Linux/2.6.36-rc6; KDE/4.5.1; x86_64; ; ) MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201010012136.47502.arekm@maven.pl> X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1285962613 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0037 1.0000 -1.9967 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42444 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean =20 generate_obfuscated_name() in metadump.c can go into never ending loop for some file names. Reproducer below. Can someone look into it? Thanks. #include #include typedef unsigned char uchar_t; typedef __uint32_t xfs_dahash_t; #define is_invalid_char(c) ((c) =3D=3D '/' || (c) =3D=3D '\0') #define rol32(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) static inline uchar_t random_filename_char(void) { uchar_t c; do { c =3D random() % 127 + 1; } while (c =3D=3D '/'); return c; } int main() { int namelen =3D 5, i, dup; xfs_dahash_t hash =3D 978052928; xfs_dahash_t newhash; uchar_t *name =3D "R\323\257NE\002\320\000"; uchar_t newname[NAME_MAX]; do { dup =3D 0; newname[0] =3D '/'; for (;;) { /* if the first char is a "/", preserve it */ i =3D (name[0] =3D=3D '/'); for (newhash =3D 0; i < namelen - 5; i++) { newname[i] =3D random_filename_char(); newhash =3D newname[i] ^ rol32(newhash, 7); } newhash =3D rol32(newhash, 3) ^ hash; if (name[0] !=3D '/' || namelen > 5) { newname[namelen - 5] =3D (newhash >> 28) | (random_filename_char() & 0= xf0); if (is_invalid_char(newname[namelen - 5])) continue; } newname[namelen - 4] =3D (newhash >> 21) & 0x7f; if (is_invalid_char(newname[namelen - 4])) continue; newname[namelen - 3] =3D (newhash >> 14) & 0x7f; if (is_invalid_char(newname[namelen - 3])) continue; newname[namelen - 2] =3D (newhash >> 7) & 0x7f; if (is_invalid_char(newname[namelen - 2])) continue; newname[namelen - 1] =3D ((newhash >> 0) ^ (newname[namelen - 5] >> 4)) & 0x7f; if (is_invalid_char(newname[namelen - 1])) continue; break; } } while (dup); } =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From robertpipca@gmail.com Fri Oct 1 15:05:10 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_44,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91K5AMb119342 for ; Fri, 1 Oct 2010 15:05:10 -0500 X-ASG-Debug-ID: 1285963569-2d4d03e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-qy0-f174.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 049A11E74326 for ; Fri, 1 Oct 2010 13:06:09 -0700 (PDT) Received: from mail-qy0-f174.google.com (mail-qy0-f174.google.com [209.85.216.174]) by cuda.sgi.com with ESMTP id gxWBehkeJX5OOLi0 for ; Fri, 01 Oct 2010 13:06:09 -0700 (PDT) Received: by qyk36 with SMTP id 36so3621945qyk.5 for ; Fri, 01 Oct 2010 13:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=Hxe6hVcCMb2gJem+CWzky1e/Ao2LdQFeW+JZW2g1KSs=; b=Q//TGteS2bujSnePwovmM9jECvcj5GKMxBy+iXDz0m3PySvl6AUihFztiCJArXsyA/ MD2vJeo5kqgvnnSjsTi+yx3rZjWY2Y9tfFzKYDYXvfZNseeDdybRdRl/G//ZbqB8jr6y HABd8n+i8PdrF1kyh/JN8l48CD+hwNydXaQgA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=QAPAIB9iQEIb9sLT7q8R9pUz7DcNk/HMo1csW0eUjKGUql8FQG4Hk2PeV48slfd7dU mBrmbjSy5P2pY/Ba7WTISqhtULItzrkdcIK0QjUtW7dMF/9y/tnzpPYvAv9/ddz0Fg3s zgxFkz9uRPVdWg7aBV5B4Y/YaY/O392y05ljw= MIME-Version: 1.0 Received: by 10.220.53.129 with SMTP id m1mr838748vcg.127.1285963568871; Fri, 01 Oct 2010 13:06:08 -0700 (PDT) Received: by 10.220.112.208 with HTTP; Fri, 1 Oct 2010 13:06:08 -0700 (PDT) Date: Fri, 1 Oct 2010 17:06:08 -0300 Message-ID: X-ASG-Orig-Subj: xfs_db -c frag -r /dev/sdb1 segmentation fault Subject: xfs_db -c frag -r /dev/sdb1 segmentation fault From: Robert Pipca To: xfs@oss.sgi.com, Robert Pipca Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qy0-f174.google.com[209.85.216.174] X-Barracuda-Start-Time: 1285963571 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42447 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I'm using kernel 2.6.34.7 on a gentoo amd64 system. Towards the end of the command, I get: read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 352256, SEEK_SET) = 352256 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 376832, SEEK_SET) = 376832 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 393216, SEEK_SET) = 393216 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 417792, SEEK_SET) = 417792 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 434176, SEEK_SET) = 434176 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 450560, SEEK_SET) = 450560 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 475136, SEEK_SET) = 475136 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 491520, SEEK_SET) = 491520 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 516096, SEEK_SET) = 516096 read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., 16384) = 16384 lseek(4, 14190936064, SEEK_SET) = 14190936064 read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 532480, SEEK_SET) = 532480 read(4, "IN\201\240\2\3\0\0\0\0\377\376\0\0\377\376\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\21L"..., 16384) = 16384 lseek(4, 37129601024, SEEK_SET) = 37129601024 read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 37028130816, SEEK_SET) = 37028130816 read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 36522024960, SEEK_SET) = 36522024960 read(4, "\177\260g\203\223s\231\364\273\222\276\34\363~\253\355\271\271\17h\237\v\357\274\230\25\334\351x\2719&\34"..., 4096) = 4096 brk(0x26af000) = 0x26af000 brk(0x26a0000) = 0x26a0000 mmap(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff07237e000 brk(0x2690000) = 0x2690000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Is this a kernel or a XFS problem? Cheers, - Robert From nathans@debian.org Fri Oct 1 18:02:01 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o91N20Hx130850 for ; Fri, 1 Oct 2010 18:02:01 -0500 X-ASG-Debug-ID: 1285974979-260902730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 86A3115F105D for ; Fri, 1 Oct 2010 16:16:19 -0700 (PDT) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id WSu3C0kci0JYYa4R for ; Fri, 01 Oct 2010 16:16:19 -0700 (PDT) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id EC9D889F929; Sat, 2 Oct 2010 09:02:56 +1000 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id jI9t6CEJl1CdEvZi; Sat, 02 Oct 2010 09:02:56 +1000 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id D91FEA50111; Sat, 2 Oct 2010 09:02:56 +1000 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id CD77C9D0002; Sat, 2 Oct 2010 09:02:56 +1000 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at aconex.com Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sysuBwLrAQSU; Sat, 2 Oct 2010 09:02:52 +1000 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 0C42F9D0003; Sat, 2 Oct 2010 09:02:52 +1000 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by mail-au.aconex.com (Postfix) with ESMTP id 0C6D264B86AE; Sat, 2 Oct 2010 09:02:52 +1000 (EST) Date: Sat, 2 Oct 2010 09:02:51 +1000 (EST) From: nathans@debian.org Sender: nscott@aconex.com Reply-To: Nathan Scott To: Christoph Hellwig Cc: xfs@oss.sgi.com, nathans@debian.org, anibal@debian.org Message-ID: <1371146962.1517681285974171988.JavaMail.root@mail-au.aconex.com> In-Reply-To: <97008679.1517661285974121218.JavaMail.root@mail-au.aconex.com> X-ASG-Orig-Subj: Re: xfsprogs Debian mantainaince Subject: Re: xfsprogs Debian mantainaince MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [220.237.111.48] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - SAF3 (Mac)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1285974980 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42459 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Status: Clean ----- "Christoph Hellwig" wrote: > On Sat, Aug 14, 2010 at 07:15:13AM -0400, Christoph Hellwig wrote: > > Also can we add xfs@oss.sgi.com to the Cc list for debian xfs > > bugreports? I think most issues are upstream ones anyway, and > > automatically sending them to the XFS list will get them a bigger > > audience. > > Guys, any idea how to get this done? Not sure ... I'm guessing we need to make an "official" xfs debian maintenance team. Probably some process exists for that, somewhere, which I haven't been able to find so far - Anibal do you know? (http://wiki.debian.org/Teams looks like a place to start?) and then add xfs@oss as a contact address on that list. cheers. -- Nathan From anibal@master.debian.org Fri Oct 1 20:34:17 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o921YG9H138220 for ; Fri, 1 Oct 2010 20:34:16 -0500 X-ASG-Debug-ID: 1285983317-375901eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from master.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 665BB1BFE515 for ; Fri, 1 Oct 2010 18:35:17 -0700 (PDT) Received: from master.debian.org (master.debian.org [70.103.162.29]) by cuda.sgi.com with ESMTP id 7B9epFhGsvIZEXmF for ; Fri, 01 Oct 2010 18:35:17 -0700 (PDT) Received: from anibal by master.debian.org with local (Exim 4.69) (envelope-from ) id 1P1r0M-0000KX-KY; Sat, 02 Oct 2010 01:35:14 +0000 Date: Sat, 2 Oct 2010 11:34:59 +1000 From: =?iso-8859-1?Q?An=EDbal?= Monsalve Salazar To: nathans@debian.org Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsprogs Debian mantainaince Subject: Re: xfsprogs Debian mantainaince Message-ID: <20101002013458.GA3547@master.debian.org> References: <97008679.1517661285974121218.JavaMail.root@mail-au.aconex.com> <1371146962.1517681285974171988.JavaMail.root@mail-au.aconex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1371146962.1517681285974171988.JavaMail.root@mail-au.aconex.com> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: Anibal Monsalve Salazar X-Barracuda-Connect: master.debian.org[70.103.162.29] X-Barracuda-Start-Time: 1285983317 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42468 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Oct 02, 2010 at 09:02:51AM +1000, nathans@debian.org wrote: >----- "Christoph Hellwig" wrote: >>On Sat, Aug 14, 2010 at 07:15:13AM -0400, Christoph Hellwig wrote: >>>Also can we add xfs@oss.sgi.com to the Cc list for debian xfs >>>bugreports? I think most issues are upstream ones anyway, and >>>automatically sending them to the XFS list will get them a bigger >>>audience. >> >>Guys, any idea how to get this done? > >Not sure ... I'm guessing we need to make an "official" xfs >debian maintenance team. Probably some process exists for >that, somewhere, which I haven't been able to find so far - >Anibal do you know? Just change the maintainer to xfs@oss in debian/control and add yourself as an uploader. The only problem is that xfs@oss may not accept mail from any mail address submitting a new bug report or/replying to an existing bug report. >(http://wiki.debian.org/Teams looks like a place to start?) and then >add xfs@oss as a contact address on that list. The Teams wiki page is optional. >cheers. > >-- >Nathan From BATV+0409fecc0f16862f9d8a+2596+infradead.org+hch@bombadil.srs.infradead.org Fri Oct 1 20:57:58 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o921vvTi139445 for ; Fri, 1 Oct 2010 20:57:58 -0500 X-ASG-Debug-ID: 1285985536-792302710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from casper.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 50A45EA25D6; Fri, 1 Oct 2010 19:12:16 -0700 (PDT) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by cuda.sgi.com with ESMTP id aIQDPM6jv9njYQns; Fri, 01 Oct 2010 19:12:16 -0700 (PDT) Received: from bombadil.infradead.org ([2001:4830:2446:ff00:214:51ff:fe65:c65c]) by casper.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1P1rNG-0005KH-QT; Sat, 02 Oct 2010 01:58:54 +0000 Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P1rNF-0005zt-NX; Sat, 02 Oct 2010 01:58:53 +0000 Date: Fri, 1 Oct 2010 21:58:53 -0400 From: Christoph Hellwig To: Alain Renaud Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 223 use more compatible indirection operator Subject: Re: [PATCH] xfstests: make 223 use more compatible indirection operator Message-ID: <20101002015853.GA22967@infradead.org> References: <4CA5DD8D.3010200@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4CA5DD8D.3010200@sgi.com> User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: casper.infradead.org[85.118.1.10] X-Barracuda-Start-Time: 1285985537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From arekm@maven.pl Sat Oct 2 02:39:30 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_46,J_CHICKENPOX_47,J_CHICKENPOX_51,J_CHICKENPOX_61, J_CHICKENPOX_71,J_CHICKENPOX_75,LOCAL_GNU_PATCH,MIME_8BIT_HEADER autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o927dTIZ164746 for ; Sat, 2 Oct 2010 02:39:30 -0500 X-ASG-Debug-ID: 1286005227-68b502550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 708A61BB4739 for ; Sat, 2 Oct 2010 00:40:28 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id GEPilDURsFNHx9BG for ; Sat, 02 Oct 2010 00:40:28 -0700 (PDT) Received: from chello087207113141.chello.pl ([87.207.113.141]:51991 helo=tarm.maven.pl) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1P1whn-0002vA-D5; Sat, 02 Oct 2010 09:40:27 +0200 Received: from arekm by tarm.maven.pl with local (Exim 4.72) (envelope-from ) id 1P1whj-0004HU-LN; Sat, 02 Oct 2010 09:40:23 +0200 From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com Cc: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= X-ASG-Orig-Subj: [PATCH VER 7] xfsprogs: projid32bit handling Subject: [PATCH VER 7] xfsprogs: projid32bit handling Date: Sat, 2 Oct 2010 09:40:22 +0200 Message-Id: <1286005222-16423-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.7.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1286005229 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.77 X-Barracuda-Spam-Status: No, SCORE=-0.77 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7580D X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42492 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580D BODY: Custom Rule 7580D 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add projid32bit handling to userspace. mkfs.xfs is able to enable this feature for new filesystems. xfs_db knows what projid_lo/hi are. Signed-off-by: Arkadiusz Miśkiewicz Reviewed-by: Christoph Hellwig --- News: - xfs_logprint now prints single 32bit projid instead of two 16bit projid_{lo,hi}. Thus we get the same output format as before. - use %u for displaying projid (instead of %d) - projid32bit flag in mkfs.xfs output separated by coma - bs_projid is back as bs_projid_lo + define for compatibility - man page formatting fix db/check.c | 2 +- db/inode.c | 6 ++++-- db/sb.c | 6 ++++++ include/xfs_dinode.h | 5 +++-- include/xfs_fs.h | 17 +++++++++++++++-- include/xfs_inode.h | 25 ++++++++++++++++++++++--- include/xfs_sb.h | 17 ++++++++++++++++- include/xfs_types.h | 2 -- libxfs/util.c | 13 ++++++++----- libxfs/xfs_ialloc.c | 3 ++- libxfs/xfs_inode.c | 6 ++++-- logprint/log_print_all.c | 4 ++-- man/man3/xfsctl.3 | 6 ++++-- man/man8/mkfs.xfs.8 | 6 ++++++ man/man8/xfs_db.8 | 6 ++++-- mkfs/xfs_mkfs.c | 21 +++++++++++++++++---- mkfs/xfs_mkfs.h | 3 ++- quota/quot.c | 2 +- repair/README | 2 +- 19 files changed, 118 insertions(+), 34 deletions(-) diff --git a/db/check.c b/db/check.c index 4f8a62a..a8939a4 100644 --- a/db/check.c +++ b/db/check.c @@ -2840,7 +2840,7 @@ process_inode( break; } if (ic) { - dqprid = idic.di_projid; /* dquot ID is u32 */ + dqprid = xfs_get_projid(idic); /* dquot ID is u32 */ quota_add(&dqprid, &idic.di_gid, &idic.di_uid, 0, bc, ic, rc); } diff --git a/db/inode.c b/db/inode.c index 4aa4e1a..6f8592a 100644 --- a/db/inode.c +++ b/db/inode.c @@ -81,8 +81,10 @@ const field_t inode_core_flds[] = { FLD_COUNT, TYP_NONE }, { "onlink", FLDT_UINT16D, OI(COFF(onlink)), inode_core_onlink_count, FLD_COUNT, TYP_NONE }, - { "projid", FLDT_UINT16D, OI(COFF(projid)), inode_core_projid_count, - FLD_COUNT, TYP_NONE }, + { "projid_lo", FLDT_UINT16D, OI(COFF(projid_lo)), + inode_core_projid_count, FLD_COUNT, TYP_NONE }, + { "projid_hi", FLDT_UINT16D, OI(COFF(projid_hi)), + inode_core_projid_count, FLD_COUNT, TYP_NONE }, { "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE }, { "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE }, { "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE }, diff --git a/db/sb.c b/db/sb.c index 961a939..21f38c5 100644 --- a/db/sb.c +++ b/db/sb.c @@ -620,6 +620,8 @@ version_string( strcat(s, ",ATTR2"); if (xfs_sb_version_haslazysbcount(sbp)) strcat(s, ",LAZYSBCOUNT"); + if (xfs_sb_version_hasprojid32bit(sbp)) + strcat(s, ",PROJID32BIT"); return s; } @@ -696,6 +698,10 @@ version_f( xfs_sb_version_addattr2(&mp->m_sb); version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; + } else if (!strcasecmp(argv[1], "projid32bit")) { + xfs_sb_version_addprojid32bit(&mp->m_sb); + version = mp->m_sb.sb_versionnum; + features = mp->m_sb.sb_features2; } else { dbprintf(_("%s: invalid version change command \"%s\"\n"), progname, argv[1]); diff --git a/include/xfs_dinode.h b/include/xfs_dinode.h index d7cf392..f28c088 100644 --- a/include/xfs_dinode.h +++ b/include/xfs_dinode.h @@ -52,8 +52,9 @@ typedef struct xfs_dinode_core { __be32 di_uid; /* owner's user id */ __be32 di_gid; /* owner's group id */ __be32 di_nlink; /* number of links to file */ - __be16 di_projid; /* owner's project id */ - __u8 di_pad[8]; /* unused, zeroed space */ + __be16 di_projid_lo; /* lower part of owner's project id */ + __be16 di_projid_hi; /* higher part owner's project id */ + __u8 di_pad[6]; /* unused, zeroed space */ __be16 di_flushiter; /* incremented on flush */ xfs_timestamp_t di_atime; /* time last accessed */ xfs_timestamp_t di_mtime; /* time last modified */ diff --git a/include/xfs_fs.h b/include/xfs_fs.h index 74e7274..47c1e93 100644 --- a/include/xfs_fs.h +++ b/include/xfs_fs.h @@ -299,9 +299,11 @@ typedef struct xfs_bstat { __s32 bs_extsize; /* extent size */ __s32 bs_extents; /* number of extents */ __u32 bs_gen; /* generation count */ - __u16 bs_projid; /* project id */ + __u16 bs_projid_lo; /* lower part of project id */ +#define bs_projid bs_projid_lo __u16 bs_forkoff; /* inode fork offset in bytes */ - unsigned char bs_pad[12]; /* pad space, unused */ + __u16 bs_projid_hi; /* higher part of project id */ + unsigned char bs_pad[10]; /* pad space, unused */ __u32 bs_dmevmask; /* DMIG event mask */ __u16 bs_dmstate; /* DMIG state info */ __u16 bs_aextents; /* attribute number of extents */ @@ -506,4 +508,15 @@ typedef struct xfs_handle { #define BBTOB(bbs) ((bbs) << BBSHIFT) #endif +/* + * Project quota id helpers (previously projid was 16bit only + * and using two 16bit values to hold new 32bit projid was choosen + * to retain compatibility with "old" filesystems). + */ +static inline __uint32_t +bstat_get_projid(struct xfs_bstat *bs) +{ + return (__uint32_t)bs->bs_projid_hi << 16 | bs->bs_projid_lo; +} + #endif /* __XFS_FS_H__ */ diff --git a/include/xfs_inode.h b/include/xfs_inode.h index b19b467..7e6fc91 100644 --- a/include/xfs_inode.h +++ b/include/xfs_inode.h @@ -124,8 +124,9 @@ typedef struct xfs_icdinode { __uint32_t di_uid; /* owner's user id */ __uint32_t di_gid; /* owner's group id */ __uint32_t di_nlink; /* number of links to file */ - __uint16_t di_projid; /* owner's project id */ - __uint8_t di_pad[8]; /* unused, zeroed space */ + __uint16_t di_projid_lo; /* lower part of owner's project id */ + __uint16_t di_projid_hi; /* higher part of owner's project id */ + __uint8_t di_pad[6]; /* unused, zeroed space */ __uint16_t di_flushiter; /* incremented on flush */ xfs_ictimestamp_t di_atime; /* time last accessed */ xfs_ictimestamp_t di_mtime; /* time last modified */ @@ -204,6 +205,24 @@ typedef struct xfs_icdinode { ((ip)->i_d.di_anextents = (n))) +/* + * Project quota id helpers (previously projid was 16bit only + * and using two 16bit values to hold new 32bit projid was choosen + * to retain compatibility with "old" filesystems). + */ +static inline __uint32_t +xfs_get_projid(struct xfs_icdinode i_d) +{ + return (__uint32_t)i_d.di_projid_hi << 16 | i_d.di_projid_lo; +} + +static inline void +xfs_set_projid(struct xfs_icdinode *i_d, + __uint32_t projid) +{ + i_d->di_projid_hi = (__uint16_t) (projid >> 16); + i_d->di_projid_lo = (__uint16_t) (projid & 0xffff); +} #ifdef __KERNEL__ @@ -510,7 +529,7 @@ int xfs_finish_reclaim_all(struct xfs_mount *, int); int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, xfs_inode_t **, xfs_daddr_t, uint); int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, - xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, + xfs_nlink_t, xfs_dev_t, struct cred *, prid_t, int, struct xfs_buf **, boolean_t *, xfs_inode_t **); uint xfs_ip2xflags(struct xfs_inode *); diff --git a/include/xfs_sb.h b/include/xfs_sb.h index 1e86489..f88dc32 100644 --- a/include/xfs_sb.h +++ b/include/xfs_sb.h @@ -80,10 +80,12 @@ struct xfs_mount; #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ +#define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ #define XFS_SB_VERSION2_OKREALFBITS \ (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ - XFS_SB_VERSION2_ATTR2BIT) + XFS_SB_VERSION2_ATTR2BIT | \ + XFS_SB_VERSION2_PROJID32BIT) #define XFS_SB_VERSION2_OKSASHFBITS \ (0) #define XFS_SB_VERSION2_OKREALBITS \ @@ -489,6 +491,19 @@ static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; } +static inline int xfs_sb_version_hasprojid32bit(xfs_sb_t *sbp) +{ + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT); +} + +static inline void xfs_sb_version_addprojid32bit(xfs_sb_t *sbp) +{ + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; + sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; + sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT; +} + /* * end of superblock version macros */ diff --git a/include/xfs_types.h b/include/xfs_types.h index 0f51916..228b948 100644 --- a/include/xfs_types.h +++ b/include/xfs_types.h @@ -81,8 +81,6 @@ typedef __int32_t xfs_tid_t; /* transaction identifier */ typedef __uint32_t xfs_dablk_t; /* dir/attr block number (in file) */ typedef __uint32_t xfs_dahash_t; /* dir/attr hash value */ -typedef __uint16_t xfs_prid_t; /* prid_t truncated to 16bits in XFS */ - /* * These types are 64 bits on disk but are either 32 or 64 bits in memory. * Disk based types: diff --git a/libxfs/util.c b/libxfs/util.c index 409fb92..077d2a2 100644 --- a/libxfs/util.c +++ b/libxfs/util.c @@ -134,7 +134,7 @@ libxfs_iread( * made it 32 bits long. If this is an old format inode, * convert it in memory to look like a new one. If it gets * flushed to disk we will convert back before flushing or - * logging it. We zero out the new projid field and the old link + * logging it. We zero out the new projid_lo/hi field and the old link * count field. We'll handle clearing the pad field (the remains * of the old uuid field) when we actually convert the inode to * the new format. We don't change the version number so that we @@ -143,7 +143,7 @@ libxfs_iread( if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { ip->i_d.di_nlink = ip->i_d.di_onlink; ip->i_d.di_onlink = 0; - ip->i_d.di_projid = 0; + xfs_set_projid(&ip->i_d, 0); } ip->i_delayed_blks = 0; @@ -219,7 +219,7 @@ libxfs_ialloc( ASSERT(ip->i_d.di_nlink == nlink); ip->i_d.di_uid = cr->cr_uid; ip->i_d.di_gid = cr->cr_gid; - ip->i_d.di_projid = pip ? 0 : fsx->fsx_projid; + xfs_set_projid(&ip->i_d, pip ? 0 : fsx->fsx_projid); memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); /* @@ -231,7 +231,10 @@ libxfs_ialloc( if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && ip->i_d.di_version == XFS_DINODE_VERSION_1) { ip->i_d.di_version = XFS_DINODE_VERSION_2; - /* old link count, projid field, pad field already zeroed */ + /* + * old link count, projid_lo/hi field, pad field + * already zeroed + */ } if (pip && (pip->i_d.di_mode & S_ISGID)) { @@ -446,7 +449,7 @@ libxfs_iflush_int(xfs_inode_t *ip, xfs_buf_t *bp) memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); memset(&(dip->di_core.di_pad[0]), 0, sizeof(dip->di_core.di_pad)); - ASSERT(ip->i_d.di_projid == 0); + ASSERT(xfs_get_projid(ip->i_d) == 0); } } diff --git a/libxfs/xfs_ialloc.c b/libxfs/xfs_ialloc.c index 39fdf96..32ae4b0 100644 --- a/libxfs/xfs_ialloc.c +++ b/libxfs/xfs_ialloc.c @@ -46,7 +46,8 @@ xfs_ialloc_log_di( offsetof(xfs_dinode_core_t, di_uid), offsetof(xfs_dinode_core_t, di_gid), offsetof(xfs_dinode_core_t, di_nlink), - offsetof(xfs_dinode_core_t, di_projid), + offsetof(xfs_dinode_core_t, di_projid_lo), + offsetof(xfs_dinode_core_t, di_projid_hi), offsetof(xfs_dinode_core_t, di_pad), offsetof(xfs_dinode_core_t, di_atime), offsetof(xfs_dinode_core_t, di_mtime), diff --git a/libxfs/xfs_inode.c b/libxfs/xfs_inode.c index b0adabc..1c9ea3b 100644 --- a/libxfs/xfs_inode.c +++ b/libxfs/xfs_inode.c @@ -589,7 +589,8 @@ xfs_dinode_from_disk( to->di_uid = be32_to_cpu(from->di_uid); to->di_gid = be32_to_cpu(from->di_gid); to->di_nlink = be32_to_cpu(from->di_nlink); - to->di_projid = be16_to_cpu(from->di_projid); + to->di_projid_lo = be16_to_cpu(from->di_projid_lo); + to->di_projid_hi = be16_to_cpu(from->di_projid_hi); memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad)); to->di_flushiter = be16_to_cpu(from->di_flushiter); to->di_atime.t_sec = be32_to_cpu(from->di_atime.t_sec); @@ -624,7 +625,8 @@ xfs_dinode_to_disk( to->di_uid = cpu_to_be32(from->di_uid); to->di_gid = cpu_to_be32(from->di_gid); to->di_nlink = cpu_to_be32(from->di_nlink); - to->di_projid = cpu_to_be16(from->di_projid); + to->di_projid_lo = cpu_to_be16(from->di_projid_lo); + to->di_projid_hi = cpu_to_be16(from->di_projid_hi); memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad)); to->di_flushiter = cpu_to_be16(from->di_flushiter); to->di_atime.t_sec = cpu_to_be32(from->di_atime.t_sec); diff --git a/logprint/log_print_all.c b/logprint/log_print_all.c index c21e05c..7bd4617 100644 --- a/logprint/log_print_all.c +++ b/logprint/log_print_all.c @@ -238,8 +238,8 @@ xlog_recover_print_inode_core( "onlink:%d\n"), (di->di_magic>>8) & 0xff, di->di_magic & 0xff, di->di_mode, di->di_version, di->di_format, di->di_onlink); - printf(_(" uid:%d gid:%d nlink:%d projid:%d\n"), - di->di_uid, di->di_gid, di->di_nlink, (uint)di->di_projid); + printf(_(" uid:%d gid:%d nlink:%d projid:%u\n"), + di->di_uid, di->di_gid, di->di_nlink, xfs_get_projid(*di)); printf(_(" atime:%d mtime:%d ctime:%d\n"), di->di_atime.t_sec, di->di_mtime.t_sec, di->di_ctime.t_sec); printf(_(" flushiter:%d\n"), di->di_flushiter); diff --git a/man/man3/xfsctl.3 b/man/man3/xfsctl.3 index 784b3e0..30d2238 100644 --- a/man/man3/xfsctl.3 +++ b/man/man3/xfsctl.3 @@ -564,8 +564,10 @@ The structure has the following elements: (number of extents), .B bs_gen (generation count), -.B bs_projid -(project id), +.B bs_projid_lo +(project id - low word), +.B bs_projid_hi +(project id - high word, used when projid32bit feature is enabled), .B bs_dmevmask (DMIG event mask), .B bs_dmstate diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 index fdd38d4..fa52152 100644 --- a/man/man8/mkfs.xfs.8 +++ b/man/man8/mkfs.xfs.8 @@ -350,6 +350,12 @@ between attribute and extent data. The previous version 1, which has fixed regions for attribute and extent data, is kept for backwards compatibility with kernels older than version 2.6.16. +.TP +.BI projid32bit[= value ] +This is used to enable 32bit quota project identifiers. The +.I value +is either 0 or 1, with 1 signifying that 32bit projid are to be enabled. +If the value is omitted, 0 is assumed. .RE .TP .BI \-l " log_section_options" diff --git a/man/man8/xfs_db.8 b/man/man8/xfs_db.8 index 629ae58..17ac601 100644 --- a/man/man8/xfs_db.8 +++ b/man/man8/xfs_db.8 @@ -1474,8 +1474,10 @@ number of links to the file in a version 1 inode. .B nlinkv2 number of links to the file in a version 2 inode. .TP -.B projid -owner's project id (version 2 inode only). +.B projid_lo +owner's project id (low word; version 2 inode only). +.B projid_hi +owner's project id (high word; version 2 inode only). .TP .B uid owner's user id. diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 2d09e36..5b3b9a7 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -106,6 +106,8 @@ char *iopts[] = { "size", #define I_ATTR 5 "attr", +#define I_PROJID32BIT 6 + "projid32bit", NULL }; @@ -829,6 +831,7 @@ main( __uint64_t agsize; xfs_alloc_rec_t *arec; int attrversion; + int projid32bit; struct xfs_btree_block *block; int blflag; int blocklog; @@ -923,6 +926,7 @@ main( textdomain(PACKAGE); attrversion = 2; + projid32bit = 0; blflag = bsflag = slflag = ssflag = lslflag = lssflag = 0; blocklog = blocksize = 0; sectorlog = lsectorlog = XFS_MIN_SECTORSIZE_LOG; @@ -1259,6 +1263,14 @@ main( illegal(value, "i attr"); attrversion = c; break; + case I_PROJID32BIT: + if (!value) + value = "0"; + c = atoi(value); + if (c < 0 || c > 1) + illegal(value, "i projid32bit"); + projid32bit = c; + break; default: unknown('i', value); } @@ -2261,7 +2273,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), if (!qflag || Nflag) { printf(_( "meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n" - " =%-22s sectsz=%-5u attr=%u\n" + " =%-22s sectsz=%-5u attr=%u, projid32bit=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" " =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u ascii-ci=%d\n" @@ -2269,7 +2281,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), " =%-22s sectsz=%-5u sunit=%d blks, lazy-count=%d\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n"), dfile, isize, (long long)agcount, (long long)agsize, - "", sectorsize, attrversion, + "", sectorsize, attrversion, projid32bit, "", blocksize, (long long)dblocks, imaxpct, "", dsunit, dswidth, dirversion, dirblocksize, nci, @@ -2336,7 +2348,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), sbp->sb_logsectsize = 0; } sbp->sb_features2 = XFS_SB_VERSION2_MKFS(lazy_sb_counters, - attrversion == 2, 0); + attrversion == 2, projid32bit == 1, 0); sbp->sb_versionnum = XFS_SB_VERSION_MKFS(iaflag, dsunit != 0, logversion == 2, attrversion == 1, (sectorsize != BBSIZE || @@ -2804,7 +2816,8 @@ usage( void ) /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\ (sunit=value,swidth=value|su=num,sw=num),\n\ sectlog=n|sectsize=num\n\ -/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2]\n\ +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ + projid32bit=0|1]\n\ /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ sunit=value|su=num,sectlog=n|sectsize=num,\n\ lazy-count=0|1]\n\ diff --git a/mkfs/xfs_mkfs.h b/mkfs/xfs_mkfs.h index 49401d6..f25a7f3 100644 --- a/mkfs/xfs_mkfs.h +++ b/mkfs/xfs_mkfs.h @@ -36,9 +36,10 @@ XFS_DFL_SB_VERSION_BITS | \ 0 ) : XFS_SB_VERSION_1 ) -#define XFS_SB_VERSION2_MKFS(lazycount, attr2, parent) (\ +#define XFS_SB_VERSION2_MKFS(lazycount, attr2, projid32bit, parent) (\ ((lazycount) ? XFS_SB_VERSION2_LAZYSBCOUNTBIT : 0) | \ ((attr2) ? XFS_SB_VERSION2_ATTR2BIT : 0) | \ + ((projid32bit) ? XFS_SB_VERSION2_PROJID32BIT : 0) | \ ((parent) ? XFS_SB_VERSION2_PARENTBIT : 0) | \ 0 ) diff --git a/quota/quot.c b/quota/quot.c index 09d349f..54387ea 100644 --- a/quota/quot.c +++ b/quota/quot.c @@ -102,7 +102,7 @@ quot_bulkstat_add( } for (i = 0; i < 3; i++) { id = (i == 0) ? p->bs_uid : ((i == 1) ? - p->bs_gid : p->bs_projid); + p->bs_gid : bstat_get_projid(p)); hp = &duhash[i][id % DUHASH]; for (dp = *hp; dp; dp = dp->next) if (dp->id == id) diff --git a/repair/README b/repair/README index 69cb0c5..7f168e6 100644 --- a/repair/README +++ b/repair/README @@ -130,7 +130,7 @@ D - 0) rewrite directory leaf block holemap comparison code. it does describe doesn't conflict with reality. D - 0) rewrite setting nlinks handling -- for version 1 - inodes, set both nlinks and onlinks (zero projid + inodes, set both nlinks and onlinks (zero projid_lo/hi and pad) if we have to change anything. For version 2, I think we're ok. -- 1.7.3.1 From arekm@maven.pl Sat Oct 2 02:44:24 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_44,J_CHICKENPOX_46,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o927iOvb165054 for ; Sat, 2 Oct 2010 02:44:24 -0500 X-ASG-Debug-ID: 1286005524-284303700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7C4F5BD454 for ; Sat, 2 Oct 2010 00:45:24 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id H1rNlp5gXOjCm9YM for ; Sat, 02 Oct 2010 00:45:24 -0700 (PDT) Received: from chello087207113141.chello.pl ([87.207.113.141]:55547 helo=tarm.maven.pl) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1P1wmZ-0003T1-Tz; Sat, 02 Oct 2010 09:45:23 +0200 Received: from arekm by tarm.maven.pl with local (Exim 4.72) (envelope-from ) id 1P1wmW-0004OQ-Hu; Sat, 02 Oct 2010 09:45:20 +0200 From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com Cc: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= X-ASG-Orig-Subj: [PATCH] [xfstests]: Don't depend on mkfs.xfs output in some tests Subject: [PATCH] [xfstests]: Don't depend on mkfs.xfs output in some tests Date: Sat, 2 Oct 2010 09:45:19 +0200 Message-Id: <1286005519-16851-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.7.3 In-Reply-To: <1286005222-16423-1-git-send-email-arekm@maven.pl> References: <1286005222-16423-1-git-send-email-arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1286005525 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42492 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Tests 136 and 206 rely on mkfs.xfs output. 136 test was currently broken with hardcoded mkfs.xfs output (that contained for example meta-data=/dev/sda8). Drop that part from output. Ignore projid32bit output existence for test 206. Signed-off-by: Arkadiusz Miśkiewicz --- 136 | 2 +- 136.out | 8 -------- 206 | 3 ++- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/136 b/136 index d394594..abc23e9 100755 --- a/136 +++ b/136 @@ -54,7 +54,7 @@ _supported_os IRIX Linux _require_scratch export MKFS_OPTIONS="-i size=512,attr=2" -_scratch_mkfs_xfs +_scratch_mkfs_xfs > /dev/null 2>&1 _scratch_mount file=$SCRATCH_MNT/file diff --git a/136.out b/136.out index 7aa76ac..5c915fa 100644 --- a/136.out +++ b/136.out @@ -1,12 +1,4 @@ QA output created by 136 -meta-data=/dev/sda8 isize=512 agcount=8, agsize=31376 blks - = sectsz=512 attr=2, parent=0 -data = bsize=4096 blocks=251008, imaxpct=25 - = sunit=0 swidth=0 blks, unwritten=1 -naming =version 2 bsize=4096 -log =internal log bsize=4096 blocks=1200, version=1 - = sectsz=512 sunit=0 blks -realtime =none extsz=65536 blocks=0, rtextents=0 inum=67 core.format = 2 (extents) core.size = 0 diff --git a/206 b/206 index 034bbf1..e8bc922 100755 --- a/206 +++ b/206 @@ -76,7 +76,8 @@ dd if=/dev/zero of=$tmpfile bs=1 seek=19998630180864 count=1 >/dev/null 2>&1 \ echo "=== mkfs.xfs ===" mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b -llazy-count=0 $tmpfile \ | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" \ - -e "s/\(^log.*blocks=\)\([0-9]*,\)/\1XXXXX,/" + -e "s/\(^log.*blocks=\)\([0-9]*,\)/\1XXXXX,/" \ + -e "s/, projid32bit=[0-9]//" mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount" -- 1.7.3.1 From SRS0+eCYC+34+fromorbit.com=david@internode.on.net Sat Oct 2 05:34:09 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o92AY9Ax175164 for ; Sat, 2 Oct 2010 05:34:09 -0500 X-ASG-Debug-ID: 1286015707-20a603370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ADB03BD8F1 for ; Sat, 2 Oct 2010 03:35:08 -0700 (PDT) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id QI8MnaQczksFUisE for ; Sat, 02 Oct 2010 03:35:08 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41377252-1927428 for multiple; Sat, 02 Oct 2010 20:05:06 +0930 (CST) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P1zQn-0002vR-3r; Sat, 02 Oct 2010 20:35:05 +1000 Date: Sat, 2 Oct 2010 20:35:05 +1000 From: Dave Chinner To: Richard Scobie Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Quota confusion Subject: Re: Quota confusion Message-ID: <20101002103505.GD4681@dastard> References: <4CA55F09.2010609@sauce.co.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4CA55F09.2010609@sauce.co.nz> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1286015709 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0133 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 01, 2010 at 05:09:45PM +1300, Richard Scobie wrote: > I am setting up project quota at 95% of the storage capacity. df shows: > > Filesystem 1K-blocks Used Available Use% Mounted on > /dev/dm-0 13672271872 11816602148 1855669724 87% /mnt/storage1 > > so I set it: > > limit -p bhard=12988658278k 1 > > but when I do an xfs_quota "quota -p 1": > > Disk quotas for Project shares (1) > Filesystem Blocks Quota Limit Warn/Time > Mounted on > /dev/dm-0 11816148292 0 12988658280 00 > [--------] /mnt/storage1 > > the number of blocks is less than the limit. Ok, that looks normal. > Also, an xfs_quota df: > > Filesystem 1K-blocks Used Available Use% Pathname > /dev/dm-0 13672271872 11816602148 1855669724 87% /mnt/storage1 > /dev/dm-0 13672271872 23632296584 1855669724 173% > /mnt/storage1/share > > I do not understand the lower "Used" figure. Hmmm - looks like a directory quota output for a specific directory (/mnt/storage1/share), and for some reason the used field is roughly double the correct value. Can you post your project quota config files? Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+CcnX+34+fromorbit.com=david@internode.on.net Sat Oct 2 05:38:07 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_44 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o92Ac6P3175418 for ; Sat, 2 Oct 2010 05:38:07 -0500 X-ASG-Debug-ID: 1286016747-7791008e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1CEEEA3F74 for ; Sat, 2 Oct 2010 03:52:27 -0700 (PDT) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id u4mybhfFiuix3h3G for ; Sat, 02 Oct 2010 03:52:27 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 40991726-1927428 for multiple; Sat, 02 Oct 2010 20:09:04 +0930 (CST) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P1zUd-0002vo-2B; Sat, 02 Oct 2010 20:39:03 +1000 Date: Sat, 2 Oct 2010 20:39:03 +1000 From: Dave Chinner To: Robert Pipca Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault Subject: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault Message-ID: <20101002103902.GE4681@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1286016749 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 01, 2010 at 05:06:08PM -0300, Robert Pipca wrote: > Hi, > > I'm using kernel 2.6.34.7 on a gentoo amd64 system. > > Towards the end of the command, I get: > > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 352256, SEEK_SET) = 352256 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 376832, SEEK_SET) = 376832 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 393216, SEEK_SET) = 393216 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 417792, SEEK_SET) = 417792 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 434176, SEEK_SET) = 434176 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 450560, SEEK_SET) = 450560 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 475136, SEEK_SET) = 475136 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 491520, SEEK_SET) = 491520 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 516096, SEEK_SET) = 516096 > read(4, "INA\350\2\1\0\0\0\0\377\376\0\0\377\376\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1L"..., > 16384) = 16384 > lseek(4, 14190936064, SEEK_SET) = 14190936064 > read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., > 4096) = 4096 > lseek(4, 532480, SEEK_SET) = 532480 > read(4, "IN\201\240\2\3\0\0\0\0\377\376\0\0\377\376\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\21L"..., > 16384) = 16384 > lseek(4, 37129601024, SEEK_SET) = 37129601024 > read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., > 4096) = 4096 > lseek(4, 37028130816, SEEK_SET) = 37028130816 > read(4, "BMAP\0\0\0\n\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., > 4096) = 4096 > lseek(4, 36522024960, SEEK_SET) = 36522024960 > read(4, "\177\260g\203\223s\231\364\273\222\276\34\363~\253\355\271\271\17h\237\v\357\274\230\25\334\351x\2719&\34"..., > 4096) = 4096 > brk(0x26af000) = 0x26af000 > brk(0x26a0000) = 0x26a0000 > mmap(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, > -1, 0) = 0x7ff07237e000 > brk(0x2690000) = 0x2690000 > --- SIGSEGV (Segmentation fault) @ 0 (0) --- > +++ killed by SIGSEGV +++ > > > Is this a kernel or a XFS problem? It's an xfs_db problem. what version are you running (xfs_db -V)? Can you build a non-stripped xfs_db executable and run it under gdb so we can get a stack trace and location of where the SEGV is occurring? Note that the crash could be caused by a corrupted filesystem. Running xfs_repair -n over the filesystem will tell you if there are any problems in the filesystem. If there are, can you post the output of the repair command as well? Cheers, Dave. -- Dave Chinner david@fromorbit.com From richard@sauce.co.nz Sat Oct 2 14:01:51 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o92J1pvm204840 for ; Sat, 2 Oct 2010 14:01:51 -0500 X-ASG-Debug-ID: 1286046170-312e003b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.sauce.co.nz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DD28D1E74821 for ; Sat, 2 Oct 2010 12:02:51 -0700 (PDT) Received: from smtp.sauce.co.nz (smtp.sauce.co.nz [210.48.49.72]) by cuda.sgi.com with ESMTP id stjOZjSPECyb4CZz for ; Sat, 02 Oct 2010 12:02:51 -0700 (PDT) Received: (qmail 31667 invoked from network); 2 Oct 2010 19:02:49 -0000 Received: from unknown (HELO ?192.168.4.181?) (192.168.4.181) by smtp.sauce.co.nz with SMTP; 2 Oct 2010 19:02:49 -0000 Message-ID: <4CA780D4.9080801@sauce.co.nz> Date: Sun, 03 Oct 2010 07:58:28 +1300 From: Richard Scobie User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Quota confusion Subject: Re: Quota confusion References: <4CA55F09.2010609@sauce.co.nz> <20101002103505.GD4681@dastard> In-Reply-To: <20101002103505.GD4681@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp.sauce.co.nz[210.48.49.72] X-Barracuda-Start-Time: 1286046171 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0152 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42538 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: >> Disk quotas for Project shares (1) >> Filesystem Blocks Quota Limit Warn/Time >> Mounted on >> /dev/dm-0 11816148292 0 12988658280 00 >> [--------] /mnt/storage1 >> >> the number of blocks is less than the limit. > > Ok, that looks normal. Ah. I was interpreting as total blocks, not blocks used. >> Also, an xfs_quota df: >> >> Filesystem 1K-blocks Used Available Use% Pathname >> /dev/dm-0 13672271872 11816602148 1855669724 87% /mnt/storage1 >> /dev/dm-0 13672271872 23632296584 1855669724 173% >> /mnt/storage1/share >> >> I do not understand the lower "Used" figure. > > Hmmm - looks like a directory quota output for a specific directory > (/mnt/storage1/share), and for some reason the used field is roughly > double the correct value. Can you post your project quota config > files? /etc/projects 1:/mnt/storage1/share /etc/projid shares:1 kernel 2.6.35.4 xfsprogs 3.0.4 Regards, Richard From BATV+a0f561676c5ad771bad6+2597+infradead.org+hch@bombadil.srs.infradead.org Sun Oct 3 01:18:00 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o936HxLR238920 for ; Sun, 3 Oct 2010 01:18:00 -0500 X-ASG-Debug-ID: 1286086738-283900c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from casper.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B40CC1E750CB for ; Sat, 2 Oct 2010 23:18:59 -0700 (PDT) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by cuda.sgi.com with ESMTP id ATiaBEm1SLsdGOez for ; Sat, 02 Oct 2010 23:18:59 -0700 (PDT) Received: from bombadil.infradead.org ([2001:4830:2446:ff00:214:51ff:fe65:c65c]) by casper.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1P2HuR-0000zV-Pl; Sun, 03 Oct 2010 06:18:55 +0000 Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P2HuQ-00076P-Ju; Sun, 03 Oct 2010 06:18:54 +0000 Date: Sun, 3 Oct 2010 02:18:54 -0400 From: Christoph Hellwig To: Diego Woitasen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Linux and DMAPI Subject: Re: Linux and DMAPI Message-ID: <20101003061854.GA24293@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: casper.infradead.org[85.118.1.10] X-Barracuda-Start-Time: 1286086739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42582 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Sep 18, 2010 at 09:08:16PM -0300, Diego Woitasen wrote: > Hi, > I'm looking for software that supports DMAPI on Linux. I haven't > found anything on the web. I need to implement HSM for a mail server, > to store old messages in a secondary storage. > > Are there something implemented? Open source or propietary one? I > prefer open source obviously... The XFS on disk format supports the required metadata for DMAPI, but the implementation for it never made it into the mainline Linux kernel. For years SGI provided a tree to add the support, but for the last few years the support bitrotted heavily. Alex promised to publush a tree with updated DMAPI support in the near future. You'll still need additional userspace support the to actually driver the migration. The xfstests suite has a minimal implementation for QA purposes as free software, but I don't think that's what your looking for. The main user of the XFS DMAPI support is SGI's DMF product, and at least a few years ago IBM's Tivoli Storage Manager also supported DMAPI. From BATV+a0f561676c5ad771bad6+2597+infradead.org+hch@bombadil.srs.infradead.org Sun Oct 3 01:19:04 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o936J4h8238972 for ; Sun, 3 Oct 2010 01:19:04 -0500 X-ASG-Debug-ID: 1286086805-283700eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from casper.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 31F811E74F16 for ; Sat, 2 Oct 2010 23:20:05 -0700 (PDT) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by cuda.sgi.com with ESMTP id QQazafbCmvCEsdbI for ; Sat, 02 Oct 2010 23:20:05 -0700 (PDT) Received: from bombadil.infradead.org ([2001:4830:2446:ff00:214:51ff:fe65:c65c]) by casper.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1P2HvV-0000zo-AS; Sun, 03 Oct 2010 06:20:01 +0000 Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P2HvU-0007Do-59; Sun, 03 Oct 2010 06:20:00 +0000 Date: Sun, 3 Oct 2010 02:20:00 -0400 From: Christoph Hellwig To: Mario Bachmann Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Re: xfsdump-3.0.4 problems Subject: Re: [PATCH] Re: xfsdump-3.0.4 problems Message-ID: <20101003062000.GB24293@infradead.org> References: <20100816182236.249a2a0f@x2.grafnetz> <20100816223021.GL10429@dastard> <20100817083227.06e23889@x2.grafnetz> <20100817071337.GN10429@dastard> <20100817095340.6b9ab8e2@x2.grafnetz> <20100817090534.GP10429@dastard> <20100817114550.GQ10429@dastard> <20100827111820.GA9837@teal.hq.k1024.org> <20100827114055.GI705@dastard> <20100924115317.7026e721@x2.grafnetz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100924115317.7026e721@x2.grafnetz> User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: casper.infradead.org[85.118.1.10] X-Barracuda-Start-Time: 1286086806 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42584 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Sep 24, 2010 at 11:53:17AM +0200, Mario Bachmann wrote: > Hi there, > > is the patch now in 2.6.35.5? > > The more exact question is: Does XFS (and xfsprogs) work perfectly now again? > My backup works with xfsdump, so it would be a disaster when this does not work. > > Thanks for your information! I've not seen the mail that gets sent for -stable inclusion normally, so I suspect it's not been included yet. From BATV+a0f561676c5ad771bad6+2597+infradead.org+hch@bombadil.srs.infradead.org Sun Oct 3 01:50:08 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o936o85Z240263 for ; Sun, 3 Oct 2010 01:50:08 -0500 X-ASG-Debug-ID: 1286088350-5659021e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from casper.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C8D70BBEB7 for ; Sat, 2 Oct 2010 23:45:51 -0700 (PDT) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by cuda.sgi.com with ESMTP id 7eZM2r0VW4GAjeD9 for ; Sat, 02 Oct 2010 23:45:51 -0700 (PDT) Received: from bombadil.infradead.org ([2001:4830:2446:ff00:214:51ff:fe65:c65c]) by casper.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1P2IKS-0001Rk-Ul; Sun, 03 Oct 2010 06:45:49 +0000 Received: from hch by bombadil.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P2IKR-00031R-PC; Sun, 03 Oct 2010 06:45:47 +0000 Date: Sun, 3 Oct 2010 02:45:47 -0400 From: Christoph Hellwig To: Dave Chinner Cc: Robert Pipca , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault Subject: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault Message-ID: <20101003064547.GA9071@infradead.org> References: <20101002103902.GE4681@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101002103902.GE4681@dastard> User-Agent: Mutt/1.5.20 (2009-08-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: casper.infradead.org[85.118.1.10] X-Barracuda-Start-Time: 1286088351 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42586 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Oct 02, 2010 at 08:39:03PM +1000, Dave Chinner wrote: > Note that the crash could be caused by a corrupted filesystem. Or running it on a mounted filesystem. Robert, did you run the command on a mounted or unmounted filesystem? From aelder@sgi.com Sun Oct 3 19:01:39 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o9401dUE018285 for ; Sun, 3 Oct 2010 19:01:39 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 026EC3040EF; Sun, 3 Oct 2010 17:02:38 -0700 (PDT) Received: from [134.15.64.13] ([134.15.64.13]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Sun, 3 Oct 2010 18:57:47 -0500 Subject: Re: xfs_metadump in never ending loop From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com In-Reply-To: <201010012136.47502.arekm@maven.pl> References: <201010012136.47502.arekm@maven.pl> Content-Type: text/plain; charset="UTF-8" Date: Sun, 03 Oct 2010 18:57:46 -0500 Message-ID: <1286150266.4344.9.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 03 Oct 2010 23:57:47.0184 (UTC) FILETIME=[C746E300:01CB6356] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, 2010-10-01 at 21:36 +0200, Arkadiusz Miskiewicz wrote: > generate_obfuscated_name() in metadump.c can go into > never ending loop for some file names. Reproducer below. The reason it hangs is that the algorithm for computing a name with the same hash value as the name is stuck with a portion of the hash whose only possible result includes the string "/" in it. The hash for the file "R\323\257NE" is 0x3ab4b3740. One step in the algorithm is this: newname[namelen - 3] = (newhash >> 14) & 0x7f; if (is_invalid_char(newname[namelen - 3])) continue; But the result of that is 0x2f, which is the '/' character, which is illegal. So this algorithm will try again indefinitely, never finding a file name with a matching hash. I am looking into this a bit more. Will report back later, probably tomorrow. -Alex From knoseeker@googlemail.com Sun Oct 3 21:56:42 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_FILL_THIS_FORM_SHORT,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o942ufS6024806 for ; Sun, 3 Oct 2010 21:56:42 -0500 X-ASG-Debug-ID: 1286161062-6f80011f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B34B818A363B for ; Sun, 3 Oct 2010 19:57:42 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id BwwSRdCSQXvZGh26 for ; Sun, 03 Oct 2010 19:57:42 -0700 (PDT) Received: by wwb28 with SMTP id 28so5134281wwb.32 for ; Sun, 03 Oct 2010 19:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=J0h1w8DjETLDET+onGOtU+giqJQnbkOXO5lb6aR5thY=; b=b841h1ysfJbxk4Gfm8Tr5M93qLp5kF5hMHXrhlEbbNIHXVJtG0BxGdfRNsRC8jcv4r TCdlXtITn05a3a6a7+3enDobrTI7jS4UHr4Jj80h68gxeAeuCAGQEMMs9tKLCRPFloXr 4cRhvMkJMrqqitWtt04YkQYRv5yJRIZ1Xp9Jg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=ITnHdJoRYsvapQNmff4K1Q0q0nYdSz0HtdG4VqMlr9u7XWKKb/WSF7TqOl/d8xhPw8 IxLZKRri5JmXrL71KNSCaMWwlPDZzmjYrJfvwHyLI2w8Yl52RCi4G6UCGxTWKYx+oc6u p0V1CbREy8omAqxMRLa91RjeI9ErjNjQCvam4= MIME-Version: 1.0 Received: by 10.227.136.2 with SMTP id p2mr6762245wbt.215.1286161062231; Sun, 03 Oct 2010 19:57:42 -0700 (PDT) Received: by 10.227.143.68 with HTTP; Sun, 3 Oct 2010 19:57:42 -0700 (PDT) Date: Mon, 4 Oct 2010 02:57:42 +0000 Message-ID: X-ASG-Orig-Subj: xfs_repair never finishes on lvm partition Subject: xfs_repair never finishes on lvm partition From: Knowledge Seeker To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016e648d3d63cfee60491c1b5ed X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1286161063 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42665 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016e648d3d63cfee60491c1b5ed Content-Type: text/plain; charset=UTF-8 Hi, I've sent the below message to the Debian Users list and they told me to send it here. I'm using Debian Lenny box with 2 hds. The first one is used by the OS and the second one is another system witch runs in virtual machine (Virtual Box). This virtual machine also runs Debian Lenny. The vm's hd has 2 fdisk partitions, one being LVM. On the last week, due a power failure, there was a corruption in the file system of my home xfs partition inside the LVM. When I tried to access it, my OS answered that it's not a file or a directory. Umounting and mounting again, the error persists. I tried an xfs_check and it said to mount and umount the filesystem and if it does not work to run xfs_repair with -L. I tried it a couple of times and it didn't work, so I ran xfs_repair -L /dev/mapper/storage-home On Phase 6, it just freezes in: bad hash table for directory inode 2147483859 (no data entry): rebuilding rebuilding directory inode 2147483859 And never finish. I let running for 2 days long. When I use ps to see the state: 2359 pts/0 Sl+ 0:11 xfs_repair -L /dev/mapper/storage-home Interruptible sleep (waiting for an event to complete), multi threaded, in foreground. It just stoped when I sent an interrupt signal Ctrl+C. I tried to do the same from the host machine (real machine), since the HD could be accessed from it. The funniest thing is that the xfs_repair did not hang, but when I try to mount the partition it does not mount the full partition. An ls in the /mnt mounting /dev/storage/home (from host machine), doesn't show the /home, it shows a subdirectory from /home. And if I start again the Virtual Machine, it prints the same error: /home is not file or directory. Weird.. Extra information: The versions: # xfs_repair -V xfs_repair version 2.9.8 #fstab entry /dev/mapper/storage-home /home xfs defaults 0 2 Some one have any idea, how to solve it? Thanks in advance Regards -- Knoseeker --0016e648d3d63cfee60491c1b5ed Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi,

I've sent the below message to the Debian Users list and the= y told me to send it here.

I'm using Debian Lenny box with 2 hds= .

The first one is used by the OS and the second one is another syst= em witch runs in virtual machine (Virtual Box).
This virtual machine also runs Debian Lenny.

The vm's hd has 2 fdisk partitions, one being LVM.

On the la= st week, due a power failure, there was a corruption in the file system of = my home xfs partition inside the LVM.
When=C2=A0 I tried to access it, m= y OS answered that it's not a file or a directory.
Umounting and mounting again, the error persists.
I tried an xfs_check a= nd it said to mount and umount the filesystem and if it does not work to ru= n xfs_repair with -L.
I tried it a couple of times and it didn't wor= k, so I ran xfs_repair -L /dev/mapper/storage-home

On Phase 6, it just freezes in:

bad hash table for directory ino= de 2147483859 (no data entry): rebuilding
rebuilding directory inode 214= 7483859

And never finish.
I let running for 2 days long.

When I use ps to see the state:

=C2=A02359 pts/0=C2=A0=C2=A0=C2=A0 S= l+=C2=A0=C2=A0=C2=A0 0:11 xfs_repair -L /dev/mapper/storage-home

Int= erruptible sleep (waiting for an event to complete), multi threaded, in for= eground.

It just stoped when I sent an interrupt signal Ctrl+C.

I tried to do the same from the host machine (real machine), since the = HD could be accessed from it.
The funniest thing is that the xfs_repair did not hang, but when I try to=20 mount the partition it does not mount the=C2=A0 full partition.
An ls in the /mnt mounting /dev/storage/home (from host machine), doesn'= ;t show the /home, it shows a subdirectory from /home.
And if I start ag= ain the Virtual Machine, it prints the same error: /home is not file or dir= ectory.

Weird..


Extra information:
The versions:
# xfs_repair -V
xfs_repai= r version 2.9.8

#fstab entry
/dev/mapper/storage-home /home=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 xfs=C2=A0=C2=A0=C2= =A0=C2=A0 defaults=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 2

Some one have any idea, how to solve it?<= br>
Thanks in advance

Regards

--
Knoseeker<= br> --0016e648d3d63cfee60491c1b5ed-- From turbo@bayour.com Mon Oct 4 01:39:14 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_84 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o946dDhj049581 for ; Mon, 4 Oct 2010 01:39:14 -0500 X-ASG-Debug-ID: 1286174414-3dc5012b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp03-01.atm.binero.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8D05618A41AB for ; Sun, 3 Oct 2010 23:40:15 -0700 (PDT) Received: from smtp03-01.atm.binero.net (lb-smtp01.atm.binero.net [195.74.38.28]) by cuda.sgi.com with ESMTP id tjKp9MqVKulLCuKT for ; Sun, 03 Oct 2010 23:40:15 -0700 (PDT) Received: from [192.168.1.128] (81-235-239-15-no92.business.telia.com [81.235.239.15]) by smtp03-01.atm.binero.net (Postfix) with ESMTPSA id BB779116324 for ; Mon, 4 Oct 2010 08:40:13 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Apple Message framework v1081) X-ASG-Orig-Subj: Re: No space left on device Subject: Re: No space left on device From: Turbo Fredriksson In-Reply-To: Date: Mon, 4 Oct 2010 08:40:13 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <43FCE115-0B25-42C1-BEE7-D9448AD6D4C3@bayour.com> References: <20100924152324.GA5551@sgi.com> <2D51C7BA-FE51-48AF-9839-1A6AD2171510@bayour.com> <20100927160643.GA10594@sgi.com> To: xfs@oss.sgi.com X-Mailer: Apple Mail (2.1081) X-Barracuda-Connect: lb-smtp01.atm.binero.net[195.74.38.28] X-Barracuda-Start-Time: 1286174415 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42679 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean [please keep all communication on/to the list for posterity] On 27 sep 2010, at 18.26, Turbo Fredriksson wrote: > On 27 sep 2010, at 18.06, Geoffrey Wehrman wrote: >=20 >> | > or to a much more recent kernel, and the problem will go >> | > away. >> |=20 >> | How recent? >>=20 >> Based on the following FAQ, 2.6.35 or later. >> = http://xfs.org/index.php/XFS_FAQ#Q:_Can_I_just_try_the_inode64_option_to_s= ee_if_it_helps_me.3F >=20 > That only stated that you can/could switch back > and forth between 32/64bit. Not that it was/is > solved - or solve my problem. >=20 > But thanx. I'll try a later kernel then. >=20 >=20 > Ok, so 2.6.35.6 is the very latest!! I'm running > 2.6.32, which is ancient... I had expected a much > higher minor version... Thanx! Ok, I'm now at 2.6.35.6, AMD64 compiled, which let me create more files - using the inode64 mount option and/or (did both at the same time :) moving what I think was the first 5Gb data. Unfortunately, I'm still using a 32bit user land (can't upgrade at the moment). celia:~# uname -a Linux celia 2.6.35.6 #1 SMP Sat Oct 2 09:12:38 UTC 2010 x86_64 GNU/Linux celia:~# file `which xfs_db` /usr/sbin/xfs_db: ELF 32-bit LSB executable, Intel 80386, version 1 = (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, = stripped celia:~# xfs_info /share meta-data=3D/dev/mapper/movies-movies isize=3D256 agcount=3D340, = agsize=3D6104768 blks =3D sectsz=3D512 attr=3D1 data =3D bsize=3D4096 blocks=3D2075610112, = imaxpct=3D10 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 ascii-ci=3D0 log =3Dinternal bsize=3D4096 blocks=3D32768, = version=3D1 =3D sectsz=3D512 sunit=3D0 blks, = lazy-count=3D0 realtime=3Dnone extsz=3D65536 blocks=3D0, rtextents=3D0= The big question is now, what do I do if/when (soon) I have to grow the FS?! On 24 sep 2010, at 17.23, Geoffrey Wehrman wrote: > On Fri, Sep 24, 2010 at 04:07:23PM +0200, Turbo Fredriksson wrote: > | The worst thing is that every time I grow > | the FS, I have to reboot into a 32bit kernel: > |=20 > | xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument >=20 > This may be becuase your are running 32bit userland. On 24 sep 2010, at 23.17, Geoffrey Wehrman wrote: > On Fri, Sep 24, 2010 at 10:46:47PM +0200, Turbo Fredriksson wrote: > | On 24 sep 2010, at 17.23, Geoffrey Wehrman wrote: > | > Once you have 64bit inodes, it is difficult to go back to 32bit = inodes. > |=20 > | Figured that.. But will the growfs stop working? >=20 > The 64 bit growfs should work. >=20 > | I assume it won't help just recompiling the XFS > | binaries since my libs et all is/will be 32bit?. >=20 > Correct. You must have a 64 bit application/libraries/kernel. Will my current kernel, but compiled as 32bit, work without upgrading to a 64bit user land? Or is 2.6.35.6 also fixing the XFS_IOC_FSGROWFSDATA problem I've been getting on 2.6.32/64bit? But I guess I can't use that older kernel any more, since I'm now using 64bit inodes. The FAQ mentioned above, do say that I'm supposed to go back and forth, but ... I'm a coward! (Actually, I used to call myself 'careful', but I guess it's really the same thing - also, I don't care any more :). It doesn't seem reasonable that I could create a bigger (i.e. 64bit) inode table - and files in that table, switch back to a kernel that only understands 32bit inode tables (correctly and/or 'is buggy'), grow the FS, and then go back to using 64bit inodes and still have all those files created in the 64bit inode table... From SRS0+xjrV+36+fromorbit.com=david@internode.on.net Mon Oct 4 02:15:16 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o947FFYL050788 for ; Mon, 4 Oct 2010 02:15:16 -0500 X-ASG-Debug-ID: 1286177388-5ce6021d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2AAE1501100 for ; Mon, 4 Oct 2010 00:29:48 -0700 (PDT) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id a3kY3F7mKZC0rZlh for ; Mon, 04 Oct 2010 00:29:48 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41088519-1927428 for multiple; Mon, 04 Oct 2010 17:46:14 +1030 (CDT) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P2fHR-0005Cl-9G; Mon, 04 Oct 2010 18:16:13 +1100 Date: Mon, 4 Oct 2010 18:16:13 +1100 From: Dave Chinner To: Knowledge Seeker Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair never finishes on lvm partition Subject: Re: xfs_repair never finishes on lvm partition Message-ID: <20101004071613.GG4681@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1286177389 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0070 1.0000 -1.9751 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.57 X-Barracuda-Spam-Status: No, SCORE=-1.57 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42681 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 04, 2010 at 02:57:42AM +0000, Knowledge Seeker wrote: > Extra information: > The versions: > # xfs_repair -V > xfs_repair version 2.9.8 upgrade to a more recent version - that is positively ancient ;) Then if it still freezes in pahse 6, run with the -P option to turn off prefetching (slower, but should prevent the hang). Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+09uq+36+fromorbit.com=david@internode.on.net Mon Oct 4 02:18:15 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o947IFde050881 for ; Mon, 4 Oct 2010 02:18:15 -0500 X-ASG-Debug-ID: 1286177568-559002910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D38D4EB23C7 for ; Mon, 4 Oct 2010 00:32:48 -0700 (PDT) Received: from mail.internode.on.net (bld-mail15.adl6.internode.on.net [150.101.137.100]) by cuda.sgi.com with ESMTP id mnJnaX4lqPcmbdbX for ; Mon, 04 Oct 2010 00:32:48 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 29852628-1927428 for multiple; Mon, 04 Oct 2010 17:49:06 +1030 (CDT) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P2fKC-0005Cz-QI; Mon, 04 Oct 2010 18:19:04 +1100 Date: Mon, 4 Oct 2010 18:19:04 +1100 From: Dave Chinner To: Alex Elder Cc: Johannes Weiner , xfs@oss.sgi.com, John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes Message-ID: <20101004071904.GH4681@dastard> References: <20101001074354.GF2618@cmpxchg.org> <1285953443.2422.4.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1285953443.2422.4.camel@doink> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail15.adl6.internode.on.net[150.101.137.100] X-Barracuda-Start-Time: 1286177569 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42681 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: > On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > > When marking an inode reclaimable, a per-AG counter is increased, the > > inode is tagged reclaimable in its per-AG tree, and, when this is the > > first reclaimable inode in the AG, the AG entry in the per-mount tree > > is also tagged. > > > > When an inode is finally reclaimed, however, it is only deleted from > > the per-AG tree. Neither the counter is decreased, nor is the parent > > tree's AG entry untagged properly. > > > > Since the tags in the per-mount tree are not cleared, the inode > > shrinker iterates over all AGs that have had reclaimable inodes at one > > point in time. > > > > The counters on the other hand signal an increasing amount of slab > > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > > per-filesystem context" this is not a real issue anymore because the > > shrinker bails out after one iteration. > > > > But the problem was observable on a machine running v2.6.34, where the > > reclaimable work increased and each process going into direct reclaim > > eventually got stuck on the xfs inode shrinking path, trying to scan > > several million objects. > > > > Fix this by properly unwinding the reclaimable-state tracking of an > > inode when it is reclaimed. > > > > Signed-off-by: Johannes Weiner > > Cc: stable@kernel.org > > Yes, this looks right to me. The state was correctly > adjusted in xfs_iget_cache_hit() when a RECLAIMABLE > inode is found in the cache, but it was not done when > reclaim completes. > > Reviewed-by: Alex Elder Alex, can you push this to Linus ASAP? This needs to go back to stable kernels as well.. Cheers, Dave. -- Dave Chinner david@fromorbit.com From arekm@maven.pl Mon Oct 4 02:49:38 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o947nbka051960 for ; Mon, 4 Oct 2010 02:49:37 -0500 X-ASG-Debug-ID: 1286178637-3dc303b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA27E18A0735 for ; Mon, 4 Oct 2010 00:50:38 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id dbB2wEWhELgPVEGZ for ; Mon, 04 Oct 2010 00:50:38 -0700 (PDT) Received: from [83.238.65.58] (port=54996 helo=tarm.maven.pl ident=matrix157) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1P2foi-0002Dj-OZ for xfs@oss.sgi.com; Mon, 04 Oct 2010 09:50:36 +0200 Received: from arekm by tarm.maven.pl with local (Exim 4.72) (envelope-from ) id 1P2fog-0004Ux-Ft for xfs@oss.sgi.com; Mon, 04 Oct 2010 09:50:34 +0200 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH VER 7] xfsprogs: projid32bit handling Subject: Re: [PATCH VER 7] xfsprogs: projid32bit handling Date: Mon, 4 Oct 2010 09:50:33 +0200 User-Agent: KMail/1.13.5 (Linux/2.6.36-rc6-00084-gc6ea21e; KDE/4.5.2; x86_64; ; ) References: <1286005222-16423-1-git-send-email-arekm@maven.pl> In-Reply-To: <1286005222-16423-1-git-send-email-arekm@maven.pl> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201010040950.34290.arekm@maven.pl> X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1286178638 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42685 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Saturday 02 of October 2010, you wrote: > Add projid32bit handling to userspace. mkfs.xfs is able to enable this > feature for new filesystems. xfs_db knows what projid_lo/hi are. And a much better and simpler xfs_admin.sh patch. diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh index a7a3fdb..d42446b 100755 =2D-- a/db/xfs_admin.sh +++ b/db/xfs_admin.sh @@ -6,9 +6,9 @@ status=3D0 DB_OPTS=3D"" REPAIR_OPTS=3D"" =2DUSAGE=3D"Usage: xfs_admin [-efjluV] [-c 0|1] [-L label] [-U uuid] device" +USAGE=3D"Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device" =20 =2Dwhile getopts "efjluc:L:U:V" c +while getopts "efjlpuc:L:U:V" c do case $c in c) REPAIR_OPTS=3D$REPAIR_OPTS" -c lazycount=3D"$OPTARG;; @@ -17,6 +17,7 @@ do j) DB_OPTS=3D$DB_OPTS" -c 'version log2'";; l) DB_OPTS=3D$DB_OPTS" -r -c label";; L) DB_OPTS=3D$DB_OPTS" -c 'label "$OPTARG"'";; + p) DB_OPTS=3D$DB_OPTS" -c 'version projid32bit'";; u) DB_OPTS=3D$DB_OPTS" -r -c uuid";; U) DB_OPTS=3D$DB_OPTS" -c 'uuid "$OPTARG"'";; V) xfs_db -p xfs_admin -V =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From arekm@maven.pl Mon Oct 4 03:03:00 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_46,J_CHICKENPOX_47,J_CHICKENPOX_51,J_CHICKENPOX_61, J_CHICKENPOX_71,J_CHICKENPOX_75,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o9482xEs052437 for ; Mon, 4 Oct 2010 03:03:00 -0500 X-ASG-Debug-ID: 1286179440-211000200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 898FA1BFF154 for ; Mon, 4 Oct 2010 01:04:00 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id InoCedB3NwHhwBH5 for ; Mon, 04 Oct 2010 01:04:00 -0700 (PDT) Received: from [83.238.65.58] (port=48592 helo=tarm.maven.pl ident=matrix157) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1P2g1g-0003tI-4M; Mon, 04 Oct 2010 10:04:00 +0200 Received: from arekm by tarm.maven.pl with local (Exim 4.72) (envelope-from ) id 1P2g1f-0004lU-Ik; Mon, 04 Oct 2010 10:03:59 +0200 From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com Cc: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= X-ASG-Orig-Subj: [PATCH VER 8] xfsprogs: projid32bit handling Subject: [PATCH VER 8] xfsprogs: projid32bit handling Date: Mon, 4 Oct 2010 10:03:58 +0200 Message-Id: <1286179438-18282-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.7.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1286179441 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.77 X-Barracuda-Spam-Status: No, SCORE=-0.77 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7580D X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42685 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580D BODY: Custom Rule 7580D 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add projid32bit handling to userspace. mkfs.xfs is able to enable this feature for new filesystems. xfs_db knows what projid_lo/hi are. Signed-off-by: Arkadiusz Miśkiewicz --- version 7 news: - xfs_admin can now easily enable projid32bit support version 8 news: - xfs_logprint now prints single 32bit projid instead of two 16bit projid_{lo,hi}. Thus we get the same output format as before. - use %u for displaying projid (instead of %d) - projid32bit flag in mkfs.xfs output separated by coma - bs_projid is back as bs_projid_lo + define for compatibility - man page formatting fix db/check.c | 2 +- db/inode.c | 6 ++++-- db/sb.c | 6 ++++++ db/xfs_admin.sh | 5 +++-- include/xfs_dinode.h | 5 +++-- include/xfs_fs.h | 17 +++++++++++++++-- include/xfs_inode.h | 25 ++++++++++++++++++++++--- include/xfs_sb.h | 17 ++++++++++++++++- include/xfs_types.h | 2 -- libxfs/util.c | 13 ++++++++----- libxfs/xfs_ialloc.c | 3 ++- libxfs/xfs_inode.c | 6 ++++-- logprint/log_print_all.c | 4 ++-- man/man3/xfsctl.3 | 6 ++++-- man/man8/mkfs.xfs.8 | 6 ++++++ man/man8/xfs_admin.8 | 5 ++++- man/man8/xfs_db.8 | 6 ++++-- mkfs/xfs_mkfs.c | 21 +++++++++++++++++---- mkfs/xfs_mkfs.h | 3 ++- quota/quot.c | 2 +- repair/README | 2 +- 21 files changed, 125 insertions(+), 37 deletions(-) diff --git a/db/check.c b/db/check.c index 4f8a62a..a8939a4 100644 --- a/db/check.c +++ b/db/check.c @@ -2840,7 +2840,7 @@ process_inode( break; } if (ic) { - dqprid = idic.di_projid; /* dquot ID is u32 */ + dqprid = xfs_get_projid(idic); /* dquot ID is u32 */ quota_add(&dqprid, &idic.di_gid, &idic.di_uid, 0, bc, ic, rc); } diff --git a/db/inode.c b/db/inode.c index 4aa4e1a..6f8592a 100644 --- a/db/inode.c +++ b/db/inode.c @@ -81,8 +81,10 @@ const field_t inode_core_flds[] = { FLD_COUNT, TYP_NONE }, { "onlink", FLDT_UINT16D, OI(COFF(onlink)), inode_core_onlink_count, FLD_COUNT, TYP_NONE }, - { "projid", FLDT_UINT16D, OI(COFF(projid)), inode_core_projid_count, - FLD_COUNT, TYP_NONE }, + { "projid_lo", FLDT_UINT16D, OI(COFF(projid_lo)), + inode_core_projid_count, FLD_COUNT, TYP_NONE }, + { "projid_hi", FLDT_UINT16D, OI(COFF(projid_hi)), + inode_core_projid_count, FLD_COUNT, TYP_NONE }, { "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE }, { "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE }, { "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE }, diff --git a/db/sb.c b/db/sb.c index 961a939..21f38c5 100644 --- a/db/sb.c +++ b/db/sb.c @@ -620,6 +620,8 @@ version_string( strcat(s, ",ATTR2"); if (xfs_sb_version_haslazysbcount(sbp)) strcat(s, ",LAZYSBCOUNT"); + if (xfs_sb_version_hasprojid32bit(sbp)) + strcat(s, ",PROJID32BIT"); return s; } @@ -696,6 +698,10 @@ version_f( xfs_sb_version_addattr2(&mp->m_sb); version = mp->m_sb.sb_versionnum; features = mp->m_sb.sb_features2; + } else if (!strcasecmp(argv[1], "projid32bit")) { + xfs_sb_version_addprojid32bit(&mp->m_sb); + version = mp->m_sb.sb_versionnum; + features = mp->m_sb.sb_features2; } else { dbprintf(_("%s: invalid version change command \"%s\"\n"), progname, argv[1]); diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh index a7a3fdb..d42446b 100755 --- a/db/xfs_admin.sh +++ b/db/xfs_admin.sh @@ -6,9 +6,9 @@ status=0 DB_OPTS="" REPAIR_OPTS="" -USAGE="Usage: xfs_admin [-efjluV] [-c 0|1] [-L label] [-U uuid] device" +USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device" -while getopts "efjluc:L:U:V" c +while getopts "efjlpuc:L:U:V" c do case $c in c) REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG;; @@ -17,6 +17,7 @@ do j) DB_OPTS=$DB_OPTS" -c 'version log2'";; l) DB_OPTS=$DB_OPTS" -r -c label";; L) DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'";; + p) DB_OPTS=$DB_OPTS" -c 'version projid32bit'";; u) DB_OPTS=$DB_OPTS" -r -c uuid";; U) DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'";; V) xfs_db -p xfs_admin -V diff --git a/include/xfs_dinode.h b/include/xfs_dinode.h index d7cf392..f28c088 100644 --- a/include/xfs_dinode.h +++ b/include/xfs_dinode.h @@ -52,8 +52,9 @@ typedef struct xfs_dinode_core { __be32 di_uid; /* owner's user id */ __be32 di_gid; /* owner's group id */ __be32 di_nlink; /* number of links to file */ - __be16 di_projid; /* owner's project id */ - __u8 di_pad[8]; /* unused, zeroed space */ + __be16 di_projid_lo; /* lower part of owner's project id */ + __be16 di_projid_hi; /* higher part owner's project id */ + __u8 di_pad[6]; /* unused, zeroed space */ __be16 di_flushiter; /* incremented on flush */ xfs_timestamp_t di_atime; /* time last accessed */ xfs_timestamp_t di_mtime; /* time last modified */ diff --git a/include/xfs_fs.h b/include/xfs_fs.h index 74e7274..47c1e93 100644 --- a/include/xfs_fs.h +++ b/include/xfs_fs.h @@ -299,9 +299,11 @@ typedef struct xfs_bstat { __s32 bs_extsize; /* extent size */ __s32 bs_extents; /* number of extents */ __u32 bs_gen; /* generation count */ - __u16 bs_projid; /* project id */ + __u16 bs_projid_lo; /* lower part of project id */ +#define bs_projid bs_projid_lo __u16 bs_forkoff; /* inode fork offset in bytes */ - unsigned char bs_pad[12]; /* pad space, unused */ + __u16 bs_projid_hi; /* higher part of project id */ + unsigned char bs_pad[10]; /* pad space, unused */ __u32 bs_dmevmask; /* DMIG event mask */ __u16 bs_dmstate; /* DMIG state info */ __u16 bs_aextents; /* attribute number of extents */ @@ -506,4 +508,15 @@ typedef struct xfs_handle { #define BBTOB(bbs) ((bbs) << BBSHIFT) #endif +/* + * Project quota id helpers (previously projid was 16bit only + * and using two 16bit values to hold new 32bit projid was choosen + * to retain compatibility with "old" filesystems). + */ +static inline __uint32_t +bstat_get_projid(struct xfs_bstat *bs) +{ + return (__uint32_t)bs->bs_projid_hi << 16 | bs->bs_projid_lo; +} + #endif /* __XFS_FS_H__ */ diff --git a/include/xfs_inode.h b/include/xfs_inode.h index b19b467..7e6fc91 100644 --- a/include/xfs_inode.h +++ b/include/xfs_inode.h @@ -124,8 +124,9 @@ typedef struct xfs_icdinode { __uint32_t di_uid; /* owner's user id */ __uint32_t di_gid; /* owner's group id */ __uint32_t di_nlink; /* number of links to file */ - __uint16_t di_projid; /* owner's project id */ - __uint8_t di_pad[8]; /* unused, zeroed space */ + __uint16_t di_projid_lo; /* lower part of owner's project id */ + __uint16_t di_projid_hi; /* higher part of owner's project id */ + __uint8_t di_pad[6]; /* unused, zeroed space */ __uint16_t di_flushiter; /* incremented on flush */ xfs_ictimestamp_t di_atime; /* time last accessed */ xfs_ictimestamp_t di_mtime; /* time last modified */ @@ -204,6 +205,24 @@ typedef struct xfs_icdinode { ((ip)->i_d.di_anextents = (n))) +/* + * Project quota id helpers (previously projid was 16bit only + * and using two 16bit values to hold new 32bit projid was choosen + * to retain compatibility with "old" filesystems). + */ +static inline __uint32_t +xfs_get_projid(struct xfs_icdinode i_d) +{ + return (__uint32_t)i_d.di_projid_hi << 16 | i_d.di_projid_lo; +} + +static inline void +xfs_set_projid(struct xfs_icdinode *i_d, + __uint32_t projid) +{ + i_d->di_projid_hi = (__uint16_t) (projid >> 16); + i_d->di_projid_lo = (__uint16_t) (projid & 0xffff); +} #ifdef __KERNEL__ @@ -510,7 +529,7 @@ int xfs_finish_reclaim_all(struct xfs_mount *, int); int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, xfs_inode_t **, xfs_daddr_t, uint); int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, - xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, + xfs_nlink_t, xfs_dev_t, struct cred *, prid_t, int, struct xfs_buf **, boolean_t *, xfs_inode_t **); uint xfs_ip2xflags(struct xfs_inode *); diff --git a/include/xfs_sb.h b/include/xfs_sb.h index 1e86489..f88dc32 100644 --- a/include/xfs_sb.h +++ b/include/xfs_sb.h @@ -80,10 +80,12 @@ struct xfs_mount; #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ #define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ +#define XFS_SB_VERSION2_PROJID32BIT 0x00000080 /* 32 bit project id */ #define XFS_SB_VERSION2_OKREALFBITS \ (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ - XFS_SB_VERSION2_ATTR2BIT) + XFS_SB_VERSION2_ATTR2BIT | \ + XFS_SB_VERSION2_PROJID32BIT) #define XFS_SB_VERSION2_OKSASHFBITS \ (0) #define XFS_SB_VERSION2_OKREALBITS \ @@ -489,6 +491,19 @@ static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; } +static inline int xfs_sb_version_hasprojid32bit(xfs_sb_t *sbp) +{ + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT); +} + +static inline void xfs_sb_version_addprojid32bit(xfs_sb_t *sbp) +{ + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; + sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; + sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT; +} + /* * end of superblock version macros */ diff --git a/include/xfs_types.h b/include/xfs_types.h index 0f51916..228b948 100644 --- a/include/xfs_types.h +++ b/include/xfs_types.h @@ -81,8 +81,6 @@ typedef __int32_t xfs_tid_t; /* transaction identifier */ typedef __uint32_t xfs_dablk_t; /* dir/attr block number (in file) */ typedef __uint32_t xfs_dahash_t; /* dir/attr hash value */ -typedef __uint16_t xfs_prid_t; /* prid_t truncated to 16bits in XFS */ - /* * These types are 64 bits on disk but are either 32 or 64 bits in memory. * Disk based types: diff --git a/libxfs/util.c b/libxfs/util.c index 409fb92..077d2a2 100644 --- a/libxfs/util.c +++ b/libxfs/util.c @@ -134,7 +134,7 @@ libxfs_iread( * made it 32 bits long. If this is an old format inode, * convert it in memory to look like a new one. If it gets * flushed to disk we will convert back before flushing or - * logging it. We zero out the new projid field and the old link + * logging it. We zero out the new projid_lo/hi field and the old link * count field. We'll handle clearing the pad field (the remains * of the old uuid field) when we actually convert the inode to * the new format. We don't change the version number so that we @@ -143,7 +143,7 @@ libxfs_iread( if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { ip->i_d.di_nlink = ip->i_d.di_onlink; ip->i_d.di_onlink = 0; - ip->i_d.di_projid = 0; + xfs_set_projid(&ip->i_d, 0); } ip->i_delayed_blks = 0; @@ -219,7 +219,7 @@ libxfs_ialloc( ASSERT(ip->i_d.di_nlink == nlink); ip->i_d.di_uid = cr->cr_uid; ip->i_d.di_gid = cr->cr_gid; - ip->i_d.di_projid = pip ? 0 : fsx->fsx_projid; + xfs_set_projid(&ip->i_d, pip ? 0 : fsx->fsx_projid); memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); /* @@ -231,7 +231,10 @@ libxfs_ialloc( if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && ip->i_d.di_version == XFS_DINODE_VERSION_1) { ip->i_d.di_version = XFS_DINODE_VERSION_2; - /* old link count, projid field, pad field already zeroed */ + /* + * old link count, projid_lo/hi field, pad field + * already zeroed + */ } if (pip && (pip->i_d.di_mode & S_ISGID)) { @@ -446,7 +449,7 @@ libxfs_iflush_int(xfs_inode_t *ip, xfs_buf_t *bp) memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); memset(&(dip->di_core.di_pad[0]), 0, sizeof(dip->di_core.di_pad)); - ASSERT(ip->i_d.di_projid == 0); + ASSERT(xfs_get_projid(ip->i_d) == 0); } } diff --git a/libxfs/xfs_ialloc.c b/libxfs/xfs_ialloc.c index 39fdf96..32ae4b0 100644 --- a/libxfs/xfs_ialloc.c +++ b/libxfs/xfs_ialloc.c @@ -46,7 +46,8 @@ xfs_ialloc_log_di( offsetof(xfs_dinode_core_t, di_uid), offsetof(xfs_dinode_core_t, di_gid), offsetof(xfs_dinode_core_t, di_nlink), - offsetof(xfs_dinode_core_t, di_projid), + offsetof(xfs_dinode_core_t, di_projid_lo), + offsetof(xfs_dinode_core_t, di_projid_hi), offsetof(xfs_dinode_core_t, di_pad), offsetof(xfs_dinode_core_t, di_atime), offsetof(xfs_dinode_core_t, di_mtime), diff --git a/libxfs/xfs_inode.c b/libxfs/xfs_inode.c index b0adabc..1c9ea3b 100644 --- a/libxfs/xfs_inode.c +++ b/libxfs/xfs_inode.c @@ -589,7 +589,8 @@ xfs_dinode_from_disk( to->di_uid = be32_to_cpu(from->di_uid); to->di_gid = be32_to_cpu(from->di_gid); to->di_nlink = be32_to_cpu(from->di_nlink); - to->di_projid = be16_to_cpu(from->di_projid); + to->di_projid_lo = be16_to_cpu(from->di_projid_lo); + to->di_projid_hi = be16_to_cpu(from->di_projid_hi); memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad)); to->di_flushiter = be16_to_cpu(from->di_flushiter); to->di_atime.t_sec = be32_to_cpu(from->di_atime.t_sec); @@ -624,7 +625,8 @@ xfs_dinode_to_disk( to->di_uid = cpu_to_be32(from->di_uid); to->di_gid = cpu_to_be32(from->di_gid); to->di_nlink = cpu_to_be32(from->di_nlink); - to->di_projid = cpu_to_be16(from->di_projid); + to->di_projid_lo = cpu_to_be16(from->di_projid_lo); + to->di_projid_hi = cpu_to_be16(from->di_projid_hi); memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad)); to->di_flushiter = cpu_to_be16(from->di_flushiter); to->di_atime.t_sec = cpu_to_be32(from->di_atime.t_sec); diff --git a/logprint/log_print_all.c b/logprint/log_print_all.c index c21e05c..7bd4617 100644 --- a/logprint/log_print_all.c +++ b/logprint/log_print_all.c @@ -238,8 +238,8 @@ xlog_recover_print_inode_core( "onlink:%d\n"), (di->di_magic>>8) & 0xff, di->di_magic & 0xff, di->di_mode, di->di_version, di->di_format, di->di_onlink); - printf(_(" uid:%d gid:%d nlink:%d projid:%d\n"), - di->di_uid, di->di_gid, di->di_nlink, (uint)di->di_projid); + printf(_(" uid:%d gid:%d nlink:%d projid:%u\n"), + di->di_uid, di->di_gid, di->di_nlink, xfs_get_projid(*di)); printf(_(" atime:%d mtime:%d ctime:%d\n"), di->di_atime.t_sec, di->di_mtime.t_sec, di->di_ctime.t_sec); printf(_(" flushiter:%d\n"), di->di_flushiter); diff --git a/man/man3/xfsctl.3 b/man/man3/xfsctl.3 index 784b3e0..30d2238 100644 --- a/man/man3/xfsctl.3 +++ b/man/man3/xfsctl.3 @@ -564,8 +564,10 @@ The structure has the following elements: (number of extents), .B bs_gen (generation count), -.B bs_projid -(project id), +.B bs_projid_lo +(project id - low word), +.B bs_projid_hi +(project id - high word, used when projid32bit feature is enabled), .B bs_dmevmask (DMIG event mask), .B bs_dmstate diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 index fdd38d4..fa52152 100644 --- a/man/man8/mkfs.xfs.8 +++ b/man/man8/mkfs.xfs.8 @@ -350,6 +350,12 @@ between attribute and extent data. The previous version 1, which has fixed regions for attribute and extent data, is kept for backwards compatibility with kernels older than version 2.6.16. +.TP +.BI projid32bit[= value ] +This is used to enable 32bit quota project identifiers. The +.I value +is either 0 or 1, with 1 signifying that 32bit projid are to be enabled. +If the value is omitted, 0 is assumed. .RE .TP .BI \-l " log_section_options" diff --git a/man/man8/xfs_admin.8 b/man/man8/xfs_admin.8 index 8e3155b..2de907b 100644 --- a/man/man8/xfs_admin.8 +++ b/man/man8/xfs_admin.8 @@ -4,7 +4,7 @@ xfs_admin \- change parameters of an XFS filesystem .SH SYNOPSIS .B xfs_admin [ -.B \-eflu +.B \-eflpu ] [ .BR "\-c 0" | 1 ] [ @@ -52,6 +52,9 @@ log buffers). .B \-l Print the current filesystem label. .TP +.B \-p +Enable 32bit project identifier support (PROJID32BIT feature). +.TP .B \-u Print the current filesystem UUID (Universally Unique IDentifier). .TP diff --git a/man/man8/xfs_db.8 b/man/man8/xfs_db.8 index 629ae58..17ac601 100644 --- a/man/man8/xfs_db.8 +++ b/man/man8/xfs_db.8 @@ -1474,8 +1474,10 @@ number of links to the file in a version 1 inode. .B nlinkv2 number of links to the file in a version 2 inode. .TP -.B projid -owner's project id (version 2 inode only). +.B projid_lo +owner's project id (low word; version 2 inode only). +.B projid_hi +owner's project id (high word; version 2 inode only). .TP .B uid owner's user id. diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 2d09e36..5b3b9a7 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -106,6 +106,8 @@ char *iopts[] = { "size", #define I_ATTR 5 "attr", +#define I_PROJID32BIT 6 + "projid32bit", NULL }; @@ -829,6 +831,7 @@ main( __uint64_t agsize; xfs_alloc_rec_t *arec; int attrversion; + int projid32bit; struct xfs_btree_block *block; int blflag; int blocklog; @@ -923,6 +926,7 @@ main( textdomain(PACKAGE); attrversion = 2; + projid32bit = 0; blflag = bsflag = slflag = ssflag = lslflag = lssflag = 0; blocklog = blocksize = 0; sectorlog = lsectorlog = XFS_MIN_SECTORSIZE_LOG; @@ -1259,6 +1263,14 @@ main( illegal(value, "i attr"); attrversion = c; break; + case I_PROJID32BIT: + if (!value) + value = "0"; + c = atoi(value); + if (c < 0 || c > 1) + illegal(value, "i projid32bit"); + projid32bit = c; + break; default: unknown('i', value); } @@ -2261,7 +2273,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), if (!qflag || Nflag) { printf(_( "meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n" - " =%-22s sectsz=%-5u attr=%u\n" + " =%-22s sectsz=%-5u attr=%u, projid32bit=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" " =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u ascii-ci=%d\n" @@ -2269,7 +2281,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), " =%-22s sectsz=%-5u sunit=%d blks, lazy-count=%d\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n"), dfile, isize, (long long)agcount, (long long)agsize, - "", sectorsize, attrversion, + "", sectorsize, attrversion, projid32bit, "", blocksize, (long long)dblocks, imaxpct, "", dsunit, dswidth, dirversion, dirblocksize, nci, @@ -2336,7 +2348,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), sbp->sb_logsectsize = 0; } sbp->sb_features2 = XFS_SB_VERSION2_MKFS(lazy_sb_counters, - attrversion == 2, 0); + attrversion == 2, projid32bit == 1, 0); sbp->sb_versionnum = XFS_SB_VERSION_MKFS(iaflag, dsunit != 0, logversion == 2, attrversion == 1, (sectorsize != BBSIZE || @@ -2804,7 +2816,8 @@ usage( void ) /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\ (sunit=value,swidth=value|su=num,sw=num),\n\ sectlog=n|sectsize=num\n\ -/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2]\n\ +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ + projid32bit=0|1]\n\ /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ sunit=value|su=num,sectlog=n|sectsize=num,\n\ lazy-count=0|1]\n\ diff --git a/mkfs/xfs_mkfs.h b/mkfs/xfs_mkfs.h index 49401d6..f25a7f3 100644 --- a/mkfs/xfs_mkfs.h +++ b/mkfs/xfs_mkfs.h @@ -36,9 +36,10 @@ XFS_DFL_SB_VERSION_BITS | \ 0 ) : XFS_SB_VERSION_1 ) -#define XFS_SB_VERSION2_MKFS(lazycount, attr2, parent) (\ +#define XFS_SB_VERSION2_MKFS(lazycount, attr2, projid32bit, parent) (\ ((lazycount) ? XFS_SB_VERSION2_LAZYSBCOUNTBIT : 0) | \ ((attr2) ? XFS_SB_VERSION2_ATTR2BIT : 0) | \ + ((projid32bit) ? XFS_SB_VERSION2_PROJID32BIT : 0) | \ ((parent) ? XFS_SB_VERSION2_PARENTBIT : 0) | \ 0 ) diff --git a/quota/quot.c b/quota/quot.c index 09d349f..54387ea 100644 --- a/quota/quot.c +++ b/quota/quot.c @@ -102,7 +102,7 @@ quot_bulkstat_add( } for (i = 0; i < 3; i++) { id = (i == 0) ? p->bs_uid : ((i == 1) ? - p->bs_gid : p->bs_projid); + p->bs_gid : bstat_get_projid(p)); hp = &duhash[i][id % DUHASH]; for (dp = *hp; dp; dp = dp->next) if (dp->id == id) diff --git a/repair/README b/repair/README index 69cb0c5..7f168e6 100644 --- a/repair/README +++ b/repair/README @@ -130,7 +130,7 @@ D - 0) rewrite directory leaf block holemap comparison code. it does describe doesn't conflict with reality. D - 0) rewrite setting nlinks handling -- for version 1 - inodes, set both nlinks and onlinks (zero projid + inodes, set both nlinks and onlinks (zero projid_lo/hi and pad) if we have to change anything. For version 2, I think we're ok. -- 1.7.3.1 From marxism-bounces+linux-xfs=oss.sgi.com@lists.econ.utah.edu Mon Oct 4 03:15:25 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o948FPYx052981 for ; Mon, 4 Oct 2010 03:15:25 -0500 X-ASG-Debug-ID: 1286180186-620b03760000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipo3.cc.utah.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E21E2BFBA8 for ; Mon, 4 Oct 2010 01:16:26 -0700 (PDT) Received: from ipo3.cc.utah.edu (ipo3.cc.utah.edu [155.97.131.71]) by cuda.sgi.com with ESMTP id k5n1mLaILaJls5aF for ; Mon, 04 Oct 2010 01:16:26 -0700 (PDT) X-SBRS: None X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAGAFsqqUybYVGW/2dsb2JhbACUM44LcbZXiGaFRwSEUYUBbg X-IronPort-AV: E=Sophos;i="4.57,277,1283752800"; v="W32/MyDoom-O'6'rd"; d="txt'?cmd'96,83?zip'96,83,48?scan'96,83,48,48,96,83,208";a="213828699" X-ASG-Orig-Subj: [WARNING: VIRUS REMOVED]The results of your email commands Subject: [WARNING: VIRUS REMOVED]The results of your email commands Received: from lists.econ.utah.edu ([155.97.81.150]) by ipo3smtp.cc.utah.edu with ESMTP; 04 Oct 2010 02:16:25 -0600 From: marxism-bounces@lists.econ.utah.edu MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0742005447==" Message-ID: Date: Mon, 04 Oct 2010 02:16:25 -0600 Precedence: bulk X-BeenThere: marxism@lists.econ.utah.edu X-Mailman-Version: 2.1.9 List-Id: Activists and scholars in Marxist tradition X-List-Administrivia: yes To: linux-xfs@oss.sgi.com Sender: marxism-bounces+linux-xfs=oss.sgi.com@lists.econ.utah.edu Errors-To: marxism-bounces+linux-xfs=oss.sgi.com@lists.econ.utah.edu X-Barracuda-Connect: ipo3.cc.utah.edu[155.97.131.71] X-Barracuda-Start-Time: 1286180187 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1398 1.0000 -1.1594 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.16 X-Barracuda-Spam-Status: No, SCORE=-1.16 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42685 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --===============0742005447== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit The results of your email command are provided below. Attached is your original message. - Results: Ignoring non-text/plain MIME parts - Unprocessed: ----- The following addresses had permanent fatal errors ----- - Done. --===============0742005447== Content-Type: message/rfc822 MIME-Version: 1.0 Received: from [222.252.104.10] (helo=oss.sgi.com) by lists.econ.utah.edu with esmtp (Exim 4.63) (envelope-from ) id 1P2gDd-0002u8-D6 for marxism-request@lists.econ.utah.edu; Mon, 04 Oct 2010 02:16:24 -0600 From: linux-xfs@oss.sgi.com To: marxism-request@lists.econ.utah.edu Subject: MAIL SYSTEM ERROR - RETURNED MAIL Date: Sun, 3 Oct 2010 15:17:52 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0003_48C97B70.FE573477" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 This is a multi-part message in MIME format. ------=_NextPart_000_0003_48C97B70.FE573477 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit The original message was received at Sun, 3 Oct 2010 15:17:52 +0800 from oss.sgi.com [95.39.70.206] ----- The following addresses had permanent fatal errors ----- ------=_NextPart_000_0003_48C97B70.FE573477 MIME-Version: 1.0 Content-Description: Removed Attachment Content-Disposition: attachment; filename="Removed Attachment.txt" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" This attachment contained a virus and was stripped. Filename: text.zip Content-Type: application/octet-stream Virus(es): W32/MyDoom-O ------=_NextPart_000_0003_48C97B70.FE573477-- --===============0742005447==-- From tj@kernel.org Mon Oct 4 04:01:10 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o9491Ae2054614 for ; Mon, 4 Oct 2010 04:01:10 -0500 X-ASG-Debug-ID: 1286182930-341a01520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FE0218A433D; Mon, 4 Oct 2010 02:02:10 -0700 (PDT) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id mKpWZcPtJkhk1R2a; Mon, 04 Oct 2010 02:02:10 -0700 (PDT) Received: from htj.dyndns.org (localhost [127.0.0.1]) by hera.kernel.org (8.14.4/8.14.3) with ESMTP id o9491KIL030438; Mon, 4 Oct 2010 09:01:20 GMT X-Virus-Status: Clean X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.95.2 at hera.kernel.org Received: from [127.0.0.2] (htj.dyndns.org [127.0.0.2]) by htj.dyndns.org (Postfix) with ESMTPSA id B8DE81D24FA8; Mon, 4 Oct 2010 11:01:19 +0200 (CEST) Message-ID: <4CA997DF.5030008@kernel.org> Date: Mon, 04 Oct 2010 11:01:19 +0200 From: Tejun Heo User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4 MIME-Version: 1.0 To: Torsten Kaiser CC: Christoph Hellwig , Dave Chinner , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> In-Reply-To: X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.3 (hera.kernel.org [127.0.0.1]); Mon, 04 Oct 2010 09:01:22 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1286182931 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42688 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hello, On 09/25/2010 03:08 PM, Torsten Kaiser wrote: > [adding Tejun Heo, because I'm partly blaming his workqueues] :-) Sorry about the delay. I was away the last week. > After that I enabled lockdep and retried the same update: This time no > hang, only the same lockdep report that Yang Ruirui had. > > So I'm currently at a loss how I should continue from here. The XFS > false positive drowns any other lockdep problems, but XFS had some > hang problems with the new workqueues. (Personally I had no other hang > with earlier 2.6.36-rcs) If workqueue lockdep annotations are triggering spuriously, just nuke all lockdep annotations in workqueue.c. Currently the annotations are the same as before and trigger even when an actual deadlock won't happen anymore around flushes (but then again all the current users should be operating under the same constraints as before). I'm looking into how to improve the lockdep annotations but in the end it might be best to leave it as it is. I'll try to analyze the warnings. Thanks. -- tejun From SRS0+09uq+36+fromorbit.com=david@internode.on.net Mon Oct 4 04:20:17 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o949KHai055302 for ; Mon, 4 Oct 2010 04:20:17 -0500 X-ASG-Debug-ID: 1286184078-44b901620000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BD87BFDCA for ; Mon, 4 Oct 2010 02:21:19 -0700 (PDT) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id rZl3Elq2kaZrCvib for ; Mon, 04 Oct 2010 02:21:19 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41149986-1927428 for multiple; Mon, 04 Oct 2010 19:51:10 +1030 (CDT) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P2hEK-0005KP-20; Mon, 04 Oct 2010 20:21:08 +1100 Date: Mon, 4 Oct 2010 20:21:07 +1100 From: Dave Chinner To: Tejun Heo Cc: Torsten Kaiser , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning Message-ID: <20101004092107.GJ4681@dastard> References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4CA997DF.5030008@kernel.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1286184080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42690 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 04, 2010 at 11:01:19AM +0200, Tejun Heo wrote: > Hello, > > On 09/25/2010 03:08 PM, Torsten Kaiser wrote: > > [adding Tejun Heo, because I'm partly blaming his workqueues] > > :-) Sorry about the delay. I was away the last week. > > > After that I enabled lockdep and retried the same update: This time no > > hang, only the same lockdep report that Yang Ruirui had. > > > > So I'm currently at a loss how I should continue from here. The XFS > > false positive drowns any other lockdep problems, but XFS had some > > hang problems with the new workqueues. (Personally I had no other hang > > with earlier 2.6.36-rcs) What XFS hang problem? I've seen temporary livelocks from the new workqueue code, but thay have been fixed. I haven't come across any deadlocks or hangs. Do you have a pointer to a bug report in case my memory is failing me? > If workqueue lockdep annotations are triggering spuriously, just nuke > all lockdep annotations in workqueue.c. Currently the annotations are > the same as before and trigger even when an actual deadlock won't > happen anymore around flushes (but then again all the current users > should be operating under the same constraints as before). I'm > looking into how to improve the lockdep annotations but in the end it > might be best to leave it as it is. I'll try to analyze the warnings. It looks like there's been some discussion that has been private so I'm clueless as to the context being discussed here. Can someone fill me in on whatever is going on? Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+16dA+36+fromorbit.com=dave@internode.on.net Mon Oct 4 05:13:14 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94ADE1s057243 for ; Mon, 4 Oct 2010 05:13:14 -0500 X-ASG-Debug-ID: 1286187254-142b00030000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B572E18A4C51 for ; Mon, 4 Oct 2010 03:14:15 -0700 (PDT) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id o9rhiYNqPVS8PGoI for ; Mon, 04 Oct 2010 03:14:15 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41540387-1927428 for ; Mon, 04 Oct 2010 20:44:14 +1030 (CDT) Received: from disturbed ([192.168.1.9]) by dastard with esmtp (Exim 4.71) (envelope-from ) id 1P2i3g-0005OJ-JZ for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:14:12 +1100 Received: from dave by disturbed with local (Exim 4.72) (envelope-from ) id 1P2i3T-0004M6-8x for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:13:59 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfs: dynamic speculative EOF preallocation Subject: [PATCH 1/2] xfs: dynamic speculative EOF preallocation Date: Mon, 4 Oct 2010 21:13:55 +1100 Message-Id: <1286187236-16682-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1286187236-16682-1-git-send-email-david@fromorbit.com> References: <1286187236-16682-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1286187256 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42692 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Currently the size of the speculative preallocation during delayed allocation is fixed by either the allocsize mount option of a default size. We are seeing a lot of cases where we need to recommend using the allocsize mount option to prevent fragmentation when buffered writes land in the same AG. Rather than using a fixed preallocation size by default (up to 64k), make it dynamic by exponentially increasing it on each subsequent preallocation. This will result in the preallocation size increasing as the file increases, so for streaming writes we are much more likely to get large preallocations exactly when we need it to reduce fragementation. It should also prevent the need for using the allocsize mount option for most workloads involving concurrent streaming writes. Signed-off-by: Dave Chinner --- fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_iomap.c | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 39f8c78..1594190 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -248,6 +248,7 @@ typedef struct xfs_inode { mrlock_t i_iolock; /* inode IO lock */ struct completion i_flush; /* inode flush completion q */ atomic_t i_pincount; /* inode pin count */ + unsigned int i_last_prealloc; /* last EOF prealloc size */ wait_queue_head_t i_ipin_wait; /* inode pinning wait queue */ spinlock_t i_flags_lock; /* inode i_flags lock */ /* Miscellaneous state. */ diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 2057614..b2e4782 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -389,6 +389,9 @@ error_out: * If the caller is doing a write at the end of the file, then extend the * allocation out to the file system's write iosize. We clean up any extra * space left over when the file is closed in xfs_inactive(). + * + * If we find we already have delalloc preallocation out to alloc_blocks + * beyond EOF, don't do more preallocation as it it not needed. */ STATIC int xfs_iomap_eof_want_preallocate( @@ -405,6 +408,7 @@ xfs_iomap_eof_want_preallocate( xfs_filblks_t count_fsb; xfs_fsblock_t firstblock; int n, error, imaps; + int found_delalloc = 0; *prealloc = 0; if ((offset + count) <= ip->i_size) @@ -427,11 +431,25 @@ xfs_iomap_eof_want_preallocate( if ((imap[n].br_startblock != HOLESTARTBLOCK) && (imap[n].br_startblock != DELAYSTARTBLOCK)) return 0; + start_fsb += imap[n].br_blockcount; count_fsb -= imap[n].br_blockcount; + + /* count delalloc blocks beyond EOF */ + if (imap[n].br_startblock == DELAYSTARTBLOCK) + found_delalloc += imap[n].br_blockcount; } } - *prealloc = 1; + if (!found_delalloc) { + /* haven't got any prealloc, so need some */ + *prealloc = 1; + } else if (found_delalloc <= count_fsb) { + /* almost run out of prealloc */ + *prealloc = 1; + } else { + /* still lots of prealloc left */ + *prealloc = 0; + } return 0; } @@ -469,6 +487,7 @@ xfs_iomap_write_delay( extsz = xfs_get_extsz_hint(ip); offset_fsb = XFS_B_TO_FSBT(mp, offset); + error = xfs_iomap_eof_want_preallocate(mp, ip, offset, count, ioflag, imap, XFS_WRITE_IMAPS, &prealloc); if (error) @@ -476,9 +495,25 @@ xfs_iomap_write_delay( retry: if (prealloc) { + xfs_fileoff_t alloc_blocks = 0; + /* + * If we don't have a user specified preallocation size, dynamically + * increase the preallocation size as we do more preallocation. + * Cap the maximum size at a single extent. + */ + if (!(mp->m_flags & XFS_MOUNT_DFLT_IOSIZE)) { + alloc_blocks = XFS_FILEOFF_MIN(MAXEXTLEN, + (ip->i_last_prealloc * 4)); + } + if (alloc_blocks == 0) + alloc_blocks = mp->m_writeio_blocks; + ip->i_last_prealloc = alloc_blocks; + aligned_offset = XFS_WRITEIO_ALIGN(mp, (offset + count - 1)); ioalign = XFS_B_TO_FSBT(mp, aligned_offset); - last_fsb = ioalign + mp->m_writeio_blocks; + last_fsb = ioalign + alloc_blocks; + printk("ino %lld, ioalign 0x%llx, alloc_blocks 0x%llx\n", + ip->i_ino, ioalign, alloc_blocks); } else { last_fsb = XFS_B_TO_FSB(mp, ((xfs_ufsize_t)(offset + count))); } -- 1.7.1 From SRS0+JXyu+36+fromorbit.com=dave@internode.on.net Mon Oct 4 05:13:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94ADNHT057261 for ; Mon, 4 Oct 2010 05:13:23 -0500 X-ASG-Debug-ID: 1286187264-44bd02f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D916F4C76A6 for ; Mon, 4 Oct 2010 03:14:24 -0700 (PDT) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id oJAuQ5I9xlaRPrjs for ; Mon, 04 Oct 2010 03:14:24 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41419782-1927428 for ; Mon, 04 Oct 2010 20:44:23 +1030 (CDT) Received: from disturbed ([192.168.1.9]) by dastard with esmtp (Exim 4.71) (envelope-from ) id 1P2i3g-0005OK-Ky for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:14:12 +1100 Received: from dave by disturbed with local (Exim 4.72) (envelope-from ) id 1P2i3T-0004M8-Bk for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:13:59 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfs: don't truncate prealloc from frequently accessed inodes Subject: [PATCH 2/2] xfs: don't truncate prealloc from frequently accessed inodes Date: Mon, 4 Oct 2010 21:13:56 +1100 Message-Id: <1286187236-16682-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1286187236-16682-1-git-send-email-david@fromorbit.com> References: <1286187236-16682-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1286187265 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42692 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner A long standing problem for streaming writeѕ through the NFS server has been that the NFS server opens and closes file descriptors on an inode for every write. The result of this behaviour is that the ->release() function is called on every close and that results in XFS truncating speculative preallocation beyond the EOF. This has an adverse effect on file layout when multiple files are being written at the same time - they interleave their extents and can result in severe fragmentation. To avoid this problem, keep a count of the number of ->release calls made on an inode. For most cases, an inode is only going to be opened once for writing and then closed again during it's lifetime in cache. Hence if there are multiple ->release calls, there is a good chance that the inode is being accessed by the NFS server. Hence count up every time ->release is called while there are delalloc blocks still outstanding on the inode. If this count is non-zero when ->release is next called, then do no truncate away the speculative preallocation - leave it there so that subsequent writes do not need to reallocate the delalloc space. This will prevent interleaving of extents of different inodes written concurrently to the same AG. If we get this wrong, it is not a big deal as we truncate speculative allocation beyond EOF anyway in xfs_inactive() when the inode is thrown out of the cache. The new counter in the struct xfs_inode fits into a hole in the structure on 64 bit machines, so does not grow the size of the inode at all. Signed-off-by: Dave Chinner --- fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_vnodeops.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 1594190..82aad5e 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -261,6 +261,7 @@ typedef struct xfs_inode { xfs_fsize_t i_size; /* in-memory size */ xfs_fsize_t i_new_size; /* size when write completes */ atomic_t i_iocount; /* outstanding I/O count */ + int i_dirty_releases; /* dirty ->release calls */ /* VFS inode */ struct inode i_vnode; /* embedded VFS inode */ diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index b7bdc43..0c8eeba 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -979,14 +979,27 @@ xfs_release( * chance to drop them once the last reference to * the inode is dropped, so we'll never leak blocks * permanently. + * + * Further, count the number of times we get here in + * the life of this inode. If the inode is being + * opened, written and closed frequently and we have + * delayed allocation blocks oustanding (e.g. streaming + * writes from the NFS server), truncating the + * blocks past EOF will cause fragmentation to occur. + * In this case don't do the truncation, either. */ + if (ip->i_delayed_blks) + ip->i_dirty_releases++; + if (ip->i_dirty_releases > 1) + goto out; + error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_TRYLOCK); if (error) return error; } } - +out: return 0; } -- 1.7.1 From SRS0+BbKg+36+fromorbit.com=dave@internode.on.net Mon Oct 4 05:13:25 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94ADOfB057273 for ; Mon, 4 Oct 2010 05:13:24 -0500 X-ASG-Debug-ID: 1286188077-6ca2011b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BB78513538F7 for ; Mon, 4 Oct 2010 03:27:57 -0700 (PDT) Received: from mail.internode.on.net (bld-mail15.adl6.internode.on.net [150.101.137.100]) by cuda.sgi.com with ESMTP id HzC7z1VpNoq1hKmA for ; Mon, 04 Oct 2010 03:27:57 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 29868287-1927428 for ; Mon, 04 Oct 2010 20:44:23 +1030 (CDT) Received: from [192.168.1.9] (helo=disturbed) by dastard with esmtp (Exim 4.71) (envelope-from ) id 1P2i3q-0005OI-Dy for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:14:22 +1100 Received: from dave by disturbed with local (Exim 4.72) (envelope-from ) id 1P2i3T-0004M4-6z for xfs@oss.sgi.com; Mon, 04 Oct 2010 21:13:59 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [RFC, PATCH 0/2] xfs: dynamic speculative preallocation for delalloc Subject: [RFC, PATCH 0/2] xfs: dynamic speculative preallocation for delalloc Date: Mon, 4 Oct 2010 21:13:54 +1100 Message-Id: <1286187236-16682-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail15.adl6.internode.on.net[150.101.137.100] X-Barracuda-Start-Time: 1286188079 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42692 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When multiple concurrent streaming writes land in the same AG, allocation of extents interleaves between inodes and causes excessive fragmentation of the files being written. That instead of getting maximally sized extents, we'll get writeback range sized extents interleaved on disk. that is for four files A, B, C and D, we'll end up with extents like: +---+---+---+---+---+---+---+---+---+---+---+---+ A1 B1 C1 D1 A2 B2 C2 A3 D2 C3 B3 D3 ..... instead of: +-----------+-----------+-----------+-----------+ A B C D It is well known that using the allocsize mount option makes the allocator behaviour much better and more likely to result in the second layout above than the first, but that doesn't work in all situations (e.g. writes from the NFS server). I think that we should not be relying on manual configuration to solve this problem. To demonstrate, writing 4 x 64GB files in parallel (16TB volume, inode64 so all files land in same AG, 700MB/s write speed) $ for i in `seq 0 1 3`; do > dd if=/dev/zero of=/mnt/scratch/test.$i bs=64k count=1048576 & > done .... results in: $ for i in `seq 0 1 3`; do > sudo xfs_bmap -vvp /mnt/scratch/test.$i | grep ": \[" | wc -l > done 777 196 804 784 $ This shows an average extent size on three of files of 80MB, and 320MB for the other file. The level of fragmentation varies throughout the files, and varies greatly from run to run. To demonstrate allocsize=1g: $ for i in `seq 0 1 3`; do > sudo xfs_bmap -vvp /mnt/scratch/test.$i | grep ": \[" | wc -l > done 64 64 64 64 $ Which is 64x1GB extents per file, as we would expect. However, we can do better than that - with this dynamic speculative preallocation patch: $ for i in `seq 0 1 3`; do > sudo xfs_bmap -vvp /mnt/scratch/test.$i | grep ": \[" | wc -l > done 9 9 9 9 $ Which gives extent sizes of a maximal 8GB (i.e. perfect): $ sudo xfs_bmap -vv /mnt/scratch/test.0 /mnt/scratch/test.0: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..16777207]: 96..16777303 0 (96..16777303) 16777208 1: [16777208..33554295]: 91344616..108121703 0 (91344616..108121703) 16777088 2: [33554296..50331383]: 158452968..175230055 0 (158452968..175230055) 16777088 3: [50331384..67108471]: 225561320..242338407 0 (225561320..242338407) 16777088 4: [67108472..83885559]: 292669672..309446759 0 (292669672..309446759) 16777088 5: [83885560..100662647]: 359778024..376555111 0 (359778024..376555111) 16777088 6: [100662648..117439735]: 426886376..443663463 0 (426886376..443663463) 16777088 7: [117439736..134216823]: 510771816..527548903 0 (510771816..527548903) 16777088 8: [134216824..134217727]: 594657256..594658159 0 (594657256..594658159) 904 $ The same results occur for tests running 16 and 64 sequential writers into the same AG - extents of 8GB in all files, so this is a major improvement in default behaviour and effectively means we do not need the allocsize mount option anymore. Worth noting is that the extents still interleave between files - that problem still exists - but the size of the extents now means that sequential read and write rates are not going to be affected by excessive seeks between extents within each file. Given this demonstratably improves allocation patterns, the only question that remains in my mind is exactly what algorithm to use to scale the preallocation. The current patch records the last prealloc size and increases the next one from that. While that preovides good results, it will cause problems when interacting with truncation. It also means that a file may have a substantial amount of preallocatin beyond EOF - maybe several times the size of the file. However, the current algorithm does work well when writing lots of relatively small files (e.g. up to a few tens of megabytes), as increasing the preallocation size fast reduces the chances of interleaving small allocations. I've been thinking that basing the preallocation size on the current file size - say preallocate half the size of the file, is a better option once file sizes start to grow large (more than a few tens of of megabytes), so maybe a combination of the two is a better idea (increase exponentially up to default^2 (4MB prealloc), then take min(max(i_size / 2, default^2), XFS_MAXEXTLEN) as the prealloc size so that we don't do excessive amounts of preallocation? -- We need to make the same write patterns result in equivalent allocation patterns even when they come through the NFS server. Right now the NFS server uses a file descriptor for each write that comes across the wire. This means that the ->release function is called after every write, and that means XFS will be truncating away the speculative preallocation it did during the write. Hence we get interleaving files and fragmentation. To avoid this problem, detect when the ->release function is being called repeatedly on an inode that has delayed allocation outstanding. If this happenѕ twice in a row, then don't truncate the speculative allocation away. This ensures that the speculative preallocation is preserved until the delalloc blocks are converted to real extents during writeback. The result of this is that concurrent files written by NFS will tend to have a small first extent (due to specultive prealloc being truncated once), followed by 4-8GB extents that interleave identically to the above local dd exmaples. I have tested this for 4, 16 and 64 concurrent writers from multiple NFS clients. The result for 2 clients each writing 16x16GB files (32 all up): $ for i in `seq 0 1 31`; do > sudo xfs_bmap -vv /mnt/scratch/test.$i |grep ": \[" | wc -l > done | uniq -c 1 2 31 3 Mostly a combination of 4GB and 8GB extents, instead of severe fragmentation. The typical layout was: /mnt/scratch/test.1: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..8388607]: 225562280..233950887 0 (225562280..233950887) 8388608 1: [8388608..25165815]: 410111608..426888815 0 (410111608..426888815) 16777208 2: [25165816..33554431]: 896648152..905036767 0 (896648152..905036767) 8388616 These results are using NFSv3, and the per-file write rate is only ~3MB/s. Hence it can be seen that the dynamic preallocation works for both high and low per-file write throughput. Comments welcome. From hannes@cmpxchg.org Mon Oct 4 05:21:17 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94ALH1I057661 for ; Mon, 4 Oct 2010 05:21:17 -0500 X-ASG-Debug-ID: 1286187737-1cfb00040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cmpxchg.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3B3141BFEEF3; Mon, 4 Oct 2010 03:22:17 -0700 (PDT) Received: from cmpxchg.org (f0.cmpxchg.org [85.214.51.133]) by cuda.sgi.com with ESMTP id SzfR8AWISW1nM7N9; Mon, 04 Oct 2010 03:22:17 -0700 (PDT) Date: Mon, 4 Oct 2010 12:22:13 +0200 From: Johannes Weiner To: Dave Chinner Cc: Alex Elder , xfs@oss.sgi.com, John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes Message-ID: <20101004102213.GJ2618@cmpxchg.org> References: <20101001074354.GF2618@cmpxchg.org> <1285953443.2422.4.camel@doink> <20101004071904.GH4681@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101004071904.GH4681@dastard> X-Barracuda-Connect: f0.cmpxchg.org[85.214.51.133] X-Barracuda-Start-Time: 1286187738 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42693 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, On Mon, Oct 04, 2010 at 06:19:04PM +1100, Dave Chinner wrote: > On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: > > On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > > > When marking an inode reclaimable, a per-AG counter is increased, the > > > inode is tagged reclaimable in its per-AG tree, and, when this is the > > > first reclaimable inode in the AG, the AG entry in the per-mount tree > > > is also tagged. > > > > > > When an inode is finally reclaimed, however, it is only deleted from > > > the per-AG tree. Neither the counter is decreased, nor is the parent > > > tree's AG entry untagged properly. > > > > > > Since the tags in the per-mount tree are not cleared, the inode > > > shrinker iterates over all AGs that have had reclaimable inodes at one > > > point in time. > > > > > > The counters on the other hand signal an increasing amount of slab > > > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > > > per-filesystem context" this is not a real issue anymore because the > > > shrinker bails out after one iteration. > > > > > > But the problem was observable on a machine running v2.6.34, where the > > > reclaimable work increased and each process going into direct reclaim > > > eventually got stuck on the xfs inode shrinking path, trying to scan > > > several million objects. > > > > > > Fix this by properly unwinding the reclaimable-state tracking of an > > > inode when it is reclaimed. > > > > > > Signed-off-by: Johannes Weiner > > > Cc: stable@kernel.org > > > > Yes, this looks right to me. The state was correctly > > adjusted in xfs_iget_cache_hit() when a RECLAIMABLE > > inode is found in the cache, but it was not done when > > reclaim completes. > > > > Reviewed-by: Alex Elder > > Alex, can you push this to Linus ASAP? This needs to go back to > stable kernels as well.. Here is my suggestion of a backport to .34. Dave, Alex, do you approve? Hannes diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index 6845db9..3314f2a 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -499,6 +499,7 @@ xfs_ireclaim( write_lock(&pag->pag_ici_lock); if (!radix_tree_delete(&pag->pag_ici_root, agino)) ASSERT(0); + pag->pag_ici_reclaimable--; write_unlock(&pag->pag_ici_lock); xfs_perag_put(pag); From sandeen@sandeen.net Mon Oct 4 08:49:38 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94DnclD068831 for ; Mon, 4 Oct 2010 08:49:38 -0500 X-ASG-Debug-ID: 1286201054-585d00000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4CCAEA5E1C for ; Mon, 4 Oct 2010 07:04:14 -0700 (PDT) Received: from mail.sandeen.net (64-131-28-21.usfamily.net [64.131.28.21]) by cuda.sgi.com with ESMTP id cy23gpWBr1hTEYi4 for ; Mon, 04 Oct 2010 07:04:14 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 8D2674966B5C; Mon, 4 Oct 2010 08:50:39 -0500 (CDT) Message-ID: <4CA9DBAF.4080101@sandeen.net> Date: Mon, 04 Oct 2010 08:50:39 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228) MIME-Version: 1.0 To: Dave Chinner CC: Knowledge Seeker , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair never finishes on lvm partition Subject: Re: xfs_repair never finishes on lvm partition References: <20101004071613.GG4681@dastard> In-Reply-To: <20101004071613.GG4681@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-28-21.usfamily.net[64.131.28.21] X-Barracuda-Start-Time: 1286201054 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.51 X-Barracuda-Spam-Status: No, SCORE=-1.51 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42704 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Mon, Oct 04, 2010 at 02:57:42AM +0000, Knowledge Seeker wrote: >> Extra information: >> The versions: >> # xfs_repair -V >> xfs_repair version 2.9.8 > > upgrade to a more recent version - that is positively ancient ;) > > Then if it still freezes in pahse 6, run with the -P option to turn > off prefetching (slower, but should prevent the hang). And before that, if you'd like to preserve something for us to look at, run # xfs_metadump /dev/blah imagefile to capture the state of the fs which was causing problems. -Eric > Cheers, > > Dave. From aelder@sgi.com Mon Oct 4 09:20:44 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94EKhPs070693 for ; Mon, 4 Oct 2010 09:20:44 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id B7106AC002; Mon, 4 Oct 2010 07:21:43 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Oct 2010 09:21:12 -0500 Subject: Re: xfs_metadump in never ending loop From: Alex Elder Reply-To: aelder@sgi.com To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com In-Reply-To: <1286150266.4344.9.camel@doink> References: <201010012136.47502.arekm@maven.pl> <1286150266.4344.9.camel@doink> Content-Type: text/plain; charset="UTF-8" Date: Mon, 04 Oct 2010 09:21:11 -0500 Message-ID: <1286202071.2120.8.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 04 Oct 2010 14:21:12.0800 (UTC) FILETIME=[65D48E00:01CB63CF] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 2010-10-03 at 18:57 -0500, Alex Elder wrote: > On Fri, 2010-10-01 at 21:36 +0200, Arkadiusz Miskiewicz wrote: > > generate_obfuscated_name() in metadump.c can go into > > never ending loop for some file names. Reproducer below. > > The reason it hangs is that the algorithm for computing > a name with the same hash value as the name is stuck with > a portion of the hash whose only possible result includes > the string "/" in it. I understand this problem, and have a solution. But before sending out the code I want to write up an explanation of the problem, including the effect of the hash and why the existing algorithm has problems. Stay tuned. -Alex > The hash for the file "R\323\257NE" is 0x3ab4b3740. > > One step in the algorithm is this: > newname[namelen - 3] = (newhash >> 14) & 0x7f; > if (is_invalid_char(newname[namelen - 3])) > continue; > > But the result of that is 0x2f, which is the '/' > character, which is illegal. So this algorithm > will try again indefinitely, never finding a file > name with a matching hash. > > I am looking into this a bit more. Will report back > later, probably tomorrow. > > -Alex > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From press.club.international@gmail.com Mon Oct 4 11:49:36 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94GnZaX081338 for ; Mon, 4 Oct 2010 11:49:36 -0500 X-ASG-Debug-ID: 1286211037-4097016e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vmta21.birthdayalarm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4B509C08E5 for ; Mon, 4 Oct 2010 09:50:37 -0700 (PDT) Received: from vmta21.birthdayalarm.com (vmta21.birthdayalarm.com [38.99.45.41]) by cuda.sgi.com with ESMTP id GaVtYOIUcVwSgpcX for ; Mon, 04 Oct 2010 09:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=dk; d=birthdayalarm.com; h=Date:From:Sender:To:Message-ID:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding; i=service@noreply.BirthdayAlarm.com; bh=bHYf1eJgjKq9rj8pOkG6ZyedKPE=; b=awNIBzNbc/X9KwKQDDOprWsBfGX3ygFURPrgHT7GRBQ7Xtehtq4W5D6UvvVBz4T0PWqvWS8WL7tA bAXyxeJhR76omuAXZqPMH80QnwCz9CA+Kc4VziW6cdHVOZGiVHnlFwpfuGqNPyFZWR2+gj1h/Zxf AGpfTAyzQ2LSvuYx45k= DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=dk; d=birthdayalarm.com; b=BHrb9+d9ecbu25Qmj6JUMc/HuWHI2b/vYiChIXfYjCACRGNT1MEebgZEo216vfqfiAzM3LPMVbXB eu2TUqK++PjUvNSBGgcsu3XqeFQZDqEZVDHQWhDq16rD8S1AunVP48048A92BBmdAGUuHZT8zssg YoH3BNpFrMbdYQncHpU=; Received: by vmta21.birthdayalarm.com id hl82ts0im3og for ; Mon, 4 Oct 2010 16:50:37 +0000 (envelope-from ) Date: Mon, 4 Oct 2010 16:50:37 +0000 (UTC) From: Asha Anu Sender: "service@noreply.BirthdayAlarm.com" To: xfs@oss.sgi.com Message-ID: <985137908.169039831286211037243.JavaMail.batch@lpc04> X-ASG-Orig-Subj: Birthday Please Subject: Birthday Please MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Email-Type: E067 X-Barracuda-Connect: vmta21.birthdayalarm.com[38.99.45.41] X-Barracuda-Start-Time: 1286211038 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0951 1.0000 -1.4219 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42719 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello Click on the link below and please enter your birthday for me. It will take less than one minute. http://www.birthdayalarm.com/bd2/85856765a478252239b1524660317c329925674d1386 Thank You, Asha From press.club.international@gmail.com Mon Oct 4 12:31:07 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94HV6v9085395 for ; Mon, 4 Oct 2010 12:31:07 -0500 X-ASG-Debug-ID: 1286213528-70c602060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vmta28.birthdayalarm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 673A618A544D for ; Mon, 4 Oct 2010 10:32:08 -0700 (PDT) Received: from vmta28.birthdayalarm.com (vmta28.birthdayalarm.com [38.99.45.48]) by cuda.sgi.com with ESMTP id t02ejULYf5ZTT26M for ; Mon, 04 Oct 2010 10:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=dk; d=birthdayalarm.com; h=Date:From:Sender:To:Message-ID:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding; i=service@noreply.BirthdayAlarm.com; bh=4E5uexMNhWLOABRM+Jl+gG8erx4=; b=Ep5W13xRmweBTy1NnxkWDf4l6Gk6Jp1vyvCHzg26p/JqlAlvCiasp/BkDO5YgIirlAVQ+M9txp+L pLD/Zz0mgwFGeqZQj3Z42+OauciZx4uDtW3Fkmk6IT5muC0kidz6B9vNNXKxNuUrxr7Q0LL31Z79 Ce6dfwBsHC++DzaIdgU= DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=dk; d=birthdayalarm.com; b=XN6D9edV9Fa9L6DuLf/TECR05Qx3Spn4f+KNt9I5iunl/kvmfBplfaxLl/Z41+S86PcBVIhn7C++ 08ryYIjlmK8qreo2VT1bcXFoVPQFzr9eKbDKH4ZdlkDaVZyHui/zfDH8IkBKQITC86Da74HuRMBP Jp9MC4YutVFNMPfvY8U=; Received: by vmta28.birthdayalarm.com id hl87pi0im3ov for ; Mon, 4 Oct 2010 17:32:08 +0000 (envelope-from ) Date: Mon, 4 Oct 2010 17:32:08 +0000 (UTC) From: Asha Anu Sender: "service@noreply.BirthdayAlarm.com" To: xfs@oss.sgi.com Message-ID: <313804295.169421371286213528273.JavaMail.batch@lpc04> X-ASG-Orig-Subj: Updating my calendar Subject: Updating my calendar MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Email-Type: E067 X-Barracuda-Connect: vmta28.birthdayalarm.com[38.99.45.48] X-Barracuda-Start-Time: 1286213529 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1914 1.0000 -0.8734 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.87 X-Barracuda-Spam-Status: No, SCORE=-0.87 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42721 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Please click on the link below and enter your birthday into my calendar. It's quick, easy, and you'll be helping me out. http://www.birthdayalarm.com/bd2/85856765a478252239b1524680347c600416456d1386 Asha From robertpipca@gmail.com Mon Oct 4 14:42:02 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94Jg2Jn096618 for ; Mon, 4 Oct 2010 14:42:02 -0500 X-ASG-Debug-ID: 1286221383-11f403560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ey0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E92ADC1892 for ; Mon, 4 Oct 2010 12:43:04 -0700 (PDT) Received: from mail-ey0-f181.google.com (mail-ey0-f181.google.com [209.85.215.181]) by cuda.sgi.com with ESMTP id MuBFj4mU4oWwxw5j for ; Mon, 04 Oct 2010 12:43:04 -0700 (PDT) Received: by eyf6 with SMTP id 6so2314207eyf.26 for ; Mon, 04 Oct 2010 12:43:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=prTEUzF6LfsSvlUKAykAJuXtSrRfXgBiINzjypA1kNs=; b=TfzSgCHUAEbiVUA/CFBhKAhCWasINCZExkaE31t4jTmULamPEbuAUQ0MKmD8Gofw3T +q+GKRM1NXV5u4EJN8lDiH9LtLjJoPldNPDlmGeMgql0pjgLP59BbO5b0IwJF6zhgXUQ FqUIOq63+i9nKMQ286HINpT3fen85fpFP6j6k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=xaWnbRD9x/XpVNCappTB+rHRJWIWm8xSZa1J5dAj02roTFkcaVg8cB4e+SCjbn2Wua r2oH7aXshpfejkuvFoBy3nUScwE84zzaPjzdJfmlVXYKw73hP4cT/0GuXBEzFxDUpA5U AQLPFdeq299nE+RDzxyhdQGIebopxgEiEXWwI= MIME-Version: 1.0 Received: by 10.216.159.143 with SMTP id s15mr31828wek.69.1286221383141; Mon, 04 Oct 2010 12:43:03 -0700 (PDT) Received: by 10.220.112.208 with HTTP; Mon, 4 Oct 2010 12:43:02 -0700 (PDT) In-Reply-To: <20101003064547.GA9071@infradead.org> References: <20101002103902.GE4681@dastard> <20101003064547.GA9071@infradead.org> Date: Mon, 4 Oct 2010 16:43:02 -0300 Message-ID: X-ASG-Orig-Subj: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault Subject: Re: xfs_db -c frag -r /dev/sdb1 segmentation fault From: Robert Pipca To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ey0-f181.google.com[209.85.215.181] X-Barracuda-Start-Time: 1286221384 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42728 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I ran it on a mounted filesystem. It's a squid webcache machine, and I ran it on the HD that's doing the cache, to see how fragmented it is.... This thing is: After I ran xfs_fsr on the same partition, xfs_db started working again (even though both times I used "-r"). Should this have happened? Cheers, - Robert 2010/10/3 Christoph Hellwig : > On Sat, Oct 02, 2010 at 08:39:03PM +1000, Dave Chinner wrote: >> Note that the crash could be caused by a corrupted filesystem. > > Or running it on a mounted filesystem. =A0Robert, did you run the command > on a mounted or unmounted filesystem? > > From tore.hoivaag.larsen@cggveritas.com Mon Oct 4 17:11:34 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_40,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94MBXgG111169 for ; Mon, 4 Oct 2010 17:11:33 -0500 X-ASG-Debug-ID: 1286231170-6db903980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from AM1EHSOBE001.bigfish.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28B64EBA4C4 for ; Mon, 4 Oct 2010 15:26:11 -0700 (PDT) Received: from AM1EHSOBE001.bigfish.com (am1ehsobe001.messaging.microsoft.com [213.199.154.204]) by cuda.sgi.com with ESMTP id uXEqnG1JAvixzn22 for ; Mon, 04 Oct 2010 15:26:11 -0700 (PDT) Received: from mail68-am1-R.bigfish.com (10.3.201.252) by AM1EHSOBE001.bigfish.com (10.3.204.21) with Microsoft SMTP Server id 14.1.225.8; Mon, 4 Oct 2010 22:12:34 +0000 Received: from mail68-am1 (localhost.localdomain [127.0.0.1]) by mail68-am1-R.bigfish.com (Postfix) with ESMTP id 797221578692 for ; Mon, 4 Oct 2010 22:12:34 +0000 (UTC) X-SpamScore: 16 X-BigFish: VS16(zzzz1202hzzz2dh27ah2a8h43h69ih) X-FB-SS: 0, Received: from mail68-am1 (localhost.localdomain [127.0.0.1]) by mail68-am1 (MessageSwitch) id 1286230317901964_21140; Mon, 4 Oct 2010 22:11:57 +0000 (UTC) Received: from am1ehsmhs010.bigfish.com (unknown [10.3.201.252]) by mail68-am1.bigfish.com (Postfix) with ESMTP id B34A29B0055 for ; Mon, 4 Oct 2010 22:11:57 +0000 (UTC) Received: from hou-exh01.int.cggveritas.com (192.159.106.244) by am1ehsmhs010.bigfish.com (10.3.207.110) with Microsoft SMTP Server (TLS) id 14.0.482.44; Mon, 4 Oct 2010 22:11:56 +0000 Received: from crw-exh01.int.cggveritas.com (10.50.16.45) by hou-exh01.int.cggveritas.com (10.14.1.186) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 4 Oct 2010 17:11:52 -0500 Received: from CRW-EXM01.int.cggveritas.com ([10.50.16.49]) by crw-exh01.int.cggveritas.com ([10.50.16.45]) with mapi; Mon, 4 Oct 2010 23:11:50 +0100 From: =?iso-8859-1?Q?Larsen=2C_Tore_H=F8ivaag?= To: "xfs@oss.sgi.com" Date: Mon, 4 Oct 2010 23:11:50 +0100 X-ASG-Orig-Subj: xfs_freeze on multipathd lvm2 ? Subject: xfs_freeze on multipathd lvm2 ? Thread-Topic: xfs_freeze on multipathd lvm2 ? Thread-Index: AQHLZBEk9Z/1sVyfHUG8FEEHiIHk1w== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Bypass-Agent: EF-1; X-Reverse-DNS: unknown X-Barracuda-Connect: am1ehsobe001.messaging.microsoft.com[213.199.154.204] X-Barracuda-Start-Time: 1286231172 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1252 1.0000 -1.2438 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.24 X-Barracuda-Spam-Status: No, SCORE=-1.24 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Does it work?=20 Regards, --ToreL= From knoseeker@googlemail.com Mon Oct 4 17:47:02 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.6 required=5.0 tests=BAYES_05,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_44,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94Ml2PO114912 for ; Mon, 4 Oct 2010 17:47:02 -0500 X-ASG-Debug-ID: 1286233299-669900760000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A005EBB3E5 for ; Mon, 4 Oct 2010 16:01:39 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id gsElGothZf1mcL63 for ; Mon, 04 Oct 2010 16:01:39 -0700 (PDT) Received: by wwb28 with SMTP id 28so6147839wwb.32 for ; Mon, 04 Oct 2010 15:48:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=eeq7czcFsqX9DziWXmZQhURdbO4myBMgmgFDTObe96M=; b=N8u6TW3CnkAQO5WtEPcjV6j04J3TImGrCxZOrx+pYx58xDfkjVsG8YByjePV/sruSr ZgdpQQvZ8yukIyOCOMlv0vsTldCBmz8TVUMgyHLRty7idgrc5qRxukWJaghLgxeRK0Nt UWyWNDPHR9XXj1ghTweKEcqVBhP1H/KbIwo8I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=TBHJItFVIZvIYaHxvOiLZB48W36Lv76rg8ke59ONeToJtDhIGn6p+KfLOjtyQiBLVz 8CNu6972GHyfEZcJFS3RGcv1HfuCnTPNsbIGNR/GEZSSg9ZEORpitD1dNwpamGqmr3Uj QOC0/6uNnPxOnstoyT/wqKy/IGHCrAlCKAJB0= MIME-Version: 1.0 Received: by 10.227.151.83 with SMTP id b19mr7991200wbw.205.1286232483107; Mon, 04 Oct 2010 15:48:03 -0700 (PDT) Received: by 10.227.143.68 with HTTP; Mon, 4 Oct 2010 15:48:03 -0700 (PDT) In-Reply-To: <4CA9DBAF.4080101@sandeen.net> References: <20101004071613.GG4681@dastard> <4CA9DBAF.4080101@sandeen.net> Date: Mon, 4 Oct 2010 22:48:03 +0000 Message-ID: X-ASG-Orig-Subj: Re: xfs_repair never finishes on lvm partition Subject: Re: xfs_repair never finishes on lvm partition From: Knowledge Seeker To: Eric Sandeen Cc: Dave Chinner , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=0016e649c868411e3a0491d25642 X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1286233300 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0183 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42740 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016e649c868411e3a0491d25642 Content-Type: text/plain; charset=UTF-8 Thanks for the help. The good news is running -P option works and the FS is ok. The Bad news is that names of files were lost, all the files were moved to lost+find. Is there any easy way to recover it, or the solution is the hard way? Sorry about the xfs_metadump, I ran the xfs_repair, before read all messages. If it happens again (I hope it doesnt), the first thing I'll do is send it. Thank you again. On Mon, Oct 4, 2010 at 1:50 PM, Eric Sandeen wrote: > Dave Chinner wrote: > > On Mon, Oct 04, 2010 at 02:57:42AM +0000, Knowledge Seeker wrote: > >> Extra information: > >> The versions: > >> # xfs_repair -V > >> xfs_repair version 2.9.8 > > > > upgrade to a more recent version - that is positively ancient ;) > > > > Then if it still freezes in pahse 6, run with the -P option to turn > > off prefetching (slower, but should prevent the hang). > > And before that, if you'd like to preserve something for us to > look at, run > > # xfs_metadump /dev/blah imagefile > > to capture the state of the fs which was causing problems. > > -Eric > > > Cheers, > > > > Dave. > > -- Knoseeker --0016e649c868411e3a0491d25642 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks for the help.

The good news is running -P option works and th= e FS is ok.
The Bad news is that names of files were lost, all the files= were moved to lost+find.
Is there any easy way to recover it, or the so= lution is the hard way?

Sorry about the xfs_metadump, I ran the xfs_repair, before read all mes= sages.
If it happens again (I hope it doesnt), the first thing I'll = do is send it.

Thank you again.






On Mon, Oct 4, 2010 at 1:50 PM, Eric Sandeen <sandeen@sandeen.net> wrote:
Dave Chinner wrote:
> On Mon, Oct 04, 2010 at 02:57:42AM +0000, Knowledge Seeker wrote:
>> Extra information:
>> The versions:
>> # xfs_repair -V
>> xfs_repair version 2.9.8
>
> upgrade to a more recent version - that is positively ancient ;)
>
> Then if it still freezes in pahse 6, run with the -P option to turn > off prefetching (slower, but should prevent the hang).

And before that, if you'd like to preserve something for us to look at, run

# xfs_metadump /dev/blah imagefile

to capture the state of the fs which was causing problems.

-Eric

> Cheers,
>
> Dave.




--
Knoseeker
--0016e649c868411e3a0491d25642-- From sim@netnation.com Mon Oct 4 17:47:29 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o94MlSjc114975 for ; Mon, 4 Oct 2010 17:47:29 -0500 X-ASG-Debug-ID: 1286233327-63a000950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from peace.netnation.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F5D9EBB3EA for ; Mon, 4 Oct 2010 16:02:07 -0700 (PDT) Received: from peace.netnation.com (newpeace.netnation.com [204.174.223.7]) by cuda.sgi.com with ESMTP id rrZPKkAAfrChJanq for ; Mon, 04 Oct 2010 16:02:07 -0700 (PDT) Received: from sim by peace.netnation.com with local (Exim 4.69) (envelope-from ) id 1P2tpe-0006RV-7r; Mon, 04 Oct 2010 15:48:30 -0700 Date: Mon, 4 Oct 2010 15:48:30 -0700 From: Simon Kirby To: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: 2.6.35.6 XFS: Inconsistent lock state Subject: 2.6.35.6 XFS: Inconsistent lock state Message-ID: <20101004224830.GJ30524@hostway.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: newpeace.netnation.com[204.174.223.7] X-Barracuda-Start-Time: 1286233327 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42740 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Out of the blue, while running postfix+mailscanner: ================================= [ INFO: inconsistent lock state ] 2.6.35.6-hw #1 --------------------------------- inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage. MailScanner/28712 [HC0[0]:SC0[0]:HE1:SE1] takes: (&(&ip->i_iolock)->mr_lock#2){++++?+}, at: [] xfs_ilock+0xf5/0x100 {RECLAIM_FS-ON-W} state was registered at: [] mark_held_locks+0x74/0xa0 [] lockdep_trace_alloc+0xe5/0xf0 [] __alloc_pages_nodemask+0x77/0x6d0 [] grab_cache_page_write_begin+0x85/0xd0 [] block_write_begin_newtrunc+0x8a/0xe0 [] block_write_begin+0x3e/0x80 [] xfs_vm_write_begin+0x25/0x30 [] generic_file_buffered_write+0x106/0x230 [] xfs_file_aio_write+0x842/0x8c0 [] do_sync_write+0xd1/0x120 [] vfs_write+0xcb/0x1a0 [] sys_write+0x50/0x90 [] system_call_fastpath+0x16/0x1b irq event stamp: 34471 hardirqs last enabled at (34471): [] _raw_spin_unlock_irqrestore+0x3f/0x70 hardirqs last disabled at (34470): [] _raw_spin_lock_irqsave+0x2d/0x90 softirqs last enabled at (34314): [] __do_softirq+0x19f/0x1f0 softirqs last disabled at (34309): [] call_softirq+0x1c/0x30 other info that might help us debug this: 2 locks held by MailScanner/28712: #0: (&mm->mmap_sem){++++++}, at: [] do_page_fault+0xe7/0x430 #1: (shrinker_rwsem){++++..}, at: [] shrink_slab+0x38/0x180 stack backtrace: Pid: 28712, comm: MailScanner Not tainted 2.6.35.6-hw #1 Call Trace: [] print_usage_bug+0x190/0x1f0 [] mark_lock+0x4b0/0x6c0 [] ? check_usage_forwards+0x0/0x120 [] __lock_acquire+0x89d/0x1e20 [] ? native_sched_clock+0x20/0x80 [] ? radix_tree_delete+0x1c9/0x2e0 [] lock_acquire+0xe9/0x120 [] ? xfs_ilock+0xf5/0x100 [] ? trace_hardirqs_off+0xd/0x10 [] down_write_nested+0x42/0x90 [] ? xfs_ilock+0xf5/0x100 [] xfs_ilock+0xf5/0x100 [] xfs_ireclaim+0xa8/0xe0 [] xfs_reclaim_inode+0x18f/0x260 [] xfs_inode_ag_walk+0x74/0x140 [] ? xfs_reclaim_inode+0x0/0x260 [] xfs_inode_ag_iterator+0x80/0xd0 [] ? xfs_reclaim_inode+0x0/0x260 [] xfs_reclaim_inode_shrink+0x85/0x90 [] shrink_slab+0x125/0x180 [] try_to_free_pages+0x23e/0x480 [] __alloc_pages_nodemask+0x3db/0x6d0 [] do_wp_page+0x1ae/0x7f0 [] handle_mm_fault+0x5be/0x840 [] ? do_page_fault+0xe7/0x430 [] do_page_fault+0x1eb/0x430 [] ? _raw_spin_unlock_irq+0x2b/0x40 [] ? finish_task_switch+0x74/0xf0 [] ? finish_task_switch+0x0/0xf0 [] ? schedule+0x4c8/0x820 [] ? trace_hardirqs_off_thunk+0x3a/0x3c [] page_fault+0x25/0x30 Simon- From SRS0+/+/0+37+fromorbit.com=david@internode.on.net Mon Oct 4 19:24:34 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o950OXmG125255 for ; Mon, 4 Oct 2010 19:24:34 -0500 X-ASG-Debug-ID: 1286238334-553500990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 15ABAC2514 for ; Mon, 4 Oct 2010 17:25:34 -0700 (PDT) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id H9t49K8wVUNlh8MJ for ; Mon, 04 Oct 2010 17:25:34 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41607308-1927428 for multiple; Tue, 05 Oct 2010 10:55:33 +1030 (CDT) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P2vLX-0006Qm-Kc; Tue, 05 Oct 2010 11:25:31 +1100 Date: Tue, 5 Oct 2010 11:25:31 +1100 From: Dave Chinner To: Simon Kirby Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.35.6 XFS: Inconsistent lock state Subject: Re: 2.6.35.6 XFS: Inconsistent lock state Message-ID: <20101005002531.GK4681@dastard> References: <20101004224830.GJ30524@hostway.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101004224830.GJ30524@hostway.ca> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1286238336 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0083 1.0000 -1.9670 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42748 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 04, 2010 at 03:48:30PM -0700, Simon Kirby wrote: > Out of the blue, while running postfix+mailscanner: > False positive - reclaim will never be attempting to lock an active inode. IIRC The page cache allocation in .36 now uses GFP_NOFS, so this should go away when you update to a newer kernel. Cheers, Dave. -- Dave Chinner david@fromorbit.com From news@pears-gallery.com Mon Oct 4 23:00:42 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o9540g3s147763 for ; Mon, 4 Oct 2010 23:00:42 -0500 X-ASG-Debug-ID: 1286251301-4a4401650000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DFFAB18AF177 for ; Mon, 4 Oct 2010 21:01:41 -0700 (PDT) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id ypNJvCptd5ldyzbH for ; Mon, 04 Oct 2010 21:01:41 -0700 (PDT) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id 27D27134FD1 for ; Tue, 5 Oct 2010 06:00:49 +0200 (CEST) From: "News Pears Gallery" X-ASG-Orig-Subj: Come and see the new web site dedicated to the contemporary art promotion. Subject: Come and see the new web site dedicated to the contemporary art promotion. To: "linux-xfs" Content-Type: multipart/alternative; boundary="oHHI7cQXaEhWx1ZugdcYu=_kAsoOGJkTqh" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Tue, 5 Oct 2010 06:01:38 +0200 Message-Id: <20101005040050.27D27134FD1@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1286251302 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --oHHI7cQXaEhWx1ZugdcYu=_kAsoOGJkTqh Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable www.pears-gallery.com presents : FRANCOIS BOUCHEIX Painter Fran=E7ois Boucheix was born on January, 7 1940 in Montcheneix= , a small village at the foot of the Auvergne Mounts, in the district = of Rochefort Montagne, from farmers whose family had been living in th= e Auvergne for centuries. He lost his father at the age of 15, and has= to learn a job far from his artistic ambitions. Despite the day's int= ense work, he spends his evenings, part of his nights and holidays pai= nting. In those days, most painters were still coming from whealthy or= intellectual families. He first exhibits in February 1960 in Tunisia, then in provincial Fran= ce, particularly in the Auvergne and in Southern France. He came forwa= rd in Paris in 1964, during a great exhibition in the Galerie de S=E8v= res, where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly = exhibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGN= IMONT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE i= ntroduced him to DALI. From 1964 to 1972 he exhibited in the Galerie d= e S=E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Gui= gn=E9 (Paris Right Bank). In 1965, he met in the Galerie de S=E8vres Georges GIRAUDON, writer an= d art critic for many newspapers, art counselor for great collectors a= nd old friend of Breton's, himself a friend of many surrealists'. It w= as Georges GIRAUDON who introduced Fran=E7ois Boucheix to several art = dealers such as Y. JAUBERT, Paulette and Angelo GUIGNI, etc. It was after an exhibition called 'From DALI to BOUCHEIX', with painti= ngs by MEISSONNIER that he decided to become a surrealist of dream and= happiness and not a sad surrealist. He also met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great frien= d of Parisian high society's arts at that time. In the summertime, fro= m 1970 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix'= s in Royat; she was a friend of FOUGITA's, helped ZADKIN much, and liv= ed the great years of Montparnasse. Since then, Fran=E7ois Boucheix has worked for the best dealers and ga= lleries, and has exhibited all over the world : 1974 : Galerie Matignon, Av. Matignon Paris 8th, 1975 : Galerie Weil, = Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av. Matignon Paris 8th= , 1977 : Retrospective Vichy Grand Casino's Lounges 1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : Galerie= Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the lounges = of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990, he cel= ebrated the thirtieth anniversary of his first exhibition, and his fir= st book's publication, with a foreword by Roger PEYREFITTE, in presenc= e of many personnalities such as the Count of Paris or Emperor BAODAI.= >From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Paris 8th. He= also exhibited in Basel, Geneva, Zurich, Beyrouth, London, Berlin, To= kyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijing, Brussell= s, Luxemburg, Dubai, etc. In 2002, Fran=E7ois Boucheix made his first sculptures after sculptor = C=E9sar's advice. In 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in= Vichy, at the heart of one of France's most beautiful cities, with it= s prestigious architecture. In just a few years, thousands of people, = personnalities and the international media have already visited this m= useum, a must-see in the cultural world. (see website www.boucheix-mus= ee.com) Loved or hated, one can recognize a great master in painting without n= eeding his signature : BUFFET, CARZOU, MODIGLIANI, DALI, MIRO, BOUCHEI= X. This last has created thousands of canvas, in the valley of Royat, = for half a century. They are at present in numerous private or public = collections all over the world. Fran=E7ois Boucheix is, without any doubt, one of the great worldwide-= renowed painters the Auvergne was waiting for. =20 =20 =20 =20 Unsubscribe --oHHI7cQXaEhWx1ZugdcYu=_kAsoOGJkTqh Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

 

<= /P>

www.pears-gallery.com presents :


FRANCOIS BO= UCHEIX
 
Painter Fran=E7ois Boucheix was bo= rn on January, 7 1940 in Montcheneix, a small village at the foot of t= he Auvergne Mounts, in the district of Rochefort Montagne, from farmer= s whose family had been living in the Auvergne for centuries. He lost = his father at the age of 15, and has to learn a job far from his artis= tic ambitions. Despite the day's intense work, he spends his evenings,= part of his nights and holidays painting. In those days, most painter= s were still coming from whealthy or intellectual families.

He = first exhibits in February 1960 in Tunisia, then in provincial France,= particularly in the Auvergne and in Southern France. He came forward = in Paris in 1964, during a great exhibition in the Galerie de S=E8vres= , where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly exh= ibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGNIMO= NT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE intr= oduced him to DALI. From 1964 to 1972 he exhibited in the Galerie de S= =E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Guign=E9= (Paris Right Bank).
In 1965, he met in the Galerie de S=E8vres Geo= rges GIRAUDON, writer and art critic for many newspapers, art counselo= r for great collectors and old friend of Breton's, himself a friend of= many surrealists'. It was Georges GIRAUDON who introduced Fran=E7ois = Boucheix to several art dealers such as Y. JAUBERT, Paulette and Angel= o GUIGNI, etc.

It was after an exhibition called 'From DALI to = BOUCHEIX', with paintings by MEISSONNIER that he decided to become a s= urrealist of dream and happiness and not a sad surrealist.

He a= lso met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great friend of= Parisian high society's arts at that time. In the summertime, from 19= 70 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix's in= Royat; she was a friend of FOUGITA's, helped ZADKIN much, and lived t= he great years of Montparnasse.

Since then, Fran=E7ois Boucheix= has worked for the best dealers and galleries, and has exhibited all = over the world :
1974 : Galerie Matignon, Av. Matignon Paris 8th, 1= 975 : Galerie Weil, Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av= =2E Matignon Paris 8th, 1977 : Retrospective Vichy Grand Casino's Loun= ges
1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : = Galerie Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the l= ounges of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990,= he celebrated the thirtieth anniversary of his first exhibition, and = his first book's publication, with a foreword by Roger PEYREFITTE, in = presence of many personnalities such as the Count of Paris or Emperor = BAODAI.
From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Pa= ris 8th. He also exhibited in Basel, Geneva, Zurich, Beyrouth, London,= Berlin, Tokyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijin= g, Brussells, Luxemburg, Dubai, etc.

In 2002, Fran=E7ois Bouche= ix made his first sculptures after sculptor C=E9sar's advice.

I= n 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in = Vichy, at the heart of one of France's most beautiful cities, with its= prestigious architecture. In just a few years, thousands of people, p= ersonnalities and the international media have already visited this mu= seum, a must-see in the cultural world. (see website www.boucheix-muse= e.com)

Loved or hated, one can recognize a great master in pain= ting without needing his signature : BUFFET, CARZOU, MODIGLIANI, DALI,= MIRO, BOUCHEIX. This last has created thousands of canvas, in the val= ley of Royat, for half a century. They are at present in numerous priv= ate or public collections all over the world.

Fran=E7ois Bouche= ix is, without any doubt, one of the great worldwide-renowed painters = the Auvergne was waiting for.
 
=
 

 

 

 

 

 

Unsubscribe<= /FONT>

--oHHI7cQXaEhWx1ZugdcYu=_kAsoOGJkTqh-- From sales@palacegift.com Tue Oct 5 01:40:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.9 required=5.0 tests=BAYES_50,MSGID_FROM_MTA_HEADER, RCVD_DOUBLE_IP_LOOSE,TO_MALFORMED autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o956eMBO166298 for ; Tue, 5 Oct 2010 01:40:23 -0500 X-ASG-Debug-ID: 1286260867-5b5d013a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from oweb.cn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 924F118AF33B for ; Mon, 4 Oct 2010 23:41:11 -0700 (PDT) Received: from oweb.cn (smtp.oweb.cn [222.73.173.111]) by cuda.sgi.com with SMTP id MSQh5nTDG1ufP5oX for ; Mon, 04 Oct 2010 23:41:11 -0700 (PDT) X-EYOU-SPAMVALUE:0 X-EYOU-DEALDRC: X-EMDG-VER:2009-11-28 Received: (eyou anti_spam gateway 3.0); Tue, 05 Oct 2010 14:40:46 +0800 Message-ID: <486260846.29993@oweb.cn> X-EYOUMAIL-SMTPAUTH: sales@palacegift.com Received: from 112.95.245.9 by 222.73.173.111 with SMTP; Tue, 05 Oct 2010 14:40:34 +0800 Reply-To: sales@palacegift.com From: Jason Su To: <> X-ASG-Orig-Subj: Porcelain Double Wall Coffee Mug with Lid Subject: Porcelain Double Wall Coffee Mug with Lid Sender: Jason Su Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="= Multipart Boundary 1005101440" Date: Tue, 5 Oct 2010 14:40:57 +0800 X-Barracuda-Connect: smtp.oweb.cn[222.73.173.111] X-Barracuda-Start-Time: 1286260882 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4629 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.50 X-Barracuda-Spam-Status: No, SCORE=1.50 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MSGID_FROM_MTA_HEADER, MSGID_FROM_MTA_HEADER_2, RCVD_DOUBLE_IP_LOOSE, TO_MALFORMED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42773 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 TO_MALFORMED To: has a malformed address 0.00 MSGID_FROM_MTA_HEADER Message-Id was added by a relay 0.00 RCVD_DOUBLE_IP_LOOSE Received: by and from look like IP addresses 1.50 MSGID_FROM_MTA_HEADER_2 Message-Id was added by a relay X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multipart MIME message. --= Multipart Boundary 1005101440 Content-Type: text/plain; charset="GB2312_CHARSET" Content-Transfer-Encoding: 7bit Dear Customers and Prospects, I would like to bring you an update for our Double Wall Ceramic Mugs. The Double Wall Ceramic Coffee Mug is one of the best promotional items and gift products. Our products have been shipped to many countries in the world. Please find some photos of the products that we made for customers. Those are the products that we produced for customers. The design/copyright is belonged to our customer. But this would be able to give you some idea about what we can do for you. We have made this Double Wall Ceramic Mugs for many clients, to name just a few of them: 1. MasterCard 2. Bayer 3. Seattle Souvenirs 4. Las Vegas Souvenirs 5. San Francisco Souvenirs 6. Animal Gifts 7. Beach croft 8. Paris Souvenirs 9. etc etc Please go to our website for more products: http://www.palacegift.com/en/ProductList.asp?SortID=59 We have very competitive prices. Please contact us for the price list. We produce the best quality products for many customers in many countries in the world. Moreover, we are the factory in China and we offer very competitive price for customers. And we can do small quantity or very low minimum. We have a complete line of double wall ceramic mugs for your options. There are different sizes of mugs for your options, such as 8 oz, 10 oz, 12 oz, and 15 oz Double Wall Ceramic. 12 oz size is the most popular. Here is the feature of the Double Wall Ceramic Mug: 1. Fine Porcelain material and Double Wall Construction: Keeps your drink stay hot longer and cold longer too. Also, because it is double wall ceramic construction, your hand will not be burnt or hurt by the heat. Even if you fill in boiling drink, it is still NOT hot on the outside wall and you can hold the mug directly by your hands. 2. Silicone sip top lid: this lid is food Grade. It seals the mug and keeps your drink in the mug and avoids splashing when the mug is accidentally knocked over. 3. Microwavable 4. Dishwasher Safe 5. This mug also goes into the mug holder in your car. We can do many different options for your promotional purpose or gifting functions: 1. Besides White, we can custom made the mug in different colors. 2. We can custom made the lid in many different colors to match your deseign. 3. We can add a silicone Sleeve holder on the mug and we can make this sleeve in any color you like. 4. We can do any imprinting on the lid or on the sleeve or on the mug for you. 5. We have no problem with small quantity or big quantity. We can do low Minimum and small quantity. And our capacity is also set up for bigger quantity orders too. 6. Different kinds of packaging options is available, bulk pack or gift boxed packing is available. 7. Quick sampling 8. Fast Delivery. Because we are the producer for this mug and we have almost everything in house. We have a good control of everything. Please contact us if you would like to have the best price list. Best regards, Jason Su Palace Gift Limited Room 3101A, Jinhui Building, Nanhai Avenue 2079, Nanshan, Shenzhen, China Postal Code: 518054 www.palacegift.com sales@palacegift.com sparkamp@126.com tel: 86-755 2688 6566 fax: 86-755 2688 6233 cell: 86-135 0281 5054 ************************** PS: Consider the environment; please don't print this email unless you really need to do so. --= Multipart Boundary 1005101440 Content-Type: application/octet-stream; name="Double Wall Ceramic Mugs from Palace Gift Ltd.xls" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Double Wall Ceramic Mugs from Palace Gift Ltd.xls" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAF AAAAFwIAAAAAAAAAEAAA/v///wAAAAD+////AAAAABICAAATAgAAFAIAABUC AAAWAgAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////8JCBAAAAYFAN4ezQfJgAAABgIAAOEAAgCwBMEA AgAAAOIAAABcAHAAAgAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIAAgCwBGEBAgAA AMABAAA9AQIAAQC6AQ8ADAAAVGhpc1dvcmtib29rnAACAA4AGQACAAAAEgAC AAAAEwACAAAArwECAAAAvAECAAAAPQASAOABeAA5IbIROAAAAAAAAQBYAkAA AgAAAI0AAgAAACIAAgAAAA4AAgABALcBAgAAANoAAgAAADEAFADwAAAA/3+Q AQAAAACGAAIBi1tTTzEAFADwAAAA/3+QAQAAAACGAAIBi1tTTzEAFADwAAAA /3+QAQAAAACGAAIBi1tTTzEAFADwAAAA/3+QAQAAAACGAAIBi1tTTzEAFAC0 AAAA/3+QAQAAAACGAAIBi1tTTzEAGgDwAAAA/3+QAQAAAAIAAAUBQQByAGkA YQBsADEAGgDAAwEA/3+8AgAAAAIAAAUBQQByAGkAYQBsADEAGgDwAAEA/3+8 AgAAAAIAAAUBQQByAGkAYQBsADEAFAC4AQEA/3+8AgAAAACGAAIBi1tTTzEA MgDgAQEA/3+8AgAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0 AHkAbABlADEAMgDwAAAA/3+QAQAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8A bABkACAAUwB0AHkAbABlADEAMgAYAQAA/3+QAQAAAAEAABEBQgBvAG8AawBt AGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgAYAQAADACQAQAAAAEAABEB QgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAFADwAAQADACQ AQAAAQCGAAIBi1tTTzEAMgDwAAEA/3+8AgAAAAEAABEBQgBvAG8AawBtAGEA bgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDwAAQA/3+QAQAAAQEAABEBQgBv AG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDQAgEA/3+8AgAA AAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDc AAEACQC8AgAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkA bABlADEAMgDwAAQADACQAQAAAQEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABk ACAAUwB0AHkAbABlAB4EKwAFABMAASIA5f8iACMALAAjACMAMAA7ACIA5f8i AFwALQAjACwAIwAjADAAHgQ1AAYAGAABIgDl/yIAIwAsACMAIwAwADsAWwBS AGUAZABdACIA5f8iAFwALQAjACwAIwAjADAAHgQ3AAcAGQABIgDl/yIAIwAs ACMAIwAwAC4AMAAwADsAIgDl/yIAXAAtACMALAAjACMAMAAuADAAMAAeBEEA CAAeAAEiAOX/IgAjACwAIwAjADAALgAwADAAOwBbAFIAZQBkAF0AIgDl/yIA XAAtACMALAAjACMAMAAuADAAMAAeBGkAKgAyAAFfACAAIgDl/yIAKgAgACMA LAAjACMAMABfACAAOwBfACAAIgDl/yIAKgAgAFwALQAjACwAIwAjADAAXwAg ADsAXwAgACIA5f8iACoAIAAiAC0AIgBfACAAOwBfACAAQABfACAAHgQuACkA KQAAXyAqICMsIyMwXyA7XyAqIFwtIywjIzBfIDtfICogIi0iXyA7XyBAXyAe BHkALAA6AAFfACAAIgDl/yIAKgAgACMALAAjACMAMAAuADAAMABfACAAOwBf ACAAIgDl/yIAKgAgAFwALQAjACwAIwAjADAALgAwADAAXwAgADsAXwAgACIA 5f8iACoAIAAiAC0AIgA/AD8AXwAgADsAXwAgAEAAXwAgAB4ENgArADEAAF8g KiAjLCMjMC4wMF8gO18gKiBcLSMsIyMwLjAwXyA7XyAqICItIj8/XyA7XyBA XyAeBBoAFwAVAABcJCMsIyMwXyk7XChcJCMsIyMwXCkeBB8AGAAaAABcJCMs IyMwXyk7W1JlZF1cKFwkIywjIzBcKR4EIAAZABsAAFwkIywjIzAuMDBfKTtc KFwkIywjIzAuMDBcKR4EJQAaACAAAFwkIywjIzAuMDBfKTtbUmVkXVwoXCQj LCMjMC4wMFwpHgQiALAAHQAAIlVTJCIjLCMjMC4wMDtcLSJVUyQiIywjIzAu MDDgABQAAAAAAPX/IAAAAAAAAAAAAAAAwCDgABQAAQAAAPX/IAAA9AAAAAAA AAAAwCDgABQAAQAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAgAAAPX/IAAA9AAA AAAAAAAAwCDgABQAAgAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA 9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/ IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAA APX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQA AAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDg ABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAA wCDgABQAAAAAAAEAIAAAAAAAAAAAAAAAwCDgABQAAQAJAPX/IAAA+AAAAAAA AAAAwCDgABQADgAAAPT/AAAA9AAAAAAAAAAAwCDgABQAAQAsAPX/IAAA+AAA AAAAAAAAwCDgABQAAQAqAPX/IAAA+AAAAAAAAAAAwCDgABQAAQArAPX/IAAA +AAAAAAAAAAAwCDgABQAAQApAPX/IAAA+AAAAAAAAAAAwCDgABQABgAAAAEA IAAASAAAAAAAAAAECSDgABQACwAAAAEAIAAASAAAAAAAAAAECSDgABQACwAA AAEAIAAAaAIAQAAAAAAECSDgABQACwAAAAEAIAAAaAAAAAAAAAAECSDgABQA CwCwAAEAIAAAbAAAAAAAAAAECSDgABQACwAAAAEAIAAAaCAAACAAAAAECSDg ABQADwAAAAEAIAAAaAIAQAAAAAAECSDgABQADwCwAAEAIAAAbAAAAAAAAAAE CSDgABQAEgAAAAEAIgAAeAIAQAAAAAAECCDgABQAEgAAAAEAIgAAeAAAAAAA AAAECCDgABQACwAAAAEAIgAAeAIAQAAAAAAECSDgABQAEwAAABEBIAAAaAIA QAAAAAAECSDgABQACwAOAAEAIQAAfAAAAAAAAAAECSDgABQAEAAAAAEAIAAA eAAAAAAAAAAECSDgABQABgAAAAEAIAAAaAAAAAAAAAAECSDgABQACAAAAAEA IAAAaAAAAAAAAAAECyDgABQACwAAAAEAIAAAaAAAAAAAAAAECCDgABQACwAA AAEAIAAAaCAAACAAAAAECCDgABQABgAAAAEAIAAAaCAAACAAAAAECSDgABQA CQAAAAEAIwAAeAIAQAAAAAAECSDgABQABgAAAAEAIAAAaAIAQAAAAAAECSDg ABQABgAAAAEAIAAAaAIgQAAAIAAECSDgABQABgAAAAEAIAAAaAAgAAAAIAAE CSDgABQABgAAAAEAIAAAaCAgACAAIAAECSDgABQACgAAAAEAIgAAeAICQABA AAAECSDgABQACgAAAAEAIgAAeAACAABAAAAECSDgABQACgAAAAEAIgAAeCAC ACBAAAAECSDgABQADAAAAAEAIgAAeAIAQAAAAAAECSDgABQADAAAAAEAIgAA eAAAAAAAAAAECSDgABQADAAAAAEAIgAAeCAAACAAAAAECSDgABQADQAAABEB IgAAeAIAQAAAAAAECSDgABQADQAAABEBIgAAeAAAAAAAAAAECSDgABQADQAA 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 m9CrWNqQNRFORJOJpTkTSqGWIgUGNRWtUEX7LI8UvtNTs8SVsHjurG8RsMuI Rj8LSpRUtkCagDSLlCbTgalGa2wQMXaRZClYALhesV43IsqotDpfzVm1yrKL SQgq0a24VjIrDqm4tUoxhumomuQNMKKEJjSihqK47ZUfEF/cXD8RA+qvXDRU eO96NjerrrNGfbGihtgiNjXS1AKy5ZELVwtQAyL2VPdiOi97u08kCGVdyp33 YL3uvigWpO7UEddVcRbBVTqeRk4dGRoNirCCcgAPYQfDVUWMI2T0TVXQ1EWl 3W809FUQ/wARvqqG2hFASzamH+I31UjWRDYk+QU0El+FZLEmGWve622i0E9Y XghgyjqqxzW5ioKrsD0XuyI5KzMbeiiYW9FRXdmuZD0ViYGrnu7UCEXcnHiF axG4SU1N322NiEaEyx2BAcED7AE3EEhHOObXBNxVDOtvkqHWhEAS7amL8S6a yIDQkpoK/ZUeKjPK0dFYTVtxZot5qrqHZnXJuVmhMstyUS1GNkMoBkKBCKVA oDLy4F1B269dcXUEDrIURpQvvlEagM19kZklks1EagZbIVNshsl2oke6CTn3 QHO76IUB/wC8UH//09nmXrqA+FdWUSuuXXOa8gE932ikHIbv3hUhyQEDzdTa 8oIU27oD9oeqk15ughSZ8SCT3WJCWmKPL8ZS023zQDJUSvLhQcKgVIqJQf/Z AgAH8CQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAC AAfwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAFIA B/CrGwAABQUBbfvyEtTYUKR71+5BdGBj/wCHGwAAAQAAAAAAAAAAAAAAoEYd 8H8bAAABbfvyEtTYUKR71+5BdGBj///Y/+AAEEpGSUYAAQEBAGAAYAAA//4A HFNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNl/9sAQwAKBwcIBwYKCAgICwoK Cw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElD PEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgA8QDqAwEiAAIR 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 fv8AV5W/D8J0U1nl757nfLNsnKeP8GpTrqrjGvKfEvsZ722q1lT4tdqnXoTg k5RTjyLu18wfvCrmKpuEMpOEHGUpY6N42Rdbe/3XD3wylzTpyioKdSlyKmuv XUFGne8PvJSiqlKtUjGNSKoupGeNMxa/qct2ihbiU45fjPH2WTZVOqNko7vp 7Pz93j+Cx8avLaUqLzSrU9KieZKPbHfPQuh7R39BS8ReM4tRlTnT8OcW9n6o S84XxC4qzvZ0ZLxXFqnTxz0+X7r7P4FlDgd3f87ryq0udqUqtRJTk191JLZI zq00KHtgvp79cmDnXOluTe/t/vBk/eVS4v1QqV66uPGcJTjNqMVjdLbfTUqj cVa91a16tbnlWz4jTa2lhLQ7FD2cuJfZ1/AiubMqsMuctW/luzRL2Xs4pqlU rU4PenGflYm5qLT6/b9jarKIzUq48LDz58k4VUpRt6soSiqdStKUFnoWXUsx bKq3CVRpPw54UVosFNKUnZRzrujgr1F07dlsMd+TBwjGOYs4HEU53kEuiOhb 0cU4lFWKlebHQisRR2rg1AxhYIM0KUAJgLAAAAQMABMBBn0ANJCIIIQhCAEA F6kAB1IQIBza65byXrqXVKTrUML7y1Ql4sXEX3RooapGM4KcXF9yp4eUW2N1 GolCek10fUvvL6FhQVWpFyi5KOnqZqtmqvnp+WffuY7/AMa6tXaVGoTUk1KS 00ZxevOj6LeOz/7OmuEJzT7dzs3d3QtrZyrVlRU/KpN7NnN4hGvG0VCrUhVh XkoxnPVQ/ifyMfEeHcT4qqEWqPJCLcsSfK5bfyKb2jcT4PaRu6NaNa3k4r7P mjLG2fid0bnHqkbloq5qK39W+pufCbiwjSdnQp3GGn4iyuvbOpdGpxincVby Vrzyb5acXP7sfRfTU6PCYSueB0qdeh4PNT5XTWmEcOwtb2vxGnwyvz+BYTlN yf4/ym56mXTKzk5q9DGTmt+NpvdXi9eo6sYRjWjFKEXJYWd3jOrJG64rcXLt vfrRVOXHLGeuf+5OTwulXnd38aSxcNVPDbi+b67FvD7W6lcWcbazlSlQ1rSn S1z18z3ya/mW8fSjrfwyEc5s4X27f6j0tjxKnG4/d1atGVzTgm0svTHV9yvh 3G1xK9r0oQhGnTyk3PzSaeNuxybbgfEYXkOJ1qlOnUdVznCW6i+mfgWWtlVh xCrXhONSrNOKlCHKks5/6ziv1arxu5fZcsyen08YtRlnp+vc6nEbrmzb0fNO Wjx0M1SmqNCNPsjbRs428OZ+ab3ZlvNmKK7Nztt5fbwjhk1jbHg4S816/idE 59uua7k/U6B1o1AZCAZQBgGAwBSBAAAgSaFB/9PoYDggSEFIMTAApA4CALgJ OhMAGK/Xmpy+Q9vsS/WaUX2kLbPQqB0aWw9S2p11ia+DEp7GiOxJRjJYaygn jqjA7e5spc9J80OxZVvZXVpKlTqeBWe0+iOjFZWCurY0ayzjll3R5701tD3a eXTw+DdvjNYmvzM1ClxNU7bNeE2qjdVrrHoX+DxOLump05ZWKH/PwKfdbu1e aMnKPp/sWR4nXjHklS85f6modL4bX9sony+fZLIJW/FZUrX7aFOcH9u09JEj cVba/r1ZV1VhNJQpraOBlRvbzWbcY+uhutuHUaOJNc8u7I9TqtR0pjtXl8/k gq4Q9zyzJGhc38lKq3Cn2N9K3p28OWEcd33L8CyNtGkhU9z6y8skrHLp2M9b Y5d48QZ1KuxyeIPFOT9DqZgjkWWtSb9TcZLCPkcu5rKCEJ0AAAAwGAKyMOAM ADBn0IxfqAbSBJuCEIQnQFIQJMAAJuHAADPerNtL01KbbY1V481Ca/hMdo84 CIdKkaY7GemtDTDYoLolsdimBfHYAeO2w6hHOeVZ+AsUXum4NJ9UmMACQxCA AFkOJJEBnqo4/FXy0J/A7NXRHB4zLFGSIymayji3T7l4lCOKEEuxZgoAAJGA AAWDoAAAwoArB8hgYBTWETIU9QYjBQqaDzADEyLkmQAkIHIAJLMWu6OZbPEs ep1DlxXJczj2kwDq0Xoa4LKMVB6I2UygtSwXQEgXQwAPFFuc7sEUixJAH//U 9uHAyx2CCC8uBZbFjKpgGatsef4u88se8kd+t1ODfrnuqUf4smJQxjiKXZBH xgmOpQVA+RY1oDlAEwDrgfAMACYBgdoGABGAdoAKXEIQGJMg1CRAEyw5wAIA eYORQ4BRsnPrLlvJeuGbjJdxxWhLusAhqoPRG6mzDb6pG2mUGiDL4IoiXwAL 4liZVEtxhJ5WoAyGFQQANlcx2JNEBkrbHErLn4jH+GLZ26+kWceK5rurLski FGaJgfBMFAmBXEsaA0AJgXBY0DABXgHKWNEwAVOIMFmAYAAQOCAhCYDgiAIF ImAgADggcAAM17HyQl2kauhTdrNtL01ADbPRHQp6nNtHlI6dLYpC6KLoIrgi +AKPHJagRWS1JAASDgZIbABXgSSLmiqexAYbnSLOVQjl1JfmkdO7flZioxxT XrqQoGgY0LeUXABXgg7WoMFBW0TA7QMaACNAwOLgARoGBwAH/9XpcuSYHCQh XgiRZgmABMEwWYJygCEH5Ccr7ACpC1Y81Ga7os5X2BOPlZQZLN6I6lE5dOPh Tz+FnToSTS1BDXA0QRRTNECguii2KEiWpEAUg4CkQFFZTUL5bGWtOKWpAYLz VYKeXCRZWfM8gexClbQGtB2KygRijtAwAIwNDisAQgwGAJgmPUbAAAEIQECF IAwBEg4AgoAKQUgdRgA4FqLyPQZAq/cAKIwi+hZCnyvMXgCHXQAvp1Zx3SZp p3CW8WjJEeIB0IXNPu18i5XNP836HLTY/M+5QdP3umurEd5HomYMvuDJAa53 UpLTQzTm3uwv+7KW3qALNki8xQJbAh90FGYjGFewAGKxmBgCsAWBgAFYX1Aw ANAGAAf/2VIAB/ADFQAABQVtAfk8GWl6guYiHhN57bqo/wDfFAAAAQAAAAAA AAAAAAAAoEYd8NcUAABtAfk8GWl6guYiHhN57bqo///Y/+AAEEpGSUYAAQEB AGAAYAAA//4AHFNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNl/9sAQwAKBwcI BwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5 Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgB DQDcAwEiAAIRAQMRAf/EABsAAAIDAQEBAAAAAAAAAAAAAAECAAMEBQYH/8QA PhAAAQQBAgQFAAYIBAcBAAAAAQACAxEEEiEFMUFRBhMiYXEUMkKBkaEHFRYj UmKC0ZKxwfAkMzVDcoPh8f/EABoBAQEBAQEBAQAAAAAAAAAAAAABAgMEBQb/ xAAwEQACAgECBAMGBgMAAAAAAAAAAQIDERIhBBMxQQVRYSIycZGh8BQVQlLB 0SMzgf/dAAQAKP/aAAwDAQACEQMRAD8A9rZq6/uiaIBJSAl2ym90EIPu75U3 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 1BSkAlKUmKCArURpSkIRFSlEBEVEUKRU5jbx3e26uSzDVC8exVIf/9TRiHYL pxLlYZ2C6sXdCGloBVrW7qtiuYFQM1isDVGhWBQC6SjpTUjSAqICqkGyvcFR LyQHMzjTCqYWaYmD2Vmb6jp7lMBSyUSlKT0hW6oEpCk9IEIBKQT0gUAiCalK QFZbamlNSlBCC0pScBTmhRaRpMAiAhBKUd9U/Cs0oOZ6T8IDBi+l5aehXVhW ARb2Nj3WuCTTs/b3VB0GBXsWeN4PIrQxUFzQrAOqRqsCAIChCPJAkKArcFmm PNXySNb1WKaTVtyUBjkGqcdgU5CDqBBTnfdCiUgQnSoBSgQmQKAVIQnrdAhA KhXcJiggK+iIRpRCEURRQEARUCgQBBUeaYVEsuzEKI1WtVLeSsBQhc2uY2+F c2VzeTiswKcFAa25Mg6/krRlPA5j8FhBKYEoU1nKeftJTM483LNZUtAXOdsq XOTPJ0hVEoBXlWAqlxVjT6QgGKCl2EDsgIlKYpUACgUSlKAhSm0SggP/2VIA B/AuFAAABQU5CD/YvVOxOTELraTHmz8a/wAKFAAAAQAAAAAAAAAAAAAAoEYd 8AIUAAA5CD/YvVOxOTELraTHmz8a///Y/+AAEEpGSUYAAQEBAGAAYAAA//4A HFNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNl/9sAQwAKBwcIBwYKCAgICwoK Cw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElD PEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgAuQD0AwEiAAIR AQMRAf/EABwAAAEFAQEBAAAAAAAAAAAAAAQBAgMFBgAHCP/EAD8QAAEDAgQD BQYDBgUFAQAAAAEAAgMEEQUSITEGQVETIjJhcQcUQlKBkSNioTNygrHB0RYk Q5LhU1Vjc5Pw/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAGBEBAQEBAQAA AAAAAAAAAAAAABEBMUH/3QAEACj/2gAMAwEAAhEDEQA/ANZZOG+6S3klARC7 c0FiWNYZhTM1bWRxOtoy93H6DVVPGuPyYHhjGUxDampcWtf8gG5HmvKKiaWZ 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 9T9yVodos9T9wfRSqxjRIJbkgoro0kkllhF5s0oew/xkf5wt8v3Z5IdH/NRn 8YUHQHNQUiVC66BJinKYopJJk+5AkkkkCSSSQMkn3JkDWTJ0kDJipJrIGWav qvsdI+a1yMgPNaHFrGlziAALklc1jWLx1cfUQtOw11y47/RZyuo9PTcV5OSe 3t8oGsNQ7aklLjwJT7Z3AeiDbZGhU2zOGjivLcdv1vHyTCax9hUvKqcC7esj Kh/iKubM471nUj0TPPL5OYSfn+ij9madXlXNdfVXNaDuTcjXpZ5fLIKaMcTz Kl1TdA0+i3siZwVzY2D5Qp5mp09+aHwwyX0Pki1DJIwiN7i4HS+5QsANE23s ODhqFJnZdnN0eHJxZYZe4kUxVVNVNqG93ZcNytIXvmUym4/B83DycOfk5Jqv /9AbZJOQkssmsokKdkxCIgUxClZMUEUgkluQM7RZ6r7g8wtDtFnqv5c8wpVY tydRT7lFdHdJJK6ywhLcxlDWkipYd+0ESkPYKGf12/mH6qRB0PO8fVK6ZJdG krpb0ydAxTpFIIHSSVE1bTQG0kovwGZWpLldRLlMZu1emQyXHYWdyF7vM2Cx ydJnN0gYObiV2nTct+HH8RxfFH0y5l/SmfcyMf2lV/4qqfCz/ir+G5D8Rj/L qklyzOlNSTYMY48Nn/tXN6TzDv07fqEvTch+Iw+XRJIJH0nhdk+Aj8rltgxm hnIHW7BO54sueXFnj3jc5cL2qvHpeqwqSxsXEN+q5AvDsiu7qqWGupzDKNpj s7g/ULm67o4+maZIZg9l7WcLELz5Y29n2Oi5+Pjx8uV0D7DTo5OIXbiCtBw2 qb/RcR5Zpvs8zD2o3jm0rjlLO77nFlx59rv+1bYn8Fa1ruCdrXDcVc2652vf hxmbcbirmOPApMCvaAsbevHAmvPhKtbI/cwqUbL6C62w0dRIR1dPI6/hYSp3 dLrHvWL4ztAApCnJ77ijcHR/Fqi3V4dOQd5bb9USh6DYo5hkqXRU7QLkF20f YKzDO9o4Z9X03HPz5z7uZgaI5W24rYUhAyJxtmQbXTleviwuM935Dxbq+Lqu WXi7Sa2gkpJl2fIMmKkonRERUSpeaYoIlMcmqRUXZNQRcclmqz/D/wBwV+qo rD/DgDxKVYxKV1FJRXR3SumSWKwaU/DPJC7/ABm/mCIzH4ZQy/xW/mCA/dIF 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 DAAtUS+lGD8hvn/9p/+m+5/+5b/s1lZW7EwwgCR7EMHpPX+DKokmqRTVA0eY ak+LomZbUmffcF5xeXta/kXswTIpvL/aGKz3cOaPlHvAy846x7NmQQFxTP6X NuAaHP4c2eEFdkycFV1vusYkwMD5kmQ9TAryDOIItTzs8MS+CdwLEnmazWIm IdezfW+r29y+Z64WoXtfORSr6+v+SZKvgcMT1f9DJ2kfQOUmKwlkWdGZD859 0L355lvd3/s7v9bdvXvXjIBr6S0om0RrVFRa/ASopMY1UROp6UEMkJqROTqX kZ3ZJF9szUibMDueBf6N4V8Su9+eYyLR4Ddno2gF2PrNONsKVQto+a7MgErO 4XOXYAusPJcaIiM9k7zj4kTkoRVRJk5vwjDxzUvnnE30S5rubu92G2tHuu99 97v2/v/Bb369u6MoVXn9vZkzMZE6DYnaTEUwxawmPLisGP+qQnrf1Q392m/8 fUmQ2325xgDUSBwGI55x7m5/s80eNNXMvts3diCaOJy1dQdpUuHS3nkq2Tvy 7B8W2h3boAXKAaxpq4NjxEmDI8yc2SysnH3ZrNlHwOaMKJgMOppwzeyrLpiI HqXXrnpNBMql2JnWvimW0tI0a0c3un/37/5997nPf777xjf/UXdn824fsZsY PvvTmQZQG7wcPjWtQorfanfq5Knu5VdfkbraTta67jcqqgYx3mxzJHpJZtT2 F5i0vLIuRyAuvd2AXj8Ye8gxd0f01mhbx+8bIB5FSdU+Y5+yr0hb56NaSAPa SEGIfx5cPUkpZDaN7VoAa3pOIVSCCruSrFbUSE47oUNjtPqbu2PAQn1p/2il Fd2/c+cudH/9/R90J596KiS/Pf4ooWkq/gllTxV9lHYKXbciaXrmzNPdX333 e92FS5e6z3/2c93drTtR+QCvp4YiLcYPS5EGhLEhWZsN0nT8q7JVB/62sFyx /xrFkqQzoPaUCfjGoAcAMUXLJEhxYuzhOGw2F1zmnJ0gcamr4sF2e+oes0Tr SZDZpKvVuaUozlLYg6At/QqWm9fP98wS1P592ajLy6vdX/zFd7sbN24LuFsK 1SYHtkfq7K2czF/TkKhtGtuZasnDZP0cPXrcqu3VV17pfumFX+xu3L7uCs2Z hwd69qN4s2AjxH//aNJxDKTwV4nGxya1NWvTwE7X6NwKhOUIlfPVg7M5hOm2 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 +OxE6J2lJpcPmb8fEy5qSaR0vv/sy1/pnlJHaWL7mB2nxWwQMv3R1/QxDzOh zR4roNZ9xW5bWxpKL8YD96Pk56c1Nj/JecSHglZblJr/TH/KfVbXT7LzT+sG /JjHeSyBOnZUfsz7MRebjwv9yiIux2nWFJmLy/lYJ/l4AvVjXfr8b5TmQnmM C//m/8oevIInQH0cR/UxvKYnQH0MB/VxvKQnQH0cR/UxvKb/Dwap6rNZ18YJ AAAAAElFTkSuQmCCUgAH8I0aAAAFBcqufh/61WIOJfK0prXoS6b/AGkaAAAB AAAAAAAAAAAAAACgRh3wYRoAAMqufh/61WIOJfK0prXoS6b//9j/4AAQSkZJ RgABAQEAYABgAAD//gAcU29mdHdhcmU6IE1pY3Jvc29mdCBPZmZpY2X/2wBD AAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEi MEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/ wAARCACqAW8DASIAAhEBAxEB/8QAGwAAAQUBAQAAAAAAAAAAAAAAAwECBAUG AAf/xABAEAACAQMCBAQDBAcGBgMAAAABAgADBBEFIRIxQVEGE2FxIjKBQlKR oQcUM2JysdEVFiMkksElRFOCouE1Q0X/xAAaAQACAwEBAAAAAAAAAAAAAAAA AQIDBAUG/8QALhEAAgIBAwMCBAUFAAAAAAAAAAECAxEEITEFEkETIhQyUZEV I2FxoTNCUrHw/90ABAAo/9oADAMBAAIRAxEAPwCrpafZ0f2dtSX2QSQFA5AD 2nAjrFyIxHTukaXAjOPMAC5nQXFF4jAAkiX2p0bEKpVqteptTop8zf8AqM1D UUsLY1W+JjsiDmx6CUYepTqk+cDeV/21xzFJfurACZcahertcX1K1qHlRop5 jD3g6HiKvaXC077iq0G2FU0ijL7jrD21fTrBMUlao5+ZyN2PvOuNTo3NM0Wt uNW2wxgBdLVV1DKQVIyCOsk0LW4uD/h0zjudhI3h7Tf1O0SlVc1SDkcXJR2m qtxsOUWQINDQnbBq1gPRRJ9HQrRfmDP7mTKY2khBDIyOmk2IGP1WmR+8uZLt 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 SMHbmT2ZHnbHYG292ALSXxLDC5Ll2fmFbJtryD7r3VyAKV01G6VtrkvmyIoR Vw8mVZ3sUROzTeMju7Sa2K+/YMU+++LAPbvZsO6f5iq+bPbuG7TsQRNrKeBk 03kW/u2bV77ESSW6uA+O10h4qzx9BM8uGOneP9SixN3ze4XJZVxb36ge9rMK DvfN8Bu4rF/oTr7uF6k523Z3suxAW77rL6i2aV2rsPNfO19wLt2A/9L6Q3du yJFJSvbAU83iTZrzAjtdbjJWV3a/SwL3VrXCla7at6ATfLd2wtJJ2eScydm7 pI8R4l8fLSVJ6XhTjOaxKs1dJ+X+4t01hhlndYuf+lDV/wDmdHpE37tN1H83 b+h8/wCbJp4jr6+v1DramrKrUe8pO7Mdzz5XdfoPScfRhJVsakl1LI131yZx kc9vfMJWlVYvdBU4PuZ0Mhur9HGr/cf3icq/EipdxkkOrSf8fFZy4xZv1ElT q94/UKihlBE6mpwSeKq9hUfWP1AqE+so/U0KCJyLqTbpOK/lR7CVvjQfYLrP 8i7kQLJdCdS/S/lUqFPq2x1TpJfCOkQdS/RhOVdLkSSykMwE210SA35i5CwM sSyJex77wPxuhTVPTVq0YTWEpOyZ8/bGpVXGWHZnbjy1XzvW8E5cdV+i4SvT i28NfUnM1JJrLWx8x8HeNK2lrUtBxCo56aTUYTk7un/2Ppj3fW/U9Mss3H5v l4suLLWRsdMiykmm777gcmly72A5Nxa2sHIcNq7vddBZRa7oZWXS3exXJdU/ kUS7cs3ZNry5U308gXUVje2QZjZqzViCXvGytliN2Vk277+QU/ht1/IEspRu kl0KGlL3rNq1iuTbWXcKVstbklnLX0AVpvMXbHTqIk08q93v0LLLlefKyK5J tZeV0YAk0/NsVy9217Py6jqMrYai83K+W73WMEUFF2zZeoi5cvpfcdwVtn5s STftNlb+ZUGVkklfPQTKcor53JKTu1ay7oDlfLXyARrDvKzJL3o2fQMovmbS dvMR2jeVmArScLK++GxOV8yTdv6Frqc0Yp7okveazvvdgJGLeE8eYUlFp2Ta 6Mkub4d0tmLa/XO4Ejm7e3QDtfBE85ZHe2Ld7gCWHa+SmbbeVt2HlKW1rCO6 y39CBWliLTuI1fCY3NJZTz3BvhZuArdlK3xMnK1HmbVr73yBpZVg2wsp3/IB JLqnvsDC3e411e1tugPdVsPm632AVt7sj7E9fzC1Fxva79QK3eOe4G+qGt5C tJu6dvUBWmulgK/UZK73BbN8BAu1v+QW38iN32SDztcqlZoKW7assDp2tfIj +LeyDGVpXAZya6YIngkm7bA5m1a4ByQF+7IQdNBvhCob0NI//9P2STylvYoe +5fBe8vzKX8T8io6rXtdBJ33hsUaWS9lG21hqUnDQN5eGV6X3aK63QGicml1 tbqVXu11HfvKzdytu22wDLbtgFrXu0/QErpWYVlZWAiX6IZN3tjIl3joMrvK uFOvzC3FLfInp3JZvOxA97tKPXYiV3cTnbvjPUKk7NvBQ7i7q7BbKSfoBSs8 rIyfNstvMAe8m01dh6ZVrjXeMB5VLsQLGVsdCyLXeyFS62LOVxS90KjfL6Bb 6sFnZr8iXafvZsBG8X6h63v8hFzZXcaLbabV2ugRFK+OjI2r32I3Z36kbb91 7BU/l5Bj36X2YLJNxSfzHUfdvawATxbZBWb2RLK+yYqjeXvdewHA8bcVlwzw /UVJ8tWvL2aaxZPf+/M+QTnzNtvc+ifpPqxjpdDRju5Tk19EfNrnLO932PQY TotJNNMX1LdwOKZytfUxwsKhkwcjvglpLoZd5bDoZFd31Q3MjLpKsQ0StTXc ZS8w1KtTGRUpLuh1JdyNyrLhK+dJ7h513C7hrgYvPHuD2ke5F3DEE9pHuD2q 6JjRs7BcTnb2iD32E2ZsRyD7NvdjKmuxezNlqvL2HhHlQ6jZBsXbneLfkYSc ZJ3PsfhHjL4jwnTxqSTqQhZtve2D431PZ+C9XKm+RPEZHfhvw+R7pxf9cynw +pX5mm0nb8wNZ6XvsJRk6lOM8PmRZlbI9D8+iSV2rq+4jTbznz2LJ98CWuvi stwFkk1bzElTad7v5FvNHl97byEdmmugC+7HL7Ab9y3KnkPJhtvAslhPp2II m7XZHKyxuBxsla1v5AlOKSd0r92UST/ZpXd/MDbWVa1vqJOtRTd6sU/8yFde k3ZVYJ9uZEDuz+69itxbV22rjLUUVC/tqeeikitVqc1/iRt5MoPVpE5U5Xb+ hLxvzJ3SF51Jvmx1XUgElJPyfYV4y7WTzkjqNNq/S3oVu123e5Q101K9vIqb ak+azLIy6yjcEabltswKufL/AJBzG142vsPKnyWlsn2EaUt272xZgCcua7ec 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 0vpT7K3qRK3n/UkVdXFbaz+YFOvXPw+vFdYM8Av8SS8z6FXSlRnBK7lBr8j5 4n+1kBtobG+kc+gb6eyCNcC+JRTL4AXQL4vBRAujsBah0JHYdAMlkNgIIBD0 AECEawQjARi9BmK9iKqqGDVSsmbquxy9XLDA4mvn8XobeBRUlQXkjma+WJej OvwKD56KWLRQnlXtHQp6jROhVXNGcbNHma+kloKzpyd4X92R6mkvcS+Zj4po vtdB233LRxYPBamcTVVdZw2tGDzFyt7xoocWU8TptemSDrpjqzMVPW0Zfet6 mmFaEliS+pRaoJjezi+gqmh00ERUYhVCPYZMZMBfs0ewfs0exYmMmBV9lj2Q VpY9kW3DcCr7PDsgqhC2yLLkuAnso9ickV0C5LuK5ruBGl2FbFlWpx3ml8zP PW0V99P0yQXSZTNmepxBfcpyl8rGSrrNRJPlio+uQrXVmluzk8Q4rp9JTc5y v5LJTXlVqKXPUk/JYODxlW00UuszNVRxHjdfWtwp/s6b6dWZtDSlUrxSTeSa TQ1dTJKMXbueq4XwaGnipzWbGpGXQ0NNxoRi9jTytXs8LqCKUY2jdAd5Y2KD Ju2NhMuyeAyT+HAHd2X0AFlzXJNp5SI+qwiRe97ALytYSumJe3Qe7+grk89Q C3lt+mQLltad/Jh2S2ET9/KckgFl37/kLOd4pO42+HuI7N2d7gBNXy1cSTW3 QdxilsJKKv7rTAFsNdSSsn3+YNidGBFlYRPMG2e5OZp3AON2K2m+iCtmn6i2 xcBrpYtceLsn/IrTwOtgC5EGv5fkQg3pjp4KISvsWKXdlRapWIrWK+ZW7kUg HbVhaqUqE7brIrlnyDCUVKz+F4ZR/9P1mna9jdfIucrvoZKdfTaOUoazUUqM En71SSijjazxrwbSytGtPUSX/SjdfVhPL1NKSjJLe4Jq0pLpc8DX/STyy/8A K8PXk6s/6I5mq/SFxmvK8JUKP+Snf+dxtqYZV9Q3+QfdjbK/2PjdfxZxqvdT 4lXSe6jLl/kYKnFNVWd6mprT9ajZOpr6dfb5arT0789enH1mkU/rfh1P4tfp 4/8AyxPiD1E5btv1F9tLomTa/T/l9vfiHg8cPiOlv/8A2IH/AIi4Mnd8U03/ ANiPiKqz6EdWpcdR9P8Al9xXiHg0njiel/8AsSL6fFeG1fh1+na8qsT4P7af Ynt5LeLLs+n/AC/QMa9Ca/Z1IT84yTHcnZb2Pz9DWzh8M5R9HY3abxDxPTNe w4jqIeSqOw2n06+5p38hk0vQ+RaT9IHHNO17SvDUR7VIL+asei4d+kzTVHGG v0cqXedJ8y+jyNs3Gve3vjy3DzKLa/tGDQcW0HFKXtdFqYVo7tJ5XqtzZdSf YqLMdL56AWOgvMr7hTu0lb5gNdRd2Fv3brvsJdb23GdrdgBd3t/Ia/ffuyNZ xsBvKvsAVzPYKdn6g+q7Bco2uwDdrCfzQOZt46A3yS+E+oEaVnfDaPnk1y6q pHtJr8z6G7OObt36ngdZHk4nXiv+pL+YFtA6FLJz6DyjfSewRrgaIGemaIMo uiXRKYl0QLYliK4jogdEIiXAISBABHsQgCS3FY0hHsRVNV4OTq+p1a2xydWr pgee4i8S9Du8DzXjZ5SRwderyt5noOBK2pv5iLXs6Tagr7BbundYfUCbUUn2 A036FRw/FlCm+CyrRj79OpB83le39TzGl+I9h4ihz+H9al0p81vSz/oeL0s/ 2n5kanh16UU+hd7GLWEU0ZYNKlZALGk1tKS9GWKNVLFWQUWLYIVOuv8Ai/VD qep/HF/IKHW5QFU1S+9D6DKrqf3BkPCye1wiv2uq7w+gfa6p9YfQssMkgKL6 p/8AEiv9JHHUP/jW9EXke4GZ0ar3rz+Qr09/inN+sjSxZMisz01Nfdv6gdOK 2ii9sqkwKJpGap1NNRmSq8MgxV3ZM4PF8xpLvI7mofus4HE5KVejHzf9CD0H A6UFQi3Bep1GnFtJ3Rh4PF/Zln/udOdviirNdDpWYrTaW9xXnLu/mM7rrZiy vZZIoWy7C8slm/oMsptNKwOZddwP/9T065mncV2vjoF2Wb5FbjfLAObd0I3e yDzpPGexHyuLugDJ8zSdkugsuVOXK+bz2BHddPUnK5YVrXAV25RX6oaWbXjl FbT7WAKXmVylnYL7Sz6C2yAZbpPLA0k8dAvDvgVuzx1AnNmy2Fm5WxewG7PK Ddv0AKy8Mji+hI/Er2C8N22Almho3ivMVJvvcKTvvcB8vqQKs1khBdF2ZYnc L09R0FqOV8jdlLuxIu+CotvhEuhdlk8v4t8ST4fH7FpJctecbzmt4Ly8wOnx fxLw/hMXGpU9pXX/AAoZfz7HjuIeNuJaq8dO46Wm8e58X1PO1KkqknKbbbd2 31Ed1Em3XHCfK2vq6taTnXrTqSfWUm2UOpJ7IHJbN7sNn6GXSdgalbMiWXZj WsQGyqPkg2CSwTYWDZX2YegQuy8oOXuNYlgF5chaGBYJsrsntcDhFrt6DksF 2rXNB4yi6EuZJi2bHjFJBGnRa3UaLURr6atOlUi8Si7H1bwn4mXG9K6Nay1d KN5WVlJd0fIrpHW8NcWlw3junrp2i3yS9Hj/AGLKlx3H2pSGve+DJpNSq8L3 NSS7mnFNt7sfZWbAr23A30AdNNW39QPp1xYCaSG+LL29QBF5xljLle+wJO3r tgAEUrNpfUMpcuyuKk7O3Qpqu2b4AkqkpLmthHjOJrl4vXXed/qevVkryb5X ueFq677fralfCbm1Zfl+RDV1ttodDfSZz6D95HRpIqNdM0RRnp9DQgLYl8Ci LLoAXRHQkR0AyCBBAKYQBAhCEtcKR7iMZ7ivYgz1tjl6vZnVq7HM1eItgeZ4 lP2Sc2r8rueh8PT9tKM0viSaPJce1EUnBNXZ6PwjUUNNQUm78qZJe+nfLiuP HM78veLMVcjbirP0FptON+rGSXXdbGnBk4lS9twvV0es6M0voz53o6jlGnJ7 ygm0fS6icoyhf4k0fL9JK1oPeDcH8nYldMH/1e/QlhGuDMFCWEbYMjrWiLLe hRHcuWxWKZPI6K0PEIsiPF2ZXHcZbhFlw3FDcA3I2AjAFxWwtmetX5JWSAeT KpMZzvFMpnIiq6kjJWlhl1Woc/U6hQi23axBRqZ+6zz+qlz6+K7G+WvpaiTh TnzNHNp/tNenvkk8ley4V7umTW9jc03C+bXz6mPQRUdOsO5tlanBuUlFWu5N 4OlZiq94/Dewqavk89xfxjpaDdLQQ9tNbyfwfLueV1vHOI65v2uokov7kMI5 Xkkevj9LyZ9/D3up4tw/SXjX1UIO/wAKd39Ecqt4y4fSuqdOpWfe1l+Z4hvu xXUivMxeWvbh7fjO+Veqr+Nakv8AB0cIr96TZin4t4lL4HTh6Q/3OD7RvaIH Un0aXoZueTvPScE+HYn4k4vN3+1Sj/lil/QpfGeKT31lb+I5jc395gzbLf1J 1ZOk4uCftdJ8T4k1b7ZW/jYv6y4iv+brf/Yzn29fqDlfdjuXDi/tdH9acSX/ ADlb+NjLjfFIba2r83c5bT/tkafRsu6l4+G/tdiPiPisd9S5f5opl0PFnEYt c6pT9Y2OA+ZdWS735h1ZRm+n4b8PU0/GE9quki/OMrGyj4r0FSyqwq0/lc8T zSXQntLPKZqZ1yy9FxXw+iUeK8P1LtT1ULvo3Z/mbMON08eR8xjNPZmvTcR1 ekadGvOK7XuvoanJvy82fobPtr6HF+8NY8tofFkotR1lFSX44Yf0PRaTV6bW UvaUKqnF9t16nSWXw8WfFnh90aFblswxdhW8WTIm2rWyVzPdrqQPL5EBpfR1 c1R+zuV4X5uW+zBzWleLKXTUZXHVPF0wi5yc1ddNz5L4j1nt+Paud7r2jS9F j+h77jHiPS8Gg4OXtK7WKcXt69j5XqarrV51HvJtkvhrHztdGakMn32Mak11 LI1GjLs0WQObl7orVV9RlVT3QXSc8Se0V9g88HuvyI1SfQED2luhPaPsTlp9 w+zh+Jhewe0YPaMPJG+5OSPf8yKHtH3B7SS6jOEF1ClTX3WwE9pLuTnm9rst vFbQI5vZJDZqkSqvy9SxQa+KYvNLqweoOmreaKWBXUK7gCySGcmGEnGSfYTY iBXseBeN9Vw+pGnq17ei7Xe0l/ufTOG8U0vFdLHUaSqqkHuluvVdD4PCWLHc 8OcercD4hCtGUnRk0qsPxR/3NSuNwfaduoU8O2SqhVhqaMK1KacJRTi+46uu uPI05Dsnd27BTsCUrrEbBSfLjcCXdrXG5m08iOys+okqnLvswHnUiotoolK7 5mI7t9bdwtqz7Jgf/9b27s4NNXR8qlqXoOJ16e8Y1HF/Jn1RvmR8o8SUnR4/ rYXvatLb1OfJud493osZnncMvFei0OtpV0nCSfkdqjJNHzOlWqUpJwk4vumd jR+I9Xp7Kdqi89zE5p8vZye1ZeeOvfwZoi8Hk9L4u08rKrSnB+WTrUPEXDqq VtRGL7SwdJnjfl4M/Rc+HnGu3Avic2lxLSVPh1FN/wCpGunqaUtpxfzN7jz3 jznmNkR0yiNWO/MixVI9wz01cglaqR7h9pHuDpqwJV7eC3kvqVy1ungverQj 6yRNrMMr4jQGLOdV43w+kve1dL+JGOr4s4XS2rOf+WLM3PGea7Y+l5s/GNdl sRvB5bU+NqCuqNCcvOTscjVeL9fWTVPlpJ/hV2c8ufCPdxe0+pz8zX+XtNVq qNCLlUnGKXVs8lxjxLR5ZU9N77/F0PPanXajUy5q1WU35sxVG31OOXPb4fV4 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 Pp86Sqp33OTxLTunySaxcaamVj5vKhUhiUGvVCqLPo1LS0K6tUpRl6oaXhrh uoV3p1F94uxNNzkj5wkxke/n4G0VT4KtSH0Znn+j6T/wtWv9URqtzPF4oZHr JeANevgr0pfVFUvAnFUsKnL0kNVerH8vMoY9B/4J4wv+BH+JE/8ABXGf/bL+ JE1WurH8vP3Cehj4K4y/+XXzkiyPgbi73pwXrMaOrH8vNZAesj4A4m/ilSj8 zRD9Hmqfx6qnH0TY1UueP5eKaAfQKf6O6X/F1cn/AJYmyl4D4ZTzN1J+si9N T6mL5nZ9h4aatWxTpyk/JH1al4W4VQ+HSxdurybKfD9NRVqdGEfSI0n1Y+WU PDnE9Rbl00op9ZYOppvBWoaT1FaMV2jk+gypRXQqnGywNM/Uvw83w3h1DgPE qUqbb9pBqTfyPXaeUORcruvI4us00a0U3hxeGHRV503yqWwc8rt6ak+hppux yKGr25l80b6WohLaSK5tt8jxkUKSa3LIso20UqlFrqmF0qkaana8X1RTQq+z k87nU0tp6aUXtdoEc64LjVYOm0/uvZldwGuC4tyb7BReBWxnF22K3uUf/9L6 JJiNjS6CMrJWwWu7Be5FJRArni5nnIunnyKZJICiV2U1Gki+V5O0U2/JEXD6 1b4lyR8yDl1W5SsldvYv02ldGm6lTDZ0o6Ojp1e15d2ZtbL9k77WM1Y+c62p zcY1Ob3mC5XWfNxPUPPxss6Hzc/L+iej7cOM/hAbhFZh60YjYzEbKxSsqmOy uZuOGdLR/wAeJ7rwp7tn3PDUF+2PfeE4ctO+6aPdw+H473O75nqrpXVixNtY 6dxcpKyy9vMeDgr3+J7HV80U21npujl+I6Tr+HtfT70JNfLP9Do8rs2m87ld ej7TTVYS+GcZQ+qF8LPL5/wyadNNHdoz5YX8jzvCk6b9lb4bI7U+b7JU5Xnk dvoY32eqd9OHVq6rxDxN0KU3HTwe/S3c9Xw7hOl0NJKnTXMlmTy2crwlpY0u Gqrb3qjbbPRrETOGOpu+Xp9ZzWX6WHbGORxTWVPtdHh+ljH2tXLk1dRiZOIU p8Br0ddp3aE2o1oLCl52G4c/tPinWVXlUoqCH8YVox4dCnf3p1FZehm/bcm+ OdPJhxSefP8A7el09aNejCpB3Ukmi05nAlKPB9Mp7+zR0bnaPl8uMxzuMR7g bKa2soUZctSrGMnsm8s40/Feh+1ewiqks2U4xw2S5SeWuPg5OT7cdrOI6Tiu o4vpKmm1So6Sm71orefkXa/jFPSTVCEJ1q7V1Tgrv5nG4bxXWa/xHVpOq/YU +b3VtjBVrdRV4P4jeomualXtd+Ri57ksezD0dnJ0597rev8A8eh4fX1dei6m roqjJv3Y+XmaZEpzjUpqcXiSuiSOr5+d3lbrSqTM1U0yM1UMsVbFzjcVr/Z9 FWq78sdjs1upw+MOC0k3PZNfzJVjiVqjlp6Lay4K5hqXudDVpe1pxWMD6jh3 PR9rHElv5nLLG+Y+h6P1GOH6c/Dk3CshlTlF5QLWOFfdxsym4jin0F9kuhYG wb6ZVPJKPW4VKS3Vy6xOVE2dP4Vqp3TQ8ase4eRXJ7FPoF1TxnHui6Ml3Rm+ z+QPs/qCyuhHKLElY5nsJLrL6h9jUt8UvqNprJ0WxJNGD2M/xy+pPYSf3pfU nZZK1uSQjnFdV9TP9nfW5FpvInZr9S516aXxoR6qn0u/RAWm8hlp/QvZNVVL Ut/DB/MRyrT8vQ1KgkH2UUNp0sSotu8rsdUrLY0tJdBJDadMipxsVyZbIRU5 T2WO5qbYzymM3VJDYqNNKzTZDr0182+s4d+XuNLPz2Njas7PoZNPBKq0i32k ovCO74bRp43i22YuMJT03nF3NVNy5b3tcq1VHn081foErl6V7HWo7HG0js7X OtQZRvpmmCwZaTNUALIlqSEiWID/0/Yxih1HyBEdZCF5Uh6Xu1Ivk5rPbuSw 9OTp1IzjvF3QCSj7zvGz7COKLqknObnLLbuIyqqaFaLGIyCqSEexbIRrAFE0 Z6iwapoz1diKx1VhmGm7VpZ6m+pszn7aiQSurp57G6nZrKObp+hvpPBUa6a/ DJr5miPtFtUT9TNTZfBgXxqVl9xP0Zt0vE50IuMqDkm+jMMWy2MmBqetp1Iq M4TXyM7rLpzfQeMiy6aWAmlHto33LqFSm5pSeB1bsWQcV0QVt1VOjHTXssLD ONOcebF/odKVfmpqHKsdSvHZAYZ1FJrljLC7Ce/LanP6HSx2IDTm+xrS2pP5 jLQ6iXSMfVnQuC4GNcKk1edeK8kH9XUIb3k/M1iS3IKeSFP4IpW8hJSw8Fky iTtcDLXbbdzma2X/AJd+jOjWeGczWZ01TyTM1cfL5u3za/UP/wDkf8y/p/2M 1J31FV95v+Zo/vc+dk/ovpv/ABxAMIph6AbEkxmKyxikZVNljKpHSPNyeDaf /FPofheKVBN9j5/pKcp1G49D33h7VUaFGManMsZsj3cX2vxvuF3z16hySgrW Fck+ljItfT5U/ev2sL9uh2Z0eFuxFWzexLq1rmJ66F9n5k+3QTtFO1wPFxh7 HiuppWs4VJJrtk7NFc0bPqYdXyy4xqZpW55X+qN2nwkYkeiXsq4RKWhrPh9S nK3M3Smlhx3OzVqKnSlJuySuJSUXZ2yYPEerWk4VVs7SmuSPqyW9OLf/AJuS STvXE4JU1vPqddpaftVKq+eHWS8jXLhuv4zr46jX0/YaentBvJv8KaZ0eEQl JWdRuRPFGvlpNCqVJ2nXfKn2XUx0yYy17subK+ouHHJvxtZW424N6bh2nlqJ QVm4/CvmYOGca4lquNfZq7hGMb88Irb5nV0lOhwvg0XKyUYc0n3ZwfDLVfiO r1ct2m/qxd9UlqcePHePksx8fN/LNxOlPinit0ISaV1Fu+ySyepraPS6Hh7l GlBKjBtO2Vg4Xhuk9VxvVatq6V7P1Z6jX6T7Zo6mn5nD2kXHmXQvHj+m35rP rOTpyw4t9pI8X4dhqVQ1ms08b1do4v1uzdxT2vHZUKOn09ROLvOc42UTv8J4 RR4VpnRptyu7yk+rN3Kl0LOP9Mlc+b1uP1ryYT/CihS9hp4Ur35IpXDIsluV yOr5tu7tVIzVcmmSM1UIxVup57jzvpox6Oornoa+zPNccbc6EO87kGGur6uC 8keno6KNXQrGWjz8qMamrUs3R6PR1KkaUYpoTwOXpuHqlrZwqwThNWs1gOq8 OaepK9Fum380dTUczlGcukl0LYTUqiXYlxl8uvHy58d3hdPK6jw3r6KvGCqx 7xeTn1dLXoO1WlOD80fSoJezG9hTqK04RkvNHO8U+Hv4/c+SfdNvl1miWPpV bw/w3UfHpoJvrHBhq+CtFUzTqVKfzuYvDk9uHufFfuljwquOj1dXwNVX+Fqo vylEyVPB3EoP3fZzXlKxn6eX4enH13p7+5wky2MvI6MvDPFKf/LN+jRX+pOI w30dT5Izccvw6/8AI4b4yn+3/9TgKUbfChrw/CXfqvWx30tX+En6v1i/5ar/ AAs8PTl+H6/6vH/dP9qG4pbIrlbsjX+rtY/+Vq/wMn6p10ttLVf+ljpv4X6v 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 pvPLv3L51Em/MSjScuatL4Ip28yVYbRSwjfB5OTwyXNRhI6tNlF62LYvzKls WRCLU2MmImOiiyI6K4liAZIbYVFkpczTfRWIP//Q98FEsQIjFewQWARlcixl ciCqZnqOyL5maoBi1MsM4Orn70vodvVOyZwNVL3ku5lVukj1NZTpY2gmXmgt iByQC1Zdl0LorBVHdl0VgIYhAgZeJUFqeGamja7lTdvWx8pqR5ajXmfYGu58 q4tp3puJV6W3JNr8w1j5YssKYA2sZdoI1OnOpNQhFyk9kkKjuKcOCaKDjFPW Vo3bf3EWTZbpTDgbp01U1upp6ZP7rd5B9lwSnh6mvUa6xhY5tWrOtUc6s3OT 6tiDf4Om3zXWVLgc8LU6im+8oXG/UtPUK+h11Kv+63ys5CNfDtFV12rjSpPl tmU191dxLsuNnyZcJ1r1CoLTyU/NY9bmt6HhvD//AFuodaqt6VLp6s3VeO0N NVWjSlW08VyTqOV5M5vFOGR08Y6rTT9rp6m0u3kzWpPDO7db7I+MUaTtpeH0 Ka7zXMxf/EGu6eyS7ezRzWAz1VvoxdWPGoVfd1mipVIv70FZoXVcPoVKD1Wg m5018UHvE5mxr4bqnpNZF3/Zz92a6NCXflLjrvGNgRq4lp1ptdUpr4b3XozL dEvZqXfcTZo606FqkJOMkzEaKP8AhyRL4duH75K9jwnxDp6ijDUSVKe13sz1 WnrQqRTjJST6p3Pk8WbdHxDVaSV6FecPJP8AoZnJY9nJ7bjn347p9ZpyRpgz 53o/GmspWVelCql1+Fnb0vjfQTSVanUpv0ujc5Ma8Oft/qMP27/w9dFlsTh6 fxLwmt8Osgn2lg6NHiOkqq8NTSl6TRrqjy5cWeP3Y2OhEsiZYV6b2mn8y6NV dyuely3HRQqi7limu4FqGTKlNdwqou4NLQlPtoreSEnrdPDM60I+skibiyW+ GkDZy63H+GUb8+uoq3TmTMGo8a8Io/DWlUf7sWS54z5dsPT82f242/8Ap6Jv BXOSSPGan9IVJJ/Z9JKT7zlY4ms8b8V1CapuFBP8Kz+Zi8uL2cftXqs/OOv8 voWo1VKjByqTjBLrJ2PN8T8YaDTKUaMvbzX4dvqeF1Ou1Wrk5V69So/3pXMr uc7y2+H0+L2XHHvyZb/w6XEuOavic37SXLC+IR2Nvhzhem4jVvqIc1pWWbHA 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 w6Aii1uhuVhG5sALZgWXa+exZcFldvqQK4itIdp22EkBXJmeoaJGefUDHXWD ka6SjGR167wzhcTl7jS64M0U6GLVHmt8TuaRaUOSlGPkOUhQDAsFCxA28iAW JDoVDIqCFAQUAbYGhiQr2JH4gLZu1jFXXJqVLujdPMUzLrF7sJdmEatO8I3U zm6aV0dGk9grTAtiyqBbEB1uOhUMiiW8yBsBkH//1/ftiPNyx7iMIqkZ6mxo mUTYGKsczVK97HVrbHM1LwyVU4ZT5Yzl3ZvRn0UeWgl3yarBWDiFPnV7bHJ1 PBdPro5jafdHe1cf2fyMtDIXHPLDLeNeP1fhrV6dt017SP5nNnpqtJ2nTlF+ aPqEIpqzSaGnw7S6hWnTi/VGLxyvrcPu2ePbObfKuXyGS9T6PV8J6CtdqnFe mDJU8D0H8EpL53Od4q+lh7twXzuPCpPzHS/ux6+XgaS+Gs/nErfgjULasvoz N4snqx9y9Nf3PLx/vA8Vjp/CekfgvWLapH8wrwbrU/jh9WT6eTr/AM/01/e8 59P4QZ/tHqY+CtbJP9pH8x4eB9S/irRXomPpZfg/qHpp+95PPmG393PaU/Ab fx15fKJuo+BNLGzm6kvnYfRyc8vdvS4/O3z1Qf8AaLaWlrVnanTnL0R9NoeE dBSt+wg/82TqUOEaSjGytFdoRNzh/NePk97459mL5fp/DPEq9n7D2afWeDta LwVlPUTcvKKsj3n2ajT+GF35gkklg6Tjxj5nN7vz8nadnF0nA9No42hTjH0W S+pGNONopI2VDHX2Zt8vLPLO7yrja+XLCb/dZ2+DJLRw9DznGpNaeSTs20vz OtwzUTp6Omm82EZegViNpHL+1Tf3mK6ze7f1KOjOtCO8kvmUVNVDpd+iMTku yI5XRA9TUSkvdVvUzTbk/edxpMrbIaJIpn5F0imWwUgGhiWClWCyM2kJbyJY DRCVyzyKKWP6l9rFCvJVVSUWW3ZVXSVN92B858c0eTiVOolbnpL8mzycm07n ufHtG9HS1uzlG/0Z4aeREyK9hHv/ALjPb+2B4KyX0JbqEgE7kDfoQAr0/Msd 7Xs/4hF8vmg4/dKA079fqDPn9SO3kBfIIj9PzJsR/wB4Ik/Miin6hSRMeRAC rFtNZ82VQ3NNNJyQHrfDNO9NY3ke0jiKR5jwzR/YU/O7PUJFpAl70Wrbo5eh 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 AP/+ABxTb2Z0d2FyZTogTWljcm9zb2Z0IE9mZmljZf/bAEMACgcHCAcGCggI CAsKCgsOGBAODQ0OHRUWERgjHyUkIh8iISYrNy8mKTQpISIwQTE0OTs+Pj4l LkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAPwBRwMB IgACEQEDEQH/xAAbAAABBQEBAAAAAAAAAAAAAAADAAECBAUGB//EAEEQAAIB AgMECAQDBgQGAwAAAAABAgMRBCExBRJBUQYTYXGBkaHwByIyUhQzQiNDYrHB 4RUkgtEWNERTcpJjk/H/xAAaAQEBAQEBAQEAAAAAAAAAAAAAAQIDBAYF/8QA KBEBAQACAQIEBgMBAAAAAAAAAAECEQMEMQUSIVETFTJBQpEiUqGB/90ABAAo /9oADAMBAAIRAxEAPwDURJDIcjBPMZErcgkMJiajvCjLyCgkruxdp7GxUs3u x72WYbBm/rqrwRNjJVh7m3Do/B5Oq/5BP8DoLVyfiUYV8mJG/wD4Rho/pfmM 9mYZL8sG2FzFlwNt7Pw6/dohLBUF+hA2yOAyNOeEorSIGWHpp5IG1NchMPKl FPJgZRtmmURzQ/EbeS1Fvxb1IHTzyFe7GQ+uhQsmyXAivImrARbVr8yLy1Js i07aARWueRJ5sZa9wrsB07Z2v3iTad+Qyv3D3aAXBsV1kJLVj243AZ5DLQfe vwzYlG8U3LjoUPFWiRefYSus1ca2eeYDa9grf2Y8kuLzG0TAa1u0Z68+Y7fN kXrcB7fLfQZW7bjytkloNdsB2+S0EOlbJ5LuEUCSzLWEwyxErt5IqKSB4Da3 4TEyhOLcLnOo6jD4SjSXywV+ZdhFJFLB4/C4qK6urG/J5MuxdiIIkTQNSH3j QLYi7DKV8iEpWCmk7ApSQpyAymVDykgM5kZVAE6vaBOpPIrzkNUqaAJTuESn IDNqw7YOcgocmCk8ycmDebyAUasouyZYo1Ote7x4dpVjRqVZ7lKEpyfJG1s3 YlXDrr8Tk+EDN9FikvaCK1iEpxdadn+pk01qaUms7CavpkPlqM881oBDdfFi ZO1+AnFZIAaXFj5X1J7qtmN1dl3gRXNDvv1HUWrpEXrkihPS10KLSWniRs7X uT0joAmlryGvloK1u4V9bZAM1cZ91yWuYv0gQt/IZXehJxXiSjC71A//0Nlq 9kkPbOyJ7lnr5CVtbZo0yZJWsxCyT4iApKdjKrtrFPvNBO2pnYj/AJl95hFq hUeWZqYbaOKpJKNeVuTdzIo6Fum8ijeobWxLXzOnLvyLcNq3+ql5M5+DLEGx pHTx2ngqyhvRqQlpJpA54uk5NKTa4O2pi05tcS3TqSbu3caFmdZPS/kAlNvR MPGWZYg78CGmTOU3+mXkBnGq9KcvI6OM47ttyPfYJG3JBdRy0qNeVrUpv/SM sHi5aYeo/A69W5E4seq6clDZOPqaYaSXNlhdHcbPSCV9HJnVwlK+oR7yjfeY NRytPonUf52IS7Iou0OjWBo/WpVH2s2G2RZBXp4ahh42pUow7kVMZNpM0JaG XtCVqcnyTZKrgI4uUcTN3ycn/M1cPXU45nPJ3nfmzUwbdlmWUaqktL5Cc1ay Ap5NivoaQbesPvJglLJi3ubKC5Nj3T8AW9mOmuKAm2LeT4ZEHdDKTys7IAsk kshm+WaIObEptLLzAnoNe5BybeolLnkBO/ZoN5kd9XtqMpICcnksvEeLyeYP evYe6SsBJvIZZeBBzzSuLes1coInG2fEQHfzEBnsoYnLEF25Txf5yZgGovIu UylReRdplRZpK4eOoCmWFwKg9MtUyrAs0tQLcdSzDQrR1LMNCKPALADENEAi CRIIIsgolOLk2Ek/lsKkrQuNPQggyLJMiyCEjH2vLq8JXlyhL+RspfOu8wuk c93AYmX8DJVedR+pGrg8kjKp/Ua2F0RYLyu1qKPEa46erNIdJvIfsGXeJMCa 152G7Vm7i7xb3AoW9ndiQ1rXeQ6eSAZ3va4uA0laXZwHTsA7TsmR4jvRt8Bk k1mB/9HXTsxS0yFYTWduZWTxTtew0ss3xJZJWRB20uwGeY2VuYm95a6EW3dg Om9WIZWzTEUV9yPIoY+KVSNjSKG0lZwZyndCoaF2mUcOXaRsWqZYXABSDp6F QamWqRVplmmBcjw7izT0K0eBZhoRRoB4gIB4gEiEWoOIVZsKsU84EZaEoflk ZEIg9SMiTIyCobzTRzvSuSWz6sb2vZHQTdjlulNRyoKP3SM0cfCilLVl+g3B LK4KEMy1RpSqSUIK8mSWiXXSfAnT66rlTpSm+xG1gNh00lPEfPLlwNujQp0o 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 AQBgAGAAAP/+ABxTb2Z0d2FyZTogTWljcm9zb2Z0IE9mZmljZf/bAEMACgcH CAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8iISYrNy8mKTQpISIwQTE0 OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEI AQMApgMBIgACEQEDEQH/xAAcAAABBQEBAQAAAAAAAAAAAAACAAEDBAUGBwj/ xABEEAABAwIEAwMGCwYFBQAAAAABAAIDBBEFEiExBkFRE2FxFCKBkaHwByMy QlNicoKxwdEVM0NSkuEXJERFgyU1VXPx/8QAGQEBAQEBAQEAAAAAAAAAAAAA AAECAwQF/8QAHxEBAQACAwACAwAAAAAAAAAAAAECEQMSIQRBMVFh/90ABAAo /9oADAMBAAIRAxEAPwC2LJwCn5+xEDpayITe86I7CxHqKq4hXRYbQyVUwcWx jYbk9Fw1dxxikziKcsp2cg1tz6yg7XE6ryaK5K5ubGTc2K5OqxbEK03qKyWT uLlVLid3E+JQdTJi5O8jR95QOxYHeob6PAAgINc6LIhZBtnFWc50BxOL6Yn0 FZIA6IrDomhpftKL6V3qKb9oxfSO9RWdp0T6dAmhoftGL6R3qKcYhD9KfUVm m3RCbINUV0R/jIxWMO0w/qWNYJJobral3zZb+BUjauYbPK529tlJHUSsN2vK DpI8SqGfOWxhGOP8qYx5IubbrmIJO1ia/rurMD+zla7obqD19r88TXAWJHJJ ZuGYjFJRRk75QkqKYFhqE4HTkmsfWqeJYzRYPGDVPJc4eaxou4oMzjeUx4CG 3sXzNFuuhK85cug4k4jZjQijigdFHESfOdcuJXP6IBTp7dyVkDhOE2VEGoED 3p7jqlkCfIEDZh1T5h1SyBLIFQ2YdU1x1RFgTZQga4TXRWTWsoBunBTpKjRw 994i3oVcG6xYp3xOuw2V+nrS9wbIBrzUHQUeMyU8IjN7DbVJUI6eWUXYwuA6 JKD0AXXmvFFQ6ox2pJNwx2QdwGi9NFrjoudr+C6arlfLHVyQve4uN2h26o86 yl2gBPgpY6GrlPxdLM/7MZK9GosKGGhlNJ2Ur2t/eNjDSVu0rRYIPJ2cPYzI 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 YVse0MR8bqj0WMrnPIRXUzA8tHWc4A7gLDN45rm/9aE+0oScaTzODpKGBzgL Alx2UTW4OLOvI+OIOijNi8nv1T24y+5JiAaHBp13J109iw8fGs0YcBh1PZ3n anVPPHE7n5jh1Nci17lJqTW2gxuWQhpgAc/LlF+0339gXQYtNIR0cIdZpc7W 2xtosKeN5iSfJ1Nc2ubnsRfxzVOjLG0VOzM3KS0nbkpNSa24xiY2aIBmf5nI 6aplRi1QDIwdGxwyhp3uTpf8fcsOzjOePahpyM12glxy+Cd+nFWCSKCkFzfY 7pNJraSYnVsLjZjmCTo2m2pNtT+K6UD3z1UsspaXta1hy7c1h38d4g5mT5pS 5b3sWnf3pn6d4qL5IqZt97MP+VYs16RIdFFlOi89fxxjL/ShHhGuD+LsYfvO 0eDAq03U7lU4trTwM9aUn3D/AGsnJj+JzaPq368gApeDz1FXWDpZXyBov1jd QajBwW10dua2oAA1WUwaLNXx9xWvsCBogoQzUbC6OS4Lew6LvkRydyDxyvjM NbNGfReR8VGVxxRB834gq2WsC/MPbqqdAkUEQgKKARCA/ndFAI/ndAroFL87 pKhJpRQUCSSSQELRcLx55ZXcmhZ1u61PC1mwzOPaQEGxwKK9ZcjsWoa3ks/w +A6V5ts1aFpadyUH/9GwEgTw4FRQ6+qcCQe1EYHjqHJjnSAftY2m/PsWXK2n H0XXpZrbhzSbLGFAEkkggcCimpwQH87pX/N0AiqF7fih7fij+d0PzugRQRQU ASSSQOatPgJyUZ13csw3danCW5aFnfcoNtw2eo9xHcr8SO8FQ8OtIpHO5lXQ 23QUmZOB15prQTpZOyoM3xxDmwuKW2rJLe8LAFem8VRdJw9Pp5tne4rzN26B qSSSAohBFAUUEVQvzuhf83RQUASSSQBJJEIHM85a/D2FtHCLeisjHq4LdUkO WniH8IQarA25cPbpqVZXA7bKPhkOSij5WU0R8wgpgy/K6cGG2oXMS20CeJfB BExmHpcGrGc4XfALyR25Xss7s9NKzSz2OHwXjkwyyOHIoOaSSQQFFAIhUFFB OUAQTkFQEEUFAEUkkHamGaZg5kL0aGMBrAOQXndHrUs8VvKGcuEevJBt6Rob TMFhsu1g7tuo0UlogNtAuzZdEVnwnjfZME8acJojuUQ4Dv0XkuIx9FX1DPVk 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 4l6B5swk7C6849oc5zr+I3WozWMQVFwWuzCyYxzWmWS8LJct9mFRjF9UA8Si 32QUQEsVqysWVhBmysBburCDIFtlTlvZYcclmgL0vImHJeTRRS0miUkTUu64 hbL7ZOzt3NdixMvmLWGVv2QMPzCSqJuye1gjc8uv4eiK6ofEcNQzBsHjNp/b 1S9c4t7OVpFwTb4FBQqY72cHR/1tsmIy1wBBBB3BSPD+INrYrPGGRo7zP92T QpmXuy8Z5sy+SB2MdE5EFzGOqIiMYErebciPRdCmlZI3ExwIUU/EE7EEnDmn YtkWHIk1HslYk1Gimo0dpSpkbDG57jYNFyhU3FIJcnXiN7APIzWbnjLq03B+ IS9nSkDV+QXFPJOV1Q2onaxhu1m4zzSxarx5e1unO3dYVFbLVVl1GFkolgqI sgHYqLaiDQarDVasBUUAtBqsBXZBgaFCcUw4WaTfQLj1kjIpWzB8je1sA5mY v1CxQ29ItqoZ8QjeCQSLaHJaZWgtAlLc8g9p7rv2PQrlMLfr2ropNHNE8Thk RfJ1vUKKeke3EWlwB5XXl/pDUvoOJ0lSD3CbOFtefyK6XEMMMzzUuvZrSyQD MG51SVdw5vFYYwJy10Tg4A94fvYoP//U5l2yR31BC5tbE6JowAmMvHd93Pbo j0zpaSnZDUsN2C2NuYPLqqqntmpXGNwdpYg9VlXmQ+SnlifEbPY4jPfXIr01 BVMqoGyNOuoOx5LzdSAJTf7sx/Mo3C6k0dQX59m95Dx+qkHroxmiezB5D2OM cnvDfzG6FA4PaHA3BCciVUSCoMbmsqAGE6OHhP7Lqwm4CRYxr24XAEHUFbje aKxc4mAm1zmWefRRXXiTIc1rbuNgNVx5OJxx92ECV/Q5D1QJamSqd9obN2YD kPPmvNy+Tx8f+1nLOQ/W1gqCI4zeMG5I+8f2QW67FAYUeBrpZOzY0lx0H6+S +PnyZ82fs89yuVFhYGm4FuiNutvp/Z5OzuXHCCT1WbL7vjYXDjkvbtJqMkKs K2QqsvSodlCFshUQgxZRasog0GrQYVYK1iQUGLWAKYlLoLLQRbovKV75GxyN ZY2OJt9ivV3zXk+LEwOndsLk9Nc1x5cM7rLD9MZXWhaVsPEaUVMfckeLSEDJ x6jdJTUk1NXxVbgXNYMBLbkBv5pPgvERT1xjc77Oc3HIE5r0r7ELTbznGnxy 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 JM3NzGhGoQXRSgdyW4/EEd+P7mG3VCPag54XeWSysDbB75N+YcUQROA7srh5 5qxc6jNbCKjRKNHNPmLI0faE5ho63Ky2yMxUHjy1TDUuwozTkqDtNijNclg5 M0sZlcCbhg35pcpjPqybdCkHcxHK+ibabpdlgAALAIrcl4sru7enGagiu5WQ brQBXOtorAVqBZ2JZXZQ3UssomFRXmogzhVFo0RbBRFAMaw6LNM2CogWVgTf EhOhvsny0E2KyWgKo5j4DyS0kDhoF2XMbyWHRtOy1ErzE/DTISYyGu5HQ/sk paSeG5dG4DmMx8QvYmCM7LJp4zstY55Y9MXGV//X80HXWXd5uRseYXrpuE0U /wDEhBPPQrm1nAqaJmOOadvTGCPmF7Zz77jy3j04FpgfE0+isNlOrwP6QiYC JizGSB0H7IckrmSlgtbmQt/lierbY3f9r7orWvb/ADT8AtUsAncA57h/Tb9l 2KfglK/N75XdMVvyT8sPRy2PwHvPv8k3DFPN/DjJHM5BdmHhlHBnHC0Hmcym xG0bLF5r+nSYObT8ODbOmdjPIaJ0RjYaJkRttorwgBc7lb26SSANaQthpRcI votBoWKrDWowarDQihoWVDwK8CKAFdhdQCwKYEYgKnCwUAcKiLZRB//ZUgAH 8BE1AAAFBS2ke9t/X3IotPg51p2iGuX/AO00AAABAAAAAAAAAAAAAACgRh3w 5TQAAC2ke9t/X3IotPg51p2iGuX//9j/4AAQSkZJRgABAQEAYABgAAD//gAc U29mdHdhcmU6IE1pY3Jvc29mdCBPZmZpY2X/2wBDAAoHBwgHBgoICAgLCgoL DhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8 SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAFWAZ4DASIAAhEB AxEB/8QAGwAAAQUBAQAAAAAAAAAAAAAAAgABAwQFBgf/xABCEAABAwIEBAQD BAgFBAIDAAABAAIDBBEFEiExBkFRYRMiMnEUgZEjQlKhFSQzYnKxwdEWNEOC kgdE4fAlVFNj8f/EABsBAAMBAQEBAQAAAAAAAAAAAAABAgMEBQYH/8QAMhEA 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 /mBroSw3BwASdw+hnVo7TlC+hlyXxjkHuJ1NGWatS4wxHMDp0TpafqJzqJ0a BniGnRrtSsZdgBHK9SFALKQD0OREaNPXwcH8zoUU1rghRx6wGtPqVtYhFbA7 kcRLxp/hrX3JnRTpOR4w+b0X0BMsL6c8ysCZBM0wgmVJkkyplBmEiEgkS8oJ aUWkgyJMgsp+KXJyuZmOolj3ElGNkTtjdkUtkUjf0iNoj93eI2iQKP1iGvZg iAJuBbk+k6DicTxXUb70oU8Ly2JjLKYzdaxxuV1Gtdn7ysioHDDgZ5no9P2n jVewZIY5Q8c/eeu8PuGo06WD+IczPHyzNvPjuDrUdp0tPObR2nSo7Tqw6VHa P1RCgx6owGlOBOJ4kd+rPsAJ2QeDOFqTu1Ln3molL4kYl5BlZZkSOktIMorC TiECgaaAwFUsK4AJMBXJ2e8gBJfjmAQ+sCCOD9pKFy4dQy9DFrZbS7v0+1jk qzD+srZIpK4RK2OaolanIOCFODOc16fpludwFKglieJEK6y5dPS1jHp09zPO bi9jO5ySYz43q/1TLTQDYo5yoJBM5wpv2BTRYfhwfgM83LjcvEejizxx801V jc+fX/Sdz9n7wrPpie+5Z5wU6hvgNNpAwT8PWarXqq9RVclVmUYEjYRkZnLj wyxz26cnLjlhp9H0/adKgcCcbw3W6fVDNVgY916EfadqntPc80P0e0cqbLbR 8w5IiVXGJro7mbV6j22rn6ZgdFvhXHfvOC53Ox9TOza22lz7GcP4vSaiUGQY Et6Sp3ekrIlT0gd3pKkN6SgyISMH0hAY2ywEnEkCBXbJ2y2JOIFQsy1Fi01N Y5wqjJm+JzPGy3l1puwrZJ+05cufZhch/9JnwvVGwWVuNrZ3Af5xqycc7qF8 5fhZSGX2HpG38SqancP7TO3Z7/7Tx9Ny987b7ZlZa8qNO4PcYH1iKbTSyNg7 Scg85lrFe9H1NpyFB2L2z6zntU7B6622uykAnofUT2XDxau3IvBsDGt8jdlV 3cASEVCp3W4fIAHaaaiplZUNeGHHB7+82VX3qgFHHOM9fqZ4rjq6s/r1S+PF YjS2IwdmVQw4OfSbf3ZNdhPHQkjmCVuGVjUSAxwjH4BGFJZGHlV/N1U9P+Jz zmMnr+umNt+/x3v2dIspd3ALhtoJ6gYE9JTPI+A5q1+wqyqyEAN1+pnrqiAM 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 GIJZiDEooKSBT0jGICBMhU1nykDX6RwqJHhGYCfdmca42UGeUBUeUBM1kcoO H0jhRfKBq18oCDqSOXvM7UdnrYCUwh8juP7fCbprXykWpQ8xE+kr/9fHv0lt O7VuAOoHEPpv9IpbVXcOQfHVdyPhPaNRX5Sp+ztLd/qUq3qQJ3/t1PblcR4p tOq7Bip9RiDGo4Cq2M48uLM9a3YmjZiFFif7XImbq+y0pYGvU3j/ALT/APzN Xy5vuJ8L+2Kp1oH4ic+TnIjC26kgDua/dyT9Jq6PRC7Je+zbyC/0jlPZqMd7 7ufThH8pL5Mf5X46/bEUa1j4LAvolYGJYK9VlaG1NvL8JcA4/eejXsrTKuW7 x8fqcxmvR0VHNdaqR5CT+39RfhfzWHpexFOGdM+rf3mxRo6qBgKCR6bRpa18 paK18pnWtX21MyFeBi2ZagxLSg8pIKJhoFBkuGTVRJYECsLJBZZwjE7EIgBD wmTxDiBXgw8MniGUf//ZMwAL8BIAAAC/AAgACACBAUEAAAjAAUAAAAhAAB7x EAAAAA0AAAgMAAAIFwAACPcAABD8AHYFKAAAABwAAAAYAAQQAAAARG91Ymxl IFdhbGwgQ2VyYW1pYyBNdWdzAQAMAAUANwAAAAAAAAAAACwABBAAAABHb29k IFF1YWxpdHkgZm9yIEludGVybmF0aW9uYWwgRmFtb3VzIGJyYW5kLgEADAAF ADcAAAAAAAAAAAAdAAQQAAAARmFjdG9yeSBEaXJlY3QgYW5kIEdvb2QgcHJp Y2UBAAwABQA3AAAAAAAAAAAADQAEEAAAAFNtYWxsIE1pbmltdW0BAAwABQA3 AAAAAAAAAAAADgAEEAAAAFF1aWNrIERlbGl2ZXJ5AQAMAAUANwAAAAAAAAAA AAEABRAAAAAaIgEADAAFADcAAAAAAAAAAABNAAQQAAAAQWRkcmVzczogMzEw MUEsIEppbmh1aSBCdWlsZGluZywgTmFuaGFpIEF2ZW51ZSAyMDc5LCBOYW5z aGFuLCBTaGVuemhlbiwgQ2hpbmEBAAwABQA3AAAAAAAAAAAABQAEEAAAAERh dGU6AQAMAAUANwAAAAAAAAAAAAgABBAAAABRdW90ZSAjOgEADAAFADcAAAAA AAAAAAAJAAQQAAAAUVVPVEFUSU9OAQAMAAUANwAAAAAAAAAAAAgABBAAAABJ dGVtIE5vLgEADAAFADcAAAAAAAAAAAAFAAQQAAAAUGhvdG8BAAwABQA3AAAA AAAAAAAACwAEEAAAAERlc2NyaXB0aW9uAQAMAAUANwAAAAAAAAAAAAkABBAA AABGT0IgUHJpY2UBAAwABQA3AAAAAAAAAAAADwAEEAAAAFBhbGFjZSBHaWZ0 IEx0ZAEADAAFADcAAAAAAAAAAAA8AAQQAAAAd3d3LnBhbGFjZWdpZnQuY29t ICAgICAgICAgICAgICAgICAgICAgIHNhbGVzQHBhbGFjZWdpZnQuY29tAQAM AAUANwAAAAAAAAAAAAYABBAAAABOb3RlOiABAAwABQA3AAAAAAAAAAAADQAE EAAAAEJlc3QgcmVnYXJkcywBAAwABQA3AAAAAAAAAAAAFAAEEAAAAHNhbGVz QHBhbGFjZWdpZnQuY29tAQAMAAUANwAAAAAAAAAAADwABBAAAABQcmljZXMg YXJlIHN1YmpldCB0byBjaGFuZ2UgaWYgdGhlIHJhdyBtYXRlcmlhbCBjb3N0 IGNoYW5nZS4BAAwABQA3AAAAAAAAAAAAOAAEEAAAAFBheW1lbnQgVGVybXM6 IDMwJSBkZXBvc2l0LCBiYWxhbmNlIHBhaWQgYXQgQ29weSBvZiBCL0wuAQAM AAUANwAAAAAAAAAAAFsABBAAAABQcmljZXMgYXJlIHF1b3RlZCBiYXNlZCBv biBGQ0wuIFlvdSBjYW4gb3JkZXIgZGlmZmVyZW50IGl0ZW1zIGZyb20gdXMg dG8gY29uc29saWRhdGUgYSBGQ0wuAQAMAAUANwAAAAAAAAAAAEIABBAAAABM b3cgcXVhbnRpdHkgaXMgYWNjZXB0ZWQgcGxlYXNlIGNvbnRhY3QgdXMgZm9y IHByaWNlIGNvbmZpcm1hdGlvbi4BAAwABQA3AAAAAAAAAAAAHQAEEAAAAFNh bXBsaW5nIGxlYWR0aW1lOiAxNS0yMCBkYXlzAQAMAAUANwAAAAAAAAAAACoA BBAAAABQcm9kdWN0aW9uIGxlYWR0aW1lOiA0NSBkYXlzIGZyb20gYXBwcm92 YWwBAAwABQA3AAAAAAAAAAAAEAAEEAAAAHNwYXJrYW1wQDEyNi5jb20BAAwA BQA3AAAAAAAAAAAACAAEEAAAAFF1YW50aXR5AQAMAAUANwAAAAAAAAAADgYA BBAAAABSZW1hcmsBAAwABQA3AAAAAAAAAAAO/wAiAAgA7bQDAAwAAAB1tgMA lAEAAKq3AwDJAgAAt7kDANYEAABjCBQAYwgAAAAAAAAAAAAAFAAAAAQAAAAK AAAACQgQAAAGEADeHs0HyYAAAAYCAAALAiQAAAAAAAAAAACYAAAAP8QDAMvM AwAT1AMAW9sDAKPiAwBX6QMADQACAAEADAACAGQADwACAAEAEQACAAAAEAAI APyp8dJNYlA/XwACAAEAKgACAAAAKwACAAAAggACAAEAgAAIAAAAAAAAAAAA JQIEAAAALAGBAAIAwQQUAAAAFQAAAIMAAgAAAIQAAgAAAE0A0ggAAFwAXABQ AEcATAAtAFMARQBSAFYARQBSAFwAUwBhAG0AcwB1AG4AZwAgAE0ARgBQACAA NQA2ADAAIABTAAAAAAABBAAF3AD0Bw/PAQABAAkAmgs0CGQAAQAHAFgCAgAB AFgCAwAAAEEANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUklWoBAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAgABAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAABAA8ANAiaCwAA AQAPAAAAAAAAAAEAAAAAAAAAAAABAAAAAQAPAAAAZAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwBv AHUAcgBpAGUAcgAgAE4AZQB3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AKEAIgAJAEUAAQABAAEAAgBYAgAAAAAAAAAA4D8AAAAAAADgPwEAVQACAAgA fQAMAAAAAAAACRYAAAACAH0ADAABAAEAIAwWAAYAAgB9AAwAAgAKAAAJFgAA AAIAfQAMAAsACwCABRYAAgACAH0ADAAMAAABAAkWAAAAAgAAAg4AAAAAAJgA AAAAAA0AAAAIAhAAAAAAAA0AKwIAAAAAwAEXAAgCEAABAAAADQBoAQAAAACA ARcACAIQAAIAAAANAGgBAAAAAIABFwAIAhAAAwAAAA0AOwEAAAAAgAEXAAgC EAAEAAAADQA7AQAAAACAARcACAIQAAUAAAANAIQDAAAAAIABFwAIAhAABgAA AA0AhgEAAAAAwAEXAAgCEAAHAAAADQCwBAAAAAAAAQ8ACAIQAAgAAAANABwC AAAAAAABDwAIAhAACQAAAA0AHAIAAAAAAAEPAAgCEAAKAAAADQAcAgAAAAAA AQ8ACAIQAAsAAAANABwCAAAAAAABDwAIAhAADAAAAA0ALAEAAAAAAAEPAAgC EAANAAAADQAsAQAAAAAAAQ8ACAIQAA4AAAANACwBAAAAAAABDwAIAhAADwAA AA0ALAEAAAAAAAEPAAgCEAAQAAAADQAsAQAAAAAAAQ8ACAIQABEAAAANACwB AAAAAAABDwAIAhAAEgAAAA0ALAEAAAAAAAEPAAgCEAATAAAADQAsAQAAAAAA AQ8ACAIQABQAAAANACwBAAAAAAABDwAIAhAAFQAAAA0ALAEAAAAAAAEPAAgC EAAWAAAADQAsAQAAAAAAAQ8ACAIQABcAAAANACwBAAAAAAABDwAIAhAAGAAA AA0ALAEAAAAAAAEPAAgCEAAZAAAADQAsAQAAAAAAAQ8ACAIQABoAAAANACwB AAAAAAABDwAIAhAAGwAAAA0ALAEAAAAAAAEPAAgCEAAcAAAADQAsAQAAAAAA AQ8ACAIQAB0AAAANACwBAAAAAAABDwAIAhAAHgAAAA0ALAEAAAAAAAEPAAgC EAAfAAAADQAsAQAAAAAAAQ8A/QAKAAAAAAAuAA4AAAC+AB4AAAABAC8ALwAv AC8ALwAvAC8ALwAvAC8ALwAwAAwA/QAKAAEAAAAxAAYAAAC+AB4AAQABADIA MgAyADIAMgAyADIAMgAyADIAMgAzAAwA/QAKAAIAAAA0AA8AAAC+AB4AAgAB ADUANQA1ADUANQA1ADUANQA1ADUANQA2AAwAvgAgAAMAAAAYABkAGQAaABkA GQAZABkAGQAZABkAGQAbAAwA/QAKAAQAAAAcAAcAAAB+AgoABAABACIAYLbj QL4AFAAEAAIAGQAZACMAIwAZABkAGQAIAP0ACgAEAAkAHQAIAAAAvgAMAAQA CgAZABkAGwAMAP0ACgAFAAAANwAJAAAAvgAeAAUAAQA4ADgAOAA4ADgAOAA4 ADgAOAA4ADgAOQAMAP0ACgAGAAAAHgAKAAAA/QAKAAYAAQAfAAsAAAD9AAoA BgACADoADAAAAL4ADAAGAAMAOgA6ADoABQD9AAoABgAGADsADQAAAAECBgAG AAcAOwD9AAoABgAIAB8AGgAAAP0ACgAGAAkAHwAbAAAAvgAMAAYACgAmACYA JwAMAP0ACgAHAAAAPAAAAAAAvgAeAAcAAQA9AD0APQA9AD0APQA9AD0APQA9 AD0AKAAMAP0ACgAIAAAAKQAFAAAA/QAKAAgAAQAlAAIAAAC+ABwACAACACUA JQAlACUAJQAlACUAJQAlACUAKAAMAP0ACgAJAAAAKQAFAAAA/QAKAAkAAQAl AAMAAAC+ABwACQACACUAJQAlACUAJQAlACUAJQAlACUAKAAMAP0ACgAKAAAA KQAFAAAA/QAKAAoAAQAlAAQAAAC+ABwACgACACUAJQAlACUAJQAlACUAJQAl ACUAKAAMAP0ACgALAAAAKQAFAAAA/QAKAAsAAQAlAAEAAAC+ABwACwACACUA JQAlACUAJQAlACUAJQAlACUAKAAMAL4AIAAMAAAAKgAkACQAJAAkACQAJAAk ACQAJAAkACQAKAAMAL4AIAANAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQA KAAMAL4AIAAOAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAP AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAQAAAAKgAkACQA JAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAARAAAAKgAkACQAJAAkACQAJAAk ACQAJAAkACQAKAAMAL4AIAASAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQA KAAMAL4AIAATAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAU AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAVAAAAKgAkACQA JAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAWAAAAKgAkACQAJAAkACQAJAAk ACQAJAAkACQAKAAMAL4AIAAXAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQA KAAMAL4AIAAYAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAZ AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAaAAAAKgAkACQA JAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAbAAAAKgAkACQAJAAkACQAJAAk ACQAJAAkACQAKAAMAL4AIAAcAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQA KAAMAL4AIAAdAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAe AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAAfAAAAKgAkACQA JAAkACQAJAAkACQAJAAkACQAKAAMANcARAAkCAAAbAIwADAAMAAkAFIAMAB+ ADAAPAA8ADwAPAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQA JAAkAAgCEAAgAAAADQAsAQAAAAAAAQ8ACAIQACEAAAANACwBAAAAAAABDwAI AhAAIgAAAA0ALAEAAAAAAAEPAAgCEAAjAAAADQAsAQAAAAAAAQ8ACAIQACQA AAANACwBAAAAAAABDwAIAhAAJQAAAA0ALAEAAAAAAAEPAAgCEAAmAAAADQAs AQAAAAAAAQ8ACAIQACcAAAANACwBAAAAAAABDwAIAhAAKAAAAA0ALAEAAAAA AAEPAAgCEAApAAAADQAsAQAAAAAAAQ8ACAIQACoAAAANACwBAAAAAAABDwAI AhAAKwAAAA0ALAEAAAAAAAEPAAgCEAAsAAAADQAsAQAAAAAAAQ8ACAIQAC0A AAANACwBAAAAAAABDwAIAhAALgAAAA0ALAEAAAAAAAEPAAgCEAAvAAAADQAs AQAAAAAAAQ8ACAIQADAAAAANACwBAAAAAAABDwAIAhAAMQAAAA0ALAEAAAAA AAEPAAgCEAAyAAAADQAsAQAAAAAAAQ8ACAIQADMAAAANACwBAAAAAAABDwAI AhAANAAAAA0ALAEAAAAAAAEPAAgCEAA1AAAADQAsAQAAAAAAAQ8ACAIQADYA AAANACwBAAAAAAABDwAIAhAANwAAAA0ALAEAAAAAAAEPAAgCEAA4AAAADQAs AQAAAAAAAQ8ACAIQADkAAAANACwBAAAAAAABDwAIAhAAOgAAAA0ALAEAAAAA AAEPAAgCEAA7AAAADQAsAQAAAAAAAQ8ACAIQADwAAAANACwBAAAAAAABDwAI AhAAPQAAAA0ALAEAAAAAAAEPAAgCEAA+AAAADQAsAQAAAAAAAQ8ACAIQAD8A AAANACwBAAAAAAABDwC+ACAAIAAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAIQAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA IgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAIwAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAJAAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAAJQAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAJgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA JwAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAKAAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAKQAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAAKgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAKwAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA LAAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAALQAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAALgAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAALwAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAMAAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA MQAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAMgAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAMwAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAANAAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAANQAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA NgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAANwAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAOAAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAAOQAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAOgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAA OwAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAPAAAACoAJAAk ACQAJAAkACQAJAAkACQAJAAkACgADAC+ACAAPQAAACoAJAAkACQAJAAkACQA JAAkACQAJAAkACgADAC+ACAAPgAAACoAJAAkACQAJAAkACQAJAAkACQAJAAk ACgADAC+ACAAPwAAACoAJAAkACQAJAAkACQAJAAkACQAJAAkACgADADXAEQA AAcAAGwCJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAk ACQAJAAkACQAJAAkACQAJAAkACQAJAAIAhAAQAAAAA0ALAEAAAAAAAEPAAgC EABBAAAADQAsAQAAAAAAAQ8ACAIQAEIAAAANACwBAAAAAAABDwAIAhAAQwAA AA0ALAEAAAAAAAEPAAgCEABEAAAADQAsAQAAAAAAAQ8ACAIQAEUAAAANACwB AAAAAAABDwAIAhAARgAAAA0ALAEAAAAAAAEPAAgCEABHAAAADQAsAQAAAAAA AQ8ACAIQAEgAAAANACwBAAAAAAABDwAIAhAASQAAAA0ALAEAAAAAAAEPAAgC EABKAAAADQAsAQAAAAAAAQ8ACAIQAEsAAAANACwBAAAAAAABDwAIAhAATAAA AA0ALAEAAAAAAAEPAAgCEABNAAAADQAsAQAAAAAAAQ8ACAIQAE4AAAANACwB AAAAAAABDwAIAhAATwAAAA0ALAEAAAAAAAEPAAgCEABQAAAADQAsAQAAAAAA AQ8ACAIQAFEAAAANACwBAAAAAAABDwAIAhAAUgAAAA0ALAEAAAAAAAEPAAgC EABTAAAADQAsAQAAAAAAAQ8ACAIQAFQAAAANACwBAAAAAAABDwAIAhAAVQAA AA0ALAEAAAAAAAEPAAgCEABWAAAADQAsAQAAAAAAAQ8ACAIQAFcAAAANACwB AAAAAAABDwAIAhAAWAAAAA0ALAEAAAAAAAEPAAgCEABZAAAADQAsAQAAAAAA AQ8ACAIQAFoAAAANACwBAAAAAAABDwAIAhAAWwAAAA0ALAEAAAAAAAEPAAgC EABcAAAADQAsAQAAAAAAAQ8ACAIQAF0AAAANACwBAAAAAAABDwAIAhAAXgAA AA0ALAEAAAAAAAEPAAgCEABfAAAADQAsAQAAAAAAAQ8AvgAgAEAAAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAEEAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAEIAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAEMAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AEQAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAEUAAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAEYAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAEcAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAEgAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AEkAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAEoAAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAEsAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAEwAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAE0AAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AE4AAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAE8AAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAFAAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAFEAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAFIAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AFMAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAFQAAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAFUAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAFYAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAFcAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AFgAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAFkAAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAFoAAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwAvgAgAFsAAAAqACQAJAAkACQAJAAkACQAJAAkACQA JAAoAAwAvgAgAFwAAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAg AF0AAAAqACQAJAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAF4AAAAqACQA JAAkACQAJAAkACQAJAAkACQAJAAoAAwAvgAgAF8AAAAqACQAJAAkACQAJAAk ACQAJAAkACQAJAAoAAwA1wBEAAAHAABsAiQAJAAkACQAJAAkACQAJAAkACQA JAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQACAIQ AGAAAAANACwBAAAAAAABDwAIAhAAYQAAAA0ALAEAAAAAAAEPAAgCEABiAAAA DQAsAQAAAAAAAQ8ACAIQAGMAAAANACwBAAAAAAABDwAIAhAAZAAAAA0ALAEA AAAAAAEPAAgCEABlAAAADQAsAQAAAAAAAQ8ACAIQAGYAAAANACwBAAAAAAAB DwAIAhAAZwAAAA0ALAEAAAAAAAEPAAgCEABoAAAADQAsAQAAAAAAAQ8ACAIQ AGkAAAANACwBAAAAAAABDwAIAhAAagAAAA0ALAEAAAAAAAEPAAgCEABrAAAA DQAsAQAAAAAAAQ8ACAIQAGwAAAANACwBAAAAAAABDwAIAhAAbQAAAA0ALAEA AAAAAAEPAAgCEABuAAAADQAsAQAAAAAAAQ8ACAIQAG8AAAANACwBAAAAAAAB DwAIAhAAcAAAAA0ALAEAAAAAAAEPAAgCEABxAAAADQAsAQAAAAAAAQ8ACAIQ AHIAAAANACwBAAAAAAABDwAIAhAAcwAAAA0ALAEAAAAAAAEPAAgCEAB0AAAA DQAsAQAAAAAAAQ8ACAIQAHUAAAANACwBAAAAAAABDwAIAhAAdgAAAA0ALAEA AAAAAAEPAAgCEAB3AAAADQAsAQAAAAAAAQ8ACAIQAHgAAAANACwBAAAAAAAB DwAIAhAAeQAAAA0ALAEAAAAAAAEPAAgCEAB6AAAADQAsAQAAAAAAAQ8ACAIQ AHsAAAANACwBAAAAAAABDwAIAhAAfAAAAA0ALAEAAAAAAAEPAAgCEAB9AAAA DQAsAQAAAAAAAQ8ACAIQAH4AAAANACwBAAAAAAABDwAIAhAAfwAAAA0ALAEA AAAAAAEPAL4AIABgAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IABhAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABiAAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABjAAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIABkAAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIABlAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IABmAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABnAAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABoAAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIABpAAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIABqAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IABrAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABsAAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABtAAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIABuAAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIABvAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IABwAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIABxAAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAByAAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIABzAAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIAB0AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IAB1AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAB2AAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAB3AAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIAB4AAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIAB5AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IAB6AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAB7AAAAKgAk ACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIAB8AAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIAB9AAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAL4AIAB+AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4A IAB/AAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMANcARAAABwAAbAIk ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQA JAAkACQAJAAkACQAJAAkAAgCEACAAAAADQAsAQAAAAAAAQ8ACAIQAIEAAAAN ACwBAAAAAAABDwAIAhAAggAAAA0ALAEAAAAAAAEPAAgCEACDAAAADQAsAQAA AAAAAQ8ACAIQAIQAAAANABwCAAAAAAABDwAIAhAAhQAAAA0AHAIAAAAAAAEP AAgCEACGAAAADQAcAgAAAAAAAQ8ACAIQAIcAAAANABwCAAAAAAABDwAIAhAA iAAAAA0ALAEAAAAAAAEPAAgCEACJAAAADQAsAQAAAAAAAQ8ACAIQAIoAAAAN ADsBAAAAAAABDwAIAhAAiwAAAA0AOwEAAAAAAAEPAAgCEACMAAAADQA7AQAA AAAAAQ8ACAIQAI0AAAANADsBAAAAAAABDwAIAhAAjgAAAA0AOwEAAAAAAAEP AAgCEACPAAAADQA7AQAAAAAAAQ8ACAIQAJAAAAANADsBAAAAAAABDwAIAhAA kQAAAA0AOwEAAAAAAAEPAAgCEACSAAAADQA7AQAAAAAAAQ8ACAIQAJMAAAAN ADsBAAAAAAABDwAIAhAAlAAAAA0AOwEAAAAAAAEPAAgCEACVAAAADQA7AQAA AAAAAQ8ACAIQAJYAAAANADsBAAAAAAABDwAIAhAAlwAAAA0AOwEAAAAAAAEP IL4AIACAAAAAKgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIACBAAAA KgAkACQAJAAkACQAJAAkACQAJAAkACQAKAAMAL4AIACCAAAAKgAkACQAJAAk ACQAJAAkACQAJAAkACQAKAAMAL4AIACDAAAAKgAkACQAJAAkACQAJAAkACQA JAAkACQAKAAMAP0ACgCEAAAAKQAFAAAA/QAKAIQAAQAlAAIAAAC+ABwAhAAC ACUAJQAlACUAJQAlACUAJQAlACUAKAAMAP0ACgCFAAAAKQAFAAAA/QAKAIUA AQAlAAMAAAC+ABwAhQACACUAJQAlACUAJQAlACUAJQAlACUAKAAMAP0ACgCG AAAAKQAFAAAA/QAKAIYAAQAlAAQAAAC+ABwAhgACACUAJQAlACUAJQAlACUA JQAlACUAKAAMAP0ACgCHAAAAKQAFAAAA/QAKAIcAAQAlAAEAAAC+ABwAhwAC ACUAJQAlACUAJQAlACUAJQAlACUAKAAMAL4AIACIAAAAKgAkACQAJAAkACQA JAAkACQAJAAkACQAKAAMAL4AIACJAAAAKgAkACQAJAAkACQAJAAkACQAJAAk ACQAKAAMAP0ACgCKAAAAHAAQAAAAvgAeAIoAAQAZABkAGgAZACQAJAAkACQA JAAkACQAKAAMAH4CCgCLAAAAIAAAAPA//QAKAIsAAQAZABMAAAC+ABwAiwAC ABkAGgAZACQAJAAkACQAJAAkACQAKAAMAH4CCgCMAAAAIAAAAABA/QAKAIwA AQAZABQAAAC+ABwAjAACABkAGgAZACQAJAAkACQAJAAkACQAKAAMAH4CCgCN AAAAIAAAAAhA/QAKAI0AAQAZABUAAAC+ABwAjQACABkAGgAZACQAJAAkACQA JAAkACQAKAAMAH4CCgCOAAAAIAAAABBA/QAKAI4AAQAZABYAAAC+ABwAjgAC ABkAGgAZACQAJAAkACQAJAAkACQAKAAMAH4CCgCPAAAAIAAAABRA/QAKAI8A AQAZABcAAAC+ABwAjwACABkAGgAZACQAJAAkACQAJAAkACQAKAAMAH4CCgCQ AAAAIAAAABhA/QAKAJAAAQAZABgAAAC+ABwAkAACABkAGgAZACQAJAAkACQA JAAkACQAKAAMAL4AIACRAAAAGAAZABkAGgAZACQAJAAkACQAJAAkACQAKAAM AL4AIACSAAAAGAAZABkAGgAZACQAJAAkACQAJAAkACQAKAAMAP0ACgCTAAAA GAARAAAAvgAeAJMAAQAZABkAGgAZACQAJAAkACQAJAAkACQAKAAMAP0ACgCU AAAAGAAOAAAAvgAeAJQAAQAZABkAGgAZACQAJAAkACQAJAAkACQAKAAMAP0A CgCVAAAAIQASAAAAvgAeAJUAAQAZABkAGgAZACQAJAAkACQAJAAkACQAKAAM AP0ACgCWAAAAIQAZAAAAvgAeAJYAAQAkACQAJAAkACQAJAAkACQAJAAkACQA KAAMAL4AIACXAAAAKwAsACwALAAsACwALAAsACwALAAsACwALQAMANcANABs BgAAzAEkACQAJAAkADwAPAA8ADwAJAAkADAAPAA8ADwAPAA8ADwAJAAkADAA MAAwADAA7ADyAA8AAvAaEQAAEAAI8AgAAAAiAAAAJwQAABAAGPEEAAAAAQAA AA8AA/D2EAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArw CAAAAAAEAAAFAAAADwAE8I4AAACyBArwCAAAAAgEAAAACgAAIwAL8FQAAAAE QSIAAAAFwUgAAABEAG8AdQBiAGwAZQAgAFcAYQBsAGwAIABDAGUAcgBhAG0A aQBjACAATQB1AGcAIAAtACAAUABvAHIAYwBlAGwAYQBpAG4AAAAAABDwEgAA AAIAAAA5ABwAgAAEACsDJwDNAAAAEfAAAAAAXQAmABUAEgAIAAgAEWAAAAAA fDbiAAAAAAAHAAIA//8IAAIAAAAAAAAA7ACEAA8ABPB8AAAAsgQK8AgAAAAK BAAAAAoAACMAC/BCAAAABEEjAAAABcE2AAAAMQAyACAAbwB6ACAAQwB1AHAA IAAtACAATgBlAHcAIABCAG8AbgBlACAAQwBoAGkAbgBhAAAAAAAQ8BIAAAAC AAAAKwAxAFoABABVAzsAmgAAABHwAAAAAF0AJgAVABIACAAKABFgAAAAAIQ3 4gAAAAAABwACAP//CAACAAAAAAAAAOwAoAAPAATwmAAAALIECvAIAAAADAQA AAAKAAAjAAvwXgAAAARBJQAAAAXBUgAAADEAMgAgAG8AegAgAE4AZQB3ACAA QgBvAG4AZQAgAEMAaABpAG4AYQAgAEMAdQBwACsAcwBpAGwAaQBjAG8AbgBl ACAAaABvAGwAZABlAHIAAAAAABDwEgAAAAIAAAA5ACgAZgAEADkDMADmAAAA EfAAAAAAXQAmABUAEgAIAAwAEWAAAAAALDjiAAAAAAAHAAIA//8IAAIAAAAA AAAA7AB+AA8ABPB2AAAAsgQK8AgAAAANBAAAAAoAACMAC/A8AAAABEEmAAAA BcEwAAAAZABvAHUAYgBlACAAdwBhAGwAbAAgAGMAZQByAGEAbQBpAGMAIABt AHUAZwBzAAAAAAAQ8BIAAAACAAAAOQAMAOYACwAAAiYAjQAAABHwAAAAAF0A JgAVABIACAANABFgAAAAAPA44gAAAAAABwACAP//CAACAAAAAAAAAOwAYAAP AATwWAAAALIECvAIAAAAGQQAAAAKAAAjAAvwHgAAAARBLwAAAAXBEgAAAEkA TQBHAF8AMAAwADAAMwAAAAAAEPASAAAAAgAFAAADPwANAAwAOQBMAIAAAAAR 8AAAAABdACYAFQASAAgAGQARYAAAAACQOeIAAAAAAAcAAgD//wgAAgAAAAAA AADsAGgADwAD8NYIAAAPAATwWAAAAAEACfAQAAAAAAAAADMFAADQAwAAFQoA AAIACvAIAAAAJgQAAAECAAATAAvwBgAAAH8ABAAEAAAAEPASAAAAAAAAAAAA TQANAAsAXQSEAAcAAAAR8AAAAABdACAAFQASAAAAJgARYAAAAAAUOuIAAAAA AAYAAgAAAAAAAADsAGYADwAD8JoBAAAPAATwVgAAAAEACfAQAAAABgAAADgI AADPAwAAvQkAAAIACvAIAAAAJQQAAAMCAAATAAvwBgAAAH8ABAAEAAAAD/AQ AAAABwAAAJAIAADQAwAAFQoAAAAAEfAAAAAAXQAgABUAEgAAACUAEWAAAAAA rDriAAAAAAAGAAIAAAAAAAAA7AB6AA8ABPByAAAAsgQK8AgAAAAXBAAAAgoA ACMAC/A6AAAABEEtAAAABcEuAAAARABvAHUAYgBsAGUAIABXAGEAbABsACAA TQB1AGcAcwAtAEQAbwBnACAAMQAAAAAAD/AQAAAAawEAADgIAADPAwAAvAkA AAAAEfAAAAAAXQAmABUAEgAIABcAEWAAAAAARDviAAAAAAAHAAIA//8IAAIA AAAAAAAA7ADCAA8ABPC6AAAAsgQK8AgAAAAbBAAAAgoAACMAC/CCAAAABEEx AAAABcF2AAAATQBJAE4ASQAgAC0AIABEAG8AdQBiAGwAZQAgAFcAYQBsAGwA IABDAGUAcgBhAG0AaQBjACAAVAByAGEAdgBlAGwAIABNAHUAZwAgAGYAcgBv AG0AIABQAGEAbABhAGMAZQAgAEcAaQBmAHQAIABMAHQAZAAAAAAAD/AQAAAA BgAAAGkIAACXAQAAvQkAAAAAEfAAAAAAXQAmABUAEgAIABsAEWAAAAAAADzi AAAAAAAHAAIA//8IAAIAAAAAAAAA7ACaAA8ABPCSAAAAsgQK8AgAAAAOBAAA AgoAADMAC/BaAAAABEEnAAAABcFIAAAAiAMBAAAARABvAHUAYgBsAGUAIABX AGEAbABsACAAQwBlAHIAYQBtAGkAYwAgAEMAdQBwACAALQAgAFAAbwByAGMA ZQBsAGEAaQBuAAAAAAAP8BAAAABdAgAAXwYAANADAAB9BwAAAAAR8AAAAABd ACYAFQASAAgADgARYAAAAAAoPeIAAAAAAAcAAgD//wgAAgAAAAAAAADsAGYA DwAD8CQBAAAPAATwVgAAAAEACfAQAAAAkgEAAIYKAADzAgAArQsAAAIACvAI AAAAIwQAAAMCAAATAAvwBgAAAH8ABAAEAAAAD/AQAAAAbwIAADgFAADQAwAA XwYAAAAAEfAAAAAAXQAgABUAEgAAACMAEWAAAAAAID7iAAAAAAAGAAIAAAAA AAAA7ABkAA8ABPBcAAAAsgQK8AgAAAARBAAAAgoAACMAC/AkAAAABEEoAAAA BcEYAAAATABlAHYAaQB0AHIAYQAtAEQAVwBDAAAAAAAP8BAAAAA3AgAAhwoA APMCAACtCwAAAAAR8AAAAABdACYAFQASAAgAEQARYAAAAADEPuIAAAAAAAcA AgD//wgAAgAAAAAAAADsAGIADwAE8FoAAACyBArwCAAAABIEAAACCgAAIwAL 8CIAAAAEQSkAAAAFwRYAAABNAGkAcgBlAG4AYQAtAEQAVwBDAAAAAAAP8BAA AACSAQAAhgoAAEUCAACtCwAAAAAR8AAAAABdACYAFQASAAgAEgARYAAAAACc P+IAAAAAAAcAAgD//wgAAgAAAAAAAADsAGYADwAD8C4BAAAPAATwVgAAAAEA CfAQAAAAAQAAAMAIAAD/AgAABwoAAAIACvAIAAAAIQQAAAMCAAATAAvwBgAA AH8ABAAEAAAAD/AQAAAAAAAAADMFAAB2AgAANAYAAAAAEfAAAAAAXQAgABUA EgAAACEAEWAAAAAADEDiAAAAAAAGAAIAAAAAAAAA7ABcAA8ABPBUAAAAsgQK 8AgAAAABBAAAAgoAACMAC/AcAAAABEEOAAAABcEQAAAARABPAEwALQBEAFcA QwAAAAAAD/AQAAAA8wEAAMAIAAD/AgAABwoAAAAAEfAAAAAAXQAmABUAEgAI AAEAEWAAAAAA9EDiAAAAAAAHAAIA//8IAAIAAAAAAAAA7AB0AA8ABPBsAAAA sgQK8AgAAAAWBAAAAgoAACMAC/A0AAAABEEsAAAABcEoAAAARABPAEwALQBE AFcAQwAgAC0AMQBzAHQAIABzAGEAbQBwAGwAZQAAAAAAD/AQAAAAAQAAAMEI AAAgAgAABgoAAAAAEfAAAAAAXQAmABUAEgAIABYAEWAAAAAAZEHiAAAAAAAH AAIA//8IAAIAAAAAAAAA7ABmAA8AA/DwAQAADwAE8FYAAAABAAnwEAAAAAgA AADeBwAA7QIAAPkIAAACAArwCAAAACQEAAADAgAAEwAL8AYAAAB/AAQABAAA AA/wEAAAAAQAAABJBwAAzgMAANUIAAAAABHwAAAAAF0AIAAVABIAAAAkABFg AAAAAExC4gAAAAAABgACAAAAAAAAAOwAegAPAATwcgAAALIECvAIAAAAFAQA AAIKAAAjAAvwOgAAAARBKgAAAAXBLgAAAFMAeQBkAG4AZQB5ACAARABvAHUA YgBsAGUAIABXAGEAbABsACAATQB1AGcAAAAAAA/wEAAAANIAAADeBwAAlgEA APkIAAAAABHwAAAAAF0AJgAVABIACAAUABFgAAAAAPBC4gAAAAAABwACAP// CAACAAAAAAAAAOwAmAAPAATwkAAAALIECvAIAAAAHAQAAAIKAAAjAAvwWAAA AARBMgAAAAXBTAAAAFMAZQBhAHQAdABsAGUAIABTAGsAeQBsAGkAbgBlACAA MQAyACAAbwB6ACAARABvAHUAYgBsAGUAIABXAGEAbABsACAATQB1AGcAAAAA AA/wEAAAAJQBAADgBwAA7QIAAMoIAAAAABHwAAAAAF0AJgAVABIACAAcABFg AAAAAOBD4gAAAAAABwACAP//CAACAAAAAAAAAOwAgAAPAATweAAAALIECvAI AAAAHgQAAAIKAAAjAAvwQAAAAARBNAAAAAXBNAAAAFMAaQBuAGcAYQBwAG8A cgBlACAARABvAHUAYgBsAGUAIABXAGEAbABsACAATQB1AGcAAAAAAA/wEAAA AAgAAADeBwAA0wAAAPkIAAAAABHwAAAAAF0AJgAVABIACAAeABFgAAAAANxE 4gAAAAAABwACAP//CAACAAAAAAAAAOwAZgAPAAPw2AEAAA8ABPBWAAAAAQAJ 8BAAAAADAAAATQoAAK4CAACYCwAAAgAK8AgAAAAiBAAAAwIAABMAC/AGAAAA fwAEAAQAAAAP8BAAAAABAAAAMgYAAHgCAABKBwAAAAAR8AAAAABdACAAFQAS AAAAIgARYAAAAABMReIAAAAAAAYAAgAAAAAAAADsAIIADwAE8HoAAACyBArw CAAAABoEAAACCgAAIwAL8EIAAAAEQTAAAAAFwTYAAABrAGEAaQB4AHUAYQBu AG0AZQBuACAAZABvAHUAYgBsAGUAIAB3AGEAbABsACAATQB1AGcAAAAAAA/w EAAAAAMAAABNCgAABQEAAJgLAAAAABHwAAAAAF0AJgAVABIACAAaABFgAAAA ADRG4gAAAAAABwACAP//CAACAAAAAAAAAOwAfgAPAATwdgAAALIECvAIAAAA HQQAAAIKAAAjAAvwPgAAAARBMwAAAAXBMgAAAHMAaAB1AGEAbgBnAHoAaQAg AEQAbwB1AGIAbABlACAAVwBhAGwAbAAgAE0AdQBnAAAAAAAP8BAAAADAAQAA TQoAAK4CAACYCwAAAAAR8AAAAABdACYAFQASAAgAHQARYAAAAADwRuIAAAAA AAcAAgD//wgAAgAAAAAAAADsAHoADwAE8HIAAACyBArwCAAAABgEAAACCgAA IwAL8DoAAAAEQS4AAAAFwS4AAABlAGwAdQBvAHMAaQAgAEQAbwB1AGIAbABl ACAAdwBhAGwAbAAgAE0AdQBnAAAAAAAP8BAAAADtAAAATQoAANwBAACYCwAA AAAR8AAAAABdACYAFQASAAgAGAARYAAAAACsR+IAAAAAAAcAAgD//wgAAgAA AAAAAADsAGgADwAD8PwDAAAPAATwWAAAAAEACfAQAAAAAAAAAKkFAAAeAgAA twgAAAIACvAIAAAAIAQAAAECAAATAAvwBgAAAH8ABAAEAAAAEPASAAAAAAAF AHIAHACNAAsAXQQ/AA0AAAAR8AAAAABdACAAFQASAAAAIAARYAAAAABoSOIA AAAAAAYAAgAAAAAAAADsAKIADwAE8JoAAACyBArwCAAAAAMEAAACCgAAIwAL 8GIAAAAEQRIAAAAFwVYAAABMAFYAIAAxADIAIABvAHoAIABEAG8AdQBiAGwA ZQAgAFcAYQBsAGwAIABKAGEAdgBhADIARwBvACAALQAgAEYAdQBsAGwAIABX AHIAYQBwACAAMQAAAAAAD/AQAAAAAAAAAKYHAAAPAQAAtwgAAAAAEfAAAAAA XQAmABUAEgAIAAMAEWAAAAAA+EjiAAAAAAAHAAIA//8IAAIAAAAAAAAA7ACk AA8ABPCcAAAAsgQK8AgAAAAEBAAAAgoAACMAC/BkAAAABEEeAAAABcFYAAAA TABWACAAMQAyACAAbwB6ACAARABvAHUAYgBsAGUAIABXAGEAbABsACAASgBh AHYAYQAyAEcAbwAgAC0AIABGAHUAbABsACAAVwByAGEAcAAgADEAMAAAAAAA D/AQAAAADwEAAKcHAAAeAgAAtwgAAAAAEfAAAAAAXQAmABUAEgAIAAQAEWAA AAAAEEriAAAAAAAHAAIA//8IAAIAAAAAAAAA7ACqAA8ABPCiAAAAsgQK8AgA AAACBAAAAgoAADMAC/BqAAAABEEPAAAABcFYAAAAiAMBAAAASABlAGEAcgBz AHQAIABDAGEAcwB0AGUAbAAgADEAMgAgAG8AegAgAEQAbwB1AGIAbABlACAA VwBBAGwAbAAgAEMAZQByAGEAbQBpAGMAIABNAHUAZwAAAAAAD/AQAAAAAQAA AKkFAAACAQAAewYAAAAAEfAAAAAAXQAmABUAEgAIAAIAEWAAAAAAGEviAAAA AAAHAAIA//8IAAIAAAAAAAAA7AB0AA8ABPBsAAAAsgQK8AgAAAAFBAAAAgoA ADMAC/A0AAAABEEfAAAABcEiAAAAiAMBAAAAMwAxADEANQA1ACAAQgBsAHUA ZQAgAEwAaQBkACAAMgAAAAAAD/AQAAAAAAAAAHsGAAAhAQAAqQcAAAAAEfAA AAAAXQAmABUAEgAIAAUAEWAAAAAAIEziAAAAAAAHAAIA//8IAAIAAAAAAAAA 7AByAA8ABPBqAAAAsgQK8AgAAAAGBAAAAgoAADMAC/AyAAAABEEgAAAABcEg AAAAiAMBAAAAMwAxADEANQA1ACAAUgBlAGQAIABMAGkAZAAgADEAAAAAAA/w EAAAAB4BAAB4BgAAHQIAAKkHAAAAABHwAAAAAF0AJgAVABIACAAGABFgAAAA AJBM4gAAAAAABwACAP//CAACAAAAAAAAAOwAxgAPAATwvgAAALIECvAIAAAA BwQAAAIKAAAzAAvwhgAAAARBIQAAAAXBdAAAAIgDAQAAADUAMQAxADMAOQAg AEMAYQBiAGwAZQAgAEMAYQByAC0ARwBvAGwAZABlAG4AIABHAGEAdABlACAA MQAyACAAbwB6ACAARABvAHUAYgBsAGUAIABXAEEAbABsACAAQwBlAHIAYQBt AGkAYwAgAE0AdQBnAAAAAAAP8BAAAAACAQAAqQUAAB0CAAB7BgAAAAAR8AAA AABdACYAFQASAAgABwARYAAAAAB4TeIAAAAAAAcAAgD//wgAAgAAAAAAAADs ALoADwAE8LIAAACyBArwCAAAABUEAAAACgAAIwAL8HgAAAAEQSsAAAAFwWwA AAAxADIAIABvAHoAIABEAG8AdQBiAGwAZQAgAFcAYQBsAGwAIABDAGUAcgBh AG0AaQBjACAATQB1AGcAIAAtACAATQBhAHMAdABlAHIAIABLAGUAeQBsAGkA bgBlACAATABvAGcAbwAgADEAAAAAABDwEgAAAAIAAAAAADsAQAAFAJwBTABa AAAAEfAAAAAAXQAmABUAEgAIABUAEWAAAAAAnE7iAAAAAAAHAAIA//8IAAIA AAAAAAAA7ACSAA8ABPCKAAAAsgQK8AgAAAAnBAAAAAoAADMAC/BQAAAABEEk AAAABcE+AAAAPwEAAAYARABvAHUAYgBsAGUAIABXAEEAbABsACAATQB1AGcA IABpAGwAbAB1AHMAdAByAGEAdABpAG8AbgAgADIAAAAAABDwEgAAAAIABgDy AQcA5gAIAGQDDABNAAAAEfAAAAAAXQAmABUAEgAIACcAEWAAAAAAuE/iAAAA AAAHAAIA//8IAAIAAAAAAAAAPgISALYGAAAAAEAAAAA8AGQAAAAAAKAABAAR ABQAHQAPAAMJAA4AAAABAAkACQAODuUAOgAHAAYABgACAAUABgAGAAYABwAH AAcAAAALAAAAAAAAAAwAAQABAAAADAACAAIAAAAMAAUABQAAAAwA7wAGAAUA NwAAALgBlAACAAIAAAAAANDJ6nn5us4RjIIAqgBLqQsCAAAAFwAAABMAAAB3 AHcAdwAuAHAAYQBsAGEAYwBlAGcAaQBmAHQALgBjAG8AbQAAAODJ6nn5us4R jIIAqgBLqQs2AAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHAAYQBsAGEAYwBl AGcAaQBmAHQALgBjAG8AbQAvAAAAuAGaAJUAlQAAAAAA0Mnqefm6zhGMggCq AEupCwIAAAAXAAAAFQAAAHMAYQBsAGUAcwBAAHAAYQBsAGEAYwBlAGcAaQBm AHQALgBjAG8AbQAAAODJ6nn5us4RjIIAqgBLqQs4AAAAbQBhAGkAbAB0AG8A OgBzAGEAbABlAHMAQABwAGEAbABhAGMAZQBnAGkAZgB0AC4AYwBvAG0AAAC4 AYoAlgCWAAAAAADQyep5+brOEYyCAKoAS6kLAgAAABcAAAARAAAAcwBwAGEA cgBrAGEAbQBwAEAAMQAyADYALgBjAG8AbQAAAODJ6nn5us4RjIIAqgBLqQsw AAAAbQBhAGkAbAB0AG8AOgBzAHAAYQByAGsAYQBtAHAAQAAxADIANgAuAGMA bwBtAAAAugEJAAYAAFNoZWV0MQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAFAQIAAAAAAAAAAAAAAAAA AAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAKwAAAAIAAAAAQAAAEgAAAAE AAAAUAAAAAgAAABcAAAAEgAAAGgAAAALAAAAgAAAAAwAAACMAAAADQAAAJgA AAATAAAApAAAAAIAAACoAwAAHgAAAAEAAAAAAHMAHgAAAAEAAAAAAHMAHgAA ABAAAABNaWNyb3NvZnQgRXhjZWwAQAAAAICjQG2gIMsBQAAAAACZHDK667sB QAAAAAB/HZLGLssBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAA AAAAAAACAAAAAtXN1ZwuGxCTlwgAKyz5rkQAAAAF1c3VnC4bEJOXCAArLPmu XAEAABgBAAAJAAAAAQAAAFAAAAAPAAAAWAAAABcAAABkAAAACwAAAGwAAAAQ AAAAdAAAABMAAAB8AAAAFgAAAIQAAAANAAAAjAAAAAwAAADdAAAAAgAAAKgD AAAeAAAAAQAAAAAALwADAAAAexAKAAsAAAAAAAAACwAAAAAAAAALAAAAAAAA AAsAAAAAAAAAHhAAAAIAAAAZAAAARG91YmxlIFdhbGwgQ2VyYW1pYyBNdWdz ACgAAAAnRG91YmxlIFdhbGwgQ2VyYW1pYyBNdWdzJyFQcmludF9UaXRsZXMA DBAAAAQAAAAeAAAABwAAALmk1/ex7QADAAAAAQAAAB4AAAAJAAAAw/zD+7e2 zqcAAwAAAAEAAAAAAACIAQAAAwAAAAAAAAAgAAAAAQAAADgAAAACAAAAQAAA AAEAAAACAAAADAAAAF9QSURfSExJTktTAAIAAACoAwAAQQAAAEABAAASAAAA AwAAAD0ARQADAAAAAgAAAAMAAAAAAAAAAwAAAAYAAAAfAAAAGAAAAG0AYQBp AGwAdABvADoAcwBwAGEAcgBrAGEAbQBwAEAAMQAyADYALgBjAG8AbQAAAB8A AAABAAAAAAAAAAMAAAAVADEAAwAAAAEAAAADAAAAAAAAAAMAAAAGAAAAHwAA ABwAAABtAGEAaQBsAHQAbwA6AHMAYQBsAGUAcwBAAHAAYQBsAGEAYwBlAGcA aQBmAHQALgBjAG8AbQAAAB8AAAABAAAAAAAAAAMAAAAmADsAAwAAAAAAAAAD AAAAAAAAAAMAAAAGAAAAHwAAABsAAABoAHQAdABwADoALwAvAHcAdwB3AC4A cABhAGwAYQBjAGUAZwBpAGYAdAAuAGMAbwBtAC8AAAAAAB8AAAABAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUA AAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAA ABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAA HAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAn AAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIA AAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAA AD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAA SQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABU AAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8A AABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAA AGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAA dgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACB AAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACKAAAAiwAAAIwA AACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJUAAACWAAAAlwAA AJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAA owAAAKQAAAClAAAApgAAAKcAAACoAAAAqQAAAKoAAACrAAAArAAAAK0AAACu AAAArwAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYAAAC3AAAAuAAAALkA AAC6AAAAuwAAALwAAAC9AAAAvgAAAL8AAADAAAAAwQAAAMIAAADDAAAAxAAA AMUAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA 0AAAANEAAADSAAAA0wAAANQAAADVAAAA1gAAANcAAADYAAAA2QAAANoAAADb AAAA3AAAAN0AAADeAAAA3wAAAOAAAADhAAAA4gAAAOMAAADkAAAA5QAAAOYA AADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAA8QAA APIAAADzAAAA9AAAAPUAAAD2AAAA9wAAAPgAAAD5AAAA+gAAAPsAAAD8AAAA /QAAAP4AAAD/AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAI AQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMB AAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEA AB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAA KgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAADEBAAAyAQAAMwEAADQBAAA1 AQAANgEAADcBAAA4AQAAOQEAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEAB AABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAASwEA AEwBAABNAQAATgEAAE8BAABQAQAAUQEAAFIBAABTAQAAVAEAAFUBAABWAQAA VwEAAFgBAABZAQAAWgEAAFsBAABcAQAAXQEAAF4BAABfAQAAYAEAAGEBAABi AQAAYwEAAGQBAABlAQAAZgEAAGcBAABoAQAAaQEAAGoBAABrAQAAbAEAAG0B AABuAQAAbwEAAHABAABxAQAAcgEAAHMBAAB0AQAAdQEAAHYBAAB3AQAAeAEA AHkBAAB6AQAAewEAAHwBAAB9AQAAfgEAAH8BAACAAQAAgQEAAIIBAACDAQAA hAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACP AQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoB AACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAAChAQAAogEAAKMBAACkAQAApQEA AKYBAACnAQAAqAEAAKkBAACqAQAAqwEAAKwBAACtAQAArgEAAK8BAACwAQAA sQEAALIBAACzAQAAtAEAALUBAAC2AQAAtwEAALgBAAC5AQAAugEAALsBAAC8 AQAAvQEAAL4BAAC/AQAAwAEAAMEBAADCAQAAwwEAAMQBAADFAQAAxgEAAMcB AADIAQAAyQEAAMoBAADLAQAAzAEAAM0BAADOAQAAzwEAANABAADRAQAA0gEA ANMBAADUAQAA1QEAANYBAADXAQAA2AEAANkBAADaAQAA2wEAANwBAADdAQAA 3gEAAN8BAADgAQAA4QEAAOIBAADjAQAA5AEAAOUBAADmAQAA5wEAAOgBAADp AQAA6gEAAOsBAADsAQAA7QEAAO4BAADvAQAA8AEAAPEBAADyAQAA8wEAAPQB AAD1AQAA9gEAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEA AAACAAABAgAA/v///wMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAD+//// CwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAAP7////9/////f////3////9 /////f////7///////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB //////////8CAAAAIAgCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAAAAAAAA AAAA/v///wAAAAAAAAAAVwBvAHIAawBiAG8AbwBrAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgH///////// //////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA wwIEAAAAAAAFAFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBu AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAACAQEAAAADAAAA/////wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAEAAAAAAA AAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0A YQB0AGkAbwBuAAAAAAAAAAAAAAA4AAIB////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgIAAAAQAAAAAAAA --= Multipart Boundary 1005101440-- From news@pears-gallery.com Tue Oct 5 02:59:45 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o957xisP174772 for ; Tue, 5 Oct 2010 02:59:45 -0500 X-ASG-Debug-ID: 1286265646-379400540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2CB5618B0A65 for ; Tue, 5 Oct 2010 01:00:46 -0700 (PDT) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id JRXWISt4hyUChp55 for ; Tue, 05 Oct 2010 01:00:46 -0700 (PDT) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id 57CEF134DA0 for ; Tue, 5 Oct 2010 09:59:54 +0200 (CEST) From: "News Pears Gallery" X-ASG-Orig-Subj: Come and see the new web site dedicated to the contemporary art promotion. Subject: Come and see the new web site dedicated to the contemporary art promotion. To: "xfs" Content-Type: multipart/alternative; boundary="31sK5Do3hGNIkBGit=_d1o3UHuEOfkfNcO" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Tue, 5 Oct 2010 10:00:42 +0200 Message-Id: <20101005075954.57CEF134DA0@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1286265647 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42779 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --31sK5Do3hGNIkBGit=_d1o3UHuEOfkfNcO Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable www.pears-gallery.com presents : FRANCOIS BOUCHEIX Painter Fran=E7ois Boucheix was born on January, 7 1940 in Montcheneix= , a small village at the foot of the Auvergne Mounts, in the district = of Rochefort Montagne, from farmers whose family had been living in th= e Auvergne for centuries. He lost his father at the age of 15, and has= to learn a job far from his artistic ambitions. Despite the day's int= ense work, he spends his evenings, part of his nights and holidays pai= nting. In those days, most painters were still coming from whealthy or= intellectual families. He first exhibits in February 1960 in Tunisia, then in provincial Fran= ce, particularly in the Auvergne and in Southern France. He came forwa= rd in Paris in 1964, during a great exhibition in the Galerie de S=E8v= res, where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly = exhibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGN= IMONT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE i= ntroduced him to DALI. From 1964 to 1972 he exhibited in the Galerie d= e S=E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Gui= gn=E9 (Paris Right Bank). In 1965, he met in the Galerie de S=E8vres Georges GIRAUDON, writer an= d art critic for many newspapers, art counselor for great collectors a= nd old friend of Breton's, himself a friend of many surrealists'. It w= as Georges GIRAUDON who introduced Fran=E7ois Boucheix to several art = dealers such as Y. JAUBERT, Paulette and Angelo GUIGNI, etc. It was after an exhibition called 'From DALI to BOUCHEIX', with painti= ngs by MEISSONNIER that he decided to become a surrealist of dream and= happiness and not a sad surrealist. He also met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great frien= d of Parisian high society's arts at that time. In the summertime, fro= m 1970 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix'= s in Royat; she was a friend of FOUGITA's, helped ZADKIN much, and liv= ed the great years of Montparnasse. Since then, Fran=E7ois Boucheix has worked for the best dealers and ga= lleries, and has exhibited all over the world : 1974 : Galerie Matignon, Av. Matignon Paris 8th, 1975 : Galerie Weil, = Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av. Matignon Paris 8th= , 1977 : Retrospective Vichy Grand Casino's Lounges 1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : Galerie= Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the lounges = of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990, he cel= ebrated the thirtieth anniversary of his first exhibition, and his fir= st book's publication, with a foreword by Roger PEYREFITTE, in presenc= e of many personnalities such as the Count of Paris or Emperor BAODAI.= >From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Paris 8th. He= also exhibited in Basel, Geneva, Zurich, Beyrouth, London, Berlin, To= kyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijing, Brussell= s, Luxemburg, Dubai, etc. In 2002, Fran=E7ois Boucheix made his first sculptures after sculptor = C=E9sar's advice. In 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in= Vichy, at the heart of one of France's most beautiful cities, with it= s prestigious architecture. In just a few years, thousands of people, = personnalities and the international media have already visited this m= useum, a must-see in the cultural world. (see website www.boucheix-mus= ee.com) Loved or hated, one can recognize a great master in painting without n= eeding his signature : BUFFET, CARZOU, MODIGLIANI, DALI, MIRO, BOUCHEI= X. This last has created thousands of canvas, in the valley of Royat, = for half a century. They are at present in numerous private or public = collections all over the world. Fran=E7ois Boucheix is, without any doubt, one of the great worldwide-= renowed painters the Auvergne was waiting for. =20 =20 =20 =20 Unsubscribe --31sK5Do3hGNIkBGit=_d1o3UHuEOfkfNcO Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

 

<= /P>

www.pears-gallery.com presents :


FRANCOIS BO= UCHEIX
 
Painter Fran=E7ois Boucheix was bo= rn on January, 7 1940 in Montcheneix, a small village at the foot of t= he Auvergne Mounts, in the district of Rochefort Montagne, from farmer= s whose family had been living in the Auvergne for centuries. He lost = his father at the age of 15, and has to learn a job far from his artis= tic ambitions. Despite the day's intense work, he spends his evenings,= part of his nights and holidays painting. In those days, most painter= s were still coming from whealthy or intellectual families.

He = first exhibits in February 1960 in Tunisia, then in provincial France,= particularly in the Auvergne and in Southern France. He came forward = in Paris in 1964, during a great exhibition in the Galerie de S=E8vres= , where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly exh= ibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGNIMO= NT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE intr= oduced him to DALI. From 1964 to 1972 he exhibited in the Galerie de S= =E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Guign=E9= (Paris Right Bank).
In 1965, he met in the Galerie de S=E8vres Geo= rges GIRAUDON, writer and art critic for many newspapers, art counselo= r for great collectors and old friend of Breton's, himself a friend of= many surrealists'. It was Georges GIRAUDON who introduced Fran=E7ois = Boucheix to several art dealers such as Y. JAUBERT, Paulette and Angel= o GUIGNI, etc.

It was after an exhibition called 'From DALI to = BOUCHEIX', with paintings by MEISSONNIER that he decided to become a s= urrealist of dream and happiness and not a sad surrealist.

He a= lso met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great friend of= Parisian high society's arts at that time. In the summertime, from 19= 70 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix's in= Royat; she was a friend of FOUGITA's, helped ZADKIN much, and lived t= he great years of Montparnasse.

Since then, Fran=E7ois Boucheix= has worked for the best dealers and galleries, and has exhibited all = over the world :
1974 : Galerie Matignon, Av. Matignon Paris 8th, 1= 975 : Galerie Weil, Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av= =2E Matignon Paris 8th, 1977 : Retrospective Vichy Grand Casino's Loun= ges
1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : = Galerie Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the l= ounges of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990,= he celebrated the thirtieth anniversary of his first exhibition, and = his first book's publication, with a foreword by Roger PEYREFITTE, in = presence of many personnalities such as the Count of Paris or Emperor = BAODAI.
From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Pa= ris 8th. He also exhibited in Basel, Geneva, Zurich, Beyrouth, London,= Berlin, Tokyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijin= g, Brussells, Luxemburg, Dubai, etc.

In 2002, Fran=E7ois Bouche= ix made his first sculptures after sculptor C=E9sar's advice.

I= n 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in = Vichy, at the heart of one of France's most beautiful cities, with its= prestigious architecture. In just a few years, thousands of people, p= ersonnalities and the international media have already visited this mu= seum, a must-see in the cultural world. (see website www.boucheix-muse= e.com)

Loved or hated, one can recognize a great master in pain= ting without needing his signature : BUFFET, CARZOU, MODIGLIANI, DALI,= MIRO, BOUCHEIX. This last has created thousands of canvas, in the val= ley of Royat, for half a century. They are at present in numerous priv= ate or public collections all over the world.

Fran=E7ois Bouche= ix is, without any doubt, one of the great worldwide-renowed painters = the Auvergne was waiting for.
 
=
 

 

 

 

 

 

Unsubscribe<= /FONT>

--31sK5Do3hGNIkBGit=_d1o3UHuEOfkfNcO-- From news@pears-gallery.com Tue Oct 5 03:58:30 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o958wUmm183056 for ; Tue, 5 Oct 2010 03:58:30 -0500 X-ASG-Debug-ID: 1286269171-49a201f20000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B4FE418B1BEB for ; Tue, 5 Oct 2010 01:59:31 -0700 (PDT) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id q7S3l2EhdtwdAl2e for ; Tue, 05 Oct 2010 01:59:31 -0700 (PDT) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id 1A987134CB7 for ; Tue, 5 Oct 2010 10:58:42 +0200 (CEST) From: "News Pears Gallery" X-ASG-Orig-Subj: Come and see the new web site dedicated to the contemporary art promotion. Subject: Come and see the new web site dedicated to the contemporary art promotion. To: "linux-xfs" Content-Type: multipart/alternative; boundary="6zgw=_ZrN88bAEuXlxdSjlDAm3OVOdSL8H" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Tue, 5 Oct 2010 10:59:30 +0200 Message-Id: <20101005085842.1A987134CB7@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1286269172 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42783 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --6zgw=_ZrN88bAEuXlxdSjlDAm3OVOdSL8H Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =20 FRANCOIS BOUCHEIX Painter Fran=E7ois Boucheix was born on January, 7 1940 in Montcheneix= , a small village at the foot of the Auvergne Mounts, in the district = of Rochefort Montagne, from farmers whose family had been living in th= e Auvergne for centuries. He lost his father at the age of 15, and has= to learn a job far from his artistic ambitions. Despite the day's int= ense work, he spends his evenings, part of his nights and holidays pai= nting. In those days, most painters were still coming from whealthy or= intellectual families. He first exhibits in February 1960 in Tunisia, then in provincial Fran= ce, particularly in the Auvergne and in Southern France. He came forwa= rd in Paris in 1964, during a great exhibition in the Galerie de S=E8v= res, where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly = exhibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGN= IMONT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE i= ntroduced him to DALI. From 1964 to 1972 he exhibited in the Galerie d= e S=E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Gui= gn=E9 (Paris Right Bank). In 1965, he met in the Galerie de S=E8vres Georges GIRAUDON, writer an= d art critic for many newspapers, art counselor for great collectors a= nd old friend of Breton's, himself a friend of many surrealists'. It w= as Georges GIRAUDON who introduced Fran=E7ois Boucheix to several art = dealers such as Y. JAUBERT, Paulette and Angelo GUIGNI, etc. It was after an exhibition called 'From DALI to BOUCHEIX', with painti= ngs by MEISSONNIER that he decided to become a surrealist of dream and= happiness and not a sad surrealist. He also met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great frien= d of Parisian high society's arts at that time. In the summertime, fro= m 1970 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix'= s in Royat; she was a friend of FOUGITA's, helped ZADKIN much, and liv= ed the great years of Montparnasse. Since then, Fran=E7ois Boucheix has worked for the best dealers and ga= lleries, and has exhibited all over the world : 1974 : Galerie Matignon, Av. Matignon Paris 8th, 1975 : Galerie Weil, = Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av. Matignon Paris 8th= , 1977 : Retrospective Vichy Grand Casino's Lounges 1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : Galerie= Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the lounges = of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990, he cel= ebrated the thirtieth anniversary of his first exhibition, and his fir= st book's publication, with a foreword by Roger PEYREFITTE, in presenc= e of many personnalities such as the Count of Paris or Emperor BAODAI.= >From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Paris 8th. He= also exhibited in Basel, Geneva, Zurich, Beyrouth, London, Berlin, To= kyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijing, Brussell= s, Luxemburg, Dubai, etc. In 2002, Fran=E7ois Boucheix made his first sculptures after sculptor = C=E9sar's advice. In 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in= Vichy, at the heart of one of France's most beautiful cities, with it= s prestigious architecture. In just a few years, thousands of people, = personnalities and the international media have already visited this m= useum, a must-see in the cultural world. (see website www.boucheix-mus= ee.com) Loved or hated, one can recognize a great master in painting without n= eeding his signature : BUFFET, CARZOU, MODIGLIANI, DALI, MIRO, BOUCHEI= X. This last has created thousands of canvas, in the valley of Royat, = for half a century. They are at present in numerous private or public = collections all over the world. Fran=E7ois Boucheix is, without any doubt, one of the great worldwide-= renowed painters the Auvergne was waiting for. =20 =20 =20 Unsubscribe --6zgw=_ZrN88bAEuXlxdSjlDAm3OVOdSL8H Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

 

3D""

3D""  3D"" 3D""=  = 3D"" 3D""&nb= sp;<= IMG border=3D0 hspace=3D0 alt=3D"" align=3Dbaseline src=3D"http://www.= gagbdiffusion.com/images/nl.gif"> 3D""


FRANCOIS BO= UCHEIX
 
Painter Fran=E7ois Boucheix was bo= rn on January, 7 1940 in Montcheneix, a small village at the foot of t= he Auvergne Mounts, in the district of Rochefort Montagne, from farmer= s whose family had been living in the Auvergne for centuries. He lost = his father at the age of 15, and has to learn a job far from his artis= tic ambitions. Despite the day's intense work, he spends his evenings,= part of his nights and holidays painting. In those days, most painter= s were still coming from whealthy or intellectual families.

He = first exhibits in February 1960 in Tunisia, then in provincial France,= particularly in the Auvergne and in Southern France. He came forward = in Paris in 1964, during a great exhibition in the Galerie de S=E8vres= , where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly exh= ibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGNIMO= NT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE intr= oduced him to DALI. From 1964 to 1972 he exhibited in the Galerie de S= =E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Guign=E9= (Paris Right Bank).
In 1965, he met in the Galerie de S=E8vres Geo= rges GIRAUDON, writer and art critic for many newspapers, art counselo= r for great collectors and old friend of Breton's, himself a friend of= many surrealists'. It was Georges GIRAUDON who introduced Fran=E7ois = Boucheix to several art dealers such as Y. JAUBERT, Paulette and Angel= o GUIGNI, etc.

It was after an exhibition called 'From DALI to = BOUCHEIX', with paintings by MEISSONNIER that he decided to become a s= urrealist of dream and happiness and not a sad surrealist.

He a= lso met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great friend of= Parisian high society's arts at that time. In the summertime, from 19= 70 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix's in= Royat; she was a friend of FOUGITA's, helped ZADKIN much, and lived t= he great years of Montparnasse.

Since then, Fran=E7ois Boucheix= has worked for the best dealers and galleries, and has exhibited all = over the world :
1974 : Galerie Matignon, Av. Matignon Paris 8th, 1= 975 : Galerie Weil, Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av= =2E Matignon Paris 8th, 1977 : Retrospective Vichy Grand Casino's Loun= ges
1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : = Galerie Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the l= ounges of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990,= he celebrated the thirtieth anniversary of his first exhibition, and = his first book's publication, with a foreword by Roger PEYREFITTE, in = presence of many personnalities such as the Count of Paris or Emperor = BAODAI.
From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Pa= ris 8th. He also exhibited in Basel, Geneva, Zurich, Beyrouth, London,= Berlin, Tokyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijin= g, Brussells, Luxemburg, Dubai, etc.

In 2002, Fran=E7ois Bouche= ix made his first sculptures after sculptor C=E9sar's advice.

I= n 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in = Vichy, at the heart of one of France's most beautiful cities, with its= prestigious architecture. In just a few years, thousands of people, p= ersonnalities and the international media have already visited this mu= seum, a must-see in the cultural world. (see website www.boucheix-muse= e.com)

Loved or hated, one can recognize a great master in pain= ting without needing his signature : BUFFET, CARZOU, MODIGLIANI, DALI,= MIRO, BOUCHEIX. This last has created thousands of canvas, in the val= ley of Royat, for half a century. They are at present in numerous priv= ate or public collections all over the world.

Fran=E7ois Bouche= ix is, without any doubt, one of the great worldwide-renowed painters = the Auvergne was waiting for.
 
=
 
 

 

 


3D"" 3D"" 3D""

 

Unsubscribe<= /FONT>

--6zgw=_ZrN88bAEuXlxdSjlDAm3OVOdSL8H-- From hpj@urpla.net Tue Oct 5 04:25:58 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o959PvRW186603 for ; Tue, 5 Oct 2010 04:25:58 -0500 X-ASG-Debug-ID: 1286270819-7004004f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D35834C8417 for ; Tue, 5 Oct 2010 02:26:59 -0700 (PDT) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.186]) by cuda.sgi.com with ESMTP id Q2pWuoZTEehkUc7l for ; Tue, 05 Oct 2010 02:26:59 -0700 (PDT) Received: from lisa (p5DC2A373.dip0.t-ipconnect.de [93.194.163.115]) by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis) id 0Lyh7L-1Ohej92cQZ-015WE9; Tue, 05 Oct 2010 11:26:56 +0200 Received: from localhost (localhost [127.0.0.1]) by tyrex.lisa.loc (Postfix) with ESMTP id 8C08A80345D1; Tue, 5 Oct 2010 11:26:56 +0200 (CEST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at lisa.loc From: "Hans-Peter Jansen" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes Date: Tue, 5 Oct 2010 11:26:46 +0200 User-Agent: KMail/1.9.10 Cc: Johannes Weiner , Dave Chinner , stable@kernel.org, John Hawley , linux-kernel@vger.kernel.org, Alex Elder References: <20101001074354.GF2618@cmpxchg.org> <20101004071904.GH4681@dastard> <20101004102213.GJ2618@cmpxchg.org> In-Reply-To: <20101004102213.GJ2618@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <201010051126.47537.hpj@urpla.net> X-Provags-ID: V02:K0:SZeMBl0FgehY9mxeqo+G8AOsz+IHMGDqSwfQzoJqXds 8FqLq+Qshs3boli8YQ9C+7qnRpYfrb3FaoftU0VZK1S1DrwPpF /MMKYPaeCJCNvcTv1LVFP7VEMpFcaYH+PGluMQm442iCaWbXmH enb1ufmGq6vvBSEDwXLeRHoCv6hrYGt8nWwKVC78nKR3M9DLQw A6m5xvmosF5dLOxcFMy11DNJ51sqhMtytDqAGyzdBQ= X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.186] X-Barracuda-Start-Time: 1286270820 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean On Monday 04 October 2010, 12:22:13 Johannes Weiner wrote: > Hi, > > On Mon, Oct 04, 2010 at 06:19:04PM +1100, Dave Chinner wrote: > > On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: > > > On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > > > > When marking an inode reclaimable, a per-AG counter is increased, > > > > the inode is tagged reclaimable in its per-AG tree, and, when this > > > > is the first reclaimable inode in the AG, the AG entry in the > > > > per-mount tree is also tagged. > > > > > > > > When an inode is finally reclaimed, however, it is only deleted > > > > from the per-AG tree. Neither the counter is decreased, nor is the > > > > parent tree's AG entry untagged properly. > > > > > > > > Since the tags in the per-mount tree are not cleared, the inode > > > > shrinker iterates over all AGs that have had reclaimable inodes at > > > > one point in time. > > > > > > > > The counters on the other hand signal an increasing amount of slab > > > > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > > > > per-filesystem context" this is not a real issue anymore because > > > > the shrinker bails out after one iteration. > > > > > > > > But the problem was observable on a machine running v2.6.34, where > > > > the reclaimable work increased and each process going into direct > > > > reclaim eventually got stuck on the xfs inode shrinking path, > > > > trying to scan several million objects. > > > > > > > > Fix this by properly unwinding the reclaimable-state tracking of an > > > > inode when it is reclaimed. > > > > > > > > Signed-off-by: Johannes Weiner > > > > Cc: stable@kernel.org > > > > > > Yes, this looks right to me. The state was correctly > > > adjusted in xfs_iget_cache_hit() when a RECLAIMABLE > > > inode is found in the cache, but it was not done when > > > reclaim completes. > > > > > > Reviewed-by: Alex Elder > > > > Alex, can you push this to Linus ASAP? This needs to go back to > > stable kernels as well.. > > Here is my suggestion of a backport to .34. Dave, Alex, do you > approve? > > Hannes > > diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c > index 6845db9..3314f2a 100644 > --- a/fs/xfs/xfs_iget.c > +++ b/fs/xfs/xfs_iget.c > @@ -499,6 +499,7 @@ xfs_ireclaim( > write_lock(&pag->pag_ici_lock); > if (!radix_tree_delete(&pag->pag_ici_root, agino)) > ASSERT(0); > + pag->pag_ici_reclaimable--; > write_unlock(&pag->pag_ici_lock); > xfs_perag_put(pag); > > Ping? Masters of xfs, please raise your voices! Pete From just.for.lkml@googlemail.com Tue Oct 5 05:08:07 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95A87vI192303 for ; Tue, 5 Oct 2010 05:08:07 -0500 X-ASG-Debug-ID: 1286273350-055500ac0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 002804C812C for ; Tue, 5 Oct 2010 03:09:10 -0700 (PDT) Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id Y4w9d6pnghX5G0YR for ; Tue, 05 Oct 2010 03:09:10 -0700 (PDT) Received: by ywo7 with SMTP id 7so297652ywo.26 for ; Tue, 05 Oct 2010 03:09:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=+6h8aqM7pyqMwZeBLDObImW9V2bdSxy/HxuJqd/36jY=; b=SEPANrawAruTB1R+1LQjJ+ttIGklJXb2h29uJQWyoos09jquxtv4w2gwunI6Kuwt/+ MGDTEAjbpG7tBZUYEBXVnG9M1w4cYvTkv/lpwyr98Kxmy5rFqbOl1DD+qSSgr75XLKvC J6tKsFr+YSeBeIhv0rTm0MT7wHDlD6Gu6fmd8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=u19m2/4vgxR5Ws7W0rzChYO1Weh/QHry4rihSda6+nhLjnZsEvr13loZTpIXMsDVxR RFAdIzkultd6rMG8WRixb426/wI4Idy03HlvplxNjHR5w9owHMsByPNzv+URPPYLB1oK qL/yFHA3PHzesYb89av39RpuPPMG8O4vyQ0gw= MIME-Version: 1.0 Received: by 10.236.110.140 with SMTP id u12mr10483760yhg.79.1286273350376; Tue, 05 Oct 2010 03:09:10 -0700 (PDT) Received: by 10.236.110.14 with HTTP; Tue, 5 Oct 2010 03:09:10 -0700 (PDT) In-Reply-To: <20101004092107.GJ4681@dastard> References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> Date: Tue, 5 Oct 2010 12:09:10 +0200 Message-ID: X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning From: Torsten Kaiser To: Dave Chinner Cc: Tejun Heo , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1286273351 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-ASG-Whitelist: BODY (http://marc\.info/\?) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 4, 2010 at 11:21 AM, Dave Chinner wrote: > On Mon, Oct 04, 2010 at 11:01:19AM +0200, Tejun Heo wrote: >> Hello, >> >> On 09/25/2010 03:08 PM, Torsten Kaiser wrote: >> > [adding Tejun Heo, because I'm partly blaming his workqueues] >> >> :-) Sorry about the delay. =A0I was away the last week. >> >> > After that I enabled lockdep and retried the same update: This time no >> > hang, only the same lockdep report that Yang Ruirui had. >> > >> > So I'm currently at a loss how I should continue from here. The XFS >> > false positive drowns any other lockdep problems, but XFS had some >> > hang problems with the new workqueues. (Personally I had no other hang >> > with earlier 2.6.36-rcs) > > What XFS hang problem? I've seen temporary livelocks from the new > workqueue code, but thay have been fixed. I haven't come across any > deadlocks or hangs. Do you have a pointer to a bug report in case my > memory is failing me? I was referring to the hang that prompted to increase of the priority of the xfslogd thread. Its commit 51749e47e191db8e588ad5cebea731caf7b705d7 in Linus' tree. But it seems I have misremembered that one as a hang. The hang I have seen is describe here: http://marc.info/?l=3Dlinux-kernel&m=3D128542018414916&w=3D2 As 2.6.36-rc5 already includes this priority fix, I believe this hang is something different and wrote that mail. >> If workqueue lockdep annotations are triggering spuriously, just nuke >> all lockdep annotations in workqueue.c. =A0Currently the annotations are >> the same as before and trigger even when an actual deadlock won't >> happen anymore around flushes (but then again all the current users >> should be operating under the same constraints as before). =A0I'm >> looking into how to improve the lockdep annotations but in the end it >> might be best to leave it as it is. =A0I'll try to analyze the warnings. > > It looks like there's been some discussion that has been private so > I'm clueless as to the context being discussed here. =A0Can someone > fill me in on whatever is going on? I only send the above message both to the lkml and the XFS mailing list. But it could have been wrong to make it a reply in this thread, because now there are three different things mixed up. 1) the old livelock, that I was referring too -> That is already fixed in mainline, I just wanted to note, that this is unrelated to the hang I have seen. 2) the hang with 2.6.35-rc5 I have seen twice (triggered probably by high load while building KOffice on an tmpfs) 3) the lockdep issue that started this thread and that I am seeing in mainline 2.6.36-rc5 and -rc6 and that seems to be rather easy to trigger for me. Because 3) is regarded as a false positive, it should not be the cause of 2). But because 3) triggers on my system I can't see if lockdep might give better pointers to what might be the real cause of 2). So, I would like to test the patch Christoph was testing in http://marc.info/?l=3Dlinux-kernel&m=3D128501006509743&w=3D2 to see, if tha= t helps to debug my hang. (And because I did not see that patch on the lkml, I replied to Christophs mail.) I CC'ed Tejun, because I believe the primary suspect for my hang was the stuck kworker/u:8:845 and I was hoping he might see something obvious wrong in that stacktrace. Torsten From news@pears-gallery.com Tue Oct 5 07:01:36 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95C1ZLl204745 for ; Tue, 5 Oct 2010 07:01:35 -0500 X-ASG-Debug-ID: 1286280974-221c01b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 850E512ED192 for ; Tue, 5 Oct 2010 05:16:14 -0700 (PDT) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id xobA7gMbKDQpIGxG for ; Tue, 05 Oct 2010 05:16:14 -0700 (PDT) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id ED0D7134E04 for ; Tue, 5 Oct 2010 14:01:45 +0200 (CEST) From: "News Pears Gallery" X-ASG-Orig-Subj: Come and see the new web site dedicated to the contemporary art promotion. Subject: Come and see the new web site dedicated to the contemporary art promotion. To: "xfs" Content-Type: multipart/alternative; boundary="ILNlw=_QUT4ppLnoPzgV3LfLBOOUYI6gm4" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Tue, 5 Oct 2010 14:02:33 +0200 Message-Id: <20101005120145.ED0D7134E04@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1286280976 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42795 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --ILNlw=_QUT4ppLnoPzgV3LfLBOOUYI6gm4 Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =20 FRANCOIS BOUCHEIX Painter Fran=E7ois Boucheix was born on January, 7 1940 in Montcheneix= , a small village at the foot of the Auvergne Mounts, in the district = of Rochefort Montagne, from farmers whose family had been living in th= e Auvergne for centuries. He lost his father at the age of 15, and has= to learn a job far from his artistic ambitions. Despite the day's int= ense work, he spends his evenings, part of his nights and holidays pai= nting. In those days, most painters were still coming from whealthy or= intellectual families. He first exhibits in February 1960 in Tunisia, then in provincial Fran= ce, particularly in the Auvergne and in Southern France. He came forwa= rd in Paris in 1964, during a great exhibition in the Galerie de S=E8v= res, where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly = exhibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGN= IMONT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE i= ntroduced him to DALI. From 1964 to 1972 he exhibited in the Galerie d= e S=E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Gui= gn=E9 (Paris Right Bank). In 1965, he met in the Galerie de S=E8vres Georges GIRAUDON, writer an= d art critic for many newspapers, art counselor for great collectors a= nd old friend of Breton's, himself a friend of many surrealists'. It w= as Georges GIRAUDON who introduced Fran=E7ois Boucheix to several art = dealers such as Y. JAUBERT, Paulette and Angelo GUIGNI, etc. It was after an exhibition called 'From DALI to BOUCHEIX', with painti= ngs by MEISSONNIER that he decided to become a surrealist of dream and= happiness and not a sad surrealist. He also met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great frien= d of Parisian high society's arts at that time. In the summertime, fro= m 1970 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix'= s in Royat; she was a friend of FOUGITA's, helped ZADKIN much, and liv= ed the great years of Montparnasse. Since then, Fran=E7ois Boucheix has worked for the best dealers and ga= lleries, and has exhibited all over the world : 1974 : Galerie Matignon, Av. Matignon Paris 8th, 1975 : Galerie Weil, = Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av. Matignon Paris 8th= , 1977 : Retrospective Vichy Grand Casino's Lounges 1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : Galerie= Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the lounges = of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990, he cel= ebrated the thirtieth anniversary of his first exhibition, and his fir= st book's publication, with a foreword by Roger PEYREFITTE, in presenc= e of many personnalities such as the Count of Paris or Emperor BAODAI.= >From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Paris 8th. He= also exhibited in Basel, Geneva, Zurich, Beyrouth, London, Berlin, To= kyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijing, Brussell= s, Luxemburg, Dubai, etc. In 2002, Fran=E7ois Boucheix made his first sculptures after sculptor = C=E9sar's advice. In 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in= Vichy, at the heart of one of France's most beautiful cities, with it= s prestigious architecture. In just a few years, thousands of people, = personnalities and the international media have already visited this m= useum, a must-see in the cultural world. (see website www.boucheix-mus= ee.com) Loved or hated, one can recognize a great master in painting without n= eeding his signature : BUFFET, CARZOU, MODIGLIANI, DALI, MIRO, BOUCHEI= X. This last has created thousands of canvas, in the valley of Royat, = for half a century. They are at present in numerous private or public = collections all over the world. Fran=E7ois Boucheix is, without any doubt, one of the great worldwide-= renowed painters the Auvergne was waiting for. =20 =20 =20 Unsubscribe --ILNlw=_QUT4ppLnoPzgV3LfLBOOUYI6gm4 Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

 

3D""

3D""  3D"" 3D""=  = 3D"" 3D""&nb= sp;<= IMG border=3D0 hspace=3D0 alt=3D"" align=3Dbaseline src=3D"http://www.= gagbdiffusion.com/images/nl.gif"> 3D""


FRANCOIS BO= UCHEIX
 
Painter Fran=E7ois Boucheix was bo= rn on January, 7 1940 in Montcheneix, a small village at the foot of t= he Auvergne Mounts, in the district of Rochefort Montagne, from farmer= s whose family had been living in the Auvergne for centuries. He lost = his father at the age of 15, and has to learn a job far from his artis= tic ambitions. Despite the day's intense work, he spends his evenings,= part of his nights and holidays painting. In those days, most painter= s were still coming from whealthy or intellectual families.

He = first exhibits in February 1960 in Tunisia, then in provincial France,= particularly in the Auvergne and in Southern France. He came forward = in Paris in 1964, during a great exhibition in the Galerie de S=E8vres= , where he met Bernard BELLA=CFCHE. From 1962 to 1972 he regularly exh= ibited in this gallery, especially with LEBASQUE, OTHON FRIEZ, DIGNIMO= NT, CRAU SALA, P. BOUDET, and Madeleine LUKA. Bernard BELLA=CFCHE intr= oduced him to DALI. From 1964 to 1972 he exhibited in the Galerie de S= =E8vres (Paris Left Bank) and from 1978 to 1988, in the Galerie Guign=E9= (Paris Right Bank).
In 1965, he met in the Galerie de S=E8vres Geo= rges GIRAUDON, writer and art critic for many newspapers, art counselo= r for great collectors and old friend of Breton's, himself a friend of= many surrealists'. It was Georges GIRAUDON who introduced Fran=E7ois = Boucheix to several art dealers such as Y. JAUBERT, Paulette and Angel= o GUIGNI, etc.

It was after an exhibition called 'From DALI to = BOUCHEIX', with paintings by MEISSONNIER that he decided to become a s= urrealist of dream and happiness and not a sad surrealist.

He a= lso met in the Galerie de S=E8vres Yasmine d'OUEZAN, a great friend of= Parisian high society's arts at that time. In the summertime, from 19= 70 to 1974, Suzanne BERTILLON came to rest at Fran=E7ois Boucheix's in= Royat; she was a friend of FOUGITA's, helped ZADKIN much, and lived t= he great years of Montparnasse.

Since then, Fran=E7ois Boucheix= has worked for the best dealers and galleries, and has exhibited all = over the world :
1974 : Galerie Matignon, Av. Matignon Paris 8th, 1= 975 : Galerie Weil, Av. Matignon Paris 8th, 1976 : Galerie Laurens, Av= =2E Matignon Paris 8th, 1977 : Retrospective Vichy Grand Casino's Loun= ges
1978-1989 : Galerie Guign=E9, Fg St-Honor=E9 Paris 8th, 1989 : = Galerie Bernheim, Fg St-Honor=E9 Paris 8th, from 1989 to 1999 in the l= ounges of the Hotel Georges V, Av. Georges V Paris 8th where, in 1990,= he celebrated the thirtieth anniversary of his first exhibition, and = his first book's publication, with a foreword by Roger PEYREFITTE, in = presence of many personnalities such as the Count of Paris or Emperor = BAODAI.
From 1990 to 1994, Cours des Antiquaires, Fg St-Honor=E9 Pa= ris 8th. He also exhibited in Basel, Geneva, Zurich, Beyrouth, London,= Berlin, Tokyo, Rome, Caracas, Riyadh, Jeddah, Boston, Chicago, Beijin= g, Brussells, Luxemburg, Dubai, etc.

In 2002, Fran=E7ois Bouche= ix made his first sculptures after sculptor C=E9sar's advice.

I= n 2007, Fran=E7ois Boucheix's Surrealistic Museum opened its gates in = Vichy, at the heart of one of France's most beautiful cities, with its= prestigious architecture. In just a few years, thousands of people, p= ersonnalities and the international media have already visited this mu= seum, a must-see in the cultural world. (see website www.boucheix-muse= e.com)

Loved or hated, one can recognize a great master in pain= ting without needing his signature : BUFFET, CARZOU, MODIGLIANI, DALI,= MIRO, BOUCHEIX. This last has created thousands of canvas, in the val= ley of Royat, for half a century. They are at present in numerous priv= ate or public collections all over the world.

Fran=E7ois Bouche= ix is, without any doubt, one of the great worldwide-renowed painters = the Auvergne was waiting for.
 
=
 
 

 

 


3D"" 3D"" 3D""

 

Unsubscribe<= /FONT>

--ILNlw=_QUT4ppLnoPzgV3LfLBOOUYI6gm4-- From aelder@sgi.com Tue Oct 5 09:55:42 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95Etfkk223982 for ; Tue, 5 Oct 2010 09:55:42 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5482EAC006 for ; Tue, 5 Oct 2010 07:56:42 -0700 (PDT) Received: from [128.162.232.175] ([128.162.232.175]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 Oct 2010 09:55:48 -0500 Subject: XFS Filename Hash and metadump From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Tue, 05 Oct 2010 09:55:47 -0500 Message-ID: <1286290547.1960.3.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: quoted-printable X-OriginalArrivalTime: 05 Oct 2010 14:55:48.0142 (UTC) FILETIME=[653E5CE0:01CB649D] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In xfs_db, the metadump creation procedure optionally allows you to replace all file names in the dump with obfuscated versions of those names. This has to be done in such a way that the hash value associated with the obfuscated name is the same as the hash assigned to the original file. The algorithm that creates these obfuscated file names creates them by generating a random set of characters (using the full 8-bit range, only disallowing '/' and '\0') up to the last five. Along the way, the hash for the name is computed, and it--along with the hash for the original file--is used to determine what the last five characters need to be in order to match. There are some cases in this scheme, however, where files can't get an equivalent name using generate_obfuscated_name() as currently written (one of which Arkadiusz Mi=C5=9Bkiewicz found). Below I'm going to describe a bit more specifically how the hash works, and why some cases run into trouble. I also describe a way to adjust the algorithm to avoid this pitfall. XFS computes a filename hash by accumulating a 32-bit value by shifting (rotating) and XOR'ing each character in the name. - A 32-bit accumulator is initially zero-filled. Then with each character in the file name: - Rotate Left the contents of the 32-bit accumulator by 7 bits - XOR the next byte of the file name into the least-significant byte of the accumulator The algorithm for generating another filename having the same length and same hash starts by generating a string of random bytes (other than '\0' and '/') to replace each byte in the original name, for all but five characters in the name. The incremental hash for the new file name is computed as each byte is replaced. The last five characters are then selected such that they contribute to the hash exactly what is needed to produce a hash that matches the original name's hash. Note that no attempt is made to come up with an alternative name for names shorter than five characters. Arkadiusz Mi=C5=9Bkiewicz found that a file named "R\323\257NE" caused an attempt to create a metadump to hang. That 5-character file name, interpreted in hexadecimal, is: 0x52 d3 af 4e 45, and when run through the hashing algorithm the result is 0x3a4be740. Since there are only five characters in this name, no random characters are generated (so the hash value before selecting the last five characters is zero). To determine the last five characters, the accumulated hash (zero in this case) is XOR'd with the complete hash for the original filename. The resulting bits--after appropriate shifting--define exactly the bytes to use so the new file name has the same hash as the original. If one of those bytes happens to be illegal ('\0' or '/'), the process restarts in hopes a different random string of bytes will produce one that does work. The problem in this case is that there are no random characters in the name. So if any character dictated by the original hash is illegal, it will always be illegal and the process will repeat forever. That is the case here. In the "R\323\257NE" string, one of the characters that comes out as a necessary component of the obfuscated name is '/', which is not allowed. Hence the algorithm loops without terminating. So how do we fix this? We can tweak the algorithm a bit, based on a few observations, and the result will still generate filenames having the desired properties but will also avoid the infinite loop problem described above. Let's look at some details. Here is how the first (of the last five) byte is computed: newname[namelen - 4] =3D (newhash >> 21) & 0x7f; The hash for the problem name is 0x3a4b3740. The result after the shift is 0x1d2, and after the mask 0x52. That's an OK character. The next byte is computes like this: newname[namelen - 3] =3D (newhash >> 14) & 0x7f; For the problem name the shift gives 0xe92c, and after the mask it's 0x2f. That is NOT OK, it's the '/' character. And since there was never any randomization of characters involved, there's no chance that retrying the algorithm will come up with any other result. It turns out that this is just one of a whole class of file names that will run into this problem. I worked out an example of each of these. "\120\001\257\116\105", /* Byte 0 (first) must be zero */ "\122\001\257\116\105", /* Byte 1 must be zero */ "\122\323\200\116\105", /* Byte 2 must be zero */ "\122\323\254\001\305", /* Byte 3 must be zero */ "\122\323\247\116\005", /* Byte 4 (last) must be zero */ "\172\057\147\116\105", /* Byte 1 must be '/' */ "\122\320\057\116\105", /* Byte 2 must be '/' */ "\122\323\247\057\105", /* Byte 3 must be '/' */ "\002\323\247\116\057", /* Byte 4 (last) must be '/' */ (I didn't come up with one in which the first byte ends up having to be a '/'.) All of the above are 5-character names. It may be that with longer names the randomization of characters give the opportunity to avoid this. And if so, a very simple solution might be to just extend the length of file names that are not obfuscated from 4 to (say) 8. (But that probably means a LOT more files' names are put in the metadump without obfuscation.) First observation on the algorithm. Why is the high bit of each computed character masked off? The reason is that the high bit of each byte is XOR'd with the low bit of its neighbor, and masking the high bit off allows the low bit of the previous character to be selected without concern about the effect of the XOR. Second observation. Masking off the low bit could be used instead to achieve the same effect just described. Third observation. The two characters that are not allowed in a file name are '\0' and '/'. Their hex values are 0x00 and 0x2f. The current algorithm clears only the high bit to produce a new file name character, and that allows either of these two be the result of the mask. Clearing the low-order bit instead will never produce the '/' character. So if we can change the mask, we can eliminate half of the possible characters that will cause us problems. We are still left with the case that an important hunk of the original file's hash is 0x01, which produces 0x00 when the bottom bit is masked off. To address that we can flip the low bit and flip the corresponding high bit in the neighbor byte that it's XOR'd with, ensuring the result preserves the desired hash value. We can do this for any original hash value, and we can do this without any need to ever re-try generating a random name. I haven't determined yet whether there still might be a case that requires an invalid character to resolve. If we reach that point we can simply warn that the file is not getting obfuscated and leave the original file name as-is. I'll follow up later with a proposed change to implement what I have described here. -Alex PS Two more observations: - There is really no need for the characters to be truly random. Making the generated name unique and different from the original is sufficient. So (with the exception of the last five bytes) we can select the characters however we like. They could be a sequential series of names, for example, rather than computing a random value for each. - Similarly we could select (most of) the characters from a smaller subset than is currently used. I.e., rather than using any of 254 possible values, we could restrict it to just printable characters (or even a subset of those). The last five characters would be computed as above, and they would have to be unrestricted in order to produce the right hash. From tj@kernel.org Tue Oct 5 11:48:46 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95GmjUY236078 for ; Tue, 5 Oct 2010 11:48:46 -0500 X-ASG-Debug-ID: 1286297387-29b800fb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27E8E18B65E1; Tue, 5 Oct 2010 09:49:47 -0700 (PDT) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id QOF7DiBe5PBeIHml; Tue, 05 Oct 2010 09:49:47 -0700 (PDT) Received: from htj.dyndns.org (localhost [127.0.0.1]) by hera.kernel.org (8.14.4/8.14.3) with ESMTP id o95GmpVi012183; Tue, 5 Oct 2010 16:48:52 GMT X-Virus-Status: Clean X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.95.2 at hera.kernel.org Received: from atj.dyndns.org (unknown [212.255.35.172]) by htj.dyndns.org (Postfix) with ESMTPSA id EDDE51CC051C; Tue, 5 Oct 2010 18:48:50 +0200 (CEST) Message-ID: <4CAB5779.5020901@kernel.org> Date: Tue, 05 Oct 2010 18:51:05 +0200 From: Tejun Heo User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4 MIME-Version: 1.0 To: Torsten Kaiser CC: Dave Chinner , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> In-Reply-To: X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.3 (hera.kernel.org [127.0.0.1]); Tue, 05 Oct 2010 16:48:54 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1286297388 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42815 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hello, This is getting confusing. On 10/05/2010 12:09 PM, Torsten Kaiser wrote: > 2) the hang with 2.6.35-rc5 I have seen twice (triggered probably by > high load while building KOffice on an tmpfs) The trace doesn't seem to firmly point at xfs locking up. There are md and dm crypt involved. Are you sure this is locking up inside xfs? Also, can you please enable frame pointers so that we can get more reliable backtrace? > 3) the lockdep issue that started this thread and that I am seeing in > mainline 2.6.36-rc5 and -rc6 and that seems to be rather easy to > trigger for me. > > Because 3) is regarded as a false positive, it should not be the cause > of 2) For now, let's not draw any conclusion or mix the issues. I'll look up the original thread and look into what the lockdep warning means. Thanks. -- tejun From tj@kernel.org Tue Oct 5 11:52:44 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95GqhDD236573 for ; Tue, 5 Oct 2010 11:52:43 -0500 X-ASG-Debug-ID: 1286297626-1edb01ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0DB5A18B7BA3; Tue, 5 Oct 2010 09:53:46 -0700 (PDT) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id Js7bqHIWr6XmStN0; Tue, 05 Oct 2010 09:53:46 -0700 (PDT) Received: from htj.dyndns.org (localhost [127.0.0.1]) by hera.kernel.org (8.14.4/8.14.3) with ESMTP id o95Gr2Kj015314; Tue, 5 Oct 2010 16:53:03 GMT X-Virus-Status: Clean X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.95.2 at hera.kernel.org Received: from atj.dyndns.org (unknown [212.255.35.172]) by htj.dyndns.org (Postfix) with ESMTPSA id 055F71CC051C; Tue, 5 Oct 2010 18:53:01 +0200 (CEST) Message-ID: <4CAB5874.9060106@kernel.org> Date: Tue, 05 Oct 2010 18:55:16 +0200 From: Tejun Heo User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4 MIME-Version: 1.0 To: Torsten Kaiser CC: Dave Chinner , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> <4CAB5779.5020901@kernel.org> In-Reply-To: <4CAB5779.5020901@kernel.org> X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.3 (hera.kernel.org [127.0.0.1]); Tue, 05 Oct 2010 16:53:03 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1286297627 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42815 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 10/05/2010 06:51 PM, Tejun Heo wrote: > On 10/05/2010 12:09 PM, Torsten Kaiser wrote: >> 2) the hang with 2.6.35-rc5 I have seen twice (triggered probably by >> high load while building KOffice on an tmpfs) > > The trace doesn't seem to firmly point at xfs locking up. There are > md and dm crypt involved. Are you sure this is locking up inside xfs? > Also, can you please enable frame pointers so that we can get more > reliable backtrace? > >> 3) the lockdep issue that started this thread and that I am seeing in >> mainline 2.6.36-rc5 and -rc6 and that seems to be rather easy to >> trigger for me. >> >> Because 3) is regarded as a false positive, it should not be the cause >> of 2) > > For now, let's not draw any conclusion or mix the issues. I'll look > up the original thread and look into what the lockdep warning means. Ah, okay, David already looked into it and concluded it to be a spurious one. Can you please attach full kernel message of the lockup? Thanks. -- tejun From just.for.lkml@googlemail.com Tue Oct 5 12:53:37 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95HrVe8243589 for ; Tue, 5 Oct 2010 12:53:37 -0500 X-ASG-Debug-ID: 1286302093-792f02d30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CED3111EE79D for ; Tue, 5 Oct 2010 11:08:13 -0700 (PDT) Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id B5Arb9kRUOGvvYuL for ; Tue, 05 Oct 2010 11:08:13 -0700 (PDT) Received: by ywo7 with SMTP id 7so475258ywo.26 for ; Tue, 05 Oct 2010 10:54:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=mqQSTj2ivc09NYY+J0H3+qIgL8yGRrvQ1jORHPHSeqc=; b=pPS+nYfCVzcXDGOcEqPldQ2/oDF2ZRHXqOP0ewHpjtJ/ItjWONPMdXBh6Xw/pOQzmh /pGorDP/V459alp5V7s1xBYXP6zC1uSGLDRSEe62WVft86rZ5488VFwRCUjmozvvgSw1 NNF92WKt61DHL/DOI9RmiE38UA4WUafdLLFPM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=wiM3GunVYEDo7zHgp4CdZDByuokZykR4JLaCudB0Ki6w8rgmtm/WgMvY74RTBUfDHZ TaTRw5mFuiitnEvBcM8Bj8KXGegyFajdiaPayptoVzM405MJSMyODETUKL/JcKHjGrSC sGHWJWdTnOeic5Pt2kidhYJYxOdn9c/47DOso= MIME-Version: 1.0 Received: by 10.236.109.20 with SMTP id r20mr10931458yhg.27.1286301272880; Tue, 05 Oct 2010 10:54:32 -0700 (PDT) Received: by 10.236.110.14 with HTTP; Tue, 5 Oct 2010 10:54:32 -0700 (PDT) In-Reply-To: <4CAB5779.5020901@kernel.org> References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> <4CAB5779.5020901@kernel.org> Date: Tue, 5 Oct 2010 19:54:32 +0200 Message-ID: X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning From: Torsten Kaiser To: Tejun Heo Cc: Dave Chinner , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1286302094 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 5, 2010 at 6:51 PM, Tejun Heo wrote: > Hello, > > This is getting confusing. > > On 10/05/2010 12:09 PM, Torsten Kaiser wrote: >> 2) the hang with 2.6.35-rc5 I have seen twice (triggered probably by >> high load while building KOffice on an tmpfs) > > The trace doesn't seem to firmly point at xfs locking up. =A0There are > md and dm crypt involved. =A0Are you sure this is locking up inside xfs? Not 100%, but apart from the md/dm-worker the other prcesses got stuck in sync_page() and do_lockup() and these function look filesystem related. And the only filesystem I'm using on that system is XFS. And having just read about some problems (that were fixed in 2.6.36-rc5) regarding XFS vs the new workqueues, I "feared" that I somehow triggered some funny interaction between the workqueues of XFS, md-raid1 and dm-crypt. > Also, can you please enable frame pointers so that we can get more > reliable backtrace? I will do that and see if -rc6 gets stuck the same way. But it might take until tomorrow to test this. >> 3) the lockdep issue that started this thread and that I am seeing in >> mainline 2.6.36-rc5 and -rc6 and that seems to be rather easy to >> trigger for me. >> >> Because 3) is regarded as a false positive, it should not be the cause >> of 2) > > For now, let's not draw any conclusion or mix the issues. =A0I'll look > up the original thread and look into what the lockdep warning means. > > Thanks. > > -- > tejun > From newsletter@elabs3.com Tue Oct 5 13:03:04 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE, T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95I34He244736 for ; Tue, 5 Oct 2010 13:03:04 -0500 X-ASG-Debug-ID: 1286301846-5bda002c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail35.elabs3.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BCAD8C52B5 for ; Tue, 5 Oct 2010 11:04:06 -0700 (PDT) Received: from mail35.elabs3.com (mail35.elabs3.com [208.66.204.135]) by cuda.sgi.com with ESMTP id BirJ2ij0S51zVNzY for ; Tue, 05 Oct 2010 11:04:06 -0700 (PDT) X-ASG-Whitelist: Client Received: from [10.0.3.55] ([10.0.3.55:35518] helo=mail5.elabs3.com) by sv-mta02.l3s.lyris.net (envelope-from ) (ecelerity 2.2.2.43 r(32041/32179)) with ESMTP id 78/35-20212-6986BAC4; Tue, 05 Oct 2010 11:04:06 -0700 To: X-ASG-Orig-Subj: =?utf-8?Q?New=20Retained=20Executive=20Search?= Subject: =?utf-8?Q?New=20Retained=20Executive=20Search?= Date: Tue, 05 Oct 2010 11:04:06 -0700 X-Delivery: Level 3 Reply-To: rbates@executive-advantage.com List-Unsubscribe: Content-description: 8da9e5b7e9linux-xfs@oss.sgi.com!3b52b!1f6056!5a9e!rynof3.pbz! X-Complaints-To: abuse@elabs3.com Message-Id: <20101005180459.8DA9E5B7E924@elabs3.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_ddd50a720b2f54913bcebc7e860bdec8" From: "=?utf-8?Q?Ron=20E.=20Bates?=" X-Barracuda-Connect: mail35.elabs3.com[208.66.204.135] X-Barracuda-Start-Time: 1286301847 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a MIME encoded message. --=_ddd50a720b2f54913bcebc7e860bdec8 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Nathan Executive Advantage Group, Inc. has recently been exclusively retained by our client ContactPoint to conduct a retained executive search for a Vice President of Marketing (one of the top 5 Executives in the Company). We've showcased this new retained executive search in the following search specific website: http://executive-advantage.com/ContactPoint_VPM At the top of the above search specific website's - The Position Profile - page there is a link to - download the Detailed Position Spec. If you are aware of a stellar candidate that would excel in this role based on the brief position description below please have them send their resume to me, Ron E. Bates, Managing Principal, Executive Advantage Group, Inc. (Quickest/Best Contact is by Email: rbates@executive-advantage.com, slowest contact method is by direct dial: 408-451-8414). Reporting to the Chief Executive Officer: Vice President of Marketing: The ideal Vice President of Marketing candidate possesses +10 years of business experience and a proven track record of supporting a growing business in progressively more challenging roles ideally at companies ranging from early stage to +$75M in revenue. Experience ideally includes working for a major corporation as well as experience working for fast paced venture backed companies. Also possesses +5 years of related industry successful solution marketing management experience in senior marketing management roles including a successful track record of driving leads and conversions through internet marketing. Preferred related industry domain experience in a senior Marketing management leadership role in one or more of the following areas: internet marketing of SaaS solutions, e-learning, CRM solutions, call center solutions, and/or business services and telecommunications. Executive Advantage Group, Inc. - Experts in Mission Critical Search Solutions: We fill positions with top A-Player talent - we don't throw stacks of resumes at our clients. If you, or any business colleagues, have similar search needs at -any- mission critical position level or functional discipline, we can help provide you with the same service as the recent clients below have commented on. Andy Holroyd, Senior Vice President, Instruments Division, Ashtead Technology. We recently completed a retained executive search for our new VP of Sales & Marketing role using the services of Executive Advantage Group's Ron Bates and Michael Rothstein. One thing I'll say is Executive Advantage Group's networking reach and ability to cover the largest possible candidate population is impressive and quite effective. Out of the first 4 candidates submitted with the first month of the search, 2 of them became finalists with the second candidate submitted being the one we ultimately hired. Ultimately, the individual we hired is going to be invaluable. Laura Larsen, Dir. HR & Administration, Zhone Technologies, Inc. Compared to my experiences with large firms like Spencer Stuart as well as other smaller firms, Executive Advantage Group is vastly different in a very positive way. Michael and Ron are much more thorough than anyone else. Executive Advantage Group completed our VP of Global Customer Service search in 42 days with the first candidate being submitted within the first 20 days after the spec was approved, and with all 3 candidates interviewed submitted 23 days into the search. Sandra Swann, Director of Human Resources, ViewCast Corporation. Thanks to the efforts of Executive Advantage Group's Ron Bates and Michael Rothstein, completed a Vice President of Sales retained search in 62 days with the hired candidate submitted 29 days after the spec was approved. Compared to the other both large and boutique search firms I've used, Executive Advantage Group's network is very large and they tuned into our industry specifically. There's no comparison. I knew we would be more likely to find candidates that fit our industry requirements going with Executive Advantage Group, Inc. Frank Madren, President, GarrettCom, Inc. We recently had the need to conduct a confidential executive search to fill our Vice President of Engineering & Chief Technical Officer role at GarrettCom, Inc. Our new Vice President of Engineering & Chief Technical Officer was submitted 23 days after the search began and started work 99 days after we signed the retained search contract with Executive Advantage Group. The level of screening they took candidates through prior to formal candidate submission allowed us to go into interviews knowing more than we've ever known before on candidates prior to interview. Steve Harris, VP, Research, Development and Engineering, Electro Scientific Industries, Inc. I recently retained Michael Rothstein and Ron Bates of Executive Advantage Group, Inc. to fill three high impact senior management positions that will be key parts of how we grow Electro Scientific Industries, Inc. We tried for 3 months to fill these positions prior to engaging Executive Advantage Group. I would strongly recommend Executive Advantage Group to others with mission critical recruiting needs for one simple reason - results - Michael and Ron got it done. One of the candidates we hired even said, "I wish I would have found those guys when I was looking to hire candidates. Our firm's references and example full-page client reference letters can be viewed on our website under - Client References. You'll note from our references we are a truly unique retained search firm that consistently gets the job done for clients that retain our services. We have filled every search in the last 8 years within 45-90 days (or less) with the hired candidate being one of 2-4 bull's eye rifle shots submitted within the first 30 days of the search. I would happy to speak with you about your company's search needs when you feel the timing is right. With each Principal having +20-year careers in sales, marketing & technology management and having worked for Hewlett Packard, MentorGraphics, TRW, Raytheon, ComputerVision and Spherion, we're former top performing Managing Directors, Vice Presidents, and Partners with Heidrick & Struggles and StratfordGroup - both retained executive search firms. You will -never- find retained executive recruiters with our experience and direct industry backgrounds. We work with client's that believe it's paramount they acquire the -best- possible talent for mission critical positions. We excel at identifying, assessing, and assisting our clients in capturing differentiated talent. I look forward to your response. Sincerely, Ron E. Bates Managing Principal Executive Advantage Group Direct: 408-451-8414 rbates@executive-advantage.com Executive-Advantage.com Silicon Valley Offices - 1250 Oakmead Parkway, Suite 250, Sunnyvale, CA 94085 - Direct: 408-451-8414. Pacific Northwest Offices - 14385 SW Benchview Terrace, Portland, OR 97224 - Direct: 503-372-9084 To submit your preferred contact information - go here: http://www.executive-advantage.com/candidates/index.html To permanently unsubscribe from all future mailings, send an email to: globalunsub-23198@elabs3.com with the adddress: linux-xfs@oss.sgi.com in the subject line. This document is provided for information only. This information is not a promise or guarantee nor is the accuracy of any information generated after this item is published guaranteed. This document is provided AS IS without warranty of any kind, express or implied, including but not limited to service provider. Advertisement. DISCLAIMER: This e-mail is sent in compliance with strict anti-abuse regulations, and is in compliance as long as there is a way to be removed. --=_ddd50a720b2f54913bcebc7e860bdec8 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit

Nathan

Executive Advantage Group, Inc. has recently been exclusively retained by our client ContactPoint to conduct a retained executive search for a Vice President of Marketing (one of the top 5 Executives in the Company).

We've showcased this new retained executive search in the following search specific website:

http://executive-advantage.com/ContactPoint_VPM

At the top of the above search specific website's - The Position Profile - page there is a link to - download the Detailed Position Spec.  

If you are aware of a stellar candidate that would excel in this role based on the brief position description below please have them send their resume to me, Ron E. Bates, Managing Principal, Executive Advantage Group, Inc. (Quickest/Best Contact is by Email: rbates@executive-advantage.com, slowest contact method is by direct dial: 408-451-8414).

  • Reporting to the Chief Executive Officer: Vice President of Marketing:
    The ideal Vice President of Marketing candidate possesses +10 years of business experience and a proven track record of supporting a growing business in progressively more challenging roles ideally at companies ranging from early stage to +$75M in revenue. Experience ideally includes working for a major corporation as well as experience working for fast paced venture backed companies. Also possesses +5 years of related industry successful solution marketing management experience in senior marketing management roles including a successful track record of driving leads and conversions through internet marketing. Preferred related industry domain experience in a senior Marketing management leadership role in one or more of the following areas: internet marketing of SaaS solutions, e-learning, CRM solutions, call center solutions, and/or business services and telecommunications.

Executive Advantage Group, Inc. - Experts in Mission Critical Search Solutions:

We fill positions with top A-Player talent - we don't throw stacks of resumes at our clients. If you, or any business colleagues, have similar search needs at -any- mission critical position level or functional discipline, we can help provide you with the same service as the recent clients below have commented on.

  • Andy Holroyd, Senior Vice President, Instruments Division, Ashtead Technology.
    We recently completed a retained executive search for our new VP of Sales & Marketing role using the services of Executive Advantage Group's Ron Bates and Michael Rothstein. One thing I'll say is Executive Advantage Group's networking reach and ability to cover the largest possible candidate population is impressive and quite effective. Out of the first 4 candidates submitted with the first month of the search, 2 of them became finalists with the second candidate submitted being the one we ultimately hired. Ultimately, the individual we hired is going to be invaluable.
  • Laura Larsen, Dir. HR & Administration, Zhone Technologies, Inc.
    Compared to my experiences with large firms like Spencer Stuart as well as other smaller firms, Executive Advantage Group is vastly different in a very positive way. Michael and Ron are much more thorough than anyone else. Executive Advantage Group completed our VP of Global Customer Service search in 42 days with the first candidate being submitted within the first 20 days after the spec was approved, and with all 3 candidates interviewed submitted 23 days into the search.
  • Sandra Swann, Director of Human Resources, ViewCast Corporation
    Thanks to the efforts of Executive Advantage Group's Ron Bates and Michael Rothstein, completed a Vice President of Sales retained search in 62 days with the hired candidate submitted 29 days after the spec was approved. Compared to the other both large and boutique search firms I've used, Executive Advantage Group's network is very large and they tuned into our industry specifically. There's no comparison. I knew we would be more likely to find candidates that fit our industry requirements going with Executive Advantage Group, Inc.
  • Frank Madren, President, GarrettCom, Inc.
    We recently had the need to conduct a confidential executive search to fill our Vice President of Engineering & Chief Technical Officer role at GarrettCom, Inc. Our new Vice President of Engineering & Chief Technical Officer was submitted 23 days after the search began and started work 99 days after we signed the retained search contract with Executive Advantage Group. The level of screening they took candidates through prior to formal candidate submission allowed us to go into interviews knowing more than we've ever known before on candidates prior to interview.
  • Steve Harris, VP, Research, Development and Engineering, Electro Scientific Industries, Inc.
    I recently retained Michael Rothstein and Ron Bates of Executive Advantage Group, Inc. to fill three high impact senior management positions that will be key parts of how we grow Electro Scientific Industries, Inc. We tried for 3 months to fill these positions prior to engaging Executive Advantage Group. I would strongly recommend Executive Advantage Group to others with mission critical recruiting needs for one simple reason - results - Michael and Ron got it done. One of the candidates we hired even said, "I wish I would have found those guys when I was looking to hire candidates.

Our firm's references and example full-page client reference letters can be viewed on our website under - Client References. You'll note from our references we are a truly unique retained search firm that consistently gets the job done for clients that retain our services. We have filled every search in the last 8 years within 45-90 days (or less) with the hired candidate being one of 2-4 bull's eye rifle shots submitted within the first 30 days of the search. I would happy to speak with you about your company's search needs when you feel the timing is right.

With each Principal having +20-year careers in sales, marketing & technology management and having worked for Hewlett Packard, MentorGraphics, TRW, Raytheon, ComputerVision and Spherion, we're former top performing Managing Directors, Vice Presidents, and Partners with Heidrick & Struggles and StratfordGroup - both retained executive search firms. You will -never- find retained executive recruiters with our experience and direct industry backgrounds. We work with client's that believe it's paramount they acquire the -best- possible talent for mission critical positions.  We excel at identifying, assessing, and assisting our clients in capturing differentiated talent.

I look forward to your response.

Sincerely,

Ron E. Bates
Managing Principal
Executive Advantage Group
Direct: 408-451-8414
rbates@executive-advantage.com
Executive-Advantage.com


 

Silicon Valley Offices - 1250 Oakmead Parkway, Suite 250, Sunnyvale, CA 94085 - Direct: 408-451-8414
Pacific Northwest Offices - 14385 SW Benchview Terrace, Portland, OR 97224- Direct: 503-372-9084

Executive Advantage Group, Inc.
Experts in Mission Critical Retained Search
 

To submit your preferred contact information - go here

To permanently opt-out from all future mailings, go here or send an email to: globalunsub-23198@elabs3.com with the address: linux-xfs@oss.sgi.com in the subject line.


This document is provided for information only. This information is not a promise or guarantee nor is the accuracy of any information generated after this item is published guaranteed. This document is provided AS IS without warranty of any kind, express or implied, including but not limited to service provider. Advertisement. DISCLAIMER: This e-mail is sent in compliance with strict anti-abuse regulations, and is in compliance as long as there is a way to be removed.

--=_ddd50a720b2f54913bcebc7e860bdec8-- From just.for.lkml@googlemail.com Tue Oct 5 13:08:59 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_51,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95I8w3W245352 for ; Tue, 5 Oct 2010 13:08:59 -0500 X-ASG-Debug-ID: 1286302198-71b902c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D24118B8474 for ; Tue, 5 Oct 2010 11:09:58 -0700 (PDT) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.213.181]) by cuda.sgi.com with ESMTP id FP8j7RgIAL8gi6QU for ; Tue, 05 Oct 2010 11:09:58 -0700 (PDT) Received: by yxh35 with SMTP id 35so2520035yxh.26 for ; Tue, 05 Oct 2010 11:09:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=rhPNnOHaczzwzZSAJXJCD4FvRX4P2yrS0Ew3yeVK1F0=; b=cJR4zw1rTetEw2KOQEPj0JDj4aQ60z9GT+YgDPtAcENFabO+bYMtJfv+rMyhK7X3V4 Qcol8a1OlF4oF3bIzOZl4PCrV7JdESGqRChsP93YUeTpS+5z/Mk4b0V7l8z6mx3JaXQG H+bDGidQVo7Oio0lCh6gKI9SJTUxfxB7ms4EM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=ZBBXxKBzat+pE1A4vm7kjGnT7UYRTR6/cVhBQhkTSBr7sTe6gxbblhbQ8AzcUBpXFM QZ6NV6GZnYgWIZijA7dQxp5pGxaA0MQa1u12NPUcsRbASEitSduVEg8PXft4q1kfi2PM PF9I3Z9Ja8c0OBr8XIgra297q+8sZc/VCefqo= MIME-Version: 1.0 Received: by 10.236.109.46 with SMTP id r34mr11178953yhg.75.1286302198415; Tue, 05 Oct 2010 11:09:58 -0700 (PDT) Received: by 10.236.110.14 with HTTP; Tue, 5 Oct 2010 11:09:58 -0700 (PDT) In-Reply-To: <4CAB5874.9060106@kernel.org> References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> <4CAB5779.5020901@kernel.org> <4CAB5874.9060106@kernel.org> Date: Tue, 5 Oct 2010 20:09:58 +0200 Message-ID: X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning From: Torsten Kaiser To: Tejun Heo Cc: Dave Chinner , Christoph Hellwig , Yang Ruirui , Andrew Morton , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Alex Elder Content-Type: multipart/mixed; boundary=0023547c8bab9c42e80491e2916e X-Barracuda-Connect: mail-yx0-f181.google.com[209.85.213.181] X-Barracuda-Start-Time: 1286302199 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0023547c8bab9c42e80491e2916e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Tue, Oct 5, 2010 at 6:55 PM, Tejun Heo wrote: > On 10/05/2010 06:51 PM, Tejun Heo wrote: >> On 10/05/2010 12:09 PM, Torsten Kaiser wrote: >>> 2) the hang with 2.6.35-rc5 I have seen twice (triggered probably by >>> high load while building KOffice on an tmpfs) >> >> The trace doesn't seem to firmly point at xfs locking up. =A0There are >> md and dm crypt involved. =A0Are you sure this is locking up inside xfs? >> Also, can you please enable frame pointers so that we can get more >> reliable backtrace? >> >>> 3) the lockdep issue that started this thread and that I am seeing in >>> mainline 2.6.36-rc5 and -rc6 and that seems to be rather easy to >>> trigger for me. >>> >>> Because 3) is regarded as a false positive, it should not be the cause >>> of 2) >> >> For now, let's not draw any conclusion or mix the issues. =A0I'll look >> up the original thread and look into what the lockdep warning means. > > Ah, okay, David already looked into it and concluded it to be a > spurious one. =A0Can you please attach full kernel message of the > lockup? Here is the complete log from bootup until the hang happened the second tim= e. I just logged into KDE and then started the upgrade of KOffice, which meant that the package manager started to compile 4 programs each with -j5. After a few minutes the load got to ~18 and probably at the point where filecache and GCCs filled up my 4GB RAM the system got stuck. The mouse so longer moved and SysRq+S did not work. The log was captured via serial console on a second system. I will try tomorrow with frame pointers enabled... Torsten --0023547c8bab9c42e80491e2916e Content-Type: text/plain; charset=US-ASCII; name="xfs-lockup.txt" Content-Disposition: attachment; filename="xfs-lockup.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gex2u6bz0 WyAgICAwLjAwMDAwMF0gIEJJT1MtZTgyMDogMDAwMDAwMDAwMDEwMDAwMCAtIDAwMDAwMDAwZGZm ZDAwMDAgKHVzYWJsZSkNClsgICAgMC4wMDAwMDBdICBCSU9TLWU4MjA6IDAwMDAwMDAwZGZmZDAw MDAgLSAwMDAwMDAwMGRmZmRlMDAwIChBQ1BJIGRhdGEpDQpbICAgIDAuMDAwMDAwXSAgQklPUy1l ODIwOiAwMDAwMDAwMGRmZmRlMDAwIC0gMDAwMDAwMDBlMDAwMDAwMCAoQUNQSSBOVlMpDQpbICAg IDAuMDAwMDAwXSAgQklPUy1lODIwOiAwMDAwMDAwMGZlYzAwMDAwIC0gMDAwMDAwMDBmZWMwMTAw MCAocmVzZXJ2ZWQpDQpbICAgIDAuMDAwMDAwXSAgQklPUy1lODIwOiAwMDAwMDAwMGZlZTAwMDAw IC0gMDAwMDAwMDBmZWYwMDAwMCAocmVzZXJ2ZWQpDQpbICAgIDAuMDAwMDAwXSAgQklPUy1lODIw OiAwMDAwMDAwMGZmNzAwMDAwIC0gMDAwMDAwMDEwMDAwMDAwMCAocmVzZXJ2ZWQpDQpbICAgIDAu MDAwMDAwXSAgQklPUy1lODIwOiAwMDAwMDAwMTAwMDAwMDAwIC0gMDAwMDAwMDEyMDAwMDAwMCAo dXNhYmxlKQ0KWyAgICAwLjAwMDAwMF0gYm9vdGNvbnNvbGUgW2Vhcmx5c2VyMF0gZW5hYmxlZA0K WyAgICAwLjAwMDAwMF0gTlggKEV4ZWN1dGUgRGlzYWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlDQpb ICAgIDAuMDAwMDAwXSBETUkgcHJlc2VudC4NClsgICAgMC4wMDAwMDBdIE5vIEFHUCBicmlkZ2Ug Zm91bmQNClsgICAgMC4wMDAwMDBdIGxhc3RfcGZuID0gMHgxMjAwMDAgbWF4X2FyY2hfcGZuID0g MHg0MDAwMDAwMDANClsgICAgMC4wMDAwMDBdIHg4NiBQQVQgZW5hYmxlZDogY3B1IDAsIG9sZCAw eDcwNDA2MDAwNzA0MDYsIG5ldyAweDcwMTA2MDAwNzAxMDYNClsgICAgMC4wMDAwMDBdIGxhc3Rf cGZuID0gMHhkZmZkMCBtYXhfYXJjaF9wZm4gPSAweDQwMDAwMDAwMA0KWyAgICAwLjAwMDAwMF0g Zm91bmQgU01QIE1QLXRhYmxlIGF0IFtmZmZmODgwMDAwMGZmNzgwXSBmZjc4MA0KWyAgICAwLjAw MDAwMF0gaW5pdF9tZW1vcnlfbWFwcGluZzogMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDAwMGRmZmQw MDAwDQpbICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiAwMDAwMDAwMTAwMDAwMDAw LTAwMDAwMDAxMjAwMDAwMDANClsgICAgMC4wMDAwMDBdIFJBTURJU0s6IDM3ZWM4MDAwIC0gMzdm ZjAwMDANClsgICAgMC4wMDAwMDBdIEFDUEk6IFJTRFAgMDAwMDAwMDAwMDBmYjA4MCAwMDAyNCAo djAyIEFDUElBTSkNClsgICAgMC4wMDAwMDBdIEFDUEk6IFhTRFQgMDAwMDAwMDBkZmZkMDEwMCAw MDA2NCAodjAxIEFfTV9JXyBPRU1YU0RUICAwNDAwMDcxMyBNU0ZUIDAwMDAwMDk3KQ0KWyAgICAw LjAwMDAwMF0gQUNQSTogRkFDUCAwMDAwMDAwMGRmZmQwMjkwIDAwMEY0ICh2MDMgQV9NX0lfIE9F TUZBQ1AgIDA0MDAwNzEzIE1TRlQgMDAwMDAwOTcpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBEU0RU IDAwMDAwMDAwZGZmZDA0NTAgMDRGQzUgKHYwMSAgUzAwMjcgUzAwMjcwMDAgMDAwMDAwMDAgSU5U TCAyMDA1MTExNykNClsgICAgMC4wMDAwMDBdIEFDUEk6IEZBQ1MgMDAwMDAwMDBkZmZkZTAwMCAw MDA0MA0KWyAgICAwLjAwMDAwMF0gQUNQSTogQVBJQyAwMDAwMDAwMGRmZmQwMzkwIDAwMDgwICh2 MDEgQV9NX0lfIE9FTUFQSUMgIDA0MDAwNzEzIE1TRlQgMDAwMDAwOTcpDQpbICAgIDAuMDAwMDAw XSBBQ1BJOiBNQ0ZHIDAwMDAwMDAwZGZmZDA0MTAgMDAwM0MgKHYwMSBBX01fSV8gT0VNTUNGRyAg MDQwMDA3MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFDUEk6IE9FTUIgMDAwMDAw MDBkZmZkZTA0MCAwMDA2MCAodjAxIEFfTV9JXyBBTUlfT0VNICAwNDAwMDcxMyBNU0ZUIDAwMDAw MDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSFBFVCAwMDAwMDAwMGRmZmQ1NDIwIDAwMDM4ICh2 MDEgQV9NX0lfIE9FTUhQRVQwIDA0MDAwNzEzIE1TRlQgMDAwMDAwOTcpDQpbICAgIDAuMDAwMDAw XSBBQ1BJOiBNQ0ZHIDAwMDAwMDAwZGZmZDU0NjAgMDAwM0MgKHYwMSBBX01fSV8gT0VNTUNGRyAg MDQwMDA3MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFDUEk6IFNSQVQgMDAwMDAw MDBkZmZkNTRhMCAwMDExMCAodjAxIEFNRCAgICBIQU1NRVIgICAwMDAwMDAwMSBBTUQgIDAwMDAw MDAxKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogU1NEVCAwMDAwMDAwMGRmZmQ1NWIwIDAwNEYwICh2 MDEgQV9NX0lfIFBPV0VSTk9XIDAwMDAwMDAxIEFNRCAgMDAwMDAwMDEpDQpbICAgIDAuMDAwMDAw XSBTUkFUOiBQWE0gMCAtPiBBUElDIDB4MDAgLT4gTm9kZSAwDQpbICAgIDAuMDAwMDAwXSBTUkFU OiBQWE0gMCAtPiBBUElDIDB4MDEgLT4gTm9kZSAwDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBQWE0g MSAtPiBBUElDIDB4MDIgLT4gTm9kZSAxDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBQWE0gMSAtPiBB UElDIDB4MDMgLT4gTm9kZSAxDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBOb2RlIDAgUFhNIDAgMC1h MDAwMA0KWyAgICAwLjAwMDAwMF0gU1JBVDogTm9kZSAwIFBYTSAwIDEwMDAwMC04MDAwMDAwMA0K WyAgICAwLjAwMDAwMF0gU1JBVDogTm9kZSAxIFBYTSAxIDgwMDAwMDAwLWUwMDAwMDAwDQpbICAg IDAuMDAwMDAwXSBTUkFUOiBOb2RlIDEgUFhNIDEgMTAwMDAwMDAwLTEyMDAwMDAwMA0KWyAgICAw LjAwMDAwMF0gU1JBVDogTm9kZSAwIFswLGEwMDAwKSArIFsxMDAwMDAsODAwMDAwMDApIC0+IFsw LDgwMDAwMDAwKQ0KWyAgICAwLjAwMDAwMF0gU1JBVDogTm9kZSAxIFs4MDAwMDAwMCxlMDAwMDAw MCkgKyBbMTAwMDAwMDAwLDEyMDAwMDAwMCkgLT4gWzgwMDAwMDAwLDEyMDAwMDAwMCkNClsgICAg MC4wMDAwMDBdIEluaXRtZW0gc2V0dXAgbm9kZSAwIDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwMDA4 MDAwMDAwMA0KWyAgICAwLjAwMDAwMF0gICBOT0RFX0RBVEEgWzAwMDAwMDAwMDFiYjEyNDAgLSAw MDAwMDAwMDAxYmIzMjNmXQ0KWyAgICAwLjAwMDAwMF0gSW5pdG1lbSBzZXR1cCBub2RlIDEgMDAw MDAwMDA4MDAwMDAwMC0wMDAwMDAwMTIwMDAwMDAwDQpbICAgIDAuMDAwMDAwXSAgIE5PREVfREFU QSBbMDAwMDAwMDEwMDAwMDAwMCAtIDAwMDAwMDAxMDAwMDFmZmZdDQpbICAgIDAuMDAwMDAwXSBa b25lIFBGTiByYW5nZXM6DQpbICAgIDAuMDAwMDAwXSAgIERNQSAgICAgIDB4MDAwMDAwMDEgLT4g MHgwMDAwMTAwMA0KWyAgICAwLjAwMDAwMF0gICBETUEzMiAgICAweDAwMDAxMDAwIC0+IDB4MDAx MDAwMDANClsgICAgMC4wMDAwMDBdICAgTm9ybWFsICAgMHgwMDEwMDAwMCAtPiAweDAwMTIwMDAw DQpbICAgIDAuMDAwMDAwXSBNb3ZhYmxlIHpvbmUgc3RhcnQgUEZOIGZvciBlYWNoIG5vZGUNClsg ICAgMC4wMDAwMDBdIGVhcmx5X25vZGVfbWFwWzRdIGFjdGl2ZSBQRk4gcmFuZ2VzDQpbICAgIDAu MDAwMDAwXSAgICAgMDogMHgwMDAwMDAwMSAtPiAweDAwMDAwMDlmDQpbICAgIDAuMDAwMDAwXSAg ICAgMDogMHgwMDAwMDEwMCAtPiAweDAwMDgwMDAwDQpbICAgIDAuMDAwMDAwXSAgICAgMTogMHgw MDA4MDAwMCAtPiAweDAwMGRmZmQwDQpbICAgIDAuMDAwMDAwXSAgICAgMTogMHgwMDEwMDAwMCAt PiAweDAwMTIwMDAwDQpbICAgIDAuMDAwMDAwXSBEZXRlY3RlZCB1c2Ugb2YgZXh0ZW5kZWQgYXBp YyBpZHMgb24gaHlwZXJ0cmFuc3BvcnQgYnVzDQpbICAgIDAuMDAwMDAwXSBEZXRlY3RlZCB1c2Ug b2YgZXh0ZW5kZWQgYXBpYyBpZHMgb24gaHlwZXJ0cmFuc3BvcnQgYnVzDQpbICAgIDAuMDAwMDAw XSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAweDIwMDgNClsgICAgMC4wMDAwMDBdIEFDUEk6IExB UElDIChhY3BpX2lkWzB4MDFdIGxhcGljX2lkWzB4MDBdIGVuYWJsZWQpDQpbICAgIDAuMDAwMDAw XSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAyXSBsYXBpY19pZFsweDAxXSBlbmFibGVkKQ0KWyAg ICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwM10gbGFwaWNfaWRbMHgwMl0gZW5h YmxlZCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDRdIGxhcGljX2lk WzB4MDNdIGVuYWJsZWQpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJT0FQSUMgKGlkWzB4MDRdIGFk ZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pDQpbICAgIDAuMDAwMDAwXSBJT0FQSUNbMF06 IGFwaWNfaWQgNCwgdmVyc2lvbiAxNywgYWRkcmVzcyAweGZlYzAwMDAwLCBHU0kgMC0yMw0KWyAg ICAwLjAwMDAwMF0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19pcnEgMCBnbG9iYWxfaXJx IDIgZGZsIGRmbCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNf aXJxIDkgZ2xvYmFsX2lycSA5IGhpZ2ggbGV2ZWwpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRf U1JDX09WUiAoYnVzIDAgYnVzX2lycSAxNCBnbG9iYWxfaXJxIDE0IGhpZ2ggZWRnZSkNClsgICAg MC4wMDAwMDBdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDE1IGdsb2JhbF9pcnEg MTUgaGlnaCBlZGdlKQ0KWyAgICAwLjAwMDAwMF0gVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBj b25maWd1cmF0aW9uIGluZm9ybWF0aW9uDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVUIGlkOiAw eDEwZGU4MjAxIGJhc2U6IDB4ZmVkMDAwMDANClsgICAgMC4wMDAwMDBdIFNNUDogQWxsb3dpbmcg NCBDUFVzLCAwIGhvdHBsdWcgQ1BVcw0KWyAgICAwLjAwMDAwMF0gQWxsb2NhdGluZyBQQ0kgcmVz b3VyY2VzIHN0YXJ0aW5nIGF0IGUwMDAwMDAwIChnYXA6IGUwMDAwMDAwOjFlYzAwMDAwKQ0KWyAg ICAwLjAwMDAwMF0gc2V0dXBfcGVyY3B1OiBOUl9DUFVTOjQgbnJfY3B1bWFza19iaXRzOjQgbnJf Y3B1X2lkczo0IG5yX25vZGVfaWRzOjINClsgICAgMC4wMDAwMDBdIFBFUkNQVTogRW1iZWRkZWQg MjcgcGFnZXMvY3B1IEBmZmZmODgwMDAxYzAwMDAwIHM3ODU5MiByODE5MiBkMjM4MDggdTEwNDg1 NzYNClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IHM3ODU5MiByODE5MiBkMjM4MDggdTEwNDg1 NzYgYWxsb2M9MSoyMDk3MTUyDQpbICAgIDAuMDAwMDAwXSBwY3B1LWFsbG9jOiBbMF0gMCAxIFsx XSAyIDMgDQpbICAgIDAuMDAwMDAwXSBCdWlsdCAyIHpvbmVsaXN0cyBpbiBOb2RlIG9yZGVyLCBt b2JpbGl0eSBncm91cGluZyBvbi4gIFRvdGFsIHBhZ2VzOiAxMDMyMzAyDQpbICAgIDAuMDAwMDAw XSBQb2xpY3kgem9uZTogTm9ybWFsDQpbICAgIDAuMDAwMDAwXSBLZXJuZWwgY29tbWFuZCBsaW5l OiBmYXN0Ym9vdCBlYXJseXByaW50az1zZXJpYWwsdHR5UzAsMTE1MjAwIGNvbnNvbGU9dHR5UzAs MTE1MjAwIGNvbnNvbGU9dHR5MSBjcnlwdF9yb290PS9kZXYvbWQzIHJhZGVvbi5tb2Rlc2V0PTEg dmlkZW89MTI4MHgxMDI0DQpbICAgIDAuMDAwMDAwXSBQSUQgaGFzaCB0YWJsZSBlbnRyaWVzOiA0 MDk2IChvcmRlcjogMywgMzI3NjggYnl0ZXMpDQpbICAgIDAuMDAwMDAwXSBDaGVja2luZyBhcGVy dHVyZS4uLg0KWyAgICAwLjAwMDAwMF0gTm8gQUdQIGJyaWRnZSBmb3VuZA0KWyAgICAwLjAwMDAw MF0gTm9kZSAwOiBhcGVydHVyZSBAIDIwMDAwMDAwIHNpemUgMzIgTUINClsgICAgMC4wMDAwMDBd IEFwZXJ0dXJlIHBvaW50aW5nIHRvIGU4MjAgUkFNLiBJZ25vcmluZy4NClsgICAgMC4wMDAwMDBd IFlvdXIgQklPUyBkb2Vzbid0IGxlYXZlIGEgYXBlcnR1cmUgbWVtb3J5IGhvbGUNClsgICAgMC4w MDAwMDBdIFBsZWFzZSBlbmFibGUgdGhlIElPTU1VIG9wdGlvbiBpbiB0aGUgQklPUyBzZXR1cA0K WyAgICAwLjAwMDAwMF0gVGhpcyBjb3N0cyB5b3UgNjQgTUIgb2YgUkFNDQpbICAgIDAuMDAwMDAw XSBNYXBwaW5nIGFwZXJ0dXJlIG92ZXIgNjU1MzYgS0Igb2YgUkFNIEAgMjAwMDAwMDANClsgICAg MC4wMDAwMDBdIFN1YnRyYWN0ICg1OCBlYXJseSByZXNlcnZhdGlvbnMpDQpbICAgIDAuMDAwMDAw XSAgICMxIFswMDAxMDAwMDAwIC0gMDAwMWJiMDNjOF0gICBURVhUIERBVEEgQlNTDQpbICAgIDAu MDAwMDAwXSAgICMyIFswMDM3ZWM4MDAwIC0gMDAzN2ZmMDAwMF0gICAgICAgICBSQU1ESVNLDQpb ICAgIDAuMDAwMDAwXSAgICMzIFswMDAxYmIxMDAwIC0gMDAwMWJiMTIzOF0gICAgICAgICAgICAg QlJLDQpbICAgIDAuMDAwMDAwXSAgICM0IFswMDAwMGZmNzkwIC0gMDAwMDEwMDAwMF0gICBCSU9T IHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSAgICM1IFswMDAwMGZmNzgwIC0gMDAwMDBmZjc5MF0g ICAgTVAtdGFibGUgbXBmDQpbICAgIDAuMDAwMDAwXSAgICM2IFswMDAwMDlmYzAwIC0gMDAwMDBm MTZmMF0gICBCSU9TIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSAgICM3IFswMDAwMGYxODhjIC0g MDAwMDBmZjc4MF0gICBCSU9TIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSAgICM4IFswMDAwMGYx NmYwIC0gMDAwMDBmMTg4Y10gICAgTVAtdGFibGUgbXBjDQpbICAgIDAuMDAwMDAwXSAgICM5IFsw MDAwMDAxMDAwIC0gMDAwMDAwMzAwMF0gICAgICBUUkFNUE9MSU5FDQpbICAgIDAuMDAwMDAwXSAg ICMxMCBbMDAwMDAwODAwMCAtIDAwMDAwMGMwMDBdICAgICAgICAgUEdUQUJMRQ0KWyAgICAwLjAw MDAwMF0gICAjMTEgWzAwMDAwMGMwMDAgLSAwMDAwMDBkMDAwXSAgICAgICAgIFBHVEFCTEUNClsg ICAgMC4wMDAwMDBdICAgIzEyIFswMDAxYmIxMjQwIC0gMDAwMWJiMzI0MF0gICAgICAgTk9ERV9E QVRBDQpbICAgIDAuMDAwMDAwXSAgICMxMyBbMDEwMDAwMDAwMCAtIDAxMDAwMDIwMDBdICAgICAg IE5PREVfREFUQQ0KWyAgICAwLjAwMDAwMF0gICAjMTQgWzAwMDFiYjMyNDAgLSAwMDAxYmI0MjQw XSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzE1IFswMDAxYmIwNDAwIC0gMDAw MWJiMDU4MF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMxNiBbMDA4MDAwMDAw MCAtIDAwODAwMDAxODBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMTcgWzAw MDIzYjUwMDAgLSAwMDAyM2I2MDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAg IzE4IFswMDAyM2I2MDAwIC0gMDAwMjNiNzAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAw MDAwXSAgICMxOSBbMDAwMjQwMDAwMCAtIDAwMDQwMDAwMDBdICAgICAgICBNRU1NQVAgMA0KWyAg ICAwLjAwMDAwMF0gICAjMjAgWzAxMDAyMDAwMDAgLSAwMTAyMDAwMDAwXSAgICAgICAgTUVNTUFQ IDENClsgICAgMC4wMDAwMDBdICAgIzIxIFswMDAxYmIwNTgwIC0gMDAwMWJiMDcwMF0gICAgICAg ICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMyMiBbMDAwMWJiNDI0MCAtIDAwMDFiYzAyNDBd ICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMjMgWzAwODAwMDAxODAgLSAwMDgw MDBjMTgwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzI0IFswMDgwMDBjMTgw IC0gMDA4MDAwZjE4MF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMyNSBbMDAw MWJjMTAwMCAtIDAwMDFiYzIwMDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAj MjYgWzAwMDFiYjA3MDAgLSAwMDAxYmIwNzQxXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAw MDBdICAgIzI3IFswMDAxYmIwNzgwIC0gMDAwMWJiMDdjM10gICAgICAgICBCT09UTUVNDQpbICAg IDAuMDAwMDAwXSAgICMyOCBbMDAwMWJiMDgwMCAtIDAwMDFiYjBhNjhdICAgICAgICAgQk9PVE1F TQ0KWyAgICAwLjAwMDAwMF0gICAjMjkgWzAwMDFiYjBhODAgLSAwMDAxYmIwYWU4XSAgICAgICAg IEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzMwIFswMDAxYmIwYjAwIC0gMDAwMWJiMGI2OF0g ICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMzMSBbMDAwMWJiMGI4MCAtIDAwMDFi YjBiZThdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMzIgWzAwMDFiYjBjMDAg LSAwMDAxYmIwYzY4XSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzMzIFswMDAx YmIwYzgwIC0gMDAwMWJiMGNlOF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMz NCBbMDAwMWJiMGQwMCAtIDAwMDFiYjBkNjhdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAw MF0gICAjMzUgWzAwMDFiYjBkODAgLSAwMDAxYmIwZGU4XSAgICAgICAgIEJPT1RNRU0NClsgICAg MC4wMDAwMDBdICAgIzM2IFswMDAxYmIwZTAwIC0gMDAwMWJiMGU2OF0gICAgICAgICBCT09UTUVN DQpbICAgIDAuMDAwMDAwXSAgICMzNyBbMDAwMWJiMGU4MCAtIDAwMDFiYjBlZThdICAgICAgICAg Qk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMzggWzAwMDFiYjBmMDAgLSAwMDAxYmIwZjY4XSAg ICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzM5IFswMDAxYmIwZjgwIC0gMDAwMWJi MTAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM0MCBbMDAwMWJjMDI0MCAt IDAwMDFiYzAyYzBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNDEgWzAwMDFj MDAwMDAgLSAwMDAxYzFiMDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzQy IFswMDAxZDAwMDAwIC0gMDAwMWQxYjAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAw XSAgICM0MyBbMDA4MDIwMDAwMCAtIDAwODAyMWIwMDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAw LjAwMDAwMF0gICAjNDQgWzAwODAzMDAwMDAgLSAwMDgwMzFiMDAwXSAgICAgICAgIEJPT1RNRU0N ClsgICAgMC4wMDAwMDBdICAgIzQ1IFswMDAxYmMwMmMwIC0gMDAwMWJjMDJkMF0gICAgICAgICBC T09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM0NiBbMDAwMWJjMDMwMCAtIDAwMDFiYzAzMTBdICAg ICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNDcgWzAwMDFiYzAzNDAgLSAwMDAxYmMw MzUwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzQ4IFswMDAxYmMwMzgwIC0g MDAwMWJjMDNhMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM0OSBbMDAwMWJj MDNjMCAtIDAwMDFiYzA1MDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNTAg WzAwMDFiYzA1MDAgLSAwMDAxYmMwNTYwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBd ICAgIzUxIFswMDAxYmMwNTgwIC0gMDAwMWJjMDVlMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAu MDAwMDAwXSAgICM1MiBbMDAwMWJjMjAwMCAtIDAwMDFiY2EwMDBdICAgICAgICAgQk9PVE1FTQ0K WyAgICAwLjAwMDAwMF0gICAjNTMgWzAwMjAwMDAwMDAgLSAwMDI0MDAwMDAwXSAgICAgICAgIEJP T1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzU0IFswMDA0MDAwMDAwIC0gMDAwODAwMDAwMF0gICAg ICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM1NSBbMDAwMWJjYTAwMCAtIDAwMDFiZWEw MDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNTYgWzAwMDFjMWIwMDAgLSAw MDAxYzViMDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzU3IFswMDAwMDBk MDAwIC0gMDAwMDAxNTAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSBNZW1vcnk6 IDM5ODkwNDRrLzQ3MTg1OTJrIGF2YWlsYWJsZSAoNTUyNWsga2VybmVsIGNvZGUsIDUyNDg3Mmsg YWJzZW50LCAyMDQ2NzZrIHJlc2VydmVkLCA1MzY3ayBkYXRhLCA1NjRrIGluaXQpDQpbICAgIDAu MDAwMDAwXSBTTFVCOiBHZW5zbGFicz0xNCwgSFdhbGlnbj02NCwgT3JkZXI9MC0zLCBNaW5PYmpl Y3RzPTAsIENQVXM9NCwgTm9kZXM9Mg0KWyAgICAwLjAwMDAwMF0gSGllcmFyY2hpY2FsIFJDVSBp bXBsZW1lbnRhdGlvbi4NClsgICAgMC4wMDAwMDBdIAlDT05GSUdfUkNVX0ZBTk9VVCBzZXQgdG8g bm9uLWRlZmF1bHQgdmFsdWUgb2YgNA0KWyAgICAwLjAwMDAwMF0gCVJDVSBkeW50aWNrLWlkbGUg Z3JhY2UtcGVyaW9kIGFjY2VsZXJhdGlvbiBpcyBlbmFibGVkLg0KWyAgICAwLjAwMDAwMF0gCVZl cmJvc2Ugc3RhbGxlZC1DUFVzIGRldGVjdGlvbiBpcyBkaXNhYmxlZC4NClsgICAgMC4wMDAwMDBd IE5SX0lSUVM6NDM1MiBucl9pcnFzOjcxMg0KWyAgICAwLjAwMDAwMF0gRXh0ZW5kZWQgQ01PUyB5 ZWFyOiAyMDAwDQpbICAgIDAuMDAwMDAwXSBDb25zb2xlOiBjb2xvdXIgVkdBKyA4MHgyNQ0KWyAg ICAwLjAwMDAwMF0gY29uc29sZSBbdHR5MV0gZW5hYmxlZCwgYm9vdGNvbnNvbGUgZGlzYWJsZWQN ClsgICAgMC4wMDAwMDBdIExpbnV4IHZlcnNpb24gMi42LjM2LXJjNSAocm9vdEB0cmVvZ2VuKSAo Z2NjIHZlcnNpb24gNC40LjQgKEdlbnRvbyA0LjQuNC1yMiBwMS4yLCBwaWUtMC40LjUpICkgIzEg U01QIFR1ZSBTZXAgMjEgMTY6MjQ6MDMgQ0VTVCAyMDEwDQpbICAgIDAuMDAwMDAwXSBDb21tYW5k IGxpbmU6IGZhc3Rib290IGVhcmx5cHJpbnRrPXNlcmlhbCx0dHlTMCwxMTUyMDAgY29uc29sZT10 dHlTMCwxMTUyMDAgY29uc29sZT10dHkxIGNyeXB0X3Jvb3Q9L2Rldi9tZDMgcmFkZW9uLm1vZGVz ZXQ9MSB2aWRlbz0xMjgweDEwMjQNClsgICAgMC4wMDAwMDBdIEJJT1MtcHJvdmlkZWQgcGh5c2lj YWwgUkFNIG1hcDoNClsgICAgMC4wMDAwMDBdICBCSU9TLWU4MjA6IDAwMDAwMDAwMDAwMDAwMDAg LSAwMDAwMDAwMDAwMDlmYzAwICh1c2FibGUpDQpbICAgIDAuMDAwMDAwXSAgQklPUy1lODIwOiAw MDAwMDAwMDAwMDlmYzAwIC0gMDAwMDAwMDAwMDBhMDAwMCAocmVzZXJ2ZWQpDQpbICAgIDAuMDAw MDAwXSAgQklPUy1lODIwOiAwMDAwMDAwMDAwMGU0MDAwIC0gMDAwMDAwMDAwMDEwMDAwMCAocmVz ZXJ2ZWQpDQpbICAgIDAuMDAwMDAwXSAgQklPUy1lODIwOiAwMDAwMDAwMDAwMTAwMDAwIC0gMDAw MDAwMDBkZmZkMDAwMCAodXNhYmxlKQ0KWyAgICAwLjAwMDAwMF0gIEJJT1MtZTgyMDogMDAwMDAw MDBkZmZkMDAwMCAtIDAwMDAwMDAwZGZmZGUwMDAgKEFDUEkgZGF0YSkNClsgICAgMC4wMDAwMDBd ICBCSU9TLWU4MjA6IDAwMDAwMDAwZGZmZGUwMDAgLSAwMDAwMDAwMGUwMDAwMDAwIChBQ1BJIE5W UykNClsgICAgMC4wMDAwMDBdICBCSU9TLWU4MjA6IDAwMDAwMDAwZmVjMDAwMDAgLSAwMDAwMDAw MGZlYzAxMDAwIChyZXNlcnZlZCkNClsgICAgMC4wMDAwMDBdICBCSU9TLWU4MjA6IDAwMDAwMDAw ZmVlMDAwMDAgLSAwMDAwMDAwMGZlZjAwMDAwIChyZXNlcnZlZCkNClsgICAgMC4wMDAwMDBdICBC SU9TLWU4MjA6IDAwMDAwMDAwZmY3MDAwMDAgLSAwMDAwMDAwMTAwMDAwMDAwIChyZXNlcnZlZCkN ClsgICAgMC4wMDAwMDBdICBCSU9TLWU4MjA6IDAwMDAwMDAxMDAwMDAwMDAgLSAwMDAwMDAwMTIw MDAwMDAwICh1c2FibGUpDQpbICAgIDAuMDAwMDAwXSBib290Y29uc29sZSBbZWFybHlzZXIwXSBl bmFibGVkDQpbICAgIDAuMDAwMDAwXSBOWCAoRXhlY3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uOiBh Y3RpdmUNClsgICAgMC4wMDAwMDBdIERNSSBwcmVzZW50Lg0KWyAgICAwLjAwMDAwMF0gTm8gQUdQ IGJyaWRnZSBmb3VuZA0KWyAgICAwLjAwMDAwMF0gbGFzdF9wZm4gPSAweDEyMDAwMCBtYXhfYXJj aF9wZm4gPSAweDQwMDAwMDAwMA0KWyAgICAwLjAwMDAwMF0geDg2IFBBVCBlbmFibGVkOiBjcHUg MCwgb2xkIDB4NzA0MDYwMDA3MDQwNiwgbmV3IDB4NzAxMDYwMDA3MDEwNg0KWyAgICAwLjAwMDAw MF0gbGFzdF9wZm4gPSAweGRmZmQwIG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwDQpbICAgIDAu MDAwMDAwXSBmb3VuZCBTTVAgTVAtdGFibGUgYXQgW2ZmZmY4ODAwMDAwZmY3ODBdIGZmNzgwDQpb ICAgIDAuMDAwMDAwXSBpbml0X21lbW9yeV9tYXBwaW5nOiAwMDAwMDAwMDAwMDAwMDAwLTAwMDAw MDAwZGZmZDAwMDANClsgICAgMC4wMDAwMDBdIGluaXRfbWVtb3J5X21hcHBpbmc6IDAwMDAwMDAx MDAwMDAwMDAtMDAwMDAwMDEyMDAwMDAwMA0KWyAgICAwLjAwMDAwMF0gUkFNRElTSzogMzdlYzgw MDAgLSAzN2ZmMDAwMA0KWyAgICAwLjAwMDAwMF0gQUNQSTogUlNEUCAwMDAwMDAwMDAwMGZiMDgw IDAwMDI0ICh2MDIgQUNQSUFNKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogWFNEVCAwMDAwMDAwMGRm ZmQwMTAwIDAwMDY0ICh2MDEgQV9NX0lfIE9FTVhTRFQgIDA0MDAwNzEzIE1TRlQgMDAwMDAwOTcp DQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBGQUNQIDAwMDAwMDAwZGZmZDAyOTAgMDAwRjQgKHYwMyBB X01fSV8gT0VNRkFDUCAgMDQwMDA3MTMgTVNGVCAwMDAwMDA5NykNClsgICAgMC4wMDAwMDBdIEFD UEk6IERTRFQgMDAwMDAwMDBkZmZkMDQ1MCAwNEZDNSAodjAxICBTMDAyNyBTMDAyNzAwMCAwMDAw MDAwMCBJTlRMIDIwMDUxMTE3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogRkFDUyAwMDAwMDAwMGRm ZmRlMDAwIDAwMDQwDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBBUElDIDAwMDAwMDAwZGZmZDAzOTAg MDAwODAgKHYwMSBBX01fSV8gT0VNQVBJQyAgMDQwMDA3MTMgTVNGVCAwMDAwMDA5NykNClsgICAg MC4wMDAwMDBdIEFDUEk6IE1DRkcgMDAwMDAwMDBkZmZkMDQxMCAwMDAzQyAodjAxIEFfTV9JXyBP RU1NQ0ZHICAwNDAwMDcxMyBNU0ZUIDAwMDAwMDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogT0VN QiAwMDAwMDAwMGRmZmRlMDQwIDAwMDYwICh2MDEgQV9NX0lfIEFNSV9PRU0gIDA0MDAwNzEzIE1T RlQgMDAwMDAwOTcpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBIUEVUIDAwMDAwMDAwZGZmZDU0MjAg MDAwMzggKHYwMSBBX01fSV8gT0VNSFBFVDAgMDQwMDA3MTMgTVNGVCAwMDAwMDA5NykNClsgICAg MC4wMDAwMDBdIEFDUEk6IE1DRkcgMDAwMDAwMDBkZmZkNTQ2MCAwMDAzQyAodjAxIEFfTV9JXyBP RU1NQ0ZHICAwNDAwMDcxMyBNU0ZUIDAwMDAwMDk3KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogU1JB VCAwMDAwMDAwMGRmZmQ1NGEwIDAwMTEwICh2MDEgQU1EICAgIEhBTU1FUiAgIDAwMDAwMDAxIEFN RCAgMDAwMDAwMDEpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBTU0RUIDAwMDAwMDAwZGZmZDU1YjAg MDA0RjAgKHYwMSBBX01fSV8gUE9XRVJOT1cgMDAwMDAwMDEgQU1EICAwMDAwMDAwMSkNClsgICAg MC4wMDAwMDBdIFNSQVQ6IFBYTSAwIC0+IEFQSUMgMHgwMCAtPiBOb2RlIDANClsgICAgMC4wMDAw MDBdIFNSQVQ6IFBYTSAwIC0+IEFQSUMgMHgwMSAtPiBOb2RlIDANClsgICAgMC4wMDAwMDBdIFNS QVQ6IFBYTSAxIC0+IEFQSUMgMHgwMiAtPiBOb2RlIDENClsgICAgMC4wMDAwMDBdIFNSQVQ6IFBY TSAxIC0+IEFQSUMgMHgwMyAtPiBOb2RlIDENClsgICAgMC4wMDAwMDBdIFNSQVQ6IE5vZGUgMCBQ WE0gMCAwLWEwMDAwDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBOb2RlIDAgUFhNIDAgMTAwMDAwLTgw MDAwMDAwDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBOb2RlIDEgUFhNIDEgODAwMDAwMDAtZTAwMDAw MDANClsgICAgMC4wMDAwMDBdIFNSQVQ6IE5vZGUgMSBQWE0gMSAxMDAwMDAwMDAtMTIwMDAwMDAw DQpbICAgIDAuMDAwMDAwXSBTUkFUOiBOb2RlIDAgWzAsYTAwMDApICsgWzEwMDAwMCw4MDAwMDAw MCkgLT4gWzAsODAwMDAwMDApDQpbICAgIDAuMDAwMDAwXSBTUkFUOiBOb2RlIDEgWzgwMDAwMDAw LGUwMDAwMDAwKSArIFsxMDAwMDAwMDAsMTIwMDAwMDAwKSAtPiBbODAwMDAwMDAsMTIwMDAwMDAw KQ0KWyAgICAwLjAwMDAwMF0gSW5pdG1lbSBzZXR1cCBub2RlIDAgMDAwMDAwMDAwMDAwMDAwMC0w MDAwMDAwMDgwMDAwMDAwDQpbICAgIDAuMDAwMDAwXSAgIE5PREVfREFUQSBbMDAwMDAwMDAwMWJi MTI0MCAtIDAwMDAwMDAwMDFiYjMyM2ZdDQpbICAgIDAuMDAwMDAwXSBJbml0bWVtIHNldHVwIG5v ZGUgMSAwMDAwMDAwMDgwMDAwMDAwLTAwMDAwMDAxMjAwMDAwMDANClsgICAgMC4wMDAwMDBdICAg Tk9ERV9EQVRBIFswMDAwMDAwMTAwMDAwMDAwIC0gMDAwMDAwMDEwMDAwMWZmZl0NClsgICAgMC4w MDAwMDBdIFpvbmUgUEZOIHJhbmdlczoNClsgICAgMC4wMDAwMDBdICAgRE1BICAgICAgMHgwMDAw MDAwMSAtPiAweDAwMDAxMDAwDQpbICAgIDAuMDAwMDAwXSAgIERNQTMyICAgIDB4MDAwMDEwMDAg LT4gMHgwMDEwMDAwMA0KWyAgICAwLjAwMDAwMF0gICBOb3JtYWwgICAweDAwMTAwMDAwIC0+IDB4 MDAxMjAwMDANClsgICAgMC4wMDAwMDBdIE1vdmFibGUgem9uZSBzdGFydCBQRk4gZm9yIGVhY2gg bm9kZQ0KWyAgICAwLjAwMDAwMF0gZWFybHlfbm9kZV9tYXBbNF0gYWN0aXZlIFBGTiByYW5nZXMN ClsgICAgMC4wMDAwMDBdICAgICAwOiAweDAwMDAwMDAxIC0+IDB4MDAwMDAwOWYNClsgICAgMC4w MDAwMDBdICAgICAwOiAweDAwMDAwMTAwIC0+IDB4MDAwODAwMDANClsgICAgMC4wMDAwMDBdICAg ICAxOiAweDAwMDgwMDAwIC0+IDB4MDAwZGZmZDANClsgICAgMC4wMDAwMDBdICAgICAxOiAweDAw MTAwMDAwIC0+IDB4MDAxMjAwMDANClsgICAgMC4wMDAwMDBdIERldGVjdGVkIHVzZSBvZiBleHRl bmRlZCBhcGljIGlkcyBvbiBoeXBlcnRyYW5zcG9ydCBidXMNClsgICAgMC4wMDAwMDBdIERldGVj dGVkIHVzZSBvZiBleHRlbmRlZCBhcGljIGlkcyBvbiBoeXBlcnRyYW5zcG9ydCBidXMNClsgICAg MC4wMDAwMDBdIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4MjAwOA0KWyAgICAwLjAwMDAwMF0g QUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwMV0gbGFwaWNfaWRbMHgwMF0gZW5hYmxlZCkNClsgICAg MC4wMDAwMDBdIEFDUEk6IExBUElDIChhY3BpX2lkWzB4MDJdIGxhcGljX2lkWzB4MDFdIGVuYWJs ZWQpDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBMQVBJQyAoYWNwaV9pZFsweDAzXSBsYXBpY19pZFsw eDAyXSBlbmFibGVkKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogTEFQSUMgKGFjcGlfaWRbMHgwNF0g bGFwaWNfaWRbMHgwM10gZW5hYmxlZCkNClsgICAgMC4wMDAwMDBdIEFDUEk6IElPQVBJQyAoaWRb MHgwNF0gYWRkcmVzc1sweGZlYzAwMDAwXSBnc2lfYmFzZVswXSkNClsgICAgMC4wMDAwMDBdIElP QVBJQ1swXTogYXBpY19pZCA0LCB2ZXJzaW9uIDE3LCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAw LTIzDQpbICAgIDAuMDAwMDAwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAwIGds b2JhbF9pcnEgMiBkZmwgZGZsKQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1 cyAwIGJ1c19pcnEgOSBnbG9iYWxfaXJxIDkgaGlnaCBsZXZlbCkNClsgICAgMC4wMDAwMDBdIEFD UEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDE0IGdsb2JhbF9pcnEgMTQgaGlnaCBlZGdl KQ0KWyAgICAwLjAwMDAwMF0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19pcnEgMTUgZ2xv YmFsX2lycSAxNSBoaWdoIGVkZ2UpDQpbICAgIDAuMDAwMDAwXSBVc2luZyBBQ1BJIChNQURUKSBm b3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24NClsgICAgMC4wMDAwMDBdIEFDUEk6IEhQ RVQgaWQ6IDB4MTBkZTgyMDEgYmFzZTogMHhmZWQwMDAwMA0KWyAgICAwLjAwMDAwMF0gU01QOiBB bGxvd2luZyA0IENQVXMsIDAgaG90cGx1ZyBDUFVzDQpbICAgIDAuMDAwMDAwXSBBbGxvY2F0aW5n IFBDSSByZXNvdXJjZXMgc3RhcnRpbmcgYXQgZTAwMDAwMDAgKGdhcDogZTAwMDAwMDA6MWVjMDAw MDApDQpbICAgIDAuMDAwMDAwXSBzZXR1cF9wZXJjcHU6IE5SX0NQVVM6NCBucl9jcHVtYXNrX2Jp dHM6NCBucl9jcHVfaWRzOjQgbnJfbm9kZV9pZHM6Mg0KWyAgICAwLjAwMDAwMF0gUEVSQ1BVOiBF bWJlZGRlZCAyNyBwYWdlcy9jcHUgQGZmZmY4ODAwMDFjMDAwMDAgczc4NTkyIHI4MTkyIGQyMzgw OCB1MTA0ODU3Ng0KWyAgICAwLjAwMDAwMF0gcGNwdS1hbGxvYzogczc4NTkyIHI4MTkyIGQyMzgw OCB1MTA0ODU3NiBhbGxvYz0xKjIwOTcxNTINClsgICAgMC4wMDAwMDBdIHBjcHUtYWxsb2M6IFsw XSAwIDEgWzFdIDIgMyANClsgICAgMC4wMDAwMDBdIEJ1aWx0IDIgem9uZWxpc3RzIGluIE5vZGUg b3JkZXIsIG1vYmlsaXR5IGdyb3VwaW5nIG9uLiAgVG90YWwgcGFnZXM6IDEwMzIzMDINClsgICAg MC4wMDAwMDBdIFBvbGljeSB6b25lOiBOb3JtYWwNClsgICAgMC4wMDAwMDBdIEtlcm5lbCBjb21t YW5kIGxpbmU6IGZhc3Rib290IGVhcmx5cHJpbnRrPXNlcmlhbCx0dHlTMCwxMTUyMDAgY29uc29s ZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkxIGNyeXB0X3Jvb3Q9L2Rldi9tZDMgcmFkZW9uLm1v ZGVzZXQ9MSB2aWRlbz0xMjgweDEwMjQNClsgICAgMC4wMDAwMDBdIFBJRCBoYXNoIHRhYmxlIGVu dHJpZXM6IDQwOTYgKG9yZGVyOiAzLCAzMjc2OCBieXRlcykNClsgICAgMC4wMDAwMDBdIENoZWNr aW5nIGFwZXJ0dXJlLi4uDQpbICAgIDAuMDAwMDAwXSBObyBBR1AgYnJpZGdlIGZvdW5kDQpbICAg IDAuMDAwMDAwXSBOb2RlIDA6IGFwZXJ0dXJlIEAgMjAwMDAwMDAgc2l6ZSAzMiBNQg0KWyAgICAw LjAwMDAwMF0gQXBlcnR1cmUgcG9pbnRpbmcgdG8gZTgyMCBSQU0uIElnbm9yaW5nLg0KWyAgICAw LjAwMDAwMF0gWW91ciBCSU9TIGRvZXNuJ3QgbGVhdmUgYSBhcGVydHVyZSBtZW1vcnkgaG9sZQ0K WyAgICAwLjAwMDAwMF0gUGxlYXNlIGVuYWJsZSB0aGUgSU9NTVUgb3B0aW9uIGluIHRoZSBCSU9T IHNldHVwDQpbICAgIDAuMDAwMDAwXSBUaGlzIGNvc3RzIHlvdSA2NCBNQiBvZiBSQU0NClsgICAg MC4wMDAwMDBdIE1hcHBpbmcgYXBlcnR1cmUgb3ZlciA2NTUzNiBLQiBvZiBSQU0gQCAyMDAwMDAw MA0KWyAgICAwLjAwMDAwMF0gU3VidHJhY3QgKDU4IGVhcmx5IHJlc2VydmF0aW9ucykNClsgICAg MC4wMDAwMDBdICAgIzEgWzAwMDEwMDAwMDAgLSAwMDAxYmIwM2M4XSAgIFRFWFQgREFUQSBCU1MN ClsgICAgMC4wMDAwMDBdICAgIzIgWzAwMzdlYzgwMDAgLSAwMDM3ZmYwMDAwXSAgICAgICAgIFJB TURJU0sNClsgICAgMC4wMDAwMDBdICAgIzMgWzAwMDFiYjEwMDAgLSAwMDAxYmIxMjM4XSAgICAg ICAgICAgICBCUksNClsgICAgMC4wMDAwMDBdICAgIzQgWzAwMDAwZmY3OTAgLSAwMDAwMTAwMDAw XSAgIEJJT1MgcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdICAgIzUgWzAwMDAwZmY3ODAgLSAwMDAw MGZmNzkwXSAgICBNUC10YWJsZSBtcGYNClsgICAgMC4wMDAwMDBdICAgIzYgWzAwMDAwOWZjMDAg LSAwMDAwMGYxNmYwXSAgIEJJT1MgcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdICAgIzcgWzAwMDAw ZjE4OGMgLSAwMDAwMGZmNzgwXSAgIEJJT1MgcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdICAgIzgg WzAwMDAwZjE2ZjAgLSAwMDAwMGYxODhjXSAgICBNUC10YWJsZSBtcGMNClsgICAgMC4wMDAwMDBd ICAgIzkgWzAwMDAwMDEwMDAgLSAwMDAwMDAzMDAwXSAgICAgIFRSQU1QT0xJTkUNClsgICAgMC4w MDAwMDBdICAgIzEwIFswMDAwMDA4MDAwIC0gMDAwMDAwYzAwMF0gICAgICAgICBQR1RBQkxFDQpb ICAgIDAuMDAwMDAwXSAgICMxMSBbMDAwMDAwYzAwMCAtIDAwMDAwMGQwMDBdICAgICAgICAgUEdU QUJMRQ0KWyAgICAwLjAwMDAwMF0gICAjMTIgWzAwMDFiYjEyNDAgLSAwMDAxYmIzMjQwXSAgICAg ICBOT0RFX0RBVEENClsgICAgMC4wMDAwMDBdICAgIzEzIFswMTAwMDAwMDAwIC0gMDEwMDAwMjAw MF0gICAgICAgTk9ERV9EQVRBDQpbICAgIDAuMDAwMDAwXSAgICMxNCBbMDAwMWJiMzI0MCAtIDAw MDFiYjQyNDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMTUgWzAwMDFiYjA0 MDAgLSAwMDAxYmIwNTgwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzE2IFsw MDgwMDAwMDAwIC0gMDA4MDAwMDE4MF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAg ICMxNyBbMDAwMjNiNTAwMCAtIDAwMDIzYjYwMDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAw MDAwMF0gICAjMTggWzAwMDIzYjYwMDAgLSAwMDAyM2I3MDAwXSAgICAgICAgIEJPT1RNRU0NClsg ICAgMC4wMDAwMDBdICAgIzE5IFswMDAyNDAwMDAwIC0gMDAwNDAwMDAwMF0gICAgICAgIE1FTU1B UCAwDQpbICAgIDAuMDAwMDAwXSAgICMyMCBbMDEwMDIwMDAwMCAtIDAxMDIwMDAwMDBdICAgICAg ICBNRU1NQVAgMQ0KWyAgICAwLjAwMDAwMF0gICAjMjEgWzAwMDFiYjA1ODAgLSAwMDAxYmIwNzAw XSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzIyIFswMDAxYmI0MjQwIC0gMDAw MWJjMDI0MF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMyMyBbMDA4MDAwMDE4 MCAtIDAwODAwMGMxODBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMjQgWzAw ODAwMGMxODAgLSAwMDgwMDBmMTgwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAg IzI1IFswMDAxYmMxMDAwIC0gMDAwMWJjMjAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAw MDAwXSAgICMyNiBbMDAwMWJiMDcwMCAtIDAwMDFiYjA3NDFdICAgICAgICAgQk9PVE1FTQ0KWyAg ICAwLjAwMDAwMF0gICAjMjcgWzAwMDFiYjA3ODAgLSAwMDAxYmIwN2MzXSAgICAgICAgIEJPT1RN RU0NClsgICAgMC4wMDAwMDBdICAgIzI4IFswMDAxYmIwODAwIC0gMDAwMWJiMGE2OF0gICAgICAg ICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMyOSBbMDAwMWJiMGE4MCAtIDAwMDFiYjBhZThd ICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMzAgWzAwMDFiYjBiMDAgLSAwMDAx YmIwYjY4XSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzMxIFswMDAxYmIwYjgw IC0gMDAwMWJiMGJlOF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMzMiBbMDAw MWJiMGMwMCAtIDAwMDFiYjBjNjhdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAj MzMgWzAwMDFiYjBjODAgLSAwMDAxYmIwY2U4XSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAw MDBdICAgIzM0IFswMDAxYmIwZDAwIC0gMDAwMWJiMGQ2OF0gICAgICAgICBCT09UTUVNDQpbICAg IDAuMDAwMDAwXSAgICMzNSBbMDAwMWJiMGQ4MCAtIDAwMDFiYjBkZThdICAgICAgICAgQk9PVE1F TQ0KWyAgICAwLjAwMDAwMF0gICAjMzYgWzAwMDFiYjBlMDAgLSAwMDAxYmIwZTY4XSAgICAgICAg IEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzM3IFswMDAxYmIwZTgwIC0gMDAwMWJiMGVlOF0g ICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICMzOCBbMDAwMWJiMGYwMCAtIDAwMDFi YjBmNjhdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjMzkgWzAwMDFiYjBmODAg LSAwMDAxYmIxMDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzQwIFswMDAx YmMwMjQwIC0gMDAwMWJjMDJjMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM0 MSBbMDAwMWMwMDAwMCAtIDAwMDFjMWIwMDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAw MF0gICAjNDIgWzAwMDFkMDAwMDAgLSAwMDAxZDFiMDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAg MC4wMDAwMDBdICAgIzQzIFswMDgwMjAwMDAwIC0gMDA4MDIxYjAwMF0gICAgICAgICBCT09UTUVN DQpbICAgIDAuMDAwMDAwXSAgICM0NCBbMDA4MDMwMDAwMCAtIDAwODAzMWIwMDBdICAgICAgICAg Qk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNDUgWzAwMDFiYzAyYzAgLSAwMDAxYmMwMmQwXSAg ICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzQ2IFswMDAxYmMwMzAwIC0gMDAwMWJj MDMxMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM0NyBbMDAwMWJjMDM0MCAt IDAwMDFiYzAzNTBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNDggWzAwMDFi YzAzODAgLSAwMDAxYmMwM2EwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzQ5 IFswMDAxYmMwM2MwIC0gMDAwMWJjMDUwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAw XSAgICM1MCBbMDAwMWJjMDUwMCAtIDAwMDFiYzA1NjBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAw LjAwMDAwMF0gICAjNTEgWzAwMDFiYzA1ODAgLSAwMDAxYmMwNWUwXSAgICAgICAgIEJPT1RNRU0N ClsgICAgMC4wMDAwMDBdICAgIzUyIFswMDAxYmMyMDAwIC0gMDAwMWJjYTAwMF0gICAgICAgICBC T09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM1MyBbMDAyMDAwMDAwMCAtIDAwMjQwMDAwMDBdICAg ICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNTQgWzAwMDQwMDAwMDAgLSAwMDA4MDAw MDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBdICAgIzU1IFswMDAxYmNhMDAwIC0g MDAwMWJlYTAwMF0gICAgICAgICBCT09UTUVNDQpbICAgIDAuMDAwMDAwXSAgICM1NiBbMDAwMWMx YjAwMCAtIDAwMDFjNWIwMDBdICAgICAgICAgQk9PVE1FTQ0KWyAgICAwLjAwMDAwMF0gICAjNTcg WzAwMDAwMGQwMDAgLSAwMDAwMDE1MDAwXSAgICAgICAgIEJPT1RNRU0NClsgICAgMC4wMDAwMDBd IE1lbW9yeTogMzk4OTA0NGsvNDcxODU5MmsgYXZhaWxhYmxlICg1NTI1ayBrZXJuZWwgY29kZSwg NTI0ODcyayBhYnNlbnQsIDIwNDY3NmsgcmVzZXJ2ZWQsIDUzNjdrIGRhdGEsIDU2NGsgaW5pdCkN ClsgICAgMC4wMDAwMDBdIFNMVUI6IEdlbnNsYWJzPTE0LCBIV2FsaWduPTY0LCBPcmRlcj0wLTMs IE1pbk9iamVjdHM9MCwgQ1BVcz00LCBOb2Rlcz0yDQpbICAgIDAuMDAwMDAwXSBIaWVyYXJjaGlj YWwgUkNVIGltcGxlbWVudGF0aW9uLg0KWyAgICAwLjAwMDAwMF0gCUNPTkZJR19SQ1VfRkFOT1VU IHNldCB0byBub24tZGVmYXVsdCB2YWx1ZSBvZiA0DQpbICAgIDAuMDAwMDAwXSAJUkNVIGR5bnRp Y2staWRsZSBncmFjZS1wZXJpb2QgYWNjZWxlcmF0aW9uIGlzIGVuYWJsZWQuDQpbICAgIDAuMDAw MDAwXSAJVmVyYm9zZSBzdGFsbGVkLUNQVXMgZGV0ZWN0aW9uIGlzIGRpc2FibGVkLg0KWyAgICAw LjAwMDAwMF0gTlJfSVJRUzo0MzUyIG5yX2lycXM6NzEyDQpbICAgIDAuMDAwMDAwXSBFeHRlbmRl ZCBDTU9TIHllYXI6IDIwMDANClsgICAgMC4wMDAwMDBdIENvbnNvbGU6IGNvbG91ciBWR0ErIDgw eDI1DQpbICAgIDAuMDAwMDAwXSBjb25zb2xlIFt0dHkxXSBlbmFibGVkLCBib290Y29uc29sZSBk aXNhYmxlZA0KWyAgICAwLjAwMDAwMF0gY29uc29sZSBbdHR5UzBdIGVuYWJsZWQNClsgICAgMC4w MDAwMDBdIEZhc3QgVFNDIGNhbGlicmF0aW9uIHVzaW5nIFBJVA0KWyAgICAwLjAwMDAwMF0gRGV0 ZWN0ZWQgMjU5OS45ODIgTUh6IHByb2Nlc3Nvci4NClsgICAgMC4wMjAwMTFdIENhbGlicmF0aW5n IGRlbGF5IGxvb3AgKHNraXBwZWQpLCB2YWx1ZSBjYWxjdWxhdGVkIHVzaW5nIHRpbWVyIGZyZXF1 ZW5jeS4uIDUxOTkuOTYgQm9nb01JUFMgKGxwaj0yNTk5OTgyMCkNClsgICAgMC4wMzAwMDJdIHBp ZF9tYXg6IGRlZmF1bHQ6IDMyNzY4IG1pbmltdW06IDMwMQ0KWyAgICAwLjAzNTE5N10gU2VjdXJp dHkgRnJhbWV3b3JrIGluaXRpYWxpemVkDQpbICAgIDAuMDQwMjYxXSBEZW50cnkgY2FjaGUgaGFz aCB0YWJsZSBlbnRyaWVzOiA1MjQyODggKG9yZGVyOiAxMCwgNDE5NDMwNCBieXRlcykNClsgICAg MC4wNTAzOTldIElub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMjYyMTQ0IChvcmRlcjog OSwgMjA5NzE1MiBieXRlcykNClsgICAgMC4wNTg1NjZdIE1vdW50LWNhY2hlIGhhc2ggdGFibGUg ZW50cmllczogMjU2DQpbICAgIDAuMDYwMTYxXSBDUFU6IFBoeXNpY2FsIFByb2Nlc3NvciBJRDog MA0KWyAgICAwLjA2NDE3Nl0gQ1BVOiBQcm9jZXNzb3IgQ29yZSBJRDogMA0KWyAgICAwLjA3MDAw Ml0gbWNlOiBDUFUgc3VwcG9ydHMgNSBNQ0UgYmFua3MNClsgICAgMC4wNzQwMjJdIHVzaW5nIEMx RSBhd2FyZSBpZGxlIHJvdXRpbmUNClsgICAgMC4wNzc5NTBdIFBlcmZvcm1hbmNlIEV2ZW50czog QU1EIFBNVSBkcml2ZXIuDQpbICAgIDAuMDgxNTAxXSAuLi4gdmVyc2lvbjogICAgICAgICAgICAg ICAgMA0KWyAgICAwLjA4NTUxMV0gLi4uIGJpdCB3aWR0aDogICAgICAgICAgICAgIDQ4DQpbICAg IDAuMDkwMDAxXSAuLi4gZ2VuZXJpYyByZWdpc3RlcnM6ICAgICAgNA0KWyAgICAwLjA5NDAxNl0g Li4uIHZhbHVlIG1hc2s6ICAgICAgICAgICAgIDAwMDBmZmZmZmZmZmZmZmYNClsgICAgMC4xMDAw MDFdIC4uLiBtYXggcGVyaW9kOiAgICAgICAgICAgICAwMDAwN2ZmZmZmZmZmZmZmDQpbICAgIDAu MTA1NDY5XSAuLi4gZml4ZWQtcHVycG9zZSBldmVudHM6ICAgMA0KWyAgICAwLjExMDAwMV0gLi4u IGV2ZW50IG1hc2s6ICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMGYNClsgICAgMC4xMTUzMzZd IEZyZWVpbmcgU01QIGFsdGVybmF0aXZlczogMjBrIGZyZWVkDQpbICAgIDAuMTIwMDEyXSBBQ1BJ OiBDb3JlIHJldmlzaW9uIDIwMTAwNzAyDQpbICAgIDAuMTMwODc4XSBTZXR0aW5nIEFQSUMgcm91 dGluZyB0byBmbGF0DQpbICAgIDAuMTM1MjMxXSAuLlRJTUVSOiB2ZWN0b3I9MHgzMCBhcGljMT0w IHBpbjE9MiBhcGljMj0tMSBwaW4yPS0xDQpbICAgIDAuMjQxMjY3XSBDUFUwOiBEdWFsLUNvcmUg QU1EIE9wdGVyb24odG0pIFByb2Nlc3NvciAyMjE4IHN0ZXBwaW5nIDAyDQpbICAgIDAuMjUwMDAw XSBOTUkgd2F0Y2hkb2cgZW5hYmxlZCwgdGFrZXMgb25lIGh3LXBtdSBjb3VudGVyLg0KWyAgICAw LjI1MDAwMF0gQm9vdGluZyBOb2RlICAgMCwgUHJvY2Vzc29ycyAgIzENClsgICAgMC40MTAxMDhd IE5NSSB3YXRjaGRvZyBlbmFibGVkLCB0YWtlcyBvbmUgaHctcG11IGNvdW50ZXIuDQpbICAgIDAu NDE1OTUzXSAgT2suDQpbICAgIDAuNDE3ODA2XSBCb290aW5nIE5vZGUgICAxLCBQcm9jZXNzb3Jz ICAjMg0KWyAgICAwLjU4MDA4Ml0gTk1JIHdhdGNoZG9nIGVuYWJsZWQsIHRha2VzIG9uZSBody1w bXUgY291bnRlci4NClsgICAgMC41ODU5MjBdICAjMyBPay4NClsgICAgMC43NDAxMzJdIE5NSSB3 YXRjaGRvZyBlbmFibGVkLCB0YWtlcyBvbmUgaHctcG11IGNvdW50ZXIuDQpbICAgIDAuNzQ1NzIw XSBCcm91Z2h0IHVwIDQgQ1BVcw0KWyAgICAwLjc0ODY5N10gVG90YWwgb2YgNCBwcm9jZXNzb3Jz IGFjdGl2YXRlZCAoMjA4MDAuMTkgQm9nb01JUFMpLg0KWyAgICAwLjc1MDM5Ml0gTkVUOiBSZWdp c3RlcmVkIHByb3RvY29sIGZhbWlseSAxNg0KWyAgICAwLjc2MDAyM10gVE9NOiAwMDAwMDAwMGUw MDAwMDAwIGFrYSAzNTg0TQ0KWyAgICAwLjc2NDIwN10gVE9NMjogMDAwMDAwMDEyMDAwMDAwMCBh a2EgNDYwOE0NClsgICAgMC43Njg0OTVdIEFDUEk6IGJ1cyB0eXBlIHBjaSByZWdpc3RlcmVkDQpb ICAgIDAuNzcwMDI2XSBQQ0k6IE1NQ09ORklHIGZvciBkb21haW4gMDAwMCBbYnVzIDAwLWZmXSBh dCBbbWVtIDB4ZjAwMDAwMDAtMHhmZmZmZmZmZl0gKGJhc2UgMHhmMDAwMDAwMCkNClsgICAgMC43 ODAwMDJdIFBDSTogbm90IHVzaW5nIE1NQ09ORklHDQpbICAgIDAuNzgzNDk5XSBQQ0k6IFVzaW5n IGNvbmZpZ3VyYXRpb24gdHlwZSAxIGZvciBiYXNlIGFjY2Vzcw0KWyAgICAwLjgwMDA2Nl0gYmlv OiBjcmVhdGUgc2xhYiA8YmlvLTA+IGF0IDANClsgICAgMC44MDQwNDNdIEFDUEk6IEV4ZWN1dGVk IDEgYmxvY2tzIG9mIG1vZHVsZS1sZXZlbCBleGVjdXRhYmxlIEFNTCBjb2RlDQpbICAgIDAuODEz MjE2XSBBQ1BJOiBJbnRlcnByZXRlciBlbmFibGVkDQpbICAgIDAuODIwMDAxXSBBQ1BJOiAoc3Vw cG9ydHMgUzAgUzUpDQpbICAgIDAuODIzNDc2XSBBQ1BJOiBVc2luZyBJT0FQSUMgZm9yIGludGVy cnVwdCByb3V0aW5nDQpbICAgIDAuODI4NDc0XSBQQ0k6IE1NQ09ORklHIGZvciBkb21haW4gMDAw MCBbYnVzIDAwLWZmXSBhdCBbbWVtIDB4ZjAwMDAwMDAtMHhmZmZmZmZmZl0gKGJhc2UgMHhmMDAw MDAwMCkNClsgICAgMC44NDQ0NDddIFtGaXJtd2FyZSBCdWddOiBQQ0k6IE1NQ09ORklHIGF0IFtt ZW0gMHhmMDAwMDAwMC0weGZmZmZmZmZmXSBub3QgcmVzZXJ2ZWQgaW4gQUNQSSBtb3RoZXJib2Fy ZCByZXNvdXJjZXMNClsgICAgMC44NTAwMDFdIFBDSTogbm90IHVzaW5nIE1NQ09ORklHDQpbICAg IDAuODYwNDM4XSBBQ1BJIFdhcm5pbmc6IEluY29ycmVjdCBjaGVja3N1bSBpbiB0YWJsZSBbT0VN Ql0gLSAweEVDLCBzaG91bGQgYmUgMHhFNyAoMjAxMDA3MDIvdGJ1dGlscy0zMTQpDQpbICAgIDAu ODcyMjU0XSBQQ0k6IElnbm9yaW5nIGhvc3QgYnJpZGdlIHdpbmRvd3MgZnJvbSBBQ1BJOyBpZiBu ZWNlc3NhcnksIHVzZSAicGNpPXVzZV9jcnMiIGFuZCByZXBvcnQgYSBidWcNClsgICAgMC44ODAy MjddIEFDUEk6IFBDSSBSb290IEJyaWRnZSBbUENJMF0gKGRvbWFpbiAwMDAwIFtidXMgMDAtZmZd KQ0KWyAgICAwLjg5MTE0OV0gcGNpIDAwMDA6MDA6MDYuMDogUENJIGJyaWRnZSB0byBbYnVzIDA1 LTA1XSAoc3VidHJhY3RpdmUgZGVjb2RlKQ0KWyAgICAwLjkwMDE2Nl0gcGNpIDAwMDA6MDQ6MDAu MDogZGlzYWJsaW5nIEFTUE0gb24gcHJlLTEuMSBQQ0llIGRldmljZS4gIFlvdSBjYW4gZW5hYmxl IGl0IHdpdGggJ3BjaWVfYXNwbT1mb3JjZScNClsgICAgMC45MTAwMDddIHBjaSAwMDAwOjAwOjBi LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNC0wNF0NClsgICAgMC45MzAwMDhdIHBjaSAwMDAwOjAw OjBjLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMy0wM10NClsgICAgMC45NTAwMDddIHBjaSAwMDAw OjAwOjBkLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMi0wMl0NClsgICAgMC45NTUzNjVdIHBjaSAw MDAwOjAxOjAwLjA6IGRpc2FibGluZyBBU1BNIG9uIHByZS0xLjEgUENJZSBkZXZpY2UuICBZb3Ug Y2FuIGVuYWJsZSBpdCB3aXRoICdwY2llX2FzcG09Zm9yY2UnDQpbICAgIDAuOTYwMDA1XSBwY2kg MDAwMDowMDowZi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDEtMDFdDQpbICAgIDAuOTcwNzI0XSBB Q1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xOS0FdIChJUlFzIDE2IDE3IDE4IDE5KSAqMTENClsg ICAgMC45ODE5NzZdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQl0gKElSUXMgMTYgMTcg MTggMTkpICowLCBkaXNhYmxlZC4NClsgICAgMC45OTE3MTNdIEFDUEk6IFBDSSBJbnRlcnJ1cHQg TGluayBbTE5LQ10gKElSUXMgMTYgMTcgMTggMTkpICoxMA0KWyAgICAwLjk5ODIxNl0gQUNQSTog UENJIEludGVycnVwdCBMaW5rIFtMTktEXSAoSVJRcyAxNiAxNyAxOCAxOSkgKjAsIGRpc2FibGVk Lg0KWyAgICAxLjAwMjg3OF0gQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTkVBXSAoSVJRcyAx NiAxNyAxOCAxOSkgKjEwDQpbICAgIDEuMDExOTgyXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsg W0xORUJdIChJUlFzIDE2IDE3IDE4IDE5KSAqMTANClsgICAgMS4wMTg1MDFdIEFDUEk6IFBDSSBJ bnRlcnJ1cHQgTGluayBbTE5FQ10gKElSUXMgMTYgMTcgMTggMTkpICowLCBkaXNhYmxlZC4NClsg ICAgMS4wMjI4NzRdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5FRF0gKElSUXMgMTYgMTcg MTggMTkpICo1DQpbICAgIDEuMDMxOTA3XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xVQjBd IChJUlFzIDIwIDIxIDIyIDIzKSAqMTANClsgICAgMS4wMzg0MjVdIEFDUEk6IFBDSSBJbnRlcnJ1 cHQgTGluayBbTE1BRF0gKElSUXMgMjAgMjEgMjIgMjMpICowLCBkaXNhYmxlZC4NClsgICAgMS4w NDI4OTBdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTFVCMl0gKElSUXMgMjAgMjEgMjIgMjMp ICoxMQ0KWyAgICAxLjA1MTk4OF0gQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTUFDXSAoSVJR cyAyMCAyMSAyMiAyMykgKjAsIGRpc2FibGVkLg0KWyAgICAxLjA2MDMxMl0gQUNQSTogUENJIElu dGVycnVwdCBMaW5rIFtMQVpBXSAoSVJRcyAyMCAyMSAyMiAyMykgKjExDQpbICAgIDEuMDY2ODE1 XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xTTUJdIChJUlFzIDIwIDIxIDIyIDIzKSAqMTEN ClsgICAgMS4wNzE5NzRdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTFBNVV0gKElSUXMgMjAg MjEgMjIgMjMpICo1DQpbICAgIDEuMDgwMTA4XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xT QTBdIChJUlFzIDIwIDIxIDIyIDIzKSAqNQ0KWyAgICAxLjA4NjU0MF0gQUNQSTogUENJIEludGVy cnVwdCBMaW5rIFtMU0ExXSAoSVJRcyAyMCAyMSAyMiAyMykgKjEwDQpbICAgIDEuMDkxOTgzXSBB Q1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xBVEFdIChJUlFzIDIwIDIxIDIyIDIzKSAqMCwgZGlz YWJsZWQuDQpbICAgIDEuMTAwMzE1XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xTQTJdIChJ UlFzIDIwIDIxIDIyIDIzKSAqMTANClsgICAgMS4xMDY3NTBdIHZnYWFyYjogZGV2aWNlIGFkZGVk OiBQQ0k6MDAwMDowMTowMC4wLGRlY29kZXM9aW8rbWVtLG93bnM9aW8rbWVtLGxvY2tzPW5vbmUN ClsgICAgMS4xMTAwMDJdIHZnYWFyYjogbG9hZGVkDQpbICAgIDEuMTEyNzg5XSBTQ1NJIHN1YnN5 c3RlbSBpbml0aWFsaXplZA0KWyAgICAxLjEyMDAxN10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcg aW50ZXJmYWNlIGRyaXZlciB1c2Jmcw0KWyAgICAxLjEyNTQ5OF0gdXNiY29yZTogcmVnaXN0ZXJl ZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBodWINClsgICAgMS4xMzAwMTJdIHVzYmNvcmU6IHJlZ2lz dGVyZWQgbmV3IGRldmljZSBkcml2ZXIgdXNiDQpbICAgIDEuMTM1MjQwXSBBZHZhbmNlZCBMaW51 eCBTb3VuZCBBcmNoaXRlY3R1cmUgRHJpdmVyIFZlcnNpb24gMS4wLjIzLg0KWyAgICAxLjE0MDAw MV0gUENJOiBVc2luZyBBQ1BJIGZvciBJUlEgcm91dGluZw0KWyAgICAxLjE0NDI2NV0gTmV0TGFi ZWw6IEluaXRpYWxpemluZw0KWyAgICAxLjE1MDAwMl0gTmV0TGFiZWw6ICBkb21haW4gaGFzaCBz aXplID0gMTI4DQpbICAgIDEuMTU0MzY2XSBOZXRMYWJlbDogIHByb3RvY29scyA9IFVOTEFCRUxF RCBDSVBTT3Y0DQpbICAgIDEuMTYwMDExXSBOZXRMYWJlbDogIHVubGFiZWxlZCB0cmFmZmljIGFs bG93ZWQgYnkgZGVmYXVsdA0KWyAgICAxLjE2NTU4OV0gSFBFVDogMyB0aW1lcnMgaW4gdG90YWws IDAgdGltZXJzIHdpbGwgYmUgdXNlZCBmb3IgcGVyLWNwdSB0aW1lcg0KWyAgICAxLjE3MDAwNV0g aHBldDA6IGF0IE1NSU8gMHhmZWQwMDAwMCwgSVJRcyAyLCA4LCAzMQ0KWyAgICAxLjE3NTExMV0g aHBldDA6IDMgY29tcGFyYXRvcnMsIDMyLWJpdCAyNS4wMDAwMDAgTUh6IGNvdW50ZXINClsgICAg MS4yMTAwMzBdIFN3aXRjaGluZyB0byBjbG9ja3NvdXJjZSBocGV0DQpbICAgIDEuMjE0MDUyXSBG Uy1DYWNoZTogTG9hZGVkDQpbICAgIDEuMjE0MDU0XSBDYWNoZUZpbGVzOiBMb2FkZWQNClsgICAg MS4yMTYxODhdIHBucDogUG5QIEFDUEkgaW5pdA0KWyAgICAxLjIxOTI2MF0gQUNQSTogYnVzIHR5 cGUgcG5wIHJlZ2lzdGVyZWQNClsgICAgMS4yMjcyMTldIHBucDogUG5QIEFDUEk6IGZvdW5kIDE0 IGRldmljZXMNClsgICAgMS4yMzE0MjRdIEFDUEk6IEFDUEkgYnVzIHR5cGUgcG5wIHVucmVnaXN0 ZXJlZA0KWyAgICAxLjIzNjA1N10gc3lzdGVtIDAwOjA2OiBbaW8gIDB4MDRkMC0weDA0ZDFdIGhh cyBiZWVuIHJlc2VydmVkDQpbICAgIDEuMjQyMDA4XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgwN2Iw LTB4MDdkZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAgMS4yNDc5MjZdIHN5c3RlbSAwMDowNjog W2lvICAweDA4MDAtMHgwODBmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjI1Mzg3OV0gc3lz dGVtIDAwOjA2OiBbaW8gIDB4MGJiMC0weDBiZGZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgIDEu MjU5OTc5XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgyMDAwLTB4MjA3Zl0gaGFzIGJlZW4gcmVzZXJ2 ZWQNClsgICAgMS4yNjU5MzZdIHN5c3RlbSAwMDowNjogW2lvICAweDIwODAtMHgyMGZmXSBoYXMg YmVlbiByZXNlcnZlZA0KWyAgICAxLjI3MTg3Ml0gc3lzdGVtIDAwOjA2OiBbaW8gIDB4MjQwMC0w eDI0N2ZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgIDEuMjc3NzkwXSBzeXN0ZW0gMDA6MDY6IFtp byAgMHgyNDgwLTB4MjRmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAgMS4yODM3NDZdIHN5c3Rl bSAwMDowNjogW2lvICAweDI4MDAtMHgyODdmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjI4 OTY2NF0gc3lzdGVtIDAwOjA2OiBbaW8gIDB4Mjg4MC0weDI4ZmZdIGhhcyBiZWVuIHJlc2VydmVk DQpbICAgIDEuMjk1NjE4XSBzeXN0ZW0gMDA6MDY6IFtpbyAgMHgyYzAwLTB4MmM3Zl0gaGFzIGJl ZW4gcmVzZXJ2ZWQNClsgICAgMS4zMDE1NTZdIHN5c3RlbSAwMDowNjogW2lvICAweDJjODAtMHgy Y2ZmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjMwNzQ3NV0gc3lzdGVtIDAwOjA2OiBbbWVt IDB4MDAwZDAwMDAtMHgwMDBkM2ZmZiB3aW5kb3ddIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgIDEu MzE0NzI3XSBzeXN0ZW0gMDA6MDY6IFttZW0gMHgwMDBkNDAwMC0weDAwMGQ3ZmZmIHdpbmRvd10g aGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAgMS4zMjIwOTVdIHN5c3RlbSAwMDowNjogW21lbSAweDAw MGRlMDAwLTB4MDAwZGZmZmYgd2luZG93XSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjMyOTMy MV0gc3lzdGVtIDAwOjA2OiBbbWVtIDB4ZmVlMDEwMDAtMHhmZWVmZmZmZl0gaGFzIGJlZW4gcmVz ZXJ2ZWQNClsgICAgMS4zMzU5NzFdIHN5c3RlbSAwMDowNjogW21lbSAweGVmYTgwMDAwLTB4ZWZh YmZmZmZdIGhhcyBiZWVuIHJlc2VydmVkDQpbICAgIDEuMzQyNjAxXSBzeXN0ZW0gMDA6MDY6IFtt ZW0gMHhmZmIwMDAwMC0weGZmYmZmZmZmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjM0OTIx MV0gc3lzdGVtIDAwOjA2OiBbbWVtIDB4ZmZmMDAwMDAtMHhmZmZmZmZmZl0gaGFzIGJlZW4gcmVz ZXJ2ZWQNClsgICAgMS4zNTU4NjRdIHN5c3RlbSAwMDowODogW21lbSAweGZlYzAwMDAwLTB4ZmVj MDBmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZA0KWyAgICAxLjM2Mjg0NV0gc3lzdGVtIDAwOjA4 OiBbbWVtIDB4ZmVlMDAwMDAtMHhmZWUwMGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNClsgICAgMS4z Njk0NThdIHN5c3RlbSAwMDowYzogW2lvICAweDAyOTAtMHgwMjk3XSBoYXMgYmVlbiByZXNlcnZl ZA0KWyAgICAxLjM3NTQxNF0gc3lzdGVtIDAwOjBkOiBbbWVtIDB4MDAwMDAwMDAtMHgwMDA5ZmZm Zl0gY291bGQgbm90IGJlIHJlc2VydmVkDQpbICAgIDEuMzgyMzk4XSBzeXN0ZW0gMDA6MGQ6IFtt ZW0gMHgwMDBjMDAwMC0weDAwMGNmZmZmXSBoYXMgYmVlbiByZXNlcnZlZA0KWyAgICAxLjM4OTE5 MF0gc3lzdGVtIDAwOjBkOiBbbWVtIDB4MDAwZTAwMDAtMHgwMDBmZmZmZl0gY291bGQgbm90IGJl IHJlc2VydmVkDQpbICAgIDEuMzk2MTg3XSBzeXN0ZW0gMDA6MGQ6IFttZW0gMHgwMDEwMDAwMC0w eGRmZmZmZmZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQNClsgICAgMS40MDMxNjRdIHN5c3RlbSAw MDowZDogW21lbSAweGZlYzAwMDAwLTB4ZmZmZmZmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZA0K WyAgICAxLjQxOTQ1MV0gcGNpIDAwMDA6MDA6MDYuMDogUENJIGJyaWRnZSB0byBbYnVzIDA1LTA1 XQ0KWyAgICAxLjQyNDcwOV0gcGNpIDAwMDA6MDA6MDYuMDogICBicmlkZ2Ugd2luZG93IFtpbyAg ZGlzYWJsZWRdDQpbICAgIDEuNDMwMzg1XSBwY2kgMDAwMDowMDowNi4wOiAgIGJyaWRnZSB3aW5k b3cgW21lbSAweGVmZjAwMDAwLTB4ZWZmZmZmZmZdDQpbICAgIDEuNDM3MTY4XSBwY2kgMDAwMDow MDowNi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGVlZjAwMDAwLTB4ZWVmZmZmZmYgcHJlZl0N ClsgICAgMS40NDQ0MjddIHBjaSAwMDAwOjAwOjBiLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNC0w NF0NClsgICAgMS40NDk2NTNdIHBjaSAwMDAwOjAwOjBiLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8g IDB4ZTAwMC0weGVmZmZdDQpbICAgIDEuNDU1OTAyXSBwY2kgMDAwMDowMDowYi4wOiAgIGJyaWRn ZSB3aW5kb3cgW21lbSAweGVmZTAwMDAwLTB4ZWZlZmZmZmZdDQpbICAgIDEuNDYyNzEzXSBwY2kg MDAwMDowMDowYi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSBwcmVmIGRpc2FibGVkXQ0KWyAgICAx LjQ2ODgwNF0gcGNpIDAwMDA6MDA6MGMuMDogUENJIGJyaWRnZSB0byBbYnVzIDAzLTAzXQ0KWyAg ICAxLjQ3NDA2NV0gcGNpIDAwMDA6MDA6MGMuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgZGlzYWJs ZWRdDQpbICAgIDEuNDc5NzI1XSBwY2kgMDAwMDowMDowYy4wOiAgIGJyaWRnZSB3aW5kb3cgW21l bSAweGVmZDAwMDAwLTB4ZWZkZmZmZmZdDQpbICAgIDEuNDg2NTQ2XSBwY2kgMDAwMDowMDowYy4w OiAgIGJyaWRnZSB3aW5kb3cgW21lbSBwcmVmIGRpc2FibGVkXQ0KWyAgICAxLjQ5MjY1N10gcGNp IDAwMDA6MDA6MGQuMDogUENJIGJyaWRnZSB0byBbYnVzIDAyLTAyXQ0KWyAgICAxLjQ5Nzg4Ml0g cGNpIDAwMDA6MDA6MGQuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgZGlzYWJsZWRdDQpbICAgIDEu NTAzNTc1XSBwY2kgMDAwMDowMDowZC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGVmYzAwMDAw LTB4ZWZjZmZmZmZdDQpbICAgIDEuNTEwMzgwXSBDbG9ja3NvdXJjZSB0c2MgdW5zdGFibGUgKGRl bHRhID0gNjMxNjMzNDg5IG5zKQ0KWyAgICAxLjUxNjA2OF0gcGNpIDAwMDA6MDA6MGQuMDogICBi cmlkZ2Ugd2luZG93IFttZW0gcHJlZiBkaXNhYmxlZF0NClsgICAgMS41MjIxOTVdIHBjaSAwMDAw OjAwOjBmLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMS0wMV0NClsgICAgMS41Mjc0MjddIHBjaSAw MDAwOjAwOjBmLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4ZDAwMC0weGRmZmZdDQpbICAgIDEu NTMzNTU1XSBwY2kgMDAwMDowMDowZi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGVmYjAwMDAw LTB4ZWZiZmZmZmZdDQpbICAgIDEuNTQwMzY4XSBwY2kgMDAwMDowMDowZi4wOiAgIGJyaWRnZSB3 aW5kb3cgW21lbSAweGUwMDAwMDAwLTB4ZTdmZmZmZmYgNjRiaXQgcHJlZl0NClsgICAgMS41NDgy MTFdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMg0KWyAgICAxLjU1Mjc2NF0gSVAg cm91dGUgY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAxMzEwNzIgKG9yZGVyOiA4LCAxMDQ4NTc2 IGJ5dGVzKQ0KWyAgICAxLjU2MTcwOV0gVENQIGVzdGFibGlzaGVkIGhhc2ggdGFibGUgZW50cmll czogNTI0Mjg4IChvcmRlcjogMTEsIDgzODg2MDggYnl0ZXMpDQpbICAgIDEuNTczOTUxXSBUQ1Ag YmluZCBoYXNoIHRhYmxlIGVudHJpZXM6IDY1NTM2IChvcmRlcjogOCwgMTA0ODU3NiBieXRlcykN ClsgICAgMS41ODE0MDJdIFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJlZCAoZXN0YWJsaXNoZWQg NTI0Mjg4IGJpbmQgNjU1MzYpDQpbICAgIDEuNTg4MDE5XSBUQ1AgcmVubyByZWdpc3RlcmVkDQpb ICAgIDEuNTkxMjE0XSBVRFAgaGFzaCB0YWJsZSBlbnRyaWVzOiAyMDQ4IChvcmRlcjogNCwgNjU1 MzYgYnl0ZXMpDQpbICAgIDEuNTk3Mjc4XSBVRFAtTGl0ZSBoYXNoIHRhYmxlIGVudHJpZXM6IDIw NDggKG9yZGVyOiA0LCA2NTUzNiBieXRlcykNClsgICAgMS42MDM4ODddIE5FVDogUmVnaXN0ZXJl ZCBwcm90b2NvbCBmYW1pbHkgMQ0KWyAgICAxLjYwODM4NV0gUlBDOiBSZWdpc3RlcmVkIHVkcCB0 cmFuc3BvcnQgbW9kdWxlLg0KWyAgICAxLjYxMzExNV0gUlBDOiBSZWdpc3RlcmVkIHRjcCB0cmFu c3BvcnQgbW9kdWxlLg0KWyAgICAxLjYxNzgzMF0gUlBDOiBSZWdpc3RlcmVkIHRjcCBORlN2NC4x IGJhY2tjaGFubmVsIHRyYW5zcG9ydCBtb2R1bGUuDQpbICAgIDEuNjQ2MDA4XSBwY2kgMDAwMDow MDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1TSSBNYXBwaW5nDQpbICAgIDEuNjUxNTU5XSBwY2kg MDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1TSSBNYXBwaW5nDQpbICAgIDEuNjU3MDg2 XSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1TSSBNYXBwaW5nDQpbICAgIDEu NjYyNjQyXSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1TSSBNYXBwaW5nDQpb ICAgIDEuNjY4MTc1XSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1TSSBNYXBw aW5nDQpbICAgIDEuNjczNzQyXSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVkIEhUIE1T SSBNYXBwaW5nDQpbICAgIDEuNjc5Mjg0XSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBlbmFibGVk IEhUIE1TSSBNYXBwaW5nDQpbICAgIDEuNjg1NDc1XSBwY2kgMDAwMDowMDowMC4wOiBGb3VuZCBl bmFibGVkIEhUIE1TSSBNYXBwaW5nDQpbICAgIDEuNjkxMDQzXSBwY2kgMDAwMDowMDowMC4wOiBG b3VuZCBlbmFibGVkIEhUIE1TSSBNYXBwaW5nDQpbICAgIDEuNjk2NjIzXSBVbnBhY2tpbmcgaW5p dHJhbWZzLi4uDQpbICAgIDEuNzIyNzAxXSBGcmVlaW5nIGluaXRyZCBtZW1vcnk6IDExODRrIGZy ZWVkDQpbICAgIDEuNzI3OTAxXSBQQ0ktRE1BOiBEaXNhYmxpbmcgQUdQLg0KWyAgICAxLjczMTY2 NF0gUENJLURNQTogYXBlcnR1cmUgYmFzZSBAIDIwMDAwMDAwIHNpemUgNjU1MzYgS0INClsgICAg MS43MzcyMzVdIFBDSS1ETUE6IHVzaW5nIEdBUlQgSU9NTVUuDQpbICAgIDEuNzQxMDE5XSBQQ0kt RE1BOiBSZXNlcnZpbmcgNjRNQiBvZiBJT01NVSBhcmVhIGluIHRoZSBBR1AgYXBlcnR1cmUNClsg ICAgMS43NTQxMjFdIEh1Z2VUTEIgcmVnaXN0ZXJlZCAyIE1CIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9j YXRlZCAwIHBhZ2VzDQpbICAgIDEuNzY0MDA2XSBWRlM6IERpc2sgcXVvdGFzIGRxdW90XzYuNS4y DQpbICAgIDEuNzY4MDM2XSBEcXVvdC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3Jk ZXIgMCwgNDA5NiBieXRlcykNClsgICAgMS43NzQ2MTFdIEZTLUNhY2hlOiBOZXRmcyAnbmZzJyBy ZWdpc3RlcmVkIGZvciBjYWNoaW5nDQpbICAgIDEuNzgwMTU1XSBTR0kgWEZTIHdpdGggQUNMcywg c2VjdXJpdHkgYXR0cmlidXRlcywgbGFyZ2UgYmxvY2svaW5vZGUgbnVtYmVycywgbm8gZGVidWcg ZW5hYmxlZA0KWyAgICAxLjc4OTY3OV0gU0dJIFhGUyBRdW90YSBNYW5hZ2VtZW50IHN1YnN5c3Rl bQ0KWyAgICAxLjc5NDE4M10gbXNnbW5pIGhhcyBiZWVuIHNldCB0byA3OTIyDQpbICAgIDEuNzk4 NzY5XSBCbG9jayBsYXllciBTQ1NJIGdlbmVyaWMgKGJzZykgZHJpdmVyIHZlcnNpb24gMC40IGxv YWRlZCAobWFqb3IgMjU0KQ0KWyAgICAxLjgwNjE5MV0gaW8gc2NoZWR1bGVyIG5vb3AgcmVnaXN0 ZXJlZA0KWyAgICAxLjgxMDIwOF0gaW8gc2NoZWR1bGVyIGNmcSByZWdpc3RlcmVkIChkZWZhdWx0 KQ0KWyAgICAxLjgxNTM0Ml0gcGNpZXBvcnQgMDAwMDowMDowYi4wOiBBQ1BJIF9PU0MgY29udHJv bCBncmFudGVkIGZvciAweDFkDQpbICAgIDEuODIxOTQyXSBwY2llcG9ydCAwMDAwOjAwOjBjLjA6 IEFDUEkgX09TQyBjb250cm9sIGdyYW50ZWQgZm9yIDB4MWQNClsgICAgMS44Mjg1MTZdIHBjaWVw b3J0IDAwMDA6MDA6MGQuMDogQUNQSSBfT1NDIGNvbnRyb2wgZ3JhbnRlZCBmb3IgMHgxZA0KWyAg ICAxLjgzNTA5Nl0gcGNpZXBvcnQgMDAwMDowMDowZi4wOiBBQ1BJIF9PU0MgY29udHJvbCBncmFu dGVkIGZvciAweDFkDQpbICAgIDEuODQyMDUzXSBpbnB1dDogUG93ZXIgQnV0dG9uIGFzIC9kZXZp Y2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1BOUDBDMEM6MDAvaW5wdXQvaW5wdXQwDQpbICAg IDEuODUwNDM4XSBBQ1BJOiBQb3dlciBCdXR0b24gW1BXUkJdDQpbICAgIDEuODU0MjAzXSBpbnB1 dDogUG93ZXIgQnV0dG9uIGFzIC9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFBXUkJOOjAwL2lucHV0 L2lucHV0MQ0KWyAgICAxLjg2MTYyM10gQUNQSTogUG93ZXIgQnV0dG9uIFtQV1JGXQ0KWyAgICAx Ljg2NTk2OF0gUmVhbCBUaW1lIENsb2NrIERyaXZlciB2MS4xMmINClsgICAgMS44NzAyMzJdIEhh bmdjaGVjazogc3RhcnRpbmcgaGFuZ2NoZWNrIHRpbWVyIDAuOS4xICh0aWNrIGlzIDE4MCBzZWNv bmRzLCBtYXJnaW4gaXMgNjAgc2Vjb25kcykuDQpbICAgIDEuODc5MTgwXSBIYW5nY2hlY2s6IFVz aW5nIGdldHJhd21vbm90b25pYygpLg0KWyAgICAxLjg4MzgwNl0gW2RybV0gSW5pdGlhbGl6ZWQg ZHJtIDEuMS4wIDIwMDYwODEwDQpbICAgIDEuODg4NDg3XSBbZHJtXSByYWRlb24ga2VybmVsIG1v ZGVzZXR0aW5nIGVuYWJsZWQuDQpbICAgIDEuODkzNzIxXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExp bmsgW0xORUJdIGVuYWJsZWQgYXQgSVJRIDE5DQpbICAgIDEuODk5NDc4XSByYWRlb24gMDAwMDow MTowMC4wOiBQQ0kgSU5UIEEgLT4gTGlua1tMTkVCXSAtPiBHU0kgMTkgKGxldmVsLCBsb3cpIC0+ IElSUSAxOQ0KWyAgICAxLjkwOTg3MV0gW2RybV0gaW5pdGlhbGl6aW5nIGtlcm5lbCBtb2Rlc2V0 dGluZyAoUlYzODAgMHgxMDAyOjB4NUI2MCkuDQpbICAgIDEuOTE2NjczXSBbZHJtXSByZWdpc3Rl ciBtbWlvIGJhc2U6IDB4RUZCRjAwMDANClsgICAgMS45MjEzMjJdIFtkcm1dIHJlZ2lzdGVyIG1t aW8gc2l6ZTogNjU1MzYNClsgICAgMS45MjYxNDJdIFtkcm1dIEdlbmVyYXRpb24gMiBQQ0kgaW50 ZXJmYWNlLCB1c2luZyBtYXggYWNjZXNzaWJsZSBtZW1vcnkNClsgICAgMS45MzI5NTldIHJhZGVv biAwMDAwOjAxOjAwLjA6IFZSQU06IDEyOE0gMHhFMDAwMDAwMCAtIDB4RTdGRkZGRkYgKDEyOE0g dXNlZCkNClsgICAgMS45NDAyODhdIHJhZGVvbiAwMDAwOjAxOjAwLjA6IEdUVDogNTEyTSAweEMw MDAwMDAwIC0gMHhERkZGRkZGRg0KWyAgICAxLjk0NjUxM10gcmFkZW9uIDAwMDA6MDE6MDAuMDog cmFkZW9uOiB1c2luZyBNU0kuDQpbICAgIDEuOTUxNDQzXSBbZHJtXSByYWRlb246IGlycSBpbml0 aWFsaXplZC4NClsgICAgMS45NTYyNTRdIFtkcm1dIERldGVjdGVkIFZSQU0gUkFNPTEyOE0sIEJB Uj0xMjhNDQpbICAgIDEuOTYxMTAwXSBbZHJtXSBSQU0gd2lkdGggNjRiaXRzIEREUg0KWyAgICAx Ljk2NDkzNV0gW1RUTV0gWm9uZSAga2VybmVsOiBBdmFpbGFibGUgZ3JhcGhpY3MgbWVtb3J5OiAy MDI4MTAwIGtpQi4NClsgICAgMS45NzE1NjZdIFtUVE1dIEluaXRpYWxpemluZyBwb29sIGFsbG9j YXRvci4NClsgICAgMS45NzYwMzhdIFtkcm1dIHJhZGVvbjogMTI4TSBvZiBWUkFNIG1lbW9yeSBy ZWFkeQ0KWyAgICAxLjk4MDk0NV0gW2RybV0gcmFkZW9uOiA1MTJNIG9mIEdUVCBtZW1vcnkgcmVh ZHkuDQpbICAgIDEuOTg1ODQxXSBbZHJtXSBHQVJUOiBudW0gY3B1IHBhZ2VzIDEzMTA3MiwgbnVt IGdwdSBwYWdlcyAxMzEwNzINClsgICAgMS45OTMwODJdIFtkcm1dIHJhZGVvbjogMSBxdWFkIHBp cGVzLCAxIFogcGlwZXMgaW5pdGlhbGl6ZWQuDQpbICAgIDEuOTk5NjU4XSBbZHJtXSBQQ0lFIEdB UlQgb2YgNTEyTSBlbmFibGVkICh0YWJsZSBhdCAweEUwMDQwMDAwKS4NClsgICAgMi4wMDU5ODld IFtkcm1dIExvYWRpbmcgUjMwMCBNaWNyb2NvZGUNClsgICAgMi4wMTAwOThdIFtkcm1dIHJhZGVv bjogcmluZyBhdCAweDAwMDAwMDAwQzAwMDAwMDANClsgICAgMi4wMTUwODNdIFtkcm1dIHJpbmcg dGVzdCBzdWNjZWVkZWQgaW4gMSB1c2Vjcw0KWyAgICAyLjAxOTc4Ml0gW2RybV0gcmFkZW9uOiBp YiBwb29sIHJlYWR5Lg0KWyAgICAyLjAyMzgxMl0gW2RybV0gaWIgdGVzdCBzdWNjZWVkZWQgaW4g MCB1c2Vjcw0KWyAgICAyLjAyODYyMV0gW2RybV0gRGVmYXVsdCBUViBzdGFuZGFyZDogTlRTQw0K WyAgICAyLjAzMjgyM10gW2RybV0gMjcuMDAwMDAwMDAwIE1IeiBUViByZWYgY2xrDQpbICAgIDIu MDM3MTg1XSBbZHJtXSBERlAgdGFibGUgcmV2aXNpb246IDQNClsgICAgMi4wNDExNDZdIFtkcm1d IERlZmF1bHQgVFYgc3RhbmRhcmQ6IE5UU0MNClsgICAgMi4wNDUzMzBdIFtkcm1dIDI3LjAwMDAw MDAwMCBNSHogVFYgcmVmIGNsaw0KWyAgICAyLjA0OTgwNF0gW2RybV0gUmFkZW9uIERpc3BsYXkg Q29ubmVjdG9ycw0KWyAgICAyLjA1NDAwNF0gW2RybV0gQ29ubmVjdG9yIDA6DQpbICAgIDIuMDU3 MDY4XSBbZHJtXSAgIFZHQQ0KWyAgICAyLjA1OTUyNl0gW2RybV0gICBEREM6IDB4NjAgMHg2MCAw eDYwIDB4NjAgMHg2MCAweDYwIDB4NjAgMHg2MA0KWyAgICAyLjA2NTU1Nl0gW2RybV0gICBFbmNv ZGVyczoNClsgICAgMi4wNjg1MzZdIFtkcm1dICAgICBDUlQxOiBJTlRFUk5BTF9EQUMxDQpbICAg IDIuMDcyNTY4XSBbZHJtXSBDb25uZWN0b3IgMToNClsgICAgMi4wNzU2MzJdIFtkcm1dICAgRFZJ LUkNClsgICAgMi4wNzgyNjFdIFtkcm1dICAgSFBEMQ0KWyAgICAyLjA4MDgyNl0gW2RybV0gICBE REM6IDB4NjQgMHg2NCAweDY0IDB4NjQgMHg2NCAweDY0IDB4NjQgMHg2NA0KWyAgICAyLjA4Njgz Ml0gW2RybV0gICBFbmNvZGVyczoNClsgICAgMi4wODk4MDddIFtkcm1dICAgICBDUlQyOiBJTlRF Uk5BTF9EQUMyDQpbICAgIDIuMDkzODUzXSBbZHJtXSAgICAgREZQMTogSU5URVJOQUxfVE1EUzEN ClsgICAgMi4wOTc5NTVdIFtkcm1dIENvbm5lY3RvciAyOg0KWyAgICAyLjEwMTAzN10gW2RybV0g ICBTLXZpZGVvDQpbICAgIDIuMTAzODQzXSBbZHJtXSAgIEVuY29kZXJzOg0KWyAgICAyLjEwNjgx OF0gW2RybV0gICAgIFRWMTogSU5URVJOQUxfREFDMg0KWyAgICAyLjI0Mjk3Nl0gW2RybV0gZmIg bWFwcGFibGUgYXQgMHhFMDBDMDAwMA0KWyAgICAyLjI0NzE2Ml0gW2RybV0gdnJhbSBhcHBlciBh dCAweEUwMDAwMDAwDQpbICAgIDIuMjUxMjkwXSBbZHJtXSBzaXplIDUyNDI4ODANClsgICAgMi4y NTQzNTddIFtkcm1dIGZiIGRlcHRoIGlzIDI0DQpbICAgIDIuMjU3NTkyXSBbZHJtXSAgICBwaXRj aCBpcyA1MTIwDQpbICAgIDIuMjYxMTA3XSBmYmNvbjogcmFkZW9uZHJtZmIgKGZiMCkgaXMgcHJp bWFyeSBkZXZpY2UNClsgICAgMi4zODExNTFdIENvbnNvbGU6IHN3aXRjaGluZyB0byBjb2xvdXIg ZnJhbWUgYnVmZmVyIGRldmljZSAxNjB4NjQNClsgICAgMi4zOTM4NTBdIGZiMDogcmFkZW9uZHJt ZmIgZnJhbWUgYnVmZmVyIGRldmljZQ0KWyAgICAyLjM5ODQ4OF0gZHJtOiByZWdpc3RlcmVkIHBh bmljIG5vdGlmaWVyDQpbICAgIDIuNDAyNjMyXSBbZHJtXSBJbml0aWFsaXplZCByYWRlb24gMi42 LjAgMjAwODA1MjggZm9yIDAwMDA6MDE6MDAuMCBvbiBtaW5vciAwDQpbICAgIDIuNDEwMTIwXSBT ZXJpYWw6IDgyNTAvMTY1NTAgZHJpdmVyLCAxIHBvcnRzLCBJUlEgc2hhcmluZyBkaXNhYmxlZA0K WyAgICAyLjQzNzA4M10gc2VyaWFsODI1MDogdHR5UzAgYXQgSS9PIDB4M2Y4IChpcnEgPSA0KSBp cyBhIDE2NTUwQQ0KWyAgICAyLjQ2Mzg1OF0gMDA6MDk6IHR0eVMwIGF0IEkvTyAweDNmOCAoaXJx ID0gNCkgaXMgYSAxNjU1MEENClsgICAgMi40Njk5NTVdIHNhdGFfc2lsMjQgMDAwMDowNDowMC4w OiBQQ0kgSU5UIEEgLT4gTGlua1tMTkVCXSAtPiBHU0kgMTkgKGxldmVsLCBsb3cpIC0+IElSUSAx OQ0KWyAgICAyLjQ3ODgyMl0gc2NzaTAgOiBzYXRhX3NpbDI0DQpbICAgIDIuNDgyMDg5XSBzY3Np MSA6IHNhdGFfc2lsMjQNClsgICAgMi40ODUyODddIGF0YTE6IFNBVEEgbWF4IFVETUEvMTAwIGhv c3QgbTEyOEAweGVmZWZmYzAwIHBvcnQgMHhlZmVmODAwMCBpcnEgMTkNClsgICAgMi40OTI2NTBd IGF0YTI6IFNBVEEgbWF4IFVETUEvMTAwIGhvc3QgbTEyOEAweGVmZWZmYzAwIHBvcnQgMHhlZmVm YTAwMCBpcnEgMTkNClsgICAgMi41MDA0NzZdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTFNB MF0gZW5hYmxlZCBhdCBJUlEgMjMNClsgICAgMi41MDYyNTddIHNhdGFfbnYgMDAwMDowMDowNS4w OiBQQ0kgSU5UIEEgLT4gTGlua1tMU0EwXSAtPiBHU0kgMjMgKGxldmVsLCBsb3cpIC0+IElSUSAy Mw0KWyAgICAyLjUxNDU5NF0gc2F0YV9udiAwMDAwOjAwOjA1LjA6IFVzaW5nIFNXTkNRIG1vZGUN ClsgICAgMi41MTk1NzddIHNjc2kyIDogc2F0YV9udg0KWyAgICAyLjUyMjU0MF0gc2NzaTMgOiBz YXRhX252DQpbICAgIDIuNTI1NTE4XSBhdGEzOiBTQVRBIG1heCBVRE1BLzEzMyBjbWQgMHhjYzAw IGN0bCAweGM4ODAgYm1kbWEgMHhjNDAwIGlycSAyMw0KWyAgICAyLjUzMjcwNl0gYXRhNDogU0FU QSBtYXggVURNQS8xMzMgY21kIDB4YzgwMCBjdGwgMHhjNDgwIGJtZG1hIDB4YzQwOCBpcnEgMjMN ClsgICAgMi41NDAxMjZdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTFNBMV0gZW5hYmxlZCBh dCBJUlEgMjINClsgICAgMi41NDU5MDZdIHNhdGFfbnYgMDAwMDowMDowNS4xOiBQQ0kgSU5UIEIg LT4gTGlua1tMU0ExXSAtPiBHU0kgMjIgKGxldmVsLCBsb3cpIC0+IElSUSAyMg0KWyAgICAyLjU1 NDI0NF0gc2F0YV9udiAwMDAwOjAwOjA1LjE6IFVzaW5nIFNXTkNRIG1vZGUNClsgICAgMi41NTky MTRdIHNjc2k0IDogc2F0YV9udg0KWyAgICAyLjU2MjE5NV0gc2NzaTUgOiBzYXRhX252DQpbICAg IDIuNTY1MTU2XSBhdGE1OiBTQVRBIG1heCBVRE1BLzEzMyBjbWQgMHhjMDgwIGN0bCAweGMwMDAg Ym1kbWEgMHhiODAwIGlycSAyMg0KWyAgICAyLjU3MjM0MF0gYXRhNjogU0FUQSBtYXggVURNQS8x MzMgY21kIDB4YmMwMCBjdGwgMHhiODgwIGJtZG1hIDB4YjgwOCBpcnEgMjINClsgICAgMi41Nzk3 NDJdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTFNBMl0gZW5hYmxlZCBhdCBJUlEgMjENClsg ICAgMi41ODU1NDNdIHNhdGFfbnYgMDAwMDowMDowNS4yOiBQQ0kgSU5UIEMgLT4gTGlua1tMU0Ey XSAtPiBHU0kgMjEgKGxldmVsLCBsb3cpIC0+IElSUSAyMQ0KWyAgICAyLjU5Mzg2N10gc2F0YV9u diAwMDAwOjAwOjA1LjI6IFVzaW5nIFNXTkNRIG1vZGUNClsgICAgMi41OTg4NTddIHNjc2k2IDog c2F0YV9udg0KWyAgICAyLjYwMTg0M10gc2NzaTcgOiBzYXRhX252DQpbICAgIDIuNjA0ODE3XSBh dGE3OiBTQVRBIG1heCBVRE1BLzEzMyBjbWQgMHhiNDgwIGN0bCAweGI0MDAgYm1kbWEgMHhhYzAw IGlycSAyMQ0KWyAgICAyLjYxMTk5OV0gYXRhODogU0FUQSBtYXggVURNQS8xMzMgY21kIDB4YjA4 MCBjdGwgMHhiMDAwIGJtZG1hIDB4YWMwOCBpcnEgMjENClsgICAgMi42MTk0NTddIHNjc2k4IDog cGF0YV9hbWQNClsgICAgMi42MjI0OTldIHNjc2k5IDogcGF0YV9hbWQNClsgICAgMi42Mjc4OTVd IGF0YTk6IFBBVEEgbWF4IFVETUEvMTMzIGNtZCAweDFmMCBjdGwgMHgzZjYgYm1kbWEgMHhmZmEw IGlycSAxNA0KWyAgICAyLjYzNjQ0OF0gYXRhMTA6IFBBVEEgbWF4IFVETUEvMTMzIGNtZCAweDE3 MCBjdGwgMHgzNzYgYm1kbWEgMHhmZmE4IGlycSAxNQ0KWyAgICAyLjY0NTI4OV0gdGczLmM6djMu MTEzIChBdWd1c3QgMiwgMjAxMCkNClsgICAgMi42NTExNjBdIEFDUEk6IFBDSSBJbnRlcnJ1cHQg TGluayBbTE5FQV0gZW5hYmxlZCBhdCBJUlEgMTgNClsgICAgMi42NTg0MTJdIHRnMyAwMDAwOjAz OjAwLjA6IFBDSSBJTlQgQSAtPiBMaW5rW0xORUFdIC0+IEdTSSAxOCAobGV2ZWwsIGxvdykgLT4g SVJRIDE4DQpbICAgIDIuNzA1NTU2XSB0ZzMgMDAwMDowMzowMC4wOiBldGgwOiBUaWdvbjMgW3Bh cnRubyhCQ005NTcwMEE2KSByZXYgYjAwMl0gKFBDSSBFeHByZXNzKSBNQUMgYWRkcmVzcyAwMDox NzozMTpmOTpjYzpjNQ0KWyAgICAyLjcxNzgyOF0gdGczIDAwMDA6MDM6MDAuMDogZXRoMDogYXR0 YWNoZWQgUEhZIGlzIDU3ODcgKDEwLzEwMC8xMDAwQmFzZS1UIEV0aGVybmV0KSAoV2lyZVNwZWVk WzFdKQ0KWyAgICAyLjcyODc3M10gdGczIDAwMDA6MDM6MDAuMDogZXRoMDogUlhjc3Vtc1sxXSBM aW5rQ2hnUkVHWzBdIE1JaXJxWzBdIEFTRlswXSBUU09jYXBbMV0NClsgICAgMi43Mzg3NjddIHRn MyAwMDAwOjAzOjAwLjA6IGV0aDA6IGRtYV9yd2N0cmxbNzYxODAwMDBdIGRtYV9tYXNrWzY0LWJp dF0NClsgICAgMi43NDc2NDhdIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5FRF0gZW5hYmxl ZCBhdCBJUlEgMTcNClsgICAgMi43NTU0OTJdIHRnMyAwMDAwOjAyOjAwLjA6IFBDSSBJTlQgQSAt PiBMaW5rW0xORURdIC0+IEdTSSAxNyAobGV2ZWwsIGxvdykgLT4gSVJRIDE3DQpbICAgIDIuODA0 NDkyXSB0ZzMgMDAwMDowMjowMC4wOiBldGgxOiBUaWdvbjMgW3BhcnRubyhCQ005NTcwMEE2KSBy ZXYgYjAwMl0gKFBDSSBFeHByZXNzKSBNQUMgYWRkcmVzcyAwMDoxODpmMzo0NDpkZjplYQ0KWyAg ICAyLjgxNzA4MV0gdGczIDAwMDA6MDI6MDAuMDogZXRoMTogYXR0YWNoZWQgUEhZIGlzIDU3ODcg KDEwLzEwMC8xMDAwQmFzZS1UIEV0aGVybmV0KSAoV2lyZVNwZWVkWzFdKQ0KWyAgICAyLjgyODAx Nl0gdGczIDAwMDA6MDI6MDAuMDogZXRoMTogUlhjc3Vtc1sxXSBMaW5rQ2hnUkVHWzBdIE1JaXJx WzBdIEFTRlswXSBUU09jYXBbMV0NClsgICAgMi44MzgwNTJdIHRnMyAwMDAwOjAyOjAwLjA6IGV0 aDE6IGRtYV9yd2N0cmxbNzYxODAwMDBdIGRtYV9tYXNrWzY0LWJpdF0NClsgICAgMi44NDc0MTdd IEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQV0gZW5hYmxlZCBhdCBJUlEgMTYNClsgICAg Mi44NTUxNzBdIG9oY2kxMzk0IDAwMDA6MDU6MDguMDogUENJIElOVCBBIC0+IExpbmtbTE5LQV0g LT4gR1NJIDE2IChsZXZlbCwgbG93KSAtPiBJUlEgMTYNClsgICAgMi45MDAwMzZdIGF0YTU6IFNB VEEgbGluayBkb3duIChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQ0KWyAgICAyLjkyMDA1M10gb2hj aTEzOTQ6IGZ3LWhvc3QwOiBPSENJLTEzOTQgMS4xIChQQ0kpOiBJUlE9WzE2XSAgTU1JTz1bZWZm ZmY4MDAtZWZmZmZmZmZdICBNYXggUGFja2V0PVsyMDQ4XSAgSVIvSVQgY29udGV4dHM9WzQvOF0N ClsgICAgMi45MzQ1NDRdIGV0aDEzOTQ6IGV0aDI6IElQdjQgb3ZlciBJRUVFIDEzOTQgKGZ3LWhv c3QwKQ0KWyAgICAyLjk0MjMwMF0gYXRhNzogU0FUQSBsaW5rIGRvd24gKFNTdGF0dXMgMCBTQ29u dHJvbCAzMDApDQpbICAgIDIuOTQyNDQxXSBlaGNpX2hjZDogVVNCIDIuMCAnRW5oYW5jZWQnIEhv c3QgQ29udHJvbGxlciAoRUhDSSkgRHJpdmVyDQpbICAgIDIuOTQyNjU2XSBBQ1BJOiBQQ0kgSW50 ZXJydXB0IExpbmsgW0xVQjJdIGVuYWJsZWQgYXQgSVJRIDIwDQpbICAgIDIuOTQyNjY5XSBlaGNp X2hjZCAwMDAwOjAwOjAyLjE6IFBDSSBJTlQgQiAtPiBMaW5rW0xVQjJdIC0+IEdTSSAyMCAobGV2 ZWwsIGxvdykgLT4gSVJRIDIwDQpbICAgIDIuOTQyNjgzXSBlaGNpX2hjZCAwMDAwOjAwOjAyLjE6 IEVIQ0kgSG9zdCBDb250cm9sbGVyDQpbICAgIDIuOTQyNjkxXSBlaGNpX2hjZCAwMDAwOjAwOjAy LjE6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMQ0KWyAgICAy Ljk0MjcxNF0gZWhjaV9oY2QgMDAwMDowMDowMi4xOiBkZWJ1ZyBwb3J0IDENClsgICAgMi45NDI3 NDRdIGVoY2lfaGNkIDAwMDA6MDA6MDIuMTogaXJxIDIwLCBpbyBtZW0gMHhlZmFlYmMwMA0KWyAg ICAyLjk3MDAxNF0gZWhjaV9oY2QgMDAwMDowMDowMi4xOiBVU0IgMi4wIHN0YXJ0ZWQsIEVIQ0kg MS4wMA0KWyAgICAyLjk3MDAzMl0gdXNiIHVzYjE6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZl bmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMg0KWyAgICAyLjk3MDAzNF0gdXNiIHVzYjE6IE5ldyBV U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xDQpbICAg IDIuOTcwMDM2XSB1c2IgdXNiMTogUHJvZHVjdDogRUhDSSBIb3N0IENvbnRyb2xsZXINClsgICAg Mi45NzAwMzddIHVzYiB1c2IxOiBNYW51ZmFjdHVyZXI6IExpbnV4IDIuNi4zNi1yYzUgZWhjaV9o Y2QNClsgICAgMi45NzAwMzldIHVzYiB1c2IxOiBTZXJpYWxOdW1iZXI6IDAwMDA6MDA6MDIuMQ0K WyAgICAyLjk3MDIwM10gaHViIDEtMDoxLjA6IFVTQiBodWIgZm91bmQNClsgICAgMi45NzAyMDdd IGh1YiAxLTA6MS4wOiAxMCBwb3J0cyBkZXRlY3RlZA0KWyAgICAyLjk3MDMyNl0gb2hjaV9oY2Q6 IFVTQiAxLjEgJ09wZW4nIEhvc3QgQ29udHJvbGxlciAoT0hDSSkgRHJpdmVyDQpbICAgIDIuOTcw NTQyXSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsgW0xVQjBdIGVuYWJsZWQgYXQgSVJRIDIzDQpb ICAgIDIuOTcwNTQ1XSBvaGNpX2hjZCAwMDAwOjAwOjAyLjA6IFBDSSBJTlQgQSAtPiBMaW5rW0xV QjBdIC0+IEdTSSAyMyAobGV2ZWwsIGxvdykgLT4gSVJRIDIzDQpbICAgIDIuOTcwNTYwXSBvaGNp X2hjZCAwMDAwOjAwOjAyLjA6IE9IQ0kgSG9zdCBDb250cm9sbGVyDQpbICAgIDIuOTcwNTY2XSBv aGNpX2hjZCAwMDAwOjAwOjAyLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1 cyBudW1iZXIgMg0KWyAgICAyLjk3MDU3OF0gb2hjaV9oY2QgMDAwMDowMDowMi4wOiBpcnEgMjMs IGlvIG1lbSAweGVmYWY4MDAwDQpbICAgIDMuMDQyMDI2XSB1c2IgdXNiMjogTmV3IFVTQiBkZXZp Y2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAxDQpbICAgIDMuMDQyMDI4XSB1 c2IgdXNiMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFs TnVtYmVyPTENClsgICAgMy4wNDIwMzBdIHVzYiB1c2IyOiBQcm9kdWN0OiBPSENJIEhvc3QgQ29u dHJvbGxlcg0KWyAgICAzLjA0MjAzMl0gdXNiIHVzYjI6IE1hbnVmYWN0dXJlcjogTGludXggMi42 LjM2LXJjNSBvaGNpX2hjZA0KWyAgICAzLjA0MjAzM10gdXNiIHVzYjI6IFNlcmlhbE51bWJlcjog MDAwMDowMDowMi4wDQpbICAgIDMuMDQyMTU5XSBodWIgMi0wOjEuMDogVVNCIGh1YiBmb3VuZA0K WyAgICAzLjA0MjE2NF0gaHViIDItMDoxLjA6IDEwIHBvcnRzIGRldGVjdGVkDQpbICAgIDMuMDQy MjcxXSBJbml0aWFsaXppbmcgVVNCIE1hc3MgU3RvcmFnZSBkcml2ZXIuLi4NClsgICAgMy4wNDIz MzhdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiLXN0b3JhZ2UN ClsgICAgMy4wNDIzNDBdIFVTQiBNYXNzIFN0b3JhZ2Ugc3VwcG9ydCByZWdpc3RlcmVkLg0KWyAg ICAzLjA0MjQwNF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBsaWJ1 c3VhbA0KWyAgICAzLjA0MjQ1Nl0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRy aXZlciB1bXMtYWxhdWRhDQpbICAgIDMuMDQyNTExXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBp bnRlcmZhY2UgZHJpdmVyIHVtcy1jeXByZXNzDQpbICAgIDMuMDQyNTYzXSB1c2Jjb3JlOiByZWdp c3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVtcy1kYXRhZmFiDQpbICAgIDMuMDQyNjE4XSB1 c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVtcy1mcmVlY29tDQpbICAg IDMuMDQyNjY5XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVtcy1p c2QyMDANClsgICAgMy4wNDI3MjFdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBk cml2ZXIgdW1zLWp1bXBzaG90DQpbICAgIDMuMDQyNzc3XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5l dyBpbnRlcmZhY2UgZHJpdmVyIHVtcy1rYXJtYQ0KWyAgICAzLjA0MjgyOV0gdXNiY29yZTogcmVn aXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1bXMtc2RkcjA5DQpbICAgIDMuMDQyODgwXSB1 c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVtcy1zZGRyNTUNClsgICAg My4wNDI5MzRdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdW1zLXVz YmF0DQpbICAgIDMuMDQzMDU5XSBQTlA6IFBTLzIgQ29udHJvbGxlciBbUE5QMDMwMzpQUzJLLFBO UDBmMDM6UFMyTV0gYXQgMHg2MCwweDY0IGlycSAxLDEyDQpbICAgIDMuMDQ1NTg4XSBzZXJpbzog aTgwNDIgS0JEIHBvcnQgYXQgMHg2MCwweDY0IGlycSAxDQpbICAgIDMuMDQ1NTk1XSBzZXJpbzog aTgwNDIgQVVYIHBvcnQgYXQgMHg2MCwweDY0IGlycSAxMg0KWyAgICAzLjA0NTg1NV0gbWljZTog UFMvMiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQ0KWyAgICAzLjA0NjE4NV0gaW5w dXQ6IFBDIFNwZWFrZXIgYXMgL2RldmljZXMvcGxhdGZvcm0vcGNzcGtyL2lucHV0L2lucHV0Mg0K WyAgICAzLjA0NjI4NF0gSTJPIHN1YnN5c3RlbSB2MS4zMjUNClsgICAgMy4wNDYyODVdIGkybzog bWF4IGRyaXZlcnMgPSA4DQpbICAgIDMuMDQ2NDcwXSBpMmMgL2RldiBlbnRyaWVzIGRyaXZlcg0K WyAgICAzLjA0NjkzM10gaTJjIGkyYy00OiBuRm9yY2UyIFNNQnVzIGFkYXB0ZXIgYXQgMHgyYTAw DQpbICAgIDMuMDQ3MDM4XSBpMmMgaTJjLTU6IG5Gb3JjZTIgU01CdXMgYWRhcHRlciBhdCAweDJh ODANClsgICAgMy4wNDcxOTZdIGxpcmNfZGV2OiBJUiBSZW1vdGUgQ29udHJvbCBkcml2ZXIgcmVn aXN0ZXJlZCwgbWFqb3IgMjUzIA0KWyAgICAzLjA0NzE5OF0gSVIgTkVDIHByb3RvY29sIGhhbmRs ZXIgaW5pdGlhbGl6ZWQNClsgICAgMy4wNDcxOTldIElSIFJDNSh4KSBwcm90b2NvbCBoYW5kbGVy IGluaXRpYWxpemVkDQpbICAgIDMuMDQ3MjAwXSBJUiBSQzYgcHJvdG9jb2wgaGFuZGxlciBpbml0 aWFsaXplZA0KWyAgICAzLjA0NzIwMl0gSVIgSlZDIHByb3RvY29sIGhhbmRsZXIgaW5pdGlhbGl6 ZWQNClsgICAgMy4wNDcyMDNdIElSIFNvbnkgcHJvdG9jb2wgaGFuZGxlciBpbml0aWFsaXplZA0K WyAgICAzLjA0NzIwNF0gSVIgTElSQyBicmlkZ2UgaGFuZGxlciBpbml0aWFsaXplZA0KWyAgICAz LjA0NzIwNV0gTGludXggdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2U6IHYyLjAwDQpbICAgIDMuMDQ3 NTcwXSBidHR2OiBkcml2ZXIgdmVyc2lvbiAwLjkuMTggbG9hZGVkDQpbICAgIDMuMDQ3NTcyXSBi dHR2OiB1c2luZyA4IGJ1ZmZlcnMgd2l0aCAyMDgwayAoNTIwIHBhZ2VzKSBlYWNoIGZvciBjYXB0 dXJlDQpbICAgIDMuMDQ3NjY2XSBidHR2OiBCdDh4eCBjYXJkIGZvdW5kICgwKS4NClsgICAgMy4w NDc4NTddIEFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQ10gZW5hYmxlZCBhdCBJUlEgMTkN ClsgICAgMy4wNDc4NjBdIGJ0dHYgMDAwMDowNTowNi4wOiBQQ0kgSU5UIEEgLT4gTGlua1tMTktD XSAtPiBHU0kgMTkgKGxldmVsLCBsb3cpIC0+IElSUSAxOQ0KWyAgICAzLjA0Nzg2N10gYnR0djA6 IEJ0ODc4IChyZXYgMTcpIGF0IDAwMDA6MDU6MDYuMCwgaXJxOiAxOSwgbGF0ZW5jeTogNjQsIG1t aW86IDB4ZWVmZmYwMDANClsgICAgMy4wNDc4ODFdIGJ0dHYwOiBkZXRlY3RlZDogSGF1cHBhdWdl IFdpblRWIFtjYXJkPTEwXSwgUENJIHN1YnN5c3RlbSBJRCBpcyAwMDcwOjEzZWINClsgICAgMy4w NDc4ODNdIGJ0dHYwOiB1c2luZzogSGF1cHBhdWdlIChidDg3OCkgW2NhcmQ9MTAsYXV0b2RldGVj dGVkXQ0KWyAgICAzLjA1MDQxMl0gYnR0djA6IEhhdXBwYXVnZS9Wb29kb28gbXNwMzR4eDogcmVz ZXQgbGluZSBpbml0IFs1XQ0KWyAgICAzLjA2NjYyMV0gaW5wdXQ6IEFUIFRyYW5zbGF0ZWQgU2V0 IDIga2V5Ym9hcmQgYXMgL2RldmljZXMvcGxhdGZvcm0vaTgwNDIvc2VyaW8wL2lucHV0L2lucHV0 Mw0KWyAgICAzLjA4NDQxOV0gdHZlZXByb20gNi0wMDUwOiBIYXVwcGF1Z2UgbW9kZWwgNjEzNDQs IHJldiBENDIxLCBzZXJpYWwjIDM5MDI4MTMNClsgICAgMy4wODQ0MjFdIHR2ZWVwcm9tIDYtMDA1 MDogdHVuZXIgbW9kZWwgaXMgUGhpbGlwcyBGTTEyMTYgKGlkeCAyMSwgdHlwZSA1KQ0KWyAgICAz LjA4NDQyNF0gdHZlZXByb20gNi0wMDUwOiBUViBzdGFuZGFyZHMgUEFMKEIvRykgKGVlcHJvbSAw eDA0KQ0KWyAgICAzLjA4NDQyNl0gdHZlZXByb20gNi0wMDUwOiBhdWRpbyBwcm9jZXNzb3IgaXMg TVNQMzQxNSAoaWR4IDYpDQpbICAgIDMuMDg0NDI3XSB0dmVlcHJvbSA2LTAwNTA6IGhhcyByYWRp bw0KWyAgICAzLjA4NDQyOV0gYnR0djA6IEhhdXBwYXVnZSBlZXByb20gaW5kaWNhdGVzIG1vZGVs IzYxMzQ0DQpbICAgIDMuMDg0NDMwXSBidHR2MDogdHVuZXIgdHlwZT01DQpbICAgIDMuMDk3Nzg1 XSBtc3AzNDAwIDYtMDA0MDogTVNQMzQxNUQtQjMgZm91bmQgQCAweDgwIChidDg3OCAjMCBbc3dd KQ0KWyAgICAzLjA5Nzc4N10gbXNwMzQwMCA2LTAwNDA6IG1zcDM0MDAgc3VwcG9ydHMgbmljYW0s IG1vZGUgaXMgYXV0b2RldGVjdA0KWyAgICAzLjEwOTgxMF0gdHVuZXIgNi0wMDYxOiBjaGlwIGZv dW5kIEAgMHhjMiAoYnQ4NzggIzAgW3N3XSkNClsgICAgMy4xMTAxMDNdIHR1bmVyLXNpbXBsZSA2 LTAwNjE6IGNyZWF0aW5nIG5ldyBpbnN0YW5jZQ0KWyAgICAzLjExMDEwNl0gdHVuZXItc2ltcGxl IDYtMDA2MTogdHlwZSBzZXQgdG8gNSAoUGhpbGlwcyBQQUxfQkcgKEZJMTIxNiBhbmQgY29tcGF0 aWJsZXMpKQ0KWyAgICAzLjExMDgxMV0gYnR0djA6IHJlZ2lzdGVyZWQgZGV2aWNlIHZpZGVvMA0K WyAgICAzLjExMDg2Nl0gYnR0djA6IHJlZ2lzdGVyZWQgZGV2aWNlIHZiaTANClsgICAgMy4xMTA5 MTldIGJ0dHYwOiByZWdpc3RlcmVkIGRldmljZSByYWRpbzANClsgICAgMy4xMTI0MjldIGJ0dHYw OiBQTEw6IDI4NjM2MzYzID0+IDM1NDY4OTUwIC4NClsgICAgMy42MDMwMjZdIGF0YTM6IFNBVEEg bGluayB1cCAzLjAgR2JwcyAoU1N0YXR1cyAxMjMgU0NvbnRyb2wgMzAwKQ0KWyAgICAzLjYxMDA3 NV0gLiBvaw0KWyAgICAzLjYzNTA0MF0gUmVnaXN0ZXJlZCBJUiBrZXltYXAgcmMtcmM1LXR2DQpb ICAgIDMuNjQxMDU5XSBpbnB1dDogaTJjIElSIChIYXVwcGF1Z2UpIGFzIC9kZXZpY2VzL3ZpcnR1 YWwvcmMvcmMwL2lucHV0NA0KWyAgICAzLjY0OTU1NF0gcmMwOiBpMmMgSVIgKEhhdXBwYXVnZSkg YXMgL2RldmljZXMvdmlydHVhbC9yYy9yYzANClsgICAgMy42NTY5MTRdIGlyLWtiZC1pMmM6IGky YyBJUiAoSGF1cHBhdWdlKSBkZXRlY3RlZCBhdCBpMmMtNi82LTAwMTgvaXIwIFtidDg3OCAjMCBb c3ddXQ0KWyAgICAzLjY3NTYxMV0gYXRhMy4wMDogQVRBLTc6IE1BWFRPUiBTVE0zMzIwODIwQVMs IDMuQUFFLCBtYXggVURNQS8xMzMNClsgICAgMy42ODM3NzFdIGF0YTMuMDA6IDYyNTE0MjQ0OCBz ZWN0b3JzLCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAzMS8zMikNClsgICAgMy43NTg4OTld IGF0YTMuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTMzDQpbICAgIDQuMDcwMDE5XSB1c2IgMi02 OiBuZXcgbG93IHNwZWVkIFVTQiBkZXZpY2UgdXNpbmcgb2hjaV9oY2QgYW5kIGFkZHJlc3MgMg0K WyAgICA0LjI1ODAzNl0gdXNiIDItNjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA2 MmEsIGlkUHJvZHVjdD0wMDAwDQpbICAgIDQuMjY2NjIwXSB1c2IgMi02OiBOZXcgVVNCIGRldmlj ZSBzdHJpbmdzOiBNZnI9MCwgUHJvZHVjdD0wLCBTZXJpYWxOdW1iZXI9MA0KWyAgICA0LjUwMDA4 MV0gazh0ZW1wIDAwMDA6MDA6MTguMzogVGVtcGVyYXR1cmUgcmVhZG91dHMgbWlnaHQgYmUgd3Jv bmcgLSBjaGVjayBlcnJhdHVtICMxNDENClsgICAgNC41MTAwNDNdIGs4dGVtcCAwMDAwOjAwOjE5 LjM6IFRlbXBlcmF0dXJlIHJlYWRvdXRzIG1pZ2h0IGJlIHdyb25nIC0gY2hlY2sgZXJyYXR1bSAj MTQxDQpbICAgIDQuNTIwMjMwXSBtZDogcmFpZDEgcGVyc29uYWxpdHkgcmVnaXN0ZXJlZCBmb3Ig bGV2ZWwgMQ0KWyAgICA0LjUyNzgyMV0gZGV2aWNlLW1hcHBlcjogdWV2ZW50OiB2ZXJzaW9uIDEu MC4zDQpbICAgIDQuNTM0NDkyXSBkZXZpY2UtbWFwcGVyOiBpb2N0bDogNC4xOC4wLWlvY3RsICgy MDEwLTA2LTI5KSBpbml0aWFsaXNlZDogZG0tZGV2ZWxAcmVkaGF0LmNvbQ0KWyAgICA0LjU0NDkx OF0gRURBQyBNQzogVmVyOiAyLjEuMCBTZXAgMjEgMjAxMA0KWyAgICA0LjU1MTMzMF0gRURBQyBh bWQ2NF9lZGFjOiAgVmVyOiAzLjMuMCBTZXAgMjEgMjAxMA0KWyAgICA0LjU1ODI3OF0gRURBQyBh bWQ2NDogRUNDIGlzIGVuYWJsZWQgYnkgQklPUy4NClsgICAgNC41NjQ3ODRdIEVEQUMgYW1kNjQ6 IEVDQyBpcyBlbmFibGVkIGJ5IEJJT1MuDQpbICAgIDQuNTcxODIyXSBFREFDIE1DMDogR2l2aW5n IG91dCBkZXZpY2UgdG8gJ2FtZDY0X2VkYWMnICdSZXZGJzogREVWIDAwMDA6MDA6MTguMg0KWyAg ICA0LjU4MTM0MF0gRURBQyBNQzE6IEdpdmluZyBvdXQgZGV2aWNlIHRvICdhbWQ2NF9lZGFjJyAn UmV2Ric6IERFViAwMDAwOjAwOjE5LjINClsgICAgNC41OTEwOTBdIEVEQUMgUENJMDogR2l2aW5n IG91dCBkZXZpY2UgdG8gbW9kdWxlICdhbWQ2NF9lZGFjJyBjb250cm9sbGVyICdFREFDIFBDSSBj b250cm9sbGVyJzogREVWICcwMDAwOjAwOjE4LjInIChQT0xMRUQpDQpbICAgIDQuNjA0NDcwXSBj cHVpZGxlOiB1c2luZyBnb3Zlcm5vciBsYWRkZXINClsgICAgNC42MTA1NTNdIGNwdWlkbGU6IHVz aW5nIGdvdmVybm9yIG1lbnUNClsgICAgNC42MTgyNTNdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3 IGludGVyZmFjZSBkcml2ZXIgaGlkZGV2DQpbICAgIDQuNjMxMzMyXSBpbnB1dDogSElEIDA2MmE6 MDAwMCBhcyAvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIuMC91c2IyLzItNi8yLTY6MS4w L2lucHV0L2lucHV0NQ0KWyAgICA0LjY0MjY3NF0gZ2VuZXJpYy11c2IgMDAwMzowNjJBOjAwMDAu MDAwMTogaW5wdXQsaGlkcmF3MDogVVNCIEhJRCB2MS4xMCBNb3VzZSBbSElEIDA2MmE6MDAwMF0g b24gdXNiLTAwMDA6MDA6MDIuMC02L2lucHV0MA0KWyAgICA0LjY1NjQ0NV0gdXNiY29yZTogcmVn aXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JoaWQNClsgICAgNC42NjQ0MDVdIHVzYmhp ZDogVVNCIEhJRCBjb3JlIGRyaXZlcg0KWyAgICA0LjY3MDYzOV0gQnQ4N3ggMDAwMDowNTowNi4x OiBQQ0kgSU5UIEEgLT4gTGlua1tMTktDXSAtPiBHU0kgMTkgKGxldmVsLCBsb3cpIC0+IElSUSAx OQ0KWyAgICA0LjY4MTMwMV0gYnQ4N3gwOiBVc2luZyBib2FyZCAxLCBhbmFsb2csIGRpZ2l0YWwg KHJhdGUgMzIwMDAgSHopDQpbICAgIDQuNjkwMjk0XSBBQ1BJOiBQQ0kgSW50ZXJydXB0IExpbmsg W0xBWkFdIGVuYWJsZWQgYXQgSVJRIDIyDQpbICAgIDQuNjk4NTcxXSBIREEgSW50ZWwgMDAwMDow MDowNi4xOiBQQ0kgSU5UIEIgLT4gTGlua1tMQVpBXSAtPiBHU0kgMjIgKGxldmVsLCBsb3cpIC0+ IElSUSAyMg0KWyAgICA0LjcwOTE1MF0gaGRhX2ludGVsOiBEaXNhYmxlIE1TSSBmb3IgTnZpZGlh IGNoaXBzZXQNClsgICAgNC43MzAwNTRdIGF0YTE6IFNBVEEgbGluayB1cCAzLjAgR2JwcyAoU1N0 YXR1cyAxMjMgU0NvbnRyb2wgMCkNClsgICAgNC43NDQ1NzRdIGF0YTEuMDA6IEFUQS03OiBTQU1T VU5HIEhENjQySkosIDFBQTAxMTEzLCBtYXggVURNQTcNClsgICAgNC43NTI4NTBdIGF0YTEuMDA6 IDEyNTAyNjM3Mjggc2VjdG9ycywgbXVsdGkgMDogTEJBNDggTkNRIChkZXB0aCAzMS8zMikNClsg ICAgNC43Njg2MTBdIGF0YTEuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTAwDQpbICAgIDQuNzc1 NTkxXSBzY3NpIDA6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEFUQSAgICAgIFNBTVNVTkcgSEQ2 NDJKSiAgMUFBMCBQUTogMCBBTlNJOiA1DQpbICAgIDQuNzg2MTgyXSBzZCAwOjA6MDowOiBbc2Rh XSAxMjUwMjYzNzI4IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoNjQwIEdCLzU5NiBHaUIpDQpb ICAgIDQuNzk2Mjg1XSBzZCAwOjA6MDowOiBbc2RhXSBXcml0ZSBQcm90ZWN0IGlzIG9mZg0KWyAg ICA0LjgwMzQzOF0gc2QgMDowOjA6MDogW3NkYV0gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQg Y2FjaGU6IGVuYWJsZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBDQpbICAgIDQuODM0MjQ1 XSAgc2RhOiBzZGExIHNkYTIgc2RhMw0KWyAgICA0LjgzOTk5Nl0gc2QgMDowOjA6MDogW3NkYV0g QXR0YWNoZWQgU0NTSSBkaXNrDQpbICAgIDYuMjYwNTI4XSBBTFNBIGRldmljZSBsaXN0Og0KWyAg ICA2LjI2NTk4N10gICAjMDogSERBIE5WaWRpYSBhdCAweGVmYWZjMDAwIGlycSAyMg0KWyAgICA2 LjI3Mjg4N10gICAjMTogQnJvb2t0cmVlIEJ0ODc4IGF0IDB4ZWVmZmUwMDAsIGlycSAxOQ0KWyAg ICA2LjI4MDk4N10gSW5pdGlhbGl6aW5nIFhGUk0gbmV0bGluayBzb2NrZXQNClsgICAgNi4yODc0 OThdIE5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTcNClsgICAgNi4yOTQ0ODJdIE5F VDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTUNClsgICAgNi4zMDEyNTVdIFJlZ2lzdGVy aW5nIHRoZSBkbnNfcmVzb2x2ZXIga2V5IHR5cGUNClsgICAgNi4zMDgxMzJdIHBvd2Vybm93LWs4 OiBGb3VuZCAyIER1YWwtQ29yZSBBTUQgT3B0ZXJvbih0bSkgUHJvY2Vzc29yIDIyMTggKDQgY3B1 IGNvcmVzKSAodmVyc2lvbiAyLjIwLjAwKQ0KWyAgICA2LjMyMDIyMV0gcG93ZXJub3ctazg6ICAg IDAgOiBmaWQgMHgxMiAoMjYwMCBNSHopLCB2aWQgMHg4DQpbICAgIDYuMzI4NDQ5XSBwb3dlcm5v dy1rODogICAgMSA6IGZpZCAweDEwICgyNDAwIE1IeiksIHZpZCAweGENClsgICAgNi4zMzYzODdd IHBvd2Vybm93LWs4OiAgICAyIDogZmlkIDB4ZSAoMjIwMCBNSHopLCB2aWQgMHhjDQpbICAgIDYu MzQ0NTY5XSBwb3dlcm5vdy1rODogICAgMyA6IGZpZCAweGMgKDIwMDAgTUh6KSwgdmlkIDB4ZQ0K WyAgICA2LjM1MjM1MF0gcG93ZXJub3ctazg6ICAgIDQgOiBmaWQgMHhhICgxODAwIE1IeiksIHZp ZCAweDEwDQpbICAgIDYuMzYwNTUwXSBwb3dlcm5vdy1rODogICAgNSA6IGZpZCAweDIgKDEwMDAg TUh6KSwgdmlkIDB4MTINClsgICAgNi4zNjg4NjJdIHBvd2Vybm93LWs4OiAgICAwIDogZmlkIDB4 MTIgKDI2MDAgTUh6KSwgdmlkIDB4OA0KWyAgICA2LjM3NzQ3Nl0gcG93ZXJub3ctazg6ICAgIDEg OiBmaWQgMHgxMCAoMjQwMCBNSHopLCB2aWQgMHhhDQpbICAgIDYuMzg1MTk3XSBwb3dlcm5vdy1r ODogICAgMiA6IGZpZCAweGUgKDIyMDAgTUh6KSwgdmlkIDB4Yw0KWyAgICA2LjM5MzAxNV0gcG93 ZXJub3ctazg6ICAgIDMgOiBmaWQgMHhjICgyMDAwIE1IeiksIHZpZCAweGUNClsgICAgNi40MDA1 OThdIHBvd2Vybm93LWs4OiAgICA0IDogZmlkIDB4YSAoMTgwMCBNSHopLCB2aWQgMHgxMA0KWyAg ICA2LjQwODExNl0gcG93ZXJub3ctazg6ICAgIDUgOiBmaWQgMHgyICgxMDAwIE1IeiksIHZpZCAw eDEyDQpbICAgIDcuMDAwMDUxXSBhdGEyOiBTQVRBIGxpbmsgdXAgMy4wIEdicHMgKFNTdGF0dXMg MTIzIFNDb250cm9sIDApDQpbICAgIDcuMDE2MzMzXSBhdGEyLjAwOiBBVEEtNzogU0FNU1VORyBI RDY0MkpKLCAxQUEwMTExMywgbWF4IFVETUE3DQpbICAgIDcuMDI2MjQzXSBhdGEyLjAwOiAxMjUw MjYzNzI4IHNlY3RvcnMsIG11bHRpIDA6IExCQTQ4IE5DUSAoZGVwdGggMzEvMzIpDQpbICAgIDcu MDQzMzY1XSBhdGEyLjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEwMA0KWyAgICA3LjA1MTc4OV0g c2NzaSAxOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBTQU1TVU5HIEhENjQySkog IDFBQTAgUFE6IDAgQU5TSTogNQ0KWyAgICA3LjA2NDI0NF0gc2QgMTowOjA6MDogW3NkYl0gMTI1 MDI2MzcyOCA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDY0MCBHQi81OTYgR2lCKQ0KWyAgICA3 LjA2NDU4M10gc2NzaSAyOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBNQVhUT1Ig U1RNMzMyMDgyIDMuQUEgUFE6IDAgQU5TSTogNQ0KWyAgICA3LjA2NTAyNF0gc2QgMjowOjA6MDog W3NkY10gNjI1MTQyNDQ4IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMzIwIEdCLzI5OCBHaUIp DQpbICAgIDcuMDY1MTI5XSBzZCAyOjA6MDowOiBbc2RjXSBXcml0ZSBQcm90ZWN0IGlzIG9mZg0K WyAgICA3LjA2NTE4M10gc2QgMjowOjA6MDogW3NkY10gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJl YWQgY2FjaGU6IGVuYWJsZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBDQpbICAgIDcuMDgw NzI1XSAgc2RjOiBzZGMxIHNkYzINClsgICAgNy4xMjc5NjNdIHNkIDE6MDowOjA6IFtzZGJdIFdy aXRlIFByb3RlY3QgaXMgb2ZmDQpbICAgIDcuMTI4MzA5XSBzZCAyOjA6MDowOiBbc2RjXSBBdHRh Y2hlZCBTQ1NJIGRpc2sNClsgICAgNy4xNDU0NDVdIHNkIDE6MDowOjA6IFtzZGJdIFdyaXRlIGNh Y2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBlbmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBPIG9y IEZVQQ0KWyAgICA3LjE3NzY4NV0gIHNkYjogc2RiMSBzZGIyIHNkYjMNClsgICAgNy4xODU4NThd IHNkIDE6MDowOjA6IFtzZGJdIEF0dGFjaGVkIFNDU0kgZGlzaw0KWyAgICA3LjQwMDAyMl0gYXRh NDogU0FUQSBsaW5rIGRvd24gKFNTdGF0dXMgMCBTQ29udHJvbCAzMDApDQpbICAgIDcuNzMwMDI4 XSBhdGE2OiBTQVRBIGxpbmsgZG93biAoU1N0YXR1cyAwIFNDb250cm9sIDMwMCkNClsgICAgOC4w NjAwMjddIGF0YTg6IFNBVEEgbGluayBkb3duIChTU3RhdHVzIDAgU0NvbnRyb2wgMzAwKQ0KWyAg ICA4LjA2OTUwMl0gRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9yeTogNTY0ayBmcmVlZA0KWyAg ICA4LjA3ODkzN10gV3JpdGUgcHJvdGVjdGluZyB0aGUga2VybmVsIHJlYWQtb25seSBkYXRhOiAx MDI0MGsNClsgICAgOC4wODg5MzddIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6IDU5Nmsg ZnJlZWQNClsgICAgOC4wOTg1NDNdIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBtZW1vcnk6IDE3Mjhr IGZyZWVkDQpTZXAgMjUgMDc6NDQ6NTcgdHJlb2dlbiBzeXNsb2ctbmdbMjcxNl06IHN5c2xvZy1u ZyBzdGFydGluZyB1cDsgdmVyc2lvbj0nMy4xLjInDQpTZXAgMjUgMDc6NDU6MDIgdHJlb2dlbiBt ZGFkbVsyODY0XTogTmV3QXJyYXkgZXZlbnQgZGV0ZWN0ZWQgb24gbWQgZGV2aWNlIC9kZXYvbWQy DQpTZXAgMjUgMDc6NDU6MDIgdHJlb2dlbiBtZGFkbVsyODY0XTogTmV3QXJyYXkgZXZlbnQgZGV0 ZWN0ZWQgb24gbWQgZGV2aWNlIC9kZXYvbWQzDQpTZXAgMjUgMDc6NDU6MDkgdHJlb2dlbiBudHBk YXRlWzI4NzVdOiBzdGVwIHRpbWUgc2VydmVyIDE5Mi4xNjguMy4yIG9mZnNldCAtMS4zOTk2MDQg c2VjDQpTZXAgMjUgMDc6NDU6MDkgdHJlb2dlbiBycGNiaW5kOiBjYW5ub3QgYmluZCAxMjcuMC4w LjEgb24gdWRwOiBBZGRyZXNzIGFscmVhZHkgaW4gdXNlDQpTZXAgMjUgMDc6NDU6MDkgdHJlb2dl biBycGNiaW5kOiBjYW5ub3QgY3JlYXRlIHNvY2tldCBmb3IgdWRwNg0KU2VwIDI1IDA3OjQ1OjA5 IHRyZW9nZW4gcnBjYmluZDogY2Fubm90IGNyZWF0ZSBzb2NrZXQgZm9yIHRjcDYNClNlcCAyNSAw Nzo0NToxMCB0cmVvZ2VuIGtkbTogOjBbMjYzN106IHBhbV91bml4KGtkZTpzZXNzaW9uKTogc2Vz c2lvbiBvcGVuZWQgZm9yIHVzZXIgdGsxMyBieSAodWlkPTApDQpTZXAgMjUgMDc6NDU6MTAgdHJl b2dlbiBzbS1ub3RpZnlbMjk0NF06IFZlcnNpb24gMS4yLjIgc3RhcnRpbmcNClNlcCAyNSAwNzo0 NToxMiB0cmVvZ2VuIHBvc3RmaXgvcG9zdGZpeC1zY3JpcHRbMzA2OV06IHN0YXJ0aW5nIHRoZSBQ b3N0Zml4IG1haWwgc3lzdGVtDQpTZXAgMjUgMDc6NDU6MTIgdHJlb2dlbiBwb3N0Zml4L21hc3Rl clszMDcwXTogZGFlbW9uIHN0YXJ0ZWQgLS0gdmVyc2lvbiAyLjYuNywgY29uZmlndXJhdGlvbiAv ZXRjL3Bvc3RmaXgNClNlcCAyNSAwNzo0NToxMiB0cmVvZ2VuIHNtYXJ0ZFszMDg3XTogc21hcnRk IDUuMzkuMSAyMDEwLTAxLTI4IHIzMDU0IFt4ODZfNjQtcGMtbGludXgtZ251XSAobG9jYWwgYnVp bGQpDQpTZXAgMjUgMDc6NDU6MTIgdHJlb2dlbiBDb3B5cmlnaHQgKEMpIDIwMDItMTAgYnkgQnJ1 Y2UgQWxsZW4sIGh0dHA6Ly9zbWFydG1vbnRvb2xzLnNvdXJjZWZvcmdlLm5ldA0KU2VwIDI1IDA3 OjQ1OjEyIHRyZW9nZW4gc21hcnRkWzMwODddOiBPcGVuZWQgY29uZmlndXJhdGlvbiBmaWxlIC9l dGMvc21hcnRkLmNvbmYNClNlcCAyNSAwNzo0NToxMiB0cmVvZ2VuIHNtYXJ0ZFszMDg3XTogRHJp dmU6IC9kZXYvc2RhLCBpbXBsaWVkICctYScgRGlyZWN0aXZlIG9uIGxpbmUgMjQgb2YgZmlsZSAv ZXRjL3NtYXJ0ZC5jb25mDQpTZXAgMjUgMDc6NDU6MTIgdHJlb2dlbiBzbWFydGRbMzA4N106IERy aXZlOiAvZGV2L3NkYiwgaW1wbGllZCAnLWEnIERpcmVjdGl2ZSBvbiBsaW5lIDI1IG9mIGZpbGUg L2V0Yy9zbWFydGQuY29uZg0KU2VwIDI1IDA3OjQ1OjEyIHRyZW9nZW4gc21hcnRkWzMwODddOiBE cml2ZTogL2Rldi9zZGMsIGltcGxpZWQgJy1hJyBEaXJlY3RpdmUgb24gbGluZSAyNiBvZiBmaWxl IC9ldGMvc21hcnRkLmNvbmYNClNlcCAyNSAwNzo0NToxMiB0cmVvZ2VuIHNtYXJ0ZFszMDg3XTog Q29uZmlndXJhdGlvbiBmaWxlIC9ldGMvc21hcnRkLmNvbmYgcGFyc2VkLg0KU2VwIDI1IDA3OjQ1 OjEyIHRyZW9nZW4gc21hcnRkWzMwODddOiBEZXZpY2U6IC9kZXYvc2RhLCBvcGVuZWQNClNlcCAy NSAwNzo0NToxMiB0cmVvZ2VuIHNtYXJ0ZFszMDg3XTogRGV2aWNlOiAvZGV2L3NkYSwgZm91bmQg aW4gc21hcnRkIGRhdGFiYXNlLg0KU2VwIDI1IDA3OjQ1OjEzIHRyZW9nZW4gc21hcnRkWzMwODdd OiBEZXZpY2U6IC9kZXYvc2RhLCBpcyBTTUFSVCBjYXBhYmxlLiBBZGRpbmcgdG8gIm1vbml0b3Ii IGxpc3QuDQpTZXAgMjUgMDc6NDU6MTMgdHJlb2dlbiBzbWFydGRbMzA4N106IERldmljZTogL2Rl di9zZGIsIG9wZW5lZA0KU2VwIDI1IDA3OjQ1OjEzIHRyZW9nZW4gc21hcnRkWzMwODddOiBEZXZp Y2U6IC9kZXYvc2RiLCBmb3VuZCBpbiBzbWFydGQgZGF0YWJhc2UuDQpTZXAgMjUgMDc6NDU6MTMg dHJlb2dlbiBzbWFydGRbMzA4N106IERldmljZTogL2Rldi9zZGIsIGlzIFNNQVJUIGNhcGFibGUu IEFkZGluZyB0byAibW9uaXRvciIgbGlzdC4NClNlcCAyNSAwNzo0NToxMyB0cmVvZ2VuIHNtYXJ0 ZFszMDg3XTogRGV2aWNlOiAvZGV2L3NkYywgb3BlbmVkDQpTZXAgMjUgMDc6NDU6MTMgdHJlb2dl biBzbWFydGRbMzA4N106IERldmljZTogL2Rldi9zZGMsIGZvdW5kIGluIHNtYXJ0ZCBkYXRhYmFz ZS4NClNlcCAyNSAwNzo0NToxMyB0cmVvZ2VuIHNtYXJ0ZFszMDg3XTogRGV2aWNlOiAvZGV2L3Nk YywgaXMgU01BUlQgY2FwYWJsZS4gQWRkaW5nIHRvICJtb25pdG9yIiBsaXN0Lg0KU2VwIDI1IDA3 OjQ1OjEzIHRyZW9nZW4gc21hcnRkWzMwODddOiBNb25pdG9yaW5nIDMgQVRBIGFuZCAwIFNDU0kg ZGV2aWNlcw0KU2VwIDI1IDA3OjQ1OjEzIHRyZW9nZW4gc21hcnRkWzMxMDBdOiBzbWFydGQgaGFz IGZvcmsoKWVkIGludG8gYmFja2dyb3VuZCBtb2RlLiBOZXcgUElEPTMxMDAuDQpTZXAgMjUgMDc6 NDU6MTMgdHJlb2dlbiBzbWFydGRbMzEwMF06IGZpbGUgL3Zhci9ydW4vc21hcnRkLnBpZCB3cml0 dGVuIGNvbnRhaW5pbmcgUElEIDMxMDANClNlcCAyNSAwNzo0NToxNSB0cmVvZ2VuIGNyb25bMzEy OF06IChDUk9OKSBTVEFSVFVQIChWNS4wKQ0KU2VwIDI1IDA3OjQ2OjA4IHRyZW9nZW4gcG9sa2l0 ZFszMjc3XTogc3RhcnRlZCBkYWVtb24gdmVyc2lvbiAwLjk2IHVzaW5nIGF1dGhvcml0eSBpbXBs ZW1lbnRhdGlvbiBgbG9jYWwnIHZlcnNpb24gYDAuOTYnDQpTZXAgMjUgMDc6NDY6MDggdHJlb2dl biBwb2xraXRkKGF1dGhvcml0eT1sb2NhbCk6IFJlZ2lzdGVyZWQgQXV0aGVudGljYXRpb24gQWdl bnQgZm9yIHNlc3Npb24gL29yZy9mcmVlZGVza3RvcC9Db25zb2xlS2l0L1Nlc3Npb24xIChzeXN0 ZW0gYnVzIG5hbWUgOjEuMTEgWy91c3IvbGliNjQva2RlNC9saWJleGVjL3BvbGtpdC1rZGUtYXV0 aGVudGljYXRpb24tYWdlbnQtMSAtc2Vzc2lvbiAxMGRiZDdkMzZmMDAwMTI3NzQzMjE2MjAwMDAw MDY3NDcwMDA5XzEyODUzNjUxMTRfMjYxNjRdLCBvYmplY3QgcGF0aCAvb3JnL2tkZS9Qb2xpY3lL aXQxL0F1dGhlbnRpY2F0aW9uQWdlbnQsIGxvY2FsZSBlbl9HQi51dGY4KQ0KU2VwIDI1IDA3OjQ2 OjE0IHRyZW9nZW4gcHVsc2VhdWRpb1szMzQyXTogcGlkLmM6IERhZW1vbiBhbHJlYWR5IHJ1bm5p bmcuDQpTZXAgMjUgMDc6NDY6MTQgdHJlb2dlbiBwdWxzZWF1ZGlvWzMzNDNdOiBwaWQuYzogRGFl bW9uIGFscmVhZHkgcnVubmluZy4NClNlcCAyNSAwNzo0NjoxNCB0cmVvZ2VuIHB1bHNlYXVkaW9b MzM0NV06IHBpZC5jOiBEYWVtb24gYWxyZWFkeSBydW5uaW5nLg0KU2VwIDI1IDA3OjQ2OjMyIHRy ZW9nZW4gc3VbMzM4NV06IFN1Y2Nlc3NmdWwgc3UgZm9yIHJvb3QgYnkgdGsxMw0KU2VwIDI1IDA3 OjQ2OjMyIHRyZW9nZW4gc3VbMzM4NV06ICsgL2Rldi9wdHMvMyB0azEzOnJvb3QNClNlcCAyNSAw Nzo0NjozMiB0cmVvZ2VuIHN1WzMzODVdOiBwYW1fdW5peChzdTpzZXNzaW9uKTogc2Vzc2lvbiBv cGVuZWQgZm9yIHVzZXIgcm9vdCBieSB0azEzKHVpZD0xMDAwKQ0KU2VwIDI1IDA3OjUwOjAxIHRy ZW9nZW4gY3JvblszNDQ0XTogKHJvb3QpIENNRCAodGVzdCAteCAvdXNyL3NiaW4vcnVuLWNyb25z ICYmIC91c3Ivc2Jpbi9ydW4tY3JvbnMgKQ0KWyAxMDMzLjMxMjQwN10gU3lzUnEgOiBTaG93IEJs b2NrZWQgU3RhdGUNClsgMTAzNS44NzY2MDJdIFN5c1JxIDogQ2hhbmdpbmcgTG9nbGV2ZWwNClsg MTAzNS44ODA0MDVdIExvZ2xldmVsIHNldCB0byA2DQpbIDEwODEuNzYwMDU2XSBJTkZPOiB0YXNr IFg6MjU4NSBibG9ja2VkIGZvciBtb3JlIHRoYW4gMTIwIHNlY29uZHMuDQpbIDEwODEuNzY2MzAy XSAiZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9odW5nX3Rhc2tfdGltZW91dF9zZWNzIiBkaXNh YmxlcyB0aGlzIG1lc3NhZ2UuDQpbIDEwODEuNzc0NDEwXSAgZmZmZjg4MDExZjJiOWM3MCAwMDAw MDAwMDAwMDAzMDgyIGZmZmY4ODAxMDAwMDAwMDEgZmZmZjg4MDEwMDAwMDAwMw0KWyAxMDgxLjc4 MjE0Nl0gIGZmZmY4ODAwMDc4ZGQ1NTAgMDAwMDAwMDAwMDAxMjc4MCBmZmZmODgwMTFlMDMxZmQ4 IDAwMDAwMDAwMDAwMTI3ODANClsgMTA4MS43ODk4NTBdICBmZmZmODgwMTFlMDMxZmQ4IGZmZmY4 ODAxMWYyYjllZDAgZmZmZjg4MDExZTAzMWZkOCBmZmZmODgwMTFmMmI5ZWM4DQpbIDEwODEuNzk3 NjA2XSBDYWxsIFRyYWNlOg0KWyAxMDgxLjgwMDE2Nl0gIFs8ZmZmZmZmZmY4MTA4MDFjMD5dID8g c3luY19wYWdlKzB4MC8weDUwDQpbIDEwODEuODA1NTA5XSAgWzxmZmZmZmZmZjgxNTYwNzhkPl0g PyBpb19zY2hlZHVsZSsweDNkLzB4NjANClsgMTA4MS44MTExMjldICBbPGZmZmZmZmZmODEwODAx ZmQ+XSA/IHN5bmNfcGFnZSsweDNkLzB4NTANClsgMTA4MS44MTY1NTZdICBbPGZmZmZmZmZmODE1 NjBiN2E+XSA/IF9fd2FpdF9vbl9iaXRfbG9jaysweDRhLzB4YTANClsgMTA4MS44MjI4MDJdICBb PGZmZmZmZmZmODEwODAxOWU+XSA/IF9fbG9ja19wYWdlKzB4NWUvMHg3MA0KWyAxMDgxLjgyODQy MF0gIFs8ZmZmZmZmZmY4MTA1MmVhMD5dID8gd2FrZV9iaXRfZnVuY3Rpb24rMHgwLzB4NDANClsg MTA4MS44MzQ0ODhdICBbPGZmZmZmZmZmODEwOTljZTc+XSA/IGhhbmRsZV9tbV9mYXVsdCsweGE0 Ny8weGE2MA0KWyAxMDgxLjg0MDY0MV0gIFs8ZmZmZmZmZmY4MTNkNGIwYz5dID8gZXZkZXZfcmVh ZCsweGVjLzB4MjcwDQpbIDEwODEuODQ2MjU4XSAgWzxmZmZmZmZmZjgxMGNkOTFmPl0gPyBkb192 ZnNfaW9jdGwrMHg5Zi8weDUzMA0KWyAxMDgxLjg1MjA3N10gIFs8ZmZmZmZmZmY4MTAyNDA0ZD5d ID8gZG9fcGFnZV9mYXVsdCsweDEwZC8weDMyMA0KWyAxMDgxLjg1ODA1Ml0gIFs8ZmZmZmZmZmY4 MTU2MjY1Zj5dID8gcGFnZV9mYXVsdCsweDFmLzB4MzANClsgMTA4MS44NjM1OTFdIElORk86IHRh c2sgaGFsZC1hZGRvbi1pbnB1OjI4MDUgYmxvY2tlZCBmb3IgbW9yZSB0aGFuIDEyMCBzZWNvbmRz Lg0KWyAxMDgxLjg3MTEwN10gImVjaG8gMCA+IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3Rp bWVvdXRfc2VjcyIgZGlzYWJsZXMgdGhpcyBtZXNzYWdlLg0KWyAxMDgxLjg3OTI0NV0gIGZmZmY4 ODAwMDcxY2YxYzAgMDAwMDAwMDAwMDAwMDA4MiBmZmZmODgwMTAwMDAwMDAxIGZmZmY4ODAwMDAw MDAwMDMNClsgMTA4MS44ODcwMTJdICBmZmZmODgwMDdmNzFjNDQwIDAwMDAwMDAwMDAwMTI3ODAg ZmZmZjg4MDAwNDE3YmZkOCAwMDAwMDAwMDAwMDEyNzgwDQpbIDEwODEuODk0Nzc3XSAgZmZmZjg4 MDAwNDE3YmZkOCBmZmZmODgwMDA3MWNmNDIwIGZmZmY4ODAwMDQxN2JmZDggZmZmZjg4MDAwNzFj ZjQxOA0KWyAxMDgxLjkwMjUxN10gQ2FsbCBUcmFjZToNClsgMTA4MS45MDUwNzhdICBbPGZmZmZm ZmZmODEwODAxYzA+XSA/IHN5bmNfcGFnZSsweDAvMHg1MA0KWyAxMDgxLjkxMDQ0M10gIFs8ZmZm ZmZmZmY4MTU2MDc4ZD5dID8gaW9fc2NoZWR1bGUrMHgzZC8weDYwDQpbIDEwODEuOTE2MDQ4XSAg WzxmZmZmZmZmZjgxMDgwMWZkPl0gPyBzeW5jX3BhZ2UrMHgzZC8weDUwDQpbIDEwODEuOTIxNDky XSAgWzxmZmZmZmZmZjgxNTYwYjdhPl0gPyBfX3dhaXRfb25fYml0X2xvY2srMHg0YS8weGEwDQpb IDEwODEuOTI3NzMxXSAgWzxmZmZmZmZmZjgxMDgwMTllPl0gPyBfX2xvY2tfcGFnZSsweDVlLzB4 NzANClsgMTA4MS45MzMzNDZdICBbPGZmZmZmZmZmODEwNTJlYTA+XSA/IHdha2VfYml0X2Z1bmN0 aW9uKzB4MC8weDQwDQpbIDEwODEuOTM5NDE0XSAgWzxmZmZmZmZmZjgxMDk5Y2U3Pl0gPyBoYW5k bGVfbW1fZmF1bHQrMHhhNDcvMHhhNjANClsgMTA4MS45NDU1NzVdICBbPGZmZmZmZmZmODE1NjAy YWM+XSA/IHNjaGVkdWxlKzB4MjRjLzB4NmYwDQpbIDEwODEuOTUxMjc3XSAgWzxmZmZmZmZmZjgx MDI0MDRkPl0gPyBkb19wYWdlX2ZhdWx0KzB4MTBkLzB4MzIwDQpbIDEwODEuOTU3MTAzXSAgWzxm ZmZmZmZmZjgxNTYyNjVmPl0gPyBwYWdlX2ZhdWx0KzB4MWYvMHgzMA0KWyAxMDgxLjk2MjQ5NF0g IFs8ZmZmZmZmZmY4MTBjZjI5ZT5dID8gZG9fc3lzX3BvbGwrMHgyYmUvMHg0YjANClsgMTA4MS45 NjgxMjZdICBbPGZmZmZmZmZmODEwY2YyODU+XSA/IGRvX3N5c19wb2xsKzB4MmE1LzB4NGIwDQpb IDEwODEuOTczNzg3XSAgWzxmZmZmZmZmZjgxMGNlY2YwPl0gPyBfX3BvbGx3YWl0KzB4MC8weDEx MA0KWyAxMDgxLjk3OTE2N10gIFs8ZmZmZmZmZmY4MTBjZWUwMD5dID8gcG9sbHdha2UrMHgwLzB4 NjANClsgMTA4MS45ODQyOThdICBbPGZmZmZmZmZmODEwY2VlMDA+XSA/IHBvbGx3YWtlKzB4MC8w eDYwDQpbIDEwODEuOTg5NDIxXSAgWzxmZmZmZmZmZjgxMGNlZTAwPl0gPyBwb2xsd2FrZSsweDAv MHg2MA0KWyAxMDgxLjk5NDU0MV0gIFs8ZmZmZmZmZmY4MTBjZWUwMD5dID8gcG9sbHdha2UrMHgw LzB4NjANClsgMTA4MS45OTk2NjVdICBbPGZmZmZmZmZmODEwY2VlMDA+XSA/IHBvbGx3YWtlKzB4 MC8weDYwDQpbIDEwODIuMDA0Nzc5XSAgWzxmZmZmZmZmZjgxMGMyMmVkPl0gPyBjaHJkZXZfb3Bl bisweGRkLzB4MTgwDQpbIDEwODIuMDEwMzQ2XSAgWzxmZmZmZmZmZjgxMDgwZTY4Pl0gPyBmaW5k X2dldF9wYWdlKzB4MTgvMHhhMA0KWyAxMDgyLjAxNTk5Ml0gIFs8ZmZmZmZmZmY4MTA4MTllOT5d ID8gZmlsZW1hcF9mYXVsdCsweDk5LzB4M2YwDQpbIDEwODIuMDIxNzMzXSAgWzxmZmZmZmZmZjgx NGEzZWZhPl0gPyB2ZXJpZnlfaW92ZWMrMHg2YS8weGMwDQpbIDEwODIuMDI3Mjc3XSAgWzxmZmZm ZmZmZjgxMDk3M2VhPl0gPyBfX2RvX2ZhdWx0KzB4M2RhLzB4NGIwDQpbIDEwODIuMDMyODQ4XSAg WzxmZmZmZmZmZjgxNTYyNDRlPl0gPyBjb21tb25faW50ZXJydXB0KzB4ZS8weDEzDQpbIDEwODIu MDM4Njc0XSAgWzxmZmZmZmZmZjgxM2Q0YjYzPl0gPyBldmRldl9yZWFkKzB4MTQzLzB4MjcwDQpb IDEwODIuMDQ0MjM2XSAgWzxmZmZmZmZmZjgxM2QyOGUyPl0gPyBpbnB1dF9ldmVudF90b191c2Vy KzB4NjIvMHg3MA0KWyAxMDgyLjA1MDQxNl0gIFs8ZmZmZmZmZmY4MTBjZjY5MT5dID8gc3lzX3Bv bGwrMHg3MS8weDEwMA0KWyAxMDgyLjA1NTcxMl0gIFs8ZmZmZmZmZmY4MTU2MjY1Zj5dID8gcGFn ZV9mYXVsdCsweDFmLzB4MzANClsgMTA4Mi4wNjExNjVdICBbPGZmZmZmZmZmODEwMDI0NmI+XSA/ IHN5c3RlbV9jYWxsX2Zhc3RwYXRoKzB4MTYvMHgxYg0KWyAxMDgyLjA2NzY1NF0gSU5GTzogdGFz ayBwbGFzbWEtZGVza3RvcDozMTY5IGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25kcy4N ClsgMTA4Mi4wNzUxNjZdICJlY2hvIDAgPiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1l b3V0X3NlY3MiIGRpc2FibGVzIHRoaXMgbWVzc2FnZS4NClsgMTA4Mi4wODM0MjVdICBmZmZmODgw MTFlZjg2MGIwIDAwMDAwMDAwMDAwMDAwODYgMDAwMDAwMDExZWY4NjBiMCBmZmZmODgwMTE0ZmFm ZjQ4DQpbIDEwODIuMDkxMjM0XSAgZmZmZjg4MDAwNzFjZjFjMCAwMDAwMDAwMDAwMDEyNzgwIGZm ZmY4ODAxMTRmYWZmZDggMDAwMDAwMDAwMDAxMjc4MA0KWyAxMDgyLjA5OTA1MV0gIGZmZmY4ODAx MTRmYWZmZDggZmZmZjg4MDExZWY4NjMxMCBmZmZmODgwMTE0ZmFmZmQ4IGZmZmY4ODAxMWVmODYz MDgNClsgMTA4Mi4xMDY4ODddIENhbGwgVHJhY2U6DQpbIDEwODIuMTA5NDY3XSAgWzxmZmZmZmZm ZjgxNTYxMmMxPl0gPyBfX211dGV4X2xvY2tfc2xvd3BhdGgrMHhlMS8weDE2MA0KWyAxMDgyLjEx NjE2NV0gIFs8ZmZmZmZmZmY4MTBkMWU1Nz5dID8gX19kX2xvb2t1cCsweDk3LzB4MTIwDQpbIDEw ODIuMTIxODQ5XSAgWzxmZmZmZmZmZjgxNTYwZDhhPl0gPyBtdXRleF9sb2NrKzB4MWEvMHg0MA0K WyAxMDgyLjEyNzQzOV0gIFs8ZmZmZmZmZmY4MTBjOWRiZj5dID8gZG9fbG9va3VwKzB4MTBmLzB4 MTkwDQpbIDEwODIuMTMzMDk5XSAgWzxmZmZmZmZmZjgxMGM3ZTI0Pl0gPyBhY2xfcGVybWlzc2lv bl9jaGVjaysweDU0LzB4YjANClsgMTA4Mi4xMzk1OThdICBbPGZmZmZmZmZmODEwY2E4ZDk+XSA/ IGxpbmtfcGF0aF93YWxrKzB4NGM5LzB4OWEwDQpbIDEwODIuMTQ1NzMzXSAgWzxmZmZmZmZmZjgx MGQ2NWY0Pl0gPyBtbnRfd2FudF93cml0ZSsweDM0LzB4NzANClsgMTA4Mi4xNTE2NzhdICBbPGZm ZmZmZmZmODEwY2FlY2Y+XSA/IHBhdGhfd2FsaysweDVmLzB4ZTANClsgMTA4Mi4xNTcxNzRdICBb PGZmZmZmZmZmODEwY2FmOWI+XSA/IGRvX3BhdGhfbG9va3VwKzB4NGIvMHg1MA0KWyAxMDgyLjE2 MzExMF0gIFs8ZmZmZmZmZmY4MTBjYmMzNT5dID8gdXNlcl9wYXRoX2F0KzB4NTUvMHhiMA0KWyAx MDgyLjE2ODg4NF0gIFs8ZmZmZmZmZmY4MTAyZTg2MD5dID8gX19kZXF1ZXVlX2VudGl0eSsweDQw LzB4NTANClsgMTA4Mi4xNzUwMjJdICBbPGZmZmZmZmZmODEwN2JjZjQ+XSA/IHBlcmZfZXZlbnRf dGFza19zY2hlZF9vdXQrMHg0NC8weDI2MA0KWyAxMDgyLjE4MjA1Nl0gIFs8ZmZmZmZmZmY4MTBj MmU0Nj5dID8gdmZzX2ZzdGF0YXQrMHgzNi8weDgwDQpbIDEwODIuMTg3NzQyXSAgWzxmZmZmZmZm ZjgxNTYwMmFjPl0gPyBzY2hlZHVsZSsweDI0Yy8weDZmMA0KWyAxMDgyLjE5MzMzMV0gIFs8ZmZm ZmZmZmY4MTBjMmY4Zj5dID8gc3lzX25ld3N0YXQrMHgxZi8weDUwDQpbIDEwODIuMTk5MDE5XSAg WzxmZmZmZmZmZjgxMDAzMDM1Pl0gPyBkZXZpY2Vfbm90X2F2YWlsYWJsZSsweDE1LzB4MjANClsg MTA4Mi4yMDU1MzVdICBbPGZmZmZmZmZmODEwMDI0NmI+XSA/IHN5c3RlbV9jYWxsX2Zhc3RwYXRo KzB4MTYvMHgxYg0KWyAxMDgyLjIxMjAzNF0gSU5GTzogdGFzayB2aXJ0dW9zby10OjMzNjIgYmxv Y2tlZCBmb3IgbW9yZSB0aGFuIDEyMCBzZWNvbmRzLg0KWyAxMDgyLjIxOTE2M10gImVjaG8gMCA+ IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3RpbWVvdXRfc2VjcyIgZGlzYWJsZXMgdGhpcyBt ZXNzYWdlLg0KWyAxMDgyLjIyNzQxMl0gIGZmZmY4ODAwZGY4YWM0NDAgMDAwMDAwMDAwMDAwMDA4 MiBmZmZmODgwMTAwMDAwMDAxIGZmZmY4ODAwMDAwMDAwMDMNClsgMTA4Mi4yMzUyMzFdICBmZmZm ODgwMGJhNmU2MGIwIDAwMDAwMDAwMDAwMTI3ODAgZmZmZjg4MDBkZTI2NWZkOCAwMDAwMDAwMDAw MDEyNzgwDQpbIDEwODIuMjQzMDY1XSAgZmZmZjg4MDBkZTI2NWZkOCBmZmZmODgwMGRmOGFjNmEw IGZmZmY4ODAwZGUyNjVmZDggZmZmZjg4MDBkZjhhYzY5OA0KWyAxMDgyLjI1MDg2NF0gQ2FsbCBU cmFjZToNClsgMTA4Mi4yNTM0NDVdICBbPGZmZmZmZmZmODEwODAxYzA+XSA/IHN5bmNfcGFnZSsw eDAvMHg1MA0KWyAxMDgyLjI1ODg0NF0gIFs8ZmZmZmZmZmY4MTU2MDc4ZD5dID8gaW9fc2NoZWR1 bGUrMHgzZC8weDYwDQpbIDEwODIuMjY0NTA4XSAgWzxmZmZmZmZmZjgxMDgwMWZkPl0gPyBzeW5j X3BhZ2UrMHgzZC8weDUwDQpbIDEwODIuMjY5OTg5XSAgWzxmZmZmZmZmZjgxNTYwYjdhPl0gPyBf X3dhaXRfb25fYml0X2xvY2srMHg0YS8weGEwDQpbIDEwODIuMjc2Mjk2XSAgWzxmZmZmZmZmZjgx MDgwMTllPl0gPyBfX2xvY2tfcGFnZSsweDVlLzB4NzANClsgMTA4Mi4yODE5ODRdICBbPGZmZmZm ZmZmODEwNTJlYTA+XSA/IHdha2VfYml0X2Z1bmN0aW9uKzB4MC8weDQwDQpbIDEwODIuMjg4MTE5 XSAgWzxmZmZmZmZmZjgxMDk5Y2U3Pl0gPyBoYW5kbGVfbW1fZmF1bHQrMHhhNDcvMHhhNjANClsg MTA4Mi4yOTQzMzNdICBbPGZmZmZmZmZmODE1NjAyYWM+XSA/IHNjaGVkdWxlKzB4MjRjLzB4NmYw DQpbIDEwODIuMjk5OTA1XSAgWzxmZmZmZmZmZjgxMDI0MDRkPl0gPyBkb19wYWdlX2ZhdWx0KzB4 MTBkLzB4MzIwDQpbIDEwODIuMzA1OTM2XSAgWzxmZmZmZmZmZjgxNTYyNjVmPl0gPyBwYWdlX2Zh dWx0KzB4MWYvMHgzMA0KWyAxMDgyLjMxMTU0MV0gSU5GTzogdGFzayBjYzFwbHVzOjEyNjI2IGJs b2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25kcy4NClsgMTA4Mi4zMTg0NzNdICJlY2hvIDAg PiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1lb3V0X3NlY3MiIGRpc2FibGVzIHRoaXMg bWVzc2FnZS4NClsgMTA4Mi4zMjY2OThdICBmZmZmODgwMDNlY2YyZDgwIDAwMDAwMDAwMDAwMDAw ODIgZmZmZjg4MDEwMDAwMDAwMSBmZmZmODgwMDAwMDAwMDAzDQpbIDEwODIuMzM0NTUyXSAgZmZm Zjg4MDAxZjk1YjhlMCAwMDAwMDAwMDAwMDEyNzgwIGZmZmY4ODAwMGVjODlmZDggMDAwMDAwMDAw MDAxMjc4MA0KWyAxMDgyLjM0MjM4NF0gIGZmZmY4ODAwMGVjODlmZDggZmZmZjg4MDAzZWNmMmZl MCBmZmZmODgwMDBlYzg5ZmQ4IGZmZmY4ODAwM2VjZjJmZDgNClsgMTA4Mi4zNTAyNDZdIENhbGwg VHJhY2U6DQpbIDEwODIuMzUyODI1XSAgWzxmZmZmZmZmZjgxMDgwMWMwPl0gPyBzeW5jX3BhZ2Ur MHgwLzB4NTANClsgMTA4Mi4zNTgyMTNdICBbPGZmZmZmZmZmODE1NjA3OGQ+XSA/IGlvX3NjaGVk dWxlKzB4M2QvMHg2MA0KWyAxMDgyLjM2Mzg4Ml0gIFs8ZmZmZmZmZmY4MTA4MDFmZD5dID8gc3lu Y19wYWdlKzB4M2QvMHg1MA0KWyAxMDgyLjM2OTM3NV0gIFs8ZmZmZmZmZmY4MTU2MGI3YT5dID8g X193YWl0X29uX2JpdF9sb2NrKzB4NGEvMHhhMA0KWyAxMDgyLjM3NTcwMV0gIFs8ZmZmZmZmZmY4 MTA4MDE5ZT5dID8gX19sb2NrX3BhZ2UrMHg1ZS8weDcwDQpbIDEwODIuMzgxMzk3XSAgWzxmZmZm ZmZmZjgxMDUyZWEwPl0gPyB3YWtlX2JpdF9mdW5jdGlvbisweDAvMHg0MA0KWyAxMDgyLjM4NzUy Nl0gIFs8ZmZmZmZmZmY4MTA5OWNlNz5dID8gaGFuZGxlX21tX2ZhdWx0KzB4YTQ3LzB4YTYwDQpb IDEwODIuMzkzNzY1XSAgWzxmZmZmZmZmZjgxMDI0MDRkPl0gPyBkb19wYWdlX2ZhdWx0KzB4MTBk LzB4MzIwDQpbIDEwODIuMzk5Nzg2XSAgWzxmZmZmZmZmZjgxNTYyNjVmPl0gPyBwYWdlX2ZhdWx0 KzB4MWYvMHgzMA0KWyAxMjAyLjQwMDA0Nl0gSU5GTzogdGFzayBrd29ya2VyL3U6ODo4NDUgYmxv Y2tlZCBmb3IgbW9yZSB0aGFuIDEyMCBzZWNvbmRzLg0KWyAxMjAyLjQwNzEyOF0gImVjaG8gMCA+ IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3RpbWVvdXRfc2VjcyIgZGlzYWJsZXMgdGhpcyBt ZXNzYWdlLg0KWyAxMjAyLjQxNTM3Ml0gIGZmZmY4ODAwN2ZmYThiNjAgMDAwMDAwMDAwMDAwMDA0 NiBmZmZmODgwMDdmNzRmZTk4IDAwMDAwMDAwMDAwMDAwMDANClsgMTIwMi40MjMyMjldICBmZmZm ODgwMDA3MWNmNzcwIDAwMDAwMDAwMDAwMTI3ODAgZmZmZjg4MDAwNzBlOWZkOCAwMDAwMDAwMDAw MDEyNzgwDQpbIDEyMDIuNDMxMDU0XSAgZmZmZjg4MDAwNzBlOWZkOCBmZmZmODgwMDdmZmE4ZGMw IGZmZmY4ODAwMDcwZTlmZDggZmZmZjg4MDA3ZmZhOGRiOA0KWyAxMjAyLjQzODg5OF0gQ2FsbCBU cmFjZToNClsgMTIwMi40NDE0OTVdICBbPGZmZmZmZmZmODE0MzYxZWQ+XSA/IG1kX3dyaXRlX3N0 YXJ0KzB4OWQvMHgxOTANClsgMTIwMi40NDc1MzZdICBbPGZmZmZmZmZmODEwNTJlNzA+XSA/IGF1 dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgzMA0KWyAxMjAyLjQ1NDMxMV0gIFs8ZmZmZmZm ZmY4MTA5MjVjYT5dID8gem9uZV9ucl9mcmVlX3BhZ2VzKzB4OWEvMHhiMA0KWyAxMjAyLjQ2MDYz OV0gIFs8ZmZmZmZmZmY4MTQyYzQyMz5dID8gbWFrZV9yZXF1ZXN0KzB4MjMvMHg4MDANClsgMTIw Mi40NjY0OTZdICBbPGZmZmZmZmZmODExZDkwZWE+XSA/IGJsa2NpcGhlcl93YWxrX2RvbmUrMHg4 YS8weDIzMA0KWyAxMjAyLjQ3Mjk5MF0gIFs8ZmZmZmZmZmY4MTFkZjRjND5dID8gY3J5cHRvX2Ni Y19lbmNyeXB0KzB4ZTQvMHgxODANClsgMTIwMi40NzkzMjddICBbPGZmZmZmZmZmODEwMmExNTA+ XSA/IHR3b2Zpc2hfZW5jcnlwdCsweDAvMHgxMA0KWyAxMjAyLjQ4NTI3Nl0gIFs8ZmZmZmZmZmY4 MTQzMWFjMz5dID8gbWRfbWFrZV9yZXF1ZXN0KzB4YzMvMHgyMjANClsgMTIwMi40OTE0MTJdICBb PGZmZmZmZmZmODExZWFmY2E+XSA/IGdlbmVyaWNfbWFrZV9yZXF1ZXN0KzB4MThhLzB4MzMwDQpb IDEyMDIuNDk4MDk2XSAgWzxmZmZmZmZmZjgxNDQ4NGZjPl0gPyBjcnlwdF9jb252ZXJ0KzB4MjVj LzB4MzEwDQpbIDEyMDIuNTA0MDkwXSAgWzxmZmZmZmZmZjgxNDQ4ODgxPl0gPyBrY3J5cHRkX2Ny eXB0KzB4MmQxLzB4M2YwDQpbIDEyMDIuNTEwMDMxXSAgWzxmZmZmZmZmZjgxNDQ4NWIwPl0gPyBr Y3J5cHRkX2NyeXB0KzB4MC8weDNmMA0KWyAxMjAyLjUxNjA4MV0gIFs8ZmZmZmZmZmY4MTA0ZDJl Yj5dID8gcHJvY2Vzc19vbmVfd29yaysweGZiLzB4MzcwDQpbIDEyMDIuNTIyMTIzXSAgWzxmZmZm ZmZmZjgxMDRlZTRjPl0gPyB3b3JrZXJfdGhyZWFkKzB4MTZjLzB4MzYwDQpbIDEyMDIuNTI3OTM1 XSAgWzxmZmZmZmZmZjgxMDRlY2UwPl0gPyB3b3JrZXJfdGhyZWFkKzB4MC8weDM2MA0KWyAxMjAy LjUzMzU0MV0gIFs8ZmZmZmZmZmY4MTA0ZWNlMD5dID8gd29ya2VyX3RocmVhZCsweDAvMHgzNjAN ClsgMTIwMi41MzkxMzFdICBbPGZmZmZmZmZmODEwNTI5ZTY+XSA/IGt0aHJlYWQrMHg5Ni8weGEw DQpbIDEyMDIuNTQ0MjQ1XSAgWzxmZmZmZmZmZjgxMDAzMTk0Pl0gPyBrZXJuZWxfdGhyZWFkX2hl bHBlcisweDQvMHgxMA0KWyAxMjAyLjU1MDM2M10gIFs8ZmZmZmZmZmY4MTA1Mjk1MD5dID8ga3Ro cmVhZCsweDAvMHhhMA0KWyAxMjAyLjU1NTM0Nl0gIFs8ZmZmZmZmZmY4MTAwMzE5MD5dID8ga2Vy bmVsX3RocmVhZF9oZWxwZXIrMHgwLzB4MTANClsgMTIwMi41NjE0NzldIElORk86IHRhc2sgWDoy NTg1IGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25kcy4NClsgMTIwMi41Njc1MDNdICJl Y2hvIDAgPiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1lb3V0X3NlY3MiIGRpc2FibGVz IHRoaXMgbWVzc2FnZS4NClsgMTIwMi41NzU0NjhdICBmZmZmODgwMTFmMmI5YzcwIDAwMDAwMDAw MDAwMDMwODIgZmZmZjg4MDEwMDAwMDAwMSBmZmZmODgwMTAwMDAwMDAzDQpbIDEyMDIuNTgzMDYw XSAgZmZmZjg4MDAwNzhkZDU1MCAwMDAwMDAwMDAwMDEyNzgwIGZmZmY4ODAxMWUwMzFmZDggMDAw MDAwMDAwMDAxMjc4MA0KWyAxMjAyLjU5MDc1N10gIGZmZmY4ODAxMWUwMzFmZDggZmZmZjg4MDEx ZjJiOWVkMCBmZmZmODgwMTFlMDMxZmQ4IGZmZmY4ODAxMWYyYjllYzgNClsgMTIwMi41OTg1Mzhd IENhbGwgVHJhY2U6DQpbIDEyMDIuNjAxMDU5XSAgWzxmZmZmZmZmZjgxMDgwMWMwPl0gPyBzeW5j X3BhZ2UrMHgwLzB4NTANClsgMTIwMi42MDYzODFdICBbPGZmZmZmZmZmODE1NjA3OGQ+XSA/IGlv X3NjaGVkdWxlKzB4M2QvMHg2MA0KWyAxMjAyLjYxMTg1NF0gIFs8ZmZmZmZmZmY4MTA4MDFmZD5d ID8gc3luY19wYWdlKzB4M2QvMHg1MA0KWyAxMjAyLjYxNzIxMF0gIFs8ZmZmZmZmZmY4MTU2MGI3 YT5dID8gX193YWl0X29uX2JpdF9sb2NrKzB4NGEvMHhhMA0KWyAxMjAyLjYyMzY4NF0gIFs8ZmZm ZmZmZmY4MTA4MDE5ZT5dID8gX19sb2NrX3BhZ2UrMHg1ZS8weDcwDQpbIDEyMDIuNjI5MzAwXSAg WzxmZmZmZmZmZjgxMDUyZWEwPl0gPyB3YWtlX2JpdF9mdW5jdGlvbisweDAvMHg0MA0KWyAxMjAy LjYzNTM5Nl0gIFs8ZmZmZmZmZmY4MTA5OWNlNz5dID8gaGFuZGxlX21tX2ZhdWx0KzB4YTQ3LzB4 YTYwDQpbIDEyMDIuNjQxNjA2XSAgWzxmZmZmZmZmZjgxM2Q0YjBjPl0gPyBldmRldl9yZWFkKzB4 ZWMvMHgyNzANClsgMTIwMi42NDcyNzVdICBbPGZmZmZmZmZmODEwY2Q5MWY+XSA/IGRvX3Zmc19p b2N0bCsweDlmLzB4NTMwDQpbIDEyMDIuNjUzMTI1XSAgWzxmZmZmZmZmZjgxMDI0MDRkPl0gPyBk b19wYWdlX2ZhdWx0KzB4MTBkLzB4MzIwDQpbIDEyMDIuNjU5MTA1XSAgWzxmZmZmZmZmZjgxNTYy NjVmPl0gPyBwYWdlX2ZhdWx0KzB4MWYvMHgzMA0KWyAxMjAyLjY2NDY5MF0gSU5GTzogdGFzayBo YWxkLWFkZG9uLWlucHU6MjgwNSBibG9ja2VkIGZvciBtb3JlIHRoYW4gMTIwIHNlY29uZHMuDQpb IDEyMDIuNjcyMjgyXSAiZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9odW5nX3Rhc2tfdGltZW91 dF9zZWNzIiBkaXNhYmxlcyB0aGlzIG1lc3NhZ2UuDQpbIDEyMDIuNjgwNTA3XSAgZmZmZjg4MDAw NzFjZjFjMCAwMDAwMDAwMDAwMDAwMDgyIGZmZmY4ODAxMDAwMDAwMDEgZmZmZjg4MDAwMDAwMDAw Mw0KWyAxMjAyLjY4ODI4OV0gIGZmZmY4ODAwN2Y3MWM0NDAgMDAwMDAwMDAwMDAxMjc4MCBmZmZm ODgwMDA0MTdiZmQ4IDAwMDAwMDAwMDAwMTI3ODANClsgMTIwMi42OTYxMDBdICBmZmZmODgwMDA0 MTdiZmQ4IGZmZmY4ODAwMDcxY2Y0MjAgZmZmZjg4MDAwNDE3YmZkOCBmZmZmODgwMDA3MWNmNDE4 DQpbIDEyMDIuNzAzOTI0XSBDYWxsIFRyYWNlOg0KWyAxMjAyLjcwNjUwM10gIFs8ZmZmZmZmZmY4 MTA4MDFjMD5dID8gc3luY19wYWdlKzB4MC8weDUwDQpbIDEyMDIuNzExOTAxXSAgWzxmZmZmZmZm ZjgxNTYwNzhkPl0gPyBpb19zY2hlZHVsZSsweDNkLzB4NjANClsgMTIwMi43MTc1NzddICBbPGZm ZmZmZmZmODEwODAxZmQ+XSA/IHN5bmNfcGFnZSsweDNkLzB4NTANClsgMTIwMi43MjMwODFdICBb PGZmZmZmZmZmODE1NjBiN2E+XSA/IF9fd2FpdF9vbl9iaXRfbG9jaysweDRhLzB4YTANClsgMTIw Mi43MjkzODFdICBbPGZmZmZmZmZmODEwODAxOWU+XSA/IF9fbG9ja19wYWdlKzB4NWUvMHg3MA0K WyAxMjAyLjczNTAzMV0gIFs8ZmZmZmZmZmY4MTA1MmVhMD5dID8gd2FrZV9iaXRfZnVuY3Rpb24r MHgwLzB4NDANClsgMTIwMi43NDExMTZdICBbPGZmZmZmZmZmODEwOTljZTc+XSA/IGhhbmRsZV9t bV9mYXVsdCsweGE0Ny8weGE2MA0KWyAxMjAyLjc0NzM0MF0gIFs8ZmZmZmZmZmY4MTU2MDJhYz5d ID8gc2NoZWR1bGUrMHgyNGMvMHg2ZjANClsgMTIwMi43NTI5MDJdICBbPGZmZmZmZmZmODEwMjQw NGQ+XSA/IGRvX3BhZ2VfZmF1bHQrMHgxMGQvMHgzMjANClsgMTIwMi43NTg4OTNdICBbPGZmZmZm ZmZmODE1NjI2NWY+XSA/IHBhZ2VfZmF1bHQrMHgxZi8weDMwDQpbIDEyMDIuNzY0NDI4XSAgWzxm ZmZmZmZmZjgxMGNmMjllPl0gPyBkb19zeXNfcG9sbCsweDJiZS8weDRiMA0KWyAxMjAyLjc3MDMz OF0gIFs8ZmZmZmZmZmY4MTBjZjI4NT5dID8gZG9fc3lzX3BvbGwrMHgyYTUvMHg0YjANClsgMTIw Mi43NzYxMTNdICBbPGZmZmZmZmZmODEwY2VjZjA+XSA/IF9fcG9sbHdhaXQrMHgwLzB4MTEwDQpb IDEyMDIuNzgxNTkxXSAgWzxmZmZmZmZmZjgxMGNlZTAwPl0gPyBwb2xsd2FrZSsweDAvMHg2MA0K WyAxMjAyLjc4Njc2NF0gIFs8ZmZmZmZmZmY4MTBjZWUwMD5dID8gcG9sbHdha2UrMHgwLzB4NjAN ClsgMTIwMi43OTE5NzNdICBbPGZmZmZmZmZmODEwY2VlMDA+XSA/IHBvbGx3YWtlKzB4MC8weDYw DQpbIDEyMDIuNzk3MTgxXSAgWzxmZmZmZmZmZjgxMGNlZTAwPl0gPyBwb2xsd2FrZSsweDAvMHg2 MA0KWyAxMjAyLjgwMjQ2OF0gIFs8ZmZmZmZmZmY4MTBjZWUwMD5dID8gcG9sbHdha2UrMHgwLzB4 NjANClsgMTIwMi44MDc3NzNdICBbPGZmZmZmZmZmODEwYzIyZWQ+XSA/IGNocmRldl9vcGVuKzB4 ZGQvMHgxODANClsgMTIwMi44MTM1NDVdICBbPGZmZmZmZmZmODEwODBlNjg+XSA/IGZpbmRfZ2V0 X3BhZ2UrMHgxOC8weGEwDQpbIDEyMDIuODE5Mzg0XSAgWzxmZmZmZmZmZjgxMDgxOWU5Pl0gPyBm aWxlbWFwX2ZhdWx0KzB4OTkvMHgzZjANClsgMTIwMi44MjUzMjZdICBbPGZmZmZmZmZmODE0YTNl ZmE+XSA/IHZlcmlmeV9pb3ZlYysweDZhLzB4YzANClsgMTIwMi44MzEwOTVdICBbPGZmZmZmZmZm ODEwOTczZWE+XSA/IF9fZG9fZmF1bHQrMHgzZGEvMHg0YjANClsgMTIwMi44MzY4NDddICBbPGZm ZmZmZmZmODE1NjI0NGU+XSA/IGNvbW1vbl9pbnRlcnJ1cHQrMHhlLzB4MTMNClsgMTIwMi44NDI4 NjVdICBbPGZmZmZmZmZmODEzZDRiNjM+XSA/IGV2ZGV2X3JlYWQrMHgxNDMvMHgyNzANClsgMTIw Mi44NDg2MjZdICBbPGZmZmZmZmZmODEzZDI4ZTI+XSA/IGlucHV0X2V2ZW50X3RvX3VzZXIrMHg2 Mi8weDcwDQpbIDEyMDIuODU1MDMyXSAgWzxmZmZmZmZmZjgxMGNmNjkxPl0gPyBzeXNfcG9sbCsw eDcxLzB4MTAwDQpbIDEyMDIuODYwNDk5XSAgWzxmZmZmZmZmZjgxNTYyNjVmPl0gPyBwYWdlX2Zh dWx0KzB4MWYvMHgzMA0KWyAxMjAyLjg2NjAwNV0gIFs8ZmZmZmZmZmY4MTAwMjQ2Yj5dID8gc3lz dGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiDQpbIDEyMDIuODcyNDI0XSBJTkZPOiB0YXNrIHBs YXNtYS1kZXNrdG9wOjMxNjkgYmxvY2tlZCBmb3IgbW9yZSB0aGFuIDEyMCBzZWNvbmRzLg0KWyAx MjAyLjg3OTg4M10gImVjaG8gMCA+IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3RpbWVvdXRf c2VjcyIgZGlzYWJsZXMgdGhpcyBtZXNzYWdlLg0KWyAxMjAyLjg4ODExOF0gIGZmZmY4ODAxMWVm ODYwYjAgMDAwMDAwMDAwMDAwMDA4NiAwMDAwMDAwMTFlZjg2MGIwIGZmZmY4ODAxMTRmYWZmNDgN ClsgMTIwMi44OTU5MzZdICBmZmZmODgwMDA3MWNmMWMwIDAwMDAwMDAwMDAwMTI3ODAgZmZmZjg4 MDExNGZhZmZkOCAwMDAwMDAwMDAwMDEyNzgwDQpbIDEyMDIuOTAzNzc3XSAgZmZmZjg4MDExNGZh ZmZkOCBmZmZmODgwMTFlZjg2MzEwIGZmZmY4ODAxMTRmYWZmZDggZmZmZjg4MDExZWY4NjMwOA0K WyAxMjAyLjkxMTU4Nl0gQ2FsbCBUcmFjZToNClsgMTIwMi45MTQxNDBdICBbPGZmZmZmZmZmODE1 NjEyYzE+XSA/IF9fbXV0ZXhfbG9ja19zbG93cGF0aCsweGUxLzB4MTYwDQpbIDEyMDIuOTIwNjkz XSAgWzxmZmZmZmZmZjgxMGQxZTU3Pl0gPyBfX2RfbG9va3VwKzB4OTcvMHgxMjANClsgMTIwMi45 MjYyNzJdICBbPGZmZmZmZmZmODE1NjBkOGE+XSA/IG11dGV4X2xvY2srMHgxYS8weDQwDQpbIDEy MDIuOTMxNzgzXSAgWzxmZmZmZmZmZjgxMGM5ZGJmPl0gPyBkb19sb29rdXArMHgxMGYvMHgxOTAN ClsgMTIwMi45Mzc0MjZdICBbPGZmZmZmZmZmODEwYzdlMjQ+XSA/IGFjbF9wZXJtaXNzaW9uX2No ZWNrKzB4NTQvMHhiMA0KWyAxMjAyLjk0Mzg5OF0gIFs8ZmZmZmZmZmY4MTBjYThkOT5dID8gbGlu a19wYXRoX3dhbGsrMHg0YzkvMHg5YTANClsgMTIwMi45NTAwMjhdICBbPGZmZmZmZmZmODEwZDY1 ZjQ+XSA/IG1udF93YW50X3dyaXRlKzB4MzQvMHg3MA0KWyAxMjAyLjk1NTk0N10gIFs8ZmZmZmZm ZmY4MTBjYWVjZj5dID8gcGF0aF93YWxrKzB4NWYvMHhlMA0KWyAxMjAyLjk2MTQxNl0gIFs8ZmZm ZmZmZmY4MTBjYWY5Yj5dID8gZG9fcGF0aF9sb29rdXArMHg0Yi8weDUwDQpbIDEyMDIuOTY3MzI1 XSAgWzxmZmZmZmZmZjgxMGNiYzM1Pl0gPyB1c2VyX3BhdGhfYXQrMHg1NS8weGIwDQpbIDEyMDIu OTczMDIwXSAgWzxmZmZmZmZmZjgxMDJlODYwPl0gPyBfX2RlcXVldWVfZW50aXR5KzB4NDAvMHg1 MA0KWyAxMjAyLjk3OTA1NF0gIFs8ZmZmZmZmZmY4MTA3YmNmND5dID8gcGVyZl9ldmVudF90YXNr X3NjaGVkX291dCsweDQ0LzB4MjYwDQpbIDEyMDIuOTg1OTk1XSAgWzxmZmZmZmZmZjgxMGMyZTQ2 Pl0gPyB2ZnNfZnN0YXRhdCsweDM2LzB4ODANClsgMTIwMi45OTE2MDBdICBbPGZmZmZmZmZmODE1 NjAyYWM+XSA/IHNjaGVkdWxlKzB4MjRjLzB4NmYwDQpbIDEyMDIuOTk3MTU3XSAgWzxmZmZmZmZm ZjgxMGMyZjhmPl0gPyBzeXNfbmV3c3RhdCsweDFmLzB4NTANClsgMTIwMy4wMDI3ODRdICBbPGZm ZmZmZmZmODEwMDMwMzU+XSA/IGRldmljZV9ub3RfYXZhaWxhYmxlKzB4MTUvMHgyMA0KWyAxMjAz LjAwOTIwNF0gIFs8ZmZmZmZmZmY4MTAwMjQ2Yj5dID8gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgx Ni8weDFiDQpbIDEyMDMuMDE1NjA4XSBJTkZPOiB0YXNrIHZpcnR1b3NvLXQ6MzM2MiBibG9ja2Vk IGZvciBtb3JlIHRoYW4gMTIwIHNlY29uZHMuDQpbIDEyMDMuMDIyNjMzXSAiZWNobyAwID4gL3By b2Mvc3lzL2tlcm5lbC9odW5nX3Rhc2tfdGltZW91dF9zZWNzIiBkaXNhYmxlcyB0aGlzIG1lc3Nh Z2UuDQpbIDEyMDMuMDMwNzI2XSAgZmZmZjg4MDBkZjhhYzQ0MCAwMDAwMDAwMDAwMDAwMDgyIGZm ZmY4ODAxMDAwMDAwMDEgZmZmZjg4MDAwMDAwMDAwMw0KWyAxMjAzLjAzODQ0OV0gIGZmZmY4ODAw YmE2ZTYwYjAgMDAwMDAwMDAwMDAxMjc4MCBmZmZmODgwMGRlMjY1ZmQ4IDAwMDAwMDAwMDAwMTI3 ODANClsgMTIwMy4wNDYyMTVdICBmZmZmODgwMGRlMjY1ZmQ4IGZmZmY4ODAwZGY4YWM2YTAgZmZm Zjg4MDBkZTI2NWZkOCBmZmZmODgwMGRmOGFjNjk4DQpbIDEyMDMuMDUzOTg4XSBDYWxsIFRyYWNl Og0KWyAxMjAzLjA1NjUzMl0gIFs8ZmZmZmZmZmY4MTA4MDFjMD5dID8gc3luY19wYWdlKzB4MC8w eDUwDQpbIDEyMDMuMDYxODM2XSAgWzxmZmZmZmZmZjgxNTYwNzhkPl0gPyBpb19zY2hlZHVsZSsw eDNkLzB4NjANClsgMTIwMy4wNjczOTBdICBbPGZmZmZmZmZmODEwODAxZmQ+XSA/IHN5bmNfcGFn ZSsweDNkLzB4NTANClsgMTIwMy4wNzI3NzVdICBbPGZmZmZmZmZmODE1NjBiN2E+XSA/IF9fd2Fp dF9vbl9iaXRfbG9jaysweDRhLzB4YTANClsgMTIwMy4wNzg5MjZdICBbPGZmZmZmZmZmODEwODAx OWU+XSA/IF9fbG9ja19wYWdlKzB4NWUvMHg3MA0KWyAxMjAzLjA4NDU1Ml0gIFs8ZmZmZmZmZmY4 MTA1MmVhMD5dID8gd2FrZV9iaXRfZnVuY3Rpb24rMHgwLzB4NDANClsgMTIwMy4wOTA2NzBdICBb PGZmZmZmZmZmODEwOTljZTc+XSA/IGhhbmRsZV9tbV9mYXVsdCsweGE0Ny8weGE2MA0KWyAxMjAz LjA5Njg2N10gIFs8ZmZmZmZmZmY4MTU2MDJhYz5dID8gc2NoZWR1bGUrMHgyNGMvMHg2ZjANClsg MTIwMy4xMDI0MzldICBbPGZmZmZmZmZmODEwMjQwNGQ+XSA/IGRvX3BhZ2VfZmF1bHQrMHgxMGQv MHgzMjANClsgMTIwMy4xMDg0NjJdICBbPGZmZmZmZmZmODE1NjI2NWY+XSA/IHBhZ2VfZmF1bHQr MHgxZi8weDMwDQpbIDEyMjkuNDIxNDgwXSBTeXNScSA6IEVtZXJnZW5jeSBTeW5jDQpbIDEyMzcu MDE0NTc1XSBTeXNScSA6IEVtZXJnZW5jeSBTeW5jDQpbIDEyMzkuMTIxNzg0XSBTeXNScSA6IEVt ZXJnZW5jeSBSZW1vdW50IFIvTw0KWyAxMjQzLjIzNDg0MF0gU3lzUnEgOiBFbWVyZ2VuY3kgU3lu Yw0KWyAxMjQ2LjMyNzA2MF0gU3lzUnEgOiBQb3dlciBPZmYNCg== --0023547c8bab9c42e80491e2916e-- From BATV+14f66c625a3ece7039b5+2599+infradead.org+hch@canuck.srs.infradead.org Tue Oct 5 13:16:51 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_51 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95IGmhV246283 for ; Tue, 5 Oct 2010 13:16:51 -0500 X-ASG-Debug-ID: 1286303491-792d03ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 374BA1102A1F; Tue, 5 Oct 2010 11:31:31 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id 4pO2FPs0HTVVFyYc; Tue, 05 Oct 2010 11:31:31 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3C4v-0008HZ-CX; Tue, 05 Oct 2010 18:17:29 +0000 Date: Tue, 5 Oct 2010 14:17:29 -0400 From: Christoph Hellwig To: Torsten Kaiser Cc: Tejun Heo , Yang Ruirui , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Christoph Hellwig , Alex Elder , Andrew Morton X-ASG-Orig-Subj: Re: -mm: xfs lockdep warning Subject: Re: -mm: xfs lockdep warning Message-ID: <20101005181729.GA30877@lst.de> References: <201009161546.16909.ruirui.r.yang@tieto.com> <20100917005227.GJ24409@dastard> <20100920191355.GA28443@infradead.org> <4CA997DF.5030008@kernel.org> <20101004092107.GJ4681@dastard> <4CAB5779.5020901@kernel.org> <4CAB5874.9060106@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-08-17) Sender: Christoph Hellwig X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286303492 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Oct 05, 2010 at 08:09:58PM +0200, Torsten Kaiser wrote: > Here is the complete log from bootup until the hang happened the second time. > I just logged into KDE and then started the upgrade of KOffice, which > meant that the package manager started to compile 4 programs each with > -j5. After a few minutes the load got to ~18 and probably at the point > where filecache and GCCs filled up my 4GB RAM the system got stuck. > The mouse so longer moved and SysRq+S did not work. The log was > captured via serial console on a second system. > > I will try tomorrow with frame pointers enabled.. Lots of hangs in sync_page and dm-crypt in the stack is unfortunately something we've seen quite a few times, and it usually points to that layer. In the best case we might just have a similar workqueue priority issue somewhere in the dm-crypt or maybe just md code. From sandeen@sandeen.net Tue Oct 5 15:11:17 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95KBG0V258404 for ; Tue, 5 Oct 2010 15:11:17 -0500 X-ASG-Debug-ID: 1286310359-633500330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C8BA71502CAD for ; Tue, 5 Oct 2010 13:25:59 -0700 (PDT) Received: from mail.sandeen.net (64-131-28-21.usfamily.net [64.131.28.21]) by cuda.sgi.com with ESMTP id yLTzkxSxlKfEKAjn for ; Tue, 05 Oct 2010 13:25:59 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id BAD3649632B9; Tue, 5 Oct 2010 15:12:17 -0500 (CDT) Message-ID: <4CAB86A1.5090305@sandeen.net> Date: Tue, 05 Oct 2010 15:12:17 -0500 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228) MIME-Version: 1.0 To: =?ISO-8859-1?Q?Larsen_Tore_H=F8ivaag?= CC: "xfs@oss.sgi.com" X-ASG-Orig-Subj: Re: xfs_freeze on multipathd lvm2 ? Subject: Re: xfs_freeze on multipathd lvm2 ? References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-28-21.usfamily.net[64.131.28.21] X-Barracuda-Start-Time: 1286310359 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Larsen wrote: > Does it work? I'll say "yes" Have you tested it and found otherwise? -Eric > Regards, > --ToreL From michael.monnerie@is.it-management.at Tue Oct 5 16:27:36 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o95LRZP3003753 for ; Tue, 5 Oct 2010 16:27:36 -0500 X-ASG-Debug-ID: 1286314116-022200560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7CF4B18B93AF for ; Tue, 5 Oct 2010 14:28:37 -0700 (PDT) Received: from mailsrv14.zmi.at (mailsrv1.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id RapVGay8aG6tB0H9 for ; Tue, 05 Oct 2010 14:28:37 -0700 (PDT) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv14.zmi.at (Postfix) with ESMTPSA id 75C5717E; Tue, 5 Oct 2010 23:28:35 +0200 (CEST) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id EB813401C2F; Tue, 5 Oct 2010 23:28:34 +0200 (CEST) From: Michael Monnerie Organization: it-management http://it-management.at To: aelder@sgi.com X-ASG-Orig-Subj: Re: XFS Filename Hash and metadump Subject: Re: XFS Filename Hash and metadump Date: Tue, 5 Oct 2010 23:28:33 +0200 User-Agent: KMail/1.13.5 (Linux/2.6.34.7-0.3-desktop; KDE/4.4.4; x86_64; ; ) References: <1286290547.1960.3.camel@doink> In-Reply-To: <1286290547.1960.3.camel@doink> Cc: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart19497927.dixTAWZHFp"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201010052328.34390@zmi.at> X-Barracuda-Connect: mailsrv1.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1286314117 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42832 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart19497927.dixTAWZHFp Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Dienstag, 5. Oktober 2010 Alex Elder wrote: > PS Two more observations: > - There is really no need for the characters to be truly random. > Making the generated name unique and different from the > original is sufficient. So (with the exception of the last > five bytes) we can select the characters however we like. > They could be a sequential series of names, for example, > rather than computing a random value for each. I was thinking the same when reading your description. Why not simply=20 "number" the file names from 1 to whatever count of files/dirs there is=20 within that dir? =2D-=20 mit freundlichen Gr=C3=BCssen, Michael Monnerie, Ing. BSc it-management Internet Services http://proteger.at [gesprochen: Prot-e-schee] Tel: 0660 / 415 65 31 ****** Aktuelles Radiointerview! ****** http://www.it-podcast.at/aktuelle-sendung.html // Wir haben im Moment zwei H=C3=A4user zu verkaufen: // http://zmi.at/langegg/ // http://zmi.at/haus2009/ --nextPart19497927.dixTAWZHFp Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) iEYEABECAAYFAkyrmIIACgkQzhSR9xwSCbThjACgkFarpsQhnKg+ietMW0jkwYYv r2YAoKLLxOKqrcvzED/K4o4BKaUjwp4C =mBo4 -----END PGP SIGNATURE----- --nextPart19497927.dixTAWZHFp-- From SRS0+THj7+38+fromorbit.com=david@internode.on.net Tue Oct 5 23:53:01 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o964r1iP044792 for ; Tue, 5 Oct 2010 23:53:01 -0500 X-ASG-Debug-ID: 1286340842-67a701640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 60F58C648E for ; Tue, 5 Oct 2010 21:54:03 -0700 (PDT) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id zfC72YCGnFSu5Bmv for ; Tue, 05 Oct 2010 21:54:03 -0700 (PDT) Received: from dastard (unverified [121.44.66.70]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 41976593-1927428 for multiple; Wed, 06 Oct 2010 15:23:51 +1030 (CDT) Received: from dave by dastard with local (Exim 4.71) (envelope-from ) id 1P3M0j-0008OA-5H; Wed, 06 Oct 2010 15:53:49 +1100 Date: Wed, 6 Oct 2010 15:53:49 +1100 From: Dave Chinner To: Johannes Weiner Cc: Alex Elder , xfs@oss.sgi.com, John Hawley , linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes Message-ID: <20101006045349.GA13191@dastard> References: <20101001074354.GF2618@cmpxchg.org> <1285953443.2422.4.camel@doink> <20101004071904.GH4681@dastard> <20101004102213.GJ2618@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101004102213.GJ2618@cmpxchg.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1286340844 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42863 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 04, 2010 at 12:22:13PM +0200, Johannes Weiner wrote: > Hi, > > On Mon, Oct 04, 2010 at 06:19:04PM +1100, Dave Chinner wrote: > > On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: > > > On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > > > > When marking an inode reclaimable, a per-AG counter is increased, the > > > > inode is tagged reclaimable in its per-AG tree, and, when this is the > > > > first reclaimable inode in the AG, the AG entry in the per-mount tree > > > > is also tagged. > > > > > > > > When an inode is finally reclaimed, however, it is only deleted from > > > > the per-AG tree. Neither the counter is decreased, nor is the parent > > > > tree's AG entry untagged properly. > > > > > > > > Since the tags in the per-mount tree are not cleared, the inode > > > > shrinker iterates over all AGs that have had reclaimable inodes at one > > > > point in time. > > > > > > > > The counters on the other hand signal an increasing amount of slab > > > > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > > > > per-filesystem context" this is not a real issue anymore because the > > > > shrinker bails out after one iteration. > > > > > > > > But the problem was observable on a machine running v2.6.34, where the > > > > reclaimable work increased and each process going into direct reclaim > > > > eventually got stuck on the xfs inode shrinking path, trying to scan > > > > several million objects. > > > > > > > > Fix this by properly unwinding the reclaimable-state tracking of an > > > > inode when it is reclaimed. > > > > > > > > Signed-off-by: Johannes Weiner > > > > Cc: stable@kernel.org > > > > > > Yes, this looks right to me. The state was correctly > > > adjusted in xfs_iget_cache_hit() when a RECLAIMABLE > > > inode is found in the cache, but it was not done when > > > reclaim completes. > > > > > > Reviewed-by: Alex Elder > > > > Alex, can you push this to Linus ASAP? This needs to go back to > > stable kernels as well.. > > Here is my suggestion of a backport to .34. Dave, Alex, do you > approve? > > Hannes > > diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c > index 6845db9..3314f2a 100644 > --- a/fs/xfs/xfs_iget.c > +++ b/fs/xfs/xfs_iget.c > @@ -499,6 +499,7 @@ xfs_ireclaim( > write_lock(&pag->pag_ici_lock); > if (!radix_tree_delete(&pag->pag_ici_root, agino)) > ASSERT(0); > + pag->pag_ici_reclaimable--; > write_unlock(&pag->pag_ici_lock); > xfs_perag_put(pag); Looks good to me. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 04:40:55 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o969en6H074844 for ; Wed, 6 Oct 2010 04:40:55 -0500 X-ASG-Debug-ID: 1286358112-0f97015b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8F4331BB61B9 for ; Wed, 6 Oct 2010 02:41:52 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id 0VmspJUj6BBSXtbi for ; Wed, 06 Oct 2010 02:41:52 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3QVU-0006Jv-6w; Wed, 06 Oct 2010 09:41:52 +0000 Date: Wed, 6 Oct 2010 05:41:52 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for September 2010 Subject: XFS status update for September 2010 Message-ID: <20101006094152.GA24239@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) Sender: Christoph Hellwig X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286358112 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42880 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Mainline activity has been rather low in September while with only two more fixes going into the 2.6.36 release candidates after the large merge activity in August. Development for the next merge window has been more active. The largest item was the inclusion of the metadata scalability patch series, which provides very large speedups for parallel metadata operations. In addition a new ioctl to punch holes and convert the whole to an unwritten extent was added and a small number of cleanups also made it into the tree. Patches to add support for 32bit wide project ID identifiers and using group and project quotas concurrently were posted to the list and discussed but not yet included. Userspace development has been rather quited again, with a single fix committed to xfsprogs and xfsdump each. The xfstests test suite grew a new test case and received a few additional fixes. Last but not least the XFS Users Guide [1] was updated with various factual corrections and spelling fixes. [1] http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide//tmp/en-US/html/index.html From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:30:27 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IUMc2109572 for ; Wed, 6 Oct 2010 13:30:27 -0500 X-ASG-Debug-ID: 1286389885-303b00d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2B1E18C8736 for ; Wed, 6 Oct 2010 11:31:25 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id oz3Who0Mt3ifuUoU for ; Wed, 06 Oct 2010 11:31:25 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Ylv-0000Z0-Oi for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:31:23 +0000 Date: Wed, 6 Oct 2010 14:31:23 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: fix bogus m_maxagi check in xfs_iget Subject: [PATCH] xfs: fix bogus m_maxagi check in xfs_iget Message-ID: <20101006183123.GA2166@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) Sender: Christoph Hellwig X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286389885 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These days inode64 should only control which AGs we allocate new inodes from, while we still try to support reading all existing inodes. To make this actually work the check ontop of xfs_iget needs to be relaxed to allow inodes in all allocation groups instead of just those that we allow allocating inodes from. Note that we can't simply remove the check - it prevents us from accessing invalid data when fed invalid inode numbers from NFS or bulkstat. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_iget.c =================================================================== --- xfs.orig/fs/xfs/xfs_iget.c 2010-10-05 10:56:05.749253507 +0200 +++ xfs/fs/xfs/xfs_iget.c 2010-10-06 20:22:36.189003262 +0200 @@ -365,8 +365,8 @@ xfs_iget( xfs_perag_t *pag; xfs_agino_t agino; - /* the radix tree exists only in inode capable AGs */ - if (XFS_INO_TO_AGNO(mp, ino) >= mp->m_maxagi) + /* reject inode numbers outside existing AGs */ + if (XFS_INO_TO_AGNO(mp, ino) >= mp->m_sb.sb_agcount) return EINVAL; /* get the perag structure and ensure that it's inode capable */ From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:21 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeLiV110131 for ; Wed, 6 Oct 2010 13:40:21 -0500 X-ASG-Debug-ID: 1286390485-1d3801e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3A9D1C01E0E for ; Wed, 6 Oct 2010 11:41:25 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id vtpXAkCTX94dotOg for ; Wed, 06 Oct 2010 11:41:25 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yvd-00017b-7L for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:25 +0000 Message-Id: <20101006184111.634126439@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:11 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/7] a couple of random cleanups Subject: [PATCH 0/7] a couple of random cleanups X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390485 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:21 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeLfb110134 for ; Wed, 6 Oct 2010 13:40:21 -0500 X-ASG-Debug-ID: 1286390485-1d3a01bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E7FC71C01DFE for ; Wed, 6 Oct 2010 11:41:25 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id tpIkhGWvdJAx49Ar for ; Wed, 06 Oct 2010 11:41:25 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yvd-00018B-FS for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:25 +0000 Message-Id: <20101006184125.327557835@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:12 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/7] xfs: remove unused t_callback field in struct xfs_trans Subject: [PATCH 1/7] xfs: remove unused t_callback field in struct xfs_trans References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-remove-t_callback X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390485 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2010-10-05 10:57:50.793254343 +0200 +++ xfs/fs/xfs/xfs_trans.c 2010-10-06 11:10:13.774254205 +0200 @@ -1416,10 +1416,6 @@ xfs_trans_committed( { struct xfs_log_item_desc *lidp, *next; - /* Call the transaction's completion callback if there is one. */ - if (tp->t_callback != NULL) - tp->t_callback(tp, tp->t_callarg); - list_for_each_entry_safe(lidp, next, &tp->t_items, lid_trans) { xfs_trans_item_committed(lidp->lid_item, tp->t_lsn, abortflag); xfs_trans_free_item_desc(lidp); Index: xfs/fs/xfs/xfs_trans.h =================================================================== --- xfs.orig/fs/xfs/xfs_trans.h 2010-10-05 10:57:50.801254064 +0200 +++ xfs/fs/xfs/xfs_trans.h 2010-10-06 11:10:13.774254205 +0200 @@ -399,8 +399,6 @@ typedef struct xfs_trans { * transaction. */ struct xfs_mount *t_mountp; /* ptr to fs mount struct */ struct xfs_dquot_acct *t_dqinfo; /* acctg info for dquots */ - xfs_trans_callback_t t_callback; /* transaction callback */ - void *t_callarg; /* callback arg */ unsigned int t_flags; /* misc flags */ int64_t t_icount_delta; /* superblock icount change */ int64_t t_ifree_delta; /* superblock ifree change */ From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeN81110159 for ; Wed, 6 Oct 2010 13:40:23 -0500 X-ASG-Debug-ID: 1286391311-442401eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D66ED12EDC67 for ; Wed, 6 Oct 2010 11:55:12 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id ND5G9wdheYQtgJVT for ; Wed, 06 Oct 2010 11:55:12 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yvd-00018h-Oo for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:25 +0000 Message-Id: <20101006184125.617230666@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:13 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/7] xfs: fix the xfs_trans_committed Subject: [PATCH 2/7] xfs: fix the xfs_trans_committed References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-fix-cb_func_prototype X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286391312 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use the correct prototype for xfs_trans_committed instead of casting it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2010-10-06 11:10:13.774254205 +0200 +++ xfs/fs/xfs/xfs_trans.c 2010-10-06 11:13:16.145254205 +0200 @@ -1411,9 +1411,10 @@ xfs_trans_item_committed( */ STATIC void xfs_trans_committed( - struct xfs_trans *tp, + void *arg, int abortflag) { + struct xfs_trans *tp = arg; struct xfs_log_item_desc *lidp, *next; list_for_each_entry_safe(lidp, next, &tp->t_items, lid_trans) { @@ -1543,7 +1544,7 @@ xfs_trans_commit_iclog( * running in simulation mode (the log is explicitly turned * off). */ - tp->t_logcb.cb_func = (void(*)(void*, int))xfs_trans_committed; + tp->t_logcb.cb_func = xfs_trans_committed; tp->t_logcb.cb_arg = tp; /* From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:22 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeMeE110151 for ; Wed, 6 Oct 2010 13:40:22 -0500 X-ASG-Debug-ID: 1286390486-7e5501df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BFC404EB25C for ; Wed, 6 Oct 2010 11:41:26 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id x6265rabbwHQBcmQ for ; Wed, 06 Oct 2010 11:41:26 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yve-00019j-A0 for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:26 +0000 Message-Id: <20101006184126.161666009@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:15 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/7] xfs: remove xfs_version.h Subject: [PATCH 4/7] xfs: remove xfs_version.h References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-kill-version.h X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390486 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It used to have a place when it contained an automatically generated CVS version, but these days it's entirely superflous. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2010-09-29 07:54:47.649262102 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2010-09-29 07:55:42.216005782 +0900 @@ -44,7 +44,6 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" #include "xfs_vnodeops.h" -#include "xfs_version.h" #include "xfs_log_priv.h" #include "xfs_trans_priv.h" #include "xfs_filestream.h" Index: xfs/fs/xfs/linux-2.6/xfs_super.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.h 2010-09-29 07:55:15.945003267 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_super.h 2010-09-29 07:55:25.893021010 +0900 @@ -62,6 +62,7 @@ extern void xfs_qm_exit(void); # define XFS_DBG_STRING "no debug" #endif +#define XFS_VERSION_STRING "SGI XFS" #define XFS_BUILD_OPTIONS XFS_ACL_STRING \ XFS_SECURITY_STRING \ XFS_REALTIME_STRING \ Index: xfs/fs/xfs/linux-2.6/xfs_version.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_version.h 2010-09-29 07:54:47.640253372 +0900 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2001-2002,2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __XFS_VERSION_H__ -#define __XFS_VERSION_H__ - -/* - * Dummy file that can contain a timestamp to put into the - * XFS init string, to help users keep track of what they're - * running - */ - -#define XFS_VERSION_STRING "SGI XFS" - -#endif /* __XFS_VERSION_H__ */ From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeNVW110173 for ; Wed, 6 Oct 2010 13:40:23 -0500 X-ASG-Debug-ID: 1286390486-1d0d01e20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 602BC1C01E0E for ; Wed, 6 Oct 2010 11:41:26 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id QSBYF5MvLRNY39KJ for ; Wed, 06 Oct 2010 11:41:26 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yve-00019D-1z for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:26 +0000 Message-Id: <20101006184125.895296316@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:14 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/7] xfs: remove xfs_refcache.h Subject: [PATCH 3/7] xfs: remove xfs_refcache.h References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-kill-xfs_refcache.h X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390486 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This header has been completely unused for a couple of years. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_refcache.h =================================================================== --- xfs.orig/fs/xfs/xfs_refcache.h 2010-09-06 10:18:29.074253757 -0300 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __XFS_REFCACHE_H__ -#define __XFS_REFCACHE_H__ - -#ifdef HAVE_REFCACHE -/* - * Maximum size (in inodes) for the NFS reference cache - */ -#define XFS_REFCACHE_SIZE_MAX 512 - -struct xfs_inode; -struct xfs_mount; - -extern void xfs_refcache_insert(struct xfs_inode *); -extern void xfs_refcache_purge_ip(struct xfs_inode *); -extern void xfs_refcache_purge_mp(struct xfs_mount *); -extern void xfs_refcache_purge_some(struct xfs_mount *); -extern void xfs_refcache_resize(int); -extern void xfs_refcache_destroy(void); - -extern void xfs_refcache_iunlock(struct xfs_inode *, uint); - -#else - -#define xfs_refcache_insert(ip) do { } while (0) -#define xfs_refcache_purge_ip(ip) do { } while (0) -#define xfs_refcache_purge_mp(mp) do { } while (0) -#define xfs_refcache_purge_some(mp) do { } while (0) -#define xfs_refcache_resize(size) do { } while (0) -#define xfs_refcache_destroy() do { } while (0) - -#define xfs_refcache_iunlock(ip, flags) xfs_iunlock(ip, flags) - -#endif - -#endif /* __XFS_REFCACHE_H__ */ From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeM9C110154 for ; Wed, 6 Oct 2010 13:40:23 -0500 X-ASG-Debug-ID: 1286390486-1d3301d70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D93131C01E4E for ; Wed, 6 Oct 2010 11:41:26 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id QFhlxeh9KtN4uHG8 for ; Wed, 06 Oct 2010 11:41:26 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yve-0001AF-IQ for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:26 +0000 Message-Id: <20101006184126.419695420@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:16 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/7] xfs: remove xfs_globals.h Subject: [PATCH 5/7] xfs: remove xfs_globals.h References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-kill-globals.h X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390486 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This header only provides one extern that isn't actually declared anywhere, and shadowed by a macro. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_globals.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_globals.h 2010-09-29 07:57:15.590003897 +0900 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __XFS_GLOBALS_H__ -#define __XFS_GLOBALS_H__ - -extern uint64_t xfs_panic_mask; /* set to cause more panics */ - -#endif /* __XFS_GLOBALS_H__ */ Index: xfs/fs/xfs/linux-2.6/xfs_linux.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_linux.h 2010-09-29 07:57:06.876003478 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_linux.h 2010-09-29 07:57:10.675215517 +0900 @@ -86,7 +86,6 @@ #include #include #include -#include #include /* From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:25 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeOlM110191 for ; Wed, 6 Oct 2010 13:40:24 -0500 X-ASG-Debug-ID: 1286391312-615100e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6EC3812EDC69 for ; Wed, 6 Oct 2010 11:55:13 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id Pcegb3jFe8ZvOuCy for ; Wed, 06 Oct 2010 11:55:13 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yve-0001Al-QW for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:26 +0000 Message-Id: <20101006184126.663057623@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:17 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/7] xfs: remove xfs_cred.h Subject: [PATCH 6/7] xfs: remove xfs_cred.h References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-remove-cred.h X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286391313 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We're not actually passing around credentials inside XFS for a while now, so remove all xfs_cred.h with it's cred_t typedef and all instances of it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2010-09-29 07:59:30.447011230 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_iops.c 2010-09-29 08:00:00.169265875 +0900 @@ -189,7 +189,7 @@ xfs_vn_mknod( } xfs_dentry_to_name(&name, dentry); - error = xfs_create(XFS_I(dir), &name, mode, rdev, &ip, NULL); + error = xfs_create(XFS_I(dir), &name, mode, rdev, &ip); if (unlikely(error)) goto out_free_acl; @@ -362,7 +362,7 @@ xfs_vn_symlink( (irix_symlink_mode ? 0777 & ~current_umask() : S_IRWXUGO); xfs_dentry_to_name(&name, dentry); - error = xfs_symlink(XFS_I(dir), &name, symname, mode, &cip, NULL); + error = xfs_symlink(XFS_I(dir), &name, symname, mode, &cip); if (unlikely(error)) goto out; Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2010-09-29 08:00:19.626003339 +0900 +++ xfs/fs/xfs/xfs_vnodeops.c 2010-09-29 08:04:14.272255746 +0900 @@ -1256,8 +1256,7 @@ xfs_create( struct xfs_name *name, mode_t mode, xfs_dev_t rdev, - xfs_inode_t **ipp, - cred_t *credp) + xfs_inode_t **ipp) { int is_dir = S_ISDIR(mode); struct xfs_mount *mp = dp->i_mount; @@ -1363,7 +1362,7 @@ xfs_create( * entry pointing to them, but a directory also the "." entry * pointing to itself. */ - error = xfs_dir_ialloc(&tp, dp, mode, is_dir ? 2 : 1, rdev, credp, + error = xfs_dir_ialloc(&tp, dp, mode, is_dir ? 2 : 1, rdev, prid, resblks > 0, &ip, &committed); if (error) { if (error == ENOSPC) @@ -1936,8 +1935,7 @@ xfs_symlink( struct xfs_name *link_name, const char *target_path, mode_t mode, - xfs_inode_t **ipp, - cred_t *credp) + xfs_inode_t **ipp) { xfs_mount_t *mp = dp->i_mount; xfs_trans_t *tp; @@ -2049,8 +2047,8 @@ xfs_symlink( /* * Allocate an inode for the symlink. */ - error = xfs_dir_ialloc(&tp, dp, S_IFLNK | (mode & ~S_IFMT), - 1, 0, credp, prid, resblks > 0, &ip, NULL); + error = xfs_dir_ialloc(&tp, dp, S_IFLNK | (mode & ~S_IFMT), 1, 0, + prid, resblks > 0, &ip, NULL); if (error) { if (error == ENOSPC) goto error_return; Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2010-09-29 07:59:07.824253303 +0900 +++ xfs/fs/xfs/xfs_vnodeops.h 2010-09-29 08:00:16.412034907 +0900 @@ -2,7 +2,6 @@ #define _XFS_VNODEOPS_H 1 struct attrlist_cursor_kern; -struct cred; struct file; struct iattr; struct inode; @@ -26,7 +25,7 @@ int xfs_inactive(struct xfs_inode *ip); int xfs_lookup(struct xfs_inode *dp, struct xfs_name *name, struct xfs_inode **ipp, struct xfs_name *ci_name); int xfs_create(struct xfs_inode *dp, struct xfs_name *name, mode_t mode, - xfs_dev_t rdev, struct xfs_inode **ipp, cred_t *credp); + xfs_dev_t rdev, struct xfs_inode **ipp); int xfs_remove(struct xfs_inode *dp, struct xfs_name *name, struct xfs_inode *ip); int xfs_link(struct xfs_inode *tdp, struct xfs_inode *sip, @@ -34,8 +33,7 @@ int xfs_link(struct xfs_inode *tdp, stru int xfs_readdir(struct xfs_inode *dp, void *dirent, size_t bufsize, xfs_off_t *offset, filldir_t filldir); int xfs_symlink(struct xfs_inode *dp, struct xfs_name *link_name, - const char *target_path, mode_t mode, struct xfs_inode **ipp, - cred_t *credp); + const char *target_path, mode_t mode, struct xfs_inode **ipp); int xfs_set_dmattrs(struct xfs_inode *ip, u_int evmask, u_int16_t state); int xfs_change_file_space(struct xfs_inode *ip, int cmd, xfs_flock64_t *bf, xfs_off_t offset, int attr_flags); Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2010-09-29 08:04:23.610259658 +0900 +++ xfs/fs/xfs/quota/xfs_qm.c 2010-09-29 08:05:08.944255958 +0900 @@ -55,8 +55,6 @@ uint ndquot; kmem_zone_t *qm_dqzone; kmem_zone_t *qm_dqtrxzone; -static cred_t xfs_zerocr; - STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); @@ -1224,8 +1222,8 @@ xfs_qm_qino_alloc( return error; } - if ((error = xfs_dir_ialloc(&tp, NULL, S_IFREG, 1, 0, - &xfs_zerocr, 0, 1, ip, &committed))) { + error = xfs_dir_ialloc(&tp, NULL, S_IFREG, 1, 0, 0, 1, ip, &committed); + if (error) { xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); return error; @@ -2143,7 +2141,7 @@ xfs_qm_write_sb_changes( /* - * Given an inode, a uid and gid (from cred_t) make sure that we have + * Given an inode, a uid, gid and prid make sure that we have * allocated relevant dquot(s) on disk, and that we won't exceed inode * quotas by creating this file. * This also attaches dquot(s) to the given inode after locking it, Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2010-09-29 08:02:11.314278656 +0900 +++ xfs/fs/xfs/xfs_inode.c 2010-09-29 08:02:23.567255397 +0900 @@ -982,7 +982,6 @@ xfs_ialloc( mode_t mode, xfs_nlink_t nlink, xfs_dev_t rdev, - cred_t *cr, xfs_prid_t prid, int okalloc, xfs_buf_t **ialloc_context, Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2010-09-29 08:02:24.912003756 +0900 +++ xfs/fs/xfs/xfs_inode.h 2010-09-29 08:05:33.711255678 +0900 @@ -212,7 +212,6 @@ typedef struct xfs_icdinode { #ifdef __KERNEL__ struct bhv_desc; -struct cred; struct xfs_buf; struct xfs_bmap_free; struct xfs_bmbt_irec; @@ -456,8 +455,8 @@ void xfs_inode_free(struct xfs_inode *i * xfs_inode.c prototypes. */ int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, - xfs_nlink_t, xfs_dev_t, cred_t *, xfs_prid_t, - int, struct xfs_buf **, boolean_t *, xfs_inode_t **); + xfs_nlink_t, xfs_dev_t, xfs_prid_t, int, + struct xfs_buf **, boolean_t *, xfs_inode_t **); uint xfs_ip2xflags(struct xfs_inode *); uint xfs_dic2xflags(struct xfs_dinode *); Index: xfs/fs/xfs/xfs_utils.c =================================================================== --- xfs.orig/fs/xfs/xfs_utils.c 2010-09-29 08:02:59.399004595 +0900 +++ xfs/fs/xfs/xfs_utils.c 2010-09-29 08:03:20.536068641 +0900 @@ -56,7 +56,6 @@ xfs_dir_ialloc( mode_t mode, xfs_nlink_t nlink, xfs_dev_t rdev, - cred_t *credp, prid_t prid, /* project id */ int okalloc, /* ok to allocate new space */ xfs_inode_t **ipp, /* pointer to inode; it will be @@ -93,7 +92,7 @@ xfs_dir_ialloc( * transaction commit so that no other process can steal * the inode(s) that we've just allocated. */ - code = xfs_ialloc(tp, dp, mode, nlink, rdev, credp, prid, okalloc, + code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, okalloc, &ialloc_context, &call_again, &ip); /* @@ -197,7 +196,7 @@ xfs_dir_ialloc( * other allocations in this allocation group, * this call should always succeed. */ - code = xfs_ialloc(tp, dp, mode, nlink, rdev, credp, prid, + code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, okalloc, &ialloc_context, &call_again, &ip); /* Index: xfs/fs/xfs/xfs_utils.h =================================================================== --- xfs.orig/fs/xfs/xfs_utils.h 2010-09-29 08:01:25.693253722 +0900 +++ xfs/fs/xfs/xfs_utils.h 2010-09-29 08:03:33.983064450 +0900 @@ -19,8 +19,7 @@ #define __XFS_UTILS_H__ extern int xfs_dir_ialloc(xfs_trans_t **, xfs_inode_t *, mode_t, xfs_nlink_t, - xfs_dev_t, cred_t *, prid_t, int, - xfs_inode_t **, int *); + xfs_dev_t, prid_t, int, xfs_inode_t **, int *); extern int xfs_droplink(xfs_trans_t *, xfs_inode_t *); extern int xfs_bumplink(xfs_trans_t *, xfs_inode_t *); extern void xfs_bump_ino_vers2(xfs_trans_t *, xfs_inode_t *); Index: xfs/fs/xfs/linux-2.6/xfs_cred.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_cred.h 2010-09-29 08:05:55.575003966 +0900 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __XFS_CRED_H__ -#define __XFS_CRED_H__ - -#include - -/* - * Credentials - */ -typedef const struct cred cred_t; - -#endif /* __XFS_CRED_H__ */ Index: xfs/fs/xfs/linux-2.6/xfs_globals.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_globals.c 2010-09-29 08:05:45.172259868 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_globals.c 2010-09-29 08:05:47.601005434 +0900 @@ -16,7 +16,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "xfs.h" -#include "xfs_cred.h" #include "xfs_sysctl.h" /* Index: xfs/fs/xfs/linux-2.6/xfs_linux.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_linux.h 2010-09-29 08:05:55.590004665 +0900 +++ xfs/fs/xfs/linux-2.6/xfs_linux.h 2010-09-29 08:06:23.908255677 +0900 @@ -71,6 +71,7 @@ #include #include #include +#include #include #include @@ -79,7 +80,6 @@ #include #include -#include #include #include #include Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2010-09-29 08:05:23.440254141 +0900 +++ xfs/fs/xfs/xfs_mount.h 2010-09-29 08:05:25.516047826 +0900 @@ -53,7 +53,6 @@ typedef struct xfs_trans_reservations { #include "xfs_sync.h" -struct cred; struct log; struct xfs_mount_args; struct xfs_inode; From BATV+3c0b3380458906cc3d77+2600+infradead.org+hch@canuck.srs.infradead.org Wed Oct 6 13:40:24 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_102, J_CHICKENPOX_64,J_CHICKENPOX_65,J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96IeN4T110178 for ; Wed, 6 Oct 2010 13:40:24 -0500 X-ASG-Debug-ID: 1286390487-7dfc01e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from canuck.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 932174EB25E for ; Wed, 6 Oct 2010 11:41:27 -0700 (PDT) Received: from canuck.infradead.org (canuck.infradead.org [134.117.69.58]) by cuda.sgi.com with ESMTP id Kdfle4c8R206ieCn for ; Wed, 06 Oct 2010 11:41:27 -0700 (PDT) Received: from hch by canuck.infradead.org with local (Exim 4.72 #1 (Red Hat Linux)) id 1P3Yvf-0001BH-2U for xfs@oss.sgi.com; Wed, 06 Oct 2010 18:41:27 +0000 Message-Id: <20101006184126.919946101@localhost.localdomain> User-Agent: quilt/0.48-1 Date: Wed, 06 Oct 2010 14:41:18 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/7] xfs: remove xfs_buf wrappers Subject: [PATCH 7/7] xfs: remove xfs_buf wrappers References: <20101006184111.634126439@localhost.localdomain> Content-Disposition: inline; filename=xfs-cleanup-buf-wrappers X-SRS-Rewrite: SMTP reverse-path rewritten from by canuck.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: canuck.infradead.org[134.117.69.58] X-Barracuda-Start-Time: 1286390487 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Stop having two different names for many buffer functions and use the more descriptive xfs_buf_* names directly. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-09-30 15:57:16.172782662 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-09-30 15:58:19.493782839 +0200 @@ -652,8 +652,7 @@ void xfs_buf_readahead( xfs_buftarg_t *target, xfs_off_t ioff, - size_t isize, - xfs_buf_flags_t flags) + size_t isize) { struct backing_dev_info *bdi; @@ -661,8 +660,8 @@ xfs_buf_readahead( if (bdi_read_congested(bdi)) return; - flags |= (XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD); - xfs_buf_read(target, ioff, isize, flags); + xfs_buf_read(target, ioff, isize, + XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD|XBF_DONT_BLOCK); } /* @@ -691,7 +690,7 @@ xfs_buf_read_uncached( XFS_BUF_BUSY(bp); xfsbdstrat(mp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error || bp->b_error) { xfs_buf_relse(bp); return NULL; @@ -1073,7 +1072,7 @@ xfs_bdwrite( /* * Called when we want to stop a buffer from getting written or read. - * We attach the EIO error, muck with its flags, and call biodone + * We attach the EIO error, muck with its flags, and call xfs_buf_ioend * so that the proper iodone callbacks get called. */ STATIC int @@ -1090,21 +1089,21 @@ xfs_bioerror( XFS_BUF_ERROR(bp, EIO); /* - * We're calling biodone, so delete XBF_DONE flag. + * We're calling xfs_buf_ioend, so delete XBF_DONE flag. */ XFS_BUF_UNREAD(bp); XFS_BUF_UNDELAYWRITE(bp); XFS_BUF_UNDONE(bp); XFS_BUF_STALE(bp); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); return EIO; } /* * Same as xfs_bioerror, except that we are releasing the buffer - * here ourselves, and avoiding the biodone call. + * here ourselves, and avoiding the xfs_buf_ioend call. * This is meant for userdata errors; metadata bufs come with * iodone functions attached, so that we can track down errors. */ @@ -1938,7 +1937,7 @@ xfs_flush_buftarg( bp = list_first_entry(&wait_list, struct xfs_buf, b_list); list_del_init(&bp->b_list); - xfs_iowait(bp); + xfs_buf_iowait(bp); xfs_buf_relse(bp); } } Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-09-30 15:57:16.182782662 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-09-30 15:58:24.150782643 +0200 @@ -218,8 +218,7 @@ extern xfs_buf_t *xfs_buf_get_empty(size extern xfs_buf_t *xfs_buf_get_uncached(struct xfs_buftarg *, size_t, int); extern int xfs_buf_associate_memory(xfs_buf_t *, void *, size_t); extern void xfs_buf_hold(xfs_buf_t *); -extern void xfs_buf_readahead(xfs_buftarg_t *, xfs_off_t, size_t, - xfs_buf_flags_t); +extern void xfs_buf_readahead(xfs_buftarg_t *, xfs_off_t, size_t); struct xfs_buf *xfs_buf_read_uncached(struct xfs_mount *mp, struct xfs_buftarg *target, xfs_daddr_t daddr, size_t length, int flags); @@ -247,6 +246,8 @@ extern int xfs_buf_iorequest(xfs_buf_t * extern int xfs_buf_iowait(xfs_buf_t *); extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *, xfs_buf_rw_t); +#define xfs_buf_zero(bp, off, len) \ + xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO) static inline int xfs_buf_geterror(xfs_buf_t *bp) { @@ -359,21 +360,6 @@ static inline void xfs_buf_relse(xfs_buf xfs_buf_rele(bp); } -#define xfs_biodone(bp) xfs_buf_ioend(bp, 0) - -#define xfs_biomove(bp, off, len, data, rw) \ - xfs_buf_iomove((bp), (off), (len), (data), \ - ((rw) == XBF_WRITE) ? XBRW_WRITE : XBRW_READ) - -#define xfs_biozero(bp, off, len) \ - xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO) - -#define xfs_iowait(bp) xfs_buf_iowait(bp) - -#define xfs_baread(target, rablkno, ralen) \ - xfs_buf_readahead((target), (rablkno), (ralen), XBF_DONT_BLOCK) - - /* * Handling of buftargs. */ Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2010-09-30 15:53:51.780782661 +0200 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2010-09-30 15:57:22.480782662 +0200 @@ -644,7 +644,7 @@ xfs_barrier_test( XFS_BUF_ORDERED(sbp); xfsbdstrat(mp, sbp); - error = xfs_iowait(sbp); + error = xfs_buf_iowait(sbp); /* * Clear all the flags we set and possible error state in the Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2010-09-30 15:53:51.787782661 +0200 +++ xfs/fs/xfs/quota/xfs_qm.c 2010-09-30 15:57:22.485782662 +0200 @@ -1433,7 +1433,7 @@ xfs_qm_dqiterate( rablkcnt = map[i+1].br_blockcount; rablkno = map[i+1].br_startblock; while (rablkcnt--) { - xfs_baread(mp->m_ddev_targp, + xfs_buf_readahead(mp->m_ddev_targp, XFS_FSB_TO_DADDR(mp, rablkno), mp->m_quotainfo->qi_dqchunklen); rablkno++; Index: xfs/fs/xfs/xfs_attr.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr.c 2010-09-30 15:53:51.853782661 +0200 +++ xfs/fs/xfs/xfs_attr.c 2010-09-30 15:57:22.490782662 +0200 @@ -1986,7 +1986,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen : XFS_BUF_SIZE(bp); - xfs_biomove(bp, 0, tmp, dst, XBF_READ); + xfs_buf_iomove(bp, 0, tmp, dst, XBRW_READ); xfs_buf_relse(bp); dst += tmp; valuelen -= tmp; @@ -2116,9 +2116,9 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen : XFS_BUF_SIZE(bp); - xfs_biomove(bp, 0, tmp, src, XBF_WRITE); + xfs_buf_iomove(bp, 0, tmp, src, XBRW_WRITE); if (tmp < XFS_BUF_SIZE(bp)) - xfs_biozero(bp, tmp, XFS_BUF_SIZE(bp) - tmp); + xfs_buf_zero(bp, tmp, XFS_BUF_SIZE(bp) - tmp); if ((error = xfs_bwrite(mp, bp))) {/* GROT: NOTE: synchronous write */ return (error); } Index: xfs/fs/xfs/xfs_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_btree.c 2010-09-30 15:53:51.794782661 +0200 +++ xfs/fs/xfs/xfs_btree.c 2010-09-30 15:57:22.494782662 +0200 @@ -656,7 +656,7 @@ xfs_btree_reada_bufl( ASSERT(fsbno != NULLFSBLOCK); d = XFS_FSB_TO_DADDR(mp, fsbno); - xfs_baread(mp->m_ddev_targp, d, mp->m_bsize * count); + xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count); } /* @@ -676,7 +676,7 @@ xfs_btree_reada_bufs( ASSERT(agno != NULLAGNUMBER); ASSERT(agbno != NULLAGBLOCK); d = XFS_AGB_TO_DADDR(mp, agno, agbno); - xfs_baread(mp->m_ddev_targp, d, mp->m_bsize * count); + xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count); } STATIC int Index: xfs/fs/xfs/xfs_da_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_da_btree.c 2010-09-30 15:53:51.802782661 +0200 +++ xfs/fs/xfs/xfs_da_btree.c 2010-09-30 15:57:22.503782662 +0200 @@ -2042,7 +2042,7 @@ xfs_da_do_buf( mappedbno, nmapped, 0, &bp); break; case 3: - xfs_baread(mp->m_ddev_targp, mappedbno, nmapped); + xfs_buf_readahead(mp->m_ddev_targp, mappedbno, nmapped); error = 0; bp = NULL; break; Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2010-09-30 15:53:51.809782661 +0200 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2010-09-30 15:57:22.509782662 +0200 @@ -961,7 +961,7 @@ xfs_dir2_leaf_getdents( if (i > ra_current && map[ra_index].br_blockcount >= mp->m_dirblkfsbs) { - xfs_baread(mp->m_ddev_targp, + xfs_buf_readahead(mp->m_ddev_targp, XFS_FSB_TO_DADDR(mp, map[ra_index].br_startblock + ra_offset), Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2010-09-30 15:53:51.862782661 +0200 +++ xfs/fs/xfs/xfs_ialloc.c 2010-09-30 15:57:22.516782662 +0200 @@ -212,7 +212,7 @@ xfs_ialloc_inode_init( * to log a whole cluster of inodes instead of all the * individual transactions causing a lot of log traffic. */ - xfs_biozero(fbuf, 0, ninodes << mp->m_sb.sb_inodelog); + xfs_buf_zero(fbuf, 0, ninodes << mp->m_sb.sb_inodelog); for (i = 0; i < ninodes; i++) { int ioffset = i << mp->m_sb.sb_inodelog; uint isize = sizeof(struct xfs_dinode); Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2010-09-30 15:57:16.222782662 +0200 +++ xfs/fs/xfs/xfs_log_recover.c 2010-09-30 15:59:42.573782661 +0200 @@ -168,7 +168,7 @@ xlog_bread_noalign( XFS_BUF_SET_TARGET(bp, log->l_mp->m_logdev_targp); xfsbdstrat(log->l_mp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error) xfs_ioerror_alert("xlog_bread", log->l_mp, bp, XFS_BUF_ADDR(bp)); @@ -328,7 +328,7 @@ xlog_recover_iodone( SHUTDOWN_META_IO_ERROR); } XFS_BUF_CLR_IODONE_FUNC(bp); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); } /* @@ -3816,7 +3816,7 @@ xlog_do_recover( XFS_BUF_READ(bp); XFS_BUF_UNASYNC(bp); xfsbdstrat(log->l_mp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error) { xfs_ioerror_alert("xlog_do_recover", log->l_mp, bp, XFS_BUF_ADDR(bp)); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2010-09-30 15:53:51.824782661 +0200 +++ xfs/fs/xfs/xfs_mount.c 2010-09-30 15:57:22.526782662 +0200 @@ -1607,7 +1607,7 @@ xfs_unmountfs_writesb(xfs_mount_t *mp) XFS_BUF_UNASYNC(sbp); ASSERT(XFS_BUF_TARGET(sbp) == mp->m_ddev_targp); xfsbdstrat(mp, sbp); - error = xfs_iowait(sbp); + error = xfs_buf_iowait(sbp); if (error) xfs_ioerror_alert("xfs_unmountfs_writesb", mp, sbp, XFS_BUF_ADDR(sbp)); Index: xfs/fs/xfs/xfs_trans_buf.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_buf.c 2010-09-30 15:53:51.835782661 +0200 +++ xfs/fs/xfs/xfs_trans_buf.c 2010-09-30 15:57:22.531782662 +0200 @@ -336,7 +336,7 @@ xfs_trans_read_buf( ASSERT(!XFS_BUF_ISASYNC(bp)); XFS_BUF_READ(bp); xfsbdstrat(tp->t_mountp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error) { xfs_ioerror_alert("xfs_trans_read_buf", mp, bp, blkno); Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2010-09-30 15:53:51.844782661 +0200 +++ xfs/fs/xfs/xfs_vnodeops.c 2010-09-30 15:57:22.534782662 +0200 @@ -2460,7 +2460,7 @@ xfs_zero_remaining_bytes( XFS_BUF_READ(bp); XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock)); xfsbdstrat(mp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error) { xfs_ioerror_alert("xfs_zero_remaining_bytes(read)", mp, bp, XFS_BUF_ADDR(bp)); @@ -2473,7 +2473,7 @@ xfs_zero_remaining_bytes( XFS_BUF_UNREAD(bp); XFS_BUF_WRITE(bp); xfsbdstrat(mp, bp); - error = xfs_iowait(bp); + error = xfs_buf_iowait(bp); if (error) { xfs_ioerror_alert("xfs_zero_remaining_bytes(write)", mp, bp, XFS_BUF_ADDR(bp)); Index: xfs/fs/xfs/xfs_buf_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_buf_item.c 2010-09-30 15:57:26.485782662 +0200 +++ xfs/fs/xfs/xfs_buf_item.c 2010-09-30 15:58:37.749782679 +0200 @@ -973,7 +973,7 @@ xfs_buf_iodone_callbacks( xfs_buf_do_callbacks(bp, lip); XFS_BUF_SET_FSPRIVATE(bp, NULL); XFS_BUF_CLR_IODONE_FUNC(bp); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); return; } @@ -1032,7 +1032,7 @@ xfs_buf_iodone_callbacks( xfs_buf_do_callbacks(bp, lip); XFS_BUF_SET_FSPRIVATE(bp, NULL); XFS_BUF_CLR_IODONE_FUNC(bp); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); } /* Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2010-09-30 15:57:26.497782662 +0200 +++ xfs/fs/xfs/xfs_inode.c 2010-09-30 15:58:46.076782659 +0200 @@ -2724,7 +2724,7 @@ cluster_corrupt_out: XFS_BUF_UNDONE(bp); XFS_BUF_STALE(bp); XFS_BUF_ERROR(bp,EIO); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); } else { XFS_BUF_STALE(bp); xfs_buf_relse(bp); Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2010-09-30 15:57:26.513782662 +0200 +++ xfs/fs/xfs/xfs_log.c 2010-09-30 15:59:02.290782317 +0200 @@ -1310,7 +1310,7 @@ xlog_bdstrat( if (iclog->ic_state & XLOG_STATE_IOERROR) { XFS_BUF_ERROR(bp, EIO); XFS_BUF_STALE(bp); - xfs_biodone(bp); + xfs_buf_ioend(bp, 0); /* * It would seem logical to return EIO here, but we rely on * the log state machine to propagate I/O errors instead of From aelder@sgi.com Wed Oct 6 13:47:39 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96Ild1W110991 for ; Wed, 6 Oct 2010 13:47:39 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id BECEE304064 for ; Wed, 6 Oct 2010 11:48:40 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:48:40 -0500 Subject: [PATCH, RFC 0/6] xfsprogs: fix generate_obfuscate_name() From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:48:40 -0500 Message-ID: <1286390920.1951.357.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:48:40.0673 (UTC) FILETIME=[17EF2510:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I'm sending this out for the moment with an "RFC" tag because I don't consider this work done (I want to do some refinements, basically). But I wanted to get the code out there for an initial review to see if there are any major problems with what I'm proposing here. This is fixing the problem in xfs_db metadump feature in which the attempt to create an obfuscated filename can result in an endless loop. I've run it through all possible 6-character names starting with 0x01 through 0x07 (and counting...) and the new algorithm (which is basically contained in patch 3 of the series) produces an alternate path with the same hash as the original for all cases. I also ran all the test cases I identified previously and all compute an alternate path without hanging. -Alex From aelder@sgi.com Wed Oct 6 13:47:54 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96Ilst8111023 for ; Wed, 6 Oct 2010 13:47:54 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 43203AC004 for ; Wed, 6 Oct 2010 11:48:55 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:48:54 -0500 Subject: [PATCH 1/6] xfsprogs: change how leading '/' is handled From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:48:54 -0500 Message-ID: <1286390934.1951.358.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:48:54.0782 (UTC) FILETIME=[205801E0:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In generate_obfuscated_name(), the incoming file name is allowed to start with a '/' character, in which case it is copied over to the new file name and ignored for the remainder of the hash calculation. Simplify the affected code by processing the '/' right away, and using a pointer thereafter for the start of the new file name. Signed-off-by: Alex Elder --- db/metadump.c | 64 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 24 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -425,45 +425,61 @@ generate_obfuscated_name( int dup; xfs_dahash_t newhash; uchar_t newname[NAME_MAX]; + uchar_t *newp = &newname[0]; if (is_special_dirent(ino, namelen, name)) return; hash = libxfs_da_hashname(name, namelen); - /* create a random name with the same hash value */ + /* + * If the name starts with a slash, just skip over it. We + * will copy our obfuscated name back into space following + * the slash when we're done. Our new name will not have + * the '/', and that's the version we'll keep in our + * duplicates table. + */ + if (*name == '/') + name++; do { dup = 0; - newname[0] = '/'; - for (;;) { - /* if the first char is a "/", preserve it */ - i = (name[0] == '/'); - - for (newhash = 0; i < namelen - 5; i++) { - newname[i] = random_filename_char(); - newhash = newname[i] ^ rol32(newhash, 7); + /* + * The beginning of the obfuscated name can + * be pretty much anything, so fill it in + * with random characters. + */ + newhash = 0; + for (i = 0; i < namelen - 5; i++) { + newp[i] = random_filename_char(); + newhash = newp[i] ^ rol32(newhash, 7); } + + /* + * Compute which five bytes need to be used + * at the end of the name so the hash of the + * obfuscated is the same as the hash of the + * original. + */ newhash = rol32(newhash, 3) ^ hash; - if (name[0] != '/' || namelen > 5) { - newname[namelen - 5] = (newhash >> 28) | - (random_filename_char() & 0xf0); - if (is_invalid_char(newname[namelen - 5])) - continue; - } - newname[namelen - 4] = (newhash >> 21) & 0x7f; - if (is_invalid_char(newname[namelen - 4])) + + newp[namelen - 5] = (newhash >> 28) | + (random_filename_char() & 0xf0); + if (is_invalid_char(newp[namelen - 5])) + continue; + newp[namelen - 4] = (newhash >> 21) & 0x7f; + if (is_invalid_char(newp[namelen - 4])) continue; - newname[namelen - 3] = (newhash >> 14) & 0x7f; - if (is_invalid_char(newname[namelen - 3])) + newp[namelen - 3] = (newhash >> 14) & 0x7f; + if (is_invalid_char(newp[namelen - 3])) continue; - newname[namelen - 2] = (newhash >> 7) & 0x7f; - if (is_invalid_char(newname[namelen - 2])) + newp[namelen - 2] = (newhash >> 7) & 0x7f; + if (is_invalid_char(newp[namelen - 2])) continue; - newname[namelen - 1] = ((newhash >> 0) ^ - (newname[namelen - 5] >> 4)) & 0x7f; - if (is_invalid_char(newname[namelen - 1])) + newp[namelen - 1] = ((newhash >> 0) ^ + (newp[namelen - 5] >> 4)) & 0x7f; + if (is_invalid_char(newp[namelen - 1])) continue; break; } From aelder@sgi.com Wed Oct 6 13:48:01 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96Im16L111041 for ; Wed, 6 Oct 2010 13:48:01 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3B25CAC005 for ; Wed, 6 Oct 2010 11:49:05 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:49:04 -0500 Subject: [PATCH 2/6] xfsprogs: do slightly less obfuscation in the file name From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:49:04 -0500 Message-ID: <1286390944.1951.364.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:49:04.0845 (UTC) FILETIME=[26577FD0:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When the last five characters in an obfuscated filename are generated, one of them has a randomized top nibble. This is a fairly copmlete way of doing this. But the lower nibble is already effectively a random character (taken from four bits of a the hash value) so we don't lose much by simply assuming the the top bits are always zero. This simplifies the generation of two of the final five characters, and makes them all get done in a consistent way. Add the use of a mask in the one case it wasn't used to be even more consistent. Signed-off-by: Alex Elder --- db/metadump.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -464,8 +464,7 @@ generate_obfuscated_name( */ newhash = rol32(newhash, 3) ^ hash; - newp[namelen - 5] = (newhash >> 28) | - (random_filename_char() & 0xf0); + newp[namelen - 5] = (newhash >> 28) & 0x7f; if (is_invalid_char(newp[namelen - 5])) continue; newp[namelen - 4] = (newhash >> 21) & 0x7f; @@ -477,8 +476,7 @@ generate_obfuscated_name( newp[namelen - 2] = (newhash >> 7) & 0x7f; if (is_invalid_char(newp[namelen - 2])) continue; - newp[namelen - 1] = ((newhash >> 0) ^ - (newp[namelen - 5] >> 4)) & 0x7f; + newp[namelen - 1] = (newhash >> 0) & 0x7f; if (is_invalid_char(newp[namelen - 1])) continue; break; From aelder@sgi.com Wed Oct 6 13:48:19 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96ImIFK111066 for ; Wed, 6 Oct 2010 13:48:19 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 05210AC006 for ; Wed, 6 Oct 2010 11:49:22 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:49:22 -0500 Subject: [PATCH 3/6] xfsprogs: compute obfuscated name differently From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:49:21 -0500 Message-ID: <1286390961.1951.365.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:49:22.0642 (UTC) FILETIME=[30F31B20:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The last 5 bytes of a filename generated by generate_obfuscated_name() can be selected such that they (along with all of the preceding characters in the filename) produce any desired value when hashed. The effect of these bytes on the hash can be seen visually below: +-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-+ hash: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-+ last-4 ->| |<-- last-2 --->| |<--- last ---->| |<-- last-3 --->| |<-- last-1 --->| |<- last-4 Note byte (last - 4) wraps around. A previous patch in this series eliminated the effect of the upper 4 bits of that byte, effectively forcing them to be all be 0 bits. The final bytes of the generated name are taken directly from portions of a computed hash value. It's possible for those portions to result in characters ('\0' and '/') that are not allowed in valid file names. If this occurs, the existing code abandons the current file name and starts again from the beginning. But there exist cases where this can lead to a never-ending loop. This change modifies the algorithm used so that if a non-allowed character arises, we flip a bit in that character (which results in an allowed character), along with another "matching" bit in another byte such that the resulting hash is unchanged. The two un-allowed characters in a pathname component are '\0' and '/'. Flipping any one bit in either one of those characters converts it to an allowed character. (Flipping two distinct bits also results in an allowed character.) As seen in the diagram above, the effect of each character on the hash overlaps two other characters. We can choose to flip one of the overlapping bits in a "bad" character, then flip the overlapping bit in the next byte, and the result will produce the same hash. So, starting with the first of these last 5 bytes (last-4), if its "normal" value is one of the invalid ones, we flip its low bit and arrange to flip the high bit of its successor byte. The very last byte has a little different treatment. If we flip its low bit, it has no successor, but we can flip the corresponding bit in the first of the 5-byte series (at position 0x10). There is one more case to consider. It's possible in that last case that by flipping a bit in byte (last-4), we have converted that byte to one that's not allowed. Fortunately, we have four bits of overlap here, so we can choose to flip a second bit in both the last byte and (last-4). Since flipping two bits also results in a good character, this resolves the issue. With these changes to the filename generation algorithm, we avoid any of the cases in which no alternate name can be found without using an illegal character. We also avoid all looping, resulting in a fixed/deterministic time to generate the name. Signed-off-by: Alex Elder --- db/metadump.c | 69 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 16 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -445,6 +445,8 @@ generate_obfuscated_name( do { dup = 0; for (;;) { + uchar_t high_bit; + /* * The beginning of the obfuscated name can * be pretty much anything, so fill it in @@ -460,25 +462,60 @@ generate_obfuscated_name( * Compute which five bytes need to be used * at the end of the name so the hash of the * obfuscated is the same as the hash of the - * original. + * original. If any result in an invalid + * character, flip a bit and arrange for a + * corresponding bit in a neighboring byte + * to be flipped as well. For the last + * byte, the "neighbor" to change is the + * first byte we're computing here. */ newhash = rol32(newhash, 3) ^ hash; - newp[namelen - 5] = (newhash >> 28) & 0x7f; - if (is_invalid_char(newp[namelen - 5])) - continue; - newp[namelen - 4] = (newhash >> 21) & 0x7f; - if (is_invalid_char(newp[namelen - 4])) - continue; - newp[namelen - 3] = (newhash >> 14) & 0x7f; - if (is_invalid_char(newp[namelen - 3])) - continue; - newp[namelen - 2] = (newhash >> 7) & 0x7f; - if (is_invalid_char(newp[namelen - 2])) - continue; - newp[namelen - 1] = (newhash >> 0) & 0x7f; - if (is_invalid_char(newp[namelen - 1])) - continue; + high_bit = 0; + + newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 5])) { + newp[namelen - 5] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 4])) { + newp[namelen - 4] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 3])) { + newp[namelen - 3] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 2])) { + newp[namelen - 2] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 1])) { + newp[namelen - 1] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + if (high_bit) { + newp[namelen - 5] ^= 0x10; + if (is_invalid_char(newp[namelen - 5])) { + newp[namelen - 1] ^= 2; + newp[namelen - 5] ^= 0x20; + ASSERT(!is_invalid_char(newp[namelen - 1])); + } + } break; } From aelder@sgi.com Wed Oct 6 13:48:29 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96ImTtO111090 for ; Wed, 6 Oct 2010 13:48:29 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8AD14AC004 for ; Wed, 6 Oct 2010 11:49:33 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:49:33 -0500 Subject: [PATCH 4/6] xfsprogs: eliminate a pointless loop From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:49:31 -0500 Message-ID: <1286390971.1951.366.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:49:33.0095 (UTC) FILETIME=[372E1B70:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eliminate a now pointless loop. Done as a separate patch to make the effects of upcoming changes more clear. Signed-off-by: Alex Elder --- db/metadump.c | 129 ++++++++++++++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 66 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -443,80 +443,77 @@ generate_obfuscated_name( if (*name == '/') name++; do { + uchar_t high_bit; + dup = 0; - for (;;) { - uchar_t high_bit; - /* - * The beginning of the obfuscated name can - * be pretty much anything, so fill it in - * with random characters. - */ - newhash = 0; - for (i = 0; i < namelen - 5; i++) { - newp[i] = random_filename_char(); - newhash = newp[i] ^ rol32(newhash, 7); - } + /* + * The beginning of the obfuscated name can be + * pretty much anything, so fill it in with random + * characters. + */ + newhash = 0; + for (i = 0; i < namelen - 5; i++) { + newp[i] = random_filename_char(); + newhash = newp[i] ^ rol32(newhash, 7); + } - /* - * Compute which five bytes need to be used - * at the end of the name so the hash of the - * obfuscated is the same as the hash of the - * original. If any result in an invalid - * character, flip a bit and arrange for a - * corresponding bit in a neighboring byte - * to be flipped as well. For the last - * byte, the "neighbor" to change is the - * first byte we're computing here. - */ - newhash = rol32(newhash, 3) ^ hash; + /* + * Compute which five bytes need to be used at the + * end of the name so the hash of the obfuscated is + * the same as the hash of the original. If any + * result in an invalid character, flip a bit and + * arrange for a corresponding bit in a neighboring + * byte to be flipped as well. For the last byte, + * the "neighbor" to change is the first byte we're + * computing here. + */ + newhash = rol32(newhash, 3) ^ hash; + + high_bit = 0; + newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 5])) { + newp[namelen - 5] ^= 1; + high_bit = 0x80; + } else high_bit = 0; - newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; + newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 4])) { + newp[namelen - 4] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 3])) { + newp[namelen - 3] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 2])) { + newp[namelen - 2] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 1])) { + newp[namelen - 1] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + if (high_bit) { + newp[namelen - 5] ^= 0x10; if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 5] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 4])) { - newp[namelen - 4] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 3])) { - newp[namelen - 3] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 2])) { - newp[namelen - 2] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 1])) { - newp[namelen - 1] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - if (high_bit) { - newp[namelen - 5] ^= 0x10; - if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 1] ^= 2; - newp[namelen - 5] ^= 0x20; - ASSERT(!is_invalid_char(newp[namelen - 1])); - } + newp[namelen - 1] ^= 2; + newp[namelen - 5] ^= 0x20; + ASSERT(!is_invalid_char(newp[namelen - 1])); } - break; } ASSERT(libxfs_da_hashname(newname, namelen) == hash); From aelder@sgi.com Wed Oct 6 13:48:38 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96ImcVw111116 for ; Wed, 6 Oct 2010 13:48:38 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id DFDF1AC004 for ; Wed, 6 Oct 2010 11:49:42 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:49:42 -0500 Subject: [PATCH 5/6] xfsprogs: replace repeated blocks with a loop From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:49:41 -0500 Message-ID: <1286390981.1951.367.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:49:42.0564 (UTC) FILETIME=[3CD2F640:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Replace a repeated block of code with an equivalent loop. Signed-off-by: Alex Elder --- db/metadump.c | 43 +++++++++---------------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -471,41 +471,16 @@ generate_obfuscated_name( newhash = rol32(newhash, 3) ^ hash; high_bit = 0; + for (i = 5; i > 0; i--) { + int shift = (i - 1) * 7; - newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 5] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 4])) { - newp[namelen - 4] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 3])) { - newp[namelen - 3] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 2])) { - newp[namelen - 2] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 1])) { - newp[namelen - 1] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; + newp[namelen - i] = (newhash >> shift) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - i])) { + newp[namelen - i] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + } if (high_bit) { newp[namelen - 5] ^= 0x10; From aelder@sgi.com Wed Oct 6 13:48:54 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96Ims30111140 for ; Wed, 6 Oct 2010 13:48:54 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id F1E298F8039 for ; Wed, 6 Oct 2010 11:49:55 -0700 (PDT) Received: from [128.162.232.146] ([128.162.232.146]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 13:49:55 -0500 Subject: [PATCH 6/6] xfsprogs: use pointers to reference path characters From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 13:49:54 -0500 Message-ID: <1286390994.1951.368.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 06 Oct 2010 18:49:55.0829 (UTC) FILETIME=[44BB0A50:01CB6587] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Switch from using array references to using pointers to refer to the pathname characters as they get generated. Signed-off-by: Alex Elder --- db/metadump.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -444,6 +444,8 @@ generate_obfuscated_name( name++; do { uchar_t high_bit; + uchar_t *first; + int shift; dup = 0; @@ -454,8 +456,9 @@ generate_obfuscated_name( */ newhash = 0; for (i = 0; i < namelen - 5; i++) { - newp[i] = random_filename_char(); - newhash = newp[i] ^ rol32(newhash, 7); + *newp = random_filename_char(); + newhash = *newp ^ rol32(newhash, 7); + newp++; } /* @@ -470,24 +473,24 @@ generate_obfuscated_name( */ newhash = rol32(newhash, 3) ^ hash; + first = newp; high_bit = 0; - for (i = 5; i > 0; i--) { - int shift = (i - 1) * 7; - - newp[namelen - i] = (newhash >> shift) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - i])) { - newp[namelen - i] ^= 1; + for (shift = 28; shift >= 0; shift -= 7) { + *newp = newhash >> shift & 0x7f ^ high_bit; + if (is_invalid_char(*newp)) { + *newp ^= 1; high_bit = 0x80; } else high_bit = 0; + newp++; } if (high_bit) { - newp[namelen - 5] ^= 0x10; - if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 1] ^= 2; - newp[namelen - 5] ^= 0x20; - ASSERT(!is_invalid_char(newp[namelen - 1])); + *first ^= 0x10; + if (is_invalid_char(*first)) { + *--newp ^= 2; + *first ^= 0x20; + ASSERT(!is_invalid_char(*newp)); } } @@ -495,7 +498,7 @@ generate_obfuscated_name( for (p = nametable[hash % NAME_TABLE_SIZE]; p; p = p->next) { if (p->hash == hash && p->namelen == namelen && - memcmp(p->name, newname, namelen) == 0){ + !memcmp(p->name, newname, namelen)) { dup = 1; break; } From aelder@oss.sgi.com Wed Oct 6 15:08:19 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96K8JU2118177 for ; Wed, 6 Oct 2010 15:08:19 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o96K8Ick118149; Wed, 6 Oct 2010 15:08:18 -0500 Date: Wed, 6 Oct 2010 15:08:18 -0500 Message-Id: <201010062008.o96K8Ick118149@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.34-19745-g5ae4ef8 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a9c7b1373fab80a039c11af9683d49a557825f61 X-Git-Newrev: 5ae4ef8313c85f443202aa04405fe178e6138a6a This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 5ae4ef8 xfs: properly account for reclaimed inodes from a9c7b1373fab80a039c11af9683d49a557825f61 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5ae4ef8313c85f443202aa04405fe178e6138a6a Author: Johannes Weiner Date: Fri Oct 1 07:43:54 2010 +0000 xfs: properly account for reclaimed inodes When marking an inode reclaimable, a per-AG counter is increased, the inode is tagged reclaimable in its per-AG tree, and, when this is the first reclaimable inode in the AG, the AG entry in the per-mount tree is also tagged. When an inode is finally reclaimed, however, it is only deleted from the per-AG tree. Neither the counter is decreased, nor is the parent tree's AG entry untagged properly. Since the tags in the per-mount tree are not cleared, the inode shrinker iterates over all AGs that have had reclaimable inodes at one point in time. The counters on the other hand signal an increasing amount of slab objects to reclaim. Since "70e60ce xfs: convert inode shrinker to per-filesystem context" this is not a real issue anymore because the shrinker bails out after one iteration. But the problem was observable on a machine running v2.6.34, where the reclaimable work increased and each process going into direct reclaim eventually got stuck on the xfs inode shrinking path, trying to scan several million objects. Fix this by properly unwinding the reclaimable-state tracking of an inode when it is reclaimed. Signed-off-by: Johannes Weiner Cc: stable@kernel.org Reviewed-by: Dave Chinner Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_sync.c | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Wed Oct 6 15:21:40 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96KLe3a119002 for ; Wed, 6 Oct 2010 15:21:40 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o96KLc5N118974; Wed, 6 Oct 2010 15:21:38 -0500 Date: Wed, 6 Oct 2010 15:21:38 -0500 Message-Id: <201010062021.o96KLc5N118974@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.34-20373-gdebd835 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 80168676ebfe4af51407d30f336d67f082d45201 X-Git-Newrev: debd8351de1069838f8d60557e2215e69c785ed3 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated debd835 xfs: properly account for reclaimed inodes from 80168676ebfe4af51407d30f336d67f082d45201 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit debd8351de1069838f8d60557e2215e69c785ed3 Author: Johannes Weiner Date: Fri Oct 1 07:43:54 2010 +0000 xfs: properly account for reclaimed inodes When marking an inode reclaimable, a per-AG counter is increased, the inode is tagged reclaimable in its per-AG tree, and, when this is the first reclaimable inode in the AG, the AG entry in the per-mount tree is also tagged. When an inode is finally reclaimed, however, it is only deleted from the per-AG tree. Neither the counter is decreased, nor is the parent tree's AG entry untagged properly. Since the tags in the per-mount tree are not cleared, the inode shrinker iterates over all AGs that have had reclaimable inodes at one point in time. The counters on the other hand signal an increasing amount of slab objects to reclaim. Since "70e60ce xfs: convert inode shrinker to per-filesystem context" this is not a real issue anymore because the shrinker bails out after one iteration. But the problem was observable on a machine running v2.6.34, where the reclaimable work increased and each process going into direct reclaim eventually got stuck on the xfs inode shrinking path, trying to scan several million objects. Fix this by properly unwinding the reclaimable-state tracking of an inode when it is reclaimed. Signed-off-by: Johannes Weiner Reviewed-by: Dave Chinner Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_sync.c | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) hooks/post-receive -- XFS development tree From warthog9@kernel.org Wed Oct 6 18:47:08 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o96Nl8iN130687 for ; Wed, 6 Oct 2010 18:47:08 -0500 X-ASG-Debug-ID: 1286409718-5a60031f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from shards.monkeyblade.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 07127ECE060; Wed, 6 Oct 2010 17:01:58 -0700 (PDT) Received: from shards.monkeyblade.net (shards.monkeyblade.net [198.137.202.13]) by cuda.sgi.com with ESMTP id eEP1CEiLq8aCmYQm; Wed, 06 Oct 2010 17:01:58 -0700 (PDT) Received: from voot-cruiser.eaglescrag.net (c-71-202-185-40.hsd1.ca.comcast.net [71.202.185.40]) (authenticated bits=0) by shards.monkeyblade.net (8.14.4/8.14.3) with ESMTP id o96Nkart002554 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 6 Oct 2010 16:46:37 -0700 X-Virus-Status: Clean X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.95.3 at shards.monkeyblade.net Message-ID: <4CAD0A5C.7030005@kernel.org> Date: Wed, 06 Oct 2010 16:46:36 -0700 From: "J.H." User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100907 Fedora/3.0.7-1.fc12 Lightning/1.0b2pre Thunderbird/3.0.7 MIME-Version: 1.0 To: Dave Chinner CC: Johannes Weiner , Alex Elder , xfs@oss.sgi.com, linux-kernel@vger.kernel.org, stable@kernel.org X-ASG-Orig-Subj: Re: [patch] xfs: properly account for reclaimed inodes Subject: Re: [patch] xfs: properly account for reclaimed inodes References: <20101001074354.GF2618@cmpxchg.org> <1285953443.2422.4.camel@doink> <20101004071904.GH4681@dastard> <20101004102213.GJ2618@cmpxchg.org> <20101006045349.GA13191@dastard> In-Reply-To: <20101006045349.GA13191@dastard> X-Enigmail-Version: 1.0.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.3 (shards.monkeyblade.net [198.137.202.13]); Wed, 06 Oct 2010 16:46:38 -0700 (PDT) X-Barracuda-Connect: shards.monkeyblade.net[198.137.202.13] X-Barracuda-Start-Time: 1286409719 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.42934 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 10/05/2010 09:53 PM, Dave Chinner wrote: > On Mon, Oct 04, 2010 at 12:22:13PM +0200, Johannes Weiner wrote: >> Hi, >> >> On Mon, Oct 04, 2010 at 06:19:04PM +1100, Dave Chinner wrote: >>> On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: >>>> On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: >>>>> When marking an inode reclaimable, a per-AG counter is increased, the >>>>> inode is tagged reclaimable in its per-AG tree, and, when this is the >>>>> first reclaimable inode in the AG, the AG entry in the per-mount tree >>>>> is also tagged. >>>>> >>>>> When an inode is finally reclaimed, however, it is only deleted from >>>>> the per-AG tree. Neither the counter is decreased, nor is the parent >>>>> tree's AG entry untagged properly. >>>>> >>>>> Since the tags in the per-mount tree are not cleared, the inode >>>>> shrinker iterates over all AGs that have had reclaimable inodes at one >>>>> point in time. >>>>> >>>>> The counters on the other hand signal an increasing amount of slab >>>>> objects to reclaim. Since "70e60ce xfs: convert inode shrinker to >>>>> per-filesystem context" this is not a real issue anymore because the >>>>> shrinker bails out after one iteration. >>>>> >>>>> But the problem was observable on a machine running v2.6.34, where the >>>>> reclaimable work increased and each process going into direct reclaim >>>>> eventually got stuck on the xfs inode shrinking path, trying to scan >>>>> several million objects. >>>>> >>>>> Fix this by properly unwinding the reclaimable-state tracking of an >>>>> inode when it is reclaimed. >>>>> >>>>> Signed-off-by: Johannes Weiner >>>>> Cc: stable@kernel.org >>>> >>>> Yes, this looks right to me. The state was correctly >>>> adjusted in xfs_iget_cache_hit() when a RECLAIMABLE >>>> inode is found in the cache, but it was not done when >>>> reclaim completes. >>>> >>>> Reviewed-by: Alex Elder >>> >>> Alex, can you push this to Linus ASAP? This needs to go back to >>> stable kernels as well.. >> >> Here is my suggestion of a backport to .34. Dave, Alex, do you >> approve? >> >> Hannes >> >> diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c >> index 6845db9..3314f2a 100644 >> --- a/fs/xfs/xfs_iget.c >> +++ b/fs/xfs/xfs_iget.c >> @@ -499,6 +499,7 @@ xfs_ireclaim( >> write_lock(&pag->pag_ici_lock); >> if (!radix_tree_delete(&pag->pag_ici_root, agino)) >> ASSERT(0); >> + pag->pag_ici_reclaimable--; >> write_unlock(&pag->pag_ici_lock); >> xfs_perag_put(pag); > > Looks good to me. > > Reviewed-by: Dave Chinner i've got this in production and things seem to be acting a lot more like I would expect. Tested-by: John 'Warthog9' Hawley From aelder@oss.sgi.com Wed Oct 6 21:14:41 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o972Efmq140337 for ; Wed, 6 Oct 2010 21:14:41 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o972EcgG140297; Wed, 6 Oct 2010 21:14:38 -0500 Date: Wed, 6 Oct 2010 21:14:38 -0500 Message-Id: <201010070214.o972EcgG140297@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.34-19748-g3470ca2 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 5ae4ef8313c85f443202aa04405fe178e6138a6a X-Git-Newrev: 3470ca24e60578b3306a909588c7a269eeef51d6 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 3470ca2 xfs: do not use xfs_mod_incore_sb_batch for per-cpu counters c7e2068 xfs: do not use xfs_mod_incore_sb for per-cpu counters 893eb9d xfs: remove XFS_MOUNT_NO_PERCPU_SB from 5ae4ef8313c85f443202aa04405fe178e6138a6a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3470ca24e60578b3306a909588c7a269eeef51d6 Author: Christoph Hellwig Date: Thu Sep 30 02:25:56 2010 +0000 xfs: do not use xfs_mod_incore_sb_batch for per-cpu counters Update the per-cpu counters manually in xfs_trans_unreserve_and_mod_sb and remove support for per-cpu counters from xfs_mod_incore_sb_batch to simplify it. And added benefit is that we don't have to take m_sb_lock for transactions that only modify per-cpu counters. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit c7e2068007b60c073bd7e5415e4db114ff596920 Author: Christoph Hellwig Date: Thu Sep 30 02:25:55 2010 +0000 xfs: do not use xfs_mod_incore_sb for per-cpu counters Export xfs_icsb_modify_counters and always use it for modifying the per-cpu counters. Remove support for per-cpu counters from xfs_mod_incore_sb to simplify it. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit 893eb9d7d7755ab63f57d5426dc2639fb8a06ccd Author: Christoph Hellwig Date: Thu Sep 30 02:25:54 2010 +0000 xfs: remove XFS_MOUNT_NO_PERCPU_SB Fail the mount if we can't allocate memory for the per-CPU counters. This is consistent with how we handle everything else in the mount path and makes the superblock counter modification a lot simpler. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_super.c | 6 +- fs/xfs/xfs_bmap.c | 32 +++++---- fs/xfs/xfs_fsops.c | 3 +- fs/xfs/xfs_mount.c | 156 ++++++++++++------------------------------ fs/xfs/xfs_mount.h | 6 +- fs/xfs/xfs_trans.c | 82 ++++++++++++++-------- 6 files changed, 124 insertions(+), 161 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Wed Oct 6 22:11:56 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o973BurT143977 for ; Wed, 6 Oct 2010 22:11:56 -0500 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id D2B6A304048; Wed, 6 Oct 2010 20:12:55 -0700 (PDT) Received: from [134.15.64.144] ([134.15.64.144]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 6 Oct 2010 22:12:55 -0500 Subject: Re: [patch] xfs: properly account for reclaimed inodes From: Alex Elder Reply-To: aelder@sgi.com To: Hans-Peter Jansen Cc: xfs@oss.sgi.com, Johannes Weiner , Dave Chinner , stable@kernel.org, John Hawley , linux-kernel@vger.kernel.org In-Reply-To: <201010051126.47537.hpj@urpla.net> References: <20101001074354.GF2618@cmpxchg.org> <20101004071904.GH4681@dastard> <20101004102213.GJ2618@cmpxchg.org> <201010051126.47537.hpj@urpla.net> Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Oct 2010 22:12:54 -0500 Message-ID: <1286421174.6040.1.camel@doink> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Oct 2010 03:12:55.0739 (UTC) FILETIME=[895BD8B0:01CB65CD] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2010-10-05 at 11:26 +0200, Hans-Peter Jansen wrote: > On Monday 04 October 2010, 12:22:13 Johannes Weiner wrote: > > Hi, > > > > On Mon, Oct 04, 2010 at 06:19:04PM +1100, Dave Chinner wrote: > > > On Fri, Oct 01, 2010 at 12:17:23PM -0500, Alex Elder wrote: > > > > On Fri, 2010-10-01 at 09:43 +0200, Johannes Weiner wrote: > > > > > When marking an inode reclaimable, a per-AG counter is increased, > > > > > the inode is tagged reclaimable in its per-AG tree, and, when this > > > > > is the first reclaimable inode in the AG, the AG entry in the > > > > > per-mount tree is also tagged. > > > > > > > > > > When an inode is finally reclaimed, however, it is only deleted > > > > > from the per-AG tree. Neither the counter is decreased, nor is the > > > > > parent tree's AG entry untagged properly. > > > > > > > > > > Since the tags in the per-mount tree are not cleared, the inode > > > > > shrinker iterates over all AGs that have had reclaimable inodes at > > > > > one point in time. > > > > > > > > > > The counters on the other hand signal an increasing amount of slab > > > > > objects to reclaim. Since "70e60ce xfs: convert inode shrinker to > > > > > per-filesystem context" this is not a real issue anymore because > > > > > the shrinker bails out after one iteration. > > > > > > > > > > But the problem was observable on a machine running v2.6.34, where > > > > > the reclaimable work increased and each process going into direct > > > > > reclaim eventually got stuck on the xfs inode shrinking path, > > > > > trying to scan several million objects. > > > > > > > > > > Fix this by properly unwinding the reclaimable-state tracking of an > > > > > inode when it is reclaimed. > > > > > > > > > > Signed-off-by: Johannes Weiner > > > > > Cc: stable@kernel.org > > > > > > > > Yes, this looks right to me. The state was correctly > > > > adjusted in xfs_iget_cache_hit() when a RECLAIMABLE > > > > inode is found in the cache, but it was not done when > > > > reclaim completes. > > > > > > > > Reviewed-by: Alex Elder > > > > > > Alex, can you push this to Linus ASAP? This needs to go back to > > > stable kernels as well.. > > > > Here is my suggestion of a backport to .34. Dave, Alex, do you > > approve? > > > > Hannes > > > > diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c > > index 6845db9..3314f2a 100644 > > --- a/fs/xfs/xfs_iget.c > > +++ b/fs/xfs/xfs_iget.c > > @@ -499,6 +499,7 @@ xfs_ireclaim( > > write_lock(&pag->pag_ici_lock); > > if (!radix_tree_delete(&pag->pag_ici_root, agino)) > > ASSERT(0); > > + pag->pag_ici_reclaimable--; > > write_unlock(&pag->pag_ici_lock); > > xfs_perag_put(pag); > > > > > > Ping? > > Masters of xfs, please raise your voices! > > Pete I know I'm a little late to the game in saying so, but I do agree this looks like the right fix for the .34 stable branch. Reviewed-by: Alex Elder From aelder@oss.sgi.com Wed Oct 6 22:56:23 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o973uNQ1146885 for ; Wed, 6 Oct 2010 22:56:23 -0500 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o973uL2P146852; Wed, 6 Oct 2010 22:56:21 -0500 Date: Wed, 6 Oct 2010 22:56:21 -0500 Message-Id: <201010070356.o973uL2P146852@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.34-20373-g081003f X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: debd8351de1069838f8d60557e2215e69c785ed3 X-Git-Newrev: 081003fff467ea0e727f66d5d435b4f473a789b3 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated discards debd8351de1069838f8d60557e2215e69c785ed3 (commit) 081003f xfs: properly account for reclaimed inodes from debd8351de1069838f8d60557e2215e69c785ed3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 081003fff467ea0e727f66d5d435b4f473a789b3 Author: Johannes Weiner Date: Fri Oct 1 07:43:54 2010 +0000 xfs: properly account for reclaimed inodes When marking an inode reclaimable, a per-AG counter is increased, the inode is tagged reclaimable in its per-AG tree, and, when this is the first reclaimable inode in the AG, the AG entry in the per-mount tree is also tagged. When an inode is finally reclaimed, however, it is only deleted from the per-AG tree. Neither the counter is decreased, nor is the parent tree's AG entry untagged properly. Since the tags in the per-mount tree are not cleared, the inode shrinker iterates over all AGs that have had reclaimable inodes at one point in time. The counters on the other hand signal an increasing amount of slab objects to reclaim. Since "70e60ce xfs: convert inode shrinker to per-filesystem context" this is not a real issue anymore because the shrinker bails out after one iteration. But the problem was observable on a machine running v2.6.34, where the reclaimable work increased and each process going into direct reclaim eventually got stuck on the xfs inode shrinking path, trying to scan several million objects. Fix this by properly unwinding the reclaimable-state tracking of an inode when it is reclaimed. Signed-off-by: Johannes Weiner Cc: stable@kernel.org Reviewed-by: Dave Chinner Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- XFS development tree From aelder@sgi.com Wed Oct 6 23:26:52 2010 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o974QqWY148770 for ; Wed, 6 Oct 2010 23:26:52 -0500 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay2.corp.sgi.com (Postfix) with ESMTP id 95CC0304084; Wed, 6 Oct 2010 21:27:51 -0700 (PDT) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.4/8.14.2) with ESMTP id o974Rotj012159; Wed, 6 Oct 2010 23:27:51 -0500 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.4/8.14.4/Submit) id o974RmcC012153; Wed, 6 Oct 2010 23:27:48 -0500 From: Alex Elder Message-Id: <201010070427.o974RmcC012153@stout.americas.sgi.com> Date: Wed, 06 Oct 2010 23:27:48 -0500 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS fix for 2.6.36 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I'm hoping this XFS change can make it in to 2.6.36. It fixes a bug that causes allocation groups to be needlessly scanned for reclaim, because some reclaim state in XFS is never properly cleared when an inode gets reclaimed. The result can make filesystems appear to have an ever-increasing number of reclaimable objects, even if there is nothing to do. -Alex The following changes since commit cb655d0f3d57c23db51b981648e452988c0223f9: Linux 2.6.36-rc7 (2010-10-06 13:39:52 -0700) are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Johannes Weiner (1): xfs: properly account for reclaimed inodes fs/xfs/linux-2.6/xfs_sync.c | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) From info@chipandcartridge.com Thu Oct 7 12:24:57 2010 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o97HOHvT207811 for ; Thu, 7 Oct 2010 12:24:18 -0500 X-ASG-Debug-ID: 1286473088-7cc401440000-XsX5bF X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bs.co.kr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ECC3015F6183 for ; Thu, 7 Oct 2010 10:38:08 -0700 (PDT) Received: from bs.co.kr (mail.bs.co.kr [219.240.39.236]) by cuda.sgi.com with ESMTP id FEXPjc4Hi740B2NN for ; Thu, 07 Oct 2010 10:38:08 -0700 (PDT) Received: from mail.chipandcartridge.com [219.240.39.236] by bs.co.kr with ESMTP (SMTPD-8.21) id A20802E4; Fri, 08 Oct 2010 02:23:20 +0900 From: =?ks_c_5601-1987?B?TVVIQU4gRElHSVRBTCBDby4sIEw=?= =?ks_c_5601-1987?B?dGQ=?= To: =?ks_c_5601-1987?B?WEZT?= X-ASG-Orig-Subj: =?ks_c_5601-1987?B?V2lkZSBGb3JtYXQgUHJpbnRpbmc=?= =?ks_c_5601-1987?B?IFByb2R1Y3Rz?= Subject: =?ks_c_5601-1987?B?V2lkZSBGb3JtYXQgUHJpbnRpbmc=?= =?ks_c_5601-1987?B?IFByb2R1Y3Rz?= Date: Fri, 08 Oct 2010 02:23:20 +0900 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary ="----=_NextPart_000_0304_189B378.2902B20" X-Priority: 3 X-Mailer: Microsoft Outlook Express 6.00.2800.1158 Compatible 40459 Disposition-Notification-To: MUHAN@oss.sgi.com, DIGITAL@oss.sgi.com, "Co."@oss.sgi.com, Ltd X-MSMail-Priority: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Compatible Message-Id: <201010080223531.SM02696@mail.chipandcartridge.com> X-Barracuda-Connect: mail.bs.co.kr[219.240.39.236] X-Barracuda-Start-Time: 1286473149 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------=_NextPart_000_0304_189B378.2902B20 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0305_189B378.2902B20" ------=_NextPart_001_0305_189B378.2902B20 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 IERlYXIgIFNhbGVzICYgUHJvZHVjdHMgTWFuYWdlciANCiANCldlIGFyZSBhIE1hbnVmYWN0dXJl ciBhbmQgUHJvdmlkZXIgZm9yIHRoZSBXaWRlIGZvcm1hdCBQcmludGluZyBQcm9kdWN0cy4gDQpG b3IgeW91ciByZWZlcmVuY2UsIHdlIGVuY2xvc2VkIHRoZSBwcm9kdWN0cyBpbmZvcm1hdGlvbiBQ REYgZmlsZS4NClRoZSBmb2xsb3dpbmdzIGFyZSBvdXIgcHJvZHVjdHMgcmFuZ2UuDQogICAtIDQ0 MG1sIGFuZCAyMjAgbWwgQ29tcGF0aWJsZSBDaGlwIGFuZCBDYXJ0cmlkZ2UgZm9yIE1pbWFraSwg TXV0b2gsIFJvbGFuZC4NCiAgIC0gQ0lTUyBmb3IgTWltYWtpLCBNdXRvaCwgUm9sYW5kLg0KICAg LSBDb21wYXRpYmxlIENoaXAgYW5kIENhcnRyaWRnZSBmb3IgRVBTT04gOTkwMC83OTAwLCA5NzAw Lzc3MDAuDQogICAtIENJU1MgZm9yIEVQU09OIDk5MDAvNzkwMCwgOTcwMC83NzAwLg0KICAgLSBE YW1wZXIgYW5kIFNwYXJlIFBhcnRzLg0KICAgLSBDYXJ0cmlkZ2UgYW5kIENoaXAgZGVzaWduZWQg YnkgQ3VzdG9tZXJzLiAoIE8uRS5NICkNCg0KTG9va2luZyBmb3J3YXJkIHRvIHlvdXIgcmV2aWV3 aW5nIG91ciBwcm9kdWN0cyBhbmQgaW50ZXJlc3RlIGluIG91ciBwcm9kdWN0cy4gDQogDQpCZXN0 IFJlZ2FyZHMuDQoNCkIuRy4gUGFyayAgKCBTYWxlcyBNYW5hZ2VyICkNCg0KICBNVUhBTiBESUdJ VEFMIENvLiwgTHRkDQoNCkhFQURRVUFSVEVSUyAmIEZBQ1RPUlkNCiMgMjYzLCBId2FyaWh5ZW9u LXJpIEh5YW5nbmFtLW15ZW9uLCBId2FzZW9uZy1zaSxHeWVvbmdnaS1kbywgS29yZWENCiBQb3N0 YWwgQ29kZSAoNDQ1LTkyNCkNClRlbCA6IDgyLSgwKTUwMi01NjAtNzAwMCANCkZheCA6IDgyLSgw KTUwMi01NjAtMDA3Nw0KaHR0cDovL3d3dy5DaGlwYW5kQ2FydHJpZGdlLmNvbQ0KRS1NYWlsIDog IGluZm9AQ2hpcGFuZENhcnRyaWRnZS5jb20NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== ------=_NextPart_001_0305_189B378.2902B20 Content-Type: text/html; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPg0KPCEt LSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPg0KPCFET0NU WVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4N CjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMjIpaHR0cDovL2ludGVybmV0LmUtbWFpbCAtLT48IS0t IHNhdmVkIGZyb20gdXJsPSgwMDIyKWh0dHA6Ly9pbnRlcm5ldC5lLW1haWwgLS0+PEhUTUw+PEhF QUQ+PFRJVExFPkRlYXIgU2FsZXMgYW5kIFByb2R1Y3RzIE1hbmFnZXI8L1RJVExFPg0KPE1FVEEg aHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVuaWNv ZGUiPg0KPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuNjAwMC4xNzA2MyIgbmFtZT1HRU5FUkFU T1I+PC9IRUFEPg0KPEJPRFkgdGV4dD1ibGFjayB2TGluaz1wdXJwbGUgYUxpbms9cmVkIGxpbms9 Ymx1ZSBiZ0NvbG9yPSNmZWZmZTg+DQo8RElWPg0KPFA+PEZPTlQgZmFjZT1BcmlhbD48L0ZPTlQ+ Jm5ic3A7PEZPTlQgDQpmYWNlPUFyaWFsPkRlYXImbmJzcDsgU2FsZXMgJiBQcm9kdWN0cyBNYW5h Z2VyPC9GT05UPg0KPFA+DQo8UD48Rk9OVCBmYWNlPUFyaWFsPjwvRk9OVD4gPC9QPg0KPFA+PEZP TlQgZmFjZT1BcmlhbD5XZSBhcmUgYSBNYW51ZmFjdHVyZXIgYW5kIFByb3ZpZGVyIGZvciB0aGUg V2lkZSBmb3JtYXQgDQpQcmludGluZyBQcm9kdWN0cy4gPC9GT05UPjwvUD4NCjxQPjxGT05UIGZh Y2U9QXJpYWw+Rm9yIHlvdXIgcmVmZXJlbmNlLCB3ZSBlbmNsb3NlZCB0aGUgcHJvZHVjdHMgaW5m b3JtYXRpb24gUERGIA0KZmlsZS48L0ZPTlQ+PC9QPg0KPFA+PEZPTlQgZmFjZT1BcmlhbD5UaGUg Zm9sbG93aW5ncyBhcmUgb3VyIHByb2R1Y3RzIHJhbmdlLjwvRk9OVD48L1A+DQo8UD48Rk9OVCBm YWNlPUFyaWFsPiZuYnNwOyZuYnNwOyAtIDQ0MG1sIGFuZCAyMjAgbWwgDQpDb21wYXRpYmxlIENo aXAgYW5kIENhcnRyaWRnZSBmb3IgTWltYWtpLCBNdXRvaCwgUm9sYW5kLjwvRk9OVD48L1A+DQo8 UD48Rk9OVCBmYWNlPUFyaWFsPiZuYnNwOyZuYnNwOyAtJm5ic3A7Q0lTUyBmb3IgTWltYWtpLCBN dXRvaCwgDQpSb2xhbmQuPC9GT05UPjwvUD4NCjxQPjxGT05UIGZhY2U9QXJpYWw+Jm5ic3A7Jm5i c3A7IC0gQ29tcGF0aWJsZSBDaGlwIGFuZCBDYXJ0cmlkZ2UgZm9yIEVQU09OIA0KOTkwMC83OTAw LCA5NzAwLzc3MDAuPC9GT05UPjwvUD4NCjxQPjxGT05UIGZhY2U9QXJpYWw+Jm5ic3A7Jm5ic3A7 IC0gQ0lTUyBmb3ImbmJzcDtFUFNPTiA5OTAwLzc5MDAsIA0KOTcwMC83NzAwLjwvRk9OVD48L1A+ DQo8UD48Rk9OVCBmYWNlPUFyaWFsPiZuYnNwOyZuYnNwOyAtIERhbXBlciBhbmQgU3BhcmUgUGFy dHMuPC9GT05UPjwvUD4NCjxQPjxGT05UIGZhY2U9QXJpYWw+Jm5ic3A7Jm5ic3A7IC0gQ2FydHJp ZGdlIGFuZCBDaGlwIGRlc2lnbmVkIGJ5IEN1c3RvbWVycy4gKCANCk8uRS5NICk8L0ZPTlQ+PC9Q Pg0KPFA+PEZPTlQgZmFjZT1BcmlhbD48L0ZPTlQ+Jm5ic3A7PC9QPg0KPFA+PEZPTlQgZmFjZT1B cmlhbD5Mb29raW5nIGZvcndhcmQgdG8gDQp5b3VyIHJldmlld2luZyBvdXIgcHJvZHVjdHMgYW5k IGludGVyZXN0ZSBpbiBvdXIgcHJvZHVjdHMuPC9GT05UPg0KPFA+IA0KPFA+PEZPTlQgZmFjZT1B cmlhbD48L0ZPTlQ+DQo8UD48Rk9OVCBmYWNlPUFyaWFsPkJlc3QgUmVnYXJkcy48QlI+PEJSPkIu Ry4gUGFyayAmbmJzcDsoIFNhbGVzIE1hbmFnZXImbmJzcDspPC9GT05UPjwvUD48Rk9OVCBmYWNl PUFyaWFsPg0KPFA+PEJSPiZuYnNwOyBNVUhBTiBESUdJVEFMIENvLiwgTHRkPEJSPjxCUj5IRUFE UVVBUlRFUlMgJiANCkZBQ1RPUlk8QlI+IyAyNjMsIEh3YXJpaHllb24tcmkgSHlhbmduYW0tbXll b24sIEh3YXNlb25nLXNpLEd5ZW9uZ2dpLWRvLCANCktvcmVhPEJSPiZuYnNwO1Bvc3RhbCBDb2Rl ICg0NDUtOTI0KTxCUj5UZWwgOiA4Mi0oMCk1MDItNTYwLTcwMDAgPEJSPkZheCA6IA0KODItKDAp NTAyLTU2MC0wMDc3PEJSPmh0dHA6Ly93d3cuQ2hpcGFuZENhcnRyaWRnZS5jb208QlI+RS1NYWls IDombmJzcDsmbmJzcDs8L0ZPTlQ+PEEgaHJlZj0ibWFpbHRvOmluZm9AQ2hpcGFuZENhcnRyaWRn ZS5jb20iPjxGT05UIA0KZmFjZT1BcmlhbD5pbmZvQENoaXBhbmRDYXJ0cmlkZ2UuY29tPC9GT05U PjwvQT48Rk9OVCBmYWNlPUFyaWFsPjwvRk9OVD48L1A+DQo8UD48Rk9OVCANCmZhY2U9QXJpYWw+ LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9GT05U PjwvUD48L0RJVj48L0JPRFk+PC9IVE1MPg0KDQoNCg0KDQo= ------=_NextPart_001_0305_189B378.2902B20-- ------=_NextPart_000_0304_189B378.2902B20 Content-Type: application/octet-stream; name= "( WFP )_Compatible Chip & Cartridge_FAC.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="( WFP )_Compatible Chip & Cartridge_FAC.pdf" JVBERi0xLjQKJaqrrK0KMTAgMCBvYmoKPDwgL1R5cGUgL1BhZ2UKL1BhcmVudCAxIDAgUgov TWVkaWFCb3ggWyAwIDAgNTk1IDg0MSBdCi9UcmltQm94IFsgMCAwIDU5NSA4NDEgXQovQmxl ZWRCb3ggWyAwIDAgNTk1IDg0MSBdCi9SZXNvdXJjZXMgOSAwIFIKL0NvbnRlbnRzIDEwMjcg MCBSCj4+CmVuZG9iagoxMDI3IDAgb2JqCjw8IAovTGVuZ3RoIDEwMjggMCBSCi9GaWx0ZXIg L0ZsYXRlRGVjb2RlIAo+PgpzdHJlYW0KeJztnUuPJblu5/f1KXJ9gQrr/QCMXBhjG+OdgQa8 MGbRr/JdZHtgf//FkIqQSCnOP+PEvV3VWZ676M5M1e/oUGKIoiQG9V+fzEsJ9uW3l1hj++2t /Wbop2n///Onf/vTy39++tdP//XJ5S0WoqzZbA38mZQ3V6XkbZQEZ7bkqOD4zPj7qO5jVtbq ioE+Umprfs6V/jEz60N88WYrJr38/Nunv/vfv9mX//V/qVv+9Q/tmlzslokdtUnBo/a4spVS enOYjfRzb487tSftX1j8EEFK3kaJt5vxqUug/h7toU/YWn1sInxuf5VUX3wgSW19oS7dCgth X/6Z/vuPT//ww6e/+yf7YqN5+eELlbSP2ZcUXixJ+8Nvn/79740x8ZWqyvzbr69u/+XL62dP P22g3/2rNVxW6W/XgR/bP3z2m59rYCgS1D6djlp6Qa+2ffoX+u8nrqF9Turyr+OXvxU9VRSO 30LXgjVHxx8/H33sZ4Yb5LWGSNlp10h5DQ+0pjV21JTG1+qarD0+VeVBUF+f+2+nh2M8Y+NT 6z+YX17/zw//8ukffziGGA0fE8JLSH4L1r8kGreJLE3dAo3Q//6VRo174f/sy3//x6cvf2qf sTyArR0fKnWr0V18yNlCVbvxoRppnNaLD3kbNh/lm5z1WzLx6qt+TzN4dJAnK1WN6x3ENot6 gARgU9G+93f/5t7N/auPbkZf3fvXk6Jpsjj6lyaLROZQ06pbD7Z360P4951UDil7m7yprY5I c5oLX7M/DdVr6blx9SVUv9nmbhwFmYRx7HRwl3tvzwX9I28vL39++fTlawjnLMkSnJKulwxp uPccTXungrN4XCOruSjhf3sZJaR4T4/xG5X4reSHJUudXGOiOdLs1qLUNiFT/1iafnvJmypx W/XcCeNDvUDqY/mj44fWb458GlXhUaIqJAmty0er90/1kr3G310lhEZ6KqX/joLR/9S0EM5/ f4OnhXslxqRk6yVDmEgfD/lBweOnpauJ/tEXrYm9QCmi0qNirNLsKOh6aEYz0qh2ZKfbOCuk e9sL3kZBiPTcWH5ujo9IwZXjRl9eXaXRXNiDqyfXzb1UN3lu1tIqIw3PLbyGLe0OWPcF9r/T q92nyjRPld0eR7JZkQzxby+7NfOj5G2UhECeQOgWpE2Wo+SqYfyJXNyNhqWiG/bj6+e6t+Sn 3qTy+vlwFGov+vn18CX8Tk5NXRu2Ww5Pv0lTe4k07Nz4q6a2T/AIe7qp9Lc0lXy0ozW/vn6O kza/9H/5hZue96ZObRwtIhlM2o1Zphk2j5K3URI82VmvG90LLpcX/AF7Q5nJhsfKHM/nT7MK 6bFWavWX7W7jhgZaIB+q9sG5P6F7iTyznpyIXPM+0vlDUvDU6MykWaoqlba6M9RuI+2maUu3 m6e1MprN0put7s+u3+JS5tltrrtf+zltducejtaQSQCX1GjtJfLAepI2kdCq5aPk6dFKC9yU 3XVDk1UNtbTuSMdq42iRP0rsd9IeR1+tGkTL2TAvYtieFv2LLUcT87E4sa/1MVhHX9R9UfPH dsmzz/KVin/8ICp+tj2XKs6ynj005x+q2P40husgjzp4xTrX+pW75ytVOSogpyhnq6bOXqJm EUPd1vyh8alR8tzUSXXEsJmarpWYJx3+cuin//z58SP5YVvjnAXzRTyexf7I/crDzs7P1f6z W5d66gNn94f0cbWP3QhDz3Ox2o04SsSN8DWQ11BUn0nJU46Eqc/3EClI91Do1od9pXRq3o88 +uI0t7J/sY/qPgXbL6+fy+5U9O4YQ78b8fE9aqyPKfxH4GYGWg2Qc6T67iiRvnMpkndS1dMl Jc89XfQ8ukjL5XLddzH5v2KwfLjmZFOeHCx9aJwHzc3B8n10jHWhPh4kMgp+Oo8HKepPtrO9 yLnXuP+bGhmfo93cXO3J2XGm97kT9xZMhb9zh34vVXKlOW+FDGZO1ENu36egvg2j4K0XpFI2 23a0jo9IQT+U4g2kEnJ7GszmEz0e9CjFlxzrZuxxIuX3EymmyVbT0kxoWlOTJc6RXIV+fhWE pqWS07Qlf3qnXT3oKDRvpURFU2t4Myfmtk+y40lwalIJEx5pXcZ4zB3Pz+DOugMvglODzIw7 zzgJGTten8F5EjoOKo3wdfNO8bluJe+89b7zdvC0EjHBT3y0zFMP58E7zfMDpHkbdz7Q6vrg /TO8iYMP1zwtvevg4zO89/3Bsema91vNg8/P8MmOg+LyDO/i4Os1T6Ondt6ZZ/hIz8XB22d4 mwf/hH7JkNpyiw/xHm/qHZ7Kfb3F+3yPN+55PFRardzC/Q2aDHqwt/hY7vHs8j/Pk8VLdzqH DOetzsybDXf6J9GS+x4f3D3epHCDJ9tp7vFegjSe4ANN8Pf45O7x7tbTTLbT3ONjuGF7iLfl Dk+2093jQ7phe4i35g5vNxrxt3hf7vHG3eF59/EW7m9YB89H6ff4WO/x7pY8hTygG9aH+Gjv 8TbesCbkL+Z6jw/+Hm/yDetD3nG293gf7/C0ZKs3rA/xyd/jXb5hfWilUe09PsZ7vK03hpf3 tIK6x4d8w/p4Xnfd4d2W73huHNxQb1gf4s0dz83T2u6OOGQ874xeWgveUS6ZTnPH+NBy7Y7r 5mi5Vm6ITzxHa9zh7R3XjXfjzQ3jQ3y447oRb+64bi63M+07vL/juhFvzA3j49KW7rhuxLs7 rpsj4+luPJ/ExzuuG2/mmRvGx4W2qXOHD3dcN+KtuzHanafye3wwN4wP8eaO6+YcGat7/J25 3dntztRCeLJ3rI/d3B3XzZmt3HHdiI93jDPx9o7rZmuLb7rDhzuuG/HmjuvGu63+hvUh3t9x 3TiWxt6wJjZvKd7j3R3Xzaat+hvWh/h4x3Uj3t1x3WzcSrwxXizvit/jrb9hfWzY8h3Xjfhw x3Uj3sQb1odDk++4bpaPnG/gbruzpUf4HdeEcJduGB/LUdH3+BjuyGM3e8d1sxyWfY8P6Y7x IeN5x3UzdcvhhnaJ9+Ueb+64bqZsKd0wPsT7O66byVsNN4yJ2V9+usO7O64bvyN1Z1uG+HjH dSPehhvD0cQtl3t8uOO6EW/SDeNjyHjecd2I93dcN+O3O7aQ8DujkXCXb1gfQ7bzjutGfLzj uhFv6w3rw/E2d1w34kO+0z9kPe+4bobK77huxPt6x/qYzdyY62ga3VJ+3vow72+4bqmWrYrr dnm+ynyUjY3L81Xmnbhul+erqeZ2rnzwl+erzPO58sFfnq8yb8V1uzxfTTVtWZyNy/NV5sNw 3fzl+SrzZpwf+svz1cTB3HbwT+g3bn64bv4J/fZnwT+h27CNPRD/hGo5FGNEaDyhWt/egTn4 J1TrtzgcNz+p9lEoAvNuHB96FRrxONQhVQ486Xy4DI1gPgzHLYhqQegF83YcHwZ3zdvWDwev Ql4eB44wH8bxYQiaj+4cxsK8GY5bmMJeQtC8JZPDPL+JOHgV9/I4qIZ5P44PVfWPI3YSv0q5 huzwB37/F+i/8tvrHNJkaOhyLMBuitbX18ldm0IByY5YerLl/XV7vMkswbGk2yNu/XhlqAdo 2/3Vki/HLyO427zmPb7zpx7CZvwSsPYR+8LymcmjzjC/jjC90dYwXsPe42T5JYa9o76LtjpL 5ulhW7t6Wx4CpxUtRaMbOE7YH8Ge/uNo3KXuSVypnIyNJUN3evzraP2P+jWNEQ1KQsfvppX8 4rdq5fSoHk+vtHId5qJ0rVveBtuDWqmsXDw3P40qpON+7q8gDksTFcVnMkc8belZNJYnTktz hKqn1XiJLMOMnc3Xg8Y8eNL5zbKjh8Ynhwjqi5Y3J0MkJ7juHoLNbsvkh6Wy0be+RFrtlbFa DeKE3P1Ie/BoceQsgxx02F7MYHc6pFHyNkpi9OR48uTVPyUlPRTWNtdxTJSeZkqOhE308I4F fxh+EC3k7ESTHupOj7CHUIUuuTyi0zZcxDh8IN9eiHhISwxGHC7QSXAeVjsuIRjRCZ7r0s5C 7umCDweoQQ8qjypeIwZYuW9Ow4JH1NJcdueTcInuiElqJ/dwrj3GsOJZao91qj23VzcZtyOI N5Z3aq82rHi9rD2oyJFkLmufcAu6PXP4x165hJkkJzR17kNRFO2RktiFZ59wxgOUnFzK7Fc8 Ilk4EKU0WgJeUkLtFMkVnZEoue7O9YxjjZJd8H7FK6ydY2JYdK9ib7K5En2iLZTFtK2FBXeX ok84VqmILmFAGatUhFF4fEcYNtcLjnRachs/C53FNtq4iJ74XQVOljGMY8Y6NW1LZ8ErtNNd dI0Xg/DMYUu7MBLuVCw0dyKMwh1qqhJG4R6NJJFFQqkK1OkYeBOOddoN+4Rj0yuiKxwP1G6/ rArrKlipfcab8Ao6Zsii6Qotb+bQu10WCRmrWKcii8KR6R1mfaLRbEq+jtlhCUarWKMcY5hX PMrTBZyMCU8Iz3vQVEpGRbrVDC1MF2bCC3zU6fMxrriaTGtchOGILMbD2MC05j2d7sZ35rH1 FXE0L9tEZA+1PKm2F1mZlzA9PrjDvdPl0bxS7cln23U18xE8N12cWFUUoDUJmrH9OVvw93Tb pF/4gp75Q/gFR8M1cTTcLryEJFpr0KPDC4J0wuF47T7kwsMBe5jsBUdGWAkv8ZHWQgc4c1xn PfGXHvDCJ/TgJA4VZHkKNUN4rFqOS60nHo7bzHHW6cTXJ+QZB1HW4XHLYbV1xeGwVdIo3F0K kyV81DqP8MwxwXXFA3gShqYmOj4hi8SmWgcVq4TRPJxhVf0Sy2pdeaJ+zVf0ICSO+WMbkprp OXgPNTvkmXm4ah3yzLxDA4XzIZrYeImttd6/I88+cGceWmQlj+bVwJ2Xf8m37F3MS+yu9QkN RCWP5vMT8mge2eQhTlShwdZXKA6HjIaVD9AoD/Fn/lq9M6+s8jzBifgSqWwD1i5HyIYTH0T8 eUIcE+jMw0WsSK/xhDrftawyjEvctFX7XYt30b2dhYe67dUHFWZtw6UzNfPRXFcvUdk2oq2J lFvekhVHmu2uyExDm0zC8LEW8xLybWO4FkbjSK+jqV4FiNsI9dprn3E4ZlX1Ek9uI9SrVK9x uD8xqncq/NwmqNde/YzDyVZVL9HqNuHZlqP43YmHPvIY405Ft1u878T5Ecl0rHyEJqrXb1U0 vE1wScu5jII/8UO7NDh9fly/RM9b2X06rSH6jGVV9LxNatguM1yfcY2KnrfZoP6kx4Z3iAiX 4HmboZ88LP7MwwmXur3N50bF2lvZgVrnQ9ZS5GThVcXaW9mCWo2U4iUDQkYDl3VUmS4Sam8z nGzJHHAbFzwDI6IqHxEQNkNPis1qqiuOPWRDM2da8IJ2FZUsEvRvCxy0qqWah7v/vOBM6cSj 5Q+JE/lwhl8ur4LDMcuWsp5wPGS7NDOP7LGSRt5YsHgXii1fPuHlsm9mHvpQShx5IcJWqNrU 0rWsOJpnWUO8yxXIQbaCQ3M8pJl5qNkuzYxD/zhwWpZdHHk7w1a4/hkP8szD9Q/73amceKjb wIlcdnnk7Q9b4RajkkfzcNgqedTbJUY5yPN2GqcXIGuX+KeEKOIdqWH/Zh4eCJA8zpQTD+1x 2FO5MK/eXjFw40LJo3m4f8yOfagnHg1dzh5rd/GNvNdsMsCV9BqH2xb81NQzP7S7zuWqtYq3 Bj0NQ/yg39WxFonPB9LxhEOrPB7mmZeotC3lh+LPPFQuB7XFXXz16pBFs60SX+PQk2KDmf2J h+ufw7VYcGiXh/Rev8hk0X7jkH7C8Z7UsGwzb9FIP/yuBUfrH04UwEtJTq+h3qqCXvJ40mYe 2+U9pdLKQ7s8ppWZh64UJ17Iuzz6LS9sl0UezUNvSsmjebgvNeRx+i0yvC815Jl5OHK7ODMO R67nrO67OOolNbwtNR7OmUebjkocjUcoDt/usIuj3oHzCdpNEUfz0Cz3oTLjeOR2cax+xc7D mIph9ic+QOXy4oQ8opVXQ3feBhrasvoVvuDQUFfyaN5DnhYz2Z14tQia11hjsFv9imCAk+5w MmY+wf7kPH3uxMOImWFpjX4FEW5MjVl3xuHG1HiaJx5uTHFaB95gINxLboqIhq4SXuN40qWH h8+oFx45zKqxGodbjmOszDw64hv+6YzDObd3Dif2GU9aREvcPgvNNHSW+SUBPuydcRjeFjiN YVjwdLXEnWnoKKuGyouoMBSKGsq73gsNZ1vVUIVjnUpDFX6l0pmGKyDVUPUKbUK2WLVU41in nMsvn3i4uu3P+8xnNFj78nPB3xmsu/RFv/+L46HYonLk18LDwXo41AsOvSjeo8v2xEMvSokf JZNMxh6yiK/5d+bZLr7G4TzLe3ps5xceLm6V+Ort6AK3GpX4modOlIivcWiJ+zS+8CiKhnPY 8lkUG3x5V7tA5Y7WzjzclRqtnXm0tA17ktIVh6cEo3dmHq9tD6di4bFyOXHe3j3q1XQcH6W6 R/Nw/RM46Wg68WojeZn1pb2ahy4y33FldvnVq/L1vcVtl1/zWL2cZDWdeOVEzU6akl/zMORi yM93Agn/3vJ2n5tnHq6ARv9r3r+zM9Xln3moX87VVVzjJZWANzCqsftdC+8vh9fMoyWQEkcy FXiDl0D98Z95eaNu2YxQ4mseeVJ8f57j3owqEYI3cNodxmrm66U4E2+haeY70MwujyRa8Ba7 U5y20554NXqXJcGxRFl46FENecJWg/B49HZ5Zl6N3sdLuIVHwcicOiyFhkueCG9hNDLf+BbO PFavbzPuyqO9KSWOpKHwDoZdKHE0/55264lGvvIQxqscF94hn2rIMuPwLOiQZaahVXappedl XhJoeIfXP5wO94TDUWtpNOWG2yA4nHNJGn+0VfPQWRZpFO6RrzykcSqZh4d7Upxujg/mFxy6 U0OvM+/hkOJMxCcculNKekkt4j1aBTl6AFrfzDjccFTSax6OWJFe43DAKukl0Yn30Jvi3HQp rXzA9phmcxdOPB6xQ3yNO6SrIb5VeVd8gJPtEGfm8aA9HuQZx6NWxJG0Lj68p9xcwomHa9wh jaahJzWkMZI0xgc4aIdB03jEtpikMHvtw431EcZbqNoV/p5ie+2SksbH63l25pEXxffUUDcn cl8kg42PcKeRUyCWMw83krs4Cw+PCaj+zK9ucqrUKDxWbaFpxJ94NM/yq8Yc+zTjCZ7vcU5A WlExLwl4PN6UUuJrHmv38BoXHmqX5AmO5SkqwY9P0IsiK8WvA6w8Vm+XZ+bREpdTCO7ShCw0 XAEp6TWPbfJhYxceBsKNh2HiM9buEF+yGXm4NaWk1ziebkV6zaPdi+7oLDgcuNJWjUOLTG1t eFaZmDyOlBrCzzz0o7rwMw5fk+bckLnhkufJZ2yRD19h5mGwlJJG4/D4R6SRLFK+wAg4JY3m kWJ77aSALDQcsv2hnHH4dhfn4C3pxEPF2tzmTOYlpZUvGVooWsBwdOPCQw951B9VCiyPg6Wo /srRkDNfoR9F9bMHwrykzPIV69YS5xovKbN8haO23XhcT7xHDwPVz8e6iXMtZ+GhIzWsyMwj L9nEjd/6YVwycvkKlz+cpzL7E49Nsmt32648nG+V+JpH860SXxKEBYMtsqFq/YmHzpT1GycE WXl4XDDm85mHe46cxpD3pDhz9TiUCvj9vSH/zGOr3OWfeaze2tJCrjzyk7vzuOAFGRO+pdTu vORbCwZOuJzaJfqVx5tSnJKWT74WHm45quZqHr6eyUk9/C6/ycJD9Sr5NQ/P+ZS6NI/VS26m KSceGmfO28hBLOxGjnx0wUJvmbN48pb1wuPR29s78/At+dHeicchU6O9Mw/fBlLtlXx6Ab/I R+0tPp147C5LezWPh2+3hjMP95QtmRFOPbPw0F2W7tE4PBGi7om28YNFIRecX5ZfZFYo3LoY RmqwcEdKOmSgFj7sozMGi3YYx7gWFO0ucqpR3vfmNfxIgwfjokhe3rNeaLjcIZELH07P+Dur neZCTzBWnmk2l/Gx/xT0e3qzkyiCKxoPTBFc8ACn1SGLUckfQ4ArHUu+mDvh8KRnSDPzeFY1 zZwzL7klQ4BKFXE0jq2uiKN5OKkqcSR1ZQhQs0oezWOXOJCVticezqpdHr4gQVJjRmx1D3kW HlrdPlAXHjpNSh6VejO+5xJ3eTQP1OsqTWJmF0dl6sRbUEoczcOEFkoczSP1sjyGj26O23c7 D3cphjwzj8fuMdRnHmaI0vKoTKN4D0rJo3kUiMyZ3jl2cMGxz3RMCQsfwNPvOJ9t2XmV+DTB OVWJr3l0kKfE1zhaz4o4ecqrCl2mIc7M1ytxJhwli2Jp+ByOccnaGuDLejJWZh5aZiW95tFW hZJe42ivgsXJfKbOexaSRTa/p9s2Dy38pW5nHC1mtTjJCA8NsxJH81C3peXcWnAYHeVq2jiH BfNu3F0QCnSguquz8HDgijgaR0c+Ig450UV4uNgZ4sw8ejmEb3TgmOgFR2sdFof7gvk47v8M eCOqO8MLj81ybsm0Vh4Fq8rQiu1u9IOvMHymr10WHm5VkIdebTzxKMBCDBV5M0b4od7UMhY9 kGfm4awr1Ydx0USoaOi6mrczDYNn+EIEToqy8GCfQsxg2Iwk+YQv7bEwvCuz4DAOmW9/yHnh owGLHpHGU/m4oB6+ssfS1DMO1j66dp8ER/Otql3jaAnrOL972nljhEfelOOrBMoJR8HIUj15 AZKxFFvko/aJRu/86MpVR6KtY1W50Ba7Ub1ycgclvynMH8W1Jw4fXHi0pB3WcsZRQgt5DMis ZeEDNE8ijuahXkuhxyY23lnh0SJIy6N57Edxqt564tHWIsvDb40m3qCWLKoWLYLEPk28w5Nt l2fmrZjXaZHiSqbFzy5PqMIjT0rLo3k823Z9zTxIWOJKItclNdyOvAcRvq6nxdc8nG1L3RJH HSy8ehVzepNUN1fzYPvC1do2/FYceFKjtXyL1bh3JqJdqNHYBcdD15AxCyfeXTV24dG2IovP e/TMBys8OvNhefiMfuVVDqkpMnqs+BYeBVmwPCbs8piRWTV6tG3M8nACoJVHp7XDr154tMJ1 JVJ/sjw0Bsb5a4Sv64k8Mw+2p9hzLGcaxVhoafzIrhrh7pTjGzrIi1555EhR9RxfmPiGsiw4 Nsz92Z957Cd3cWYeKpfT7Lq9/mSFRwtcXb/m4ayr6ncjs2mE4VFcP28FrjxU7jFNLzi0y5x0 ks9r+UK2Kjweu3njNczK43nXtkRlK4/O4x3nkQy7PDxiO48Ns8ijeRTWqOXRfBFbMi8j+F6b sstjR4bTGN9T725rJx5GSDm+Xyf5E482Hx2n6uYDZD7KscKjzUdXXFtBrDycd4f8M4/95d6f Mw9WuVr8MHKcRphMisUvppx46DB3N2nhwbGPDK4ZB8fxWnozzoNjhoZZSa95OPGS9Nx1Kw92 MMTuzzg4ChLpw5a94HB3akg/8+gVApF+5uFaSMnjR07UCDOaa3k0Dy1zd+EXHp3raXnMOH2N BXpVfWTNOFzm8i0L7szjkSvia/5Su7RYH3YNvrzHdj83aSYcnQmJ8BMONh7FwZtotHsxxuxE oyGrBB+uHQyPYrkLx9tqukKNitgCw8GaA81oPNO6TdwomEdKJtoJRy8POL4dggOLZxxOsyQM O+iMx5H2NcI0UloazaPM11oczaOMBywPJ7Vj3jnh4daFkkfz2EUWeYRPsiW1bKg5TpDMZ/a8 yzdeGk94T4rT+HOY3MJjJ7k/ZzMPty/4lpi489EIj5a37TIff8LlfrplRaaaq3nsRUlzNQ/P +IY5mHk4ZruPP+Nw1PI1N3Xn7ThhTRaNW9U7GkcusuocjUMXmW+A4PPwhUcpwnRnah7Os6O1 JOdIW5ssHLvUXI5rXnkQdiHNnXE4zVJz+danlcc7U33ozvy1cs0Wxnlygu/qcXM5l9jKY7uc aZVtTzxKRqPl1zy0zNluKe7ymBHIkhxUL9/wYO2JhycFx9MceU/ICA9dZL5lgFzKlYcusqrf B+HhYYGqX/PIR05l4wi9yBuKI/tu8nDjkR5PTgS48ngBVDZ7xuG0y/efxV2c5ISH6x8ljuah HyXiaByOXSWOG85O8tAw8z0D0Z94aJhFHI1DF5kvZassTt6qER6O3cOWLDwMnBrizDg6wWVx +A1G5mMQHgWba3E0D13kIY2m0QGulsaOxMQp4IG7+zwrj9c/fWDNPHKTY6HxzXjaihMcbSkP 6WccHhiMcTvxeF9qtHbmoUd1mOWVh8sfvpsi7HxIwsNtR5I/09p05VWOsJOHyh7zykPtKnn4 CpfOQ7PMFzf4eOLhvuOxnFh5uKnM92UUliduOQgPV7ecZpsqWPgE7fKQf+axfuPGScFWHu1d KPH9yGud4Jt78vTPPB68fKpZTzxUr2qu5rFhluZqHs66fBFN2uU3Tni17zifr/ElXL6eeOxV 1Y2jDxYeb03x9XDWnXjoVQ35aamRhIfhF0P+mYfz7pB/5uGZEN/Ml92JB+8BuRhbkhnGx+ly gq/vcWuDW2k46aq2KhyFTfFI5Ff7Fvw9zZYYFxxHTamOUTjIhs1TYlglLyj0YnSil+tWU8FD lhzSstJohTv6cKLxcPVtj3HB4fYFX91h44qrJdCym7Kv+BYcesicuT7s/SIXyya8KSUdo3CU 31z3jMbhSOVbOeu5erh1ofpG89hDls7RPLTEnLue7DTzcjFuwpFSnC7+jON5NrSt+5XHyx++ 5/xcP3SRVXM1j5JxOr62o3D9/FB1Phs8zx7NnXE4zfJ1E7aceLj+Gc2debgxNZo789AOczLG FBsvdwdnAxdAnN/cuROP1Wuo/hMOvSi+ZJgM9cqjjalhW2ccxV0M2zrhML05dw6HjjEvVx9n C9e2fClVcSce+sjSORqHBll1jubh2pazNwYWnyvyg4dzbKJVnjvhWLV2c2f8PdVyTMbKI9Uq 4eV65fzOttSQRuE4XkpJo3k0z451/4zDYcuX1ZRdepOFx6sfDmurJx6eFyjxNY+HbZfHTNcs v6fbfdKaebjpeGwKrjxUroij7kJ2eHEr4igeZjfX4mgeD1zeOyR5StW3J8NUUkOehcfHBYe6 Fh6PXJFHbkTOHh7vKXk0j7aUlTgahw6yEsdl4fHi51i8LTxU76i/qJuLM7x1j+vnlfLKw0lX 1S+3EWd0695YKy04HrwijubxnCviyI3EGd26p8XRONyXGr0/83hp28XJ6k7iDDemhjgzDveT uzQTHqFhVtLIlcQZXbunpdE4PAxS1csNwxllNx/bFgsODwu6YeMotyg8VG2vfsZhpKOq3lfh r7YcFxyubPucywGVI9l6RtmkxpbajCc1bJeVRK8+qkt0c0LnfKP6GYcHQd1ba6eVA4c2mW98 pcoWHM643VHmW9bHGMf7UXxPEm9BzPhQbNxYawrnc/DQcKGRWvnuDlMbLHfWZtmLWm71GUua hYdbjZy5mXcV2qH44GUvat0r4ptfTDjx0BzznSZur1/ulM0wTKovzxccmmNVvVwRm1EmKWkt hycJjoYsp+n1jZYrUHNGM62qXONwpuVs9LnhcgNqhnfu6eo1D51kvlug8pCy6grUDEOkxoM2 48gWBz7BTCcc7lzwBQB+l0YuQc0wQkpJo3E4zXKC8JBOPLpznMXhlIGxnf8LD1Ur4mgcTrN8 6WJJJx65yJz0nc8TWkDt8KEKjKjhCzL4fGbmK1zbDvFnHp7tDfFnHq6AOGGz3+WXW1wzDpjq T/6MQw9Zia95aI+V+JqHCyDOas776y0sb5jkCt8HOszCguOBe4i/8NgkH8/yxBcDPWROah53 eeQS2qKTmyPxNY42kvl6JJpuVhzd/8PScAox5p0RHlrkIYymYch54MaccJS3XoQp6n7bgnJI DWFmGh7r8QVZqZ54OGw5yz1vSfFG/jhELnhLSsTRONbrMRcuPNyR4rTUvN3IR+0js0qxcDOZ b9aI7sTjYTvE1zgetcf8tvB41JKLwLuxfDSfhIfbFpw1vY3ymcfD9hB/xuG6dozyicebUpwn m7czOeTICA9tcp+xFh4OW/6+Ew0d5DHKZx6dACnh5WbkgrekxqM28/AMqPsuCw9dqVF/Ujcv F5jbfEygCw9NMmdf5i3BtuPecfgOH6ds9mGl8WwrwigcD1tOpsyyRLnYuaCcUiLLRMM1LV8G Ze2Kwxe8WublXZaRfajArSgli6LhJnIfgBMNjXFLc5wbLrc6F5jUXAujeBwe1QfUjKN0fiJO UNc6l4BdqC7OzMMB23Lh7vVHLzxMTdMSfKcTj1Y+fJdDDSccGuOWfrY0Xi52LgEb4z6gZh46 yCKOxuHap6WrZXG8utm5RLhbMcSZebRbMcSZcbhb0RLK7uLIxc5FNqLWCHgljubRHYq6frmo uURsjqV+zaO0Uo6vReCAj4WH2h1Pwx6+2nmoXVIfn2ovOPaj+uwz8Qk6yC1T8y6O3NNc4F6U EkfjeGkr4mgeD93Q5ItHsHTn4dBtKb7ziYdDV8TXOIyfGXPnzEOzzCmhibbq2uWS4Ezbsqvn E4+2GYfwE56xF9XN5szDgAvOTrpLL9cuF5hTyrVc9fnEw8lWpNc43LUYdmTmkWbHg0O23AsO h227iCCdeLT6ackebcPlWuSS0ahV0mgcj9ruK0x8gRNuy/e4iyO3IpcCz/WUPJqHuh1+1MzD rcYjxWJscQjDN8Jv7XV5Fh77UodRXnh4PnCkNIwtGk94qN3Q9LHicPnTn+WFhzmljgyIsQVn Dh6+v6fE0Ti0yWSccjzhKG+9awkQWZqibkUuFQ3cIc2Mo+VPywfoGy53HJcK37Ydj87Mw1M9 JY7mkWpbPsBdHLniuFRsk4+RtfDQVVbiCF8NPJFvKfVYnqzuOK4GLoC64Vl46CsPeWYebkm1 rHGh8XKvcDXKnZrDwpQ8mkexNKP6JJf5VoPHbe+dCb8yyjMNX/DibNRupdE1iq5lbtxFGYcn Fb66p0RRNF4B7VPtTENrPIZUUnfnVgsHrMiicexDNadloWGIRUtXyt0Y1VW4Fb61N4SZcXg6 MGaGmYdLWyWOXG1b0QV7WhyFw0zmMpxmHg7XYemjuqq2OnSkR4+kMfaEv+cesxex8jBmdcyD Qd0NW+Ete+5ITcy83MVacTqpYbyDuvu04r2oYV29umu0wvCo0T1eXQVa+1ZUa0De+G3/QILQ U/Bbs0vsLh4Fb6OAb3yiJfrby/GJ8fefP/3bn17+8wNW1WqKwZCm9y7MmS8Kz8zylWvko5Wx z297l3ytbkmkeq+rOgrutMVX8uKUevkKFw5+2+IIjqqyccg4LVYe4M4Kbq9wWmONWKQqO4cY D1Vwf41bL3i4wvlNuTzweI0HK3i6xs0Inqmyd4hwfj9a8HKNey94vcJ5k3T4B+FSq7yRKfil VuM2Tv9quFRq2KTqS5XyRUeDvtRoaNfTdvxSo77d9tvxS436dldxxy81yre8DSsfLjXKl9QJ fqlRvvJv2Ox4qVGy3U7wS43y3YyCX6rUtlCbjl8qla83FPxSq6ZZsI5fapVmTSf4lVZDbRFU Hb/SauDbQsbDHq+0GvhODcGvtBr4JqRhY9KVVgPf+yT4lVYD36Il+JVWA/8YNiZdaTXwRCj4 lVYDO/7DEKQrrQZ2zgW/1Cr7z4JfapXs4xjZ6VKp5H6OJyZd6pS8Q6k8X+p0vyej45c63a+x 6PilTkMLIOn4pU7JM4yCX+rUtyCGjl/qlC8yEvxSp3zHgeCXOuUbHYaVyZdK5QspBL/Uqm0b ogdeLrXKF9KNZ6ZcapUvjBP8Uqt8d9CwMuVSq3wBk+BXWuVS8cLKlVapNIyNr1qutOr5OgHB r7TqOb/+sDLlSque898LfqVVn7cqXli90qrPLZ1wx6+0SrgTL6xeadWnbeQorvVKqUSLTuul Tsk+DvhSo3ErstyulxqN7Q6Bjl9qNLYN0I5fajS0LYaOX2qU7OPwwqwxlyoNbYdy8Jc69W1j avCXSiUTOaJQib9Uq9tqUvylYslIGsVf6tZtbgROEn+pXLuVovhL7ZKddIq/VK/d7Ajes8Zc 6ndad5u+Jfh1Ft7ppXAubZpLel1S8jZK+MO+1yV/jqqIt7Uea+/P7S8+ZiTO8UsWtG6Icd8s ti//TP/9x6d/+OHT3/2Tf7HUkT98+bR3wmf7Qv3Ed4f88Nunf/97elL962dvll+Co58mHAUm 9l9+ol8S//Iz/RKZNb0k9V9+7b+U/sv4eGes7R93/ZdeMmqWj//Yf6mvn12dBMu95Etnfun/ 5F//zw//8ukff9A6/WCKcJykX6vil1e3t9MfXRuOtoXeRb3PBON+CnuDLTfcHR9zdv9nv9e5 /7A/vVr+8WX/q+w/4v7j505+tu370l5cj6/N85+/vqaiPvzjq1XfY/bSLjoprEFhfEPaP7M3 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 bWFnZUIgL0ltYWdlQyAvVGV4dCBdCi9YT2JqZWN0IDw8CiAgL0ltMSAxMSAwIFIKICAvSW0y IDEyIDAgUgogIC9JbTMgMTcgMCBSCiAgL0ltNCAxOCAwIFIKICAvSW01IDE5IDAgUgogIC9J bTYgMjAgMCBSCiAgL0ltNyAyMSAwIFIKICAvSW04IDIyIDAgUgogIC9JbTkgMjMgMCBSCiAg L0ltMTAgMjQgMCBSCiAgL0ltMTEgMjUgMCBSCiAgL0ltMTIgMjYgMCBSCiAgL0ltMTMgMjcg MCBSCiAgL0ltMTQgMjggMCBSCiAgL0ltMTUgMjkgMCBSCiAgL0ltMTYgMzAgMCBSCiAgL0lt MTcgMzEgMCBSCiAgL0ltMTggMzIgMCBSCiAgL0ltMTkgMzMgMCBSCiAgL0ltMjAgMzQgMCBS CiAgL0ltMjEgMzUgMCBSCiAgL0ltMjIgMzYgMCBSCiAgL0ltMjMgMzcgMCBSCiAgL0ltMjQg MzggMCBSCiAgL0ltMjUgMzkgMCBSCiAgL0ltMjYgNDAgMCBSCiAgL0ltMjcgNDEgMCBSCiAg L0ltMjggNDIgMCBSCiAgL0ltMjkgNDMgMCBSCiAgL0ltMzAgNDQgMCBSCiAgL0ltMzEgNDUg MCBSCiAgL0ltMzIgNDYgMCBSCiAgL0ltMzMgNDcgMCBSCiAgL0ltMzQgNDggMCBSCiAgL0lt MzUgNDkgMCBSCiAgL0ltMzYgNTAgMCBSCiAgL0ltMzcgNTEgMCBSCiAgL0ltMzggNTIgMCBS CiAgL0ltMzkgNTMgMCBSCiAgL0ltNDAgNTQgMCBSCiAgL0ltNDEgNTUgMCBSCiAgL0ltNDIg NTYgMCBSCiAgL0ltNDMgNTcgMCBSCiAgL0ltNDQgNTggMCBSCiAgL0ltNDUgNTkgMCBSCiAg L0ltNDYgNjAgMCBSCiAgL0ltNDcgNjEgMCBSCiAgL0ltNDggNjIgMCBSCiAgL0ltNDkgNjMg MCBSCiAgL0ltNTAgNjQgMCBSCiAgL0ltNTEgNjUgMCBSCiAgL0ltNTIgNjYgMCBSCiAgL0lt NTMgNjcgMCBSCiAgL0ltNTQgNjggMCBSCiAgL0ltNTUgNjkgMCBSCiAgL0ltNTYgNzAgMCBS CiAgL0ltNTcgNzEgMCBSCiAgL0ltNTggNzIgMCBSCiAgL0ltNTkgNzMgMCBSCiAgL0ltNjAg NzQgMCBSCiAgL0ltNjEgNzUgMCBSCiAgL0ltNjIgNzYgMCBSCiAgL0ltNjMgNzcgMCBSCiAg L0ltNjQgNzggMCBSCiAgL0ltNjUgNzkgMCBSCiAgL0ltNjYgODAgMCBSCiAgL0ltNjcgODEg MCBSCiAgL0ltNjggODIgMCBSCiAgL0ltNjkgODMgMCBSCiAgL0ltNzAgODQgMCBSCiAgL0lt NzEgODUgMCBSCiAgL0ltNzIgODYgMCBSCiAgL0ltNzMgODcgMCBSCiAgL0ltNzQgODggMCBS CiAgL0ltNzUgODkgMCBSCiAgL0ltNzYgOTAgMCBSCiAgL0ltNzcgOTEgMCBSCiAgL0ltNzgg OTIgMCBSCiAgL0ltNzkgOTMgMCBSCiAgL0ltODAgOTQgMCBSCiAgL0ltODEgOTUgMCBSCiAg L0ltODIgOTYgMCBSCiAgL0ltODMgOTcgMCBSCiAgL0ltODQgOTggMCBSCiAgL0ltODUgOTkg MCBSCiAgL0ltODYgMTAwIDAgUgogIC9JbTg3IDEwMSAwIFIKICAvSW04OCAxMDIgMCBSCiAg L0ltODkgMTAzIDAgUgogIC9JbTkwIDEwNCAwIFIKICAvSW05MSAxMDUgMCBSCiAgL0ltOTIg MTA2IDAgUgogIC9JbTkzIDEwNyAwIFIKICAvSW05NCAxMDggMCBSCiAgL0ltOTUgMTA5IDAg UgogIC9JbTk2IDExMCAwIFIKICAvSW05NyAxMTEgMCBSCiAgL0ltOTggMTEyIDAgUgogIC9J bTk5IDExMyAwIFIKICAvSW0xMDAgMTE0IDAgUgogIC9JbTEwMSAxMTUgMCBSCiAgL0ltMTAy IDExNiAwIFIKICAvSW0xMDMgMTE3IDAgUgogIC9JbTEwNCAxMTggMCBSCiAgL0ltMTA1IDEx OSAwIFIKICAvSW0xMDYgMTIwIDAgUgogIC9JbTEwNyAxMjEgMCBSCiAgL0ltMTA4IDEyMiAw IFIKICAvSW0xMDkgMTIzIDAgUgogIC9JbTExMCAxMjQgMCBSCiAgL0ltMTExIDEyNSAwIFIK ICAvSW0xMTIgMTI2IDAgUgogIC9JbTExMyAxMjcgMCBSCiAgL0ltMTE0IDEyOCAwIFIKICAv SW0xMTUgMTI5IDAgUgogIC9JbTExNiAxMzAgMCBSCiAgL0ltMTE3IDEzMSAwIFIKICAvSW0x MTggMTMyIDAgUgogIC9JbTExOSAxMzMgMCBSCiAgL0ltMTIwIDEzNCAwIFIKICAvSW0xMjEg MTM1IDAgUgogIC9JbTEyMiAxMzYgMCBSCiAgL0ltMTIzIDEzNyAwIFIKICAvSW0xMjQgMTM4 IDAgUgogIC9JbTEyNSAxMzkgMCBSCiAgL0ltMTI2IDE0MCAwIFIKICAvSW0xMjcgMTQxIDAg UgogIC9JbTEyOCAxNDIgMCBSCiAgL0ltMTI5IDE0MyAwIFIKICAvSW0xMzAgMTQ0IDAgUgog IC9JbTEzMSAxNDUgMCBSCiAgL0ltMTMyIDE0NiAwIFIKICAvSW0xMzMgMTQ3IDAgUgogIC9J bTEzNCAxNDggMCBSCiAgL0ltMTM1IDE0OSAwIFIKICAvSW0xMzYgMTUwIDAgUgogIC9JbTEz NyAxNTEgMCBSCiAgL0ltMTM4IDE1MiAwIFIKICAvSW0xMzkgMTUzIDAgUgogIC9JbTE0MCAx NTQgMCBSCiAgL0ltMTQxIDE1NSAwIFIKICAvSW0xNDIgMTU2IDAgUgogIC9JbTE0MyAxNTcg MCBSCiAgL0ltMTQ0IDE1OCAwIFIKICAvSW0xNDUgMTU5IDAgUgogIC9JbTE0NiAxNjAgMCBS CiAgL0ltMTQ3IDE2MSAwIFIKICAvSW0xNDggMTYyIDAgUgogIC9JbTE0OSAxNjMgMCBSCiAg L0ltMTUwIDE2NCAwIFIKICAvSW0xNTEgMTY1IDAgUgogIC9JbTE1MiAxNjYgMCBSCiAgL0lt MTUzIDE2NyAwIFIKICAvSW0xNTQgMTY4IDAgUgogIC9JbTE1NSAxNjkgMCBSCiAgL0ltMTU2 IDE3MCAwIFIKICAvSW0xNTcgMTcxIDAgUgogIC9JbTE1OCAxNzIgMCBSCiAgL0ltMTU5IDE3 MyAwIFIKICAvSW0xNjAgMTc0IDAgUgogIC9JbTE2MSAxNzUgMCBSCiAgL0ltMTYyIDE3NiAw IFIKICAvSW0xNjMgMTc3IDAgUgogIC9JbTE2NCAxNzggMCBSCiAgL0ltMTY1IDE3OSAwIFIK ICAvSW0xNjYgMTgwIDAgUgogIC9JbTE2NyAxODEgMCBSCiAgL0ltMTY4IDE4MiAwIFIKICAv SW0xNjkgMTgzIDAgUgogIC9JbTE3MCAxODQgMCBSCiAgL0ltMTcxIDE4NSAwIFIKICAvSW0x NzIgMTg2IDAgUgogIC9JbTE3MyAxODcgMCBSCiAgL0ltMTc0IDE4OCAwIFIKICAvSW0xNzUg MTg5IDAgUgogIC9JbTE3NiAxOTAgMCBSCiAgL0ltMTc3IDE5MSAwIFIKICAvSW0xNzggMTky IDAgUgogIC9JbTE3OSAxOTMgMCBSCiAgL0ltMTgwIDE5NCAwIFIKICAvSW0xODEgMTk1IDAg UgogIC9JbTE4MiAxOTYgMCBSCiAgL0ltMTgzIDE5NyAwIFIKICAvSW0xODQgMTk4IDAgUgog IC9JbTE4NSAxOTkgMCBSCiAgL0ltMTg2IDIwMCAwIFIKICAvSW0xODcgMjAxIDAgUgogIC9J bTE4OCAyMDIgMCBSCiAgL0ltMTg5IDIwMyAwIFIKICAvSW0xOTAgMjA0IDAgUgogIC9JbTE5 MSAyMDUgMCBSCiAgL0ltMTkyIDIwNiAwIFIKICAvSW0xOTMgMjA3IDAgUgogIC9JbTE5NCAy MDggMCBSCiAgL0ltMTk1IDIwOSAwIFIKICAvSW0xOTYgMjEwIDAgUgogIC9JbTE5NyAyMTEg MCBSCiAgL0ltMTk4IDIxMiAwIFIKICAvSW0xOTkgMjEzIDAgUgogIC9JbTIwMCAyMTQgMCBS CiAgL0ltMjAxIDIxNSAwIFIKICAvSW0yMDIgMjE2IDAgUgogIC9JbTIwMyAyMTcgMCBSCiAg L0ltMjA0IDIxOCAwIFIKICAvSW0yMDUgMjE5IDAgUgogIC9JbTIwNiAyMjAgMCBSCiAgL0lt MjA3IDIyMSAwIFIKICAvSW0yMDggMjIyIDAgUgogIC9JbTIwOSAyMjMgMCBSCiAgL0ltMjEw IDIyNCAwIFIKICAvSW0yMTEgMjI1IDAgUgogIC9JbTIxMiAyMjYgMCBSCiAgL0ltMjEzIDIy NyAwIFIKICAvSW0yMTQgMjI4IDAgUgogIC9JbTIxNSAyMjkgMCBSCiAgL0ltMjE2IDIzMCAw IFIKICAvSW0yMTcgMjMxIDAgUgogIC9JbTIxOCAyMzIgMCBSCiAgL0ltMjE5IDIzMyAwIFIK ICAvSW0yMjAgMjM0IDAgUgogIC9JbTIyMSAyMzUgMCBSCiAgL0ltMjIyIDIzNiAwIFIKICAv SW0yMjMgMjM3IDAgUgogIC9JbTIyNCAyMzggMCBSCiAgL0ltMjI1IDIzOSAwIFIKICAvSW0y MjYgMjQwIDAgUgogIC9JbTIyNyAyNDEgMCBSCiAgL0ltMjI4IDI0MiAwIFIKICAvSW0yMjkg MjQzIDAgUgogIC9JbTIzMCAyNDQgMCBSCiAgL0ltMjMxIDI0NSAwIFIKICAvSW0yMzIgMjQ2 IDAgUgogIC9JbTIzMyAyNDcgMCBSCiAgL0ltMjM0IDI0OCAwIFIKICAvSW0yMzUgMjQ5IDAg UgogIC9JbTIzNiAyNTAgMCBSCiAgL0ltMjM3IDI1MSAwIFIKICAvSW0yMzggMjUyIDAgUgog IC9JbTIzOSAyNTMgMCBSCiAgL0ltMjQwIDI1NCAwIFIKICAvSW0yNDEgMjU1IDAgUgogIC9J bTI0MiAyNTYgMCBSCiAgL0ltMjQzIDI1NyAwIFIKICAvSW0yNDQgMjU4IDAgUgogIC9JbTI0 NSAyNTkgMCBSCiAgL0ltMjQ2IDI2MCAwIFIKICAvSW0yNDcgMjYxIDAgUgogIC9JbTI0OCAy NjIgMCBSCiAgL0ltMjQ5IDI2MyAwIFIKICAvSW0yNTAgMjY0IDAgUgogIC9JbTI1MSAyNjUg MCBSCiAgL0ltMjUyIDI2NiAwIFIKICAvSW0yNTMgMjY3IDAgUgogIC9JbTI1NCAyNjggMCBS CiAgL0ltMjU1IDI2OSAwIFIKICAvSW0yNTYgMjcwIDAgUgogIC9JbTI1NyAyNzEgMCBSCiAg L0ltMjU4IDI3MiAwIFIKICAvSW0yNTkgMjczIDAgUgogIC9JbTI2MCAyNzQgMCBSCiAgL0lt MjYxIDI3NSAwIFIKICAvSW0yNjIgMjc2IDAgUgogIC9JbTI2MyAyNzcgMCBSCiAgL0ltMjY0 IDI3OCAwIFIKICAvSW0yNjUgMjc5IDAgUgogIC9JbTI2NiAyODAgMCBSCiAgL0ltMjY3IDI4 MSAwIFIKICAvSW0yNjggMjgyIDAgUgogIC9JbTI2OSAyODMgMCBSCiAgL0ltMjcwIDI4NCAw IFIKICAvSW0yNzEgMjg1IDAgUgogIC9JbTI3MiAyODYgMCBSCiAgL0ltMjczIDI4NyAwIFIK ICAvSW0yNzQgMjg4IDAgUgogIC9JbTI3NSAyODkgMCBSCiAgL0ltMjc2IDI5MCAwIFIKICAv SW0yNzcgMjkxIDAgUgogIC9JbTI3OCAyOTIgMCBSCiAgL0ltMjc5IDI5MyAwIFIKICAvSW0y ODAgMjk0IDAgUgogIC9JbTI4MSAyOTUgMCBSCiAgL0ltMjgyIDI5NiAwIFIKICAvSW0yODMg Mjk3IDAgUgogIC9JbTI4NCAyOTggMCBSCiAgL0ltMjg1IDI5OSAwIFIKICAvSW0yODYgMzAw IDAgUgogIC9JbTI4NyAzMDEgMCBSCiAgL0ltMjg4IDMwMiAwIFIKICAvSW0yODkgMzAzIDAg UgogIC9JbTI5MCAzMDQgMCBSCiAgL0ltMjkxIDMwNSAwIFIKICAvSW0yOTIgMzA2IDAgUgog IC9JbTI5MyAzMDcgMCBSCiAgL0ltMjk0IDMwOCAwIFIKICAvSW0yOTUgMzA5IDAgUgogIC9J bTI5NiAzMTAgMCBSCiAgL0ltMjk3IDMxMSAwIFIKICAvSW0yOTggMzEyIDAgUgogIC9JbTI5 OSAzMTMgMCBSCiAgL0ltMzAwIDMxNCAwIFIKICAvSW0zMDEgMzE1IDAgUgogIC9JbTMwMiAz MTYgMCBSCiAgL0ltMzAzIDMxNyAwIFIKICAvSW0zMDQgMzE4IDAgUgogIC9JbTMwNSAzMTkg MCBSCiAgL0ltMzA2IDMyMCAwIFIKICAvSW0zMDcgMzIxIDAgUgogIC9JbTMwOCAzMjIgMCBS CiAgL0ltMzA5IDMyMyAwIFIKICAvSW0zMTAgMzI0IDAgUgogIC9JbTMxMSAzMjUgMCBSCiAg L0ltMzEyIDMyNiAwIFIKICAvSW0zMTMgMzI3IDAgUgogIC9JbTMxNCAzMjggMCBSCiAgL0lt MzE1IDMyOSAwIFIKICAvSW0zMTYgMzMwIDAgUgogIC9JbTMxNyAzMzEgMCBSCiAgL0ltMzE4 IDMzMiAwIFIKICAvSW0zMTkgMzMzIDAgUgogIC9JbTMyMCAzMzQgMCBSCiAgL0ltMzIxIDMz NSAwIFIKICAvSW0zMjIgMzM2IDAgUgogIC9JbTMyMyAzMzcgMCBSCiAgL0ltMzI0IDMzOCAw IFIKICAvSW0zMjUgMzM5IDAgUgogIC9JbTMyNiAzNDAgMCBSCiAgL0ltMzI3IDM0MSAwIFIK ICAvSW0zMjggMzQyIDAgUgogIC9JbTMyOSAzNDMgMCBSCiAgL0ltMzMwIDM0NCAwIFIKICAv SW0zMzEgMzQ1IDAgUgogIC9JbTMzMiAzNDYgMCBSCiAgL0ltMzMzIDM0NyAwIFIKICAvSW0z MzQgMzQ4IDAgUgogIC9JbTMzNSAzNDkgMCBSCiAgL0ltMzM2IDM1MCAwIFIKICAvSW0zMzcg MzUxIDAgUgogIC9JbTMzOCAzNTIgMCBSCiAgL0ltMzM5IDM1MyAwIFIKICAvSW0zNDAgMzU0 IDAgUgogIC9JbTM0MSAzNTUgMCBSCiAgL0ltMzQyIDM1NiAwIFIKICAvSW0zNDMgMzU3IDAg UgogIC9JbTM0NCAzNTggMCBSCiAgL0ltMzQ1IDM1OSAwIFIKICAvSW0zNDYgMzYwIDAgUgog IC9JbTM0NyAzNjEgMCBSCiAgL0ltMzQ4IDM2MiAwIFIKICAvSW0zNDkgMzYzIDAgUgogIC9J bTM1MCAzNjQgMCBSCiAgL0ltMzUxIDM2NSAwIFIKICAvSW0zNTIgMzY2IDAgUgogIC9JbTM1 MyAzNjcgMCBSCiAgL0ltMzU0IDM2OCAwIFIKICAvSW0zNTUgMzY5IDAgUgogIC9JbTM1NiAz NzAgMCBSCiAgL0ltMzU3IDM3MSAwIFIKICAvSW0zNTggMzcyIDAgUgogIC9JbTM1OSAzNzMg MCBSCiAgL0ltMzYwIDM3NCAwIFIKICAvSW0zNjEgMzc1IDAgUgogIC9JbTM2MiAzNzYgMCBS CiAgL0ltMzYzIDM3NyAwIFIKICAvSW0zNjQgMzc4IDAgUgogIC9JbTM2NSAzNzkgMCBSCiAg L0ltMzY2IDM4MCAwIFIKICAvSW0zNjcgMzgxIDAgUgogIC9JbTM2OCAzODIgMCBSCiAgL0lt MzY5IDM4MyAwIFIKICAvSW0zNzAgMzg0IDAgUgogIC9JbTM3MSAzODUgMCBSCiAgL0ltMzcy IDM4NiAwIFIKICAvSW0zNzMgMzg3IDAgUgogIC9JbTM3NCAzODggMCBSCiAgL0ltMzc1IDM4 OSAwIFIKICAvSW0zNzYgMzkwIDAgUgogIC9JbTM3NyAzOTEgMCBSCiAgL0ltMzc4IDM5MiAw IFIKICAvSW0zNzkgMzkzIDAgUgogIC9JbTM4MCAzOTQgMCBSCiAgL0ltMzgxIDM5NSAwIFIK ICAvSW0zODIgMzk2IDAgUgogIC9JbTM4MyAzOTcgMCBSCiAgL0ltMzg0IDM5OCAwIFIKICAv SW0zODUgMzk5IDAgUgogIC9JbTM4NiA0MDAgMCBSCiAgL0ltMzg3IDQwMSAwIFIKICAvSW0z ODggNDAyIDAgUgogIC9JbTM4OSA0MDMgMCBSCiAgL0ltMzkwIDQwNCAwIFIKICAvSW0zOTEg NDA1IDAgUgogIC9JbTM5MiA0MDYgMCBSCiAgL0ltMzkzIDQwNyAwIFIKICAvSW0zOTQgNDA4 IDAgUgogIC9JbTM5NSA0MDkgMCBSCiAgL0ltMzk2IDQxMCAwIFIKICAvSW0zOTcgNDExIDAg UgogIC9JbTM5OCA0MTIgMCBSCiAgL0ltMzk5IDQxMyAwIFIKICAvSW00MDAgNDE0IDAgUgog IC9JbTQwMSA0MTUgMCBSCiAgL0ltNDAyIDQxNiAwIFIKICAvSW00MDMgNDE3IDAgUgogIC9J bTQwNCA0MTggMCBSCiAgL0ltNDA1IDQxOSAwIFIKICAvSW00MDYgNDIwIDAgUgogIC9JbTQw NyA0MjEgMCBSCiAgL0ltNDA4IDQyMiAwIFIKICAvSW00MDkgNDIzIDAgUgogIC9JbTQxMCA0 MjQgMCBSCiAgL0ltNDExIDQyNSAwIFIKICAvSW00MTIgNDI2IDAgUgogIC9JbTQxMyA0Mjcg MCBSCiAgL0ltNDE0IDQyOCAwIFIKICAvSW00MTUgNDI5IDAgUgogIC9JbTQxNiA0MzAgMCBS CiAgL0ltNDE3IDQzMSAwIFIKICAvSW00MTggNDMyIDAgUgogIC9JbTQxOSA0MzMgMCBSCiAg L0ltNDIwIDQzNCAwIFIKICAvSW00MjEgNDM1IDAgUgogIC9JbTQyMiA0MzYgMCBSCiAgL0lt NDIzIDQzNyAwIFIKICAvSW00MjQgNDM4IDAgUgogIC9JbTQyNSA0MzkgMCBSCiAgL0ltNDI2 IDQ0MCAwIFIKICAvSW00MjcgNDQxIDAgUgogIC9JbTQyOCA0NDIgMCBSCiAgL0ltNDI5IDQ0 MyAwIFIKICAvSW00MzAgNDQ0IDAgUgogIC9JbTQzMSA0NDUgMCBSCiAgL0ltNDMyIDQ0NiAw IFIKICAvSW00MzMgNDQ3IDAgUgogIC9JbTQzNCA0NDggMCBSCiAgL0ltNDM1IDQ0OSAwIFIK ICAvSW00MzYgNDUwIDAgUgogIC9JbTQzNyA0NTEgMCBSCiAgL0ltNDM4IDQ1MiAwIFIKICAv SW00MzkgNDUzIDAgUgogIC9JbTQ0MCA0NTQgMCBSCiAgL0ltNDQxIDQ1NSAwIFIKICAvSW00 NDIgNDU2IDAgUgogIC9JbTQ0MyA0NTcgMCBSCiAgL0ltNDQ0IDQ1OCAwIFIKICAvSW00NDUg NDU5IDAgUgogIC9JbTQ0NiA0NjAgMCBSCiAgL0ltNDQ3IDQ2MSAwIFIKICAvSW00NDggNDYy IDAgUgogIC9JbTQ0OSA0NjMgMCBSCiAgL0ltNDUwIDQ2NCAwIFIKICAvSW00NTEgNDY1IDAg UgogIC9JbTQ1MiA0NjYgMCBSCiAgL0ltNDUzIDQ2NyAwIFIKICAvSW00NTQgNDY4IDAgUgog IC9JbTQ1NSA0NjkgMCBSCiAgL0ltNDU2IDQ3MCAwIFIKICAvSW00NTcgNDcxIDAgUgogIC9J bTQ1OCA0NzIgMCBSCiAgL0ltNDU5IDQ3MyAwIFIKICAvSW00NjAgNDc0IDAgUgogIC9JbTQ2 MSA0NzUgMCBSCiAgL0ltNDYyIDQ3NiAwIFIKICAvSW00NjMgNDc3IDAgUgogIC9JbTQ2NCA0 NzggMCBSCiAgL0ltNDY1IDQ3OSAwIFIKICAvSW00NjYgNDgwIDAgUgogIC9JbTQ2NyA0ODEg MCBSCiAgL0ltNDY4IDQ4MiAwIFIKICAvSW00NjkgNDgzIDAgUgogIC9JbTQ3MCA0ODQgMCBS CiAgL0ltNDcxIDQ4NSAwIFIKICAvSW00NzIgNDg2IDAgUgogIC9JbTQ3MyA0ODcgMCBSCiAg L0ltNDc0IDQ4OCAwIFIKICAvSW00NzUgNDg5IDAgUgogIC9JbTQ3NiA0OTAgMCBSCiAgL0lt NDc3IDQ5MSAwIFIKICAvSW00NzggNDkyIDAgUgogIC9JbTQ3OSA0OTMgMCBSCiAgL0ltNDgw IDQ5NCAwIFIKICAvSW00ODEgNDk1IDAgUgogIC9JbTQ4MiA0OTYgMCBSCiAgL0ltNDgzIDQ5 NyAwIFIKICAvSW00ODQgNDk4IDAgUgogIC9JbTQ4NSA0OTkgMCBSCiAgL0ltNDg2IDUwMCAw IFIKICAvSW00ODcgNTAxIDAgUgogIC9JbTQ4OCA1MDIgMCBSCiAgL0ltNDg5IDUwMyAwIFIK ICAvSW00OTAgNTA0IDAgUgogIC9JbTQ5MSA1MDUgMCBSCiAgL0ltNDkyIDUwNiAwIFIKICAv SW00OTMgNTA3IDAgUgogIC9JbTQ5NCA1MDggMCBSCiAgL0ltNDk1IDUwOSAwIFIKICAvSW00 OTYgNTEwIDAgUgogIC9JbTQ5NyA1MTEgMCBSCiAgL0ltNDk4IDUxMiAwIFIKICAvSW00OTkg NTEzIDAgUgogIC9JbTUwMCA1MTQgMCBSCiAgL0ltNTAxIDUxNSAwIFIKICAvSW01MDIgNTE2 IDAgUgogIC9JbTUwMyA1MTcgMCBSCiAgL0ltNTA0IDUxOCAwIFIKICAvSW01MDUgNTE5IDAg UgogIC9JbTUwNiA1MjAgMCBSCiAgL0ltNTA3IDUyMSAwIFIKICAvSW01MDggNTIyIDAgUgog IC9JbTUwOSA1MjMgMCBSCiAgL0ltNTEwIDUyNCAwIFIKICAvSW01MTEgNTI1IDAgUgogIC9J bTUxMiA1MjYgMCBSCiAgL0ltNTEzIDUyNyAwIFIKICAvSW01MTQgNTI4IDAgUgogIC9JbTUx NSA1MjkgMCBSCiAgL0ltNTE2IDUzMCAwIFIKICAvSW01MTcgNTMxIDAgUgogIC9JbTUxOCA1 MzIgMCBSCiAgL0ltNTE5IDUzMyAwIFIKICAvSW01MjAgNTM0IDAgUgogIC9JbTUyMSA1MzUg MCBSCiAgL0ltNTIyIDUzNiAwIFIKICAvSW01MjMgNTM3IDAgUgogIC9JbTUyNCA1MzggMCBS CiAgL0ltNTI1IDUzOSAwIFIKICAvSW01MjYgNTQwIDAgUgogIC9JbTUyNyA1NDEgMCBSCiAg L0ltNTI4IDU0MiAwIFIKICAvSW01MjkgNTQzIDAgUgogIC9JbTUzMCA1NDQgMCBSCiAgL0lt NTMxIDU0NSAwIFIKICAvSW01MzIgNTQ2IDAgUgogIC9JbTUzMyA1NDcgMCBSCiAgL0ltNTM0 IDU0OCAwIFIKICAvSW01MzUgNTQ5IDAgUgogIC9JbTUzNiA1NTAgMCBSCiAgL0ltNTM3IDU1 MSAwIFIKICAvSW01MzggNTUyIDAgUgogIC9JbTUzOSA1NTMgMCBSCiAgL0ltNTQwIDU1NCAw IFIKICAvSW01NDEgNTU1IDAgUgogIC9JbTU0MiA1NTYgMCBSCiAgL0ltNTQzIDU1NyAwIFIK ICAvSW01NDQgNTU4IDAgUgogIC9JbTU0NSA1NTkgMCBSCiAgL0ltNTQ2IDU2MCAwIFIKICAv SW01NDcgNTYxIDAgUgogIC9JbTU0OCA1NjIgMCBSCiAgL0ltNTQ5IDU2MyAwIFIKICAvSW01 NTAgNTY0IDAgUgogIC9JbTU1MSA1NjUgMCBSCiAgL0ltNTUyIDU2NiAwIFIKICAvSW01NTMg NTY3IDAgUgogIC9JbTU1NCA1NjggMCBSCiAgL0ltNTU1IDU2OSAwIFIKICAvSW01NTYgNTcw IDAgUgogIC9JbTU1NyA1NzEgMCBSCiAgL0ltNTU4IDU3MiAwIFIKICAvSW01NTkgNTczIDAg UgogIC9JbTU2MCA1NzQgMCBSCiAgL0ltNTYxIDU3NSAwIFIKICAvSW01NjIgNTc2IDAgUgog IC9JbTU2MyA1NzcgMCBSCiAgL0ltNTY0IDU3OCAwIFIKICAvSW01NjUgNTc5IDAgUgogIC9J bTU2NiA1ODAgMCBSCiAgL0ltNTY3IDU4MSAwIFIKICAvSW01NjggNTgyIDAgUgogIC9JbTU2 OSA1ODMgMCBSCiAgL0ltNTcwIDU4NCAwIFIKICAvSW01NzEgNTg1IDAgUgogIC9JbTU3MiA1 ODYgMCBSCiAgL0ltNTczIDU4NyAwIFIKICAvSW01NzQgNTg4IDAgUgogIC9JbTU3NSA1ODkg MCBSCiAgL0ltNTc2IDU5MCAwIFIKICAvSW01NzcgNTkxIDAgUgogIC9JbTU3OCA1OTIgMCBS CiAgL0ltNTc5IDU5MyAwIFIKICAvSW01ODAgNTk0IDAgUgogIC9JbTU4MSA1OTUgMCBSCiAg L0ltNTgyIDU5NiAwIFIKICAvSW01ODMgNTk3IDAgUgogIC9JbTU4NCA1OTggMCBSCiAgL0lt NTg1IDU5OSAwIFIKICAvSW01ODYgNjAwIDAgUgogIC9JbTU4NyA2MDEgMCBSCiAgL0ltNTg4 IDYwMiAwIFIKICAvSW01ODkgNjAzIDAgUgogIC9JbTU5MCA2MDQgMCBSCiAgL0ltNTkxIDYw NSAwIFIKICAvSW01OTIgNjA2IDAgUgogIC9JbTU5MyA2MDcgMCBSCiAgL0ltNTk0IDYwOCAw IFIKICAvSW01OTUgNjA5IDAgUgogIC9JbTU5NiA2MTAgMCBSCiAgL0ltNTk3IDYxMSAwIFIK ICAvSW01OTggNjEyIDAgUgogIC9JbTU5OSA2MTMgMCBSCiAgL0ltNjAwIDYxNCAwIFIKICAv SW02MDEgNjE1IDAgUgogIC9JbTYwMiA2MTYgMCBSCiAgL0ltNjAzIDYxNyAwIFIKICAvSW02 MDQgNjE4IDAgUgogIC9JbTYwNSA2MTkgMCBSCiAgL0ltNjA2IDYyMCAwIFIKICAvSW02MDcg NjIxIDAgUgogIC9JbTYwOCA2MjIgMCBSCiAgL0ltNjA5IDYyMyAwIFIKICAvSW02MTAgNjI0 IDAgUgogIC9JbTYxMSA2MjUgMCBSCiAgL0ltNjEyIDYyNiAwIFIKICAvSW02MTMgNjI3IDAg UgogIC9JbTYxNCA2MjggMCBSCiAgL0ltNjE1IDYyOSAwIFIKICAvSW02MTYgNjMwIDAgUgog IC9JbTYxNyA2MzEgMCBSCiAgL0ltNjE4IDYzMiAwIFIKICAvSW02MTkgNjMzIDAgUgogIC9J bTYyMCA2MzQgMCBSCiAgL0ltNjIxIDYzNSAwIFIKICAvSW02MjIgNjM2IDAgUgogIC9JbTYy MyA2MzcgMCBSCiAgL0ltNjI0IDYzOCAwIFIKICAvSW02MjUgNjM5IDAgUgogIC9JbTYyNiA2 NDAgMCBSCiAgL0ltNjI3IDY0MSAwIFIKICAvSW02MjggNjQyIDAgUgogIC9JbTYyOSA2NDMg MCBSCiAgL0ltNjMwIDY0NCAwIFIKICAvSW02MzEgNjQ1IDAgUgogIC9JbTYzMiA2NDYgMCBS CiAgL0ltNjMzIDY0NyAwIFIKICAvSW02MzQgNjQ4IDAgUgogIC9JbTYzNSA2NDkgMCBSCiAg L0ltNjM2IDY1MCAwIFIKICAvSW02MzcgNjUxIDAgUgogIC9JbTYzOCA2NTIgMCBSCiAgL0lt NjM5IDY1MyAwIFIKICAvSW02NDAgNjU0IDAgUgogIC9JbTY0MSA2NTUgMCBSCiAgL0ltNjQy IDY1NiAwIFIKICAvSW02NDMgNjU3IDAgUgogIC9JbTY0NCA2NTggMCBSCiAgL0ltNjQ1IDY1 OSAwIFIKICAvSW02NDYgNjYwIDAgUgogIC9JbTY0NyA2NjEgMCBSCiAgL0ltNjQ4IDY2MiAw IFIKICAvSW02NDkgNjYzIDAgUgogIC9JbTY1MCA2NjQgMCBSCiAgL0ltNjUxIDY2NSAwIFIK ICAvSW02NTIgNjY2IDAgUgogIC9JbTY1MyA2NjcgMCBSCiAgL0ltNjU0IDY2OCAwIFIKICAv SW02NTUgNjY5IDAgUgogIC9JbTY1NiA2NzAgMCBSCiAgL0ltNjU3IDY3MSAwIFIKICAvSW02 NTggNjcyIDAgUgogIC9JbTY1OSA2NzMgMCBSCiAgL0ltNjYwIDY3NCAwIFIKICAvSW02NjEg Njc1IDAgUgogIC9JbTY2MiA2NzYgMCBSCiAgL0ltNjYzIDY3NyAwIFIKICAvSW02NjQgNjc4 IDAgUgogIC9JbTY2NSA2NzkgMCBSCiAgL0ltNjY2IDY4MCAwIFIKICAvSW02NjcgNjgxIDAg UgogIC9JbTY2OCA2ODIgMCBSCiAgL0ltNjY5IDY4MyAwIFIKICAvSW02NzAgNjg0IDAgUgog IC9JbTY3MSA2ODUgMCBSCiAgL0ltNjcyIDY4NiAwIFIKICAvSW02NzMgNjg3IDAgUgogIC9J bTY3NCA2ODggMCBSCiAgL0ltNjc1IDY4OSAwIFIKICAvSW02NzYgNjkwIDAgUgogIC9JbTY3 NyA2OTEgMCBSCiAgL0ltNjc4IDY5MiAwIFIKICAvSW02NzkgNjkzIDAgUgogIC9JbTY4MCA2 OTQgMCBSCiAgL0ltNjgxIDY5NSAwIFIKICAvSW02ODIgNjk2IDAgUgogIC9JbTY4MyA2OTcg MCBSCiAgL0ltNjg0IDY5OCAwIFIKICAvSW02ODUgNjk5IDAgUgogIC9JbTY4NiA3MDAgMCBS CiAgL0ltNjg3IDcwMSAwIFIKICAvSW02ODggNzAyIDAgUgogIC9JbTY4OSA3MDMgMCBSCiAg L0ltNjkwIDcwNCAwIFIKICAvSW02OTEgNzA1IDAgUgogIC9JbTY5MiA3MDYgMCBSCiAgL0lt NjkzIDcwNyAwIFIKICAvSW02OTQgNzA4IDAgUgogIC9JbTY5NSA3MDkgMCBSCiAgL0ltNjk2 IDcxMCAwIFIKICAvSW02OTcgNzExIDAgUgogIC9JbTY5OCA3MTIgMCBSCiAgL0ltNjk5IDcx MyAwIFIKICAvSW03MDAgNzE0IDAgUgogIC9JbTcwMSA3MTUgMCBSCiAgL0ltNzAyIDcxNiAw IFIKICAvSW03MDMgNzE3IDAgUgogIC9JbTcwNCA3MTggMCBSCiAgL0ltNzA1IDcxOSAwIFIK ICAvSW03MDYgNzIwIDAgUgogIC9JbTcwNyA3MjEgMCBSCiAgL0ltNzA4IDcyMiAwIFIKICAv SW03MDkgNzIzIDAgUgogIC9JbTcxMCA3MjQgMCBSCiAgL0ltNzExIDcyNSAwIFIKICAvSW03 MTIgNzI2IDAgUgogIC9JbTcxMyA3MjcgMCBSCiAgL0ltNzE0IDcyOCAwIFIKICAvSW03MTUg NzI5IDAgUgogIC9JbTcxNiA3MzAgMCBSCiAgL0ltNzE3IDczMSAwIFIKICAvSW03MTggNzMy IDAgUgogIC9JbTcxOSA3MzMgMCBSCiAgL0ltNzIwIDczNCAwIFIKICAvSW03MjEgNzM1IDAg UgogIC9JbTcyMiA3MzYgMCBSCiAgL0ltNzIzIDczNyAwIFIKICAvSW03MjQgNzM4IDAgUgog IC9JbTcyNSA3MzkgMCBSCiAgL0ltNzI2IDc0MCAwIFIKICAvSW03MjcgNzQxIDAgUgogIC9J bTcyOCA3NDIgMCBSCiAgL0ltNzI5IDc0MyAwIFIKICAvSW03MzAgNzQ0IDAgUgogIC9JbTcz MSA3NDUgMCBSCiAgL0ltNzMyIDc0NiAwIFIKICAvSW03MzMgNzQ3IDAgUgogIC9JbTczNCA3 NDggMCBSCiAgL0ltNzM1IDc0OSAwIFIKICAvSW03MzYgNzUwIDAgUgogIC9JbTczNyA3NTEg MCBSCiAgL0ltNzM4IDc1MiAwIFIKICAvSW03MzkgNzUzIDAgUgogIC9JbTc0MCA3NTQgMCBS CiAgL0ltNzQxIDc1NSAwIFIKICAvSW03NDIgNzU2IDAgUgogIC9JbTc0MyA3NTcgMCBSCiAg L0ltNzQ0IDc1OCAwIFIKICAvSW03NDUgNzU5IDAgUgogIC9JbTc0NiA3NjAgMCBSCiAgL0lt NzQ3IDc2MSAwIFIKICAvSW03NDggNzYyIDAgUgogIC9JbTc0OSA3NjMgMCBSCiAgL0ltNzUw IDc2NCAwIFIKICAvSW03NTEgNzY1IDAgUgogIC9JbTc1MiA3NjYgMCBSCiAgL0ltNzUzIDc2 NyAwIFIKICAvSW03NTQgNzY4IDAgUgogIC9JbTc1NSA3NjkgMCBSCiAgL0ltNzU2IDc3MCAw IFIKICAvSW03NTcgNzcxIDAgUgogIC9JbTc1OCA3NzIgMCBSCiAgL0ltNzU5IDc3MyAwIFIK ICAvSW03NjAgNzc0IDAgUgogIC9JbTc2MSA3NzUgMCBSCiAgL0ltNzYyIDc3NiAwIFIKICAv SW03NjMgNzc3IDAgUgogIC9JbTc2NCA3NzggMCBSCiAgL0ltNzY1IDc3OSAwIFIKICAvSW03 NjYgNzgwIDAgUgogIC9JbTc2NyA3ODEgMCBSCiAgL0ltNzY4IDc4MiAwIFIKICAvSW03Njkg NzgzIDAgUgogIC9JbTc3MCA3ODQgMCBSCiAgL0ltNzcxIDc4NSAwIFIKICAvSW03NzIgNzg2 IDAgUgogIC9JbTc3MyA3ODcgMCBSCiAgL0ltNzc0IDc4OCAwIFIKICAvSW03NzUgNzg5IDAg UgogIC9JbTc3NiA3OTAgMCBSCiAgL0ltNzc3IDc5MSAwIFIKICAvSW03NzggNzkyIDAgUgog IC9JbTc3OSA3OTMgMCBSCiAgL0ltNzgwIDc5NCAwIFIKICAvSW03ODEgNzk1IDAgUgogIC9J bTc4MiA3OTYgMCBSCiAgL0ltNzgzIDc5NyAwIFIKICAvSW03ODQgNzk4IDAgUgogIC9JbTc4 NSA3OTkgMCBSCiAgL0ltNzg2IDgwMCAwIFIKICAvSW03ODcgODAxIDAgUgogIC9JbTc4OCA4 MDIgMCBSCiAgL0ltNzg5IDgwMyAwIFIKICAvSW03OTAgODA0IDAgUgogIC9JbTc5MSA4MDUg MCBSCiAgL0ltNzkyIDgwNiAwIFIKICAvSW03OTMgODA3IDAgUgogIC9JbTc5NCA4MDggMCBS CiAgL0ltNzk1IDgwOSAwIFIKICAvSW03OTYgODEwIDAgUgogIC9JbTc5NyA4MTEgMCBSCiAg L0ltNzk4IDgxMiAwIFIKICAvSW03OTkgODEzIDAgUgogIC9JbTgwMCA4MTQgMCBSCiAgL0lt ODAxIDgxNSAwIFIKICAvSW04MDIgODE2IDAgUgogIC9JbTgwMyA4MTcgMCBSCiAgL0ltODA0 IDgxOCAwIFIKICAvSW04MDUgODE5IDAgUgogIC9JbTgwNiA4MjAgMCBSCiAgL0ltODA3IDgy MSAwIFIKICAvSW04MDggODIyIDAgUgogIC9JbTgwOSA4MjMgMCBSCiAgL0ltODEwIDgyNCAw IFIKICAvSW04MTEgODI1IDAgUgogIC9JbTgxMiA4MjYgMCBSCiAgL0ltODEzIDgyNyAwIFIK ICAvSW04MTQgODI4IDAgUgogIC9JbTgxNSA4MjkgMCBSCiAgL0ltODE2IDgzMCAwIFIKICAv SW04MTcgODMxIDAgUgogIC9JbTgxOCA4MzIgMCBSCiAgL0ltODE5IDgzMyAwIFIKICAvSW04 MjAgODM0IDAgUgogIC9JbTgyMSA4MzUgMCBSCiAgL0ltODIyIDgzNiAwIFIKICAvSW04MjMg ODM3IDAgUgogIC9JbTgyNCA4MzggMCBSCiAgL0ltODI1IDgzOSAwIFIKICAvSW04MjYgODQw IDAgUgogIC9JbTgyNyA4NDEgMCBSCiAgL0ltODI4IDg0MiAwIFIKICAvSW04MjkgODQzIDAg UgogIC9JbTgzMCA4NDQgMCBSCiAgL0ltODMxIDg0NSAwIFIKICAvSW04MzIgODQ2IDAgUgog IC9JbTgzMyA4NDcgMCBSCiAgL0ltODM0IDg0OCAwIFIKICAvSW04MzUgODQ5IDAgUgogIC9J bTgzNiA4NTAgMCBSCiAgL0ltODM3IDg1MSAwIFIKICAvSW04MzggODUyIDAgUgogIC9JbTgz OSA4NTMgMCBSCiAgL0ltODQwIDg1NCAwIFIKICAvSW04NDEgODU1IDAgUgogIC9JbTg0MiA4 NTYgMCBSCiAgL0ltODQzIDg1NyAwIFIKICAvSW04NDQgODU4IDAgUgogIC9JbTg0NSA4NTkg MCBSCiAgL0ltODQ2IDg2MCAwIFIKICAvSW04NDcgODYxIDAgUgogIC9JbTg0OCA4NjIgMCBS CiAgL0ltODQ5IDg2MyAwIFIKICAvSW04NTAgODY0IDAgUgogIC9JbTg1MSA4NjUgMCBSCiAg L0ltODUyIDg2NiAwIFIKICAvSW04NTMgODY3IDAgUgogIC9JbTg1NCA4NjggMCBSCiAgL0lt ODU1IDg2OSAwIFIKICAvSW04NTYgODcwIDAgUgogIC9JbTg1NyA4NzEgMCBSCiAgL0ltODU4 IDg3MiAwIFIKICAvSW04NTkgODczIDAgUgogIC9JbTg2MCA4NzQgMCBSCiAgL0ltODYxIDg3 NSAwIFIKICAvSW04NjIgODc2IDAgUgogIC9JbTg2MyA4NzcgMCBSCiAgL0ltODY0IDg3OCAw IFIKICAvSW04NjUgODc5IDAgUgogIC9JbTg2NiA4ODAgMCBSCiAgL0ltODY3IDg4MSAwIFIK ICAvSW04NjggODgyIDAgUgogIC9JbTg2OSA4ODMgMCBSCiAgL0ltODcwIDg4NCAwIFIKICAv SW04NzEgODg1IDAgUgogIC9JbTg3MiA4ODYgMCBSCiAgL0ltODczIDg4NyAwIFIKICAvSW04 NzQgODg4IDAgUgogIC9JbTg3NSA4ODkgMCBSCiAgL0ltODc2IDg5MCAwIFIKICAvSW04Nzcg ODkxIDAgUgogIC9JbTg3OCA4OTIgMCBSCiAgL0ltODc5IDg5MyAwIFIKICAvSW04ODAgODk0 IDAgUgogIC9JbTg4MSA4OTUgMCBSCiAgL0ltODgyIDg5NiAwIFIKICAvSW04ODMgODk3IDAg UgogIC9JbTg4NCA4OTggMCBSCiAgL0ltODg1IDg5OSAwIFIKICAvSW04ODYgOTAwIDAgUgog IC9JbTg4NyA5MDEgMCBSCiAgL0ltODg4IDkwMiAwIFIKICAvSW04ODkgOTAzIDAgUgogIC9J bTg5MCA5MDQgMCBSCiAgL0ltODkxIDkwNSAwIFIKICAvSW04OTIgOTA2IDAgUgogIC9JbTg5 MyA5MDcgMCBSCiAgL0ltODk0IDkwOCAwIFIKICAvSW04OTUgOTA5IDAgUgogIC9JbTg5NiA5 MTAgMCBSCiAgL0ltODk3IDkxMSAwIFIKICAvSW04OTggOTEyIDAgUgogIC9JbTg5OSA5MTMg MCBSCiAgL0ltOTAwIDkxNCAwIFIKICAvSW05MDEgOTE1IDAgUgogIC9JbTkwMiA5MTYgMCBS CiAgL0ltOTAzIDkxNyAwIFIKICAvSW05MDQgOTE4IDAgUgogIC9JbTkwNSA5MTkgMCBSCiAg L0ltOTA2IDkyMCAwIFIKICAvSW05MDcgOTIxIDAgUgogIC9JbTkwOCA5MjIgMCBSCiAgL0lt OTA5IDkyMyAwIFIKICAvSW05MTAgOTI0IDAgUgogIC9JbTkxMSA5MjUgMCBSCiAgL0ltOTEy IDkyNiAwIFIKICAvSW05MTMgOTI3IDAgUgogIC9JbTkxNCA5MjggMCBSCiAgL0ltOTE1IDky OSAwIFIKICAvSW05MTYgOTMwIDAgUgogIC9JbTkxNyA5MzEgMCBSCiAgL0ltOTE4IDkzMiAw IFIKICAvSW05MTkgOTMzIDAgUgogIC9JbTkyMCA5MzQgMCBSCiAgL0ltOTIxIDkzNSAwIFIK ICAvSW05MjIgOTM2IDAgUgogIC9JbTkyMyA5MzcgMCBSCiAgL0ltOTI0IDkzOCAwIFIKICAv SW05MjUgOTM5IDAgUgogIC9JbTkyNiA5NDAgMCBSCiAgL0ltOTI3IDk0MSAwIFIKICAvSW05 MjggOTQyIDAgUgogIC9JbTkyOSA5NDMgMCBSCiAgL0ltOTMwIDk0NCAwIFIKICAvSW05MzEg OTQ1IDAgUgogIC9JbTkzMiA5NDYgMCBSCiAgL0ltOTMzIDk0NyAwIFIKICAvSW05MzQgOTQ4 IDAgUgogIC9JbTkzNSA5NDkgMCBSCiAgL0ltOTM2IDk1MCAwIFIKICAvSW05MzcgOTUxIDAg UgogIC9JbTkzOCA5NTIgMCBSCiAgL0ltOTM5IDk1MyAwIFIKICAvSW05NDAgOTU0IDAgUgog IC9JbTk0MSA5NTUgMCBSCiAgL0ltOTQyIDk1NiAwIFIKICAvSW05NDMgOTU3IDAgUgogIC9J bTk0NCA5NTggMCBSCiAgL0ltOTQ1IDk1OSAwIFIKICAvSW05NDYgOTYwIDAgUgogIC9JbTk0 NyA5NjEgMCBSCiAgL0ltOTQ4IDk2MiAwIFIKICAvSW05NDkgOTYzIDAgUgogIC9JbTk1MCA5 NjQgMCBSCiAgL0ltOTUxIDk2NSAwIFIKICAvSW05NTIgOTY2IDAgUgogIC9JbTk1MyA5Njcg MCBSCiAgL0ltOTU0IDk2OCAwIFIKICAvSW05NTUgOTY5IDAgUgogIC9JbTk1NiA5NzAgMCBS CiAgL0ltOTU3IDk3MSAwIFIKICAvSW05NTggOTcyIDAgUgogIC9JbTk1OSA5NzMgMCBSCiAg L0ltOTYwIDk3NCAwIFIKICAvSW05NjEgOTc1IDAgUgogIC9JbTk2MiA5NzYgMCBSCiAgL0lt OTYzIDk3NyAwIFIKICAvSW05NjQgOTc4IDAgUgogIC9JbTk2NSA5NzkgMCBSCiAgL0ltOTY2 IDk4MCAwIFIKICAvSW05NjcgOTgxIDAgUgogIC9JbTk2OCA5ODIgMCBSCiAgL0ltOTY5IDk4 MyAwIFIKICAvSW05NzAgOTg0IDAgUgogIC9JbTk3MSA5ODUgMCBSCiAgL0ltOTcyIDk4NiAw IFIKICAvSW05NzMgOTg3IDAgUgogIC9JbTk3NCA5ODggMCBSCiAgL0ltOTc1IDk4OSAwIFIK ICAvSW05NzYgOTkwIDAgUgogIC9JbTk3NyA5OTEgMCBSCiAgL0ltOTc4IDk5MiAwIFIKICAv SW05NzkgOTkzIDAgUgogIC9JbTk4MCA5OTQgMCBSCiAgL0ltOTgxIDk5NSAwIFIKICAvSW05 ODIgOTk2IDAgUgogIC9JbTk4MyA5OTcgMCBSCiAgL0ltOTg0IDk5OCAwIFIKICAvSW05ODUg OTk5IDAgUgogIC9JbTk4NiAxMDAwIDAgUgogIC9JbTk4NyAxMDAxIDAgUgogIC9JbTk4OCAx MDAyIDAgUgogIC9JbTk4OSAxMDAzIDAgUgogIC9JbTk5MCAxMDA0IDAgUgogIC9JbTk5MSAx MDA1IDAgUgogIC9JbTk5MiAxMDA2IDAgUgogIC9JbTk5MyAxMDA3IDAgUgogIC9JbTk5NCAx MDA4IDAgUgogIC9JbTk5NSAxMDA5IDAgUgogIC9JbTk5NiAxMDEwIDAgUgogIC9JbTk5NyAx MDExIDAgUgogIC9JbTk5OCAxMDEyIDAgUgogIC9JbTk5OSAxMDEzIDAgUgogIC9JbTEwMDAg MTAxNCAwIFIKICAvSW0xMDAxIDEwMTUgMCBSCiAgL0ltMTAwMiAxMDE2IDAgUgogIC9JbTEw MDMgMTAxNyAwIFIKICAvSW0xMDA0IDEwMTggMCBSCiAgL0ltMTAwNSAxMDE5IDAgUgogIC9J bTEwMDYgMTAyMCAwIFIKICAvSW0xMDA3IDEwMjEgMCBSCiAgL0ltMTAwOCAxMDIyIDAgUgog IC9JbTEwMDkgMTAyMyAwIFIKICAvSW0xMDEwIDEwMjQgMCBSCj4+Cj4+CmVuZG9iagoxMDI0 IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTEwMTAK L0xlbmd0aCAxMDI5IDAgUgoKL1dpZHRoIDE1MDAKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9u ZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUgCj4+CnN0 cmVhbQr/2P/bAEMAFxARFBEOFxQSFBoYFxsiOSUiHx8iRjI1KTlSSFdVUUhQTltmg29bYXxi TlBym3N8h4uSlJJYbaCsn46qg4+Sjf/bAEMBGBoaIh4iQyUlQ41eUF6NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Njf/AABEIAAEF3AMBIgACEQED EQH/xAAXAAEBAQEAAAAAAAAAAAAAAAAAAQIF/8QAGBABAQADAAAAAAAAAAAAAAAAAAECMTL/ xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEA AhEDEQA/AODNAO1kAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAABQAA EAAAAAAAAAAAAAAAAAAAAAAAAEAUAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA AAAAAEAAAAAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAEAAAAAAAAAABvHmAsH//2Qpl bmRzdHJlYW0KZW5kb2JqCjEwMjMgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAv SW1hZ2UKL05hbWUgL0ltMTAwOQovTGVuZ3RoIDEwMzAgMCBSCgovV2lkdGggMTUwMAovSGVp Z2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0 ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJG MjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoiHiJD JSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAwX/xAAWEAEB AQAAAAAAAAAAAAAAAAAAATH/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAAAAAA AAAAAAAAAAAAAAH/2gAMAwEAAhEDEQA/AODMAdrIAooAAAAAAAAAAAAAAAACgAAAAAAAAAAA AAAAAAAAIAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAK AAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAACAAAAAAAgAAAAAAAAAAAAAAAAAAAIAAAAAAA AAAAAIAAAAAA0mQFg//ZCmVuZHN0cmVhbQplbmRvYmoKMTAyMiAwIG9iago8PC9UeXBlIC9Y T2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xMDA4Ci9MZW5ndGggMTAzMSAwIFIK Ci9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNl IC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBDABcQERQR DhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+O qoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAA AAAAAAAAAAEDBf/EABYQAQEBAAAAAAAAAAAAAAAAAAACMf/EABcBAQEBAQAAAAAAAAAAAAAA AAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEQMRAD8A4M4oO6MgAAAAAAAA AACgAAAAAAAAAAAAAAACgCAAACgAAAAgAAAAAAAAAAAAKAAKAAAAAAAAAAAAAAAAAAAAAAAA AAACAAAAAIAAAAAAAAAAAACgAAAAAAAAAAgAAgAoAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAA AAAAAIAACAAAAAAAAAAAAAAAAAgAAAAAAAAAANAWD//ZCmVuZHN0cmVhbQplbmRvYmoKMTAy MSAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xMDA3 Ci9MZW5ndGggMTAzMiAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBv bmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+Pgpz dHJlYW0K/9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8 Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEB AxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABcQAQEBAQAAAAAAAAAAAAAAAAABMQL/ xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAEx/9oADAMB AAIRAxEAPwDg84oO6YyAKAAAAAAKAAAAAAAAAIAAAAAKAAAAAAAAAAAAAAAAACgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAKACAAAAAAAAAAAAAAAAAAA AgAAAAACgAAAAAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAACAAAgAs2Ng1B// 2QplbmRzdHJlYW0KZW5kb2JqCjEwMjAgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlw ZSAvSW1hZ2UKL05hbWUgL0ltMTAwNgovTGVuZ3RoIDEwMzMgMCBSCgovV2lkdGggMTUwMAov SGVpZ2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9G aWx0ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIf HyJGMjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoi HiJDJSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAX EAEAAwAAAAAAAAAAAAAAAAAAAQIx/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECBP/EABYRAQEB AAAAAAAAAAAAAAAAAAABMf/aAAwDAQACEQMRAD8A4NWgd0xkAUAAAAABAAFAAAUAAAAAAAAA AAAAAAAAAAAAFAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABAQAAAABQAAAAAAAAAAAABAAAAAAAAAQA AAAAAEAAAAAAAAAAAAAAFjWgWD//2QplbmRzdHJlYW0KZW5kb2JqCjEwMTkgMCBvYmoKPDwv VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMTAwNQovTGVuZ3RoIDEw MzQgMCBSCgovV2lkdGggMTUwMAovSGVpZ2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29s b3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sA QwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJGMjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KU klhtoKyfjqqDj5KN/9sAQwEYGhoiHiJDJSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEB AQAAAAAAAAAAAAAAAAABAgX/xAAXEAEAAwAAAAAAAAAAAAAAAAAAAQIx/8QAFwEBAQEBAAAA AAAAAAAAAAAAAAECBP/EABYRAQEBAAAAAAAAAAAAAAAAAAABMf/aAAwDAQACEQMRAD8A4NWg d0xkAUUAQAUAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA AAAABAQABQAAAAAAAAAABAAUAEAAAAAAAABAAAAAAAQAAAAAAWNaBYP/2QplbmRzdHJlYW0K ZW5kb2JqCjEwMTggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05h bWUgL0ltMTAwNAovTGVuZ3RoIDEwMzUgMCBSCgovV2lkdGggMTUwMAovSGVpZ2h0IDEKL0Jp dHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RDVERl Y29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJGMjUpOVJIV1VR SFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoiHiJDJSVDjV5QXo2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N/8AAEQgA AQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAXEAEAAwAAAAAAAAAA AAAAAAAAAQIx/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECBP/EABURAQEAAAAAAAAAAAAAAAAA AAAB/9oADAMBAAIRAxEAPwDg1bB3RkAVABQAAAAAAAAAAAAAAAAAAAAAUAAUAAAAAAAAAAAB AUAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAUEAAAAA AAAAAAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAABAAAAAEAAAAAAAAAAAAAAABA QAAAWNaBqD//2QplbmRzdHJlYW0KZW5kb2JqCjEwMTcgMCBvYmoKPDwvVHlwZSAvWE9iamVj dAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMTAwMwovTGVuZ3RoIDEwMzYgMCBSCgovV2lk dGggMTUwMAovSGVpZ2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2 aWNlUkdCCi9GaWx0ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIU GhgXGyI5JSIfHyJGMjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN /9sAQwEYGhoiHiJDJSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAA AAABAgX/xAAWEAEBAQAAAAAAAAAAAAAAAAAAAQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE /8QAFREBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhEDEQA/AODlsHdGQBpAAAAAAAAAAFAA AAAUAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABAABAAAAAAAAAAAAAAAEAA UAAAAAAAAAAAAAAAQAAAAAAQAAAAAFigo//ZCmVuZHN0cmVhbQplbmRvYmoKMTAxNiAwIG9i ago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xMDAyCi9MZW5n dGggMTAzNyAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4 Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K /9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5Qcptz fIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QA FwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBAQEB AQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEQMRAD8A 4OWwd0sgDSAAAAAAAAACgoAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAACgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAIAAAAAAAAAA AAAACAAAAAgAAAAAAAAAAAAAAAIAAAAoAAAAAAAAAAAgAAAAAAgALFBR/9kKZW5kc3RyZWFt CmVuZG9iagoxMDE1IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9O YW1lIC9JbTEwMDEKL0xlbmd0aCAxMDM4IDAgUgoKL1dpZHRoIDE1MDAKL0hlaWdodCAxCi9C aXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1RE ZWNvZGUgCj4+CnN0cmVhbQr/2P/bAEMAFxARFBEOFxQSFBoYFxsiOSUiHx8iRjI1KTlSSFdV UUhQTltmg29bYXxiTlBym3N8h4uSlJJYbaCsn46qg4+Sjf/bAEMBGBoaIh4iQyUlQ41eUF6N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Njf/AABEI AAEF3AMBIgACEQEDEQH/xAAXAAEBAQEAAAAAAAAAAAAAAAAAAQIF/8QAFhABAQEAAAAAAAAA AAAAAAAAAAEC/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECBP/EABURAQEAAAAAAAAAAAAAAAAA AAAC/9oADAMBAAIRAxEAPwDg5bB3SyoDSAAAAAAAAACgAAAAAAAAAAAAAAAoAAAAAAAAAAAA AAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAIAAAAAAAAAAAAACCACgAAAAAAAAAAAAAACAAAAAA AABFBR//2QplbmRzdHJlYW0KZW5kb2JqCjEwMTQgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAov U3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMTAwMAovTGVuZ3RoIDEwMzkgMCBSCgovV2lkdGgg MTUwMAovSGVpZ2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNl UkdCCi9GaWx0ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgX GyI5JSIfHyJGMjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sA QwEYGhoiHiJDJSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAAB AgX/xAAWEAEBAQAAAAAAAAAAAAAAAAAAAQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QA FREBAQAAAAAAAAAAAAAAAAAAAAL/2gAMAwEAAhEDEQA/AODlsHdLKgNIAAAAAAAAAKAAAAAA AAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAgC KAAAAAAAAAAAAAAAIAAAAAAAAEUFH//ZCmVuZHN0cmVhbQplbmRvYmoKMTAxMyAwIG9iago8 PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW05OTkKL0xlbmd0aCAx MDQwIDAgUgoKL1dpZHRoIDE1MDAKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0Nv bG9yU3BhY2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUgCj4+CnN0cmVhbQr/2P/b AEMAFxARFBEOFxQSFBoYFxsiOSUiHx8iRjI1KTlSSFdVUUhQTltmg29bYXxiTlBym3N8h4uS lJJYbaCsn46qg4+Sjf/bAEMBGBoaIh4iQyUlQ41eUF6NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Njf/AABEIAAEF3AMBIgACEQEDEQH/xAAXAAEB AQEAAAAAAAAAAAAAAAAAAQIF/8QAFhABAQEAAAAAAAAAAAAAAAAAAAEC/8QAFwEBAQEBAAAA AAAAAAAAAAAAAAECBP/EABURAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIRAxEAPwDg5bB3 SyoDSAAAAAAAAAAACgAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAA AAAAIAAAAAAAAAAAAAACAgACgAAAAAAAAAAAACAAAAAAAABFBR//2QplbmRzdHJlYW0KZW5k b2JqCjEwMTIgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L0ltOTk4Ci9MZW5ndGggMTA0MSAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1Bl ckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2Rl IAo+PgpzdHJlYW0K/9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5b ZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwD ASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAA AAABAv/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAv/a AAwDAQACEQMRAD8A4OWwd0sqA0gAAAAAAAAAAAoAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAA AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAA AAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAAAAAAAAAAggAoAAAAAAAAAAAAAAAgAAAAAARQUf /9kKZW5kc3RyZWFtCmVuZG9iagoxMDExIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5 cGUgL0ltYWdlCi9OYW1lIC9JbTk5NwovTGVuZ3RoIDEwNDIgMCBSCgovV2lkdGggMTUwMAov SGVpZ2h0IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9G aWx0ZXIgL0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIf HyJGMjUpOVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoi HiJDJSVDjV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2N/8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAW EAEBAQAAAAAAAAAAAAAAAAAAAQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAA AAAAAAAAAAAAAAAAAAL/2gAMAwEAAhEDEQA/AODlsHdLKgNIAAAAAAAAAAAKAAAAAAAAAAAA AAACgAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAgAAAAAAAAAAAAAAICKAAAAA AAAAAAAAAAIAAAAAAEUFR//ZCmVuZHN0cmVhbQplbmRvYmoKMTAxMCAwIG9iago8PC9UeXBl IC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW05OTYKL0xlbmd0aCAxMDQzIDAg UgoKL1dpZHRoIDE1MDAKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3Bh Y2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUgCj4+CnN0cmVhbQr/2P/bAEMAFxAR FBEOFxQSFBoYFxsiOSUiHx8iRjI1KTlSSFdVUUhQTltmg29bYXxiTlBym3N8h4uSlJJYbaCs n46qg4+Sjf/bAEMBGBoaIh4iQyUlQ41eUF6NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2Njf/AABEIAAEF3AMBIgACEQEDEQH/xAAXAAEBAQEAAAAA AAAAAAAAAAAAAQIF/8QAFhABAQEAAAAAAAAAAAAAAAAAAAEC/8QAFwEBAQEBAAAAAAAAAAAA AAAAAAECBP/EABURAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIRAxEAPwDg5bgO6WVAaQAA AAAAAAAAAAAUAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAABA AAAAAAAAAAAAAAQEAAUAAAAAAAAAAAAAQAAAAAAIoKP/2QplbmRzdHJlYW0KZW5kb2JqCjEw MDkgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTk1 Ci9MZW5ndGggMTA0NCAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBv bmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+Pgpz dHJlYW0K/9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8 Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEB AxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/E ABcBAQEBAQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQAC EQMRAD8A4OW4DullQGkAAAAAAAAAAAAAFAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAU AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA AAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEEAFAAAAAAAAAAAAAAAEAAAACKCj/9kKZW5k c3RyZWFtCmVuZG9iagoxMDA4IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0lt YWdlCi9OYW1lIC9JbTk5NAovTGVuZ3RoIDEwNDUgMCBSCgovV2lkdGggMTUwMAovSGVpZ2h0 IDEKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIg L0RDVERlY29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJGMjUp OVJIV1VRSFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoiHiJDJSVD jV5QXo2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N /8AAEQgAAQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAWEAEBAQAA AAAAAAAAAAAAAAAAAQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAAAAAAAAAA AAAAAAAAAAL/2gAMAwEAAhEDEQA/AODluA7pZUBpAAAAAAAAAAAAABQAAAAAAAAAAAAAAAUA AAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAABBABQAAAAAAAAAA AAAABAAAAAigo//ZCmVuZHN0cmVhbQplbmRvYmoKMTAwNyAwIG9iago8PC9UeXBlIC9YT2Jq ZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW05OTMKL0xlbmd0aCAxMDQ2IDAgUgoKL1dp ZHRoIDE1MDAKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0Rl dmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUgCj4+CnN0cmVhbQr/2P/bAEMAFxARFBEOFxQS FBoYFxsiOSUiHx8iRjI1KTlSSFdVUUhQTltmg29bYXxiTlBym3N8h4uSlJJYbaCsn46qg4+S jf/bAEMBGBoaIh4iQyUlQ41eUF6NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2Njf/AABEIAAEF3AMBIgACEQEDEQH/xAAXAAEBAQEAAAAAAAAAAAAA AAAAAQIF/8QAFhABAQEAAAAAAAAAAAAAAAAAAAEC/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAEC BP/EABURAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIRAxEAPwDg5bgO6MqA0gAAAAAAAAAA AAAAAoAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAA AAAAAAAAgIAAoAAAAAAAAAAAAAgAAAAsAVH/2QplbmRzdHJlYW0KZW5kb2JqCjEwMDYgMCBv YmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTkyCi9MZW5n dGggMTA0NyAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4 Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K /9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5Qcptz fIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QA FwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBAQEB AQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEQMRAD8A 4OW4DujKgNIAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAoAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAC AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAIIAKAAAAAAAAAAAAAAAIAALAFR/9kKZW5kc3RyZWFt CmVuZG9iagoxMDA1IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9O YW1lIC9JbTk5MQovTGVuZ3RoIDEwNDggMCBSCgovV2lkdGggMTUwMAovSGVpZ2h0IDEKL0Jp dHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RDVERl Y29kZSAKPj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJGMjUpOVJIV1VR SFBOW2aDb1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoiHiJDJSVDjV5QXo2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N/8AAEQgA AQXcAwEiAAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAWEAEBAQAAAAAAAAAA AAAAAAAAAQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAAAAAAAAAAAAAAAAAA AAH/2gAMAwEAAhEDEQA/AODluA7oyoCoAKAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAoAAAAA AAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA AAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAIAAAAAAAAAAAAAACAgACgAAAAAAAAAAAACA ACwBUf/ZCmVuZHN0cmVhbQplbmRvYmoKMTAwNCAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9T dWJ0eXBlIC9JbWFnZQovTmFtZSAvSW05OTAKL0xlbmd0aCAxMDQ5IDAgUgoKL1dpZHRoIDE1 MDAKL0hlaWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJH QgovRmlsdGVyIC9EQ1REZWNvZGUgCj4+CnN0cmVhbQr/2P/bAEMAFxARFBEOFxQSFBoYFxsi OSUiHx8iRjI1KTlSSFdVUUhQTltmg29bYXxiTlBym3N8h4uSlJJYbaCsn46qg4+Sjf/bAEMB GBoaIh4iQyUlQ41eUF6NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2Njf/AABEIAAEF3AMBIgACEQEDEQH/xAAXAAEBAQEAAAAAAAAAAAAAAAAAAQIF /8QAFhABAQEAAAAAAAAAAAAAAAAAAAEC/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECBP/EABUR AQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIRAxEAPwDg5bgO6MqAqACgAAAAAAAAAAAAAAAo AAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAACAAAAAAAAAAAAA AAgIAAoAAAAAAAAAAAAAgAAsAVH/2QplbmRzdHJlYW0KZW5kb2JqCjEwMDMgMCBvYmoKPDwv VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTg5Ci9MZW5ndGggMTA1 MCAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBD ABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSS WG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QAFwABAQEB AAAAAAAAAAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBAQEBAQAAAAAA AAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEQMRAD8A4OW4DujK gKgAoAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAA AAAAAAAAAAgAAAAAAAAAAAAAIIAKAAAAAAAAAAAAAAAILAFR/9kKZW5kc3RyZWFtCmVuZG9i agoxMDAyIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9J bTk4OAovTGVuZ3RoIDEwNTEgMCBSCgovV2lkdGggMTUwMAovSGVpZ2h0IDEKL0JpdHNQZXJD b21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RDVERlY29kZSAK Pj4Kc3RyZWFtCv/Y/9sAQwAXEBEUEQ4XFBIUGhgXGyI5JSIfHyJGMjUpOVJIV1VRSFBOW2aD b1thfGJOUHKbc3yHi5KUklhtoKyfjqqDj5KN/9sAQwEYGhoiHiJDJSVDjV5QXo2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N/8AAEQgAAQXcAwEi AAIRAQMRAf/EABcAAQEBAQAAAAAAAAAAAAAAAAABAgX/xAAWEAEBAQAAAAAAAAAAAAAAAAAA AQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQIE/8QAFREBAQAAAAAAAAAAAAAAAAAAAAH/2gAM AwEAAhEDEQA/AODlsHdGVAVABQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAFAAAAAAAAAAAAAA AAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAA AAAAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAABAEUAAAAAAAAAAAAAAAQWAKj//Z CmVuZHN0cmVhbQplbmRvYmoKMTAwMSAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBl IC9JbWFnZQovTmFtZSAvSW05ODcKL0xlbmd0aCAxMDUyIDAgUgoKL1dpZHRoIDE1MDAKL0hl aWdodCAxCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovRmls dGVyIC9EQ1REZWNvZGUgCj4+CnN0cmVhbQr/2P/bAEMAFxARFBEOFxQSFBoYFxsiOSUiHx8i RjI1KTlSSFdVUUhQTltmg29bYXxiTlBym3N8h4uSlJJYbaCsn46qg4+Sjf/bAEMBGBoaIh4i QyUlQ41eUF6NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2Njf/AABEIAAEF3AMBIgACEQEDEQH/xAAXAAEBAQEAAAAAAAAAAAAAAAAAAQIF/8QAFhAB AQEAAAAAAAAAAAAAAAAAAAEC/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECBP/EABURAQEAAAAA AAAAAAAAAAAAAAAB/9oADAMBAAIRAxEAPwDg5bB3RkUFQAAAUAAAAAAAAAAAAAAAFAAAAAAA AAAAAAAABQAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAEBAAF AAAAAAAAAAAAAEFgCo//2QplbmRzdHJlYW0KZW5kb2JqCjEwMDAgMCBvYmoKPDwvVHlwZSAv WE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTg2Ci9MZW5ndGggMTA1MyAwIFIK Ci9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNl IC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBDABcQERQR DhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+O qoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAA AAAAAAAAAAECBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBAQEBAQAAAAAAAAAAAAAA AAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEQMRAD8A4OWwd0sgCigCACgA AAAAAAAAAAAAAAoAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAA AAACAAAAAAAAAAAAAAggAoAAAAAAAAAAAAACwBUf/9kKZW5kc3RyZWFtCmVuZG9iago5OTkg MCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTg1Ci9M ZW5ndGggMTA1NCAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVu dCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJl YW0K/9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5Q cptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB /8QAFwABAQEBAAAAAAAAAAAAAAAAAAEDBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcB AQEBAQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEQMR AD8A4GWgO6WQBRQBABQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAA AABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA AAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAABAEUAAAAAAAAAAAAABYAqP/9kKZW5kc3Ry ZWFtCmVuZG9iago5OTggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UK L05hbWUgL0ltOTg0Ci9MZW5ndGggMTA1NSAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQov Qml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENU RGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBDABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhX VVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBe jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAAR CAABBdwDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEDBf/EABYQAQEBAAAAAAAA AAAAAAAAAAABAv/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgT/xAAVEQEBAAAAAAAAAAAAAAAA AAAAAv/aAAwDAQACEQMRAD8A4GWgO6WQBQUBAAABQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA FAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAABAAAAAAAAAAAAAAAQEAAUAAAAAAAA AAABYAqP/9kKZW5kc3RyZWFtCmVuZG9iago5OTcgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAov U3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTgzCi9MZW5ndGggMTA1NiAwIFIKCi9XaWR0aCAx NTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VS R0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBDABcQERQRDhcUEhQaGBcb IjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSSWG2grJ+OqoOPko3/2wBD ARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAED Bf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgT/xAAV EQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEQMRAD8A4GWgO6WQBQUBAAABQAAAAAAAAAAA AAAAUAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAA AAAAAAAQEAAUAAAAAAAAAAABYAqP/9kKZW5kc3RyZWFtCmVuZG9iago5OTYgMCBvYmoKPDwv VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltOTgyCi9MZW5ndGggMTA1 NyAwIFIKCi9XaWR0aCAxNTAwCi9IZWlnaHQgMQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlIAo+PgpzdHJlYW0K/9j/2wBD ABcQERQRDhcUEhQaGBcbIjklIh8fIkYyNSk5UkhXVVFIUE5bZoNvW2F8Yk5QcptzfIeLkpSS WG2grJ+OqoOPko3/2wBDARgaGiIeIkMlJUONXlBejY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2N jY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY3/wAARCAABBdwDASIAAhEBAxEB/8QAFwABAQEB AAAAAAAAAAAAAAAAAAEDBf/EABYQAQEBAAAAAAAAAAAAAAAAAAABAv/EABcBA