From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <10walls@gmail.com> Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id 344C33851C1A for ; Fri, 20 Nov 2020 18:28:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 344C33851C1A Received: by mail-pl1-x62e.google.com with SMTP id 18so5262526pli.13 for ; Fri, 20 Nov 2020 10:28:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:references:from:subject:message-id:date :user-agent:mime-version:in-reply-to; bh=CoX/FCy0EoQ2RhufnwYtW0fTqTeSMG5ojh/TNiSLjes=; b=Y+qIWCwE9IRhUoCwv8i4oIDWkspYn/fVCoHLKqg/RIkvqw3z3hzIvqyEQveupqq7zE EiVcKmn0/3/nfd8cd0RQBnpbQ1H0pZuDkvUGuzwJMsUkizES+6X4nteKzF9gfDy+TKxs VuU1ptydeS9MjNvfPrngqam6mkg4yOx2JzICeO0uSxsNhwuhVNgZIABwA+uNetJacfIz 2WdgzPQGqqlkdsjxCD13ZxORLMlA/tckRU7ws7l7Gdvqo4wHc9Rzd8mvIIM5vnmJAFBV 1BcSQwfEJAag+P+bOt5QFGPcoINBaX8h4FCpwfyBNi6GC5tPS5fYeh15sD3XB1fT4+jt 3Skg== X-Gm-Message-State: AOAM531Tdw2tTzq/5Tsz7b0kYQ6ZdrY08GNhzAiiCzgelb1Em39RFZiu MT2RBG+OorGsCCMpUIOpWeqCTQpPDL0= X-Google-Smtp-Source: ABdhPJyz+9lCzqGvh1OXfkVe38Xu7HIDBXYUKEhznx/blPYTBZvRyJm4cv8L2HISpo6rV4pZi7lwMQ== X-Received: by 2002:a17:902:7612:b029:d6:ee36:4e42 with SMTP id k18-20020a1709027612b02900d6ee364e42mr15109888pll.38.1605896927976; Fri, 20 Nov 2020 10:28:47 -0800 (PST) Received: from ?IPv6:2001:f40:91b::cba6? ([2001:f40:91b::cba6]) by smtp.gmail.com with ESMTPSA id ga18sm4682599pjb.5.2020.11.20.10.28.46 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Nov 2020 10:28:47 -0800 (PST) To: cygwin@cygwin.com References: <000a01d6be5b$3808cad0$a81a6070$@gmail.com> <87a2c99c-045c-e815-4c03-bab7a89a025b@cs.umass.edu> <000201d6bf17$7cc4beb0$764e3c10$@gmail.com> From: Jonathan Yong <10walls@gmail.com> Subject: Re: Sv: Sv: g++ and c++17 filesystem Message-ID: <9e881c01-e883-ecd5-883a-e1ac55c740c7@gmail.com> Date: Fri, 20 Nov 2020 18:28:37 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.2 MIME-Version: 1.0 In-Reply-To: <000201d6bf17$7cc4beb0$764e3c10$@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="F5aP6gPtBLjybkcCNOrwX5NwavNFs4AMn" X-Spam-Status: No, score=-3031.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, LIKELY_SPAM_BODY, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 18:28:50 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --F5aP6gPtBLjybkcCNOrwX5NwavNFs4AMn Content-Type: multipart/mixed; boundary="lvsdpY7GTk6rDiCC8pwTy1FIeUUtvJZJ4"; protected-headers="v1" From: Jonathan Yong <10walls@gmail.com> To: cygwin@cygwin.com Message-ID: <9e881c01-e883-ecd5-883a-e1ac55c740c7@gmail.com> Subject: Re: Sv: Sv: g++ and c++17 filesystem References: <000a01d6be5b$3808cad0$a81a6070$@gmail.com> <87a2c99c-045c-e815-4c03-bab7a89a025b@cs.umass.edu> <000201d6bf17$7cc4beb0$764e3c10$@gmail.com> In-Reply-To: <000201d6bf17$7cc4beb0$764e3c10$@gmail.com> --lvsdpY7GTk6rDiCC8pwTy1FIeUUtvJZJ4 Content-Type: multipart/mixed; boundary="------------C4AECF09A36CA1DA254D2171" Content-Language: en-US This is a multi-part message in MIME format. --------------C4AECF09A36CA1DA254D2171 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable On 11/20/20 8:31 AM, Kristian Ivarsson via Cygwin wrote: >> that, for me, /c works.) Likewise, I would expect the normative path >> separator to be / not \, and an absolute path to start with /. Window= s >> offers several kinds of symlinks, with varying semantics, so the detai= led >> behavior of that would be affected by the settings in the CYGWIN >> environment variable >=20 > All the implementations of std::filesystem I've seen so far, is agnosti= c to > whether / or \ is used as a path separator (but the generic form is '/'= and > a fun fact, the MSVC-implementation of std::filesystem handles the gene= ric > (posix) form more close to the standard specification than GCC) >=20 That is not correct, \ is a valid filename under *nix, but not on=20 Windows. I don't think the standards specify what filenames or character = sets are valid. Cygwin strives for *nix compatibility, anything else is=20 secondary. >> I would expect std::filesystem to present paths to construct paths to >> present to underlying library calls such as open ... and on Cygwin, op= en >> uses Posix style paths. >=20 > I consider that to be a mistake in the implementation of std::filesyste= m, > because on Windows the preferred style would be smt like C:/ and then a= s an > opt-out it would consider /cygdrive/c (or such) as a valid thing as wel= l >=20 Cygwin is not Windows, it runs on Windows, but it is not Windows. You=20 should use mingw if you want Windows style paths. There isn't a magical=20 tool that allows you to have it both ways. >> I "get" that you want to write portable programs that use this interfa= ce, >> which is analogous to the Java file path classes. In terms of how thi= s >> interface works, I would expect it to _claim_ that it is Posix, not >> Windows, because the paths Cygwin supports are Posix style (it _will_ >> recognize a few Windows idioms, but it is correct in not advertising >> itself as Windows). >> >> So it you want to do Windows-style (but abstracted with this library),= I >> direct you to Mingw. Each has its place. Cygwin allows one to preten= d, >> pretty successfully though with a few small rough edges, that one is o= n >> Linux, not Windows. That is its intent. Mingw gives you the gcc/gnu >> toolchain and libraries under Windows. >=20 > As stated earlier, we're using Cygwin to be able to keep some kind of c= ross > platform code base and Cygwin offers non-cross-platform-standardized > libraries/api:s (i.e. posix) to be executable without having to #ifdef = the > code base to be buildable and executable on Windows but MinGW doesn't s= upply > those posix libraries on Windows (maybe a few), so using GCC/MinGW is n= ot an > option and I guess we'd go with MSVC if we wanted to port our code > completely >=20 If you use Cygwin, you are expected to use *nix paths, not Windows=20 paths. Windows paths may work but are not supported overall, as Windows=20 is not POSIX. If you want Windows, then use mingw or MSVC. Since you=20 mentioned it is not possible to use mingw, then that will leave you with = only MSVC, your only possible choice is now clear. > std::filesystem is supposed to be cross-platform (and easier to use tha= n > various posix-library-C-functions) though and it is cross-platform per > definition but, then again, not when using Cygwin >=20 Yes, cross platform, you can use std::filesystem on Linux, Cygwin,=20 Windows, Macs, but it certainly cannot do anything that can't be handled = for the underlying platform. For Cygwin, it means using *nix paths, not=20 Windows. --------------C4AECF09A36CA1DA254D2171 Content-Type: application/pgp-keys; name="OpenPGP_0x713B5FE29C145D45_and_old_rev.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="OpenPGP_0x713B5FE29C145D45_and_old_rev.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- xsFNBFDEdwIBEACSrmywJMpgYlgJa0HJ1AFu9tQp8yVpVS21EfnrSK16TS6PoW/JS78D5CYxp= shP zr1iil8yeL8/val1yXkI8uNZjMnhLxMBU5C7WEMCeY/h760btG3bZZ5BMCNCkC0YfrtvJJQDE= yv1 H+p1U7yMFRyxNtMjaf6QDzoRjTVOzO6mtNMZWYnlhzC54etiVt3HQ4jKOlKbI+dwjigIw8B1S= Z+x WcukAHRMBcIZYLjbnAI/XNu796pfwh6QEhJjr8EpvyNjdHLFSMMuyUPO/a3sr/jkFSTpqt5lr= 9jW ejdQwe7e8WtbC+euv++fH1B9Yz42259kLxgH+aHk6lWX3epIIx3w17rGfaMrFrINjXEBGLLOQ= kIy 2LtBLYRU2NhDg+VSDOEwAsiOVZs1EHpSNF5GV12L8SFiNtVToHxLRpObNpYIHBkDFzx9gvQfX= 5Ko cx5XFhBiNfTjdxBOjopLzQHpfCSo3fzSqc7zpscqOw3uni7GIN86fI8h3wSV44dQ4yaervnL2= kZy kRyWL5y1C9WDfjzljTIeLB6gK/gBbrsuKuVC42r6xAK9yC9pL0Trf7+GLJ9UF4WGnJ5IvfVpZ= 7gt BMjWOpiwewTprdBNwhLsVSep9Vqg/cbtmG6AnpzNtMsLEWAwDpgaFa5KqlehgUCuMlEdU6Lhv= Sd0 cJ/pqKwwzxEiLwARAQABzRlqb25feSA8MTB3YWxsc0BnbWFpbC5jb20+wsGVBBMBAgA/AhsDB= gsJ CAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBOUK3Z2wV/T6ZOG2z3E7X+KcFF1FBQJb/k5NBQkUn= 9jL AAoJEHE7X+KcFF1FVlkP/jwLb9aab268Q3XQnocIDD7HArFnzKyvIvIndqGuGs51u+6p8I+zB= KHI yF4T9E1mkXfq2bRIbvKojrkAGi7KgCePKHRILVtfiAANSJtj9304WcUYIiD3vLHgB0Hiv5AUc= 3YW ntnaznKh8VMLMx/ANf3/OjeldikLunkC7vu/YwhbdsPWDEn7v47FsllqhbLbjsm+trboiORJM= UzA dJ65yv2WvRKnsRLdrXSyXxcW651XiNstVpgCqGkZP1PUSxUX8SvA/UzVXC4rw0nHaVVlB5Jov= ywL /Y/3GG6q3/x6hXWgqDBB68GvlQLA39JRGq6ELwwE9mo5EzU4q6a1Y2Uy1ZKqJ56xs+peI5qJd= FtI fXcPX2e6wdaCW631HcgJpykIS/gwDIsxI8NhfmiDLXY1sWnKDU0hjIwDEP/fjLtHp2o1TFBzB= MX9 4/CLi4kt2jhPZqhZed/unJ3IVtpwfi7Lum5LuNQhHqPF8U2YGJfIwaap6KUThy3CffPBhzSyQ= bTl izhP9hAGaMqh9NomJn+YIJlJEYoRkubcaQ95Vev4K0y3LNklxbePo2Jwd+ovxprS6NeJJaRTV= pR8 ZO58RD5B/1oKTW6udVQIeNATjkwoDSR6fi9s7sLLfCVy4404hYuzvrlm4QF3gruz4qhL4w1SG= 0ld dEGhMderspH9WtQs4H7ewsF+BBMBAgAoBQJQxHcCAhsDBQkJZgGABgsJCAcDAgYVCAIJCgsEF= gID AQIeAQIXgAAKCRBxO1/inBRdRSpmEACCSmpexUnrETc2+suu5d5Qj4mrIfNeYlMLGgBObD21q= Ny/ pcQs++BVOEdy4O7rNevWvlgN770JoD1hixzsI3eOqOn5hnaKvRAzbtL0U69qwUcyefTuhNT/S= Jpl h7U73tqUoj9UskgRNTqYt2echszQ52BmdkLuGYY/1Pv3zhXncPGtTNHaTc8MhkuHqDZFyXX6d= ovM D6p+7C7OgZwjINVzsRvPJjb7TbFBkNgAsFdYfSZkSBfY26t7Af0St+Z6WwcUpvGC9CSd2ubvk= TGF 8RNDXyXZ1PNKtoYoY3BlkD6jxYosufi/2/o/DySWU2eNF/0i9xyeJ7wuve9sh+EIJ5nUzfk1G= 6DL a3qhck9umnbdOJF7LUqUNRz05Zo8Y6aSAsLt0bVJ4wgeGD6IhtHNOu7Gp0vwsdsv5Bx5Iqf3i= i3Y m3CNSe+DhVYrIsOESSEnuyIbSkJwvbtAArxGYffHmaDNjzrQ0nvFvjQvmiklvONMy69WsQHKB= eFT e5YZAfpwUPw7K8Zet3wK2jeMOOPvZyQBM0vkrC13hvarzyyDTuqQfSrQKUAukJBJ0HRf1Pnek= tEL UILvpTUXVb5zgPh5q7iwY2Wp7v8uv7ESLV76muA3WCmI+BEOfSkyg9KfSGSLB14+MNGsbGNYv= YH8 NJiQRHMiSSybhilO0oOEYl9hnCN+Yc0hSm9uYXRoYW4gWW9uZyA8MTB3YWxsc0BnbWFpbC5jb= 20+ wsGWBBMBAgBAAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AWIQTlCt2dsFf0+mThts9xO= 1/i nBRdRQUCW/5OWQUJFJ/YywAKCRBxO1/inBRdRZf0D/4kY6ZXlSH4TdGQFEvjTOQNiui2Mpy6H= JmP aTY4x/eu+M1pec4bNpTiP1yhQSWQ2aXCBQj8dJEAYr71WC+3+XEr2daViflu2DA+5zRgXNJZD= JLY DCVJS+EM1X43hyUVEcOG1LL0nB/vZ9QYRIgh+j90NHXQ5MXYcMzQS/+urR0gNsME4KwLbQGbd= 8eA Ie0jNu0lEdqNjHxS0lPD4mE2Z153nQvnWxFAmbUYKaSyAkUNOuVquGRk4UsS94Jl4P8rnZ1+H= Swi JQXQSuMYESjmgkTw37BUcmUXfh3qiYZBMq9N027QFontVmICnNessVyqPQ9RCj96Yuu/0BjIa= Z6b 9Vjc7O/LLt/GgxGIdeer8k7u3E3QyhwtvxJDlJ+kjhHjYmpHSzIDRCLqGwmk4FKnrkqh49j21= gh2 YWmZ7kJ3rcEjx6wPJ8fxaoVBAIg3szbspGqR1YKW1cMfs75hFvMMrjOiGTgXUwdjR5QOu+a+2= yeA pkZ0zRfHzVcS9eWxyMGPk7fc0tkpQ07uBi3cW1sOV0H+NoIdtiDXkihb8N+zXiz/qZwdj5/hi= YcB 54JjxACzk4V3DKu4NCIAkfuMTBIoTkUFdRpngaC3Jf0PM9Bv1bSmNMSQGEWjKHOUnC6+xi2Dh= fF5 9PGZIrHad1da2pVF0SFnEPCMJG4iXicTw36trJYfrsLBfwQTAQIAKQUCU3X3YAIbAwUJCWYBg= AcL CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEHE7X+KcFF1FITkP/R+JT8lQova36BfsrdfMP= v3C ApwE/nyyf1SddYojRteCo1cJbYmpyV8dw42am01D3j4po+pYGN7p3DSbF2zSSJkdGC4X0COVI= 4aV 3AO2MPOe/RvszRgcnmP5VLjnokN6pOOBkdEovqg+O3zRG4DScaWxnjIddoirNFpJ5sssH/oNL= 0bZ RzkPmtHOezIS5D9PEDk24XGYTURPoHqNsQ40pdvtxLFU7kR5D8xTDzBQjnnBSBJJId7T2O0BM= xDx GVv7iSfrQHBM2rLNLizSJkzr5do43DlHI5IoNy4vNsEvaUkgEonR/BDIoxuGWpLZ/WZwTuYPq= HYA cDYYzJOm+Hs9N8B4HAxe3BdfpWBiVT+lpsoBrDk/q7xZ+I7Axg5u6nklNRvRBwqJhEKKz+kgR= WGp FpsXuslNDdTiD9h1c398F2yDe4XFCQfCBTzTDDQVHHh2y+ytf812WfYIbfkM7HtjoBshyqrkG= XlR ckMMAq7bkIQDYD+UKDUVoDCt8sDgoV7rraMtFRiLmD57/VUfDlQMddmZGCMgmGpSktzg7xHzc= 3Z3 ZBAuiF2aIcofp6ZhH+2fND5IBnyl0FGuK5hSky5ZgO4QAdGxKmOVj3+1MUV/oif6ls+QVshuS= 86T 9Xnwa7QuHBW/L0BnHDCO4JDPjJKgO5zbqexr5yESElkFIFwHyFrDzsFNBFDEdwIBEACsXcBns= 4YG VTUGMVKVGEocPffmAhAY89XSk1c1qWPngieUtZ2GoiG+a8IKAqYIjfpuV/YXX8i9mXuGAGJvf= 6rR hpPos8v76y3qoFFrPsFjNaiTTTvPn1oNRT+Br5KWjJaDomGkmQe5bGrok6ETK4VgRdYWPib7I= bTL UX1rzfaKvDP219HTsdWj/cdE3QGTZjekJUiJqgqSS8SmaBNtFm2T18r3gdx6+Xq0kJPW421Ia= Xtu xbyD3MTBVJYEfY+rEvVfMUi9rvsfCG0djJOh8954D8AhVY58x7aszhHddTeQlXxUdwNpyJFFo= FFh pj0LvmhCH84eaf+9eW8VqegPDzE2MJ/Oe+bftYS9qtIx4MMHRU5Wl7g2x3QUhsmyev3BmhBvq= Fzo 6TmBZ1bjp2MXZqQw2d5YXJNb0Vtr9qgV1EqnoG7Lf5q5wcENYAJDVeOzOMxUnM3u2VYbt8GMu= 3QI TxpHw4lOukzarmEmAq3EwwzBxFKKmD9gvAbkAGmimONRiQSY9OBEW4XLmOqy9b7pnoS+6x0Oq= v8l ELvz9TJ2Kh5urXJ/7LOvof9z3R0g7Hn7AWn1Y+0hUKN1vRqziJdIFqZ7kcViiKYAKfYiDPlHS= AVg uc3qvok0P8A3uS5qvkz2yC3C5Jt913FoNVu3ny0/UCDjpSAqC3qTXMx3otwLDLv/dwARAQABw= sF8 BBgBAgAmAhsMFiEE5QrdnbBX9Ppk4bbPcTtf4pwUXUUFAlv+TloFCRSf2NgACgkQcTtf4pwUX= UWz cw//ckxWc2Zyd58jjZxpMG1hpGHJVMyi+1aC12mCozlKuGDUBhbEbs6z8INlAQh9ic5dh9jXW= 8Wc lJglzo1Bm1naQOUmCFLh2WgV/0Om9vqDeJ0r5J2xcoBesiAflt/2dBHn3sZHivwq46c2/pMl9= 5LA oA9z+4lZLBCjL64wo9QZujrDoSlUTKMnmfTKYzvUqF4Y7394b3cwi4WNlR3CeqAzU5f+RjGlI= pCT P2h+ui7L8JvPCBLzy6lcEm6NJayUIMDyFKYtlJdiPOVtSveZyrFjx6qWrIHogOXTorTZrtysB= i8g AoU+7h7dOBswi0vnjftyH7S6M8N0K+LKnRj8zBjajyAcBRuvXP+tfvIPHUMnkWifgMLhrMUgT= ZHX 4V4DVjNHzVuAxr+yIHGLUgn6sSrYnYX8aCK37cByLO78563LaT/p7WD56R5grBe0HEaoarixV= mov v4GzI3GGNLBx+GraRAtvbPsol0sZ0OZWKWVL1/meHi7Fe5EFYeoI5/xANT1Xm+GMnLGrt6CH4= 4Fa J0rUQ900ZGf69laS+pniyasFgdtiUeCLCcUww9k6jUq5Sa1npJYFVJqnuush2cUXWG5Z9DFZ2= Jg7 LWvZqUc2rt0B8+AIWWfEGNoh3KgziYAnpr+5iH7wMIsgvMwRrJmB2S4ixQUNVeE06B+VUDKv1= Bkf mRHGwE0ETSg45AEIANeD/h9XEUDi0xZYKQGk/cw5Kih5spOB3UE4m6JKhv+3vrH9M7Zxt88Cs= naM 7jnbUm6iBsTCn40FrYl/20G+iJtAQiblvKdNS5Ivk0wWor7hTZMRAKzqmPX+xUDPgfu+8N++0= aGu gdAfKsGELJxRim1tRT7ntS+8fWoP2qkn+Mv8DCgUQSZGtwbWQeCRsBHuKfA7uPJHLUzwdgPa5= XAz fWw6ggFvpA8XBlKuT/duSgSvyKMUZ5Z6TiRClol20YwVfsFXxZmzr453obGy28ckS8JnLRxg/= 6cY dWH6Ex+bhI4gcZORUDeY6lRisIB1s3PIPZYv0gKRO5moJawZcAvw4LUAEQEAAcLAXwQgAQIAC= QUC U3X1IAIdAAAKCRBuRRqDPvSezXPkB/0ddadFpDaInaoNvlCg9iN4c/rMzfkw4G6nMAbwSqNQ6= ixF WLIirXi/YV4/O5gTpEdpT5j62AfqCM3rB+FeyHFLd69y9kFyTde16NsgGLmSAnpZa6Y9wCg70= Pyb tcCE/hIyENYKfLYj1IW5Olc5plLzsfOTTaMTXiG9WZ9j+YxQ2ge4UucqSc4sSttf8WZJVqQsv= +a0 GtC1pABjoMmv6Xn8PrTF43VUiOFy1XdYYNLLGPYP4fSclJk7K2q+IHDdUU3FzzbM2+i3HF8fV= aCv q03oVLtDMuhxtLDHT845iDoGnNxKMqeZdDlpGLKhw72YV/cP+N+WBdVzHywv6LUmhdSewsBfB= CAB AgAJBQJQxHiSAh0AAAoJEG5FGoM+9J7NiowH/iyQWOPjm8nf0vkh2YCtqCNA6AH4AH8mOZVhN= qfo ++B6cfX5w2WyFXs97MMyPuVJjg51wFPLIjmVREVkWHsdGYCK8ipyMRp+aAGZkq7lFreCqD78j= y1I AuAaGq4ewKBtt9VqX1n09KfQBm+uPhiDSYYpDeVFvuD4NWlfq50IviWe9+DdpMFhDaKf3jaTi= ZFa fRzX2i8myWvX3hF6rwxACedcTuJR74YC/pW6ZMVe1+13A7tZEXwGd6H2zkY0HH+ltNv/Im+H2= WQo DbXYmKzpe+0leBY3bL6+2+eZuKKzhhHbnwnBTubo6QIXXYW575Pb+6ascVebFooRD4EJuDnhY= OzN GWpvbl95IDwxMHdhbGxzQGdtYWlsLmNvbT7CwH4EEwECACgCGwMGCwkIBwMCBhUIAgkKCwQWA= gMB Ah4BAheABQJQxHW4BQkDnSVcAAoJEG5FGoM+9J7N9EkH/3heEJaIwbrjq3RMywLTmOGX1NxBK= 6lz CxjRZcOK83hg3CdQu7b0Cvd5jubWKNdER1JoIyE4MVmDbUIdZQHGY4boG7torVGI+k6EUGQTu= p1P Af9YNXqAZLxQQUc30pxowKILBOwpT6Dvy0RVd2ddglrKYnG7hH9uoGwowUOVMUeQ1hxYpDoTt= zN7 L3TfiBOD0aQ82QJYAE5/mzwAJAYV+qfCNKOthTPHcrRsdzKT1Sjfupmi9XF+U+Kp8rxqa+EVG= vLY HtgLbLa+BgUc20MjMJ3Y9cBHNHHr4ZtXRTVN0LC4Ui1T93JttwSPHld5ZDXxlaMFDD5MDJ4oX= dmL qjUll9zOwE0ETSg45AEIALRd3uUSAqv+sSOEpKPKONCcJx9Yv4GKpaBMg1Q1K2Dw73Im/B9p7= xUF 0ZN9OBR5l/Ho42W1vCTZMwYXuJkLYRFpXXVALTMHI9k2ADhqMvoxe044zS3q7Wd0dIQOBe7Gb= Ue3 rU+amvp+SF7qvB0AL3MK3MWEsXiHZUomj9dbEsWeo+5rZnGe51U0csPIUv40NRXBdtMIPVyH8= Osb n6EMjA1xvoDOqLFSrtAWuvRDlfsF7mQC/A5X6zPTG2dS2ooqkkIm9M7o3Yx2OwBRUfhexVsU0= r8S eNdaAW0fYGYhw36PUGYrwOXuNxeUnlYt/wsxLjKsjGkhJPx7bN5Ex4aXpdsAEQEAAcLAXwQYA= QIA CQUCTSg45AIbDAAKCRBuRRqDPvSezTT2B/9Q2tyuSxHlsF1DK+bT/JU300ANWGWDyo8v/UOVF= uhJ W5s0at+TfrbwWtdDEEFzLpSxrjUxcxECzbi63DLqlxS/Ytge7Fccc8BjVpZAIexIXiYKtdUV0= hcc I3soGpKFPr/eDKxnjBVG/+OBaYU/yjUPKA+bhpKdkXC3khzATxIbstfbgu8F9PaGQpDKM9thy= BDJ VeVfMoE0RvLtGyvbUWGFiGrjQw1sOe+xLVLV+ZhZnsGU4zFmrRoLNipJzIopPIOjrIlzIBm9X= BY3 GkCWTg0rx86v4dDW9d1SNGhZ0lgQ0pA7q0ODWl803L5cOLmdvcOvvsH0pGkS+odZw0klsvVh =3DtNbV -----END PGP PUBLIC KEY BLOCK----- --------------C4AECF09A36CA1DA254D2171-- --lvsdpY7GTk6rDiCC8pwTy1FIeUUtvJZJ4-- --F5aP6gPtBLjybkcCNOrwX5NwavNFs4AMn Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEE5QrdnbBX9Ppk4bbPcTtf4pwUXUUFAl+4CtYFAwAAAAAACgkQcTtf4pwUXUWL nw//UlFFGmLifEyz67X1Of6KXrNqSFA1QLsDC4Vn9qShvcp58U9M74Vek3ZQ4e0nlpPKv73/dNz+ oghkOdBbTqhGsREZemlj6CI+3pBF8V134IJ8Nql0aArblgR4SLKBYR+5soz/WEa+glx87GibVg1f 5pJGKaGZDpdGCfkF7jqCr38nzv5BAGNalgY6k9p+61T0s3Ey3MWiGr7LuRAfY9WTzjAG8nmP73lM n/AOLFpMjy/edvZ+uL9LIs81wCXb8Va6IAW0MzoxfE5nrSlVXwS4S+bu93A9EJn7ug6t6RZZzSAM xFJqGFl6YUECN9wMG+YjDd8xNnSLHRrDZanAfnz4n8sPlIuI+JXNtT+1BdxShw/ykWKGWLM87fcT s+j7o6SHJ251TlbOJzcYXZ1kTQEjswmmgSFoXE3oDTrevt1X/Fi6KKguu7O6YH9aiSWaj4y/D14j RPR14Q2hmZPjgVkMykneKJArbx8XdONg5tG3Ev+qw2qI++nNRw/+dpt02shd8I8+b0Zezv6oflzt W3s6+fXslIVz/PrP65urRNGEzIaPwXDsHzBj2B80RwjM3xH73AFkH/GWtTS2+x0fCLO90UmX3UuO oMnJfPEaLi+a4sYXH7SIGkoqjw8Ns57XyCXyWGMV5jgYTIXMfFmRRSQtx/nM7Hg23rLdgS6dSg4q hVk= =M1Nf -----END PGP SIGNATURE----- --F5aP6gPtBLjybkcCNOrwX5NwavNFs4AMn--