From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934117AbcLBOwb (ORCPT ); Fri, 2 Dec 2016 09:52:31 -0500 Received: from mga04.intel.com ([192.55.52.120]:31201 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932914AbcLBOwa (ORCPT ); Fri, 2 Dec 2016 09:52:30 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,287,1477983600"; d="gz'50?scan'50,208,50";a="12685882" Date: Fri, 2 Dec 2016 22:51:07 +0800 From: kbuild test robot To: cuilifei Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org, miklos@szeredi.hu, cuilifei Subject: Re: [PATCH] fuse: freezing abort when use wait_event_killable{,_exclusive}(). Message-ID: <201612022247.I7JB2dbz%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="qMm9M+Fa2AknHoGS" Content-Disposition: inline In-Reply-To: <1480570636-31046-1-git-send-email-cuilifei@xiaomi.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: fengguang.wu@intel.com X-SA-Exim-Scanned: No (on bee); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --qMm9M+Fa2AknHoGS Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi cuilifei, [auto build test WARNING on fuse/for-next] [also build test WARNING on v4.9-rc7 next-20161202] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/cuilifei/fuse-freezing-abort-when-use-wait_event_killable-_exclusive/20161202-221508 base: https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git for-next config: m68k-sun3_defconfig (attached as .config) compiler: m68k-linux-gcc (GCC) 4.9.0 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=m68k All warnings (new ones prefixed by >>): fs/fuse/dev.c: In function '__fuse_get_req': fs/fuse/dev.c:31:4: error: 'ret' undeclared (first use in this function) ret = wait_event_interruptible_exclusive(wq, \ ^ >> fs/fuse/dev.c:175:10: note: in expansion of macro 'wait_fatal_freezable' intr = wait_fatal_freezable(fc->blocked_waitq, ^ fs/fuse/dev.c:31:4: note: each undeclared identifier is reported only once for each function it appears in ret = wait_event_interruptible_exclusive(wq, \ ^ >> fs/fuse/dev.c:175:10: note: in expansion of macro 'wait_fatal_freezable' intr = wait_fatal_freezable(fc->blocked_waitq, ^ fs/fuse/dev.c:175:3: error: implicit declaration of function 'freezing' [-Werror=implicit-function-declaration] intr = wait_fatal_freezable(fc->blocked_waitq, ^ fs/fuse/dev.c:175:3: error: implicit declaration of function 'try_to_freeze' [-Werror=implicit-function-declaration] fs/fuse/dev.c: In function 'request_wait_answer': fs/fuse/dev.c:31:4: error: 'ret' undeclared (first use in this function) ret = wait_event_interruptible_exclusive(wq, \ ^ fs/fuse/dev.c:468:9: note: in expansion of macro 'wait_fatal_freezable' err = wait_fatal_freezable(req->waitq, ^ cc1: some warnings being treated as errors vim +/wait_fatal_freezable +175 fs/fuse/dev.c 25 26 #define wait_fatal_freezable(wq, condition, exclusive) \ 27 ({ \ 28 int __ret = 0; \ 29 do { \ 30 if (exclusive) \ > 31 ret = wait_event_interruptible_exclusive(wq, \ 32 condition); \ 33 else \ 34 ret = wait_event_interruptible(wq, condition); \ 35 if (!__ret || fatal_signal_pending(current)) \ 36 break; \ 37 if (!freezing(current)) \ 38 continue; \ 39 } while (try_to_freeze()); \ 40 __ret; \ 41 }) 42 43 static struct kmem_cache *fuse_req_cachep; 44 45 static struct fuse_dev *fuse_get_dev(struct file *file) 46 { 47 /* 48 * Lockless access is OK, because file->private data is set 49 * once during mount and is valid until the file is released. 50 */ 51 return ACCESS_ONCE(file->private_data); 52 } 53 54 static void fuse_request_init(struct fuse_req *req, struct page **pages, 55 struct fuse_page_desc *page_descs, 56 unsigned npages) 57 { 58 memset(req, 0, sizeof(*req)); 59 memset(pages, 0, sizeof(*pages) * npages); 60 memset(page_descs, 0, sizeof(*page_descs) * npages); 61 INIT_LIST_HEAD(&req->list); 62 INIT_LIST_HEAD(&req->intr_entry); 63 init_waitqueue_head(&req->waitq); 64 atomic_set(&req->count, 1); 65 req->pages = pages; 66 req->page_descs = page_descs; 67 req->max_pages = npages; 68 __set_bit(FR_PENDING, &req->flags); 69 } 70 71 static struct fuse_req *__fuse_request_alloc(unsigned npages, gfp_t flags) 72 { 73 struct fuse_req *req = kmem_cache_alloc(fuse_req_cachep, flags); 74 if (req) { 75 struct page **pages; 76 struct fuse_page_desc *page_descs; 77 78 if (npages <= FUSE_REQ_INLINE_PAGES) { 79 pages = req->inline_pages; 80 page_descs = req->inline_page_descs; 81 } else { 82 pages = kmalloc(sizeof(struct page *) * npages, flags); 83 page_descs = kmalloc(sizeof(struct fuse_page_desc) * 84 npages, flags); 85 } 86 87 if (!pages || !page_descs) { 88 kfree(pages); 89 kfree(page_descs); 90 kmem_cache_free(fuse_req_cachep, req); 91 return NULL; 92 } 93 94 fuse_request_init(req, pages, page_descs, npages); 95 } 96 return req; 97 } 98 99 struct fuse_req *fuse_request_alloc(unsigned npages) 100 { 101 return __fuse_request_alloc(npages, GFP_KERNEL); 102 } 103 EXPORT_SYMBOL_GPL(fuse_request_alloc); 104 105 struct fuse_req *fuse_request_alloc_nofs(unsigned npages) 106 { 107 return __fuse_request_alloc(npages, GFP_NOFS); 108 } 109 110 void fuse_request_free(struct fuse_req *req) 111 { 112 if (req->pages != req->inline_pages) { 113 kfree(req->pages); 114 kfree(req->page_descs); 115 } 116 kmem_cache_free(fuse_req_cachep, req); 117 } 118 119 static void block_sigs(sigset_t *oldset) 120 { 121 sigset_t mask; 122 123 siginitsetinv(&mask, sigmask(SIGKILL)); 124 sigprocmask(SIG_BLOCK, &mask, oldset); 125 } 126 127 static void restore_sigs(sigset_t *oldset) 128 { 129 sigprocmask(SIG_SETMASK, oldset, NULL); 130 } 131 132 void __fuse_get_request(struct fuse_req *req) 133 { 134 atomic_inc(&req->count); 135 } 136 137 /* Must be called with > 1 refcount */ 138 static void __fuse_put_request(struct fuse_req *req) 139 { 140 BUG_ON(atomic_read(&req->count) < 2); 141 atomic_dec(&req->count); 142 } 143 144 static void fuse_req_init_context(struct fuse_req *req) 145 { 146 req->in.h.uid = from_kuid_munged(&init_user_ns, current_fsuid()); 147 req->in.h.gid = from_kgid_munged(&init_user_ns, current_fsgid()); 148 req->in.h.pid = current->pid; 149 } 150 151 void fuse_set_initialized(struct fuse_conn *fc) 152 { 153 /* Make sure stores before this are seen on another CPU */ 154 smp_wmb(); 155 fc->initialized = 1; 156 } 157 158 static bool fuse_block_alloc(struct fuse_conn *fc, bool for_background) 159 { 160 return !fc->initialized || (for_background && fc->blocked); 161 } 162 163 static struct fuse_req *__fuse_get_req(struct fuse_conn *fc, unsigned npages, 164 bool for_background) 165 { 166 struct fuse_req *req; 167 sigset_t oldset; 168 int intr; 169 int err; 170 atomic_inc(&fc->num_waiting); 171 172 if (fuse_block_alloc(fc, for_background)) { 173 err = -EINTR; 174 block_sigs(&oldset); > 175 intr = wait_fatal_freezable(fc->blocked_waitq, 176 !fuse_block_alloc(fc, for_background), true); 177 restore_sigs(&oldset); 178 if (intr) --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --qMm9M+Fa2AknHoGS Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICGqIQVgAAy5jb25maWcAlDxZcxs3k+/5FSxnH5KqL7EsOSxnt/SAwWBIfJxLAIai9DJF y3TCig6vSOX499uNuYCZBvntiy12NxpXoy+g5/vvvp+xt+PL0/a4f9g+Pv4z+233vHvdHndf Zl/3j7v/mcXFLC/MTMTS/AzE6f757e/3T/NPf8w+/vzrzxc/vT58mK12r8+7xxl/ef66/+0N Wu9fnr/7/jte5Ilc1Nn80+r6n+6XutUiqxciF0ryWpcyTwvu4DvM8lbIxdJMEZylMlLMiDoW KbsbCIzMRJ0Wt7USeoDmRS2LslCmzljpgeOMDb/vi1z4kOX99YeLi+5XuTAsSoG/WItUX192 8Fgk7V+p1Ob63fvH/ef3Ty9f3h53h/f/VeUMxqREKpgW739+sAv0rmsr1U19WyicPKzW97OF XfrH2WF3fPs2rF+kipXI6yKvdebMQObS1CJf10xh55k011f9sLgqtK55kZUyFdfv3gH3DtPA aiO0me0Ps+eXI3bYNYTNYOlaKC2L/PrdT4e356t3FK5mlSmGwcAysCo19bLQBud8/e6H55fn 3Y99W33rrr6+02tZ8gkA/+cmHeBloeWmzm4qUQkaOmnSTD0TWaHuamYM48sBmSxZHqcOq0oL ECf43S8Qq0DU3ZWxewN7NTu8fT78czjunoa96YQSt1Ivi9uBMVN8idw10BgUzSJJtDDdXvOy em+2hz9mx/3TbrZ9/jI7HLfHw2z78PDy9nzcP/82dGIkX9XQoGacF1VuZL4Y+ol0XJeq4AIm DXgTxtTrK3eehumVNszoyVwVr2Z6Olfo964GnMsEftZiUwpFyZIeEdsesYlL67GC8aQpimhW 5CSRUUJYSqMYF0E+OCTYRVFHRWFIqqiSaVxHMr/kJF6umj/II4LNE9hvmZjrD3PnbC1UUZWa ZMiXgq/KQuYG9ZMplCBY49HRJcxMu+tWGV3nNFc8MwEUyJ4K4UoZh1C5MCGUhjnE9uDbedI0 dzrRoA5KJTjo6JjeIlTcxPSjdAVN11a1qdhXdYplwFgXleJWoXWs4npxLx3VAoAIAJceJL13 NTsANvcjfDH6/dHdAM7rooQzLO9FnRSqBnmH/zKWc2oTx9Qa/vA0naeuWA7KVOZF7BqtJVuL upLxh7lznMvEHVPw1I2aZaCWJcqCMwTQSBmcRTsWOHDe4HCRe7C7rTDqDkP0ugKwvss8ue1g NYt0kVZwHGHIoMdONK8jMJRWPoxcuxpfwcFxvISoclSgSBPQGcoht1ySyp1aAv1vRitsYTXP yg1fuvzKwlsUuchZmjjyiOpcuQBwCnLjAmCziNVdglVydl46QsfitdSia+OIAm6dta0ue+AT MaWk3dVBJLJIxLF/5qxCb/2zcvf69eX1afv8sJuJP3fPYG4YGB6OBmf3ehg0/TprZlRbcwMG 37Gu4D4wAz6Jsxk6ZZ4F1WkV0coBCOsEVDj6SrUCU1xkIS1iwEuMmWE1OBwykaBMZMAmgI1L ZApGkZIrsRG8E45BNUKTSNBKzgrG/GMEzhU4moscNR5HG0pwtzb+lsFCoR4umYId7HwnX32A YQPtrwojOKh+gpXtNivihqcuBcdJOztexFUKzgSIg5V3PCInse4ALHPLeMn0kjYkmsGhgqNa SmJ0BdhKOAa6goHl8dXQcYtg3IznDO4K+NgigVlIFCXwfsLrbce2Bge9WaiJAC94sf7p8/YA UckfjSx/e32B+KRxkwbXrZ1ijfStXABzX2H5PXcOHLj+ICZLoWCslCsDkivzxLUSEFCg+nDV tlU7OsNDfzHaGndtGhDaBo4BC4uJDluaKkd8sHGDJmcHdK0o0uve8gEfrffoA+vUUfrO0BiN ikGNjonjtskMBgviGdcr1POk8ffiwDSKWeIsbesaRHpBAhsnfuJHGLFQ0ty5C4hInsWgMERz ZNVE3Mrt63GPQezM/PNt5yhGoDfS2MWK12j+va1hoGfygYZcCQaBy2mKQic0Rcchg/M2UDgm xDAlKUTGOAnWcaEpBAYOsdQrkHnhmK8M3LBNrauIaAL2HTrX9ebTnOJYQctbpoTHtp9xGmdn 1kQv5BkKMJAqtLQdkyr3xub4KeDLneEvksAIBou1nn+i+TvSNm3fRJfFTD/8vsOsgWuHZdG4 3HlRuIF/C40Fs3yvn8YYntxMQ/MG2A+qAyNvYj4dumV5/e7h6//2TjfT+Qen19zODlM5ViFB sArhsOu9W7yC4bb4Uziy7a3CYC7Q2EW2rftZorNxLyiDm2WVI9pZheLhGDbrODhHAuJI1P82 oO5i+PJxe0SHqk/YNNDXl4fd4fDyapWHnwbjKdPamnUnH5PGiSSjQWhxcXnR99bz1d92D/uv +4dZ8Q2V1ME1gdhLArZXZHSU3ektSoTBhQJF3mZO+LLKV552Q+MK5xd+GrkAqlrkmBKjIiAY AJphFsdoEuo+pO12pay6WWXbh9/3z7te0Q7doZqjp4B6jjZFjA7mGTr0BYlaZ3QWYVleXVzQ ugjkZENibj5e0Grnqptt9HaY6bdv315ej+5c+ywSOGHgiIT892S3Pb69uvYogTjJiykQUGMw ids4yngK0Aw2Gixhl7uA0/eGUMyxoRV1JKHmU6bgG5fGHjfYaX390c8uNs4g7aov7xqpqE3j Y1N+AMQc3Inl1hJcLVOgd+opbZ2dUFsZ+pJgsGxn1x8vfp17ywBxqBXSlbN0PBVwMhhoO1+B gLhj8pLo7L4sihT0YE98H1W0M3Z/lcAxp1HWXywCWag4RbOxEDbftRrFOFY2xN+7h7fj9vPj zibsZzbCOzoygn5rZjAs8CLmcUyEv+u4ysp+DTGQWIJiBveQ2qaGreZKlsbzrxoESmIozmFF 5eYpmwYW+DQCZqBvBiCOEYfoCrXxfoDkLlDldAcu3x3/enn9A+KE2UuvLHtnjq/c5s1vUHFs MXSJnovvx4wINolyhAh/gSO9KNwVscBq5Gj6WPCqalBSklNpMUsB6hAvPSZ8MYUL0bTk1CZZ CohN4VQOI8ZlWgnPJ25BXScEJ9mstJN4bHQJZ5pOsAJBZ2tqBVtLGmEgsri6MYxuyq+sy7wc /67jJZ8CUWtNoYqpciQbpRwtgywXKPVgLDdjRG2qPBcpQT+A9F0OMlmspHfhZOnWRvpNq5hm mRTVBDB07/DFHajZ0vW7ACB0OYKMt9sCrSCMu7cYEthIHJoR0Du5xuuzMMVpBpEQ47b+AWpG wUsKjIvWggfB6ljAvmmjijtS/JAh/HnS4elpeBW5uZZOAXZ4cH7fPu8f3vncs/gXTd4PwObP nXnAr/YAgPMoEv8QdThrcQPnCGiafDKe8jom0wW4KPOJdMyn4jEf5MPvIpPlPDCZWqZszCUo UPMA9KxIzc/I1HwqVJ5MuHi7pm0SfpI4dGfmHVML0dJM1gZg9VyR647oHL1i6y6Zu1K4imhN rAYCPS1iIZ4a6CBD49FedV6cvZMO3QwhoV2I0D0P3j3XWvCMqRUxNzxnpSlb3ZyMDYZtDQ6d zYaDFcpKOgULpIlMjZ+q7oFw2KLqZDM31dI5B0rG4BMNnJ/aS9WX1x2afHCEjrvX0HuEgfPg LExQ8BcElytPNfuo5rb1BL65tD5BkBaOvsvxDiPPrZ/nQfG6sbkRpYlr3D5nCi4KXzV4XrOH xVg2kJX16OxdwH9AZ2+5K9odmBBaiaH23SW0qaLJBAyOHCKCmPMQh47EO2guQnNT0hiwORDg iMBis4zlMQsgkzHPHrO8urwKoKTiAUykChajgxXAgxxFssC74QCBzrPQgMoyOFbN8tDstQw1 Ms3cR/vUSnpQInoKSnYGupz5S5BjkAtxnKsTWnB4DwfsZO8RRWwsgsdbirDxjiFsvDIIM1Rj iGCkErTmAH8SRri58xo1Op4ANT45AQdwLNYuBvzEjVnGyodlwjB/z2BZq2whKHOJSG7G5Bps hIrwVUZgjxuS8bWTy7O5YvRHNtKMpn3f5I+e6RsfYpfWB40kx/RK2RviTVUYFhifEv/2d6uH TdbftLejPgzn7u1SXJXkFoXgyW08hfcys+nlw5rAjU0FHGYPL0+f98+7L7P2LRpl/jamsR0k V3u2T6C1nbvX53H7+tvuGOrKMLUAUbDvYHSVBdh2VJ3PcZrq9BA7KvKsDfhY8/I0xTI9gz8/ CMzk2GcDp8l8wScITvTkyzrRNsdnH2emmidnh5AnQc/GISrGngxBhLkGoc+M+pTCHKiA0RmC sWalaPBR2RkSXmZan6WB2ANiU2sTvCPytD0+/H7iNBq+tClLG0jQnTRE+BroFJ6nlTZBaWtp wKsEz+4MTZ5Hd0aEpjxQNdd6Z6lGipymOiHlA1EnYERQMdCRr40IQvQlT/YI6te+ejtNFFYl DYHg+Wm8Pt0ejcn5JVyKtDyz90GV1qCJnOGUBOL4xWkpTS/NaSapyBdmeZrk7HQzxs/gz0hT E097GQmCKk9CEV9PUujTp7K4zc/sS5MEPk2yvNNBZ6CjWZmzKsR6PScpTuvnlkawNGTMOwp+ TsuMPHKCoLC5+pMkhpnTE+5T5WeoFD6wPkVy0gi0JGDrTxJUV5duwqf1p7zfQLm5vvxlPoJG Es147QYcY4x3InzkKPFW9v45xbCF+wfIx53ih7gwV8TmxKwtmpqBRUCLkw1PIU7hwvMApEw8 x6DF2leMepSJLOv19EW9LP/7P8hLJZh5Vszm7j6GsgVjVBcLjuDoaDOZd9nlCbYLYSYIjEJC neCNyjiSmdBivmpMiLAJYWAITYgdmA6Fs0CMBiuhWExNFpHkGoBnSbPDzAk+55PTSJ9OLFnM OKeCQD/zA+IBcFmOg/oG3vp/Sxru+Q4uQpV9GpTAGpOOETR572/7Aa+HnGYoGrQXe3gtho0J EIyjktFgxs5/NzV8qxJo1Pq+MsSUWMjOc5+ulWK3YxBIN71/LLQTgBiG3GqEP+f/X50w94TL 0wk+atAJc+oQ9TphPj4P3YEcIdpz7ndCAgMsOgUwnxyP0BgpHHHQR227gz6ZWHvQvXu5eego zkNn0UGISs4/BnC4XwEUxoUB1DINIHDczTuMAEEWGiQlji7aTBBEwqPFBDgFlYaLpbTGnD7G c+LMzQkN47KnVYxLkZdkorS5R/Jlpb1banOjU8Q0H9gUhI1YdVdUSS2isYS1OEBgir8y02aI MpMl95DeejiYTxeX9RWJYVnh+rUuxjXXDlyGwHMSPorUHIzvQDqISZzi4LShu1+nLA9NQ4ky vSORcWjBcGw1jZpaH3d4IYZeAs2Bj1JrYBn8pEPzsIEPLyGsobCXXJzL+DCxEa7Tadsh2eX0 RpWku6Kf47SRmFPzZ6BRtKiL6N+cLo2wFN0jY/saBhOiHB9IeFVBITq9ZB8C9YaBFnmRky8T kX46ghAW+x09r2l69N6hqFh7PzD4cxcIQeEVh/An8CTVUM8X23zJ8DIeftdraquIwzEROrkA J1bjA2+vYtg+wbOyppm7QXiuUH18uCFHHIPbJMiS8ZR7Y075ZUD6NkRrZljqZfGwcIOVZSoQ Qb+Yu/yFhKespOvOymVBD32eFrelq01aQJ0vOQm0b45oDFp9P53qYpdFSSN8r8TFZEUkUyxe IbFoOLw8hYusYqK3BSDEBox7rOjhLE61lDwjR+pypRfHpfBdI4qiM4iD2AghUCp/+RisV7Yl CrTQ8ojY9jjXWIRd4McM3OotCERsZY9zknpYHbkFdw48ZoaE55wEZ/ZC3zl2RSnytb6V4JHR L9Sb3Bf1vLO7PPc1Vlamo+eICKkXuvBppiJkoeART14dLTX9dtUuvh06nNrAE6L0Ch205qnP evzoNOeafsqv7etym3G3ZaAB5mqD78Lvar9iN7pJRw+AZ8fd4TiqFrTvm1ZmdN3tPIjPwKWU 9Ks8zuhGUsV00UJEP4th4OxulG8jBtSKO5lVbZRgWVuy5m7OrcQPjAQq725lxuhqBZWsZKDi D1fmV7q+nzOZ0AhRYq6eVsB5Qs0wvW0lbXh5qcHQt0/wnbGA4PiPsTJ2Z2tdB0TjK+3+3D/s ZvHr/s+mjmr4rMr+oQVTRTNVU+3cXJuQVQVrk5WJdp+INhBQ0lXunH9t8BVJCubGrV1v2CdS ZbYIzn57wqnZuLVFoP4DuZ4YYuGVULBKxLhAZyrWk3qfeemZNt+BaKZWJyxNo1GBbSduKX46 B42v88p+OI53ul6Co67WUpP1y/3XecoKmcjRJyywvBb8LWCMn85IiJpLLI35YvfP25obXmTg PctLok/4L7f11O5pyAxtCQpabOE4YeaXrEddjTVWV1eaV2mKP+iT3hJxWM7pl0xGRKlX2edC bfWKfRxz/WmM5+quNIVt+zTGxSqKPXcKftdtLV+OoSv9Grafmm09AiqWTQcJwHZ8H+YUzn72 wq284bGCvQSNy+O104kHbqVDw5wHzeIR3Fr9QDuSdQEGvRb2QnGyH0taLvohRzQ+X2eiTSNM ZDbbHx4oodUih1Oi8YLgKl1fXFIvh+GEZXe2XNEZq8h5WugKjr3Go8YDb3s1rC+thC/HwtzU CIkSlnB2mFaeNZj61yu+mU+amd3f28NMPh+Or29P9nMRh9+3r7svs+Pr9vmArGaPWLv3BZZh /w3/7FQuw5zmdpaUCzb7un99+guazb68/PX8+LLtniR1tPL5uHucZZJbFdAo6Q6nOVibKXhd lAR0YLR8ORyDSL59/UJ1E6R/+TZUXh63x90s2z5vf9vhisx+4IXOfhxbHBxfz25Ya74MOBOb 1H46IIhkCShVJVG4i5JyBG1IJ2OvOkj61XvtRMHdagTWkYZOqgCJz+edbxwwGeMntJQTAiOV H9ZDq1HRoo889Qi06fOmi/LJoB4o8KVynfRVXXYa7fhnx3++7WY/gAz+8a/Zcftt968Zj38C of7RKYFrz7h25saXqoE5EUsHK7QL7VurqRLUqgbbHheKYOxVrfRQTj2EtJOEv9F9MHqyvGmx WIwe1/sEmmN0oe9yTm+56Q7sYbTdupTtBo/7THiDCI1W2n8J4ag1Vv628NEwGerECP47MRVV nu4Y3BT7ET4ndWPhxsulWRAWhjXfNJoMJVR2gNW6ARmnwzOLK3RsP1IlGf11lyyeik7m2MAs rrGUnSkPhMfvYgL5MIVMiT7+Mvecoq7ylxl6FlnrI9DFVIBt79RoExoyyb1PklmfF4LN6TLE meetZAFt4FKE9s52k0gnzEWIxKJ98FpzD1ziR09gRuCXY3jp4ax75UF0zkq9LHygWYKHBpoJ XGLwqZpA2h1maFUAJZTfYyaV8t1YAOK1Ajrvtnqe5oNb7TG6F8qffr/t41Xu4PUNHQN6NIEa T7sX9KfcANVEVX4UgGXBK0FLGWDxW08BGcRdmCRJ/MWyH4JwtFH/Sti9qzc8q2XzrRkPhp8K ckUHYaVVBG5uE1zuyJY7TBzCwe422mhCMMSzQ3zkxLjjeuyoyGO6oMp6jsNAxU3FUvC1/Xdl tREsm0La8jmisMQjUODXg9cdyTxIYT/eFcLiJwDWAldq9GDSocHwNGIplna5gT33r3cQYPzn AT7BeuP9xDh07TBcuHlyYKaF//oLjW6RCgpWx3c5y9zCUPtMyE002RRSYT9ZmRsFf/hBvKkC X7Gs8nptN91+q5T8hsZ6FMbkaUZ8OMamYwZ3/Ivvh8Z7cN33n9/wa776r/3x4fcZe334fX/c PeCHJBzyTpbMEnMNo5r6xsPBCpl796M+HsoxcGhCm20dJfs6YkVfibgkFajD/2vsSZobuXm9 v1+h+k5J1ZvEWi0f5sBeJNHqbXrR4kuXYitjVcaWS7Lrxf/+AWR3iwsof1WZzAgA1yZBAAQB WqQU08aCMHGE/wwSx75Uqg8f/AUnn45daDB2VEQOlk8H481GH28NsOnEMeCY5SCvuE1tLRn3 8/BLqoSVRRjTRlOVLIT1mKSO6CYKIXIPNFN8RZfDxnIJbioZGqvdxuKGqmAxzBot0KpkYUjf Rak0Jc4brVipZI6tqJJsE9Cutl8OccXdK7MhWfMH1zLMFlvDStoiMoVTwQ8Mw6U7YSMQRKNI 83NFYPe+VoHFWaZdowgYHuimLnbBp1q1pd5yqvtyY3VC4dBBCKlL9c6qiFQvgiJSL9YQ1wWO Ux/zCUQB+6Y0YOLkwH9NWl0Qdf1v58PTvlcVXqcU4vj2+yeMYg5qO2LaiwD2tHtDhyvCGLKO mM1hw1cRW2V9QDv6b3Y8kd9770eg3vfen1uqC1u9VO26LygCIhrY69vHu1NN50lW6aE4EFDP Zhjyx3kPIInwrDJuagyKQtwvLGNGm/8lUcww2JpJJPpenfenXxjO+oAxRf/ePaqPXZrSKcYB FJZVEg5iF6s2TmwBXDJM6s33/s1gdJ1m+/12MjU7f59u6csqiQ5X0rfeKBWuDJ1D+VLWtYNW EsRdL2W5FimwhYGmu3TYHTuSaPklSRKuS0fEpY4GrxlRxqSXR0dWlOmarUmR/kJTJdAlcjwb czz291HLCQB8b8q6L3Gg/3Cm3UVKuPQQSCvHpakk8vx4fHdL3xtLilWx2WwYzc+bDoAQmGF4 nRq5iHtPwLLCpwW0mUuSCD8wh9IgCXA8cu1e232gYdA3ejEfCT3CWqeL3elJ2GD5n2nPtAPB DCtxTcVP/L9wiFeNIAIBZ5fxuQyCnK2vYBkeVMz84gYRYGOX+t9Uk/uOVVPJ4SjrZc7ikLSK +8+70+4Rz4KLCb8V0Eslr8RKOYRa1UDEMIlEaJFCpWwJFG+btQ0DugsYQ10FmoMORpm6m9ZZ udXMclE4Z/5WgJ1TwyJ0jpK3kLnjQqOeF7S0J54/YhhASj4ArigjzV0k7XC1BJBtcdyfDrtf 1CnY9BBk5RurVHJ8/SYQZ1lcHOPEId3UUYFsgE/8r81E4fvJxhGmXlI0y/G+ZHOs8L8g/ZLM odzwLOa1TD5BS8ewIK4ExM6HdxOaj8F+a+4G6G/qw5/M/kh84FOzyx3pEIrM4aaROVSRhe7X ISNYZoUtzgBQF1MJd7p25ZaZIP+8VPf46yAvpuyhYE1+JGJPL8XLa1Lo7WiiQIaao8rPM90N pGu+SZZzPKk9kNgyg84dH/8hRgzD6I+nU6hdWqFUObNRD1CCSlwxdhSBc/f0JAIVw4YRrZ3/ 0OJKQr9dLhlr2ucyS9cYcmflyBshsCBEuJQbgS8qOJxpK95i7czssQjzmNHq7xrd1YPUlr/i j1/vh78/Xh9FsOZGYiYYTzwLrINRQ4YbUP6KOsqYQ35elBhDueD+0FnHMowzR5BHRMflZHh3 60QX8fiG/iTM24xvbq73H/MGOCYW0SWvWTwcjjd1WfgsoPe4IIwdDk95OK8i83bjUjQMOBPf nTpo56fd2/Ph0dojzM96v7GPp8Ox5x+78La/W37Ognh22r3se399/P03HNiBeWDPtAQEnfMM dIuSRmdeG5NZ8cLxMGaBEeYKgIFjtgAlrpdWYUGOXCX04Q/o6BH6kl+j8dNsC92mxdGGhsds HnoRv1pRjloU34TozpfU+H7fRY2OPV91DWm+6hrSfNm1GSxhPk/qEAQeh0Lcdil1pNFB/GrO XFwN0DHz0UrgLI5W6QhTizkrQBuDdJhyVlLySIy0pEKyakv1uRW9CbYEFVW4fpwj7Qf9ISgo Ljz34nq+KUdjR6hiIMHouZWDreJYr5oJcbbwqqBYhA6GDxSsSutl/+7G2cuCA1+kG+i+RR35 wdVdBN9cPPC2pfjj6/n4SzihvP3afTbTbJ+60t/GEsU1MAbjrmKQ6Kc3ND5P18X3wbjjGTno FtJjSan5MnYbDbINpgDBG8mY5fQZSRXL09IVxzBK54r6hr/wLrnawDpOaATMpZohSMH4UVUO BlruowKvgmyFEviqNcULrnmewU90fAaxeSucVzHSA9F/IMP3Xhfth6im8S60VQ2MhA6yD3bH uszAgmwE070wq2N+XlFvEQQODQtWgQrDHDhKeGG0VC/KEOaDNJNvTRiHX1uzbl8cno66/a2w jZplYMbmaZJzh88QkoQxcFHa51Ggo9BPqScoAvmA8YGtbxB73KFTCvwsp3UXREJ9bmONINi6 h7IG3Sul9TjR8DZ3JwdCAo73RU5suebJglE7S3Y8wbj4pXAf0MpFvpB2nfVGYZKuUke1sOc4 tTJbeB3cuytuaeBHRk9LR+JYAYjPq9iLwowFg2tU87vRzTX8Go6G6OpKA6GA+8KW5pgLcX9T pLNS3y7AvoB12OtQXGJcX0xwiIS0IQ6xGUtQ2YjSK4s5w9dH24Q+0wQB7GU4s9z4iOGNcGLE 5dZpcqdzPqILxq8N49odmsBnYRg4He8ERYnfDhirKxUWF7beLKrc+Nyl/+PGREMm6Ey0fCNq xyue+3R7tYmSr2idRCBBUAwdj38EfpFXRSkfoFxhML7D7oLYDU9idwfQ4+Zq9x+2AZw3V9iT 9BauF46kaeL8iUi3z6rw6nTh8xolUZASpFytHKWAb4QqHdglylr4mh3fMHHLGx2AUc4FCM+e P8+YN7gX7T7RjmqLuNhatqAFnSTNBH7jh5y+k0LsnAUuVxtEV1HG8Q0QTbCm5zSOHSownJpO I34SroGpB3RLMkccly/2iE+Vl36t5ahCgIhyqIMWfpkWWxrYPKz4/p/T++PNf1QCzJcHC0Ev 1QCNUheNvvRtS5v4dIAhr++wBE/KWeNS+WnBm+Q4Jth4RaHC64qHmKuGVlBEF/OVlau4s2Bi T41liZZKBxiNao5SXSofHWf1JCj6g+nkameBZNynLTkqyZg2JCkkk+m4nrGYO0xpCuXtiL5O uZAMRjcO83FDUpTL/m3JpleJ4tG0/GL0SDKkn+eqJOO76yRFPBl8MSjvx2h6c50kz8a+w6jW kqyGNwP7MuL4+g0jB+qLwSjZ6CSt/RZVkGL/iq8EiPUVxAw0OiUHyUW/Qo8JdD6k2Uq1CXiR GT6WF/7msNaJnDnyVsAORrU6nKAXZg/jw+PpeD7+/d5bfL7tT99WvZ8f+/M7eQVTMtMdXb9l LN4Or8L2TZliGY+8lJZ6eCoTcdFmxHz/cnzf42MMs+/528v5p7XjU7/3WyFyWPfS157/fHj7 vXduU2cZLza803H39Hh86RVHcv+DGLTh7nc30BaIKSQqQx/Z1Sx3eDKFG3Q3dB1GqcNEwB3f PVtTKh3L4xpkcAwnVyf5975STybijDtOT2HnV1wbaWtFbKvleOCrCcQ74vaVoEsiwKuObMPq wTSJ8QqJPqU1KpABaCbg+XG9TBMmKNwtog7nO7xdYt8Wh9Qkui/H18P7kfQlypm98djr0+l4 eFLJGLrZcvfLM8dyK+0LPfHWSrOcU5nGBJU1pPbws+7BxbubBcsD8b60TV1P3JvLLmD+KfnR VdN8gfuaac9JYdWD1kmvOsANDdwFM6pVwUMA0EkD02xjnUYbSA1fuOAbkM9oEaOlKkK/cvqe C6IwEe8CnAkikcZ1c3nvBVrf8LeTGF8Ve8Yr6DzkmAe6qPWnLB1YRNV2bOKGRHxLZ5oZpYF6 g+9vqFFY7d9/Ob/3X83t/exa/BRR/HqGK7NPCLECumvY6z1GCocRGlGwE+gFsLk6kPmsMFd8 g8EcHAM5BgNSpwPfI8DdoxAlynPXkKQSHcG4C8sopTuk0jl2olfKBUFzJx7ZQ7rwmYG7JM4T o8yv6qdRNzlKA7NC39sSJpMGOx5FiuTPiNeca0SahxIzXNJ4qPSy0y+TPyu628EGEpgALgHi 8yj1MZNOxt3Vf3ahPNDtPBfRRpXhZjmAG0Jcf663gJLCxVckFnM1qOvlB6bZW9FCssRRblai Lr9UPhOrynRWjLSFPBO8WQH46P93WdAgnoJkKynk0bJroqMri8V6RiXR4o3nn8EqEMeOderw Ir2bTG604+I+jbj6tuEBiFR8Fcy03uLvJOr8TYK0+HPGyj+Tkm5yhulClOIyv7IKWZkk+PsS 4CoIMdXj99HwlsLz1F+gb275/T+H83E6Hd9966sBHxTSqpzRilxSWttSSgDn/cfTUSSQtIZ1 eXurApbNeyUVhk4I6pIQQJG9Mk4TXqqPZAXKX/AoyEPFYIWRLtSmDENDG4SjG4+MwXGdn0sa 60y72NeqOew9T3SUWOnyr5n+IdEFU/APtLGEsdLFVARFtw4lFlgT32JmRt2hYD40CHSCohDK l+JgaJSH32iPNDpwgX4xXV7o5tyeG3WlFJxA5Mh90KbUjhc/KlYsKIhk1VZuVh0tQ/UR7XRk AV55ZU2eY7KihkJcMdCSN0WJj0mNRAN2AZdQ1RE8aObBDhw9jEhoSg5g83C9FyPx6Bbf3mJ4 juu0YeyFQUCniu5mvgl6Jj+OjPkxVOwQG9eyl8nk9T0lIbWHy0lYsuv+xOMYtyQIN+rzkDQ2 13xmAH4km5ENmlj7sgG65ba8aYtWHosyJTN3YzZ4/SixWpYQ+WaVtu1Q/Wr5eOMaSLKgRLal /V4NjN9D7a2agJgsQUVqEbJBJF/r+pykqftE8RydpJJZYZKjaNB4NAcJGdysIZLRj5BIG0Kg 9SiwRxQQQzLwI6LZuXCCztCLXFlxKCaaP3FWtEltsvSpDwPzzDd/13M1dUADaya0nbMM36ki Yb3MvbEWvEDSuxesiMNF81uur0D8LZQrenEL9DpkyzpbWwm8dKoq85njfaPAuw9fgb4yGIH+ L1ooYocVKPEzx2ykATMPaRezSrSAelHRClqaJKagW1GuBlFOL9hhbgHzQmNuxw7MdHzjxAyc GHdtrh5MJ852Jn0nxtmDydCJGTkxzl5PJk7MnQNzN3SVuXPO6N3QNZ67kaud6a0xHtAvcHXU U0eB/sDZPqCMqWaFzzldf19fZC14QFMPabCj72MaPKHBtzT4ztFvR1f6jr70jc4sUz6tcwJW 6TCM9gsHuRonoAX7YaQnhOngoIhXajCNDpOnrORkXducRxFV25yFNByU8aUN5tArlgQEIqm0 XEjq2MgulVW+5Fr+QUCgeniBBJEegSUiAqwIJXG5P73uf/Wed4//yEiaAvp2Ory+/yPuVp9e 9uef1B2XsF/IHJ+UKCh0GjTFzEVgn467jloPz5c3UEy/vR9e9r3H5/3jP2fR3KOEn5QWW2Uk wZd2wlQClWWgF7BSlR8bfFwVTT5CxVyDzpeipHxfqtjcc0xpX8Qg3MUOb4MEn58i3ksjmoSy t7UyrAjxX3QdMsoUMnQfqp4iej8tuxtEcgrSJKJcEoRjFoqq+Q/VPNYBO3OCnK7vN//2zU7Z kSnlXeL+5Xj67AX7vz5+/jSirgruFm5K9KtzmNIFSZZizB5HBBRp3RT3YyLuUmeiwRZ70fHx n483uUgWu9ef+lqEneLDlNQpbTXU8PWKRRWMXEc2uWoBfJl4jEDstq7LDmO5ZRiaebJF77DP lwnr/XZurlDP/9t7+Xjf/7uHf+zfH//44w8lrpkI+ybrhj+rMPfSQvVttjHyutSvHN8mT6FC RJOLSzwNRzR+nMTlUAUqUYkRDEmnjfzjVWzj0g7Hy8o05v5kBIs4mpmFWxpxW45Rjyai/gsX w1+whTYicKkOlQm9Wo9+A7kEbJluDKhgWDMDKBNoGcCqUiMwCVCOwrJ462t2T8sEK0DRMjYr LITbd7Y1W8/M/nRxX40KREgmaw7gzPLRDVcPhcbQNd/h0ZQL/pGUcGB4BQYWT0XgU5r1IQVt MwL9DxYOo96JPn6cDu+fNv8W3VTt35dgXYDCr+mwTzVlqbtDadMPA2sO4HcdYGaWULoRux7X yjusOoDjSlyNw6pyPJm5et/VIukzADc03reGCfQUlwKuBBGb12eaAbXlzZd+Md+NxdDADWqT 5vLWRNkJclvpcbIkDHisry5FCd2kuQnKfpgQuUvh7E2VeOoycm13k3z6fHs/wkF+2veOp97z /tebCJmpEcPo5yzjyhtsFTyw4XCOmg0KoE3qRUufZws1dJaJsQuJXUwBbdJcDa5+gZGEndRj dd3ZE+bq/TLLbOqlGl+mbbdgFixYWKDQJ4AgcsI5nVvtNHC7A1VBdLWhrgNeCJkMuVVhFZ3P +oNpXEVWcWRIJNBuHg1mMnGxiRF/2WsmdsBZVS5CNfBNA28OJOnq8fH+vIej7nGHsbfC10dc 6eiT8X+H9+ceO5+PjweBCnbvO2vF+2rc93YKCJi/YPDf4CZLo21/eDO2CIrwB7d2HwaiZSA1 rdrOesJX6+X4pLp+tE149kD90v6OvprXqmvHs2BRvrZgGdXIhqgQWPU6Z11S5cXu/OzqtpY/ st2kFHBDNb6SlFKmPPwEYcVuIfeHA189pVQEed3Rosv+TcBn9iLX5YN2clzfNg5GBIyg4/C5 QauKuT3OPA5gY5Fg1QZ0AQ/GEwo8HNjUIr0OAaSqAPC4P6DAQ3ubzfP+nU27zmQN8mA5vD1r TpvdMWDzFpZUHrfXGog/9vzCwbmeceIrtYjWBmxtD9Aqo4jb3BajMLoLFaX9PRFqz2AQ2kOY GYFM2120YA/EEVmwqGDEd2yZDMFcQqKWMM+0JDgdc7THXq5TcjIb+GVaOjPAaX8+a/kRu9Eb UdFabvOQWrDpyF48eMlGwBYdE8hBlzy+9JKPl7/2J5lRwsjU2K0mjOScUSd/kHuotCYVjRHc yVycEkNJHAKDnJhCWC3cc3yHGaInpyrOKSdzjTKWC1GTrKnDFi5BpKOg5qNDNhKbyUgXdCAh kC5jfLYs1Zka08fZ3iH70zu6+cIRexYR4M6Hn687EfNSGJAM1dPjCcu3jdZnq+aHv06702fv dPwAnVV7ECFEXFX0BR0Rs33kepgrIdYLfeqCp66eGu9YUC0SkLrrGYbm172JVJIoTBxYjERY lVy9teg8b33euWMaKCdYXWI+Jo8rtf3tq4+JkcI+36CWsqr1UsOBfngC4Jrq3xBE3A+97ZQo KjH0K4eGhOVr5rhtlRSeI3YBYG+JPkXca8QAbfX6tPMNqwJeymWAvgOspJ41Kw7EGAzo+pwA K+vCJ17mFqHSPUGHo4MBmqgEp/zUoBb/BMZJ1IxQpebLdejDiKQGBkrDyVo2Dwg2f9eb6cSC Ca/tzKblbDKygCyPKVi5qGLPQqCRy67X8+8tmG5/ugyonj9wZRspCA8QAxITPcSMRGweHPSp A64MvwxBhg5xvVGweqkbyjq4F5PgWaHAWVGkPmcY5BmmMmeKdyO+KgROEipzHvxQA+lGeBls s5nW/KesqrxqfH4ubCN6wCh62u5P88CxhYKAtlDy/IeIhEnZxDOObjhdgyk+cQ3nHPitcmzO 0qRUHlZefPAATnqiIv3036lyzSAhfS1kcIE2ViN8ygWVpWmkUndvOAEnFDqqWGOz/Pyf/wcc mtW46bEAAA== --qMm9M+Fa2AknHoGS--