From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id QC6aGvsV/WXxTwEAe85BDQ:P1 (envelope-from ) for ; Fri, 22 Mar 2024 06:24:11 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id QC6aGvsV/WXxTwEAe85BDQ (envelope-from ) for ; Fri, 22 Mar 2024 06:24:11 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20230601 header.b=W0kOo0Fx; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1711085051; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=vfM0agrVczKai0pdvE09iNM4MM123ZWJUUvRDE+OOug=; b=jWqFgHiZQccCcsP+dET0DsS+wg+Xxa0cd2kuEa50Ru5Hi4h1i9eOeLaZ6NiAv65dtI6OUH KkGKvxEgJ2UmMt+TnG9xybgY3LvoQXYFCbTgfz/J4kihOupfpj6KfluxWrJhPgsx3RZKgW m0Xr2oO3bNy0u8oSMZJLGhZLIJpBLd5YekY6tYALG/3dtDaRc+cFvmCbD5FquODmMai623 1qMyvaoFxg7g3Afz0aST9n/hj0tNmb67FqK8e88y7Er+ZH7mghrfQKulOolEccu59t8BJz o34yhQisJNnANjwJzni+bSu+19vnpwmUsyUOxQAkUriBQFTRBDBZvOd3GDbQoA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20230601 header.b=W0kOo0Fx; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1711085051; a=rsa-sha256; cv=none; b=ocB3nzXgV6GFqjO8n1VSAlVnGxAeffKR4nNu0pRQMXMCV5Fu73mlpY8aw6S/cQibxDJrzL MWYXk3Fy/eSsJDPpfCyJ5CLG9/Hicwwn1KtKljSJRVJzwTa7agpEHAdPuEueFKfW0R1xsD JJH8zLRzKuO2GNWzJTQngZ2bm+CbJvYs49ZZTofcGtRX9yUGsrOqZR8h7jqrkPkND0gepf fZybVzratn8qhTfZ01hLU93Mv/hNFcWHxCuRhYRmKq6b83GERzL6ScMvTh7TwENJH1FrJr eNvT2Sd/UIMP1tCnjndvfZKDVem4i6jCxGVbkDEclxAm3d8A8P+wmUyqFfwphg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id DA2BE1D417 for ; Fri, 22 Mar 2024 06:24:10 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rnXNF-0004GD-8P; Fri, 22 Mar 2024 01:23:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnXND-0004FT-KX; Fri, 22 Mar 2024 01:23:23 -0400 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rnXNA-0002Xn-Hr; Fri, 22 Mar 2024 01:23:23 -0400 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-513e6778112so1637387e87.1; Thu, 21 Mar 2024 22:23:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711084997; x=1711689797; darn=gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lKxMSWUbsolIJHrW0HllNmurcgU2Do7Lae7zpPzLt84=; b=W0kOo0FxA1bAG31UFrcxmARMADdNAvTJjmy2hW8wlmfS9g68Y+hFApjgE40g9W2cnc ZUaMnvuQS0y33skL+bU3ya8t1y4bggBtMydNXGmVD/go6Q0dH8dqrOwaeOKwePpPFgqw iWvdiVutSZ00PYVCNJSgaI8QuIQ6XhL8ijHjL1/699/uBTL1j6abxvbd2M6wJE58mMdZ Y1vlxVfESQg2EsO/7ReSB47GhCz3/SnXRF1StM7Y0z3JOkUoprnRzx5h748Mdq4NHkM7 9MPAWGB5deLQXLyehm3vcyeKVs358l4jsgq2knsyPY+tNhkMhR6Iy9JF1FSLspeBidDX 09xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711084997; x=1711689797; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lKxMSWUbsolIJHrW0HllNmurcgU2Do7Lae7zpPzLt84=; b=OgT2SIErOyMflCNbvWve4G068RqOzFnnmXMf633TS+CuuuvqdzN+Ok8kqH9GXORqTz v77ds0hfDZv6NMv42/rmQ23impJt/dH0CC5nzfn2vUA9mN68eW6EOQdWGiLELIx2n7IP 0QsSjRI617H37+CiFnv+kL/ughey07MJOQHk46uClDhQr/yohkn0txJT5iO6muo2Uu8M FdpXfp4DPR7F1hXmwb5ppgcEIKOI3A6lbPAu1hcx6fgHN+BEaDj+embcMI3nkpy9qEXu VHpQVz6ADTOrZR/GvwqeRQJC+Kf/H3qgC7+1qW/p4apdkdPYHyKM3c+UfnHsSlJO4gcU 1erA== X-Gm-Message-State: AOJu0YzMKgZUUkTZEUCgzHifImRsafA/kWS6OQ0+kMtBBM5vNSf8IFkQ DHYc0zAJIHOPU4f4qFH0TuQcJGoA6OrHK8awVi5h62rm/4wi4ykjWJPvYHE6BSelr4/LGP1BlA7 4uuXQ3Jsc6fM+jRhRcr04j0kmy4rnp42AIko= X-Google-Smtp-Source: AGHT+IHpqo4hpwAAxxz2S4YnwpxNCBBbJReCOVOo5+rnfm3mIifxhzGubAKh9MHpisZJB13p423o2VV8uhj1vZmd/KQ= X-Received: by 2002:ac2:498c:0:b0:513:d4fb:fa76 with SMTP id f12-20020ac2498c000000b00513d4fbfa76mr355061lfl.3.1711084996671; Thu, 21 Mar 2024 22:23:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jake Date: Fri, 22 Mar 2024 05:23:05 +0000 Message-ID: Subject: Re: Multiple versions of mesa libraries in cmake runtime search path To: help-guix@gnu.org Cc: guix-science@gnu.org Received-SPF: pass client-ip=2a00:1450:4864:20::133; envelope-from=jforst.mailman@gmail.com; helo=mail-lf1-x133.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -3.73 X-Spam-Score: -3.73 X-Migadu-Queue-Id: DA2BE1D417 X-Migadu-Scanner: mx12.migadu.com X-TUID: ctcZbGVrqBdq If the problem is that qtbase-5 is propagating a different mesa than the one we can install (i.e. a different /gnu/store entry), let's try installing qtbase-5 and using its propagated mesa instead of installing mesa ourselves. #+begin_src sh guix shell geant4-vis cmake make gcc-toolchain qtbase@5 #+end_src Alas, we still have 2 different mesa versions: #+begin_example CMake Warning at CMakeLists.txt:35 (add_executable): Cannot generate a safe runtime search path for target exampleA1 because files in some directories may conflict with libraries in implicit directories: runtime library [libEGL.so.1] in /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib may be hidden by files in: /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib runtime library [libGL.so.1] in /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib may be hidden by files in: /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib Some of these libraries may not be found correctly. #+end_example The installed qtbase-5 propagates the same mesa as the one we can install: /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib/libEGL.so -> /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libEGL.so So then, where is this other mesa coming from (2rzdlwb...), if not qtbase-5= ? I've included possibly relevant lines from the generated CMakeCache.txt #+begin_example //Path to a file. OPENGL_EGL_INCLUDE_DIR:PATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ include //Path to a file. OPENGL_GLX_INCLUDE_DIR:PATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ include //Path to a file. OPENGL_INCLUDE_DIR:PATH=3D/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-= 23.3.2/ include //Path to a library. OPENGL_egl_LIBRARY:FILEPATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ lib/libEGL.so //Path to a library. OPENGL_gl_LIBRARY:FILEPATH=3D/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-me= sa-23.3 .2/lib/libGL.so #+end_example Cheers Jake On Thu, Mar 14, 2024 at 3:25=E2=80=AFAM Jake wro= te: > Hello > > In short, I have the mesa package installed and another package I > installed appears to have a different mesa in /gnu/store/ as a runtime > dependency. > As a result, cmake is unable to generate a safe runtime search path, > because there are 2 different libGL.so.1 and libEGL.so.1 files in the pat= h, > one from the mesa I installed and another from the other mesa that was > brought in as a runtime dependency. > > Here is the cmake warning: > > #+begin_src sh > > CMake Warning at CMakeLists.txt:35 (add_executable): > Cannot generate a safe runtime search path for target exampleA1 becau= se > files in some directories may conflict with libraries in implicit > directories: > > runtime library [libEGL.so.1] in /home/jake/.guix-profile/lib may b= e > hidden by files in: > /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib > runtime library [libGL.so.1] in /home/jake/.guix-profile/lib may be > hidden by files in: > /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib > > Some of these libraries may not be found correctly. > > #+end_src > > I think the guix package definition below is somewhere introducing the > additional mesa at /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.= 2. > The input clhep-2.4.6.2 and native inputs are omitted for brevity because > I don't think they're relevant, but the full package definition and input= s > can be found at > https://github.com/jakeforster/guix-channel/blob/master/jforst/packages/g= eant4.scm > > #+begin_src scheme > > (define-public geant4-vis-11-1-1 > (package > (name "geant4-vis") > (version "11.1.1") > (source > (origin > (method git-fetch) > (uri (git-reference > (url "https://gitlab.cern.ch/geant4/geant4") > (commit (string-append "v" version)))) > (file-name (git-file-name name version)) > (sha256 > (base32 > "141fhmh0w8sbp6cckccf3dswn596ds4vgqwc3gz6i53ypyxmv2fw")))) > (build-system cmake-build-system) > (inputs (list coreutils > gcc-toolchain > xerces-c > expat > clhep-2.4.6.2 > python-2 > python-3.10 > perl > tcsh > qtbase-5 > libxmu > libxt)) > (arguments > `(#:configure-flags (let* ((out (assoc-ref %outputs "out")) > (qt-path (string-append (assoc-ref > %build-inputs > "qtbase") > > "/lib/cmake/Qt5"))) > (list (string-append > "-DCMAKE_INSTALL_PREFIX=3D" out) > (string-append "-DCMAKE_PREFIX_PATH=3D= " > qt-path) > "-DCMAKE_INSTALL_LIBDIR=3Dlib" > "-DGEANT4_BUILD_MULTITHREADED=3DON" > "-DGEANT4_ENABLE_TESTING=3DOFF" > "-DGEANT4_INSTALL_DATA=3DOFF" > "-DGEANT4_USE_GDML=3DON" ;xerces-c is > needed for GDML > "-DGEANT4_USE_SYSTEM_CLHEP=3DON" > "-DGEANT4_USE_SYSTEM_EXPAT=3DON" > "-DGEANT4_USE_OPENGL_X11=3DON" > "-DGEANT4_USE_QT=3DON" > (let ((datadir (string-append out > "/share/geant4/data"))= ) > (string-append > "-DGEANT4_INSTALL_DATADIR=3D" > datadir > "/share/geant4/data")))) > #:phases (modify-phases %standard-phases > (add-after 'install 'install-data > (lambda* (#:key inputs outputs #:allow-other-keys) > (let ((G4NDL (assoc-ref inputs "G4NDL")) > (G4EMLOW (assoc-ref inputs "G4EMLOW")) > (G4PhotonEvaporation (assoc-ref inputs > "G4PhotonEvaporation"= )) > (G4RadioactiveDecay (assoc-ref inputs > "G4RadioactiveDecay")) > (G4PARTICLEXS (assoc-ref inputs > "G4PARTICLEXS")) > (G4PII (assoc-ref inputs "G4PII")) > (G4RealSurface (assoc-ref inputs > "G4RealSurface")) > (G4SAIDDATA (assoc-ref inputs "G4SAIDDATA")= ) > (G4ABLA (assoc-ref inputs "G4ABLA")) > (G4INCL (assoc-ref inputs "G4INCL")) > (G4ENSDFSTATE (assoc-ref inputs > "G4ENSDFSTATE")) > (G4TENDL (assoc-ref inputs "G4TENDL")) > (datadir (string-append (assoc-ref outputs > "out") > > "/share/geant4/data"))) > (display (list "Data archives:" > G4NDL > G4EMLOW > G4PhotonEvaporation > G4RadioactiveDecay > G4PARTICLEXS > G4PII > G4RealSurface > G4SAIDDATA > G4ABLA > G4INCL > G4ENSDFSTATE)) > (newline) > (mkdir-p datadir) > (invoke "tar" "xvf" G4NDL "-C" datadir) > (invoke "tar" "xvf" G4EMLOW "-C" datadir) > (invoke "tar" "xvf" G4PhotonEvaporation "-C" > datadir) > (invoke "tar" "xvf" G4RadioactiveDecay "-C" > datadir) > (invoke "tar" "xvf" G4PARTICLEXS "-C" datadir) > (invoke "tar" "xvf" G4PII "-C" datadir) > (invoke "tar" "xvf" G4RealSurface "-C" datadir) > (invoke "tar" "xvf" G4SAIDDATA "-C" datadir) > (invoke "tar" "xvf" G4ABLA "-C" datadir) > (invoke "tar" "xvf" G4INCL "-C" datadir) > (invoke "tar" "xvf" G4ENSDFSTATE "-C" datadir) > (invoke "tar" "xvf" G4TENDL "-C" datadir))))) > ;; no tests in Makefile > #:tests? #f)) > (native-inputs `(("G4NDL" ,g4ndl-4.7) > ("G4EMLOW" ,g4emlow-8.2) > ("G4PhotonEvaporation" ,photon-evaporation-5.7) > ("G4RadioactiveDecay" ,radioactive-decay-5.6) > ("G4PARTICLEXS" ,g4particlexs-4.0) > ("G4PII" ,g4pii-1.3) > ("G4RealSurface" ,real-surface-2.2) > ("G4SAIDDATA" ,g4saiddata-2.0) > ("G4ABLA" ,g4abla-3.1) > ("G4INCL" ,g4incl-1.0) > ("G4ENSDFSTATE" ,g4ensdfstate-2.3) > ("G4TENDL" ,g4tendl-1.4))) > (home-page "https://geant4.web.cern.ch") > (synopsis "Monte Carlo particle track simulations") > (description > "Geant4 is a toolkit for the simulation of the passage of particle= s > through matter. Its areas of application include high energy, > nuclear and accelerator physics, as well as studies > in medical and space science. > > This package supports visualisation with OpenGL and Qt.") > (license (license:non-copyleft > "https://geant4.web.cern.ch/download/license")))) > > #+end_src > > Steps to reproduce the cmake warning given above: > > #+begin_src sh > > git clone https://github.com/jakeforster/guix-channel.git > guix shell -L ./guix-channel geant4-vis cmake make gcc-toolchain mesa > > # copy an example app > INSTALL_DIR=3D$(guix build geant4-vis) > cp -rf $INSTALL_DIR/share/Geant4/examples/basic/B1 . > > # the store is read only > chmod -R 751 B1/ > > mkdir B1/build > cd B1/build > cmake .. > > #+end_src > > I have also reproduced the warning using a guix shell -C --pure. There's > just some extra hassle with making the build dir first and sharing the B1 > directory containing the CMakeLists.txt file. > > If you use your profile instead of a shell, you can confirm the > libEGL.so.1 and libGL.so.1 libraries in ~/.guix-profile/lib/ point to the > same mesa in /gnu/store/ that is installed with the following: > > #+begin_src sh > > $ guix package -I | grep mesa > mesa 23.3.2 out > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2 > > $ ls -l ~/.guix-profile/lib/ | grep libEGL.so.1 > lrwxrwxrwx 1 root root 71 Jan 1 1970 libEGL.so.1 -> > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libEGL.so.1 > > $ ls -l ~/.guix-profile/lib/ | grep libGL.so.1 > lrwxrwxrwx 1 root root 70 Jan 1 1970 libGL.so.1 -> > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libGL.so.1 > > #+end_src > > So I'm guessing during the installation of geant4-vis, something is > bringing in a different mesa from the store > (/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2) into the path a= s > a runtime dependency. > I note that qtbase-5 has mesa as a propagated input, so perhaps it's that= . > But it's not clear to me why the mesa propagated for qtbase-5 would be > different (i.e. has a different /gnu/store/ entry) from the mesa that I > install in my profile or shell. > Any suggestions for how to resolve this would be much appreciated. > > Thanks! > > Jake > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id OMhWA/SB/WX2RwEA62LTzQ:P1 (envelope-from ) for ; Fri, 22 Mar 2024 14:04:52 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id OMhWA/SB/WX2RwEA62LTzQ (envelope-from ) for ; Fri, 22 Mar 2024 14:04:52 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=W0kOo0Fx; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-science-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-science-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1711112691; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=lKxMSWUbsolIJHrW0HllNmurcgU2Do7Lae7zpPzLt84=; b=O+b/PE5dzMYao1qG5uHx5B58uktoWGTKlaXqHoKpLMQT8fgGKe6WnOs/8u/h2vmx7rso8H Hmeb24qCITZtsfXvNpBIBgKNtR02Rh+ZAoQqi4GiyAVA471VZWqNRGr6E8yddtIbFerhwo JQC4A/Zf0IGjIp0N/R9VVL6yunJrrQ7ztw1SEAzg6oGlVSRlrBXw3HfFUgKdkMU8qI94IZ jnJc4sCgi6Kj0wV9K52V2UzpvC4Iutgcp0Cv2kUbtNOYDOF2tOmZ7xVKSTKuKJ6ImpQmVM VS2TSDQzXDUHAua2ZH8+Kfs+Iw0oZU5F5dCdQX8yYUTRLywCwnNO04Ge3dkIfw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=W0kOo0Fx; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-science-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-science-bounces+larch=yhetil.org@gnu.org" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1711112691; a=rsa-sha256; cv=none; b=qudIRt9q5IPIsgE95siUkCJJeIcNLWhfQKIaL6rgkyYeMrCAPUiN7C9r3X6SBdM+OFn0k8 m3KYF/VOxgU1ui98OAJ7RZO0wD6FZkJNZSMHiNA709hsjtcUiiP1/ZHKvcZAX2kv09wrXI 07vS0dqVhggB20dVjfA1PnFSapTu79opgC1Z7mROyagbUqhs6C8a5cVo7Mt5p/6jfA57cx t7sTAyPoGrRZ2gHMEPPVnMMs6CiIsKd0A73SHW3EaMzUuwryth8iDTHxhGb3OtS00sDp0C a6ZqTIQvk78OBf74rbC3MKAPC0TE2L6aFCXiUpQ9mqpuz69wzDHJIZCAwjZ93w== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6A6173F35F for ; Fri, 22 Mar 2024 14:04:51 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rneZW-0001Sr-7D; Fri, 22 Mar 2024 09:04:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnXND-0004FT-KX; Fri, 22 Mar 2024 01:23:23 -0400 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rnXNA-0002Xn-Hr; Fri, 22 Mar 2024 01:23:23 -0400 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-513e6778112so1637387e87.1; Thu, 21 Mar 2024 22:23:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711084997; x=1711689797; darn=gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lKxMSWUbsolIJHrW0HllNmurcgU2Do7Lae7zpPzLt84=; b=W0kOo0FxA1bAG31UFrcxmARMADdNAvTJjmy2hW8wlmfS9g68Y+hFApjgE40g9W2cnc ZUaMnvuQS0y33skL+bU3ya8t1y4bggBtMydNXGmVD/go6Q0dH8dqrOwaeOKwePpPFgqw iWvdiVutSZ00PYVCNJSgaI8QuIQ6XhL8ijHjL1/699/uBTL1j6abxvbd2M6wJE58mMdZ Y1vlxVfESQg2EsO/7ReSB47GhCz3/SnXRF1StM7Y0z3JOkUoprnRzx5h748Mdq4NHkM7 9MPAWGB5deLQXLyehm3vcyeKVs358l4jsgq2knsyPY+tNhkMhR6Iy9JF1FSLspeBidDX 09xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711084997; x=1711689797; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lKxMSWUbsolIJHrW0HllNmurcgU2Do7Lae7zpPzLt84=; b=OgT2SIErOyMflCNbvWve4G068RqOzFnnmXMf633TS+CuuuvqdzN+Ok8kqH9GXORqTz v77ds0hfDZv6NMv42/rmQ23impJt/dH0CC5nzfn2vUA9mN68eW6EOQdWGiLELIx2n7IP 0QsSjRI617H37+CiFnv+kL/ughey07MJOQHk46uClDhQr/yohkn0txJT5iO6muo2Uu8M FdpXfp4DPR7F1hXmwb5ppgcEIKOI3A6lbPAu1hcx6fgHN+BEaDj+embcMI3nkpy9qEXu VHpQVz6ADTOrZR/GvwqeRQJC+Kf/H3qgC7+1qW/p4apdkdPYHyKM3c+UfnHsSlJO4gcU 1erA== X-Gm-Message-State: AOJu0YzMKgZUUkTZEUCgzHifImRsafA/kWS6OQ0+kMtBBM5vNSf8IFkQ DHYc0zAJIHOPU4f4qFH0TuQcJGoA6OrHK8awVi5h62rm/4wi4ykjWJPvYHE6BSelr4/LGP1BlA7 4uuXQ3Jsc6fM+jRhRcr04j0kmy4rnp42AIko= X-Google-Smtp-Source: AGHT+IHpqo4hpwAAxxz2S4YnwpxNCBBbJReCOVOo5+rnfm3mIifxhzGubAKh9MHpisZJB13p423o2VV8uhj1vZmd/KQ= X-Received: by 2002:ac2:498c:0:b0:513:d4fb:fa76 with SMTP id f12-20020ac2498c000000b00513d4fbfa76mr355061lfl.3.1711084996671; Thu, 21 Mar 2024 22:23:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jake Date: Fri, 22 Mar 2024 05:23:05 +0000 Message-ID: Subject: Re: Multiple versions of mesa libraries in cmake runtime search path To: help-guix@gnu.org Cc: guix-science@gnu.org Content-Type: multipart/alternative; boundary="000000000000683da906143905f4" Received-SPF: pass client-ip=2a00:1450:4864:20::133; envelope-from=jforst.mailman@gmail.com; helo=mail-lf1-x133.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 22 Mar 2024 09:04:32 -0400 X-BeenThere: guix-science@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-science-bounces+larch=yhetil.org@gnu.org Sender: guix-science-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -9.51 X-Spam-Score: -9.51 X-Migadu-Queue-Id: 6A6173F35F X-Migadu-Scanner: mx11.migadu.com X-TUID: 7NidDqGCQ1As Message-ID: <20240322052305.hJ7U1P2tqcteevIrXNcKguwBTdy033phE3KV2p1yiN4@z> --000000000000683da906143905f4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable If the problem is that qtbase-5 is propagating a different mesa than the one we can install (i.e. a different /gnu/store entry), let's try installing qtbase-5 and using its propagated mesa instead of installing mesa ourselves. #+begin_src sh guix shell geant4-vis cmake make gcc-toolchain qtbase@5 #+end_src Alas, we still have 2 different mesa versions: #+begin_example CMake Warning at CMakeLists.txt:35 (add_executable): Cannot generate a safe runtime search path for target exampleA1 because files in some directories may conflict with libraries in implicit directories: runtime library [libEGL.so.1] in /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib may be hidden by files in: /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib runtime library [libGL.so.1] in /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib may be hidden by files in: /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib Some of these libraries may not be found correctly. #+end_example The installed qtbase-5 propagates the same mesa as the one we can install: /gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-profile/lib/libEGL.so -> /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libEGL.so So then, where is this other mesa coming from (2rzdlwb...), if not qtbase-5= ? I've included possibly relevant lines from the generated CMakeCache.txt #+begin_example //Path to a file. OPENGL_EGL_INCLUDE_DIR:PATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ include //Path to a file. OPENGL_GLX_INCLUDE_DIR:PATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ include //Path to a file. OPENGL_INCLUDE_DIR:PATH=3D/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-= 23.3.2/ include //Path to a library. OPENGL_egl_LIBRARY:FILEPATH=3D/gnu/store/6imr8p8j0d59s4r0912xy8mficw8kc2y-p= rofile/ lib/libEGL.so //Path to a library. OPENGL_gl_LIBRARY:FILEPATH=3D/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-me= sa-23.3 .2/lib/libGL.so #+end_example Cheers Jake On Thu, Mar 14, 2024 at 3:25=E2=80=AFAM Jake wro= te: > Hello > > In short, I have the mesa package installed and another package I > installed appears to have a different mesa in /gnu/store/ as a runtime > dependency. > As a result, cmake is unable to generate a safe runtime search path, > because there are 2 different libGL.so.1 and libEGL.so.1 files in the pat= h, > one from the mesa I installed and another from the other mesa that was > brought in as a runtime dependency. > > Here is the cmake warning: > > #+begin_src sh > > CMake Warning at CMakeLists.txt:35 (add_executable): > Cannot generate a safe runtime search path for target exampleA1 becau= se > files in some directories may conflict with libraries in implicit > directories: > > runtime library [libEGL.so.1] in /home/jake/.guix-profile/lib may b= e > hidden by files in: > /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib > runtime library [libGL.so.1] in /home/jake/.guix-profile/lib may be > hidden by files in: > /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2/lib > > Some of these libraries may not be found correctly. > > #+end_src > > I think the guix package definition below is somewhere introducing the > additional mesa at /gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.= 2. > The input clhep-2.4.6.2 and native inputs are omitted for brevity because > I don't think they're relevant, but the full package definition and input= s > can be found at > https://github.com/jakeforster/guix-channel/blob/master/jforst/packages/g= eant4.scm > > #+begin_src scheme > > (define-public geant4-vis-11-1-1 > (package > (name "geant4-vis") > (version "11.1.1") > (source > (origin > (method git-fetch) > (uri (git-reference > (url "https://gitlab.cern.ch/geant4/geant4") > (commit (string-append "v" version)))) > (file-name (git-file-name name version)) > (sha256 > (base32 > "141fhmh0w8sbp6cckccf3dswn596ds4vgqwc3gz6i53ypyxmv2fw")))) > (build-system cmake-build-system) > (inputs (list coreutils > gcc-toolchain > xerces-c > expat > clhep-2.4.6.2 > python-2 > python-3.10 > perl > tcsh > qtbase-5 > libxmu > libxt)) > (arguments > `(#:configure-flags (let* ((out (assoc-ref %outputs "out")) > (qt-path (string-append (assoc-ref > %build-inputs > "qtbase") > > "/lib/cmake/Qt5"))) > (list (string-append > "-DCMAKE_INSTALL_PREFIX=3D" out) > (string-append "-DCMAKE_PREFIX_PATH=3D= " > qt-path) > "-DCMAKE_INSTALL_LIBDIR=3Dlib" > "-DGEANT4_BUILD_MULTITHREADED=3DON" > "-DGEANT4_ENABLE_TESTING=3DOFF" > "-DGEANT4_INSTALL_DATA=3DOFF" > "-DGEANT4_USE_GDML=3DON" ;xerces-c is > needed for GDML > "-DGEANT4_USE_SYSTEM_CLHEP=3DON" > "-DGEANT4_USE_SYSTEM_EXPAT=3DON" > "-DGEANT4_USE_OPENGL_X11=3DON" > "-DGEANT4_USE_QT=3DON" > (let ((datadir (string-append out > "/share/geant4/data"))= ) > (string-append > "-DGEANT4_INSTALL_DATADIR=3D" > datadir > "/share/geant4/data")))) > #:phases (modify-phases %standard-phases > (add-after 'install 'install-data > (lambda* (#:key inputs outputs #:allow-other-keys) > (let ((G4NDL (assoc-ref inputs "G4NDL")) > (G4EMLOW (assoc-ref inputs "G4EMLOW")) > (G4PhotonEvaporation (assoc-ref inputs > "G4PhotonEvaporation"= )) > (G4RadioactiveDecay (assoc-ref inputs > "G4RadioactiveDecay")) > (G4PARTICLEXS (assoc-ref inputs > "G4PARTICLEXS")) > (G4PII (assoc-ref inputs "G4PII")) > (G4RealSurface (assoc-ref inputs > "G4RealSurface")) > (G4SAIDDATA (assoc-ref inputs "G4SAIDDATA")= ) > (G4ABLA (assoc-ref inputs "G4ABLA")) > (G4INCL (assoc-ref inputs "G4INCL")) > (G4ENSDFSTATE (assoc-ref inputs > "G4ENSDFSTATE")) > (G4TENDL (assoc-ref inputs "G4TENDL")) > (datadir (string-append (assoc-ref outputs > "out") > > "/share/geant4/data"))) > (display (list "Data archives:" > G4NDL > G4EMLOW > G4PhotonEvaporation > G4RadioactiveDecay > G4PARTICLEXS > G4PII > G4RealSurface > G4SAIDDATA > G4ABLA > G4INCL > G4ENSDFSTATE)) > (newline) > (mkdir-p datadir) > (invoke "tar" "xvf" G4NDL "-C" datadir) > (invoke "tar" "xvf" G4EMLOW "-C" datadir) > (invoke "tar" "xvf" G4PhotonEvaporation "-C" > datadir) > (invoke "tar" "xvf" G4RadioactiveDecay "-C" > datadir) > (invoke "tar" "xvf" G4PARTICLEXS "-C" datadir) > (invoke "tar" "xvf" G4PII "-C" datadir) > (invoke "tar" "xvf" G4RealSurface "-C" datadir) > (invoke "tar" "xvf" G4SAIDDATA "-C" datadir) > (invoke "tar" "xvf" G4ABLA "-C" datadir) > (invoke "tar" "xvf" G4INCL "-C" datadir) > (invoke "tar" "xvf" G4ENSDFSTATE "-C" datadir) > (invoke "tar" "xvf" G4TENDL "-C" datadir))))) > ;; no tests in Makefile > #:tests? #f)) > (native-inputs `(("G4NDL" ,g4ndl-4.7) > ("G4EMLOW" ,g4emlow-8.2) > ("G4PhotonEvaporation" ,photon-evaporation-5.7) > ("G4RadioactiveDecay" ,radioactive-decay-5.6) > ("G4PARTICLEXS" ,g4particlexs-4.0) > ("G4PII" ,g4pii-1.3) > ("G4RealSurface" ,real-surface-2.2) > ("G4SAIDDATA" ,g4saiddata-2.0) > ("G4ABLA" ,g4abla-3.1) > ("G4INCL" ,g4incl-1.0) > ("G4ENSDFSTATE" ,g4ensdfstate-2.3) > ("G4TENDL" ,g4tendl-1.4))) > (home-page "https://geant4.web.cern.ch") > (synopsis "Monte Carlo particle track simulations") > (description > "Geant4 is a toolkit for the simulation of the passage of particle= s > through matter. Its areas of application include high energy, > nuclear and accelerator physics, as well as studies > in medical and space science. > > This package supports visualisation with OpenGL and Qt.") > (license (license:non-copyleft > "https://geant4.web.cern.ch/download/license")))) > > #+end_src > > Steps to reproduce the cmake warning given above: > > #+begin_src sh > > git clone https://github.com/jakeforster/guix-channel.git > guix shell -L ./guix-channel geant4-vis cmake make gcc-toolchain mesa > > # copy an example app > INSTALL_DIR=3D$(guix build geant4-vis) > cp -rf $INSTALL_DIR/share/Geant4/examples/basic/B1 . > > # the store is read only > chmod -R 751 B1/ > > mkdir B1/build > cd B1/build > cmake .. > > #+end_src > > I have also reproduced the warning using a guix shell -C --pure. There's > just some extra hassle with making the build dir first and sharing the B1 > directory containing the CMakeLists.txt file. > > If you use your profile instead of a shell, you can confirm the > libEGL.so.1 and libGL.so.1 libraries in ~/.guix-profile/lib/ point to the > same mesa in /gnu/store/ that is installed with the following: > > #+begin_src sh > > $ guix package -I | grep mesa > mesa 23.3.2 out > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2 > > $ ls -l ~/.guix-profile/lib/ | grep libEGL.so.1 > lrwxrwxrwx 1 root root 71 Jan 1 1970 libEGL.so.1 -> > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libEGL.so.1 > > $ ls -l ~/.guix-profile/lib/ | grep libGL.so.1 > lrwxrwxrwx 1 root root 70 Jan 1 1970 libGL.so.1 -> > /gnu/store/clnk1arbkc6v21a93gxnirvsbjaz5v07-mesa-23.3.2/lib/libGL.so.1 > > #+end_src > > So I'm guessing during the installation of geant4-vis, something is > bringing in a different mesa from the store > (/gnu/store/2rzdlwb0f7ksj7a78kjn7a7qs22avi8l-mesa-23.3.2) into the path a= s > a runtime dependency. > I note that qtbase-5 has mesa as a propagated input, so perhaps it's that= . > But it's not clear to me why the mesa propagated for qtbase-5 would be > different (i.e. has a different /gnu/store/ entry) from the mesa that I > install in my profile or shell. > Any suggestions for how to resolve this would be much appreciated. > > Thanks! > > Jake > --000000000000683da906143905f4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj48L2Rpdj48ZGl2PklmIHRoZSBwcm9ibGVtIGlzIHRoYXQgcXRi YXNlLTUgaXMgcHJvcGFnYXRpbmcgYSBkaWZmZXJlbnQgbWVzYSB0aGFuIHRoZSBvbmUgd2UgY2Fu IGluc3RhbGwgKGkuZS4gYSBkaWZmZXJlbnQgL2dudS9zdG9yZSBlbnRyeSksIGxldCYjMzk7cyB0 cnkgaW5zdGFsbGluZyBxdGJhc2UtNSBhbmQgdXNpbmcgaXRzIHByb3BhZ2F0ZWQgbWVzYSBpbnN0 ZWFkIG9mIGluc3RhbGxpbmcgbWVzYSBvdXJzZWx2ZXMuPGJyPjxkaXY+PGJyPjwvZGl2PjxkaXY+ IytiZWdpbl9zcmMgc2g8L2Rpdj48ZGl2Pjxicj48L2Rpdj7CoMKgwqAgZ3VpeCBzaGVsbCBnZWFu dDQtdmlzIGNtYWtlIG1ha2UgZ2NjLXRvb2xjaGFpbiBxdGJhc2VANTwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+IytlbmRfc3JjPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbGFzLCB3ZSBzdGls bCBoYXZlIDIgZGlmZmVyZW50IG1lc2EgdmVyc2lvbnM6PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2 PjxkaXY+IytiZWdpbl9leGFtcGxlPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5DTWFrZSBXYXJu aW5nIGF0IENNYWtlTGlzdHMudHh0OjM1IChhZGRfZXhlY3V0YWJsZSk6PGJyPsKgIENhbm5vdCBn ZW5lcmF0ZSBhIHNhZmUgcnVudGltZSBzZWFyY2ggcGF0aCBmb3IgdGFyZ2V0IGV4YW1wbGVBMSBi ZWNhdXNlPGJyPsKgIGZpbGVzIGluIHNvbWUgZGlyZWN0b3JpZXMgbWF5IGNvbmZsaWN0IHdpdGgg bGlicmFyaWVzIGluIGltcGxpY2l0PGJyPsKgIGRpcmVjdG9yaWVzOjxicj48YnI+wqAgwqAgcnVu dGltZSBsaWJyYXJ5IFtsaWJFR0wuc28uMV0gaW4gL2dudS9zdG9yZS82aW1yOHA4ajBkNTlzNHIw OTEyeHk4bWZpY3c4a2MyeS1wcm9maWxlL2xpYiBtYXkgYmUgaGlkZGVuIGJ5IGZpbGVzIGluOjxi cj7CoCDCoCDCoCAvZ251L3N0b3JlLzJyemRsd2IwZjdrc2o3YTc4a2puN2E3cXMyMmF2aThsLW1l c2EtMjMuMy4yL2xpYjxicj7CoCDCoCBydW50aW1lIGxpYnJhcnkgW2xpYkdMLnNvLjFdIGluIC9n bnUvc3RvcmUvNmltcjhwOGowZDU5czRyMDkxMnh5OG1maWN3OGtjMnktcHJvZmlsZS9saWIgbWF5 IGJlIGhpZGRlbiBieSBmaWxlcyBpbjo8YnI+wqAgwqAgwqAgL2dudS9zdG9yZS8ycnpkbHdiMGY3 a3NqN2E3OGtqbjdhN3FzMjJhdmk4bC1tZXNhLTIzLjMuMi9saWI8YnI+PGJyPsKgIFNvbWUgb2Yg dGhlc2UgbGlicmFyaWVzIG1heSBub3QgYmUgZm91bmQgY29ycmVjdGx5LjwvZGl2PjxkaXY+PC9k aXY+PGRpdj48YnI+PC9kaXY+PGRpdj4jK2VuZF9leGFtcGxlPC9kaXY+PGRpdj48YnI+PC9kaXY+ PGRpdj5UaGUgaW5zdGFsbGVkIHF0YmFzZS01IHByb3BhZ2F0ZXMgdGhlIHNhbWUgbWVzYSBhcyB0 aGUgb25lIHdlIGNhbiBpbnN0YWxsOjxicj48YnI+L2dudS9zdG9yZS82aW1yOHA4ajBkNTlzNHIw OTEyeHk4bWZpY3c4a2MyeS1wcm9maWxlL2xpYi9saWJFR0wuc28gLSZndDsgL2dudS9zdG9yZS9j bG5rMWFyYmtjNnYyMWE5M2d4bmlydnNiamF6NXYwNy1tZXNhLTIzLjMuMi9saWIvbGliRUdMLnNv PGJyPjxicj5TbyB0aGVuLCB3aGVyZSBpcyB0aGlzIG90aGVyIG1lc2EgY29taW5nIGZyb20gKDJy emRsd2IuLi4pLCBpZiBub3QgcXRiYXNlLTU/PGJyPjxicj5JJiMzOTt2ZSBpbmNsdWRlZCBwb3Nz aWJseSByZWxldmFudCBsaW5lcyBmcm9tIHRoZSBnZW5lcmF0ZWQgQ01ha2VDYWNoZS50eHQ8YnI+ PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4jK2JlZ2luX2V4YW1wbGU8L2Rpdj48ZGl2Pjxicj48 L2Rpdj48ZGl2Pi8vUGF0aCB0byBhIGZpbGUuPGJyPk9QRU5HTF9FR0xfSU5DTFVERV9ESVI6UEFU SD0vZ251L3N0b3JlLzZpbXI4cDhqMGQ1OXM0cjA5MTJ4eThtZmljdzhrYzJ5LXByb2ZpbGUvPGJy PmluY2x1ZGU8YnI+PGJyPi8vUGF0aCB0byBhIGZpbGUuPGJyPk9QRU5HTF9HTFhfSU5DTFVERV9E SVI6UEFUSD0vZ251L3N0b3JlLzZpbXI4cDhqMGQ1OXM0cjA5MTJ4eThtZmljdzhrYzJ5LXByb2Zp bGUvPGJyPmluY2x1ZGU8YnI+PGJyPi8vUGF0aCB0byBhIGZpbGUuPGJyPk9QRU5HTF9JTkNMVURF X0RJUjpQQVRIPS9nbnUvc3RvcmUvMnJ6ZGx3YjBmN2tzajdhNzhram43YTdxczIyYXZpOGwtbWVz YS0yMy4zLjIvPGJyPmluY2x1ZGU8YnI+PGJyPi8vUGF0aCB0byBhIGxpYnJhcnkuPGJyPk9QRU5H TF9lZ2xfTElCUkFSWTpGSUxFUEFUSD0vZ251L3N0b3JlLzZpbXI4cDhqMGQ1OXM0cjA5MTJ4eTht ZmljdzhrYzJ5LXByb2ZpbGUvPGJyPmxpYi9saWJFR0wuc288YnI+PGJyPi8vUGF0aCB0byBhIGxp YnJhcnkuPGJyPk9QRU5HTF9nbF9MSUJSQVJZOkZJTEVQQVRIPS9nbnUvc3RvcmUvMnJ6ZGx3YjBm N2tzajdhNzhram43YTdxczIyYXZpOGwtbWVzYS0yMy4zPGJyPi4yL2xpYi9saWJHTC5zbzwvZGl2 PjxkaXY+PGJyPjwvZGl2PjxkaXY+IytlbmRfZXhhbXBsZTwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk aXY+Q2hlZXJzPGJyPjwvZGl2PjxkaXY+SmFrZTxicj48L2Rpdj48L2Rpdj48YnI+PGRpdiBjbGFz cz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBUaHUs IE1hciAxNCwgMjAyNCBhdCAzOjI14oCvQU0gSmFrZSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmpmb3Jz dC5tYWlsbWFuQGdtYWlsLmNvbSI+amZvcnN0Lm1haWxtYW5AZ21haWwuY29tPC9hPiZndDsgd3Jv dGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0 KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj5IZWxsbzxkaXY+PGJyPkluIHNob3J0 LCBJIGhhdmUgdGhlIG1lc2EgcGFja2FnZSBpbnN0YWxsZWQgYW5kIGFub3RoZXIgcGFja2FnZSBJ IGluc3RhbGxlZCBhcHBlYXJzIHRvIGhhdmUgYSBkaWZmZXJlbnQgbWVzYSBpbiAvZ251L3N0b3Jl LyBhcyBhIHJ1bnRpbWUgZGVwZW5kZW5jeS48YnI+QXMgYSByZXN1bHQsIGNtYWtlIGlzIHVuYWJs ZSB0byBnZW5lcmF0ZSBhIHNhZmUgcnVudGltZSBzZWFyY2ggcGF0aCwgYmVjYXVzZSB0aGVyZSBh cmUgMiBkaWZmZXJlbnQgbGliR0wuc28uMSBhbmQgbGliRUdMLnNvLjEgZmlsZXMgaW4gdGhlIHBh dGgsIG9uZSBmcm9tIHRoZSBtZXNhIEkgaW5zdGFsbGVkIGFuZCBhbm90aGVyIGZyb20gdGhlIG90 aGVyIG1lc2EgdGhhdCB3YXMgYnJvdWdodCBpbiBhcyBhIHJ1bnRpbWUgZGVwZW5kZW5jeS48YnI+ PGJyPkhlcmUgaXMgdGhlIGNtYWtlIHdhcm5pbmc6PGJyPjxicj4jK2JlZ2luX3NyYyBzaDxicj48 YnI+wqAgQ01ha2UgV2FybmluZyBhdCBDTWFrZUxpc3RzLnR4dDozNSAoYWRkX2V4ZWN1dGFibGUp Ojxicj7CoCDCoCBDYW5ub3QgZ2VuZXJhdGUgYSBzYWZlIHJ1bnRpbWUgc2VhcmNoIHBhdGggZm9y IHRhcmdldCBleGFtcGxlQTEgYmVjYXVzZTxicj7CoCDCoCBmaWxlcyBpbiBzb21lIGRpcmVjdG9y aWVzIG1heSBjb25mbGljdCB3aXRoIGxpYnJhcmllcyBpbiBpbXBsaWNpdDxicj7CoCDCoCBkaXJl Y3Rvcmllczo8YnI+PGJyPsKgIMKgIMKgIHJ1bnRpbWUgbGlicmFyeSBbbGliRUdMLnNvLjFdIGlu IC9ob21lL2pha2UvLmd1aXgtcHJvZmlsZS9saWIgbWF5IGJlIGhpZGRlbiBieSBmaWxlcyBpbjo8 YnI+wqAgwqAgwqAgwqAgL2dudS9zdG9yZS8ycnpkbHdiMGY3a3NqN2E3OGtqbjdhN3FzMjJhdmk4 bC1tZXNhLTIzLjMuMi9saWI8YnI+wqAgwqAgwqAgcnVudGltZSBsaWJyYXJ5IFtsaWJHTC5zby4x XSBpbiAvaG9tZS9qYWtlLy5ndWl4LXByb2ZpbGUvbGliIG1heSBiZSBoaWRkZW4gYnkgZmlsZXMg aW46PGJyPsKgIMKgIMKgIMKgIC9nbnUvc3RvcmUvMnJ6ZGx3YjBmN2tzajdhNzhram43YTdxczIy YXZpOGwtbWVzYS0yMy4zLjIvbGliPGJyPjxicj7CoCDCoCBTb21lIG9mIHRoZXNlIGxpYnJhcmll cyBtYXkgbm90IGJlIGZvdW5kIGNvcnJlY3RseS48YnI+PGJyPiMrZW5kX3NyYzxicj48YnI+SSB0 aGluayB0aGUgZ3VpeCBwYWNrYWdlIGRlZmluaXRpb24gYmVsb3cgaXMgc29tZXdoZXJlIGludHJv ZHVjaW5nIHRoZSBhZGRpdGlvbmFsIG1lc2EgYXQgL2dudS9zdG9yZS8ycnpkbHdiMGY3a3NqN2E3 OGtqbjdhN3FzMjJhdmk4bC1tZXNhLTIzLjMuMi48YnI+VGhlIGlucHV0IGNsaGVwLTIuNC42LjIg YW5kIG5hdGl2ZSBpbnB1dHMgYXJlIG9taXR0ZWQgZm9yIGJyZXZpdHkgYmVjYXVzZSBJIGRvbiYj Mzk7dCB0aGluayB0aGV5JiMzOTtyZSByZWxldmFudCwgYnV0IHRoZSBmdWxsIHBhY2thZ2UgZGVm aW5pdGlvbiBhbmQgaW5wdXRzIGNhbiBiZSBmb3VuZCBhdCA8YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20vamFrZWZvcnN0ZXIvZ3VpeC1jaGFubmVsL2Jsb2IvbWFzdGVyL2pmb3JzdC9wYWNrYWdl cy9nZWFudDQuc2NtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL2pha2Vmb3Jz dGVyL2d1aXgtY2hhbm5lbC9ibG9iL21hc3Rlci9qZm9yc3QvcGFja2FnZXMvZ2VhbnQ0LnNjbTwv YT48YnI+PGJyPiMrYmVnaW5fc3JjIHNjaGVtZTxicj48YnI+wqAgKGRlZmluZS1wdWJsaWMgZ2Vh bnQ0LXZpcy0xMS0xLTE8YnI+wqAgwqAgKHBhY2thZ2U8YnI+wqAgwqAgwqAgKG5hbWUgJnF1b3Q7 Z2VhbnQ0LXZpcyZxdW90Oyk8YnI+wqAgwqAgwqAgKHZlcnNpb24gJnF1b3Q7MTEuMS4xJnF1b3Q7 KTxicj7CoCDCoCDCoCAoc291cmNlPGJyPsKgIMKgIMKgIMKgKG9yaWdpbjxicj7CoCDCoCDCoCDC oCDCoChtZXRob2QgZ2l0LWZldGNoKTxicj7CoCDCoCDCoCDCoCDCoCh1cmkgKGdpdC1yZWZlcmVu Y2U8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodXJsICZxdW90OzxhIGhyZWY9Imh0dHBzOi8v Z2l0bGFiLmNlcm4uY2gvZ2VhbnQ0L2dlYW50NCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0 bGFiLmNlcm4uY2gvZ2VhbnQ0L2dlYW50NDwvYT4mcXVvdDspPGJyPsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKGNvbW1pdCAoc3RyaW5nLWFwcGVuZCAmcXVvdDt2JnF1b3Q7IHZlcnNpb24pKSkpPGJy PsKgIMKgIMKgIMKgIMKgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKTxi cj7CoCDCoCDCoCDCoCDCoChzaGEyNTY8YnI+wqAgwqAgwqAgwqAgwqAgKGJhc2UzMiAmcXVvdDsx NDFmaG1oMHc4c2JwNmNja2NjZjNkc3duNTk2ZHM0dmdxd2MzZ3o2aTUzeXB5eG12MmZ3JnF1b3Q7 KSkpKTxicj7CoCDCoCDCoCAoYnVpbGQtc3lzdGVtIGNtYWtlLWJ1aWxkLXN5c3RlbSk8YnI+wqAg wqAgwqAgKGlucHV0cyAobGlzdCBjb3JldXRpbHM8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ2NjLXRvb2xjaGFpbjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB4ZXJj ZXMtYzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHBhdDxicj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBjbGhlcC0yLjQuNi4yPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHB5dGhvbi0yPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB5dGhv bi0zLjEwPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBlcmw8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgdGNzaDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBxdGJhc2UtNTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsaWJ4bXU8YnI+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGlieHQpKTxicj7CoCDCoCDCoCAoYXJndW1lbnRz PGJyPsKgIMKgIMKgIMKgYCgjOmNvbmZpZ3VyZS1mbGFncyAobGV0KiAoKG91dCAoYXNzb2MtcmVm ICVvdXRwdXRzICZxdW90O291dCZxdW90OykpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChxdC1wYXRoIChzdHJpbmctYXBwZW5kIChhc3NvYy1y ZWY8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAlYnVpbGQtaW5wdXRzPGJyPsKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJnF1b3Q7cXRiYXNlJnF1b3Q7KTxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAmcXVvdDsvbGliL2NtYWtlL1F0NSZxdW90OykpKTxi cj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChsaXN0IChzdHJp bmctYXBwZW5kICZxdW90Oy1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JnF1b3Q7IG91dCk8YnI+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc3RyaW5n LWFwcGVuZCAmcXVvdDstRENNQUtFX1BSRUZJWF9QQVRIPSZxdW90OyBxdC1wYXRoKTxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZxdW90Oy1E Q01BS0VfSU5TVEFMTF9MSUJESVI9bGliJnF1b3Q7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJnF1b3Q7LURHRUFOVDRfQlVJTERfTVVMVElU SFJFQURFRD1PTiZxdW90Ozxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCZxdW90Oy1ER0VBTlQ0X0VOQUJMRV9URVNUSU5HPU9GRiZxdW90Ozxi cj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZx dW90Oy1ER0VBTlQ0X0lOU1RBTExfREFUQT1PRkYmcXVvdDs8YnI+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAmcXVvdDstREdFQU5UNF9VU0VfR0RN TD1PTiZxdW90OyA7eGVyY2VzLWMgaXMgbmVlZGVkIGZvciBHRE1MPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJnF1b3Q7LURHRUFOVDRfVVNF X1NZU1RFTV9DTEhFUD1PTiZxdW90Ozxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZxdW90Oy1ER0VBTlQ0X1VTRV9TWVNURU1fRVhQQVQ9T04m cXVvdDs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAmcXVvdDstREdFQU5UNF9VU0VfT1BFTkdMX1gxMT1PTiZxdW90Ozxicj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZxdW90Oy1ER0VBTlQ0 X1VTRV9RVD1PTiZxdW90Ozxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoChsZXQgKChkYXRhZGlyIChzdHJpbmctYXBwZW5kIG91dDxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCZxdW90Oy9zaGFyZS9nZWFudDQvZGF0YSZxdW90OykpKTxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChzdHJp bmctYXBwZW5kICZxdW90Oy1ER0VBTlQ0X0lOU1RBTExfREFUQURJUj0mcXVvdDs8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZGF0YWRpciAmcXVvdDsvc2hhcmUvZ2VhbnQ0L2RhdGEmcXVvdDspKSkp PGJyPsKgIMKgIMKgIMKgIMKgIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNl czxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoYWRkLWFmdGVyICYjMzk7aW5zdGFs bCAmIzM5O2luc3RhbGwtZGF0YTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAo bGFtYmRhKiAoIzprZXkgaW5wdXRzIG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKTxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobGV0ICgoRzROREwgKGFzc29jLXJlZiBp bnB1dHMgJnF1b3Q7RzROREwmcXVvdDspKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAoRzRFTUxPVyAoYXNzb2MtcmVmIGlucHV0cyAmcXVvdDtHNEVNTE9X JnF1b3Q7KSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg KEc0UGhvdG9uRXZhcG9yYXRpb24gKGFzc29jLXJlZiBpbnB1dHM8YnI+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgJnF1b3Q7RzRQaG90b25FdmFwb3JhdGlvbiZxdW90OykpPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChHNFJhZGlvYWN0aXZlRGVjYXkgKGFzc29j LXJlZiBpbnB1dHM8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAmcXVvdDtHNFJhZGlvYWN0aXZlRGVj YXkmcXVvdDspKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAoRzRQQVJUSUNMRVhTIChhc3NvYy1yZWYgaW5wdXRzICZxdW90O0c0UEFSVElDTEVYUyZxdW90 OykpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChHNFBJ SSAoYXNzb2MtcmVmIGlucHV0cyAmcXVvdDtHNFBJSSZxdW90OykpPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChHNFJlYWxTdXJmYWNlIChhc3NvYy1yZWYg aW5wdXRzICZxdW90O0c0UmVhbFN1cmZhY2UmcXVvdDspKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoRzRTQUlEREFUQSAoYXNzb2MtcmVmIGlucHV0cyAm cXVvdDtHNFNBSUREQVRBJnF1b3Q7KSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgKEc0QUJMQSAoYXNzb2MtcmVmIGlucHV0cyAmcXVvdDtHNEFCTEEmcXVv dDspKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoRzRJ TkNMIChhc3NvYy1yZWYgaW5wdXRzICZxdW90O0c0SU5DTCZxdW90OykpPGJyPsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChHNEVOU0RGU1RBVEUgKGFzc29jLXJl ZiBpbnB1dHMgJnF1b3Q7RzRFTlNERlNUQVRFJnF1b3Q7KSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKEc0VEVOREwgKGFzc29jLXJlZiBpbnB1dHMgJnF1 b3Q7RzRURU5ETCZxdW90OykpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIChkYXRhZGlyIChzdHJpbmctYXBwZW5kIChhc3NvYy1yZWYgb3V0cHV0cyAmcXVv dDtvdXQmcXVvdDspPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICZxdW90Oy9zaGFyZS9nZWFu dDQvZGF0YSZxdW90OykpKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAoZGlzcGxheSAobGlzdCAmcXVvdDtEYXRhIGFyY2hpdmVzOiZxdW90Ozxicj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEc0TkRM PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgRzRFTUxPVzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEc0UGhvdG9uRXZhcG9yYXRpb248YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBHNFJh ZGlvYWN0aXZlRGVjYXk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBHNFBBUlRJQ0xFWFM8YnI+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBHNFBJSTxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oEc0UmVhbFN1cmZhY2U8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBHNFNBSUREQVRBPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgRzRBQkxBPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg RzRJTkNMPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgRzRFTlNERlNUQVRFKSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgKG5ld2xpbmUpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIChta2Rpci1wIGRhdGFkaXIpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIChpbnZva2UgJnF1b3Q7dGFyJnF1b3Q7ICZxdW90O3h2ZiZxdW90OyBHNE5E TCAmcXVvdDstQyZxdW90OyBkYXRhZGlyKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCAoaW52b2tlICZxdW90O3RhciZxdW90OyAmcXVvdDt4dmYmcXVvdDsgRzRFTUxP VyAmcXVvdDstQyZxdW90OyBkYXRhZGlyKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCAoaW52b2tlICZxdW90O3RhciZxdW90OyAmcXVvdDt4dmYmcXVvdDsgRzRQaG90 b25FdmFwb3JhdGlvbiAmcXVvdDstQyZxdW90OyBkYXRhZGlyKTxicj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoaW52b2tlICZxdW90O3RhciZxdW90OyAmcXVvdDt4dmYm cXVvdDsgRzRSYWRpb2FjdGl2ZURlY2F5ICZxdW90Oy1DJnF1b3Q7IGRhdGFkaXIpPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChpbnZva2UgJnF1b3Q7dGFyJnF1b3Q7 ICZxdW90O3h2ZiZxdW90OyBHNFBBUlRJQ0xFWFMgJnF1b3Q7LUMmcXVvdDsgZGF0YWRpcik8YnI+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGludm9rZSAmcXVvdDt0YXIm cXVvdDsgJnF1b3Q7eHZmJnF1b3Q7IEc0UElJICZxdW90Oy1DJnF1b3Q7IGRhdGFkaXIpPGJyPsKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChpbnZva2UgJnF1b3Q7dGFyJnF1 b3Q7ICZxdW90O3h2ZiZxdW90OyBHNFJlYWxTdXJmYWNlICZxdW90Oy1DJnF1b3Q7IGRhdGFkaXIp PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChpbnZva2UgJnF1b3Q7 dGFyJnF1b3Q7ICZxdW90O3h2ZiZxdW90OyBHNFNBSUREQVRBICZxdW90Oy1DJnF1b3Q7IGRhdGFk aXIpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChpbnZva2UgJnF1 b3Q7dGFyJnF1b3Q7ICZxdW90O3h2ZiZxdW90OyBHNEFCTEEgJnF1b3Q7LUMmcXVvdDsgZGF0YWRp cik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGludm9rZSAmcXVv dDt0YXImcXVvdDsgJnF1b3Q7eHZmJnF1b3Q7IEc0SU5DTCAmcXVvdDstQyZxdW90OyBkYXRhZGly KTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoaW52b2tlICZxdW90 O3RhciZxdW90OyAmcXVvdDt4dmYmcXVvdDsgRzRFTlNERlNUQVRFICZxdW90Oy1DJnF1b3Q7IGRh dGFkaXIpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChpbnZva2Ug JnF1b3Q7dGFyJnF1b3Q7ICZxdW90O3h2ZiZxdW90OyBHNFRFTkRMICZxdW90Oy1DJnF1b3Q7IGRh dGFkaXIpKSkpKTxicj7CoCDCoCDCoCDCoCDCoDs7IG5vIHRlc3RzIGluIE1ha2VmaWxlPGJyPsKg IMKgIMKgIMKgIMKgIzp0ZXN0cz8gI2YpKTxicj7CoCDCoCDCoCAobmF0aXZlLWlucHV0cyBgKCgm cXVvdDtHNE5ETCZxdW90OyAsZzRuZGwtNC43KTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCgmcXVvdDtHNEVNTE9XJnF1b3Q7ICxnNGVtbG93LTguMik8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoJnF1b3Q7RzRQaG90b25FdmFwb3JhdGlvbiZxdW90 OyAscGhvdG9uLWV2YXBvcmF0aW9uLTUuNyk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAoJnF1b3Q7RzRSYWRpb2FjdGl2ZURlY2F5JnF1b3Q7ICxyYWRpb2FjdGl2ZS1kZWNh eS01LjYpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKCZxdW90O0c0UEFS VElDTEVYUyZxdW90OyAsZzRwYXJ0aWNsZXhzLTQuMCk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAoJnF1b3Q7RzRQSUkmcXVvdDsgLGc0cGlpLTEuMyk8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoJnF1b3Q7RzRSZWFsU3VyZmFjZSZxdW90OyAscmVh bC1zdXJmYWNlLTIuMik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoJnF1 b3Q7RzRTQUlEREFUQSZxdW90OyAsZzRzYWlkZGF0YS0yLjApPGJyPsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgKCZxdW90O0c0QUJMQSZxdW90OyAsZzRhYmxhLTMuMSk8YnI+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoJnF1b3Q7RzRJTkNMJnF1b3Q7ICxnNGlu Y2wtMS4wKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgmcXVvdDtHNEVO U0RGU1RBVEUmcXVvdDsgLGc0ZW5zZGZzdGF0ZS0yLjMpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgKCZxdW90O0c0VEVOREwmcXVvdDsgLGc0dGVuZGwtMS40KSkpPGJyPsKg IMKgIMKgIChob21lLXBhZ2UgJnF1b3Q7PGEgaHJlZj0iaHR0cHM6Ly9nZWFudDQud2ViLmNlcm4u Y2giIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dlYW50NC53ZWIuY2Vybi5jaDwvYT4mcXVvdDsp PGJyPsKgIMKgIMKgIChzeW5vcHNpcyAmcXVvdDtNb250ZSBDYXJsbyBwYXJ0aWNsZSB0cmFjayBz aW11bGF0aW9ucyZxdW90Oyk8YnI+wqAgwqAgwqAgKGRlc2NyaXB0aW9uPGJyPsKgIMKgIMKgIMKg JnF1b3Q7R2VhbnQ0IGlzIGEgdG9vbGtpdCBmb3IgdGhlIHNpbXVsYXRpb24gb2YgdGhlIHBhc3Nh Z2Ugb2YgcGFydGljbGVzPGJyPsKgIHRocm91Z2ggbWF0dGVyLsKgIEl0cyBhcmVhcyBvZiBhcHBs aWNhdGlvbiBpbmNsdWRlIGhpZ2ggZW5lcmd5LDxicj7CoCBudWNsZWFyIGFuZCBhY2NlbGVyYXRv ciBwaHlzaWNzLCBhcyB3ZWxsIGFzIHN0dWRpZXM8YnI+wqAgaW4gbWVkaWNhbCBhbmQgc3BhY2Ug c2NpZW5jZS48YnI+PGJyPsKgIFRoaXMgcGFja2FnZSBzdXBwb3J0cyB2aXN1YWxpc2F0aW9uIHdp dGggT3BlbkdMIGFuZCBRdC4mcXVvdDspPGJyPsKgIMKgIMKgIChsaWNlbnNlIChsaWNlbnNlOm5v bi1jb3B5bGVmdDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAmcXVvdDs8YSBocmVmPSJodHRw czovL2dlYW50NC53ZWIuY2Vybi5jaC9kb3dubG9hZC9saWNlbnNlIiB0YXJnZXQ9Il9ibGFuayI+ aHR0cHM6Ly9nZWFudDQud2ViLmNlcm4uY2gvZG93bmxvYWQvbGljZW5zZTwvYT4mcXVvdDspKSkp PGJyPjxicj4jK2VuZF9zcmM8YnI+PGJyPlN0ZXBzIHRvIHJlcHJvZHVjZSB0aGUgY21ha2Ugd2Fy bmluZyBnaXZlbiBhYm92ZTo8YnI+PGJyPiMrYmVnaW5fc3JjIHNoPGJyPjxicj7CoCBnaXQgY2xv bmUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pha2Vmb3JzdGVyL2d1aXgtY2hhbm5lbC5n aXQiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vamFrZWZvcnN0ZXIvZ3VpeC1j aGFubmVsLmdpdDwvYT48YnI+wqAgZ3VpeCBzaGVsbCAtTCAuL2d1aXgtY2hhbm5lbCBnZWFudDQt dmlzIGNtYWtlIG1ha2UgZ2NjLXRvb2xjaGFpbiBtZXNhPGJyPjxicj7CoCAjIGNvcHkgYW4gZXhh bXBsZSBhcHA8YnI+wqAgSU5TVEFMTF9ESVI9JChndWl4IGJ1aWxkIGdlYW50NC12aXMpPGJyPsKg IGNwIC1yZiAkSU5TVEFMTF9ESVIvc2hhcmUvR2VhbnQ0L2V4YW1wbGVzL2Jhc2ljL0IxIC48YnI+ PGJyPsKgICMgdGhlIHN0b3JlIGlzIHJlYWQgb25seTxicj7CoCBjaG1vZCAtUiA3NTEgQjEvPGJy Pjxicj7CoCBta2RpciBCMS9idWlsZDxicj7CoCBjZCBCMS9idWlsZDxicj7CoCBjbWFrZSAuLjxi cj48YnI+IytlbmRfc3JjPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSBoYXZlIGFsc28g cmVwcm9kdWNlZCB0aGUgd2FybmluZyB1c2luZyBhIGd1aXggc2hlbGwgLUMgLS1wdXJlLiBUaGVy ZSYjMzk7cyBqdXN0IHNvbWUgZXh0cmEgaGFzc2xlIHdpdGggbWFraW5nIHRoZSBidWlsZCBkaXIg Zmlyc3QgYW5kIHNoYXJpbmcgdGhlIEIxIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBDTWFrZUxp c3RzLnR4dCBmaWxlLjxicj48L2Rpdj48ZGl2Pjxicj5JZiB5b3UgdXNlIHlvdXIgcHJvZmlsZSBp bnN0ZWFkIG9mIGEgc2hlbGwsIHlvdSBjYW4gY29uZmlybSB0aGUgbGliRUdMLnNvLjEgYW5kIGxp YkdMLnNvLjEgbGlicmFyaWVzIGluIH4vLmd1aXgtcHJvZmlsZS9saWIvIHBvaW50IHRvIHRoZSBz YW1lIG1lc2EgaW4gL2dudS9zdG9yZS8gdGhhdCBpcyBpbnN0YWxsZWQgd2l0aCB0aGUgZm9sbG93 aW5nOjxicj48YnI+IytiZWdpbl9zcmMgc2g8YnI+PGJyPsKgICQgZ3VpeCBwYWNrYWdlIC1JIHwg Z3JlcCBtZXNhPGJyPsKgIG1lc2EgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAJMjMuMy4yIMKgIMKg IMKgIMKgIMKgCW91dAkvZ251L3N0b3JlL2NsbmsxYXJia2M2djIxYTkzZ3huaXJ2c2JqYXo1djA3 LW1lc2EtMjMuMy4yPGJyPjxicj7CoCAkIGxzIC1sIH4vLmd1aXgtcHJvZmlsZS9saWIvIHwgZ3Jl cCBsaWJFR0wuc28uMTxicj7CoCBscnd4cnd4cnd4IDEgcm9vdCByb290IMKgIDcxIEphbiDCoDEg wqAxOTcwIGxpYkVHTC5zby4xIC0mZ3Q7IC9nbnUvc3RvcmUvY2xuazFhcmJrYzZ2MjFhOTNneG5p cnZzYmphejV2MDctbWVzYS0yMy4zLjIvbGliL2xpYkVHTC5zby4xPGJyPjxicj7CoCAkIGxzIC1s IH4vLmd1aXgtcHJvZmlsZS9saWIvIHwgZ3JlcCBsaWJHTC5zby4xPGJyPsKgIGxyd3hyd3hyd3gg MSByb290IHJvb3QgwqAgNzAgSmFuIMKgMSDCoDE5NzAgbGliR0wuc28uMSAtJmd0OyAvZ251L3N0 b3JlL2NsbmsxYXJia2M2djIxYTkzZ3huaXJ2c2JqYXo1djA3LW1lc2EtMjMuMy4yL2xpYi9saWJH TC5zby4xPGJyPjxicj4jK2VuZF9zcmM8YnI+PGJyPlNvIEkmIzM5O20gZ3Vlc3NpbmcgZHVyaW5n IHRoZSBpbnN0YWxsYXRpb24gb2YgZ2VhbnQ0LXZpcywgc29tZXRoaW5nIGlzIGJyaW5naW5nIGlu IGEgZGlmZmVyZW50IG1lc2EgZnJvbSB0aGUgc3RvcmUgKC9nbnUvc3RvcmUvMnJ6ZGx3YjBmN2tz ajdhNzhram43YTdxczIyYXZpOGwtbWVzYS0yMy4zLjIpIGludG8gdGhlIHBhdGggYXMgYSBydW50 aW1lIGRlcGVuZGVuY3kuPGJyPkkgbm90ZSB0aGF0IHF0YmFzZS01IGhhcyBtZXNhIGFzIGEgcHJv cGFnYXRlZCBpbnB1dCwgc28gcGVyaGFwcyBpdCYjMzk7cyB0aGF0Ljxicj5CdXQgaXQmIzM5O3Mg bm90IGNsZWFyIHRvIG1lIHdoeSB0aGUgbWVzYSBwcm9wYWdhdGVkIGZvciBxdGJhc2UtNSB3b3Vs ZCBiZSBkaWZmZXJlbnQgKGkuZS4gaGFzIGEgZGlmZmVyZW50IC9nbnUvc3RvcmUvIGVudHJ5KSBm cm9tIHRoZSBtZXNhIHRoYXQgSSBpbnN0YWxsIGluIG15IHByb2ZpbGUgb3Igc2hlbGwuPGJyPjwv ZGl2PjxkaXY+QW55IHN1Z2dlc3Rpb25zIGZvciBob3cgdG8gcmVzb2x2ZSB0aGlzIHdvdWxkIGJl IG11Y2ggYXBwcmVjaWF0ZWQuPGJyPjxicj5UaGFua3MhPGJyPjxicj5KYWtlPGJyPjwvZGl2Pjwv ZGl2Pg0KPC9ibG9ja3F1b3RlPjwvZGl2Pg0K --000000000000683da906143905f4--