From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29417 invoked by alias); 26 Aug 2005 15:19:17 -0000 Mailing-List: contact gsl-discuss-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sources.redhat.com Received: (qmail 29389 invoked by uid 22791); 26 Aug 2005 15:19:03 -0000 Received: from mailwasher.lanl.gov (HELO mailwasher-b.lanl.gov) (192.65.95.54) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Fri, 26 Aug 2005 15:19:03 +0000 Received: from nis-mail.lanl.gov (nis-mail.lanl.gov [128.165.4.121]) by mailwasher-b.lanl.gov (8.12.11/8.12.11/(ccn-5)) with ESMTP id j7QFJ1pi024613 for ; Fri, 26 Aug 2005 09:19:01 -0600 Received: from yks.lanl.gov (yks.lanl.gov [128.165.112.13]) by nis-mail.lanl.gov (8.12.11/8.12.11/(ccn-5)) with ESMTP id j7QFJ0k4016466 for ; Fri, 26 Aug 2005 09:19:00 -0600 Date: Fri, 26 Aug 2005 15:19:00 -0000 From: James Theiler To: gsl-discuss Subject: suggestions for Gamma Functions section of docs Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY="-1518334608-1108703236-1124998239=:31186" Content-ID: X-PMX-Version: 4.7.1.128075 X-SW-Source: 2005-q3/txt/msg00055.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1518334608-1108703236-1124998239=:31186 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Content-length: 4456 Hello, In a recent email, I made some suggestions for Section 7.9 [*] of the gsl-ref text. I decided to go ahead and convert those general remarks into some actual text, which I have attached. What is attached specifically is a new version of specfunc-gamma.texi; since i did a lot of re-arranging, the diff file is even longer than the file itself. I also made a few minor changes to the specfunc.texi file, and those changes are noted in the diff file below. As I mentioned, the most noticeable change is just to re-arrange the functions in a way that I thought was more logical; with the gamma functions first, followed by the incomplete gamma functions, then the Pochhammer symbol (which is just a ratio of gamma functions), then complete and incomplete beta functions, and then the various factorials (fact, doublefact, lnfact, choose, etc) with the taylorcoeff as the last one in the list. Less noticeable, I also changed some of the notation to be more consistent, and added a few notes of explanation to the Beta functions and Factorials subsections. By the way, in doing this, I was a little confused about how to write texi files. I think I finally figured out @c{...} and @math{...} (they are quite confusing: if you do @math{expr} then you get a math expression, but if you do @c{$expr$}@math{expr} then you still get a single math expression; in the existing text, both combinations appear, but it looks like @c{...} is used whenever the latex is a little more complicated (eg, \ge vs >=)). But I still haven't figured out where the @example's appear. On the web page, we have in the Documentation section of the design document (http://sources.redhat.com/gsl/design/gsl-design.html#SEC14) some good comments regarding how to cite references, etc, but it would have been useful to have some hints about what conventions the gsl reference follows with respect to these texi commands. Another by-the-way, the "JT secton" of the Documentation page is essentially outdated by now. regards, jt [*] I also made some comments for other sections of the documentation; the changes in this email don't address those comments. $ diff -C 2 gsl-1.6.91/doc/specfunc.texi gsl-1.6.91-new/doc/specfunc.texi *** gsl-1.6.91/doc/specfunc.texi 2005-05-19 12:19:01.000000000 -0600 --- gsl-1.6.91-new/doc/specfunc.texi 2005-08-25 13:21:46.000000000 -0600 *************** *** 3,10 **** This chapter describes the GSL special function library. The library includes routines for calculating the values of Airy functions, Bessel ! functions, Clausen functions, Coulomb wave functions, Coupling coefficients, the Dawson function, Debye functions, Dilogarithms, Elliptic integrals, Jacobi elliptic functions, Error functions, ! Exponential integrals, Fermi-Dirac functions, Gamma functions, Gegenbauer functions, Hypergeometric functions, Laguerre functions, Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, --- 3,10 ---- This chapter describes the GSL special function library. The library includes routines for calculating the values of Airy functions, Bessel ! functions, Beta functions, Clausen functions, Coulomb wave functions, Coupling coefficients, the Dawson function, Debye functions, Dilogarithms, Elliptic integrals, Jacobi elliptic functions, Error functions, ! Exponential integrals, Factorials, Fermi-Dirac functions, Gamma functions, Gegenbauer functions, Hypergeometric functions, Laguerre functions, Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, *************** *** 36,40 **** * Exponential Integrals:: * Fermi-Dirac Function:: ! * Gamma Function:: * Gegenbauer Functions:: * Hypergeometric Functions:: --- 36,40 ---- * Exponential Integrals:: * Fermi-Dirac Function:: ! * Gamma and Beta Functions:: * Gegenbauer Functions:: * Hypergeometric Functions:: *************** *** 210,215 **** @include specfunc-fermi-dirac.texi ! @node Gamma Function ! @section Gamma Function @include specfunc-gamma.texi --- 210,215 ---- @include specfunc-fermi-dirac.texi ! @node Gamma and Beta Functions ! @section Gamma and Beta Functions @include specfunc-gamma.texi -- James Theiler Space and Remote Sensing Sciences MS-B244, ISR-2, LANL Los Alamos National Laboratory Los Alamos, NM 87545 http://nis-www.lanl.gov/~jt ---1518334608-1108703236-1124998239=:31186 Content-Type: APPLICATION/x-texinfo; name="specfunc-gamma.texi" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="specfunc-gamma.texi" Content-length: 17231 VGhlICBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbiBhcmUg ZGVjbGFyZWQKaW4gdGhlIGhlYWRlciBmaWxlIEBmaWxle2dzbF9zZl9nYW1t YS5ofS4KCkBtZW51CiogR2FtbWEgRnVuY3Rpb25zOjogICAgICAgIAoqIFBv Y2hoYW1tZXIgU3ltYm9sOjogICAgICAgICAgICAgICAgICAgICAgIAoqIEJl dGEgRnVuY3Rpb25zOjogICAgICAgICAgICAgICAgICAgICAKKiBGYWN0b3Jp YWxzOjogICAgICAgIApAZW5kIG1lbnUKCkBub2RlIEdhbW1hIEZ1bmN0aW9u cwpAc3Vic2VjdGlvbiBHYW1tYSBGdW5jdGlvbnMKQGNpbmRleCBnYW1tYSBm dW5jdGlvbnMKCgpUaGUgR2FtbWEgZnVuY3Rpb24gaXMgZGVmaW5lZCBieSB0 aGUgZm9sbG93aW5nIGludGVncmFsLApAdGV4ClxiZWZvcmVkaXNwbGF5CiQk ClxHYW1tYShhKSA9IFxpbnRfMF57XGluZnR5fSBkdCBcLCB0XnthLTF9IFxl eHAoLXQpCiQkClxhZnRlcmRpc3BsYXkKQGVuZCB0ZXgKRm9yIG5vbi1uZWdh dGl2ZSBpbnRlZ2VyIEBjeyRuXGdlIDAkfUBtYXRoe24+PTB9LCB0aGUgR2Ft bWEgZnVuY3Rpb24gaXMgCnJlbGF0ZWQgdG8gdGhlIGZhY3RvcmlhbCBieSBA bWF0aHtcR2FtbWEobisxKSA9IG4hID0gbihuLTEpKG4tMilcY2RvdHN9LiAg ClRoZSBHYW1tYSBmdW5jdGlvbiBpcyBhCnNwZWNpYWwgY2FzZSBvZiB0aGUg SW5jb21wbGV0ZSBHYW1tYSBmdW5jdGlvbiwgZGVmaW5lZCBieQpAdGV4Clxi ZWZvcmVkaXNwbGF5CiQkClxHYW1tYShhO3gpID0gXGludF94XntcaW5mdHl9 IGR0IFwsIHRee2EtMX0gXGV4cCgtdCkKJCQKXGFmdGVyZGlzcGxheQpAZW5k IHRleApGdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBHYW1tYSBmdW5jdGlv biBjYW4gYmUgZm91bmQgaW4gQWJyYW1vd2l0eiAmClN0ZWd1biwgQ2hhcHRl ciA2LiAgCgpAaWZpbmZvCgpAZXhhbXBsZQpcR2FtbWEoYSkgPSBcaW50XzBe XGluZnR5IGR0ICB0XkB7YS0xQH0gXGV4cCgtdCkKQGVuZCBleGFtcGxlCkBl bmQgaWZpbmZvCkBub2luZGVudAoKQGRlZnR5cGVmdW4gZG91YmxlIGdzbF9z Zl9nYW1tYSAoZG91YmxlIEB2YXJ7YX0pCkBkZWZ0eXBlZnVueCBpbnQgZ3Ns X3NmX2dhbW1hX2UgKGRvdWJsZSBAdmFye2F9LCBnc2xfc2ZfcmVzdWx0ICog QHZhcntyZXN1bHR9KQpUaGVzZSByb3V0aW5lcyBjb21wdXRlIHRoZSBHYW1t YSBmdW5jdGlvbiBAbWF0aHtcR2FtbWEoYSl9LCBzdWJqZWN0IHRvIEBtYXRo e2F9Cm5vdCBiZWluZyBhIG5lZ2F0aXZlIGludGVnZXIuICBUaGUgZnVuY3Rp b24gaXMgY29tcHV0ZWQgdXNpbmcgdGhlIHJlYWwKTGFuY3pvcyBtZXRob2Qu IFRoZSBtYXhpbXVtIHZhbHVlIG9mIEBtYXRoe2F9IHN1Y2ggdGhhdCBAbWF0 aHtcR2FtbWEoYSl9IGlzIG5vdApjb25zaWRlcmVkIGFuIG92ZXJmbG93IGlz IGdpdmVuIGJ5IHRoZSBtYWNybyBAY29kZXtHU0xfU0ZfR0FNTUFfWE1BWH0K YW5kIGlzIDE3MS4wLgpAY29tbWVudCBleGNlcHRpb25zOiBHU0xfRURPTSwg R1NMX0VPVlJGTFcsIEdTTF9FUk9VTkQKQGVuZCBkZWZ0eXBlZnVuCgoKQGRl ZnR5cGVmdW4gZG91YmxlIGdzbF9zZl9sbmdhbW1hIChkb3VibGUgQHZhcnth fSkKQGRlZnR5cGVmdW54IGludCBnc2xfc2ZfbG5nYW1tYV9lIChkb3VibGUg QHZhcnthfSwgZ3NsX3NmX3Jlc3VsdCAqIEB2YXJ7cmVzdWx0fSkKQGNpbmRl eCBsb2dhcml0aG0gb2YgR2FtbWEgZnVuY3Rpb24KVGhlc2Ugcm91dGluZXMg Y29tcHV0ZSB0aGUgbG9nYXJpdGhtIG9mIHRoZSBHYW1tYSBmdW5jdGlvbiwK QG1hdGh7XGxvZyhcR2FtbWEoYSkpfSwgc3ViamVjdCB0byBAbWF0aHthfSBu b3QgYSBiZWluZyBuZWdhdGl2ZQppbnRlZ2VyLiAgRm9yIEBtYXRoe2E8MH0g dGhlIHJlYWwgcGFydCBvZiBAbWF0aHtcbG9nKFxHYW1tYShhKSl9IGlzCnJl dHVybmVkLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIEBtYXRoe1xsb2cofFxH YW1tYShhKXwpfS4gIFRoZSBmdW5jdGlvbgppcyBjb21wdXRlZCB1c2luZyB0 aGUgcmVhbCBMYW5jem9zIG1ldGhvZC4KQGNvbW1lbnQgZXhjZXB0aW9uczog R1NMX0VET00sIEdTTF9FUk9VTkQKQGVuZCBkZWZ0eXBlZnVuCgpAZGVmdHlw ZWZ1biBpbnQgZ3NsX3NmX2xuZ2FtbWFfc2duX2UgKGRvdWJsZSBAdmFye2F9 LCBnc2xfc2ZfcmVzdWx0ICogQHZhcntyZXN1bHRfbGd9LCBkb3VibGUgKiBA dmFye3Nnbn0pClRoaXMgcm91dGluZSBjb21wdXRlcyB0aGUgc2lnbiBvZiB0 aGUgZ2FtbWEgZnVuY3Rpb24gYW5kIHRoZSBsb2dhcml0aG0gb2YKaXRzIG1h Z25pdHVkZSwgc3ViamVjdCB0byBAbWF0aHthfSBub3QgYmVpbmcgYSBuZWdh dGl2ZSBpbnRlZ2VyLiAgVGhlCmZ1bmN0aW9uIGlzIGNvbXB1dGVkIHVzaW5n IHRoZSByZWFsIExhbmN6b3MgbWV0aG9kLiAgVGhlIHZhbHVlIG9mIHRoZQpn YW1tYSBmdW5jdGlvbiBjYW4gYmUgcmVjb25zdHJ1Y3RlZCB1c2luZyB0aGUg cmVsYXRpb24gQG1hdGh7XEdhbW1hKGEpID0Kc2duICogXGV4cChyZXN1bHRs Zyl9LgpAY29tbWVudCBleGNlcHRpb25zOiBHU0xfRURPTSwgR1NMX0VST1VO RApAZW5kIGRlZnR5cGVmdW4KCgpAZGVmdHlwZWZ1biBkb3VibGUgZ3NsX3Nm X2dhbW1hc3RhciAoZG91YmxlIEB2YXJ7YX0pCkBkZWZ0eXBlZnVueCBpbnQg Z3NsX3NmX2dhbW1hc3Rhcl9lIChkb3VibGUgQHZhcnthfSwgZ3NsX3NmX3Jl c3VsdCAqIEB2YXJ7cmVzdWx0fSkKQGNpbmRleCBSZWd1bGF0ZWQgR2FtbWEg ZnVuY3Rpb24KVGhlc2Ugcm91dGluZXMgY29tcHV0ZSB0aGUgcmVndWxhdGVk IEdhbW1hIEZ1bmN0aW9uIEBtYXRoe1xHYW1tYV4qKGEpfQpmb3IgQG1hdGh7 YSA+IDB9LiBUaGUgcmVndWxhdGVkIGdhbW1hIGZ1bmN0aW9uIGlzIGdpdmVu IGJ5LApAdGV4ClxiZWZvcmVkaXNwbGF5CiQkClxlcWFsaWduewpcR2FtbWFe KihhKSAmPSBcR2FtbWEoYSkvKFxzcXJ0ezJccGl9IGFeeyhhLTEvMil9IFxl eHAoLWEpKVxjcgogICAgICAgICAgICAmPSBcbGVmdCgxICsgezEgXG92ZXIg MTJhfSArIC4uLlxyaWdodCkgXHF1YWRcaGJveHtmb3J+fSBhXHRvIFxpbmZ0 eVxjcgp9CiQkClxhZnRlcmRpc3BsYXkKQGVuZCB0ZXgKQGlmaW5mbwoKQGV4 YW1wbGUKXEdhbW1hXiooYSkgPSBcR2FtbWEoYSkvKFxzcXJ0QHsyXHBpQH0g YV5AeyhhLTEvMilAfSBcZXhwKC1hKSkKICAgICAgICAgICAgPSAoMSArICgx LzEyYSkgKyAuLi4pICBmb3IgYSBcdG8gXGluZnR5CkBlbmQgZXhhbXBsZQpA ZW5kIGlmaW5mbwphbmQgaXMgYSB1c2VmdWwgc3VnZ2VzdGlvbiBvZiBUZW1t ZS4KQGNvbW1lbnQgZXhjZXB0aW9uczogR1NMX0VET00KQGVuZCBkZWZ0eXBl ZnVuCgpAZGVmdHlwZWZ1biBkb3VibGUgZ3NsX3NmX2dhbW1haW52IChkb3Vi bGUgQHZhcnthfSkKQGRlZnR5cGVmdW54IGludCBnc2xfc2ZfZ2FtbWFpbnZf ZSAoZG91YmxlIEB2YXJ7YX0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3Vs dH0pCkBjaW5kZXggUmVjaXByb2NhbCBHYW1tYSBmdW5jdGlvbgpUaGVzZSBy b3V0aW5lcyBjb21wdXRlIHRoZSByZWNpcHJvY2FsIG9mIHRoZSBnYW1tYSBm dW5jdGlvbiwKQG1hdGh7MS9cR2FtbWEoYSl9IHVzaW5nIHRoZSByZWFsIExh bmN6b3MgbWV0aG9kLgpAY29tbWVudCBleGNlcHRpb25zOiBHU0xfRVVORFJG TFcsIEdTTF9FUk9VTkQKQGVuZCBkZWZ0eXBlZnVuCgpAZGVmdHlwZWZ1biBp bnQgZ3NsX3NmX2xuZ2FtbWFfY29tcGxleF9lIChkb3VibGUgQHZhcnt6cn0s IGRvdWJsZSBAdmFye3ppfSwgZ3NsX3NmX3Jlc3VsdCAqIEB2YXJ7bG5yfSwg Z3NsX3NmX3Jlc3VsdCAqIEB2YXJ7YXJnfSkKQGNpbmRleCBDb21wbGV4IEdh bW1hIGZ1bmN0aW9uClRoaXMgcm91dGluZSBjb21wdXRlcyBAbWF0aHtcbG9n KFxHYW1tYSh6KSl9IGZvciBjb21wbGV4IEBtYXRoe3o9el9yK2kKel9pfSBh bmQgQG1hdGh7en0gbm90IGEgbmVnYXRpdmUgaW50ZWdlciwgdXNpbmcgdGhl IGNvbXBsZXggTGFuY3pvcwptZXRob2QuICBUaGUgcmV0dXJuZWQgcGFyYW1l dGVycyBhcmUgQG1hdGh7bG5yID0gXGxvZ3xcR2FtbWEoeil8fSBhbmQKQG1h dGh7YXJnID0gXGFyZyhcR2FtbWEoeikpfSBpbiBAbWF0aHsoLVxwaSxccGld fS4gIE5vdGUgdGhhdCB0aGUgcGhhc2UKcGFydCAoQHZhcnthcmd9KSBpcyBu b3Qgd2VsbC1kZXRlcm1pbmVkIHdoZW4gQG1hdGh7fHp8fSBpcyB2ZXJ5IGxh cmdlLApkdWUgdG8gaW5ldml0YWJsZSByb3VuZG9mZiBpbiByZXN0cmljdGlu ZyB0byBAbWF0aHsoLVxwaSxccGldfS4gIFRoaXMKd2lsbCByZXN1bHQgaW4g YSBAY29kZXtHU0xfRUxPU1N9IGVycm9yIHdoZW4gaXQgb2NjdXJzLiAgVGhl IGFic29sdXRlCnZhbHVlIHBhcnQgKEB2YXJ7bG5yfSksIGhvd2V2ZXIsIG5l dmVyIHN1ZmZlcnMgZnJvbSBsb3NzIG9mIHByZWNpc2lvbi4KQGNvbW1lbnQg ZXhjZXB0aW9uczogR1NMX0VET00sIEdTTF9FTE9TUwpAZW5kIGRlZnR5cGVm dW4KCkBkZWZ0eXBlZnVuIGRvdWJsZSBnc2xfc2ZfZ2FtbWFfaW5jIChkb3Vi bGUgQHZhcnthfSwgZG91YmxlIEB2YXJ7eH0pCkBkZWZ0eXBlZnVueCBpbnQg Z3NsX3NmX2dhbW1hX2luY19lIChkb3VibGUgQHZhcnthfSwgZG91YmxlIEB2 YXJ7eH0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3VsdH0pCkBjaW5kZXgg bm9uLW5vcm1hbGl6ZWQgaW5jb21wbGV0ZSBHYW1tYSBmdW5jdGlvbgpUaGVz ZSBmdW5jdGlvbnMgY29tcHV0ZSB0aGUgaW5jb21wbGV0ZSBHYW1tYSBGdW5j dGlvbgpAY3skXEdhbW1hKGEseCkgPSBcaW50X3heXGluZnR5IGR0XCwgdF57 YS0xfSBcZXhwKC10KSR9CkBtYXRoe1xHYW1tYShhLHgpID0gXGludF94Xlxp bmZ0eSBkdCB0XkB7YS0xQH0gXGV4cCgtdCl9CmZvciBAbWF0aHthfSByZWFs IGFuZCBAY3skeCBcZ2UgMCR9CkBtYXRoe3ggPj0gMH0uClRoaXMgdmFyaWFu dCBkb2VzIG5vdCBpbmNsdWRlIGEgbm9ybWFsaXphdGlvbiBmYWN0b3I7IHRo ZSByb3V0aW5lcwpmb3IgQG1hdGh7UShhLHgpfSBhbmQgQG1hdGh7UChhLHgp fSBiZWxvdwpkbyBpbmNsdWRlIGEgbm9ybWFsaXphdGlvbi4KQGNvbW1lbnQg ZXhjZXB0aW9uczogR1NMX0VET00KQGVuZCBkZWZ0eXBlZnVuCgpAZGVmdHlw ZWZ1biBkb3VibGUgZ3NsX3NmX2dhbW1hX2luY19RIChkb3VibGUgQHZhcnth fSwgZG91YmxlIEB2YXJ7eH0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3NmX2dh bW1hX2luY19RX2UgKGRvdWJsZSBAdmFye2F9LCBkb3VibGUgQHZhcnt4fSwg Z3NsX3NmX3Jlc3VsdCAqIEB2YXJ7cmVzdWx0fSkKQGNpbmRleCBpbmNvbXBs ZXRlIEdhbW1hIGZ1bmN0aW9uClRoZXNlIHJvdXRpbmVzIGNvbXB1dGUgdGhl IG5vcm1hbGl6ZWQgaW5jb21wbGV0ZSBHYW1tYSBGdW5jdGlvbgpAY3skUShh LHgpID0gXEdhbW1hKGE7eCkvXEdhbW1hKGEpID0gMS9cR2FtbWEoYSkgXGlu dF94XlxpbmZ0eSBkdFwsIHRee2EtMX0gXGV4cCgtdCkkfQpAbWF0aHtRKGEs eCkgPSBcR2FtbWEoYTt4KS9cR2FtbWEoYSkgPSAxL1xHYW1tYShhKSBcaW50 X3heXGluZnR5IGR0IHReQHthLTFAfSBcZXhwKC10KX0KZm9yIEBtYXRoe2Eg PiAwfSwgQGN7JHggXGdlIDAkfQpAbWF0aHt4ID49IDB9LgpAY29tbWVudCBl eGNlcHRpb25zOiBHU0xfRURPTQpAZW5kIGRlZnR5cGVmdW4KCkBkZWZ0eXBl ZnVuIGRvdWJsZSBnc2xfc2ZfZ2FtbWFfaW5jX1AgKGRvdWJsZSBAdmFye2F9 LCBkb3VibGUgQHZhcnt4fSkKQGRlZnR5cGVmdW54IGludCBnc2xfc2ZfZ2Ft bWFfaW5jX1BfZSAoZG91YmxlIEB2YXJ7YX0sIGRvdWJsZSBAdmFye3h9LCBn c2xfc2ZfcmVzdWx0ICogQHZhcntyZXN1bHR9KQpAY2luZGV4IGNvbXBsZW1l bnRhcnkgaW5jb21wbGV0ZSBHYW1tYSBmdW5jdGlvbgpUaGVzZSByb3V0aW5l cyBjb21wdXRlIHRoZSBjb21wbGVtZW50YXJ5IG5vcm1hbGl6ZWQgaW5jb21w bGV0ZSBHYW1tYSBGdW5jdGlvbgpAY3skUChhLHgpID0gMS1RKGEseCkgPSAx LVxHYW1tYShhO3gpL1xHYW1tYShhKT0xL1xHYW1tYShhKSBcaW50XzBeeCBk dFwsIHRee2EtMX0gXGV4cCgtdCkkfQpAbWF0aHtQKGEseCkgPSAxLVEoYSx4 KSA9IDEtXEdhbW1hKGE7eCkvXEdhbW1hKGEpID0gMS9cR2FtbWEoYSkgXGlu dF8wXnggZHQgdF5Ae2EtMUB9IFxleHAoLXQpfQpmb3IgQG1hdGh7YSA+IDB9 LCBAY3skeCBcZ2UgMCR9CkBtYXRoe3ggPj0gMH0uIApOb3RlIHRoYXQgQWJy YW1vd2l0eiAmIFN0ZWd1biBjYWxsIEBtYXRoe1AoYSx4KX0gdGhlIGluY29t cGxldGUgZ2FtbWEKZnVuY3Rpb24gKHNlY3Rpb24gNi41KS4KQGNvbW1lbnQg ZXhjZXB0aW9uczogR1NMX0VET00KQGVuZCBkZWZ0eXBlZnVuCgpAbm9kZSBQ b2NoaGFtbWVyIFN5bWJvbApAc3Vic2VjdGlvbiBQb2NoaGFtbWVyIFN5bWJv bAoKQGRlZnR5cGVmdW4gZG91YmxlIGdzbF9zZl9wb2NoIChkb3VibGUgQHZh cnthfSwgZG91YmxlIEB2YXJ7eH0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3Nm X3BvY2hfZSAoZG91YmxlIEB2YXJ7YX0sIGRvdWJsZSBAdmFye3h9LCBnc2xf c2ZfcmVzdWx0ICogQHZhcntyZXN1bHR9KQpAY2luZGV4IFBvY2hoYW1tZXIg c3ltYm9sCkBjaW5kZXggQXBlbGwgc3ltYm9sLCBzZWUgUG9jaGFtbWVyIHN5 bWJvbApUaGVzZSByb3V0aW5lcyBjb21wdXRlIHRoZSBQb2NoaGFtbWVyIHN5 bWJvbCBAbWF0aHsoYSlfeCA9IChhLHgpID0gXEdhbW1hKGEgKwp4KS9cR2Ft bWEoYSl9LCBzdWJqZWN0IHRvIEBtYXRoe2F9IGFuZCBAbWF0aHthK3h9IG5v dCBiZWluZyBuZWdhdGl2ZQppbnRlZ2Vycy4gVGhlIFBvY2hoYW1tZXIgc3lt Ym9sIGlzIGFsc28ga25vd24gYXMgdGhlIEFwZWxsIHN5bWJvbC4KQGNvbW1l bnQgZXhjZXB0aW9uczogIEdTTF9FRE9NLCBHU0xfRU9WUkZMVwpAZW5kIGRl ZnR5cGVmdW4KCgpAZGVmdHlwZWZ1biBkb3VibGUgZ3NsX3NmX2xucG9jaCAo ZG91YmxlIEB2YXJ7YX0sIGRvdWJsZSBAdmFye3h9KQpAZGVmdHlwZWZ1bngg aW50IGdzbF9zZl9sbnBvY2hfZSAoZG91YmxlIEB2YXJ7YX0sIGRvdWJsZSBA dmFye3h9LCBnc2xfc2ZfcmVzdWx0ICogQHZhcntyZXN1bHR9KQpAY2luZGV4 IGxvZ2FyaXRobSBvZiBQb2NoaGFtbWVyIHN5bWJvbApUaGVzZSByb3V0aW5l cyBjb21wdXRlIHRoZSBsb2dhcml0aG0gb2YgdGhlIFBvY2hoYW1tZXIgc3lt Ym9sLApAbWF0aHtcbG9nXCwgKGEpX3ggPSBcbG9nIFxHYW1tYShhICsgeCkg LSBcbG9nIFxHYW1tYShhKX0gZm9yIEBtYXRoe2EgPiAwfSwKQG1hdGh7YSt4 ID4gMH0uCkBjb21tZW50IGV4Y2VwdGlvbnM6ICBHU0xfRURPTQpAZW5kIGRl ZnR5cGVmdW4KCkBkZWZ0eXBlZnVuIGludCBnc2xfc2ZfbG5wb2NoX3Nnbl9l IChkb3VibGUgQHZhcnthfSwgZG91YmxlIEB2YXJ7eH0sIGdzbF9zZl9yZXN1 bHQgKiBAdmFye3Jlc3VsdH0sIGRvdWJsZSAqIEB2YXJ7c2dufSkKVGhlc2Ug cm91dGluZXMgY29tcHV0ZSB0aGUgc2lnbiBvZiB0aGUgUG9jaGhhbW1lciBz eW1ib2wgYW5kIHRoZQpsb2dhcml0aG0gb2YgaXRzIG1hZ25pdHVkZS4gIFRo ZSBjb21wdXRlZCBwYXJhbWV0ZXJzIGFyZSBAbWF0aHtyZXN1bHQgPQpcbG9n KHwoYSlfeHwpfSBhbmQgQG1hdGh7c2duID0gXHNnbigoYSlfeCl9IHdoZXJl IEBtYXRoeyhhKV94ID0KXEdhbW1hKGEgKyB4KS9cR2FtbWEoYSl9LCBzdWJq ZWN0IHRvIEBtYXRoe2F9LCBAbWF0aHthK3h9IG5vdCBiZWluZwpuZWdhdGl2 ZSBpbnRlZ2Vycy4KQGNvbW1lbnQgZXhjZXB0aW9uczogIEdTTF9FRE9NCkBl bmQgZGVmdHlwZWZ1bgoKQGRlZnR5cGVmdW4gZG91YmxlIGdzbF9zZl9wb2No cmVsIChkb3VibGUgQHZhcnthfSwgZG91YmxlIEB2YXJ7eH0pCkBkZWZ0eXBl ZnVueCBpbnQgZ3NsX3NmX3BvY2hyZWxfZSAoZG91YmxlIEB2YXJ7YX0sIGRv dWJsZSBAdmFye3h9LCBnc2xfc2ZfcmVzdWx0ICogQHZhcntyZXN1bHR9KQpA Y2luZGV4IHJlbGF0aXZlIFBvY2hoYW1tZXIgc3ltYm9sClRoZXNlIHJvdXRp bmVzIGNvbXB1dGUgdGhlIHJlbGF0aXZlIFBvY2hoYW1tZXIgc3ltYm9sIEBt YXRoeygoYSlfeCAtCjEpL3h9IHdoZXJlIEBtYXRoeyhhKV94IDo9IFxHYW1t YShhICsgeCkvXEdhbW1hKGEpfS4KQGNvbW1lbnQgZXhjZXB0aW9uczogIEdT TF9FRE9NCkBlbmQgZGVmdHlwZWZ1bgoKQG5vZGUgQmV0YSBGdW5jdGlvbnMK QHN1YnNlY3Rpb24gQmV0YSBGdW5jdGlvbnMKClRoZSBpbmNvbXBsZXRlIEJl dGEgZnVuY3Rpb24gaXMgZ2l2ZW4gYnkgdGhlIGludGVncmFsCkB0ZXgKXGJl Zm9yZWRpc3BsYXkKJCQKQl94KGEsYikgPSBcaW50XzBeeCBkdCBcLCB0Xnth LTF9KDEtdClee2ItMX0KJCQKXGFmdGVyZGlzcGxheQpAZW5kIHRleApGb3Ig QG1hdGh7eD0xfSwgdGhpcyBpcyB0aGUgKGNvbXBsZXRlKSBCZXRhIGZ1bmN0 aW9uLCB3aGljaCBjYW4gYmUgZXhwcmVzc2VkCmluIHRlcm1zIG9mIEdhbW1h IGZ1bmN0aW9uczoKQHRleApcYmVmb3JlZGlzcGxheQokJApCKGEsYikgPSBc aW50XzBeMSBkdCBcLCB0XnthLTF9KDEtdClee2ItMX0gCiAgICAgICA9IHtc R2FtbWEoYSlcR2FtbWEoYikgXG92ZXIgXEdhbW1hKGErYil9CiQkClxhZnRl cmRpc3BsYXkKQGVuZCB0ZXgKCkBkZWZ0eXBlZnVuIGRvdWJsZSBnc2xfc2Zf YmV0YSAoZG91YmxlIEB2YXJ7YX0sIGRvdWJsZSBAdmFye2J9KQpAZGVmdHlw ZWZ1bnggaW50IGdzbF9zZl9iZXRhX2UgKGRvdWJsZSBAdmFye2F9LCBkb3Vi bGUgQHZhcntifSwgZ3NsX3NmX3Jlc3VsdCAqIEB2YXJ7cmVzdWx0fSkKQGNp bmRleCBCZXRhIGZ1bmN0aW9uClRoZXNlIHJvdXRpbmVzIGNvbXB1dGUgdGhl IEJldGEgRnVuY3Rpb24sIEBtYXRoe0IoYSxiKSA9ClxHYW1tYShhKVxHYW1t YShiKS9cR2FtbWEoYStiKX0gZm9yIEBtYXRoe2EgPiAwfSwgQG1hdGh7YiA+ IDB9LgpAY29tbWVudCBleGNlcHRpb25zOiBHU0xfRURPTSwgR1NMX0VPVlJG TFcsIEdTTF9FVU5EUkZMVwpAZW5kIGRlZnR5cGVmdW4KCkBkZWZ0eXBlZnVu IGRvdWJsZSBnc2xfc2ZfbG5iZXRhIChkb3VibGUgQHZhcnthfSwgZG91Ymxl IEB2YXJ7Yn0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3NmX2xuYmV0YV9lIChk b3VibGUgQHZhcnthfSwgZG91YmxlIEB2YXJ7Yn0sIGdzbF9zZl9yZXN1bHQg KiBAdmFye3Jlc3VsdH0pCkBjaW5kZXggbG9nYXJpdGhtIG9mIEJldGEgZnVu Y3Rpb24KVGhlc2Ugcm91dGluZXMgY29tcHV0ZSB0aGUgbG9nYXJpdGhtIG9m IHRoZSBCZXRhIEZ1bmN0aW9uLCBAbWF0aHtcbG9nKEIoYSxiKSl9CmZvciBA bWF0aHthID4gMH0sIEBtYXRoe2IgPiAwfS4KQGNvbW1lbnQgZXhjZXB0aW9u czogR1NMX0VET00KQGVuZCBkZWZ0eXBlZnVuCgpAZGVmdHlwZWZ1biBkb3Vi bGUgZ3NsX3NmX2JldGFfaW5jIChkb3VibGUgQHZhcnthfSwgZG91YmxlIEB2 YXJ7Yn0sIGRvdWJsZSBAdmFye3h9KQpAZGVmdHlwZWZ1bnggaW50IGdzbF9z Zl9iZXRhX2luY19lIChkb3VibGUgQHZhcnthfSwgZG91YmxlIEB2YXJ7Yn0s IGRvdWJsZSBAdmFye3h9LCBnc2xfc2ZfcmVzdWx0ICogQHZhcntyZXN1bHR9 KQpAY2luZGV4IGluY29tcGxldGUgQmV0YSBmdW5jdGlvbiwgbm9ybWFsaXpl ZApAY2luZGV4IG5vcm1hbGl6ZWQgaW5jb21wbGV0ZSBCZXRhIGZ1bmN0aW9u CkBjaW5kZXggQmV0YSBmdW5jdGlvbiwgaW5jb21wbGV0ZSBub3JtYWxpemVk IApUaGVzZSByb3V0aW5lcyBjb21wdXRlIHRoZSBub3JtYWxpemVkIGluY29t cGxldGUgQmV0YSBmdW5jdGlvbgpAbWF0aHtCX3goYSxiKS9CKGEsYil9IGZv ciBAbWF0aHthID4gMH0sIEBtYXRoe2IgPiAwfSwgYW5kIEBjeyQwIFxsZSB4 IFxsZSAxJH0KQG1hdGh7MCA8PSB4IDw9IDF9LgpAZW5kIGRlZnR5cGVmdW4K CkBub2RlIEZhY3RvcmlhbHMKQHN1YnNlY3Rpb24gRmFjdG9yaWFscwpAY2lu ZGV4IGZhY3RvcmlhbAoKQWx0aG91Z2ggZmFjdG9yaWFscyBjYW4gYmUgY29t cHV0ZWQgZnJvbSB0aGUgR2FtbWEgZnVuY3Rpb24sIHVzaW5nCnRoZSByZWxh dGlvbiBAbWF0aHtuISA9IFxHYW1tYShuKzEpfSBmb3Igbm9uLW5lZ2F0aXZl IGludGVnZXIgQG1hdGh7bn0sCml0IGlzIHVzdWFsbHkgbW9yZSBlZmZpY2ll bnQgdG8gY2FsbCB0aGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiwKcGFy dGljdWxhcmx5IGZvciBzbWFsbCB2YWx1ZXMgb2YgQG1hdGh7bn0sIHdob3Nl IGZhY3RvcmlhbCB2YWx1ZXMgYXJlCm1haW50YWluZWQgaW4gaGFyZGNvZGVk IHRhYmxlcy4KCkBkZWZ0eXBlZnVuIGRvdWJsZSBnc2xfc2ZfZmFjdCAodW5z aWduZWQgaW50IEB2YXJ7bn0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3NmX2Zh Y3RfZSAodW5zaWduZWQgaW50IEB2YXJ7bn0sIGdzbF9zZl9yZXN1bHQgKiBA dmFye3Jlc3VsdH0pCkBjaW5kZXggZmFjdG9yaWFsClRoZXNlIHJvdXRpbmVz IGNvbXB1dGUgdGhlIGZhY3RvcmlhbCBAbWF0aHtuIX0uICBUaGUgZmFjdG9y aWFsIGlzCnJlbGF0ZWQgdG8gdGhlIEdhbW1hIGZ1bmN0aW9uIGJ5IEBtYXRo e24hID0gXEdhbW1hKG4rMSl9LgpAY29tbWVudCBleGNlcHRpb25zOiBHU0xf RURPTSwgR1NMX09WUkZMVwpAZW5kIGRlZnR5cGVmdW4KCkBkZWZ0eXBlZnVu IGRvdWJsZSBnc2xfc2ZfZG91YmxlZmFjdCAodW5zaWduZWQgaW50IEB2YXJ7 bn0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3NmX2RvdWJsZWZhY3RfZSAodW5z aWduZWQgaW50IEB2YXJ7bn0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3Vs dH0pCkBjaW5kZXggZG91YmxlIGZhY3RvcmlhbApUaGVzZSByb3V0aW5lcyBj b21wdXRlIHRoZSBkb3VibGUgZmFjdG9yaWFsIEBtYXRoe24hISA9IG4obi0y KShuLTQpIFxkb3RzfS4gCkBjb21tZW50IGV4Y2VwdGlvbnM6IEdTTF9FRE9N LCBHU0xfT1ZSRkxXCkBlbmQgZGVmdHlwZWZ1bgoKQGRlZnR5cGVmdW4gZG91 YmxlIGdzbF9zZl9sbmZhY3QgKHVuc2lnbmVkIGludCBAdmFye259KQpAZGVm dHlwZWZ1bnggaW50IGdzbF9zZl9sbmZhY3RfZSAodW5zaWduZWQgaW50IEB2 YXJ7bn0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3VsdH0pCkBjaW5kZXgg bG9nYXJpdGhtIG9mIGZhY3RvcmlhbApUaGVzZSByb3V0aW5lcyBjb21wdXRl IHRoZSBsb2dhcml0aG0gb2YgdGhlIGZhY3RvcmlhbCBvZiBAdmFye259LApA bWF0aHtcbG9nKG4hKX0uICBUaGUgYWxnb3JpdGhtIGlzIGZhc3RlciB0aGFu IGNvbXB1dGluZwpAbWF0aHtcbG4oXEdhbW1hKG4rMSkpfSB2aWEgQGNvZGV7 Z3NsX3NmX2xuZ2FtbWF9IGZvciBAbWF0aHtuIDwgMTcwfSwKYnV0IGRlZmVy cyBmb3IgbGFyZ2VyIEB2YXJ7bn0uCkBjb21tZW50IGV4Y2VwdGlvbnM6IG5v bmUKQGVuZCBkZWZ0eXBlZnVuCgpAZGVmdHlwZWZ1biBkb3VibGUgZ3NsX3Nm X2xuZG91YmxlZmFjdCAodW5zaWduZWQgaW50IEB2YXJ7bn0pCkBkZWZ0eXBl ZnVueCBpbnQgZ3NsX3NmX2xuZG91YmxlZmFjdF9lICh1bnNpZ25lZCBpbnQg QHZhcntufSwgZ3NsX3NmX3Jlc3VsdCAqIEB2YXJ7cmVzdWx0fSkKQGNpbmRl eCBsb2dhcml0aG0gb2YgZG91YmxlIGZhY3RvcmlhbApUaGVzZSByb3V0aW5l cyBjb21wdXRlIHRoZSBsb2dhcml0aG0gb2YgdGhlIGRvdWJsZSBmYWN0b3Jp YWwgb2YgQHZhcntufSwKQG1hdGh7XGxvZyhuISEpfS4KQGNvbW1lbnQgZXhj ZXB0aW9uczogbm9uZQpAZW5kIGRlZnR5cGVmdW4KCkBkZWZ0eXBlZnVuIGRv dWJsZSBnc2xfc2ZfY2hvb3NlICh1bnNpZ25lZCBpbnQgQHZhcntufSwgdW5z aWduZWQgaW50IEB2YXJ7bX0pCkBkZWZ0eXBlZnVueCBpbnQgZ3NsX3NmX2No b29zZV9lICh1bnNpZ25lZCBpbnQgQHZhcntufSwgdW5zaWduZWQgaW50IEB2 YXJ7bX0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3VsdH0pCkBjaW5kZXgg Y29tYmluYXRvcmlhbCBmYWN0b3IgQyhtLG4pClRoZXNlIHJvdXRpbmVzIGNv bXB1dGUgdGhlIGNvbWJpbmF0b3JpYWwgZmFjdG9yIEBjb2Rle24gY2hvb3Nl IG19CkBtYXRoez0gbiEvKG0hKG4tbSkhKX0KQGNvbW1lbnQgZXhjZXB0aW9u czogR1NMX0VET00sIEdTTF9FT1ZSRkxXCkBlbmQgZGVmdHlwZWZ1bgoKQGRl ZnR5cGVmdW4gZG91YmxlIGdzbF9zZl9sbmNob29zZSAodW5zaWduZWQgaW50 IEB2YXJ7bn0sIHVuc2lnbmVkIGludCBAdmFye219KQpAZGVmdHlwZWZ1bngg aW50IGdzbF9zZl9sbmNob29zZV9lICh1bnNpZ25lZCBpbnQgQHZhcntufSwg dW5zaWduZWQgaW50IEB2YXJ7bX0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jl c3VsdH0pCkBjaW5kZXggbG9nYXJpdGhtIG9mIGNvbWJpbmF0b3JpYWwgZmFj dG9yIEMobSxuKQpUaGVzZSByb3V0aW5lcyBjb21wdXRlIHRoZSBsb2dhcml0 aG0gb2YgQGNvZGV7biBjaG9vc2UgbX0uICBUaGlzIGlzCmVxdWl2YWxlbnQg dG8gdGhlIHN1bSBAbWF0aHtcbG9nKG4hKSAtIFxsb2cobSEpIC0gXGxvZygo bi1tKSEpfS4KQGNvbW1lbnQgZXhjZXB0aW9uczogR1NMX0VET00gCkBlbmQg ZGVmdHlwZWZ1bgoKQGRlZnR5cGVmdW4gZG91YmxlIGdzbF9zZl90YXlsb3Jj b2VmZiAoaW50IEB2YXJ7bn0sIGRvdWJsZSBAdmFye3h9KQpAZGVmdHlwZWZ1 bnggaW50IGdzbF9zZl90YXlsb3Jjb2VmZl9lIChpbnQgQHZhcntufSwgZG91 YmxlIEB2YXJ7eH0sIGdzbF9zZl9yZXN1bHQgKiBAdmFye3Jlc3VsdH0pCkBj aW5kZXggVGF5bG9yIGNvZWZmaWNpZW50cywgY29tcHV0YXRpb24gb2YKVGhl c2Ugcm91dGluZXMgY29tcHV0ZSB0aGUgVGF5bG9yIGNvZWZmaWNpZW50IEBt YXRoe3hebiAvIG4hfSBmb3IgCkBjeyR4IFxnZSAwJH0KQG1hdGh7eCA+PSAw fSwgCkBjeyRuIFxnZSAwJH0KQG1hdGh7biA+PSAwfS4KQGNvbW1lbnQgZXhj ZXB0aW9uczogR1NMX0VET00sIEdTTF9FT1ZSRkxXLCBHU0xfRVVORFJGTFcK QGVuZCBkZWZ0eXBlZnVuCgoKCgoK ---1518334608-1108703236-1124998239=:31186--