pax_global_header00006660000000000000000000000064130516322750014516gustar00rootroot0000000000000052 comment=b8ea350dc13adb6190d9044a5b80110a4c441270 systemtap-3.1/000077500000000000000000000000001305163227500134125ustar00rootroot00000000000000systemtap-3.1/.gitignore000066400000000000000000000006101305163227500153770ustar00rootroot00000000000000*~ #* *# .#* autom4te.* cscope.files cscope*out gmon.out config.h config.log config.status .deps loc2c-test run-stap run-staprun stamp-h1 stap staprun/staprun testresults staprun/stapio stap_merge CVS .checkstyle .cproject .metadata .project .settings .autotools SNAPSHOT *.o git_version.h Makefile build-elfutils include-elfutils lib-elfutils stamp-elfutils dtrace stappaths.7 .zanata-cache systemtap-3.1/.mailmap000066400000000000000000000041311305163227500150320ustar00rootroot00000000000000# Early history did not include userid->full-name mappings, so we do # that explicitly here. Ananth N Mavinakayanahalli Anil Keshavamurthy bibo mao Brad Chen Charles Spirakis Dave Brolley Dave Nomura David Smith David J. Wilder Denys Vlasenko Don Domingo Elliott Baron Eugene Teo Frank Ch. Eigler Frederic Turgis Graydon Hoare Hien Nguyen Jim Keniston Josh Stone Kai Meyer Kent Sebastian Kevin Stafford K.Prasad Li Guanglei Mark McLoughlin Martin Hunt Masami Hiramatsu Maynard Johnson Michael Behm Mike Mason Prasanna S Panchamukhi Prerna Saxena Rajan Arora Roland McGrath Rusty Lynch Shaohua Li Srikar Dronamraju Srinivasa DS Thang Nguyen Tom Zanussi Wenji Huang William Cohen Zhaolei Zhaolei # Normalize a few git commit names too Anithra Janakiraman Breno Leitao Bryn M. Reeves Dave Nomura Don Domingo K.Prasad K.Prasad Kent Sebastian Maran Pakkirisamy Mark Wielaard Negreanu Marius Adrian Negreanu Marius Adrian Prerna Saxena Przemysław Pawełczyk Przemysław Pawełczyk Srinivasa DS Wenji Huang Wenji Huang William Cohen William Cohen Rayson Ho Rayson Ho Tomoki Sekiyama systemtap-3.1/ABOUT-NLS000066400000000000000000002671331305163227500146550ustar00rootroot000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl' library and will decide to use it. If not, you may have to to use the `--with-libintl-prefix' option to tell `configure' where to look for it. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca +--------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] | iso_639_3 | | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] | +--------------------------------------------------+ af am an ar as ast az be be@latin bg bn_IN bs ca 6 0 1 2 3 19 1 10 3 28 3 1 38 crh cs da de el en en_GB en_ZA eo es et eu fa +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] | bison | [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] [] [] | cflow | [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | | cppi | | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] | flex | [] [] | freedink | [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] | gjay | [] | gliv | [] [] [] | glunarclock | [] [] | gnubiff | () | gnucash | [] () () () () | gnuedu | [] [] | gnulib | [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] () [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] () [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] [] [] | help2man | [] | hylafax | [] [] | idutils | [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] [] [] [] () [] [] [] () | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] | iso_639 | [] [] [] [] () [] [] | iso_639_3 | [] | jwhois | [] | kbd | [] [] [] [] [] | keytouch | [] [] | keytouch-editor | [] [] | keytouch-keyboa... | [] | klavaro | [] [] [] [] | latrine | [] () | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] | linkdr | [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] | mkisofs | | myserver | | nano | [] [] [] | opcodes | [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] | psmisc | [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] | rosegarden | () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] | wyslij-po | | xchat | [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ crh cs da de el en en_GB en_ZA eo es et eu fa 5 64 105 117 18 1 8 0 28 89 18 19 0 fi fr ga gl gu he hi hr hu hy id is it ja ka kn +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | bibshelf | [] [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] | cppi | [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] | freedink | [] [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] [] | gjay | [] | gliv | [] () | glunarclock | [] [] [] [] | gnubiff | () [] () | gnucash | () () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | [] () [] [] [] [] | iso_639 | [] () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] [] | keytouch-editor | [] [] [] [] [] | keytouch-keyboa... | [] [] [] [] [] | klavaro | [] [] | latrine | [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] [] | linkdr | [] [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] [] | myserver | | nano | [] [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] | psmisc | [] [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | [] | wget | [] [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +----------------------------------------------------+ fi fr ga gl gu he hi hr hu hy id is it ja ka kn 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] [] | 12 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 14 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 29 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () [] () | 10 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 26 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] | 24 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 7 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 14 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] [] | 17 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 xkeyboard-config | [] [] [] | 22 +---------------------------------------------------+ 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If June 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.5 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. systemtap-3.1/AUTHORS000066400000000000000000000050621305163227500144650ustar00rootroot00000000000000Aaron Tomlin Abegail Jakop Adrien Kunysz Alexander Lochmann Alexander Y. Fomichev Alfred Landrum Ananth N Mavinakayanahalli Andre Detsch Andreas Müller Andy Fitzsimon Anil Keshavamurthy Anithra Janakiraman Anton Vorontsov Athira Atsushi Tsuji Benjamin Coddington Bingwu Yang Brendan Gregg Breno Leitao Brent Baude Brian Chrisman Bryn M. Reeves Casey Dahlin Charles Spirakis Charley Wang Chris Meek Chung-Lin Tang Cody Santing Dan Horak Daniel Migault Daniel Tschan Dave Brolley Dave Nomura David J. Wilder David Juran David Smith Dennis Gilmore Diego Elio Pettenò Don Domingo Elliott Baron Erick Tryzelaar Eugene Teo Eugeniy Meshcheryakov Fabio Olive Leite Fahad Arshad Felix Lin Felix Lu Francis Giraldeau Frank Ch. Eigler Frederic Turgis Fredrik Östman Grant Edwards Graydon Hoare Han Pingtian Hemant Kumar Hien Nguyen Hilko Bengen Honggyu Kim Hushan Jia Igor Zhbanov Ivan Diorditsa James Bottomley Jan Kratochvil Jeff Moyer Jesper Brouer Jim Keniston Jiri Horky Jiri Slaby Joe Gorse JoeLynn Keniston Jonathan Lebon Jose Castillo Josh Stone Jóhann B. Guðmundsson K.Prasad Kai Meyer Kapileshwar Singh (KP) Keiichi KII Ken Raeburn Kent Sebastian Kevin Stafford Kim van der Riet Kiran Prakesh Kyle Walker Lars R. Damerow Li Guanglei Lubomir Rintel Lukas Berk Lukas Czerner Lukáš Hejtmánek Mahesh J Salgaonkar Malte Nuhn Maran Pakkirisamy Marc Milgram Marcin Nowakowski Mark McLoughlin Mark Wielaard Martin Cermak Martin Hunt Martin Lazar Masami Hiramatsu Masanari Iida Masatake YAMATO Mateusz Guzik Maynard Johnson Michael Meeks Michal Toman Mike Mason Mikhail Kulemin Miroslav Franc Nan Xiao Naresh Kamboju Nathan Scott Negreanu Marius Adrian Nicolas Brito Nikolay Borisov Nitin A Kamble Nobuhiro Tachino Oleksandr Chumachenko Orivej Desh Otavio Pontes Paddie O'Brien Peter Feiner Peter Kjellström Peter Robinson Petr Matousek Petr Muller Phil Muldoon Prerna Saxena Przemysław Pawełczyk Qiao Nuohan Quentin Barnes Rajan Arora Rajasekhar Duddu Raphaël Beamonte Ravi Bangoria Rayson Ho Rich Megginson Robb Romans Robin Hack Robin Lee Roland Grunberg Roland McGrath Ross Burton Rüdiger Sonderfeld Santosh Shukla Serguei Makarov Shaohua Li Siddhesh Poyarekar Snehal Phule Srikar Dronamraju Srinivasa DS Stan Cox Stefan Hajnoczi Steve Dickson Sunzen Wang Tetsuo Handa Thang Nguyen Theodore Ts'o Tim Moore Timo Juhani Lindfors Tom Callaway Tom Tromey Tom Zanussi Tomoki Sekiyama Tony Jones Torsten Polle Varun Chandramohan Victor Kamensky Vincent Bernat Wade Farnsworth Wenji Huang William Cohen Yaakov Selkowitz Yang Wen Yichun Zhang (agentzh) Yoshihide Sonoda Zhaolei Zhou Wenjian Zifei Tong ch huang systemtap-3.1/AUTHORS.sh000077500000000000000000000004651305163227500151030ustar00rootroot00000000000000#! /bin/sh # Create the AUTHORS file, by searching the git history. # Run as "AUTHORS.sh" to get complete history # Run with "AUTHORS.sh commitish..commitish" for history between tags # shortlog will canonicalize the names using the file .mailmap git shortlog -s ${1-} | cut -b8- # strip the commit counts systemtap-3.1/COPYING000066400000000000000000000432541305163227500144550ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. systemtap-3.1/EXAMPLES000077700000000000000000000000001305163227500223702testsuite/systemtap.examplesustar00rootroot00000000000000systemtap-3.1/HACKING000066400000000000000000000201431305163227500144010ustar00rootroot00000000000000This text describes contribution procedures to systemtap. Please read and understand them before jumping in. Discussions take place on the mailing list. - general Submissions should be in an easy-to-read diff/patch form, unless this is inappropriate due to size, relevance, or fraction of novel content. They should be accompanied by an explanation. The relevant test suites should be run before and after your changes, and regressions avoided, explained, or corrected. Established contributors may be considered for direct GIT write access. Other contributors should simply pack up the goods into a plain text email message to the mailing list. It is not necessary to include machine-generated files like autoconf*, sample-script indexes, etc. in patches posted for review. - obvious changes Trivial, obvious patches may be posted or committed without other formalities. - copyright You must designate the appropriate copyright holder for your contribution. If not already there, this name should be added by your patch to the copyright header in the affected files. The copyright holder is assumed to agree with the general licensing terms (GPLv2+). - coding style Abide by the general formatting of the code you are modifying. The code base generally follows the GNU standards in usermode code and the Linux kernel standards in runtime code. - commit messages In the git commit message, make the first line a brief (<=50 char) summary of the patch, and leave the second line blank. If you have trouble coming up with a concise summary, consider whether your patch might be better broken into smaller commits. For trivial changes, the summary alone may be sufficient, but most commits should include a paragraph or two giving more details about what the change is and why it is needed. Extra information like bugzilla numbers and mailing-list discussion links are appreciated as a supplement, but they are not a replacement for a real description. - test suites As far as practicable, changes should be accompanied by test cases to prevent future regressions. Tests should be run on at least x86, and ideally also on some 64-bit platform. The test suite is located under /src/testsuite and is based on dejagnu. "make check" runs unprivileged tests only against an uninstalled build tree. "make installcheck" runs all tests against an installed tree. Tests that don't require probe execution should go into new or modified files under the *{ok,ko} directories, which are scanned by corresponding systemtap.pass1-4/*.exp files. The "ko" tests are for expected (deliberate) errors. Tests that execute probes (pass 5) should include their own .exp/.stp files under any other appropriate systemtap.* testsuite subdirectory. To run a particular test or set of tests, do: cd testsuite make check RUNTESTFLAGS=testname.exp or make installcheck RUNTESTFLAGS=testname.exp To disambiguate among multiple tests with the same name, specify the directory as well -- for example: make installcheck RUNTESTFLAGS=systemtap.base/print.exp - translator Translator changes can easily invalidate tapsets and user script code. One must tread carefully and run regression tests rigorously. Both positive and negative polarity (expect-pass / expect-fail) test cases may need to be written to assert a bug fix. Script language changes should be documented in the stap.1 man page and emphasized in the NEWS file. - tapsets Tapset script files should demonstrate effective economy, and avoid conflicts with user and other tapset code. It may be necessary to prefix symbols with the tapset name to ensure systemtap-wide uniqueness. All "external interfaces" expected to be used by user scripts (or perhaps other tapsets) should be documented -- either in stapprobes.3stap if they are built into the language or otherwise somehow essential; or in kernel-doc style comments if they are defined in a tapset (see almost any existing tapset for an example of how this is done); any new tapset should be mentioned in doc/SystemTap_Tapset_Reference/tapsets.tmpl. Major or incompatible changes should be mentioned in the NEWS file; see also the deprecation section below. Internal function, variable, probe identifiers should be prefixed with "_" for extra uniqueness, and not documented in the man pages. Tapsets should come with a tests cases that provide good test coverage. Every alias definition should be tested for pass-2 correctness. Every embedded-C routine should be tested for pass-4 buildability. As they are a security hazard, every tapset embedded-C routine should be pass-5 stress-tested for response to erroneous inputs. This applies doubly to /* unprivileged */ ones. The platforms/architectures against which the tapset was tested should be published, and ideally asserted by code. Embedded-C code should avoid making references to the runtime or other code possibly generated by the translator. Embedded-C code that dereferences pointers should use deref() type functions to check each individual operation if there exists a possibility that the function may be called with invalid pointers or pointer chains. - deprecation Try to remain compatible with existing valid scripts, with respect to changes in the script language or the tapset. Where this is not practicable, preserve the old functionality using the %( systemtap_v %) preprocessor conditional in the tapset and systemtap_session.compatible in the translator. If needed, after several major releases, deprecated functionality may be dropped outright. Note both pending and final deprecation in NEWS and the permanent DEPRECATION section in stap.1. The intent is to protect old scripts for a year or longer. Tapset functions to be deprecated should be kept for at least one major release. For example, if we're in development between versions 1.2 and 1.3, wrap to-be-deprecated tapset functions or probes in %( systemtap_v <= "1.3" %? function foo() {} %) so as to preserve the tapset function during the life of the 1.3 release. Script language changes that cause earlier valid scripts to become invalid should be opt-in (requiring --compatible=NEWVERSION) for at least one major release before becoming default. For example, test strverscmp(s.compatible.c_str(), "1.4") >= 0 in the 1.3 release sources in order to activate the change. - runtime Changes to the runtime can cause problems on different architectures or kernel versions. Luckily, many code mistakes show up easily in the pass-4 tests. - i18n We use the zanata [1] system for managing translations of runtime strings. If interested, create yourself a zanata account, and help translate online! In addition, you can ship systemtap sources to/from zanata by installing the zanata-cli and getting a $HOME/.config/zanata.ini file, thereafter following the advice [2][3] of "make update-po" (invoked from the top of the build tree). [1] https://translate.zanata.org/zanata/iteration/view/systemtap/master [2] http://zanata.org/help/cli/cli-push [3] http://zanata.org/help/cli/cli-pull - meta Proposed changes to these guidelines should be discussed on the mailing list. - git basics git clone ssh://sourceware.org/git/systemtap.git # OR: use git://sourceware.org/git/systemtap.git then add to .git/config: # [remote "origin"] # pushurl=ssh://sourceware.org/git/systemtap.git # build ; hack hack hack; test git add FILE1 FILE2 # enumerate all modified or new files git status # to confirm that needed local changes are "staged" git commit # to your local repository, add nice commit message git show # to check that the last commit included all changes git pull # to make sure your copy is up to date & merged # last minute rebuild; retest git rebase origin/master # clean git commit of merge history git diff origin/master # final visual check git push # to the central one, if you have access OR git format-patch -s origin/master.. then email the resulting files to the mailing list systemtap-3.1/INSTALL000066400000000000000000000224501305163227500144460ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 6. Often, you can also type `make uninstall' to remove the installed files again. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. systemtap-3.1/INTERNALS000066400000000000000000000135271305163227500147040ustar00rootroot00000000000000The Systemtap Translator - a tour on the inside Outline: - general principles - main data structures - pass 1: parsing - pass 2: semantic analysis (parts 1, 2, 3) - pass 3: translation (parts 1, 2) - pass 4: compilation - pass 5: run ------------------------------------------------------------------------ Translator general principles - written in standard C++ - mildly O-O, sparing use of C++ features - uses "visitor" concept for type-dependent (virtual) traversal ------------------------------------------------------------------------ Main data structures - abstract syntax tree - family of types and subtypes for language parts: expressions, literals, statements - includes outermost constructs: probes, aliases, functions - an instance of "stapfile" represents an entire script file - each annotated with a token (script source coordinates) - data persists throughout run - session - contains run-time parameters from command line - contains all globals - passed by reference to many functions ------------------------------------------------------------------------ Pass 1 - parsing - hand-written recursive-descent - language specified in man page - reads user-specified script file - also searches path for all <*.stp> files, parses them too - => syntax errors are caught immediately, throughout tapset - now includes baby preprocessor probe kernel. %( kernel_v == "2.6.9" %? inline("foo") %: function("bar") %) { } - enforces guru mode for embedded code %{ C %} ------------------------------------------------------------------------ Pass 2 - semantic analysis - step 1: resolve symbols - code in - want to know all global and per-probe/function local variables - one "vardecl" instance interned per variable - fills in "referent" field in AST for nodes that refer to it - collect "needed" probe/global/function list in session variable - loop over file queue, starting with user script "stapfile" - add to "needed" list this file's globals, functions, probes - resolve any symbols used in this file (function calls, variables) against "needed" list - if not resolved, search through all tapset "stapfile" instances; add to file queue if matched - if still not resolved, create as local scalar, or signal an error ------------------------------------------------------------------------ Pass 2 - semantic analysis - step 2: resolve types - fills in "type" field in AST - iterate along all probes and functions, until convergence - infer types of variables from usage context / operators: a = 5 # a is a pe_long b["foo",a]++ # b is a pe_long array with indexes pe_string and pe_long - loop until no further variable types can be inferred - signal error if any still unresolved ------------------------------------------------------------------------ Pass 2 - semantic analysis - step 3: resolve probes - probe points turned to "derived_probe" instances by code in - derived_probes know how to talk to kernel API for registration/callbacks - aliases get expanded at this point - some probe points ("begin", "end", "timer*") are very simple - dwarf ("kernel*", "module*") implementation very complicated - target-variables "$foo" expanded to getter/setter functions with synthesized embedded-C ------------------------------------------------------------------------ Pass 3 - translation - step 1: data - - we now know all types, all variables - strings are everywhere copied by value (MAXSTRINGLEN bytes) - emit data storage mega-struct "context" for all probes/functions - array instantiated per-CPU, per-nesting-level - can be pretty big static data ------------------------------------------------------------------------ Pass 3 - translation - step 2: code - map script functions to C functions taking a context pointer - map probes to two C functions: - one to interface with the probe point infrastructure (kprobes, kernel timer): reserves per-cpu context - one to implement probe body, just like a script function - emit global startup/shutdown routine to manage orderly registration/deregistration of probes - expressions/statements emitted in "natural" evaluation sequence - emit code to enforce activity-count limits, simple safety tests - global variables protected by locks global k function foo () { k ++ } # write lock around increment probe bar { if (k>5) ... } # read lock around read - same thing for arrays, except foreach/sort take longer-duration locks ------------------------------------------------------------------------ Pass 4 - compilation - - write out C code in a temporary directory - call into kbuild makefile to build module ------------------------------------------------------------------------ Pass 5 - running - run "staprun" - clean up temporary directory - nothing to it! ------------------------------------------------------------------------ Peculiarities - We tend to use visitor idioms for polymorphic traversals of parse trees, in preference to dynamic_cast<> et al. The former is a little more future-proof and harder to break accidentally. {reinterpret,static}_cast<> should definitely be avoided. - We use our interned_string type (a derivative of boost::string_ref) to use shareable references to strings that may be used in duplicate many times. It can slide in for std::string most of the time. It can save RAM and maybe even CPU, if used judiciously: such as for frequently duplicated strings, duplicated strings, duplicated strings, duplicated. OTOH, it costs CPU (for management of the interned string set, or if copied between std::string and interned_string unnecessarily), and RAM (2 pointers when empty, vs. 1 for std::string), and its instances are not modifiable, so tradeoffs must be confirmed with tools like memusage, massif, perf-stat, etc. systemtap-3.1/Makefile.am000066400000000000000000000373331305163227500154570ustar00rootroot00000000000000# Makefile.am --- automake input file for systemtap ## process this file with automake to produce Makefile.in # we don't maintain a ChangeLog, which makes us non-GNU -> foreign AUTOMAKE_OPTIONS = no-dist foreign pkglibexecdir = ${libexecdir}/${PACKAGE} oldincludedir = ${includedir}/sys AM_CPPFLAGS = -DBINDIR='"$(bindir)"' \ -DSYSCONFDIR='"$(sysconfdir)"' \ -DPKGDATADIR='"$(pkgdatadir)"' \ -DPKGLIBDIR='"$(pkglibexecdir)"' \ -DLOCALEDIR='"$(localedir)"' \ -DDOCDIR='"$(docdir)"' \ -DPYEXECDIR='"$(pyexecdir)"' \ -DPY3EXECDIR='"$(py3execdir)"' \ -I$(srcdir)/includes -I$(builddir)/includes/sys AM_CFLAGS = -D_GNU_SOURCE -fexceptions -Wall -Wextra -Werror -Wunused -Wformat=2 -W AM_CXXFLAGS = -Wall -Wextra -Werror bin_SCRIPTS = stap-report pkglibexec_SCRIPTS = stap-env oldinclude_HEADERS = includes/sys/sdt.h includes/sys/sdt-config.h bin_PROGRAMS = if BUILD_TRANSLATOR bin_PROGRAMS += stap bin_SCRIPTS += dtrace pkglibexec_PROGRAMS = if HAVE_NSS pkglibexec_PROGRAMS += stap-sign-module stap-authorize-cert if BUILD_SERVER pkglibexec_PROGRAMS += stap-serverd stap-gen-cert bin_SCRIPTS += stap-server pkglibexec_SCRIPTS += stap-start-server stap-stop-server endif endif stap_SOURCES = main.cxx session.cxx \ parse.cxx staptree.cxx elaborate.cxx translate.cxx \ tapsets.cxx buildrun.cxx loc2c.c hash.cxx mdfour.c \ cache.cxx util.cxx coveragedb.cxx dwarf_wrappers.cxx \ tapset-been.cxx tapset-procfs.cxx tapset-timers.cxx tapset-netfilter.cxx \ tapset-perfmon.cxx tapset-mark.cxx tapset-itrace.cxx \ tapset-utrace.cxx task_finder.cxx dwflpp.cxx rpm_finder.cxx \ setupdwfl.cxx remote.cxx privilege.cxx cmdline.cxx \ tapset-dynprobe.cxx tapset-method.cxx translator-output.cxx \ stapregex.cxx stapregex-tree.cxx stapregex-parse.cxx \ stapregex-dfa.cxx stringtable.cxx tapset-python.cxx noinst_HEADERS = sdt_types.h stap_LDADD = @stap_LIBS@ @sqlite3_LIBS@ @LIBINTL@ -lpthread stap_DEPENDENCIES = if HAVE_LIBREADLINE stap_SOURCES += interactive.cxx stap_LDADD += @READLINE_LIBS@ endif if BUILD_VIRT bin_PROGRAMS += stapvirt stapvirt_SOURCES = stapvirt.c stapvirt_CFLAGS = $(AM_CFLAGS) stapvirt_CFLAGS += $(libvirt_CFLAGS) $(libxml2_CFLAGS) stapvirt_LDFLAGS = $(AM_LDFLAGS) stapvirt_LDADD = $(libvirt_LIBS) $(libxml2_LIBS) endif endif install: all $(MAKE) $(AM_MAKEFLAGS) install-recursive BUILT_SOURCES = CLEANFILES = # Arrange for git_version.h to be regenerated at every "make". # Code fragment is based upon RadeonHD.am. # The stamp file which is never created ensures that git_version.h is updated # before every build. Having git_version.h in foo_SOURCES ensures a recompile # of foo-bar.c if it is newer than the foo-bar.o file. Using noinst_foo_SOURCES # instead of foo_SOURCES prevents shipping git_version.h in dist tarballs, # which may cause false GIT_FOO readings. BUILT_SOURCES += git_version.stamp CLEANFILES += git_version.h GIT_VERSION_CMD = $(SHELL) $(top_srcdir)/git_version.sh git_version.stamp: @if test -f "$(srcdir)/git_version.h"; then \ if test -f "git_version.h"; then :; \ else \ cp "$(srcdir)/git_version.h" "git_version.h"; \ fi; \ fi $(GIT_VERSION_CMD) -k -s $(top_srcdir) -o git_version.h @if test -s "$(srcdir)/git_version.h"; then \ if cmp "$(srcdir)/git_version.h" "git_version.h"; then :; \ else \ echo "Error: $(srcdir)/git_version.h and git_version.h differ."; \ echo " You probably want to remove the former."; \ exit 1; \ fi; \ fi git_version.h: $(srcdir)/git_version.sh -k --srcdir $(srcdir) -o git_version.h cscope: cd $(srcdir) && \ (echo -q ; git ls-files '*.cxx' '*.c' '*.h' | grep -v '^testsuite' ) > cscope.files && \ cscope -b -q @DYNINST_CXXFLAGS@ PHONIES = if BUILD_TRANSLATOR stap_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ stap_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ stap_CPPFLAGS = $(AM_CPPFLAGS) -DSTAP_SDT_V2 stap_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ if HAVE_AVAHI stap_CXXFLAGS += $(avahi_CFLAGS) stap_CPPFLAGS += $(avahi_CFLAGS) stap_LDADD += $(avahi_LIBS) endif if HAVE_NSS stap_SOURCES += nsscommon.cxx csclient.cxx cscommon.cxx stap_CFLAGS += $(nss_CFLAGS) -DSTAP stap_CXXFLAGS += $(nss_CFLAGS) stap_CPPFLAGS += $(nss_CFLAGS) stap_LDADD += $(nss_LIBS) install-exec-local: install-scripts PHONIES += install-scripts # scripts must be installed before this rule is run install-scripts: install-binSCRIPTS install-pkglibexecSCRIPTS for f in $(bin_SCRIPTS); do \ sed -i -e "s,\$${PKGLIBEXECDIR},$(pkglibexecdir)/," $(DESTDIR)$(bindir)/$$f; \ done for f in $(pkglibexec_SCRIPTS); do \ sed -i -e "/INSTALL-HOOK/d;s,sysconfdir=.*,sysconfdir=$(sysconfdir),;s,pkglibexecdir=.*,pkglibexecdir=$(pkglibexecdir)/,;s,localstatedir=.*,localstatedir=$(localstatedir),;s,\$${PKGLIBEXECDIR},$(pkglibexecdir)/," $(DESTDIR)$(pkglibexecdir)/$$f; \ done endif if BUILD_ELFUTILS stap_CPPFLAGS += -Iinclude-elfutils stap_LDFLAGS += -Llib-elfutils -Wl,-rpath-link,lib-elfutils \ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) BUILT_SOURCES += stamp-elfutils CLEANFILES += stamp-elfutils stamp-elfutils: config.status $(MAKE) $(AM_MAKEFLAGS) -C build-elfutils all bin_PROGRAMS= for dir in libelf libebl libdw libdwfl backends; do \ $(MAKE) $(AM_MAKEFLAGS) -j1 -C build-elfutils/$$dir bin_PROGRAMS= install; \ done $(MAKE) $(AM_MAKEFLAGS) -j1 -C build-elfutils install-pkgincludeHEADERS; touch $@ stap_DEPENDENCIES += lib-elfutils/libdw.so lib-elfutils/libdw.so: stamp-elfutils ; PHONIES += install-elfutils install-elfutils: mkdir -p $(DESTDIR)$(pkglibdir) for file in lib-elfutils/*.so* lib-elfutils/${PACKAGE_NAME}/*.so*; do \ $(INSTALL_PROGRAM) $$file $(DESTDIR)$(pkglibdir); \ done install-exec-local: install-elfutils endif endif CLEANFILES += $(pkglibexec_PROGRAMS) if BUILD_TRANSLATOR if HAVE_NSS stap_sign_module_SOURCES = stap-sign-module.cxx nsscommon.cxx util.cxx stap_sign_module_CPPFLAGS = $(AM_CPPFLAGS) stap_sign_module_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) stap_sign_module_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) stap_sign_module_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ stap_sign_module_LDADD = $(nss_LIBS) stap_authorize_cert_SOURCES = stap-authorize-cert.cxx nsscommon.cxx util.cxx stap_authorize_cert_CPPFLAGS = $(AM_CPPFLAGS) stap_authorize_cert_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) stap_authorize_cert_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) stap_authorize_cert_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ stap_authorize_cert_LDADD = $(nss_LIBS) if BUILD_SERVER stap_serverd_SOURCES = stap-serverd.cxx cscommon.cxx util.cxx privilege.cxx nsscommon.cxx cmdline.cxx stap_serverd_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) stap_serverd_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) stap_serverd_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ stap_serverd_LDADD = $(nss_LIBS) -lpthread if HAVE_AVAHI stap_serverd_CFLAGS += $(avahi_CFLAGS) stap_serverd_CXXFLAGS += $(avahi_CFLAGS) stap_serverd_LDADD += $(avahi_LIBS) endif stap_gen_cert_SOURCES = stap-gen-cert.cxx util.cxx nsscommon.cxx stap_gen_cert_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) stap_gen_cert_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) stap_gen_cert_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ stap_gen_cert_LDADD = $(nss_LIBS) endif endif noinst_PROGRAMS = loc2c-test loc2c_test_SOURCES = loc2c-test.c loc2c.c loc2c_test_CFLAGS = $(stap_CFLAGS) loc2c_test_CPPFLAGS = $(stap_CPPFLAGS) loc2c_test_LDFLAGS = $(stap_LDFLAGS) loc2c_test_LDADD = $(stap_LDADD) endif # crash(8) extension if BUILD_CRASHMOD STAPLOG=staplog.so $(STAPLOG): staplog.c $(CC) $(staplog_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -shared -rdynamic \ $(AM_LDFLAGS) $(LDFLAGS) -fPIC -o $@ $< all-local: $(STAPLOG) example_index install-exec-local: $(STAPLOG) $(MKDIR_P) $(DESTDIR)$(pkglibdir) $(INSTALL) $(STAPLOG) $(DESTDIR)$(pkglibdir) else all-local: example_index endif # Get extra libs as needed LDADD = EXAMPLE_SOURCE_DIR = $(srcdir)/testsuite/systemtap.examples EXAMPLE_META_FILES = $(EXAMPLE_SOURCE_DIR)/*/*.meta example_index: $(EXAMPLE_SOURCE_DIR)/index.html $(EXAMPLE_SOURCE_DIR)/index.html: $(EXAMPLE_META_FILES) $(EXAMPLE_INDEX_GEN) @echo "The script example index is outdated, run" @echo " cd $(EXAMPLE_SOURCE_DIR) && \\ " @echo " perl examples-index-gen.pl" @echo "to regenerate it." install-data-local: (cd $(srcdir)/runtime; for f in *.[ch]; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/$$f; done) if HAVE_DYNINST (cd $(srcdir)/runtime/dyninst; find . \( -name '*.[ch]' \) -print \ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/dyninst/$$f; done) endif (cd $(srcdir)/runtime/unwind; find . \( -name '*.[ch]' \) -print \ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/unwind/$$f; done) (cd $(srcdir)/runtime/transport; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/transport/$$f; done) (cd $(srcdir)/runtime/linux; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/$$f; done) (cd $(srcdir)/runtime/linux/uprobes; for f in Makefile *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes/$$f; done) (cd $(srcdir)/runtime/linux/uprobes2; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes2/$$f; done) (cd $(srcdir)/tapset; find . \( -name '*.stp' -o -name '*.stpm' -o -name README \) -print \ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/tapset/$$f; done) (cd $(srcdir)/testsuite/systemtap.examples; find . -type f -print \ | egrep -v 'check.exp|ChangeLog|examples-index-gen.pl|html/.*\.tmpl|metadatabase.dbq$$' \ | while read f; do if test -x $$f; then \ i_cmd="$(INSTALL_PROGRAM)"; else \ i_cmd="$(INSTALL_DATA)"; fi; \ $$i_cmd -D $$f $(DESTDIR)$(pkgdatadir)/examples/$$f; done) test -e $(DESTDIR)$(sysconfdir)/systemtap || mkdir -p $(DESTDIR)$(sysconfdir)/systemtap if BUILD_SERVER test -e $(DESTDIR)$(localstatedir)/run/stap-server || mkdir -p $(DESTDIR)$(localstatedir)/run/stap-server test -e $(DESTDIR)$(localstatedir)/log || mkdir -p $(DESTDIR)$(localstatedir)/log endif TEST_COV_DIR = coverage gcov: find . -name '*.gc*' | xargs rm -f $(MAKE) clean CXXFLAGS="-g -fprofile-arcs -ftest-coverage" CFLAGS="-g -fprofile-arcs -ftest-coverage" all install -sudo $(MAKE) installcheck $${RUNTESTFLAGS+RUNTESTFLAGS=$${RUNTESTFLAGS}} for dir in $(SUBDIRS); do \ (cd $$dir; gcov *.gcno > SUMMARY.gcov 2>&1 || true); \ done find . -name '*.gcov' clean-local: rm -rf ${PACKAGE_TARNAME}-*.tar.gz rm -rf ${PACKAGE_TARNAME}-${PACKAGE_VERSION} rm -rf $(TEST_COV_DIR) rm -rf stap.info rm -rf staplog.so distclean-local: rm -rf build-elfutils include-elfutils lib-elfutils rm -f doc/beginners/en-US doc/beginners/build/en-US/testsuite uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(libdir)/$(PACKAGE) -rm -rf $(DESTDIR)$(localstatedir)/cache/$(PACKAGE) @list='$(EXAMPLE_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(EXAMPLE_INSTALL_DIR)/$$p'"; \ rm -f "$(EXAMPLE_INSTALL_DIR)/$$p"; \ done @list='$(DEMO_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(DEMO_INSTALL_DIR)/$$p'"; \ rm -f "$(DEMO_INSTALL_DIR)/$$p"; \ done @list='$(SAMPLE_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(SAMPLE_INSTALL_DIR)/$$p'"; \ rm -f "$(SAMPLE_INSTALL_DIR)/$$p"; \ done rm -rf $(DESTDIR)$(sysconfdir)/systemtap rm -rf $(DESTDIR)$(docdir)/examples if BUILD_SERVER rm -rf $(DESTDIR)$(localstatedir)/run/stap-server rm -f $(DESTDIR)$(localstatedir)/log/stap-server/log endif SUBDIRS = . java python stapdyn staprun doc man po # NB: the gcov target above uses this to enumarate linked binaries' build directories DIST_SUBDIRS = testsuite $(SUBDIRS) EXTRA_DIST = m4/ChangeLog check-local: SRCDIR=`cd $(srcdir); pwd`; \ PWD=`pwd`; \ $(MAKE) -C testsuite check SYSTEMTAP_RUNTIME=$$SRCDIR/runtime SYSTEMTAP_TAPSET=$$SRCDIR/tapset LD_LIBRARY_PATH=$$LD_LIBRARY_PATH$${LD_LIBRARY_PATH:+:}$$PWD/lib-elfutils:$$PWD/lib-elfutils/systemtap SYSTEMTAP_PATH=$$PWD SYSTEMTAP_INCLUDES=$$PWD/includes RUNTESTFLAGS="$(RUNTESTFLAGS)" PKGLIBDIR="$(pkglibexecdir)"; installcheck: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite installcheck RUNTESTFLAGS="$(RUNTESTFLAGS)" installcheck-parallel: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite installcheck-parallel RUNTESTFLAGS="$(RUNTESTFLAGS)" list-unfinished: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite list-unfinished RUNTESTFLAGS="$(RUNTESTFLAGS)" PHONIES += runcheck # All the variables are overridden by run-stap, but SYSTEMTAP_RUNTIME # is used by the testsuite scripts themselves. runcheck: testsuite/stap testsuite/dtrace $(MAKE) -C testsuite installcheck RUNTESTFLAGS="$(RUNTESTFLAGS)" \ SYSTEMTAP_PATH="`cd testsuite; pwd`" \ SYSTEMTAP_RUNTIME="`cd $(srcdir)/runtime; pwd`" testsuite/stap: run-stap (echo '#!/bin/sh'; echo "exec `pwd`/run-stap" '$${1+"$$@"}') > $@.new chmod 555 $@.new mv -f $@.new $@ testsuite/dtrace: dtrace (echo '#!/bin/sh'; echo "exec `pwd`/dtrace" '$${1+"$$@"}') > $@.new chmod 555 $@.new mv -f $@.new $@ PHONIES += update-po update-po: (cd $(srcdir); ls -1d *.c *.cxx *.h staprun/*.c staprun/*.h) \ | grep -v loc2c-test.c \ | grep -v config.h \ | grep -v git_version.h \ | grep -v staprun/config.h \ | sort > $(srcdir)/po/POTFILES.in $(MAKE) -C po update-po @echo @echo if systemtam.pot is shown as modified ... @echo (cd $(srcdir)/po; git status *.pot) @echo @echo ... then check in with zanata ... @echo @echo % cd $(srcdir) @echo % zanata-cli -B push -s po -t po @echo % zanata-cli -B pull -s po -t po @echo @echo if the .po files are shown as modified ... @echo (cd $(srcdir)/po; git status *.po) @echo @echo ... regenerate just once ... @echo @echo % $(MAKE) -C `pwd` update-po # Any extra flags, such as: # --define "with_docs 0" # --define "with_bundled_elfutils 1" --define "elfutils_version 0.135" RPMBUILDFLAGS= PHONIES += dist-gzip rpm srpm PHONIES += uprobes install-uprobes uprobes: $(MAKE) -C $(srcdir)/runtime/uprobes clean default install-uprobes: $(MAKE) -C $(DESTDIR)$(pkgdatadir)/runtime/uprobes clean default .PHONY: $(PHONIES) dist-gzip: cd $(srcdir); git status | grep working.directory.clean || (echo "You should commit your changes before 'make rpm'.") (cd $(srcdir); git archive --prefix=systemtap-$(VERSION)/ --format=tar HEAD) | gzip > systemtap-$(VERSION).tar.gz rpm: dist-gzip if [ `id -u` = 0 ]; then echo NOTE: do not run this as root; exit 1; fi if [ ! -w `rpm --eval %_topdir` ]; then \ echo WARNING: you do not have access to `rpm --eval %_topdir`; \ echo WARNING: you may receive a permission denied error; \ echo WARNING: consider adding \'%_topdir $(HOME)/rpmbuild\' to $(HOME)/.rpmmacros; \ fi mkdir -p `rpm --eval %_specdir` mkdir -p `rpm --eval %_srcrpmdir` mkdir -p `rpm --eval %_rpmdir` mkdir -p `rpm --eval %_builddir` mkdir -p `rpm --eval %_buildroot` rpmbuild --define "_sourcedir $(PWD)/" -ta systemtap-$(VERSION).tar.gz $(RPMBUILDFLAGS) srpm: dist-gzip mkdir -p `rpm --eval %_srcrpmdir` rpmbuild --define "_sourcedir $(PWD)/" -ts systemtap-$(VERSION).tar.gz $(RPMBUILDFLAGS) ACLOCAL_AMFLAGS = -I m4 systemtap-3.1/Makefile.in000066400000000000000000005533161305163227500154740ustar00rootroot00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am --- automake input file for systemtap VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) @BUILD_TRANSLATOR_TRUE@am__append_1 = stap @BUILD_TRANSLATOR_TRUE@am__append_2 = dtrace @BUILD_TRANSLATOR_TRUE@pkglibexec_PROGRAMS = $(am__EXEEXT_3) \ @BUILD_TRANSLATOR_TRUE@ $(am__EXEEXT_4) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_3 = stap-sign-module stap-authorize-cert @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_4 = stap-serverd stap-gen-cert @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_5 = stap-server @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_6 = stap-start-server stap-stop-server @BUILD_TRANSLATOR_TRUE@@HAVE_LIBREADLINE_TRUE@am__append_7 = interactive.cxx @BUILD_TRANSLATOR_TRUE@@HAVE_LIBREADLINE_TRUE@am__append_8 = @READLINE_LIBS@ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@am__append_9 = stapvirt @BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@am__append_10 = $(avahi_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@am__append_11 = $(avahi_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@am__append_12 = $(avahi_LIBS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_13 = nsscommon.cxx csclient.cxx cscommon.cxx @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_14 = $(nss_CFLAGS) -DSTAP @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_15 = $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_16 = $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_17 = $(nss_LIBS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__append_18 = install-scripts @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_19 = -Iinclude-elfutils @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_20 = -Llib-elfutils -Wl,-rpath-link,lib-elfutils \ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_21 = stamp-elfutils @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_22 = stamp-elfutils @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_23 = lib-elfutils/libdw.so @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@am__append_24 = install-elfutils @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@@HAVE_NSS_TRUE@am__append_25 = $(avahi_CFLAGS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@@HAVE_NSS_TRUE@am__append_26 = $(avahi_CFLAGS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@@HAVE_NSS_TRUE@am__append_27 = $(avahi_LIBS) @BUILD_TRANSLATOR_TRUE@noinst_PROGRAMS = loc2c-test$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__noinst_HEADERS_DIST) \ $(oldinclude_HEADERS) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = includes/sys/sdt-config.h \ initscript/config.systemtap initscript/config.stap-server \ initscript/systemtap initscript/stap-server \ initscript/99stap/module-setup.sh initscript/99stap/install \ initscript/99stap/check run-stap dtrace staprun/guest/stapshd \ staprun/guest/stapsh-daemon staprun/guest/stapsh@.service CONFIG_CLEAN_VPATH_FILES = @BUILD_TRANSLATOR_TRUE@am__EXEEXT_1 = stap$(EXEEXT) @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@am__EXEEXT_2 = \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ stapvirt$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" \ "$(DESTDIR)$(oldincludedir)" @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__EXEEXT_3 = stap-sign-module$(EXEEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap-authorize-cert$(EXEEXT) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__EXEEXT_4 = stap-serverd$(EXEEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap-gen-cert$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(pkglibexec_PROGRAMS) @BUILD_TRANSLATOR_TRUE@am_loc2c_test_OBJECTS = \ @BUILD_TRANSLATOR_TRUE@ loc2c_test-loc2c-test.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ loc2c_test-loc2c.$(OBJEXT) loc2c_test_OBJECTS = $(am_loc2c_test_OBJECTS) am__DEPENDENCIES_1 = @BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@am__DEPENDENCIES_2 = \ @BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@ $(am__DEPENDENCIES_1) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__DEPENDENCIES_3 = \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__DEPENDENCIES_1) @BUILD_TRANSLATOR_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) \ @BUILD_TRANSLATOR_TRUE@ $(am__DEPENDENCIES_2) \ @BUILD_TRANSLATOR_TRUE@ $(am__DEPENDENCIES_3) @BUILD_TRANSLATOR_TRUE@loc2c_test_DEPENDENCIES = \ @BUILD_TRANSLATOR_TRUE@ $(am__DEPENDENCIES_4) loc2c_test_LINK = $(CCLD) $(loc2c_test_CFLAGS) $(CFLAGS) \ $(loc2c_test_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_TRANSLATOR_TRUE@@HAVE_LIBREADLINE_TRUE@am__objects_1 = stap-interactive.$(OBJEXT) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am__objects_2 = stap-nsscommon.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap-csclient.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap-cscommon.$(OBJEXT) @BUILD_TRANSLATOR_TRUE@am_stap_OBJECTS = stap-main.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-session.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-parse.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-staptree.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-elaborate.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-translate.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapsets.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-buildrun.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-loc2c.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-hash.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-mdfour.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-cache.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-util.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-coveragedb.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-dwarf_wrappers.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-been.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-procfs.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-timers.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-netfilter.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-perfmon.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-mark.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-itrace.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-utrace.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-task_finder.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-dwflpp.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-rpm_finder.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-setupdwfl.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-remote.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-privilege.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-cmdline.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-dynprobe.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-method.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-translator-output.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-stapregex.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-stapregex-tree.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-stapregex-parse.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-stapregex-dfa.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-stringtable.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ stap-tapset-python.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@ $(am__objects_1) $(am__objects_2) stap_OBJECTS = $(am_stap_OBJECTS) stap_LINK = $(CXXLD) $(stap_CXXFLAGS) $(CXXFLAGS) $(stap_LDFLAGS) \ $(LDFLAGS) -o $@ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am_stap_authorize_cert_OBJECTS = stap_authorize_cert-stap-authorize-cert.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_authorize_cert-nsscommon.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_authorize_cert-util.$(OBJEXT) stap_authorize_cert_OBJECTS = $(am_stap_authorize_cert_OBJECTS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_DEPENDENCIES = \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__DEPENDENCIES_1) stap_authorize_cert_LINK = $(CXXLD) $(stap_authorize_cert_CXXFLAGS) \ $(CXXFLAGS) $(stap_authorize_cert_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am_stap_gen_cert_OBJECTS = stap_gen_cert-stap-gen-cert.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_gen_cert-util.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_gen_cert-nsscommon.$(OBJEXT) stap_gen_cert_OBJECTS = $(am_stap_gen_cert_OBJECTS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_DEPENDENCIES = $(am__DEPENDENCIES_1) stap_gen_cert_LINK = $(CXXLD) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) \ $(stap_gen_cert_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am_stap_serverd_OBJECTS = stap_serverd-stap-serverd.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_serverd-cscommon.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_serverd-util.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_serverd-privilege.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_serverd-nsscommon.$(OBJEXT) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_serverd-cmdline.$(OBJEXT) stap_serverd_OBJECTS = $(am_stap_serverd_OBJECTS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_AVAHI_TRUE@@HAVE_NSS_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__DEPENDENCIES_5) stap_serverd_LINK = $(CXXLD) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) \ $(stap_serverd_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@am_stap_sign_module_OBJECTS = stap_sign_module-stap-sign-module.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_sign_module-nsscommon.$(OBJEXT) \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ stap_sign_module-util.$(OBJEXT) stap_sign_module_OBJECTS = $(am_stap_sign_module_OBJECTS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_DEPENDENCIES = \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__DEPENDENCIES_1) stap_sign_module_LINK = $(CXXLD) $(stap_sign_module_CXXFLAGS) \ $(CXXFLAGS) $(stap_sign_module_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@am_stapvirt_OBJECTS = stapvirt-stapvirt.$(OBJEXT) stapvirt_OBJECTS = $(am_stapvirt_OBJECTS) @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@stapvirt_DEPENDENCIES = \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ $(am__DEPENDENCIES_1) \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ $(am__DEPENDENCIES_1) stapvirt_LINK = $(CCLD) $(stapvirt_CFLAGS) $(CFLAGS) \ $(stapvirt_LDFLAGS) $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) $(pkglibexec_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(loc2c_test_SOURCES) $(stap_SOURCES) \ $(stap_authorize_cert_SOURCES) $(stap_gen_cert_SOURCES) \ $(stap_serverd_SOURCES) $(stap_sign_module_SOURCES) \ $(stapvirt_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__noinst_HEADERS_DIST = sdt_types.h HEADERS = $(noinst_HEADERS) $(oldinclude_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope pkglibexecdir = ${libexecdir}/${PACKAGE} ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATE = @DATE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DYNINST_CXXFLAGS = @DYNINST_CXXFLAGS@ DYNINST_LDFLAGS = @DYNINST_LDFLAGS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_NLS = @ENABLE_NLS@ EXEEXT = @EXEEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ JAVADIR = @JAVADIR@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PIECFLAGS = @PIECFLAGS@ PIECXXFLAGS = @PIECXXFLAGS@ PIELDFLAGS = @PIELDFLAGS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON3 = @PYTHON3@ PYTHON3_CONFIG = @PYTHON3_CONFIG@ PYTHON3_CPPFLAGS = @PYTHON3_CPPFLAGS@ PYTHON3_EXEC_PREFIX = @PYTHON3_EXEC_PREFIX@ PYTHON3_PLATFORM = @PYTHON3_PLATFORM@ PYTHON3_PREFIX = @PYTHON3_PREFIX@ PYTHON3_VERSION = @PYTHON3_VERSION@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_UNKNOWN = @PYTHON_UNKNOWN@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STAP_EXTRA_VERSION = @STAP_EXTRA_VERSION@ STAP_PREFIX = @STAP_PREFIX@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ avahi_CFLAGS = @avahi_CFLAGS@ avahi_LIBS = @avahi_LIBS@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutbindir = @dracutbindir@ dracutstap = @dracutstap@ dvidir = @dvidir@ elfutils_abs_srcdir = @elfutils_abs_srcdir@ exec_prefix = @exec_prefix@ have_dvips = @have_dvips@ have_fop = @have_fop@ have_jar = @have_jar@ have_javac = @have_javac@ have_latex = @have_latex@ have_ps2pdf = @have_ps2pdf@ have_xmlto = @have_xmlto@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jsonc_CFLAGS = @jsonc_CFLAGS@ jsonc_LIBS = @jsonc_LIBS@ libdir = @libdir@ libexecdir = @libexecdir@ libvirt_CFLAGS = @libvirt_CFLAGS@ libvirt_LIBS = @libvirt_LIBS@ libxml2_CFLAGS = @libxml2_CFLAGS@ libxml2_LIBS = @libxml2_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ ncurses_CFLAGS = @ncurses_CFLAGS@ ncurses_LIBS = @ncurses_LIBS@ nss_CFLAGS = @nss_CFLAGS@ nss_LIBS = @nss_LIBS@ oldincludedir = ${includedir}/sys pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ preferred_python = @preferred_python@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py3execdir = @py3execdir@ pyexecdir = @pyexecdir@ python3dir = @python3dir@ pythondir = @pythondir@ sbindir = @sbindir@ selinux_CFLAGS = @selinux_CFLAGS@ selinux_LIBS = @selinux_LIBS@ sharedstatedir = @sharedstatedir@ sqlite3_LIBS = @sqlite3_LIBS@ srcdir = @srcdir@ stap_LIBS = @stap_LIBS@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ staprun_LIBS = @staprun_LIBS@ subdirs = @subdirs@ support_section_question = @support_section_question@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # we don't maintain a ChangeLog, which makes us non-GNU -> foreign AUTOMAKE_OPTIONS = no-dist foreign AM_CPPFLAGS = -DBINDIR='"$(bindir)"' \ -DSYSCONFDIR='"$(sysconfdir)"' \ -DPKGDATADIR='"$(pkgdatadir)"' \ -DPKGLIBDIR='"$(pkglibexecdir)"' \ -DLOCALEDIR='"$(localedir)"' \ -DDOCDIR='"$(docdir)"' \ -DPYEXECDIR='"$(pyexecdir)"' \ -DPY3EXECDIR='"$(py3execdir)"' \ -I$(srcdir)/includes -I$(builddir)/includes/sys AM_CFLAGS = -D_GNU_SOURCE -fexceptions -Wall -Wextra -Werror -Wunused -Wformat=2 -W AM_CXXFLAGS = -Wall -Wextra -Werror bin_SCRIPTS = stap-report $(am__append_2) $(am__append_5) pkglibexec_SCRIPTS = stap-env $(am__append_6) oldinclude_HEADERS = includes/sys/sdt.h includes/sys/sdt-config.h @BUILD_TRANSLATOR_TRUE@stap_SOURCES = main.cxx session.cxx parse.cxx \ @BUILD_TRANSLATOR_TRUE@ staptree.cxx elaborate.cxx \ @BUILD_TRANSLATOR_TRUE@ translate.cxx tapsets.cxx buildrun.cxx \ @BUILD_TRANSLATOR_TRUE@ loc2c.c hash.cxx mdfour.c cache.cxx \ @BUILD_TRANSLATOR_TRUE@ util.cxx coveragedb.cxx \ @BUILD_TRANSLATOR_TRUE@ dwarf_wrappers.cxx tapset-been.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-procfs.cxx tapset-timers.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-netfilter.cxx tapset-perfmon.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-mark.cxx tapset-itrace.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-utrace.cxx task_finder.cxx \ @BUILD_TRANSLATOR_TRUE@ dwflpp.cxx rpm_finder.cxx setupdwfl.cxx \ @BUILD_TRANSLATOR_TRUE@ remote.cxx privilege.cxx cmdline.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-dynprobe.cxx tapset-method.cxx \ @BUILD_TRANSLATOR_TRUE@ translator-output.cxx stapregex.cxx \ @BUILD_TRANSLATOR_TRUE@ stapregex-tree.cxx stapregex-parse.cxx \ @BUILD_TRANSLATOR_TRUE@ stapregex-dfa.cxx stringtable.cxx \ @BUILD_TRANSLATOR_TRUE@ tapset-python.cxx $(am__append_7) \ @BUILD_TRANSLATOR_TRUE@ $(am__append_13) @BUILD_TRANSLATOR_TRUE@noinst_HEADERS = sdt_types.h @BUILD_TRANSLATOR_TRUE@stap_LDADD = @stap_LIBS@ @sqlite3_LIBS@ \ @BUILD_TRANSLATOR_TRUE@ @LIBINTL@ -lpthread $(am__append_8) \ @BUILD_TRANSLATOR_TRUE@ $(am__append_12) $(am__append_17) @BUILD_TRANSLATOR_TRUE@stap_DEPENDENCIES = $(am__append_23) @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@stapvirt_SOURCES = stapvirt.c @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@stapvirt_CFLAGS = \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ $(AM_CFLAGS) \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ $(libvirt_CFLAGS) \ @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@ $(libxml2_CFLAGS) @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@stapvirt_LDFLAGS = $(AM_LDFLAGS) @BUILD_TRANSLATOR_TRUE@@BUILD_VIRT_TRUE@stapvirt_LDADD = $(libvirt_LIBS) $(libxml2_LIBS) # Arrange for git_version.h to be regenerated at every "make". # Code fragment is based upon RadeonHD.am. # The stamp file which is never created ensures that git_version.h is updated # before every build. Having git_version.h in foo_SOURCES ensures a recompile # of foo-bar.c if it is newer than the foo-bar.o file. Using noinst_foo_SOURCES # instead of foo_SOURCES prevents shipping git_version.h in dist tarballs, # which may cause false GIT_FOO readings. BUILT_SOURCES = git_version.stamp $(am__append_21) CLEANFILES = git_version.h $(am__append_22) $(pkglibexec_PROGRAMS) GIT_VERSION_CMD = $(SHELL) $(top_srcdir)/git_version.sh PHONIES = $(am__append_18) $(am__append_24) runcheck update-po \ dist-gzip rpm srpm uprobes install-uprobes @BUILD_TRANSLATOR_TRUE@stap_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ \ @BUILD_TRANSLATOR_TRUE@ $(am__append_14) @BUILD_TRANSLATOR_TRUE@stap_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ \ @BUILD_TRANSLATOR_TRUE@ $(am__append_10) $(am__append_15) @BUILD_TRANSLATOR_TRUE@stap_CPPFLAGS = $(AM_CPPFLAGS) -DSTAP_SDT_V2 \ @BUILD_TRANSLATOR_TRUE@ $(am__append_11) $(am__append_16) \ @BUILD_TRANSLATOR_TRUE@ $(am__append_19) @BUILD_TRANSLATOR_TRUE@stap_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ \ @BUILD_TRANSLATOR_TRUE@ $(am__append_20) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_SOURCES = stap-sign-module.cxx nsscommon.cxx util.cxx @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_CPPFLAGS = $(AM_CPPFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_sign_module_LDADD = $(nss_LIBS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_SOURCES = stap-authorize-cert.cxx nsscommon.cxx util.cxx @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_CPPFLAGS = $(AM_CPPFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_authorize_cert_LDADD = $(nss_LIBS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_SOURCES = stap-serverd.cxx cscommon.cxx util.cxx privilege.cxx nsscommon.cxx cmdline.cxx @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_CXXFLAGS = $(AM_CXXFLAGS) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ @PIECXXFLAGS@ \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(nss_CFLAGS) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__append_26) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_CFLAGS = $(AM_CFLAGS) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ @PIECFLAGS@ \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(nss_CFLAGS) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__append_25) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_serverd_LDADD = $(nss_LIBS) \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ -lpthread \ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ $(am__append_27) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_SOURCES = stap-gen-cert.cxx util.cxx nsscommon.cxx @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_CXXFLAGS = $(AM_CXXFLAGS) @PIECXXFLAGS@ $(nss_CFLAGS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_CFLAGS = $(AM_CFLAGS) @PIECFLAGS@ $(nss_CFLAGS) @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_LDFLAGS = $(AM_LDFLAGS) @PIELDFLAGS@ @BUILD_SERVER_TRUE@@BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@stap_gen_cert_LDADD = $(nss_LIBS) @BUILD_TRANSLATOR_TRUE@loc2c_test_SOURCES = loc2c-test.c loc2c.c @BUILD_TRANSLATOR_TRUE@loc2c_test_CFLAGS = $(stap_CFLAGS) @BUILD_TRANSLATOR_TRUE@loc2c_test_CPPFLAGS = $(stap_CPPFLAGS) @BUILD_TRANSLATOR_TRUE@loc2c_test_LDFLAGS = $(stap_LDFLAGS) @BUILD_TRANSLATOR_TRUE@loc2c_test_LDADD = $(stap_LDADD) # crash(8) extension @BUILD_CRASHMOD_TRUE@STAPLOG = staplog.so # Get extra libs as needed LDADD = EXAMPLE_SOURCE_DIR = $(srcdir)/testsuite/systemtap.examples EXAMPLE_META_FILES = $(EXAMPLE_SOURCE_DIR)/*/*.meta TEST_COV_DIR = coverage SUBDIRS = . java python stapdyn staprun doc man po # NB: the gcov target above uses this to enumarate linked binaries' build directories DIST_SUBDIRS = testsuite $(SUBDIRS) EXTRA_DIST = m4/ChangeLog # Any extra flags, such as: # --define "with_docs 0" # --define "with_bundled_elfutils 1" --define "elfutils_version 0.135" RPMBUILDFLAGS = ACLOCAL_AMFLAGS = -I m4 all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .cxx .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 includes/sys/sdt-config.h: $(top_builddir)/config.status $(top_srcdir)/includes/sys/sdt-config.h.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/config.systemtap: $(top_builddir)/config.status $(top_srcdir)/initscript/config.systemtap.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/config.stap-server: $(top_builddir)/config.status $(top_srcdir)/initscript/config.stap-server.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/systemtap: $(top_builddir)/config.status $(top_srcdir)/initscript/systemtap.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/stap-server: $(top_builddir)/config.status $(top_srcdir)/initscript/stap-server.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/99stap/module-setup.sh: $(top_builddir)/config.status $(top_srcdir)/initscript/99stap/module-setup.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/99stap/install: $(top_builddir)/config.status $(top_srcdir)/initscript/99stap/install.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/99stap/check: $(top_builddir)/config.status $(top_srcdir)/initscript/99stap/check.in cd $(top_builddir) && $(SHELL) ./config.status $@ run-stap: $(top_builddir)/config.status $(srcdir)/run-stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ dtrace: $(top_builddir)/config.status $(srcdir)/dtrace.in cd $(top_builddir) && $(SHELL) ./config.status $@ staprun/guest/stapshd: $(top_builddir)/config.status $(top_srcdir)/staprun/guest/stapshd.in cd $(top_builddir) && $(SHELL) ./config.status $@ staprun/guest/stapsh-daemon: $(top_builddir)/config.status $(top_srcdir)/staprun/guest/stapsh-daemon.in cd $(top_builddir) && $(SHELL) ./config.status $@ staprun/guest/stapsh@.service: $(top_builddir)/config.status $(top_srcdir)/staprun/guest/stapsh@.service.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) install-pkglibexecPROGRAMS: $(pkglibexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkglibexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkglibexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkglibexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkglibexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkglibexecdir)" && rm -f $$files clean-pkglibexecPROGRAMS: -test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS) loc2c-test$(EXEEXT): $(loc2c_test_OBJECTS) $(loc2c_test_DEPENDENCIES) $(EXTRA_loc2c_test_DEPENDENCIES) @rm -f loc2c-test$(EXEEXT) $(AM_V_CCLD)$(loc2c_test_LINK) $(loc2c_test_OBJECTS) $(loc2c_test_LDADD) $(LIBS) stap$(EXEEXT): $(stap_OBJECTS) $(stap_DEPENDENCIES) $(EXTRA_stap_DEPENDENCIES) @rm -f stap$(EXEEXT) $(AM_V_CXXLD)$(stap_LINK) $(stap_OBJECTS) $(stap_LDADD) $(LIBS) stap-authorize-cert$(EXEEXT): $(stap_authorize_cert_OBJECTS) $(stap_authorize_cert_DEPENDENCIES) $(EXTRA_stap_authorize_cert_DEPENDENCIES) @rm -f stap-authorize-cert$(EXEEXT) $(AM_V_CXXLD)$(stap_authorize_cert_LINK) $(stap_authorize_cert_OBJECTS) $(stap_authorize_cert_LDADD) $(LIBS) stap-gen-cert$(EXEEXT): $(stap_gen_cert_OBJECTS) $(stap_gen_cert_DEPENDENCIES) $(EXTRA_stap_gen_cert_DEPENDENCIES) @rm -f stap-gen-cert$(EXEEXT) $(AM_V_CXXLD)$(stap_gen_cert_LINK) $(stap_gen_cert_OBJECTS) $(stap_gen_cert_LDADD) $(LIBS) stap-serverd$(EXEEXT): $(stap_serverd_OBJECTS) $(stap_serverd_DEPENDENCIES) $(EXTRA_stap_serverd_DEPENDENCIES) @rm -f stap-serverd$(EXEEXT) $(AM_V_CXXLD)$(stap_serverd_LINK) $(stap_serverd_OBJECTS) $(stap_serverd_LDADD) $(LIBS) stap-sign-module$(EXEEXT): $(stap_sign_module_OBJECTS) $(stap_sign_module_DEPENDENCIES) $(EXTRA_stap_sign_module_DEPENDENCIES) @rm -f stap-sign-module$(EXEEXT) $(AM_V_CXXLD)$(stap_sign_module_LINK) $(stap_sign_module_OBJECTS) $(stap_sign_module_LDADD) $(LIBS) stapvirt$(EXEEXT): $(stapvirt_OBJECTS) $(stapvirt_DEPENDENCIES) $(EXTRA_stapvirt_DEPENDENCIES) @rm -f stapvirt$(EXEEXT) $(AM_V_CCLD)$(stapvirt_LINK) $(stapvirt_OBJECTS) $(stapvirt_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) install-pkglibexecSCRIPTS: $(pkglibexec_SCRIPTS) @$(NORMAL_INSTALL) @list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkglibexecdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkglibexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkglibexecSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(pkglibexecdir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loc2c_test-loc2c-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loc2c_test-loc2c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-buildrun.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-cache.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-cmdline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-coveragedb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-csclient.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-cscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-dwarf_wrappers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-dwflpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-elaborate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-interactive.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-loc2c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-mdfour.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-nsscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-privilege.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-remote.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-rpm_finder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-session.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-setupdwfl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-stapregex-dfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-stapregex-parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-stapregex-tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-stapregex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-staptree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-stringtable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-been.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-dynprobe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-itrace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-mark.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-method.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-netfilter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-perfmon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-procfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-python.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-timers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapset-utrace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-tapsets.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-task_finder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-translate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-translator-output.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_authorize_cert-nsscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_authorize_cert-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_gen_cert-nsscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_gen_cert-stap-gen-cert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_gen_cert-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-cmdline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-cscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-nsscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-privilege.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-stap-serverd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_serverd-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_sign_module-nsscommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_sign_module-stap-sign-module.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stap_sign_module-util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stapvirt-stapvirt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` loc2c_test-loc2c-test.o: loc2c-test.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -MT loc2c_test-loc2c-test.o -MD -MP -MF $(DEPDIR)/loc2c_test-loc2c-test.Tpo -c -o loc2c_test-loc2c-test.o `test -f 'loc2c-test.c' || echo '$(srcdir)/'`loc2c-test.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loc2c_test-loc2c-test.Tpo $(DEPDIR)/loc2c_test-loc2c-test.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c-test.c' object='loc2c_test-loc2c-test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -c -o loc2c_test-loc2c-test.o `test -f 'loc2c-test.c' || echo '$(srcdir)/'`loc2c-test.c loc2c_test-loc2c-test.obj: loc2c-test.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -MT loc2c_test-loc2c-test.obj -MD -MP -MF $(DEPDIR)/loc2c_test-loc2c-test.Tpo -c -o loc2c_test-loc2c-test.obj `if test -f 'loc2c-test.c'; then $(CYGPATH_W) 'loc2c-test.c'; else $(CYGPATH_W) '$(srcdir)/loc2c-test.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loc2c_test-loc2c-test.Tpo $(DEPDIR)/loc2c_test-loc2c-test.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c-test.c' object='loc2c_test-loc2c-test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -c -o loc2c_test-loc2c-test.obj `if test -f 'loc2c-test.c'; then $(CYGPATH_W) 'loc2c-test.c'; else $(CYGPATH_W) '$(srcdir)/loc2c-test.c'; fi` loc2c_test-loc2c.o: loc2c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -MT loc2c_test-loc2c.o -MD -MP -MF $(DEPDIR)/loc2c_test-loc2c.Tpo -c -o loc2c_test-loc2c.o `test -f 'loc2c.c' || echo '$(srcdir)/'`loc2c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loc2c_test-loc2c.Tpo $(DEPDIR)/loc2c_test-loc2c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c.c' object='loc2c_test-loc2c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -c -o loc2c_test-loc2c.o `test -f 'loc2c.c' || echo '$(srcdir)/'`loc2c.c loc2c_test-loc2c.obj: loc2c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -MT loc2c_test-loc2c.obj -MD -MP -MF $(DEPDIR)/loc2c_test-loc2c.Tpo -c -o loc2c_test-loc2c.obj `if test -f 'loc2c.c'; then $(CYGPATH_W) 'loc2c.c'; else $(CYGPATH_W) '$(srcdir)/loc2c.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loc2c_test-loc2c.Tpo $(DEPDIR)/loc2c_test-loc2c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c.c' object='loc2c_test-loc2c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loc2c_test_CPPFLAGS) $(CPPFLAGS) $(loc2c_test_CFLAGS) $(CFLAGS) -c -o loc2c_test-loc2c.obj `if test -f 'loc2c.c'; then $(CYGPATH_W) 'loc2c.c'; else $(CYGPATH_W) '$(srcdir)/loc2c.c'; fi` stap-loc2c.o: loc2c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -MT stap-loc2c.o -MD -MP -MF $(DEPDIR)/stap-loc2c.Tpo -c -o stap-loc2c.o `test -f 'loc2c.c' || echo '$(srcdir)/'`loc2c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-loc2c.Tpo $(DEPDIR)/stap-loc2c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c.c' object='stap-loc2c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -c -o stap-loc2c.o `test -f 'loc2c.c' || echo '$(srcdir)/'`loc2c.c stap-loc2c.obj: loc2c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -MT stap-loc2c.obj -MD -MP -MF $(DEPDIR)/stap-loc2c.Tpo -c -o stap-loc2c.obj `if test -f 'loc2c.c'; then $(CYGPATH_W) 'loc2c.c'; else $(CYGPATH_W) '$(srcdir)/loc2c.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-loc2c.Tpo $(DEPDIR)/stap-loc2c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loc2c.c' object='stap-loc2c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -c -o stap-loc2c.obj `if test -f 'loc2c.c'; then $(CYGPATH_W) 'loc2c.c'; else $(CYGPATH_W) '$(srcdir)/loc2c.c'; fi` stap-mdfour.o: mdfour.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -MT stap-mdfour.o -MD -MP -MF $(DEPDIR)/stap-mdfour.Tpo -c -o stap-mdfour.o `test -f 'mdfour.c' || echo '$(srcdir)/'`mdfour.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-mdfour.Tpo $(DEPDIR)/stap-mdfour.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mdfour.c' object='stap-mdfour.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -c -o stap-mdfour.o `test -f 'mdfour.c' || echo '$(srcdir)/'`mdfour.c stap-mdfour.obj: mdfour.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -MT stap-mdfour.obj -MD -MP -MF $(DEPDIR)/stap-mdfour.Tpo -c -o stap-mdfour.obj `if test -f 'mdfour.c'; then $(CYGPATH_W) 'mdfour.c'; else $(CYGPATH_W) '$(srcdir)/mdfour.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-mdfour.Tpo $(DEPDIR)/stap-mdfour.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mdfour.c' object='stap-mdfour.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CFLAGS) $(CFLAGS) -c -o stap-mdfour.obj `if test -f 'mdfour.c'; then $(CYGPATH_W) 'mdfour.c'; else $(CYGPATH_W) '$(srcdir)/mdfour.c'; fi` stapvirt-stapvirt.o: stapvirt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stapvirt_CFLAGS) $(CFLAGS) -MT stapvirt-stapvirt.o -MD -MP -MF $(DEPDIR)/stapvirt-stapvirt.Tpo -c -o stapvirt-stapvirt.o `test -f 'stapvirt.c' || echo '$(srcdir)/'`stapvirt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stapvirt-stapvirt.Tpo $(DEPDIR)/stapvirt-stapvirt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stapvirt.c' object='stapvirt-stapvirt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stapvirt_CFLAGS) $(CFLAGS) -c -o stapvirt-stapvirt.o `test -f 'stapvirt.c' || echo '$(srcdir)/'`stapvirt.c stapvirt-stapvirt.obj: stapvirt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stapvirt_CFLAGS) $(CFLAGS) -MT stapvirt-stapvirt.obj -MD -MP -MF $(DEPDIR)/stapvirt-stapvirt.Tpo -c -o stapvirt-stapvirt.obj `if test -f 'stapvirt.c'; then $(CYGPATH_W) 'stapvirt.c'; else $(CYGPATH_W) '$(srcdir)/stapvirt.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stapvirt-stapvirt.Tpo $(DEPDIR)/stapvirt-stapvirt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stapvirt.c' object='stapvirt-stapvirt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stapvirt_CFLAGS) $(CFLAGS) -c -o stapvirt-stapvirt.obj `if test -f 'stapvirt.c'; then $(CYGPATH_W) 'stapvirt.c'; else $(CYGPATH_W) '$(srcdir)/stapvirt.c'; fi` .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` stap-main.o: main.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-main.o -MD -MP -MF $(DEPDIR)/stap-main.Tpo -c -o stap-main.o `test -f 'main.cxx' || echo '$(srcdir)/'`main.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-main.Tpo $(DEPDIR)/stap-main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cxx' object='stap-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-main.o `test -f 'main.cxx' || echo '$(srcdir)/'`main.cxx stap-main.obj: main.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-main.obj -MD -MP -MF $(DEPDIR)/stap-main.Tpo -c -o stap-main.obj `if test -f 'main.cxx'; then $(CYGPATH_W) 'main.cxx'; else $(CYGPATH_W) '$(srcdir)/main.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-main.Tpo $(DEPDIR)/stap-main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cxx' object='stap-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-main.obj `if test -f 'main.cxx'; then $(CYGPATH_W) 'main.cxx'; else $(CYGPATH_W) '$(srcdir)/main.cxx'; fi` stap-session.o: session.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-session.o -MD -MP -MF $(DEPDIR)/stap-session.Tpo -c -o stap-session.o `test -f 'session.cxx' || echo '$(srcdir)/'`session.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-session.Tpo $(DEPDIR)/stap-session.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session.cxx' object='stap-session.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-session.o `test -f 'session.cxx' || echo '$(srcdir)/'`session.cxx stap-session.obj: session.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-session.obj -MD -MP -MF $(DEPDIR)/stap-session.Tpo -c -o stap-session.obj `if test -f 'session.cxx'; then $(CYGPATH_W) 'session.cxx'; else $(CYGPATH_W) '$(srcdir)/session.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-session.Tpo $(DEPDIR)/stap-session.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='session.cxx' object='stap-session.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-session.obj `if test -f 'session.cxx'; then $(CYGPATH_W) 'session.cxx'; else $(CYGPATH_W) '$(srcdir)/session.cxx'; fi` stap-parse.o: parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-parse.o -MD -MP -MF $(DEPDIR)/stap-parse.Tpo -c -o stap-parse.o `test -f 'parse.cxx' || echo '$(srcdir)/'`parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-parse.Tpo $(DEPDIR)/stap-parse.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='parse.cxx' object='stap-parse.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-parse.o `test -f 'parse.cxx' || echo '$(srcdir)/'`parse.cxx stap-parse.obj: parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-parse.obj -MD -MP -MF $(DEPDIR)/stap-parse.Tpo -c -o stap-parse.obj `if test -f 'parse.cxx'; then $(CYGPATH_W) 'parse.cxx'; else $(CYGPATH_W) '$(srcdir)/parse.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-parse.Tpo $(DEPDIR)/stap-parse.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='parse.cxx' object='stap-parse.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-parse.obj `if test -f 'parse.cxx'; then $(CYGPATH_W) 'parse.cxx'; else $(CYGPATH_W) '$(srcdir)/parse.cxx'; fi` stap-staptree.o: staptree.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-staptree.o -MD -MP -MF $(DEPDIR)/stap-staptree.Tpo -c -o stap-staptree.o `test -f 'staptree.cxx' || echo '$(srcdir)/'`staptree.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-staptree.Tpo $(DEPDIR)/stap-staptree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='staptree.cxx' object='stap-staptree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-staptree.o `test -f 'staptree.cxx' || echo '$(srcdir)/'`staptree.cxx stap-staptree.obj: staptree.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-staptree.obj -MD -MP -MF $(DEPDIR)/stap-staptree.Tpo -c -o stap-staptree.obj `if test -f 'staptree.cxx'; then $(CYGPATH_W) 'staptree.cxx'; else $(CYGPATH_W) '$(srcdir)/staptree.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-staptree.Tpo $(DEPDIR)/stap-staptree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='staptree.cxx' object='stap-staptree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-staptree.obj `if test -f 'staptree.cxx'; then $(CYGPATH_W) 'staptree.cxx'; else $(CYGPATH_W) '$(srcdir)/staptree.cxx'; fi` stap-elaborate.o: elaborate.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-elaborate.o -MD -MP -MF $(DEPDIR)/stap-elaborate.Tpo -c -o stap-elaborate.o `test -f 'elaborate.cxx' || echo '$(srcdir)/'`elaborate.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-elaborate.Tpo $(DEPDIR)/stap-elaborate.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='elaborate.cxx' object='stap-elaborate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-elaborate.o `test -f 'elaborate.cxx' || echo '$(srcdir)/'`elaborate.cxx stap-elaborate.obj: elaborate.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-elaborate.obj -MD -MP -MF $(DEPDIR)/stap-elaborate.Tpo -c -o stap-elaborate.obj `if test -f 'elaborate.cxx'; then $(CYGPATH_W) 'elaborate.cxx'; else $(CYGPATH_W) '$(srcdir)/elaborate.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-elaborate.Tpo $(DEPDIR)/stap-elaborate.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='elaborate.cxx' object='stap-elaborate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-elaborate.obj `if test -f 'elaborate.cxx'; then $(CYGPATH_W) 'elaborate.cxx'; else $(CYGPATH_W) '$(srcdir)/elaborate.cxx'; fi` stap-translate.o: translate.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-translate.o -MD -MP -MF $(DEPDIR)/stap-translate.Tpo -c -o stap-translate.o `test -f 'translate.cxx' || echo '$(srcdir)/'`translate.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-translate.Tpo $(DEPDIR)/stap-translate.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='translate.cxx' object='stap-translate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-translate.o `test -f 'translate.cxx' || echo '$(srcdir)/'`translate.cxx stap-translate.obj: translate.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-translate.obj -MD -MP -MF $(DEPDIR)/stap-translate.Tpo -c -o stap-translate.obj `if test -f 'translate.cxx'; then $(CYGPATH_W) 'translate.cxx'; else $(CYGPATH_W) '$(srcdir)/translate.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-translate.Tpo $(DEPDIR)/stap-translate.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='translate.cxx' object='stap-translate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-translate.obj `if test -f 'translate.cxx'; then $(CYGPATH_W) 'translate.cxx'; else $(CYGPATH_W) '$(srcdir)/translate.cxx'; fi` stap-tapsets.o: tapsets.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapsets.o -MD -MP -MF $(DEPDIR)/stap-tapsets.Tpo -c -o stap-tapsets.o `test -f 'tapsets.cxx' || echo '$(srcdir)/'`tapsets.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapsets.Tpo $(DEPDIR)/stap-tapsets.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapsets.cxx' object='stap-tapsets.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapsets.o `test -f 'tapsets.cxx' || echo '$(srcdir)/'`tapsets.cxx stap-tapsets.obj: tapsets.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapsets.obj -MD -MP -MF $(DEPDIR)/stap-tapsets.Tpo -c -o stap-tapsets.obj `if test -f 'tapsets.cxx'; then $(CYGPATH_W) 'tapsets.cxx'; else $(CYGPATH_W) '$(srcdir)/tapsets.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapsets.Tpo $(DEPDIR)/stap-tapsets.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapsets.cxx' object='stap-tapsets.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapsets.obj `if test -f 'tapsets.cxx'; then $(CYGPATH_W) 'tapsets.cxx'; else $(CYGPATH_W) '$(srcdir)/tapsets.cxx'; fi` stap-buildrun.o: buildrun.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-buildrun.o -MD -MP -MF $(DEPDIR)/stap-buildrun.Tpo -c -o stap-buildrun.o `test -f 'buildrun.cxx' || echo '$(srcdir)/'`buildrun.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-buildrun.Tpo $(DEPDIR)/stap-buildrun.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='buildrun.cxx' object='stap-buildrun.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-buildrun.o `test -f 'buildrun.cxx' || echo '$(srcdir)/'`buildrun.cxx stap-buildrun.obj: buildrun.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-buildrun.obj -MD -MP -MF $(DEPDIR)/stap-buildrun.Tpo -c -o stap-buildrun.obj `if test -f 'buildrun.cxx'; then $(CYGPATH_W) 'buildrun.cxx'; else $(CYGPATH_W) '$(srcdir)/buildrun.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-buildrun.Tpo $(DEPDIR)/stap-buildrun.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='buildrun.cxx' object='stap-buildrun.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-buildrun.obj `if test -f 'buildrun.cxx'; then $(CYGPATH_W) 'buildrun.cxx'; else $(CYGPATH_W) '$(srcdir)/buildrun.cxx'; fi` stap-hash.o: hash.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-hash.o -MD -MP -MF $(DEPDIR)/stap-hash.Tpo -c -o stap-hash.o `test -f 'hash.cxx' || echo '$(srcdir)/'`hash.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-hash.Tpo $(DEPDIR)/stap-hash.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hash.cxx' object='stap-hash.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-hash.o `test -f 'hash.cxx' || echo '$(srcdir)/'`hash.cxx stap-hash.obj: hash.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-hash.obj -MD -MP -MF $(DEPDIR)/stap-hash.Tpo -c -o stap-hash.obj `if test -f 'hash.cxx'; then $(CYGPATH_W) 'hash.cxx'; else $(CYGPATH_W) '$(srcdir)/hash.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-hash.Tpo $(DEPDIR)/stap-hash.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hash.cxx' object='stap-hash.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-hash.obj `if test -f 'hash.cxx'; then $(CYGPATH_W) 'hash.cxx'; else $(CYGPATH_W) '$(srcdir)/hash.cxx'; fi` stap-cache.o: cache.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cache.o -MD -MP -MF $(DEPDIR)/stap-cache.Tpo -c -o stap-cache.o `test -f 'cache.cxx' || echo '$(srcdir)/'`cache.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cache.Tpo $(DEPDIR)/stap-cache.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cache.cxx' object='stap-cache.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cache.o `test -f 'cache.cxx' || echo '$(srcdir)/'`cache.cxx stap-cache.obj: cache.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cache.obj -MD -MP -MF $(DEPDIR)/stap-cache.Tpo -c -o stap-cache.obj `if test -f 'cache.cxx'; then $(CYGPATH_W) 'cache.cxx'; else $(CYGPATH_W) '$(srcdir)/cache.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cache.Tpo $(DEPDIR)/stap-cache.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cache.cxx' object='stap-cache.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cache.obj `if test -f 'cache.cxx'; then $(CYGPATH_W) 'cache.cxx'; else $(CYGPATH_W) '$(srcdir)/cache.cxx'; fi` stap-util.o: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-util.o -MD -MP -MF $(DEPDIR)/stap-util.Tpo -c -o stap-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-util.Tpo $(DEPDIR)/stap-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx stap-util.obj: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-util.obj -MD -MP -MF $(DEPDIR)/stap-util.Tpo -c -o stap-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-util.Tpo $(DEPDIR)/stap-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` stap-coveragedb.o: coveragedb.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-coveragedb.o -MD -MP -MF $(DEPDIR)/stap-coveragedb.Tpo -c -o stap-coveragedb.o `test -f 'coveragedb.cxx' || echo '$(srcdir)/'`coveragedb.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-coveragedb.Tpo $(DEPDIR)/stap-coveragedb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='coveragedb.cxx' object='stap-coveragedb.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-coveragedb.o `test -f 'coveragedb.cxx' || echo '$(srcdir)/'`coveragedb.cxx stap-coveragedb.obj: coveragedb.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-coveragedb.obj -MD -MP -MF $(DEPDIR)/stap-coveragedb.Tpo -c -o stap-coveragedb.obj `if test -f 'coveragedb.cxx'; then $(CYGPATH_W) 'coveragedb.cxx'; else $(CYGPATH_W) '$(srcdir)/coveragedb.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-coveragedb.Tpo $(DEPDIR)/stap-coveragedb.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='coveragedb.cxx' object='stap-coveragedb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-coveragedb.obj `if test -f 'coveragedb.cxx'; then $(CYGPATH_W) 'coveragedb.cxx'; else $(CYGPATH_W) '$(srcdir)/coveragedb.cxx'; fi` stap-dwarf_wrappers.o: dwarf_wrappers.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-dwarf_wrappers.o -MD -MP -MF $(DEPDIR)/stap-dwarf_wrappers.Tpo -c -o stap-dwarf_wrappers.o `test -f 'dwarf_wrappers.cxx' || echo '$(srcdir)/'`dwarf_wrappers.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-dwarf_wrappers.Tpo $(DEPDIR)/stap-dwarf_wrappers.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dwarf_wrappers.cxx' object='stap-dwarf_wrappers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-dwarf_wrappers.o `test -f 'dwarf_wrappers.cxx' || echo '$(srcdir)/'`dwarf_wrappers.cxx stap-dwarf_wrappers.obj: dwarf_wrappers.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-dwarf_wrappers.obj -MD -MP -MF $(DEPDIR)/stap-dwarf_wrappers.Tpo -c -o stap-dwarf_wrappers.obj `if test -f 'dwarf_wrappers.cxx'; then $(CYGPATH_W) 'dwarf_wrappers.cxx'; else $(CYGPATH_W) '$(srcdir)/dwarf_wrappers.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-dwarf_wrappers.Tpo $(DEPDIR)/stap-dwarf_wrappers.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dwarf_wrappers.cxx' object='stap-dwarf_wrappers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-dwarf_wrappers.obj `if test -f 'dwarf_wrappers.cxx'; then $(CYGPATH_W) 'dwarf_wrappers.cxx'; else $(CYGPATH_W) '$(srcdir)/dwarf_wrappers.cxx'; fi` stap-tapset-been.o: tapset-been.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-been.o -MD -MP -MF $(DEPDIR)/stap-tapset-been.Tpo -c -o stap-tapset-been.o `test -f 'tapset-been.cxx' || echo '$(srcdir)/'`tapset-been.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-been.Tpo $(DEPDIR)/stap-tapset-been.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-been.cxx' object='stap-tapset-been.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-been.o `test -f 'tapset-been.cxx' || echo '$(srcdir)/'`tapset-been.cxx stap-tapset-been.obj: tapset-been.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-been.obj -MD -MP -MF $(DEPDIR)/stap-tapset-been.Tpo -c -o stap-tapset-been.obj `if test -f 'tapset-been.cxx'; then $(CYGPATH_W) 'tapset-been.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-been.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-been.Tpo $(DEPDIR)/stap-tapset-been.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-been.cxx' object='stap-tapset-been.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-been.obj `if test -f 'tapset-been.cxx'; then $(CYGPATH_W) 'tapset-been.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-been.cxx'; fi` stap-tapset-procfs.o: tapset-procfs.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-procfs.o -MD -MP -MF $(DEPDIR)/stap-tapset-procfs.Tpo -c -o stap-tapset-procfs.o `test -f 'tapset-procfs.cxx' || echo '$(srcdir)/'`tapset-procfs.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-procfs.Tpo $(DEPDIR)/stap-tapset-procfs.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-procfs.cxx' object='stap-tapset-procfs.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-procfs.o `test -f 'tapset-procfs.cxx' || echo '$(srcdir)/'`tapset-procfs.cxx stap-tapset-procfs.obj: tapset-procfs.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-procfs.obj -MD -MP -MF $(DEPDIR)/stap-tapset-procfs.Tpo -c -o stap-tapset-procfs.obj `if test -f 'tapset-procfs.cxx'; then $(CYGPATH_W) 'tapset-procfs.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-procfs.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-procfs.Tpo $(DEPDIR)/stap-tapset-procfs.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-procfs.cxx' object='stap-tapset-procfs.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-procfs.obj `if test -f 'tapset-procfs.cxx'; then $(CYGPATH_W) 'tapset-procfs.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-procfs.cxx'; fi` stap-tapset-timers.o: tapset-timers.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-timers.o -MD -MP -MF $(DEPDIR)/stap-tapset-timers.Tpo -c -o stap-tapset-timers.o `test -f 'tapset-timers.cxx' || echo '$(srcdir)/'`tapset-timers.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-timers.Tpo $(DEPDIR)/stap-tapset-timers.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-timers.cxx' object='stap-tapset-timers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-timers.o `test -f 'tapset-timers.cxx' || echo '$(srcdir)/'`tapset-timers.cxx stap-tapset-timers.obj: tapset-timers.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-timers.obj -MD -MP -MF $(DEPDIR)/stap-tapset-timers.Tpo -c -o stap-tapset-timers.obj `if test -f 'tapset-timers.cxx'; then $(CYGPATH_W) 'tapset-timers.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-timers.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-timers.Tpo $(DEPDIR)/stap-tapset-timers.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-timers.cxx' object='stap-tapset-timers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-timers.obj `if test -f 'tapset-timers.cxx'; then $(CYGPATH_W) 'tapset-timers.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-timers.cxx'; fi` stap-tapset-netfilter.o: tapset-netfilter.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-netfilter.o -MD -MP -MF $(DEPDIR)/stap-tapset-netfilter.Tpo -c -o stap-tapset-netfilter.o `test -f 'tapset-netfilter.cxx' || echo '$(srcdir)/'`tapset-netfilter.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-netfilter.Tpo $(DEPDIR)/stap-tapset-netfilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-netfilter.cxx' object='stap-tapset-netfilter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-netfilter.o `test -f 'tapset-netfilter.cxx' || echo '$(srcdir)/'`tapset-netfilter.cxx stap-tapset-netfilter.obj: tapset-netfilter.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-netfilter.obj -MD -MP -MF $(DEPDIR)/stap-tapset-netfilter.Tpo -c -o stap-tapset-netfilter.obj `if test -f 'tapset-netfilter.cxx'; then $(CYGPATH_W) 'tapset-netfilter.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-netfilter.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-netfilter.Tpo $(DEPDIR)/stap-tapset-netfilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-netfilter.cxx' object='stap-tapset-netfilter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-netfilter.obj `if test -f 'tapset-netfilter.cxx'; then $(CYGPATH_W) 'tapset-netfilter.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-netfilter.cxx'; fi` stap-tapset-perfmon.o: tapset-perfmon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-perfmon.o -MD -MP -MF $(DEPDIR)/stap-tapset-perfmon.Tpo -c -o stap-tapset-perfmon.o `test -f 'tapset-perfmon.cxx' || echo '$(srcdir)/'`tapset-perfmon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-perfmon.Tpo $(DEPDIR)/stap-tapset-perfmon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-perfmon.cxx' object='stap-tapset-perfmon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-perfmon.o `test -f 'tapset-perfmon.cxx' || echo '$(srcdir)/'`tapset-perfmon.cxx stap-tapset-perfmon.obj: tapset-perfmon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-perfmon.obj -MD -MP -MF $(DEPDIR)/stap-tapset-perfmon.Tpo -c -o stap-tapset-perfmon.obj `if test -f 'tapset-perfmon.cxx'; then $(CYGPATH_W) 'tapset-perfmon.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-perfmon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-perfmon.Tpo $(DEPDIR)/stap-tapset-perfmon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-perfmon.cxx' object='stap-tapset-perfmon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-perfmon.obj `if test -f 'tapset-perfmon.cxx'; then $(CYGPATH_W) 'tapset-perfmon.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-perfmon.cxx'; fi` stap-tapset-mark.o: tapset-mark.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-mark.o -MD -MP -MF $(DEPDIR)/stap-tapset-mark.Tpo -c -o stap-tapset-mark.o `test -f 'tapset-mark.cxx' || echo '$(srcdir)/'`tapset-mark.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-mark.Tpo $(DEPDIR)/stap-tapset-mark.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-mark.cxx' object='stap-tapset-mark.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-mark.o `test -f 'tapset-mark.cxx' || echo '$(srcdir)/'`tapset-mark.cxx stap-tapset-mark.obj: tapset-mark.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-mark.obj -MD -MP -MF $(DEPDIR)/stap-tapset-mark.Tpo -c -o stap-tapset-mark.obj `if test -f 'tapset-mark.cxx'; then $(CYGPATH_W) 'tapset-mark.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-mark.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-mark.Tpo $(DEPDIR)/stap-tapset-mark.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-mark.cxx' object='stap-tapset-mark.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-mark.obj `if test -f 'tapset-mark.cxx'; then $(CYGPATH_W) 'tapset-mark.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-mark.cxx'; fi` stap-tapset-itrace.o: tapset-itrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-itrace.o -MD -MP -MF $(DEPDIR)/stap-tapset-itrace.Tpo -c -o stap-tapset-itrace.o `test -f 'tapset-itrace.cxx' || echo '$(srcdir)/'`tapset-itrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-itrace.Tpo $(DEPDIR)/stap-tapset-itrace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-itrace.cxx' object='stap-tapset-itrace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-itrace.o `test -f 'tapset-itrace.cxx' || echo '$(srcdir)/'`tapset-itrace.cxx stap-tapset-itrace.obj: tapset-itrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-itrace.obj -MD -MP -MF $(DEPDIR)/stap-tapset-itrace.Tpo -c -o stap-tapset-itrace.obj `if test -f 'tapset-itrace.cxx'; then $(CYGPATH_W) 'tapset-itrace.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-itrace.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-itrace.Tpo $(DEPDIR)/stap-tapset-itrace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-itrace.cxx' object='stap-tapset-itrace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-itrace.obj `if test -f 'tapset-itrace.cxx'; then $(CYGPATH_W) 'tapset-itrace.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-itrace.cxx'; fi` stap-tapset-utrace.o: tapset-utrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-utrace.o -MD -MP -MF $(DEPDIR)/stap-tapset-utrace.Tpo -c -o stap-tapset-utrace.o `test -f 'tapset-utrace.cxx' || echo '$(srcdir)/'`tapset-utrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-utrace.Tpo $(DEPDIR)/stap-tapset-utrace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-utrace.cxx' object='stap-tapset-utrace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-utrace.o `test -f 'tapset-utrace.cxx' || echo '$(srcdir)/'`tapset-utrace.cxx stap-tapset-utrace.obj: tapset-utrace.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-utrace.obj -MD -MP -MF $(DEPDIR)/stap-tapset-utrace.Tpo -c -o stap-tapset-utrace.obj `if test -f 'tapset-utrace.cxx'; then $(CYGPATH_W) 'tapset-utrace.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-utrace.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-utrace.Tpo $(DEPDIR)/stap-tapset-utrace.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-utrace.cxx' object='stap-tapset-utrace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-utrace.obj `if test -f 'tapset-utrace.cxx'; then $(CYGPATH_W) 'tapset-utrace.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-utrace.cxx'; fi` stap-task_finder.o: task_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-task_finder.o -MD -MP -MF $(DEPDIR)/stap-task_finder.Tpo -c -o stap-task_finder.o `test -f 'task_finder.cxx' || echo '$(srcdir)/'`task_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-task_finder.Tpo $(DEPDIR)/stap-task_finder.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='task_finder.cxx' object='stap-task_finder.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-task_finder.o `test -f 'task_finder.cxx' || echo '$(srcdir)/'`task_finder.cxx stap-task_finder.obj: task_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-task_finder.obj -MD -MP -MF $(DEPDIR)/stap-task_finder.Tpo -c -o stap-task_finder.obj `if test -f 'task_finder.cxx'; then $(CYGPATH_W) 'task_finder.cxx'; else $(CYGPATH_W) '$(srcdir)/task_finder.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-task_finder.Tpo $(DEPDIR)/stap-task_finder.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='task_finder.cxx' object='stap-task_finder.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-task_finder.obj `if test -f 'task_finder.cxx'; then $(CYGPATH_W) 'task_finder.cxx'; else $(CYGPATH_W) '$(srcdir)/task_finder.cxx'; fi` stap-dwflpp.o: dwflpp.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-dwflpp.o -MD -MP -MF $(DEPDIR)/stap-dwflpp.Tpo -c -o stap-dwflpp.o `test -f 'dwflpp.cxx' || echo '$(srcdir)/'`dwflpp.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-dwflpp.Tpo $(DEPDIR)/stap-dwflpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dwflpp.cxx' object='stap-dwflpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-dwflpp.o `test -f 'dwflpp.cxx' || echo '$(srcdir)/'`dwflpp.cxx stap-dwflpp.obj: dwflpp.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-dwflpp.obj -MD -MP -MF $(DEPDIR)/stap-dwflpp.Tpo -c -o stap-dwflpp.obj `if test -f 'dwflpp.cxx'; then $(CYGPATH_W) 'dwflpp.cxx'; else $(CYGPATH_W) '$(srcdir)/dwflpp.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-dwflpp.Tpo $(DEPDIR)/stap-dwflpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dwflpp.cxx' object='stap-dwflpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-dwflpp.obj `if test -f 'dwflpp.cxx'; then $(CYGPATH_W) 'dwflpp.cxx'; else $(CYGPATH_W) '$(srcdir)/dwflpp.cxx'; fi` stap-rpm_finder.o: rpm_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-rpm_finder.o -MD -MP -MF $(DEPDIR)/stap-rpm_finder.Tpo -c -o stap-rpm_finder.o `test -f 'rpm_finder.cxx' || echo '$(srcdir)/'`rpm_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-rpm_finder.Tpo $(DEPDIR)/stap-rpm_finder.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='rpm_finder.cxx' object='stap-rpm_finder.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-rpm_finder.o `test -f 'rpm_finder.cxx' || echo '$(srcdir)/'`rpm_finder.cxx stap-rpm_finder.obj: rpm_finder.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-rpm_finder.obj -MD -MP -MF $(DEPDIR)/stap-rpm_finder.Tpo -c -o stap-rpm_finder.obj `if test -f 'rpm_finder.cxx'; then $(CYGPATH_W) 'rpm_finder.cxx'; else $(CYGPATH_W) '$(srcdir)/rpm_finder.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-rpm_finder.Tpo $(DEPDIR)/stap-rpm_finder.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='rpm_finder.cxx' object='stap-rpm_finder.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-rpm_finder.obj `if test -f 'rpm_finder.cxx'; then $(CYGPATH_W) 'rpm_finder.cxx'; else $(CYGPATH_W) '$(srcdir)/rpm_finder.cxx'; fi` stap-setupdwfl.o: setupdwfl.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-setupdwfl.o -MD -MP -MF $(DEPDIR)/stap-setupdwfl.Tpo -c -o stap-setupdwfl.o `test -f 'setupdwfl.cxx' || echo '$(srcdir)/'`setupdwfl.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-setupdwfl.Tpo $(DEPDIR)/stap-setupdwfl.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='setupdwfl.cxx' object='stap-setupdwfl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-setupdwfl.o `test -f 'setupdwfl.cxx' || echo '$(srcdir)/'`setupdwfl.cxx stap-setupdwfl.obj: setupdwfl.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-setupdwfl.obj -MD -MP -MF $(DEPDIR)/stap-setupdwfl.Tpo -c -o stap-setupdwfl.obj `if test -f 'setupdwfl.cxx'; then $(CYGPATH_W) 'setupdwfl.cxx'; else $(CYGPATH_W) '$(srcdir)/setupdwfl.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-setupdwfl.Tpo $(DEPDIR)/stap-setupdwfl.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='setupdwfl.cxx' object='stap-setupdwfl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-setupdwfl.obj `if test -f 'setupdwfl.cxx'; then $(CYGPATH_W) 'setupdwfl.cxx'; else $(CYGPATH_W) '$(srcdir)/setupdwfl.cxx'; fi` stap-remote.o: remote.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-remote.o -MD -MP -MF $(DEPDIR)/stap-remote.Tpo -c -o stap-remote.o `test -f 'remote.cxx' || echo '$(srcdir)/'`remote.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-remote.Tpo $(DEPDIR)/stap-remote.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='remote.cxx' object='stap-remote.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-remote.o `test -f 'remote.cxx' || echo '$(srcdir)/'`remote.cxx stap-remote.obj: remote.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-remote.obj -MD -MP -MF $(DEPDIR)/stap-remote.Tpo -c -o stap-remote.obj `if test -f 'remote.cxx'; then $(CYGPATH_W) 'remote.cxx'; else $(CYGPATH_W) '$(srcdir)/remote.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-remote.Tpo $(DEPDIR)/stap-remote.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='remote.cxx' object='stap-remote.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-remote.obj `if test -f 'remote.cxx'; then $(CYGPATH_W) 'remote.cxx'; else $(CYGPATH_W) '$(srcdir)/remote.cxx'; fi` stap-privilege.o: privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-privilege.o -MD -MP -MF $(DEPDIR)/stap-privilege.Tpo -c -o stap-privilege.o `test -f 'privilege.cxx' || echo '$(srcdir)/'`privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-privilege.Tpo $(DEPDIR)/stap-privilege.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='privilege.cxx' object='stap-privilege.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-privilege.o `test -f 'privilege.cxx' || echo '$(srcdir)/'`privilege.cxx stap-privilege.obj: privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-privilege.obj -MD -MP -MF $(DEPDIR)/stap-privilege.Tpo -c -o stap-privilege.obj `if test -f 'privilege.cxx'; then $(CYGPATH_W) 'privilege.cxx'; else $(CYGPATH_W) '$(srcdir)/privilege.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-privilege.Tpo $(DEPDIR)/stap-privilege.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='privilege.cxx' object='stap-privilege.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-privilege.obj `if test -f 'privilege.cxx'; then $(CYGPATH_W) 'privilege.cxx'; else $(CYGPATH_W) '$(srcdir)/privilege.cxx'; fi` stap-cmdline.o: cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cmdline.o -MD -MP -MF $(DEPDIR)/stap-cmdline.Tpo -c -o stap-cmdline.o `test -f 'cmdline.cxx' || echo '$(srcdir)/'`cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cmdline.Tpo $(DEPDIR)/stap-cmdline.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cmdline.cxx' object='stap-cmdline.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cmdline.o `test -f 'cmdline.cxx' || echo '$(srcdir)/'`cmdline.cxx stap-cmdline.obj: cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cmdline.obj -MD -MP -MF $(DEPDIR)/stap-cmdline.Tpo -c -o stap-cmdline.obj `if test -f 'cmdline.cxx'; then $(CYGPATH_W) 'cmdline.cxx'; else $(CYGPATH_W) '$(srcdir)/cmdline.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cmdline.Tpo $(DEPDIR)/stap-cmdline.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cmdline.cxx' object='stap-cmdline.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cmdline.obj `if test -f 'cmdline.cxx'; then $(CYGPATH_W) 'cmdline.cxx'; else $(CYGPATH_W) '$(srcdir)/cmdline.cxx'; fi` stap-tapset-dynprobe.o: tapset-dynprobe.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-dynprobe.o -MD -MP -MF $(DEPDIR)/stap-tapset-dynprobe.Tpo -c -o stap-tapset-dynprobe.o `test -f 'tapset-dynprobe.cxx' || echo '$(srcdir)/'`tapset-dynprobe.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-dynprobe.Tpo $(DEPDIR)/stap-tapset-dynprobe.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-dynprobe.cxx' object='stap-tapset-dynprobe.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-dynprobe.o `test -f 'tapset-dynprobe.cxx' || echo '$(srcdir)/'`tapset-dynprobe.cxx stap-tapset-dynprobe.obj: tapset-dynprobe.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-dynprobe.obj -MD -MP -MF $(DEPDIR)/stap-tapset-dynprobe.Tpo -c -o stap-tapset-dynprobe.obj `if test -f 'tapset-dynprobe.cxx'; then $(CYGPATH_W) 'tapset-dynprobe.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-dynprobe.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-dynprobe.Tpo $(DEPDIR)/stap-tapset-dynprobe.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-dynprobe.cxx' object='stap-tapset-dynprobe.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-dynprobe.obj `if test -f 'tapset-dynprobe.cxx'; then $(CYGPATH_W) 'tapset-dynprobe.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-dynprobe.cxx'; fi` stap-tapset-method.o: tapset-method.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-method.o -MD -MP -MF $(DEPDIR)/stap-tapset-method.Tpo -c -o stap-tapset-method.o `test -f 'tapset-method.cxx' || echo '$(srcdir)/'`tapset-method.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-method.Tpo $(DEPDIR)/stap-tapset-method.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-method.cxx' object='stap-tapset-method.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-method.o `test -f 'tapset-method.cxx' || echo '$(srcdir)/'`tapset-method.cxx stap-tapset-method.obj: tapset-method.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-method.obj -MD -MP -MF $(DEPDIR)/stap-tapset-method.Tpo -c -o stap-tapset-method.obj `if test -f 'tapset-method.cxx'; then $(CYGPATH_W) 'tapset-method.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-method.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-method.Tpo $(DEPDIR)/stap-tapset-method.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-method.cxx' object='stap-tapset-method.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-method.obj `if test -f 'tapset-method.cxx'; then $(CYGPATH_W) 'tapset-method.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-method.cxx'; fi` stap-translator-output.o: translator-output.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-translator-output.o -MD -MP -MF $(DEPDIR)/stap-translator-output.Tpo -c -o stap-translator-output.o `test -f 'translator-output.cxx' || echo '$(srcdir)/'`translator-output.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-translator-output.Tpo $(DEPDIR)/stap-translator-output.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='translator-output.cxx' object='stap-translator-output.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-translator-output.o `test -f 'translator-output.cxx' || echo '$(srcdir)/'`translator-output.cxx stap-translator-output.obj: translator-output.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-translator-output.obj -MD -MP -MF $(DEPDIR)/stap-translator-output.Tpo -c -o stap-translator-output.obj `if test -f 'translator-output.cxx'; then $(CYGPATH_W) 'translator-output.cxx'; else $(CYGPATH_W) '$(srcdir)/translator-output.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-translator-output.Tpo $(DEPDIR)/stap-translator-output.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='translator-output.cxx' object='stap-translator-output.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-translator-output.obj `if test -f 'translator-output.cxx'; then $(CYGPATH_W) 'translator-output.cxx'; else $(CYGPATH_W) '$(srcdir)/translator-output.cxx'; fi` stap-stapregex.o: stapregex.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex.o -MD -MP -MF $(DEPDIR)/stap-stapregex.Tpo -c -o stap-stapregex.o `test -f 'stapregex.cxx' || echo '$(srcdir)/'`stapregex.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex.Tpo $(DEPDIR)/stap-stapregex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex.cxx' object='stap-stapregex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex.o `test -f 'stapregex.cxx' || echo '$(srcdir)/'`stapregex.cxx stap-stapregex.obj: stapregex.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex.obj -MD -MP -MF $(DEPDIR)/stap-stapregex.Tpo -c -o stap-stapregex.obj `if test -f 'stapregex.cxx'; then $(CYGPATH_W) 'stapregex.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex.Tpo $(DEPDIR)/stap-stapregex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex.cxx' object='stap-stapregex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex.obj `if test -f 'stapregex.cxx'; then $(CYGPATH_W) 'stapregex.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex.cxx'; fi` stap-stapregex-tree.o: stapregex-tree.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-tree.o -MD -MP -MF $(DEPDIR)/stap-stapregex-tree.Tpo -c -o stap-stapregex-tree.o `test -f 'stapregex-tree.cxx' || echo '$(srcdir)/'`stapregex-tree.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-tree.Tpo $(DEPDIR)/stap-stapregex-tree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-tree.cxx' object='stap-stapregex-tree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-tree.o `test -f 'stapregex-tree.cxx' || echo '$(srcdir)/'`stapregex-tree.cxx stap-stapregex-tree.obj: stapregex-tree.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-tree.obj -MD -MP -MF $(DEPDIR)/stap-stapregex-tree.Tpo -c -o stap-stapregex-tree.obj `if test -f 'stapregex-tree.cxx'; then $(CYGPATH_W) 'stapregex-tree.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-tree.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-tree.Tpo $(DEPDIR)/stap-stapregex-tree.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-tree.cxx' object='stap-stapregex-tree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-tree.obj `if test -f 'stapregex-tree.cxx'; then $(CYGPATH_W) 'stapregex-tree.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-tree.cxx'; fi` stap-stapregex-parse.o: stapregex-parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-parse.o -MD -MP -MF $(DEPDIR)/stap-stapregex-parse.Tpo -c -o stap-stapregex-parse.o `test -f 'stapregex-parse.cxx' || echo '$(srcdir)/'`stapregex-parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-parse.Tpo $(DEPDIR)/stap-stapregex-parse.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-parse.cxx' object='stap-stapregex-parse.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-parse.o `test -f 'stapregex-parse.cxx' || echo '$(srcdir)/'`stapregex-parse.cxx stap-stapregex-parse.obj: stapregex-parse.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-parse.obj -MD -MP -MF $(DEPDIR)/stap-stapregex-parse.Tpo -c -o stap-stapregex-parse.obj `if test -f 'stapregex-parse.cxx'; then $(CYGPATH_W) 'stapregex-parse.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-parse.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-parse.Tpo $(DEPDIR)/stap-stapregex-parse.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-parse.cxx' object='stap-stapregex-parse.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-parse.obj `if test -f 'stapregex-parse.cxx'; then $(CYGPATH_W) 'stapregex-parse.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-parse.cxx'; fi` stap-stapregex-dfa.o: stapregex-dfa.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-dfa.o -MD -MP -MF $(DEPDIR)/stap-stapregex-dfa.Tpo -c -o stap-stapregex-dfa.o `test -f 'stapregex-dfa.cxx' || echo '$(srcdir)/'`stapregex-dfa.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-dfa.Tpo $(DEPDIR)/stap-stapregex-dfa.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-dfa.cxx' object='stap-stapregex-dfa.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-dfa.o `test -f 'stapregex-dfa.cxx' || echo '$(srcdir)/'`stapregex-dfa.cxx stap-stapregex-dfa.obj: stapregex-dfa.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stapregex-dfa.obj -MD -MP -MF $(DEPDIR)/stap-stapregex-dfa.Tpo -c -o stap-stapregex-dfa.obj `if test -f 'stapregex-dfa.cxx'; then $(CYGPATH_W) 'stapregex-dfa.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-dfa.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stapregex-dfa.Tpo $(DEPDIR)/stap-stapregex-dfa.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stapregex-dfa.cxx' object='stap-stapregex-dfa.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stapregex-dfa.obj `if test -f 'stapregex-dfa.cxx'; then $(CYGPATH_W) 'stapregex-dfa.cxx'; else $(CYGPATH_W) '$(srcdir)/stapregex-dfa.cxx'; fi` stap-stringtable.o: stringtable.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stringtable.o -MD -MP -MF $(DEPDIR)/stap-stringtable.Tpo -c -o stap-stringtable.o `test -f 'stringtable.cxx' || echo '$(srcdir)/'`stringtable.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stringtable.Tpo $(DEPDIR)/stap-stringtable.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stringtable.cxx' object='stap-stringtable.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stringtable.o `test -f 'stringtable.cxx' || echo '$(srcdir)/'`stringtable.cxx stap-stringtable.obj: stringtable.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-stringtable.obj -MD -MP -MF $(DEPDIR)/stap-stringtable.Tpo -c -o stap-stringtable.obj `if test -f 'stringtable.cxx'; then $(CYGPATH_W) 'stringtable.cxx'; else $(CYGPATH_W) '$(srcdir)/stringtable.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-stringtable.Tpo $(DEPDIR)/stap-stringtable.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stringtable.cxx' object='stap-stringtable.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-stringtable.obj `if test -f 'stringtable.cxx'; then $(CYGPATH_W) 'stringtable.cxx'; else $(CYGPATH_W) '$(srcdir)/stringtable.cxx'; fi` stap-tapset-python.o: tapset-python.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-python.o -MD -MP -MF $(DEPDIR)/stap-tapset-python.Tpo -c -o stap-tapset-python.o `test -f 'tapset-python.cxx' || echo '$(srcdir)/'`tapset-python.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-python.Tpo $(DEPDIR)/stap-tapset-python.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-python.cxx' object='stap-tapset-python.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-python.o `test -f 'tapset-python.cxx' || echo '$(srcdir)/'`tapset-python.cxx stap-tapset-python.obj: tapset-python.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-tapset-python.obj -MD -MP -MF $(DEPDIR)/stap-tapset-python.Tpo -c -o stap-tapset-python.obj `if test -f 'tapset-python.cxx'; then $(CYGPATH_W) 'tapset-python.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-python.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-tapset-python.Tpo $(DEPDIR)/stap-tapset-python.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tapset-python.cxx' object='stap-tapset-python.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-tapset-python.obj `if test -f 'tapset-python.cxx'; then $(CYGPATH_W) 'tapset-python.cxx'; else $(CYGPATH_W) '$(srcdir)/tapset-python.cxx'; fi` stap-interactive.o: interactive.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-interactive.o -MD -MP -MF $(DEPDIR)/stap-interactive.Tpo -c -o stap-interactive.o `test -f 'interactive.cxx' || echo '$(srcdir)/'`interactive.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-interactive.Tpo $(DEPDIR)/stap-interactive.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='interactive.cxx' object='stap-interactive.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-interactive.o `test -f 'interactive.cxx' || echo '$(srcdir)/'`interactive.cxx stap-interactive.obj: interactive.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-interactive.obj -MD -MP -MF $(DEPDIR)/stap-interactive.Tpo -c -o stap-interactive.obj `if test -f 'interactive.cxx'; then $(CYGPATH_W) 'interactive.cxx'; else $(CYGPATH_W) '$(srcdir)/interactive.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-interactive.Tpo $(DEPDIR)/stap-interactive.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='interactive.cxx' object='stap-interactive.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-interactive.obj `if test -f 'interactive.cxx'; then $(CYGPATH_W) 'interactive.cxx'; else $(CYGPATH_W) '$(srcdir)/interactive.cxx'; fi` stap-nsscommon.o: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-nsscommon.o -MD -MP -MF $(DEPDIR)/stap-nsscommon.Tpo -c -o stap-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-nsscommon.Tpo $(DEPDIR)/stap-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap-nsscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx stap-nsscommon.obj: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-nsscommon.obj -MD -MP -MF $(DEPDIR)/stap-nsscommon.Tpo -c -o stap-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-nsscommon.Tpo $(DEPDIR)/stap-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap-nsscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` stap-csclient.o: csclient.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-csclient.o -MD -MP -MF $(DEPDIR)/stap-csclient.Tpo -c -o stap-csclient.o `test -f 'csclient.cxx' || echo '$(srcdir)/'`csclient.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-csclient.Tpo $(DEPDIR)/stap-csclient.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='csclient.cxx' object='stap-csclient.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-csclient.o `test -f 'csclient.cxx' || echo '$(srcdir)/'`csclient.cxx stap-csclient.obj: csclient.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-csclient.obj -MD -MP -MF $(DEPDIR)/stap-csclient.Tpo -c -o stap-csclient.obj `if test -f 'csclient.cxx'; then $(CYGPATH_W) 'csclient.cxx'; else $(CYGPATH_W) '$(srcdir)/csclient.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-csclient.Tpo $(DEPDIR)/stap-csclient.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='csclient.cxx' object='stap-csclient.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-csclient.obj `if test -f 'csclient.cxx'; then $(CYGPATH_W) 'csclient.cxx'; else $(CYGPATH_W) '$(srcdir)/csclient.cxx'; fi` stap-cscommon.o: cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cscommon.o -MD -MP -MF $(DEPDIR)/stap-cscommon.Tpo -c -o stap-cscommon.o `test -f 'cscommon.cxx' || echo '$(srcdir)/'`cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cscommon.Tpo $(DEPDIR)/stap-cscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cscommon.cxx' object='stap-cscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cscommon.o `test -f 'cscommon.cxx' || echo '$(srcdir)/'`cscommon.cxx stap-cscommon.obj: cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -MT stap-cscommon.obj -MD -MP -MF $(DEPDIR)/stap-cscommon.Tpo -c -o stap-cscommon.obj `if test -f 'cscommon.cxx'; then $(CYGPATH_W) 'cscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/cscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap-cscommon.Tpo $(DEPDIR)/stap-cscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cscommon.cxx' object='stap-cscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_CPPFLAGS) $(CPPFLAGS) $(stap_CXXFLAGS) $(CXXFLAGS) -c -o stap-cscommon.obj `if test -f 'cscommon.cxx'; then $(CYGPATH_W) 'cscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/cscommon.cxx'; fi` stap_authorize_cert-stap-authorize-cert.o: stap-authorize-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-stap-authorize-cert.o -MD -MP -MF $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Tpo -c -o stap_authorize_cert-stap-authorize-cert.o `test -f 'stap-authorize-cert.cxx' || echo '$(srcdir)/'`stap-authorize-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Tpo $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-authorize-cert.cxx' object='stap_authorize_cert-stap-authorize-cert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-stap-authorize-cert.o `test -f 'stap-authorize-cert.cxx' || echo '$(srcdir)/'`stap-authorize-cert.cxx stap_authorize_cert-stap-authorize-cert.obj: stap-authorize-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-stap-authorize-cert.obj -MD -MP -MF $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Tpo -c -o stap_authorize_cert-stap-authorize-cert.obj `if test -f 'stap-authorize-cert.cxx'; then $(CYGPATH_W) 'stap-authorize-cert.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-authorize-cert.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Tpo $(DEPDIR)/stap_authorize_cert-stap-authorize-cert.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-authorize-cert.cxx' object='stap_authorize_cert-stap-authorize-cert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-stap-authorize-cert.obj `if test -f 'stap-authorize-cert.cxx'; then $(CYGPATH_W) 'stap-authorize-cert.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-authorize-cert.cxx'; fi` stap_authorize_cert-nsscommon.o: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-nsscommon.o -MD -MP -MF $(DEPDIR)/stap_authorize_cert-nsscommon.Tpo -c -o stap_authorize_cert-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-nsscommon.Tpo $(DEPDIR)/stap_authorize_cert-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_authorize_cert-nsscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx stap_authorize_cert-nsscommon.obj: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-nsscommon.obj -MD -MP -MF $(DEPDIR)/stap_authorize_cert-nsscommon.Tpo -c -o stap_authorize_cert-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-nsscommon.Tpo $(DEPDIR)/stap_authorize_cert-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_authorize_cert-nsscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` stap_authorize_cert-util.o: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-util.o -MD -MP -MF $(DEPDIR)/stap_authorize_cert-util.Tpo -c -o stap_authorize_cert-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-util.Tpo $(DEPDIR)/stap_authorize_cert-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_authorize_cert-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx stap_authorize_cert-util.obj: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_authorize_cert-util.obj -MD -MP -MF $(DEPDIR)/stap_authorize_cert-util.Tpo -c -o stap_authorize_cert-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_authorize_cert-util.Tpo $(DEPDIR)/stap_authorize_cert-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_authorize_cert-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_authorize_cert_CPPFLAGS) $(CPPFLAGS) $(stap_authorize_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_authorize_cert-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` stap_gen_cert-stap-gen-cert.o: stap-gen-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-stap-gen-cert.o -MD -MP -MF $(DEPDIR)/stap_gen_cert-stap-gen-cert.Tpo -c -o stap_gen_cert-stap-gen-cert.o `test -f 'stap-gen-cert.cxx' || echo '$(srcdir)/'`stap-gen-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-stap-gen-cert.Tpo $(DEPDIR)/stap_gen_cert-stap-gen-cert.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-gen-cert.cxx' object='stap_gen_cert-stap-gen-cert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-stap-gen-cert.o `test -f 'stap-gen-cert.cxx' || echo '$(srcdir)/'`stap-gen-cert.cxx stap_gen_cert-stap-gen-cert.obj: stap-gen-cert.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-stap-gen-cert.obj -MD -MP -MF $(DEPDIR)/stap_gen_cert-stap-gen-cert.Tpo -c -o stap_gen_cert-stap-gen-cert.obj `if test -f 'stap-gen-cert.cxx'; then $(CYGPATH_W) 'stap-gen-cert.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-gen-cert.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-stap-gen-cert.Tpo $(DEPDIR)/stap_gen_cert-stap-gen-cert.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-gen-cert.cxx' object='stap_gen_cert-stap-gen-cert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-stap-gen-cert.obj `if test -f 'stap-gen-cert.cxx'; then $(CYGPATH_W) 'stap-gen-cert.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-gen-cert.cxx'; fi` stap_gen_cert-util.o: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-util.o -MD -MP -MF $(DEPDIR)/stap_gen_cert-util.Tpo -c -o stap_gen_cert-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-util.Tpo $(DEPDIR)/stap_gen_cert-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_gen_cert-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx stap_gen_cert-util.obj: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-util.obj -MD -MP -MF $(DEPDIR)/stap_gen_cert-util.Tpo -c -o stap_gen_cert-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-util.Tpo $(DEPDIR)/stap_gen_cert-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_gen_cert-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` stap_gen_cert-nsscommon.o: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-nsscommon.o -MD -MP -MF $(DEPDIR)/stap_gen_cert-nsscommon.Tpo -c -o stap_gen_cert-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-nsscommon.Tpo $(DEPDIR)/stap_gen_cert-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_gen_cert-nsscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx stap_gen_cert-nsscommon.obj: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -MT stap_gen_cert-nsscommon.obj -MD -MP -MF $(DEPDIR)/stap_gen_cert-nsscommon.Tpo -c -o stap_gen_cert-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_gen_cert-nsscommon.Tpo $(DEPDIR)/stap_gen_cert-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_gen_cert-nsscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_gen_cert_CXXFLAGS) $(CXXFLAGS) -c -o stap_gen_cert-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` stap_serverd-stap-serverd.o: stap-serverd.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-stap-serverd.o -MD -MP -MF $(DEPDIR)/stap_serverd-stap-serverd.Tpo -c -o stap_serverd-stap-serverd.o `test -f 'stap-serverd.cxx' || echo '$(srcdir)/'`stap-serverd.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-stap-serverd.Tpo $(DEPDIR)/stap_serverd-stap-serverd.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-serverd.cxx' object='stap_serverd-stap-serverd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-stap-serverd.o `test -f 'stap-serverd.cxx' || echo '$(srcdir)/'`stap-serverd.cxx stap_serverd-stap-serverd.obj: stap-serverd.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-stap-serverd.obj -MD -MP -MF $(DEPDIR)/stap_serverd-stap-serverd.Tpo -c -o stap_serverd-stap-serverd.obj `if test -f 'stap-serverd.cxx'; then $(CYGPATH_W) 'stap-serverd.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-serverd.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-stap-serverd.Tpo $(DEPDIR)/stap_serverd-stap-serverd.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-serverd.cxx' object='stap_serverd-stap-serverd.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-stap-serverd.obj `if test -f 'stap-serverd.cxx'; then $(CYGPATH_W) 'stap-serverd.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-serverd.cxx'; fi` stap_serverd-cscommon.o: cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-cscommon.o -MD -MP -MF $(DEPDIR)/stap_serverd-cscommon.Tpo -c -o stap_serverd-cscommon.o `test -f 'cscommon.cxx' || echo '$(srcdir)/'`cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-cscommon.Tpo $(DEPDIR)/stap_serverd-cscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cscommon.cxx' object='stap_serverd-cscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-cscommon.o `test -f 'cscommon.cxx' || echo '$(srcdir)/'`cscommon.cxx stap_serverd-cscommon.obj: cscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-cscommon.obj -MD -MP -MF $(DEPDIR)/stap_serverd-cscommon.Tpo -c -o stap_serverd-cscommon.obj `if test -f 'cscommon.cxx'; then $(CYGPATH_W) 'cscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/cscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-cscommon.Tpo $(DEPDIR)/stap_serverd-cscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cscommon.cxx' object='stap_serverd-cscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-cscommon.obj `if test -f 'cscommon.cxx'; then $(CYGPATH_W) 'cscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/cscommon.cxx'; fi` stap_serverd-util.o: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-util.o -MD -MP -MF $(DEPDIR)/stap_serverd-util.Tpo -c -o stap_serverd-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-util.Tpo $(DEPDIR)/stap_serverd-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_serverd-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx stap_serverd-util.obj: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-util.obj -MD -MP -MF $(DEPDIR)/stap_serverd-util.Tpo -c -o stap_serverd-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-util.Tpo $(DEPDIR)/stap_serverd-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_serverd-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` stap_serverd-privilege.o: privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-privilege.o -MD -MP -MF $(DEPDIR)/stap_serverd-privilege.Tpo -c -o stap_serverd-privilege.o `test -f 'privilege.cxx' || echo '$(srcdir)/'`privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-privilege.Tpo $(DEPDIR)/stap_serverd-privilege.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='privilege.cxx' object='stap_serverd-privilege.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-privilege.o `test -f 'privilege.cxx' || echo '$(srcdir)/'`privilege.cxx stap_serverd-privilege.obj: privilege.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-privilege.obj -MD -MP -MF $(DEPDIR)/stap_serverd-privilege.Tpo -c -o stap_serverd-privilege.obj `if test -f 'privilege.cxx'; then $(CYGPATH_W) 'privilege.cxx'; else $(CYGPATH_W) '$(srcdir)/privilege.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-privilege.Tpo $(DEPDIR)/stap_serverd-privilege.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='privilege.cxx' object='stap_serverd-privilege.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-privilege.obj `if test -f 'privilege.cxx'; then $(CYGPATH_W) 'privilege.cxx'; else $(CYGPATH_W) '$(srcdir)/privilege.cxx'; fi` stap_serverd-nsscommon.o: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-nsscommon.o -MD -MP -MF $(DEPDIR)/stap_serverd-nsscommon.Tpo -c -o stap_serverd-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-nsscommon.Tpo $(DEPDIR)/stap_serverd-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_serverd-nsscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx stap_serverd-nsscommon.obj: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-nsscommon.obj -MD -MP -MF $(DEPDIR)/stap_serverd-nsscommon.Tpo -c -o stap_serverd-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-nsscommon.Tpo $(DEPDIR)/stap_serverd-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_serverd-nsscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` stap_serverd-cmdline.o: cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-cmdline.o -MD -MP -MF $(DEPDIR)/stap_serverd-cmdline.Tpo -c -o stap_serverd-cmdline.o `test -f 'cmdline.cxx' || echo '$(srcdir)/'`cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-cmdline.Tpo $(DEPDIR)/stap_serverd-cmdline.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cmdline.cxx' object='stap_serverd-cmdline.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-cmdline.o `test -f 'cmdline.cxx' || echo '$(srcdir)/'`cmdline.cxx stap_serverd-cmdline.obj: cmdline.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -MT stap_serverd-cmdline.obj -MD -MP -MF $(DEPDIR)/stap_serverd-cmdline.Tpo -c -o stap_serverd-cmdline.obj `if test -f 'cmdline.cxx'; then $(CYGPATH_W) 'cmdline.cxx'; else $(CYGPATH_W) '$(srcdir)/cmdline.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_serverd-cmdline.Tpo $(DEPDIR)/stap_serverd-cmdline.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cmdline.cxx' object='stap_serverd-cmdline.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(stap_serverd_CXXFLAGS) $(CXXFLAGS) -c -o stap_serverd-cmdline.obj `if test -f 'cmdline.cxx'; then $(CYGPATH_W) 'cmdline.cxx'; else $(CYGPATH_W) '$(srcdir)/cmdline.cxx'; fi` stap_sign_module-stap-sign-module.o: stap-sign-module.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-stap-sign-module.o -MD -MP -MF $(DEPDIR)/stap_sign_module-stap-sign-module.Tpo -c -o stap_sign_module-stap-sign-module.o `test -f 'stap-sign-module.cxx' || echo '$(srcdir)/'`stap-sign-module.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-stap-sign-module.Tpo $(DEPDIR)/stap_sign_module-stap-sign-module.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-sign-module.cxx' object='stap_sign_module-stap-sign-module.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-stap-sign-module.o `test -f 'stap-sign-module.cxx' || echo '$(srcdir)/'`stap-sign-module.cxx stap_sign_module-stap-sign-module.obj: stap-sign-module.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-stap-sign-module.obj -MD -MP -MF $(DEPDIR)/stap_sign_module-stap-sign-module.Tpo -c -o stap_sign_module-stap-sign-module.obj `if test -f 'stap-sign-module.cxx'; then $(CYGPATH_W) 'stap-sign-module.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-sign-module.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-stap-sign-module.Tpo $(DEPDIR)/stap_sign_module-stap-sign-module.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stap-sign-module.cxx' object='stap_sign_module-stap-sign-module.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-stap-sign-module.obj `if test -f 'stap-sign-module.cxx'; then $(CYGPATH_W) 'stap-sign-module.cxx'; else $(CYGPATH_W) '$(srcdir)/stap-sign-module.cxx'; fi` stap_sign_module-nsscommon.o: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-nsscommon.o -MD -MP -MF $(DEPDIR)/stap_sign_module-nsscommon.Tpo -c -o stap_sign_module-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-nsscommon.Tpo $(DEPDIR)/stap_sign_module-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_sign_module-nsscommon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-nsscommon.o `test -f 'nsscommon.cxx' || echo '$(srcdir)/'`nsscommon.cxx stap_sign_module-nsscommon.obj: nsscommon.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-nsscommon.obj -MD -MP -MF $(DEPDIR)/stap_sign_module-nsscommon.Tpo -c -o stap_sign_module-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-nsscommon.Tpo $(DEPDIR)/stap_sign_module-nsscommon.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='nsscommon.cxx' object='stap_sign_module-nsscommon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-nsscommon.obj `if test -f 'nsscommon.cxx'; then $(CYGPATH_W) 'nsscommon.cxx'; else $(CYGPATH_W) '$(srcdir)/nsscommon.cxx'; fi` stap_sign_module-util.o: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-util.o -MD -MP -MF $(DEPDIR)/stap_sign_module-util.Tpo -c -o stap_sign_module-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-util.Tpo $(DEPDIR)/stap_sign_module-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_sign_module-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-util.o `test -f 'util.cxx' || echo '$(srcdir)/'`util.cxx stap_sign_module-util.obj: util.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -MT stap_sign_module-util.obj -MD -MP -MF $(DEPDIR)/stap_sign_module-util.Tpo -c -o stap_sign_module-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stap_sign_module-util.Tpo $(DEPDIR)/stap_sign_module-util.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='util.cxx' object='stap_sign_module-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stap_sign_module_CPPFLAGS) $(CPPFLAGS) $(stap_sign_module_CXXFLAGS) $(CXXFLAGS) -c -o stap_sign_module-util.obj `if test -f 'util.cxx'; then $(CYGPATH_W) 'util.cxx'; else $(CYGPATH_W) '$(srcdir)/util.cxx'; fi` install-oldincludeHEADERS: $(oldinclude_HEADERS) @$(NORMAL_INSTALL) @list='$(oldinclude_HEADERS)'; test -n "$(oldincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(oldincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(oldincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(oldincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(oldincludedir)" || exit $$?; \ done uninstall-oldincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(oldinclude_HEADERS)'; test -n "$(oldincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(oldincludedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) config.h all-local installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(oldincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) @BUILD_CRASHMOD_FALSE@@BUILD_ELFUTILS_FALSE@@HAVE_NSS_FALSE@install-exec-local: @BUILD_CRASHMOD_FALSE@@BUILD_TRANSLATOR_FALSE@install-exec-local: clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-local \ clean-noinstPROGRAMS clean-pkglibexecPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-oldincludeHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS \ install-exec-local install-pkglibexecPROGRAMS \ install-pkglibexecSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-local uninstall-oldincludeHEADERS \ uninstall-pkglibexecPROGRAMS uninstall-pkglibexecSCRIPTS .MAKE: $(am__recursive_targets) all check check-am install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ am--refresh check check-am check-local clean clean-binPROGRAMS \ clean-cscope clean-generic clean-local clean-noinstPROGRAMS \ clean-pkglibexecPROGRAMS cscope cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-local distclean-tags dvi dvi-am html html-am info \ info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am \ install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-oldincludeHEADERS install-pdf install-pdf-am \ install-pkglibexecPROGRAMS install-pkglibexecSCRIPTS \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-local uninstall-oldincludeHEADERS \ uninstall-pkglibexecPROGRAMS uninstall-pkglibexecSCRIPTS .PRECIOUS: Makefile install: all $(MAKE) $(AM_MAKEFLAGS) install-recursive git_version.stamp: @if test -f "$(srcdir)/git_version.h"; then \ if test -f "git_version.h"; then :; \ else \ cp "$(srcdir)/git_version.h" "git_version.h"; \ fi; \ fi $(GIT_VERSION_CMD) -k -s $(top_srcdir) -o git_version.h @if test -s "$(srcdir)/git_version.h"; then \ if cmp "$(srcdir)/git_version.h" "git_version.h"; then :; \ else \ echo "Error: $(srcdir)/git_version.h and git_version.h differ."; \ echo " You probably want to remove the former."; \ exit 1; \ fi; \ fi git_version.h: $(srcdir)/git_version.sh -k --srcdir $(srcdir) -o git_version.h cscope: cd $(srcdir) && \ (echo -q ; git ls-files '*.cxx' '*.c' '*.h' | grep -v '^testsuite' ) > cscope.files && \ cscope -b -q @DYNINST_CXXFLAGS@ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@install-exec-local: install-scripts # scripts must be installed before this rule is run @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@install-scripts: install-binSCRIPTS install-pkglibexecSCRIPTS @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ for f in $(bin_SCRIPTS); do \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ sed -i -e "s,\$${PKGLIBEXECDIR},$(pkglibexecdir)/," $(DESTDIR)$(bindir)/$$f; \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ done @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ for f in $(pkglibexec_SCRIPTS); do \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ sed -i -e "/INSTALL-HOOK/d;s,sysconfdir=.*,sysconfdir=$(sysconfdir),;s,pkglibexecdir=.*,pkglibexecdir=$(pkglibexecdir)/,;s,localstatedir=.*,localstatedir=$(localstatedir),;s,\$${PKGLIBEXECDIR},$(pkglibexecdir)/," $(DESTDIR)$(pkglibexecdir)/$$f; \ @BUILD_TRANSLATOR_TRUE@@HAVE_NSS_TRUE@ done @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@stamp-elfutils: config.status @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ $(MAKE) $(AM_MAKEFLAGS) -C build-elfutils all bin_PROGRAMS= @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ for dir in libelf libebl libdw libdwfl backends; do \ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ $(MAKE) $(AM_MAKEFLAGS) -j1 -C build-elfutils/$$dir bin_PROGRAMS= install; \ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ done @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ $(MAKE) $(AM_MAKEFLAGS) -j1 -C build-elfutils install-pkgincludeHEADERS; @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ touch $@ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@lib-elfutils/libdw.so: stamp-elfutils ; @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@install-elfutils: @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ mkdir -p $(DESTDIR)$(pkglibdir) @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ for file in lib-elfutils/*.so* lib-elfutils/${PACKAGE_NAME}/*.so*; do \ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ $(INSTALL_PROGRAM) $$file $(DESTDIR)$(pkglibdir); \ @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@ done @BUILD_ELFUTILS_TRUE@@BUILD_TRANSLATOR_TRUE@install-exec-local: install-elfutils @BUILD_CRASHMOD_TRUE@$(STAPLOG): staplog.c @BUILD_CRASHMOD_TRUE@ $(CC) $(staplog_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -shared -rdynamic \ @BUILD_CRASHMOD_TRUE@ $(AM_LDFLAGS) $(LDFLAGS) -fPIC -o $@ $< @BUILD_CRASHMOD_TRUE@all-local: $(STAPLOG) example_index @BUILD_CRASHMOD_TRUE@install-exec-local: $(STAPLOG) @BUILD_CRASHMOD_TRUE@ $(MKDIR_P) $(DESTDIR)$(pkglibdir) @BUILD_CRASHMOD_TRUE@ $(INSTALL) $(STAPLOG) $(DESTDIR)$(pkglibdir) @BUILD_CRASHMOD_FALSE@all-local: example_index example_index: $(EXAMPLE_SOURCE_DIR)/index.html $(EXAMPLE_SOURCE_DIR)/index.html: $(EXAMPLE_META_FILES) $(EXAMPLE_INDEX_GEN) @echo "The script example index is outdated, run" @echo " cd $(EXAMPLE_SOURCE_DIR) && \\ " @echo " perl examples-index-gen.pl" @echo "to regenerate it." install-data-local: (cd $(srcdir)/runtime; for f in *.[ch]; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/$$f; done) @HAVE_DYNINST_TRUE@ (cd $(srcdir)/runtime/dyninst; find . \( -name '*.[ch]' \) -print \ @HAVE_DYNINST_TRUE@ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/dyninst/$$f; done) (cd $(srcdir)/runtime/unwind; find . \( -name '*.[ch]' \) -print \ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/unwind/$$f; done) (cd $(srcdir)/runtime/transport; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/transport/$$f; done) (cd $(srcdir)/runtime/linux; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/$$f; done) (cd $(srcdir)/runtime/linux/uprobes; for f in Makefile *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes/$$f; done) (cd $(srcdir)/runtime/linux/uprobes2; for f in *.[ch]; \ do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes2/$$f; done) (cd $(srcdir)/tapset; find . \( -name '*.stp' -o -name '*.stpm' -o -name README \) -print \ | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/tapset/$$f; done) (cd $(srcdir)/testsuite/systemtap.examples; find . -type f -print \ | egrep -v 'check.exp|ChangeLog|examples-index-gen.pl|html/.*\.tmpl|metadatabase.dbq$$' \ | while read f; do if test -x $$f; then \ i_cmd="$(INSTALL_PROGRAM)"; else \ i_cmd="$(INSTALL_DATA)"; fi; \ $$i_cmd -D $$f $(DESTDIR)$(pkgdatadir)/examples/$$f; done) test -e $(DESTDIR)$(sysconfdir)/systemtap || mkdir -p $(DESTDIR)$(sysconfdir)/systemtap @BUILD_SERVER_TRUE@ test -e $(DESTDIR)$(localstatedir)/run/stap-server || mkdir -p $(DESTDIR)$(localstatedir)/run/stap-server @BUILD_SERVER_TRUE@ test -e $(DESTDIR)$(localstatedir)/log || mkdir -p $(DESTDIR)$(localstatedir)/log gcov: find . -name '*.gc*' | xargs rm -f $(MAKE) clean CXXFLAGS="-g -fprofile-arcs -ftest-coverage" CFLAGS="-g -fprofile-arcs -ftest-coverage" all install -sudo $(MAKE) installcheck $${RUNTESTFLAGS+RUNTESTFLAGS=$${RUNTESTFLAGS}} for dir in $(SUBDIRS); do \ (cd $$dir; gcov *.gcno > SUMMARY.gcov 2>&1 || true); \ done find . -name '*.gcov' clean-local: rm -rf ${PACKAGE_TARNAME}-*.tar.gz rm -rf ${PACKAGE_TARNAME}-${PACKAGE_VERSION} rm -rf $(TEST_COV_DIR) rm -rf stap.info rm -rf staplog.so distclean-local: rm -rf build-elfutils include-elfutils lib-elfutils rm -f doc/beginners/en-US doc/beginners/build/en-US/testsuite uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(libdir)/$(PACKAGE) -rm -rf $(DESTDIR)$(localstatedir)/cache/$(PACKAGE) @list='$(EXAMPLE_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(EXAMPLE_INSTALL_DIR)/$$p'"; \ rm -f "$(EXAMPLE_INSTALL_DIR)/$$p"; \ done @list='$(DEMO_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(DEMO_INSTALL_DIR)/$$p'"; \ rm -f "$(DEMO_INSTALL_DIR)/$$p"; \ done @list='$(SAMPLE_SRC)'; for f in $$list; do p=`basename $$f`; \ echo " rm -f '$(SAMPLE_INSTALL_DIR)/$$p'"; \ rm -f "$(SAMPLE_INSTALL_DIR)/$$p"; \ done rm -rf $(DESTDIR)$(sysconfdir)/systemtap rm -rf $(DESTDIR)$(docdir)/examples @BUILD_SERVER_TRUE@ rm -rf $(DESTDIR)$(localstatedir)/run/stap-server @BUILD_SERVER_TRUE@ rm -f $(DESTDIR)$(localstatedir)/log/stap-server/log check-local: SRCDIR=`cd $(srcdir); pwd`; \ PWD=`pwd`; \ $(MAKE) -C testsuite check SYSTEMTAP_RUNTIME=$$SRCDIR/runtime SYSTEMTAP_TAPSET=$$SRCDIR/tapset LD_LIBRARY_PATH=$$LD_LIBRARY_PATH$${LD_LIBRARY_PATH:+:}$$PWD/lib-elfutils:$$PWD/lib-elfutils/systemtap SYSTEMTAP_PATH=$$PWD SYSTEMTAP_INCLUDES=$$PWD/includes RUNTESTFLAGS="$(RUNTESTFLAGS)" PKGLIBDIR="$(pkglibexecdir)"; installcheck: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite installcheck RUNTESTFLAGS="$(RUNTESTFLAGS)" installcheck-parallel: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite installcheck-parallel RUNTESTFLAGS="$(RUNTESTFLAGS)" list-unfinished: if test \! -e $(DESTDIR)$(bindir)/stap; then \ echo $(DESTDIR)$(bindir)/stap doesn\'t exist, run make install; \ exit -1; \ fi; \ if test $(builddir)/stap -nt $(DESTDIR)$(bindir)/stap; then \ echo "$(DESTDIR)$(bindir)/stap is not recent, run make install"; \ exit -1; \ fi; $(MAKE) -C testsuite list-unfinished RUNTESTFLAGS="$(RUNTESTFLAGS)" # All the variables are overridden by run-stap, but SYSTEMTAP_RUNTIME # is used by the testsuite scripts themselves. runcheck: testsuite/stap testsuite/dtrace $(MAKE) -C testsuite installcheck RUNTESTFLAGS="$(RUNTESTFLAGS)" \ SYSTEMTAP_PATH="`cd testsuite; pwd`" \ SYSTEMTAP_RUNTIME="`cd $(srcdir)/runtime; pwd`" testsuite/stap: run-stap (echo '#!/bin/sh'; echo "exec `pwd`/run-stap" '$${1+"$$@"}') > $@.new chmod 555 $@.new mv -f $@.new $@ testsuite/dtrace: dtrace (echo '#!/bin/sh'; echo "exec `pwd`/dtrace" '$${1+"$$@"}') > $@.new chmod 555 $@.new mv -f $@.new $@ update-po: (cd $(srcdir); ls -1d *.c *.cxx *.h staprun/*.c staprun/*.h) \ | grep -v loc2c-test.c \ | grep -v config.h \ | grep -v git_version.h \ | grep -v staprun/config.h \ | sort > $(srcdir)/po/POTFILES.in $(MAKE) -C po update-po @echo @echo if systemtam.pot is shown as modified ... @echo (cd $(srcdir)/po; git status *.pot) @echo @echo ... then check in with zanata ... @echo @echo % cd $(srcdir) @echo % zanata-cli -B push -s po -t po @echo % zanata-cli -B pull -s po -t po @echo @echo if the .po files are shown as modified ... @echo (cd $(srcdir)/po; git status *.po) @echo @echo ... regenerate just once ... @echo @echo % $(MAKE) -C `pwd` update-po uprobes: $(MAKE) -C $(srcdir)/runtime/uprobes clean default install-uprobes: $(MAKE) -C $(DESTDIR)$(pkgdatadir)/runtime/uprobes clean default .PHONY: $(PHONIES) dist-gzip: cd $(srcdir); git status | grep working.directory.clean || (echo "You should commit your changes before 'make rpm'.") (cd $(srcdir); git archive --prefix=systemtap-$(VERSION)/ --format=tar HEAD) | gzip > systemtap-$(VERSION).tar.gz rpm: dist-gzip if [ `id -u` = 0 ]; then echo NOTE: do not run this as root; exit 1; fi if [ ! -w `rpm --eval %_topdir` ]; then \ echo WARNING: you do not have access to `rpm --eval %_topdir`; \ echo WARNING: you may receive a permission denied error; \ echo WARNING: consider adding \'%_topdir $(HOME)/rpmbuild\' to $(HOME)/.rpmmacros; \ fi mkdir -p `rpm --eval %_specdir` mkdir -p `rpm --eval %_srcrpmdir` mkdir -p `rpm --eval %_rpmdir` mkdir -p `rpm --eval %_builddir` mkdir -p `rpm --eval %_buildroot` rpmbuild --define "_sourcedir $(PWD)/" -ta systemtap-$(VERSION).tar.gz $(RPMBUILDFLAGS) srpm: dist-gzip mkdir -p `rpm --eval %_srcrpmdir` rpmbuild --define "_sourcedir $(PWD)/" -ts systemtap-$(VERSION).tar.gz $(RPMBUILDFLAGS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: systemtap-3.1/NEWS000066400000000000000000003315061305163227500141210ustar00rootroot00000000000000* What's new in version 3.1, 2017-02-17 - Systemtap now needs C++11 to build. - Syscall and nd_syscall tapsets have been merged in a way that either dwarf-based, or non-dwarf probe gets automatically used based on debuginfo availability (e.g. probe syscall.open). To force use the dwarf based probe, a dw_syscall has been introduced (e.g. probe dw_syscall.open) and the non-dwarf syscall probes were left untouched (e.g. nd_syscall.open). - The syscall tapset files have been reorganized in a way that original big tapset files carrying many syscall probes were split into smaller 'sysc_' prefixed tapset files. This should reduce the syscall tapset maintenance burden. - The powerpc variant of syscall.compat_sysctl got deprecated on favor of syscall.sysctl32. This aligns the syscall to its respective nd_syscall and to ia64/s390/x86_64 variants too. - The syscall.compat_pselect7a (this was actually a typo, but still available for compatibility purposes with --compatible 1.3) has beed deprecated. - The 'description_auddr' convenience variable of syscall.add_key has been deprecated. - Support has been added for probing python 2 and 3 functions using a custom python helper module. Python function probes can target function entry, returns, or specific line numbers. probe python2.module("myscript").function("foo") { println($$parms) } To run with the custom python helper module, you'd use python's '-m' option like the following: stap myscript.stp -c "python -m HelperSDT myscript.py" - Java method probes now convert all types of java parameters to strings using the java toString() method before passing them to systemtap probes; new argN variables copy them into string variables. Previously, only numeric types were passed, and only by casting to integers. The previous behaviour is available with --compatible=3.0 . 3.1: probe java(...).class(...).method(...) { printf("%s", arg1) } 3.0: probe java(...).class(...).method(...) { printf("%d", $arg1) } - An older defensive measure to suppress kernel kprobes optimizations since the 3.x era has been disabled for recent kernels. This improves the performance of kernel function probes. In case of related problems, please report and work around with: # echo 0 > /proc/sys/debug/kprobes-optimization - Context variables in .return probes should be accessed with @entry($var) rather than $var, to make it clear that entry-time snapshots are being used. The latter construct now generates a warning. Availability testing with either @defined(@entry($var)) or @defined($var) works. - Tapsets containing process probes may now be placed in the special $prefix/share/systemtap/tapset/PATH/ directory to have their process parameter prefixed with the location of the tapset. For example, process("foo").function("NAME") expands to process("/usr/bin/foo").function("NAME") when placed in $prefix/share/systemtap/tapset/PATH/usr/bin/ This is intended to help write more reusable tapsets for userspace binaries. - The implementation of "var <<< X" for each aggregate variable is now specially compiled to compute only the script-requested @op(var) values, not all potential ones. This speeds up the <<< operations. - Systemtap now warns if script arguments given on the command line are unused, instead of mentioned by the script with $n/@n. - Netfilter tapsets now provide variables data_hex and data_str to display packet contents in hexadecimal and ASCII respectively. - Translator now accepts new @const() operator for convenient expressing constants in tapset code, or guru-mode scripts. See stap(1) for details. - New -T option allows the script to be terminated after a specified number of seconds. This is a shortcut for adding the probe, timer {exit()}. - New installcheck-parallel testsuite feature allows running the tests in parallel in order to save time. See testsuite/README for details. - New tapset functions set_user_string(), set_user_string_n(), set_user_long() set_user_int(), set_user_short(), set_user_char() and set_user_pointer() to write a value of specified type directly to a user space address. - New tapset functions user_buffer_quoted(), user_buffer_quoted_error(), kernel_buffer_quoted(), and kernel_buffer_quoted_error() to print a buffer of an exact length. These functions can handle '\0' characters as well. - New statistics @variance() operator using the Welford's online algorithm for per-cpu computation, and the Total Variance formula authored by Niranjan Kamat and Arnab Nandi from the Ohio State University for the cross-cpu aggregation. - New command within interactive mode, sample. Allows you to search through all included example scripts to load for further editing or running. Sample and example scripts have been moved to /usr/share/systemtap/examples. A symlink in the former location under $docdir links to it. * What's new in version 3.0, 2016-03-27 - The new experimental "interactive" mode, specified by "stap -i", drops you into a command-line prompt where you can build up a script, run it, edit it, run it again, etc. Type "help" for a list of commands. - New experimental --monitor[=INTERVAL] option similar to unix "top". This allows users to see statistics about the running module(uptime, module name, invoker uid, memory sizes, global variables, and the current probe list along with their statistics). An interface is also provided to allow control over the running module(resetting global variables, sorting the list of probes, deactivating and reactivating probes). - The performance of associative arrays have been dramatically improved, especially for densely filled tables and for multiple indexes. The hash tables behind these arrays is now sized as a function of the array maximum size with an optional MAPHASHBIAS space/time tradeoff knob. - Add macros @prints to print a scalar aggregate variable, @prints[1-9] to print an array aggregate (of given index-arity), formatted similarly to the automatic printing of written-only global variables. global a, b probe oneshot { a <<< 1; b[tid()] <<< 2 } probe end { @prints(a); @prints1(b) } - Functions may now be overloaded during module runtime using the "next" statement in script functions and STAP_NEXT macro for embedded-C functions. They may also be overloaded by number of parameters during compile time. For example, Runtime overloading: function f() { if (condition) next; print("first function") } function f() %{ STAP_NEXT; print("second function") %} function f() { print("third function") } For the given functions above, a functioncall f(), will execute the body of the third function if condition evaluates to true and print "third function". Note that the second function is unconditionally nexted. Parameter overloading: function g() { print("first function") } function g(x) { print("second function") } g() -> "first function" g(1) -> "second function" Note that runtime overloading does not occur in the above example as the number of parameters of the functions differ. The use of a next statement inside a function while no more overloads remain will trigger a runtime exception. The function candidates are selected at compile time and is determined by the number of arguments provided for the functioncall. - Add Czech version of manual pages. - The stap compile server will log the stap client's options that are passed to the server. The options that get logged on the server will include the script name or the -e script, depending on which is used by the client. - Embedded-C functions and blocks may now access script level global variables using the STAP_GLOBAL_GET_* and STAP_GLOBAL_SET_* macros. To read or write the script global var, the /* pragma:read:var */ or /* pragma:write:var */ marker must be placed in the embedded-C function or block. The written type must match the type inferred at script level. Scalars: STAP_GLOBAL_SET_var(STAP_GLOBAL_GET_var()+1) -> increments script global var by 1 STAP_GLOBAL_SET_var("hello") Associative arrays: STAP_GLOBAL_GET_var(index-1, ..., index-n) STAP_GLOBAL_SET_var(index-1, ..., index-n, new value) - Probe point brace expansion is now supported to improve brevity in specifying probe points. For example, process.{function("a"), function("b").{call,return}} => process.function("a"), process.function("b").call, process.function("b").return process.{function("*").callees,plt}? => process.function("*").callees?, process.plt? {kernel,module("nfs")}.function("nfs*")! => kernel.function("nfs*")!, module("nfs").function("nfs*")! - Profiling timers at arbitrary frequencies are now provided and perf probes now support a frequency field as an alternative to sampling counts. probe timer.profile.freq.hz(N) probe perf.type(N).config(M).hz(X) The specified frequency is only accurate up to around 100hz. You may need to provide a higher value to achieve the desired rate. - Added support for private global variables and private functions. The scope of these is limited to the tapset file they are defined in (PR19136). - New tapset function string_quoted() to quote and \-escape general strings. String $context variables that are pretty-printed are now processed with such a quotation engine, falling back to a 0x%x (hex pointer) on errors. - Functions get_mmap_args() and get_32mmap_args() got deprecated. * What's new in version 2.9, 2015-10-08 - SystemTap now uses symbols from /proc/kallsyms when kernel debuginfo is not available. - New --prologue-searching[=WHEN] option has been added to stap with '-P' being its short counterpart. Using --prologue-searching=never turns prologue searching deliberately off working around issue of int_arg() returning wrong value when a 32-bit userspace binary having debug info is being probed with active prologue searching (PR18649). - The powerpc variant of nd_syscall.compat_sysctl got deprecated on favor of nd_syscall.sysctl32. This aligns the nd_syscall to its respective syscall and to ia64/s390/x86_64 variants too. - New tapset function assert(expression, msg) has been added. - Embedded-C functions may now use the new STAP_PRINTF(fmt, ...) macro for output. - New tapset functions fullname_struct_path and fullname_struct_nameidata resolve full path names from internal kernel struct pointers. - New tapset functions arch_bytes() and uarch_bytes() to obtain address size for kernel and user space respectively. - New tapset function switch_file() allows control over rotation of output files. - The [nd_]syscall tapset got autodocumented. Related paragraph got added to PDF and HTML tapset reference. Also a new tapset::syscall 3stap man page got added. - Embedded-C functions with parameter arity-0 can now be marked with the /* stable */ /* pure */ pragmas, if (roughly speaking) the function is side-effect-free and idempotent. The translator may execute these speculatively and have their results memoized. This lets probes with multiple calls to such functions run faster. Context variable ($foo) getter functions (in non-guru mode), and numerous tapset functions are now marked as /* stable */ /* pure */. Several example scripts have been modified to eschew explicit memoization. - Callee probe points now support '.return' and '.call' suffix. For example, process("proc").function("foo").callee("bar").return will fire upon returning from bar when called by foo. process("proc").function("foo").callee("bar").call will only fire for non-inlined callees. - The following tapset variables and functions are deprecated in version 2.9: - The '__int32_compat' library macro got deprecated in favor of new '__compat_long' library macro. - The 'uargs' convenience variable of the 'seccomp' syscall probe got deprecated in favor of new 'uargs_uaddr' variable. - SystemTap has reduced its memory consumption by using interned_strings (a wrapper for boost::string_ref) in place of std::string instances. The change is to reduce the number of duplicate strings created by replacing them with interned_strings which act like pointers to existing strings. For the implementation of interned_string, see stringtable.h * What's new in version 2.8, 2015-06-17 - SystemTap has improved support for probing golang programs. Work has been done to be able to handle DWARF information, reporting file names, line numbers, and column numbers, and tolerance of odd characters in symbol names. - The function::*, probe::* and new macro::* man pages cross-references the enclosing tapset::* man page. For example: function::pn(3stap) mentions tapset::pn(3stap) in the SEE ALSO section - New stapref(1) man page provides a reference for the scripting language. The stapref page contains an overview of the features available in the language, such as keywords, data types, operators and more. - The @task macro performs the very common @cast to a task_struct. The embedded-C bodies of task_current() and pid2task() are now wrapped by @task, which gives them a debuginfo type on the return value. With autocast type propagation, this removes the need for any explicit @cast in many places. Other places which take untyped task pointers as parameters, for instance, now use @task as well to simplify their code. - New namespace-aware tapset functions [task_]ns_*() and ia new option --target-namespaces=PID to denote a target set of namespaces corresponding to the PID's namespaces. The namespace-aware tapsets will return values relative to the target namespaces if specified, or the stap process' namespaces. - Netfilter probes now attempt to decode Spanning Tree Protocol packets into local variables: probe netfilter.bridge.*, br_* variables, stp_dump.stp sample script. - Colorization of error string tokens is made more robust, especially in presence of $N/@N substitution. - The following tapset variables and functions are deprecated in version 2.8: - The 'hostname_uaddr' variable in the syscall.setdomainname and nd_syscall.setdomainname probe aliases have been deprecated in favor of the new 'domainname_uaddr' variable. - The 'fd' and 'fd_str' variables in the syscall.execveat and nd_syscall.execveat probe aliases have been deprecated in favor of the new 'dirfd' and 'dirfd_str' variables. * What's new in version 2.7, 2015-02-18 - Some systemtap sample scripts are now identified with the "_best" keyword, because they are generally useful or educational. They are now promoted within the generated index files. - Passing strings to and from functions has become faster due to optimization (passing some strings by reference instead of by value/copy). It may be disabled by using the unoptimize flag (-u). To make embedded-C functions eligible for the same optimization, use the pragma /* unmodified-fnargs */ to indicate that the function body will not modify the function arguments. Remember to use MAXSTRINGLEN for string length, rather than sizeof(string_arg) (which might now be a pointer). - SystemTap now allows .function probes to be specified by their full function name, file, and declaration line number. Use the .statement probe to probe a specific line number. - Tracepoint probes can now also be specified by the target subsystem. For example, the following are all supported: probe kernel.trace("sched:sched_switch") --> probe sched_switch found in the sched subsystem probe kernel.trace("sched:*") --> probe all tracepoints in sched subsystem As a result, tapset functions such as pn() will now return a different string than before. To retain the previous behaviour, use '--compatible=2.6'. - The following functions are deprecated in release 2.7: - _adjtx_mode_str(), _statfs_f_type_str(), _waitid_opt_str(), _internal_wait_opt_str(), and _epoll_events_str(). - New tapset functions [u]symfileline(), [u]symfile() and [u]symline() will return a string containing the specified portion of the filename:linenumber match from a given address. Using these functions may result in large generated modules from stored address->file:line information. * What's new in version 2.6, 2014-09-05 - SystemTap now supports on-the-fly arming/disarming of certain probe types: kprobes, uprobes, and timer.*s(NUM) probes. For example, this probe probe kernel.function("vfs_read") if (i > 4) { ... } will automatically register/unregister the associated kprobe on vfs_read whenever the value of the condition changes (as some probe handler modifies 'i'). This allows us to avoid probe overhead when we're not interested. If the arming capability is not relevant/useful, nest the condition in the normal probe handler: probe kernel.function("vfs_read") { if (i > 4) { ... } } - statement("*@file:NNN").nearest probes now available to let systemtap translate probe to nearest probe-able line to one given if necessary - process("PATH").library("PATH").plt("NAME").return probes are now supported. - SystemTap now supports SDT probes with operands that refer to symbols. - While in listing mode (-l/-L), probes printed are now more consistent and precise. - Statement probes now support enumerated linenos to probe discontiguous linenos using the form: process.statement("foo@file.c:3,5-7,9") - Statement counting is now suppressed in the generated c code for probes that are non-recursive and loop-free. Statement counting can be turned back on in unoptimize mode (-u). - SystemTap now asserts that the PID provided for a process probe corresponds to a running process. - DWARF process probes can be bound to a specific process using the form: process(PID).function("*") - SystemTap now accepts additional scripts through the new -E SCRIPT option. There still needs to be a main script specified through -e or file in order to provide an additional script. This makes it feasible to have scripts in the $HOME/.systemtap/rc file. For example: -E 'probe begin, end, error { log("systemtap script " . pn()) }' -E 'probe timer.s(30) { error ("timeout") } The -E SCRIPT option can also be used in listing mode (-l/-L), such that probe points for the additional scripts will not listed, but other parts of the script are still available, such as macros or aliases. - SystemTap now supports array slicing within foreach loop conditions, delete statements and membership tests. Wildcards are represented by "*". Examples of the expressions are: foreach ([a,b,c] in val[*,2,*]) delete val[*, 2, *] [*, 2, *] in val - Integer expressions which are derived from DWARF values, like context $vars, @cast, and @var, will now carry that type information into subsequent reads. Such expressions can now use "->" and "[]" operators, as can local variables which were assigned such values. foo = $param->foo; printf("x:%d y:%d\n", foo->x, foo->y) printf("my value is %d\n", ($type == 42 ? $foo : $bar)->value) printf("my parent pid is %d\n", task_parent(task_current())->tgid) * What's new in version 2.5, 2014-04-30 - Systemtap now supports backtracing through its own, invoking module. - Java probes now support backtracing using the print_java_backtrace() and sprint_java_backtrace() functions. - Statement probes (e.g. process.statement) are now faster to resolve, more precise, and work better with inlined functions. - New switches have been added to help inspect the contents of installed library files: stap --dump-functions --> list all library functions and their args stap --dump-probe-aliases --> list all library probe aliases - The heuristic algorithms used to search for function-prologue endings were improved, to cover more optimization (or lack-of-optimization, or incorrect-debuginfo) cases. These heuristics are necessary to find $context parameters for some function-call/entry probes. We recommend programs be built with CFLAGS+=-grecord-gcc-switches to feed information to the heuristics. - The stap --use-server option now more correctly supports address:port type parametrization, for manual use in the absence of avahi. - A new probe alias "oneshot" allows a single quick script fragment to run, then exit. - The argv tapset now merges translate-time and run-time positional arguments, so all of these work: stap -e 'probe oneshot {println(argv[1]," ",argv[2])}' hello world stap -e 'probe oneshot {println(argv[1]," ",argv[2])}' \ -G argv_1=hello -G argv_2=world staprun hello.ko argv_1=hello argv_2=world - SystemTap now falls back on the symbol table for probing functions in processes if the debuginfo is not available. - SystemTap now supports a %( guru_mode == 0 /* or 1 */ %) conditional for making dual-use scripts. - SystemTap now supports UEFI/SecureBoot systems, via machine-owner-keys maintained by a trusted stap-server on the network. (Key enrollment requires a one-time reboot and BIOS conversation.) https://sourceware.org/systemtap/wiki/SecureBoot - SystemTap now reports more accurate and succinct errors on type mismatches. - Embedded-C functions may use STAP_RETURN(value) instead of the more wordy STAP_RETVALUE assignment followed by a "goto out". The macro supports numeric or string values as appropriate. STAP_ERROR(...) is available to return with a (catchable) error. - Some struct-sockaddr fields are now individually decoded for socket-related syscalls: probe syscall.connect { println (uaddr_af, ":", uaddr_ip) } - The documentation for the SystemTap initscript service and the SystemTap compile-server service have been completely converted from README files to man pages (see systemtap(8) and stap-server(8)). - SystemTap is now capable of inserting modules early during the boot process on dracut-based systems. See the 'onboot' command in systemtap(8) for more information. - DWARF probes can now use the '.callee[s]' variants, which allow more precise function probing. For example, the probe point process("myproc").function("foo").callee("bar") will fire upon entering bar() from foo(). A '.callees' probe will instead place probes on all callees of foo(). Note that this also means that probe point wildcards should be used with more care. For example, use signal.*.return rather than signal.*.*, which would also match '.callees'. See stapprobes(3stap) for more info. This feature requires at least GCC 4.7. - A few new functions in the task_time tapsets, as well as a new tapset function task_ancestry(), which prints out the parentage of a process. - The kprocess.exec probe has been updated to use syscall.execve, which allows access to the new process' arguments (through the new 'argstr' or 'args' variables) as well as giving better support across kernel versions. Note also that the 'filename' variable now holds the filename (quoted), or the address (unquoted) if it couldn't be retrieved. - The [s]println() function can now be called without any arguments to simply print a newline. - Suggestions are now provided when markers could not be resolved. For example, process("stap").mark("benchmart") will suggest 'benchmark'. - SystemTap colors can now be turned off by simply setting SYSTEMTAP_COLORS to be empty, rather than having to make it invalid. - There is a new context tapset function, pnlabel(), which returns the name of the label which fired. - The following tapset variables and functions are deprecated in release 2.5: - The 'clone_flags', 'stack_start', 'stack_size', 'parent_tid_uaddr', and 'child_tid_uaddr' variables in the 'syscall.fork' and 'nd_syscall.fork' probe aliases. - The '_sendflags_str()' and '_recvflags_str()' functions have been deprecated in favor of the new '_msg_flags_str()' function. - The 'flags' and 'flags_str' variables in the 'syscall.accept' and 'nd_syscall.accept' probe alias. - The 'first', 'second', and 'uptr_uaddr' variables in the 'syscall.compat_sys_shmctl', and 'nd_syscall.compat_sys_shmctl' probe aliases have been deprecated in favor of the new 'shmid', 'cmd', and 'buf_uaddr' variables. * What's new in version 2.4, 2013-11-06 - Better suggestions are given in many of the semantic errors in which alternatives are provided. Additionally, suggestions are now provided when plt and trace probes could not be resolved. For example, kernel.trace("sched_siwtch") will suggest 'sched_switch'. - SystemTap is now smarter about error reporting. Errors from the same source are considered duplicates and suppressed. A message is displayed on exit if any errors/warnings were suppressed. - Statistics aggregate typed objects are now implemented locklessly, if the translator finds that they are only ever read (using the foreach / @count / etc. constructs) in a probe-begin/end/error. - SystemTap now supports probing inside virtual machines using the libvirt and unix schemes, e.g. stap -ve 'probe timer.s(1) { printf("hello!\n") }' \ --remote=libvirt://MyVirtualMachine Virtual machines managed by libvirt can be prepared using stapvirt. See stapvirt(1) and the --remote option in stap(1) for more details. - Systemtap now checks for and uses (when available) the .gnu_debugdata section which contains a subset of debuginfo, useful for backtraces and function probing - SystemTap map variables are now allocated with vmalloc() instead of with kmalloc(), which should cause memory to be less fragmented. - Although SystemTap itself requires elfutils 0.148+, staprun only requires elfutils 0.142+, which could be useful with the '--disable-translator' configure switch. - Under FIPS mode (/proc/sys/crypto/fips_enabled=1), staprun will refuse to load systemtap modules (since these are not normally signed with the kernel's build-time keys). This protection may be suppressed with the $STAP_FIPS_OVERRIDE environment variable. - The stap-server client & server code now enable all SSL/TLS ciphers rather than just the "export" subset. - For systems with in-kernel utrace, 'process.end' and 'thread.end' probes will hit before the target's parent process is notified of the target's death. This matches the behavior of newer kernels without in-kernel utrace. * What's new in version 2.3, 2013-07-25 - More context-accessing functions throw systemtap exceptions upon a failure, whereas in previous versions they might return non-error sentinel values like "" or "". Use try { } / catch { } around these, or new wrapper functions such as user_string_{n_}quoted() that internally absorb exceptions. - java("org.my.MyApp") probes are now restricted to pre-existing jvm pid's with a listing in jps -l output to avoid recursive calls - The tapset [nd_]syscall.semop parameter tsops_uaddr is renamed sops_uaddr for consistency with [nd_]syscall.semtimedop. - The udp.stp tapset adds some ip-address/port variables. - A new guru-mode-only tapset function raise() is available to send signals to the current task. - Support for the standard Posix ERE named character classes has been added to the regexp engine, e.g. [:digit:], [:alpha:], ... - A substantial internal overhaul of the regexp engine has resulted in correct behaviour on further obscure edge cases. The regexp engine now implements the ERE standard and correctly passes the testsuite for the glibc regexp engine (minus portions corresponding to unimplemented features -- i.e. subexpression capture and reuse). - Alternative functions are now suggested when function probes could not be resolved. For example, kernel.function("vfs_reads") will suggest vfs_read. Other probes for which suggestions are made are module.function, process.function, and process.library.function. - Has life been a bit bland lately? Want to spice things up? Why not write a few faulty probes and feast your eyes upon the myriad of colours adorning your terminal as SystemTap softly whispers in your ear... 'parse error'. Search for '--color' in 'man stap' for more info. - The following tapset functions are deprecated in release 2.3: 'stap_NFS_CLIENT', '__getfh_inode', '_success_check', '_sock_prot_num', '_sock_fam_num', '_sock_state_num', '_sock_type_num', and '_sock_flags_num'. * What's new in version 2.2.1, 2013-05-16 * What's new in version 2.2, 2013-05-14 - Experimental support has been added for probing Java methods using Byteman 2.0 as a backend. Java method probes can target method entries, returns, or specific statements in the method as specified by line number. probe java("org.my.MyApp").class("^java.lang.Object").method("foo(int)") { println($$parms) } See java/README for information on how to set up Java/Byteman functionality. Set env STAPBM_VERBOSE=yes for more tracing. - The stap -l output and pn() tapset function's return value may be slightly different for complicated web of wildcarded/aliased probes. - The dyninst backend has improved in several aspects: - Setting custom values for global variables is now supported, both with -G when compiling a script, and from the stapdyn command line when loading a precompiled module. - A high-performance shared-memory-based transport is used for trace data. - A systemd service file and tmpfile have been added to allow systemtap-server to be managed natively by systemd. - Due to the removal of register_timer_hook in recent kernels, the behaviour of timer.profile has been changed slightly. This probe is now an alias which uses the old mechanism where possible, but falls back to perf.sw.cpu_clock or another mechanism when the kernel timer hook is not available. To require the kernel timer hook mechanism in your script, use timer.profile.tick instead of timer.profile. - The following tapset variables are deprecated in release 2.2: - The 'origin' variables in the 'generic.fop.llseek', 'generic.fop.llseek.return', and 'nfs.fop.llseek' probes. The 'origin' variable has been replaced by the 'whence' variable. - The 'page_index' variable in the 'vfs.block_sync_page' and 'vfs.buffer_migrate_page' probe aliases. - The 'write_from' and 'write_upto' variables in the '_vfs.block_prepare_write' and '_vfs.block_prepare_write.return' probe aliases. - The 'regs' variable in the 'syscall.sigaltstack', 'nd_syscall.sigaltstack', 'syscall.fork', and 'nd_syscall.fork' probe aliases. - The 'first', 'second', 'third', and 'uptr_uaddr' variables in the 'syscall.compat_sys_shmat' and 'nd_syscall.compat_sys_shmat' probe aliases. - The following tapset functions are deprecated in release 2.2: 'ppos_pos', '_dev_minor', and '_dev_major' - The folowing tapset functions used to return error strings instead of raising an error. The original behavior is deprecated in release 2.2. 'ctime', 'probemod', 'modname' * What's new in version 2.1, 2013-02-13 - EMACS and VIM editor modes for systemtap source files are included / updated. - The translator now eliminates duplicate tapset files between its preferred directory (as configured during the build with --prefix=/ or specified with the -I /path option), and files it may find under $XDG_DATA_DIRS. This should eliminate a class of conflicts between parallel system- and hand-built systemtap installations. - The translator accepts a --suppress-time-limits option, which defeats time-related constraints, to allows probe handlers to run for indefinite periods. It requires the guru mode (-g) flag to work. Add the earlier --suppress-handler-errors flag for a gung-ho "just-keep-going" attitude. - Perf event probes may now be read on demand. The counter probe is defined using the counter-name part: probe perf.type(0).config(0).counter("NAME"). The counter is read in a user space probe using @perf("NAME"), e.g. process("PROCESS").statement("func@file") {stat <<< @perf("NAME")} - Perf event probes may now be bound to a specific task using the process-name part: probe perf.type(0).config(0).process("NAME") { } If the probed process name is not specified, then it is inferred from the -c CMD argument. - Some error messages and warnings now refer to additional information that is found in man pages. These are generally named error::FOO or warning::BAR (in the 7stap man page section) and may be read via % man error::FOO % man warning::BAR - The dyninst backend has improved in several aspects: - The runtime now allows much more concurrency when probing multithreaded processes, and will also follow probes across forks. - Several new probe types are now supported, including timers, function return, and process.begin/end and process.thread.begin/end. - Semaphores for SDT probes are now set properly. - Attaching to existing processes with -x PID now works. - The foreach looping construct can now sort aggregate arrays by the user's choice of aggregating function. Previously, @count was implied. e.g.: foreach ([x,y] in array @sum +) { println(@sum(array[x,y])) } - Proof of concept support for regular expression matching has been added: if ("aqqqqqb" =~ "q*b") { ... } if ("abc" !~ "q*b") { ... } The eventual aim is to support roughly the same functionality as the POSIX Extended Regular Expressions implemented by glibc. Currently missing features include extraction of the matched string and subexpressions, and named character classes ([:alpha:], [:digit:], &c). Special thanks go to the re2c project, whose public domain code this functionality has been based on. For more info on re2c, see: http://sourceforge.net/projects/re2c/ - The folowing tapset variables are deprecated in release 2.1 and will be removed in release 2.2: - The 'send2queue' variable in the 'signal.send' probe. - The 'oldset_addr' and 'regs' variables in the 'signal.handle' probe. - The following tapset probes are deprecated in release 2.1 and will be removed in release 2.2: - signal.send.return - signal.handle.return * What's new in version 2.0, 2012-10-09 - Systemtap includes a new prototype backend, which uses Dyninst to instrument a user's own processes at runtime. This backend does not use kernel modules, and does not require root privileges, but is restricted with respect to the kinds of probes and other constructs that a script may use. Users from source should configure --with-dyninst and install a fresh dyninst snapshot such as that in Fedora rawhide. It may be necessary to disable conflicting selinux checks; systemtap will advise. Select this new backend with the new stap option --runtime=dyninst and a -c target process, along with normal options. (-x target processes are not supported in this prototype version.) For example: stap --runtime=dyninst -c 'stap -l begin' \ -e 'probe process.function("main") { println("hi from dyninst!") }' - To aid diagnosis, when a kernel panic occurs systemtap now uses the panic_notifier_list facility to dump a summary of its trace buffers to the serial console. - The systemtap preprocessor now has a simple macro facility as follows: @define add(a,b) %( ((@a)+(@b)) %) @define probegin(x) %( probe begin { @x } %) @probegin( foo = @add(40, 2); print(foo) ) Macros defined in the user script and regular tapset .stp files are local to the file. To get around this, the tapset library can define globally visible 'library macros' inside .stpm files. (A .stpm file must contain a series of @define directives and nothing else.) The status of the feature is experimental; semantics of macroexpansion may change (unlikely) or expand in the future. - Systemtap probe aliases may be used with additional suffixes attached. The suffixes are passed on to the underlying probe point(s) as shown below: probe foo = bar, baz { } probe foo.subfoo.option("gronk") { } // expands to: bar.subfoo.option("gronk"), baz.subfoo.option("gronk") In practical terms, this allows us to specify additional options to certain tapset probe aliases, by writing e.g. probe syscall.open.return.maxactive(5) { ... } - To support the possibility of separate kernel and dyninst backends, the tapsets have been reorganized into separate folders according to backend. Thus kernel-specific tapsets are located under linux/, the dyninst-specific ones under dyninst/ - The backtrace/unwind tapsets have been expanded to allow random access to individual elements of the backtrace. (A caching mechanism ensures that the backtrace computation run at most once for each time a probe fires, regardless of how many times or what order the query functions are called in.) New tapset functions are: stack/ustack - return n'th element of backtrace callers/ucallers - return first n elements of backtrace print_syms/print_usyms - print full information on a list of symbols sprint_syms/sprint_usyms - as above, but return info as a string The following existing functions have been superseded by print_syms() et al.; new scripts are recommended to avoid using them: print_stack() print_ustack() sprint_stack() sprint_ustack() - The probefunc() tapset function is now myproc-unprivileged, and can now be used in unprivileged scripts for such things as profiling in userspace programs. For instance, try running systemtap.examples/general/para-callgraph.stp in unprivileged mode with a stapusr-permitted probe. The previous implementation of probefunc() is available with "stap --compatible=1.8". - Preprocessor conditional to vary code based on script privilege level: unprivileged -- %( systemtap_privilege == "stapusr" %? ... %) privileged -- %( systemtap_privilege != "stapusr" %? ... %) or, alternately %( systemtap_privilege == "stapsys" || systemtap_privilege == "stapdev" %? ... %) - To ease migration to the embedded-C locals syntax introduced in 1.8 (namely, STAP_ARG_* and STAP_RETVALUE), the old syntax can now be re-enabled on a per-function basis using the /* unmangled */ pragma: function add_foo:long(a:long, b:long) %{ /* unmangled */ THIS->__retvalue = THIS->a + STAP_ARG_b; %} Note that both the old and the new syntax may be used in an /* unmangled */ function. Functions not marked /* unmangled */ can only use the new syntax. - Adjacent string literals are now glued together irrespective of intervening whitespace or comments: "foo " "bar" --> "foo bar" "foo " /* comment */ "bar" --> "foo bar" Previously, the first pair of literals would be glued correctly, while the second would cause a syntax error. * What's new in version 1.8, 2012-06-17 - staprun accepts a -T timeout option to allow less frequent wake-ups to poll for low-throughput output from scripts. - When invoked by systemtap, the kbuild $PATH environment is sanitized (prefixed with /usr/bin:/bin:) in an attempt to exclude compilers other than the one the kernel was presumed built with. - Printf formats can now use "%#c" to escape non-printing characters. - Pretty-printed bitfields use integers and chars use escaped formatting for printing. - The systemtap compile-server and client now support IPv6 networks. - IPv6 addresses may now be specified on the --use-server option and will be displayed by --list-servers, if the avahi-daemon service is running and has IPv6 enabled. - Automatic server selection will automatically choose IPv4 or IPv6 servers according to the normal server selection criteria when avahi-daemon is running. One is not preferred over the other. - The compile-server will automatically listen on IPv6 addresses, if available. - To enable IPv6 in avahi-daemon, ensure that /etc/avahi/avahi-daemon.conf contains an active "use-ipv6=yes" line. After adding this line run "service avahi-daemon restart" to activate IPv6 support. - See man stap(1) for details on how to use IPv6 addresses with the --use-server option. - Support for DWARF4 .debug_types sections (for executables and shared libraries compiled with recent GCC's -gdwarf-4 / -fdebug-types-section). PR12997. SystemTap now requires elfutils 0.148+, full .debug_types support depends on elfutils 0.154+. - Systemtap modules are somewhat smaller & faster to compile. Their debuginfo is now suppressed by default; use -B CONFIG_DEBUG_INFO=y to re-enable. - @var now an alternative language syntax for accessing DWARF variables in uprobe and kprobe handlers (process, kernel, module). @var("somevar") can be used where $somevar can be used. The @var syntax also makes it possible to access non-local, global compile unit (CU) variables by specifying the CU source file as follows @var("somevar@some/src/file.c"). This will provide the target variable value of global "somevar" as defined in the source file "some/src/file.c". The @var syntax combines with all normal features of DWARF target variables like @defined(), @entry(), [N] array indexing, field access through ->, taking the address with the & prefix and shallow or deep pretty printing with a $ or $$ suffix. - Stap now has resource limit options: --rlimit-as=NUM --rlimit-cpu=NUM --rlimit-nproc=NUM --rlimit-stack=NUM --rlimit-fsize=NUM All resource limiting has been moved from the compile server to stap itself. When running the server as "stap-server", default resource limit values are specified in ~stap-server/.systemtap/rc. - Bug CVE-2012-0875 (kernel panic when processing malformed DWARF unwind data) is fixed. - The systemtap compile-server now supports multiple concurrent connections. Specify the desired maximum number of concurrent connections with the new stap-server/stap-serverd --max-threads option. Specify a value of '0' to tell the server not to spawn any new threads (handle all connections serially in the main thread). The default value is the number of processor cores on the host. - The following tapset functions are deprecated in release 1.8 and will be removed in release 1.9: daddr_to_string() - SystemTap now mangles local variables to avoid collisions with C headers included by tapsets. This required a change in how embedded-C functions access local parameters and the return value slot. Instead of THIS->foo in an embedded-C function, please use the newly defined macro STAP_ARG_foo (substitute the actual name of the argument for 'foo'); instead of THIS->__retvalue, use the newly defined STAP_RETVALUE. All of the tapsets and test cases have been adapted to use this new notation. If you need to run code which uses the old THIS-> notation, run stap with the --compatible=1.7 option. - There is updated support for user-space probing against kernels >= 3.5, which have no utrace but do have the newer inode-uprobes work by Srikar Dronamraju and colleagues. For kernels < 3.5, the following 3 sets of kernel patches would need to be backported to your kernel to use this preliminary user-space probing support: - inode-uprobes patches: - 2b144498350860b6ee9dc57ff27a93ad488de5dc - 7b2d81d48a2d8e37efb6ce7b4d5ef58822b30d89 - a5f4374a9610fd7286c2164d4e680436727eff71 - 04a3d984d32e47983770d314cdb4e4d8f38fccb7 - 96379f60075c75b261328aa7830ef8aa158247ac - 3ff54efdfaace9e9b2b7c1959a865be6b91de96c - 35aa621b5ab9d08767f7bc8d209b696df281d715 - 900771a483ef28915a48066d7895d8252315607a - e3343e6a2819ff5d0dfc4bb5c9fb7f9a4d04da73 - exec tracepoint kernel patch: - 4ff16c25e2cc48cbe6956e356c38a25ac063a64d - task_work_add kernel patches: - e73f8959af0439d114847eab5a8a5ce48f1217c4 - 4d1d61a6b203d957777d73fcebf19d90b038b5b2 - 413cd3d9abeaef590e5ce00564f7a443165db238 - dea649b8ac1861107c5d91e1a71121434fc64193 - f23ca335462e3c84f13270b9e65f83936068ec2c * What's new in version 1.7, 2012-02-01 - Map inserting and deleting is now significantly faster due to improved hashing and larger hash tables. The hashes are also now randomized to provide better protection against deliberate collision attacks. - Formatted printing is faster by compiling the formatting directives to C code rather than interpreting at run time. - Systemtap loads extra command line options from $SYSTEMTAP_DIR/rc ($HOME/.systemtap/rc by default) before the normal argc/argv. This may be useful to activate site options such as --use-server or --download-debuginfo or --modinfo. - The stap-server has seen many improvements, and is no longer considered experimental. - The stap-server service (initscript) now supports four new options: -D MACRO[=VALUE] --log LOGFILE --port PORT-NUMBER --SSL CERT-DATABASE These allow the specification of macro definitions to be passed to stap by the server, the location of the log file, network port number and NSS certificate database location respectively. These options are also supported within individual server configuration files. See stap-server and initscript/README.stap-server for details. The stap-server is no longer activated by default. - process("PATH").[library("PATH")].function("NAME").exported probes are now supported to filter function() to only exported instances. - The translator supports a new --suppress-handler-errors option, which causes most runtime errors to be turned into quiet skipped probes. This also disables the MAXERRORS and MAXSKIPPED limits. - Translator warnings have been standardized and controlled by the -w / -W flags. - The translator supports a new --modinfo NAME=VALUE option to emit additional MODULE_INFO(n,v) macros into the generated code. - There is no more fixed maximum number of VMA pages that will be tracked at runtime. This reduces memory use for those scripts that don't need any, or only limited target process VMA tracking and allows easier system wide probes inspecting shared library variables and/or user backtraces. stap will now silently ignore -DTASK_FINDER_VMA_ENTRY_ITEMS. - The tapset functions remote_id() and remote_uri() identify the member of a swarm of "stap --remote FOO --remote BAR baz.stp" concurrent executions. - Systemtap now supports a new privilege level and group, "stapsys", which is equivalent to the privilege afforded by membership in the group "stapdev", except that guru mode (-g) functionality may not be used. To support this, a new option, --privilege=[stapusr|stapsys|stapdev] has been added. --privilege=stapusr is equivalent to specifying the existing --unprivileged option. --privilege=stapdev is the default. See man stap(1) for details. - Scripts that use kernel.trace("...") probes compile much faster. - The systemtap module cache is cleaned less frequently, governed by the number of seconds in the $SYSTEMTAP_DIR/cache/cache_clean_interval_s file. - SDT can now define up to 12 arguments in a probe point. - Parse errors no longer generate a cascade of false errors. Instead, a parse error skips the rest of the current probe or function, and resumes at the next one. This should generate fewer and better messages. - Global array wrapping is now supported for both associative and statistics typed arrays using the '%' character to signify a wrapped array. For example, 'global foo%[100]' would allow the array 'foo' to be wrapped if more than 100 elements are inserted. - process("PATH").library("PATH").plt("NAME") probes are now supported. Wildcards are supported in the plt-name part, to refer to any function in the program linkage table which matches the glob pattern and the rest of the probe point. - A new option, --dump-probe-types, will dump a list of supported probe types. If --unprivileged is also specified, the list will be limited to probe types which are available to unprivileged users. - Systemtap can now automatically download the required debuginfo using abrt. The --download-debuginfo[=OPTION] can be used to control this feature. Possible values are: 'yes', 'no', 'ask', and a positive number representing the timeout desired. The default behavior is to not automatically download the debuginfo. - The translator has better support for probing C++ applications by better undertanding of compilation units, nested types, templates, as used in probe point and @cast constructs. - On 2.6.29+ kernels, systemtap can now probe kernel modules that arrive and/or depart during the run-time of a session. This allows probing of device driver initialization functions, which had formerly been blacklisted. - New tapset functions for cpu_clock and local_clock access were added. - There is some limited preliminary support for user-space probing against kernels such as linux-next, which have no utrace but do have the newer inode-uprobes work by Srikar Dronamraju and colleagues. - The following probe types are deprecated in release 1.7 and will be removed in release 1.8: kernel.function(number).inline module(string).function(number).inline process.function(number).inline process.library(string).function(number).inline process(string).function(number).inline process(string).library(string).function(number).inline - The systemtap-grapher is deprecated in release 1.7 and will be removed in release 1.8. - The task_backtrace() tapset function was deprecated in 1.6 and has been removed in 1.7. - MAXBACKTRACE did work in earlier releases, but has now been documented in the stap 1 manual page. - New tapset function probe_type(). Returns a short string describing the low level probe handler type for the current probe point. - Both unwind and symbol data is now only collected and emitted for scripts actually using backtracing or function/data symbols. Tapset functions are marked with /* pragma:symbols */ or /* pragma:unwind */ to indicate they need the specific data. - Kernel backtraces can now be generated for non-pt_regs probe context if the kernel support dump_trace(). This enables backtraces from certain timer probes and tracepoints. - ubacktrace() should now also work for some kernel probes on x86 which can use the dwarf unwinder to recover the user registers to provide more accurate user backtraces. - For s390x the systemtap runtime now properly splits kernel and user addresses (which are in separate address spaces on that architecture) which enable user space introspection. - ppc and s390x now supports user backtraces through the DWARF unwinder. - ppc now handles function descriptors as symbol names correctly. - arm support kernel backtraces through the DWARF unwinder. - arm now have a uprobes port which enables user probes. This still requires some kernel patches (user_regsets and tracehook support for arm). - Starting in release 1.7, these old variables will be deprecated: - The 'pid' variable in the 'kprocess.release' probe has been deprecated in favor of the new 'released_pid' variable. - The 'args' variable in the '_sunrpc.clnt.create_client.rpc_new_client_inline' probe has been deprecated in favor of the new internal-only '__args' variable. - Experimental support for recent kernels without utrace has been added for the following probe types: process(PID).begin process("PATH").begin process.begin process(PID).thread.begin process("PATH").thread.begin process.thread.begin process(PID).end process("PATH").end process.end process(PID).thread.end process("PATH").thread.end process.thread.end process(PID).syscall process("PATH").syscall process.syscall process(PID).syscall.return process("PATH").syscall.return process.syscall.return - staprun disables kprobe-optimizations in recent kernels, as problems were found. (PR13193) * What's new in version 1.6, 2011-07-25 - Security fixes for CVE-2011-2503: read instead of mmap to load modules, CVE-2011-2502: Don't allow path-based auth for uprobes - The systemtap compile-server no longer uses the -k option when calling the translator (stap). As a result, the server will now take advantage of the module cache when compiling the same script more than once. You may observe an improvement in the performance of the server in this situation. - The systemtap compile-server and client now each check the version of the other, allowing both to adapt when communicating with a down-level counterpart. As a result, all version of the client can communicate with all versions of the server and vice-versa. Client will prefer newer servers when selecting a server automatically. - SystemTap has improved support for the ARM architecture. The kread() and kwrite() operations for ARM were corrected allowing many of the tapsets probes and function to work properly on the ARM architecture. - Staprun can now rename the module to a unique name with the '-R' option before inserting it. Systemtap itself will also call staprun with '-R' by default. This allows the same module to be inserted more than once, without conflicting duplicate names. - Systemtap error messages now provide feedback when staprun or any other process fails to launch. This also specifically covers when the user doesn't have the proper permissions to launch staprun. - Systemtap will now map - to _ in module names. Previously, stap -L 'module("i2c-core").function("*")' would be empty. It now returns a list had stap -L 'module("i2c_core").function("*") been specified. - Systemtap now fills in missing process names to probe points, to avoid having to name them twice twice: % stap -e 'probe process("a.out").function("*") {}' -c 'a.out ...' Now the probed process name is inferred from the -c CMD argument. % stap -e 'probe process.function("*") {}' -c 'a.out ...' - stap -L 'process("PATH").syscall' will now list context variables - Depends on elfutils 0.142+. - Deprecated task_backtrace:string (task:long). This function will go away after 1.6. Please run your scripts with stap --check-version. * What's new in version 1.5, 2011-05-23 - Security fixes for CVE-2011-1781, CVE-2011-1769: correct DW_OP_{mod,div} division-by-zero bug - The compile server and its related tools (stap-gen-ert, stap-authorize-cert, stap-sign-module) have been re-implemented in C++. Previously, these components were a mix of bash scripts and C code. These changes should be transparent to the end user with the exception of NSS certificate database password prompting (see below). The old implementation would prompt more than once for the same password in some situations. - eventcount.stp now allows for event counting in the format of 'stap eventcount.stp process.end syscall.* ...', and also reports corresponding event tid's. - Systemtap checks that the build-id of the module being probed matches the build-id saved in the systemtap module. Invoking systemtap with -DSTP_NO_BUILDID_CHECK will bypass this build-id runtime verification. See man ld(1) for info on --build-id. - stapio will now report if a child process has an abnormal exit along with the associated status or signal. - Compiler optimization may sometimes result in systemtap not being able to access a user-space probe argument. Compiling the application with -DSTAP_SDT_ARG_CONSTRAINT=nr will force the argument to be an immediate or register value which should enable systemtap to access the argument. - GNU Gettext has now been intergrated with systemtap. Our translation page can be found at http://www.transifex.net/projects/p/systemtap/ . "make update-po" will generate the necessary files to use translated messages. Please refer to the po/README file for more info and please consider contributing to this I18N effort! - The new addr() function returns the probe's instruction pointer. - process("...").library("...") probes are now supported. Wildcards are supported in the library-name part, to refer to any shared library that is required by process-name, which matches the glob pattern and the rest of the probe point. - The "--remote USER@HOST" functionality can now be specified multiple times to fan out on multiple targets. If the targets have distinct kernel and architecture configurations, stap will automatically build the script appropriately for each one. This option is also no longer considered experimental. - The NSS certificate database generated for use by the compile server is now generated with no password. Previously, a random password was generated and used to access the database. This change should be transparent to most users. However, if you are prompted for a password when using systemtap, then running $libexecdir/stap-gen-cert should correct the problem. - The timestamp tapset includes jiffies() and HZ() for lightweight approximate timekeeping. - A powerful new command line option --version has been added. - process.mark now supports $$parms for reading probe parameters. - A new command line option, --use-server-on-error[=yes|no] is available for stap. It instructs stap to retry compilation of a script using a compile server if it fails on the local host. The default setting is 'no'. - The following deprecated tools have been removed: stap-client stap-authorize-server-cert stap-authorize-signing-cert stap-find-or-start-server stap-find-servers Use the --use-server, --trust-server and --list-servers options of stap instead. * What's new in version 1.4, 2011-01-17 - Security fixes for CVE-2010-4170, CVE-2010-4171: staprun module loading/unloading - A new /* myproc-unprivileged */ marker is now available for embedded C code and and expressions. Like the /* unprivileged */ marker, it makes the code or expression available for use in unprivileged mode (see --unprivileged). However, it also automatically adds a call to assert_is_myproc() to the code or expression, thus, making it available to the unprivileged user only if the target of the current probe is within the user's own process. - The experimental "--remote USER@HOST" option will run pass 5 on a given ssh host, after building locally (or with --use-server) for that target. - Warning messages from the script may now be suppressed with the stap and/or staprun -w option. By default, duplicate warning messages are suppressed (up to a certain limit). With stap --vp 00002 and above, the duplicate elimination is defeated. - The print_ubacktrace and usym* functions attempt to print the full path of the user-space binaries' paths, instead of just the basename. The maximum saved path length is set by -DTASK_FINDER_VMA_ENTRY_PATHLEN, default 64. Warning messages are produced if unwinding fails due to a missing 'stap -d MODULE' option, providing preloaded unwind data. - The new tz_ctime() tapset function prints times in the local time zone. - More kernel tracepoints are accessible to the kernel.trace("...") mechanism, if kernel source trees or debuginfo are available. These formerly "hidden" tracepoints are those that are declared somewhere other than the usual include/linux/trace/ headers, such as xfs and kvm. - debuginfo-based process("...").function/.statement/.mark probes support wildcards in the process-name part, to refer to any executable files that match the glob pattern and the rest of the probe point. - The -t option now displays information per probe-point rather than a summary for each probe. It also now shows the derivation chain for each probe-point. - A rewrite of the sys/sdt.h header file provides zero-cost startup (few or no ELF relocations) for the debuginfo-less near-zero-cost runtime probes. Binaries compiled with earlier sdt.h versions remain supported. The stap -L (listing) option now lists parameters for sys/sdt.h markers. - The implementation of the integrated compile-server client has been extended. o --use-server now accepts an argument representing a particular server and may be specified more than once. o --list-servers now accepts an expanded range of arguments. o a new --trust-servers option has been added to stap to replace several old certificate-management scripts. o The following tools are now deprecated and will be removed in release 1.5: stap-client stap-authorize-server-cert stap-authorize-signing-cert stap-find-or-start-server stap-find-servers See man stap(1) for complete details. - The compile-server now returns the uprobes.ko to the client when it is required by the script being compiled. The integrated compile-server client now makes it available to be loaded by staprun. The old (deprecated) stap-client does not do this. - process probes with scripts as the target are recognized by stap and the interpreter would be selected for probing. - Starting in release 1.5, these old variables/functions will be deprecated and will only be available when the '--compatible=1.4' flag is used: - In the 'syscall.add_key' probe, the 'description_auddr' variable has been deprecated in favor of the new 'description_uaddr' variable. - In the 'syscall.fgetxattr', 'syscall.fsetxattr', 'syscall.getxattr', 'syscall.lgetxattr', and 'syscall.lremovexattr' probes, the 'name2' variable has been deprecated in favor of the new 'name_str' variable. - In the 'nd_syscall.accept' probe the 'flag_str' variable has been deprecated in favor of the new 'flags_str' variable. - In the 'nd_syscall.dup' probe the 'old_fd' variable has been deprecated in favor of the new 'oldfd' variable. - In the 'nd_syscall.fgetxattr', 'nd_syscall.fremovexattr', 'nd_syscall.fsetxattr', 'nd_syscall.getxattr', and 'nd_syscall.lremovexattr' probes, the 'name2' variable has been deprecated in favor of the new 'name_str' variable. - The tapset alias 'nd_syscall.compat_pselect7a' was misnamed. It should have been 'nd_syscall.compat_pselect7' (without the trailing 'a'). - The tapset function 'cpuid' is deprecated in favor of the better known 'cpu'. - In the i386 'syscall.sigaltstack' probe, the 'ussp' variable has been deprecated in favor of the new 'uss_uaddr' variable. - In the ia64 'syscall.sigaltstack' probe, the 'ss_uaddr' and 'oss_uaddr' variables have been deprecated in favor of the new 'uss_uaddr' and 'uoss_uaddr' variables. - The powerpc tapset alias 'syscall.compat_sysctl' was deprecated and renamed 'syscall.sysctl32'. - In the x86_64 'syscall.sigaltstack' probe, the 'regs_uaddr' variable has been deprecated in favor of the new 'regs' variable. * What's new in version 1.3, 2010-07-21 - The uprobes kernel module now has about half the overhead when probing NOPs, which is particularly relevant for sdt.h markers. - New stap option -G VAR=VALUE allows overriding global variables by passing the settings to staprun as module options. - The tapset alias 'syscall.compat_pselect7a' was misnamed. It should have been 'syscall.compat_pselect7' (without the trailing 'a'). Starting in release 1.4, the old name will be deprecated and will only be available when the '--compatible=1.3' flag is used. - A new procfs parameter .umask(UMASK) which provides modification of file permissions using the proper umask value. Default file permissions for a read probe are 0400, 0200 for a write probe, and 0600 for a file with a read and write probe. - It is now possible in some situations to use print_ubacktrace() to get a user space stack trace from a kernel probe point. e.g. for user backtraces when there is a pagefault: $ stap -d /bin/sort --ldd -e 'probe vm.pagefault { if (pid() == target()) { printf("pagefault @0x%x\n", address); print_ubacktrace(); } }' -c /bin/sort [...] pagefault @0x7fea0595fa70 0x000000384f07f958 : __GI_strcmp+0x12b8/0x1440 [libc-2.12.so] 0x000000384f02824e : __gconv_lookup_cache+0xee/0x5a0 [libc-2.12.so] 0x000000384f021092 : __gconv_find_transform+0x92/0x2cf [libc-2.12.so] 0x000000384f094896 : __wcsmbs_load_conv+0x106/0x2b0 [libc-2.12.so] 0x000000384f08bd90 : mbrtowc+0x1b0/0x1c0 [libc-2.12.so] 0x0000000000404199 : ismbblank+0x39/0x90 [sort] 0x0000000000404a4f : inittables_mb+0xef/0x290 [sort] 0x0000000000406934 : main+0x174/0x2510 [sort] 0x000000384f01ec5d : __libc_start_main+0xfd/0x1d0 [libc-2.12.so] 0x0000000000402509 : _start+0x29/0x2c [sort] [...] - New tapset functions to get a string representation of a stack trace: sprint_[u]backtrace() and sprint_[u]stack(). - New tapset function to get the module (shared library) name for a user space address umodname:string(long). The module name will now also be in the output of usymdata() and in backtrace addresses even when they were not given with -d at the command line. - Kernel backtraces are now much faster (replaced a linear search with a binary search). - A new integrated compile-server client is now available as part of stap. o 'stap --use-server ...' is equivalent to 'stap-client ...' o 'stap --list-servers' is equivalent to 'stap-find-servers' o 'stap --list-servers=online' is equivalent to 'stap-find-servers --all' o stap-client and its related tools will soon be deprecated. o the nss-devel and avahi-devel packages are required for building stap with the integrated client (checked during configuration). o nss and avahi are required to run the integrated client. - A new operator @entry is available for automatically saving an expression at entry time for use in a .return probe. probe foo.return { println(get_cycles() - @entry(get_cycles())) } - Probe $target variables and @cast() can now use a suffix to print complex data types as strings. Use a single '$' for a shallow view, or '$$' for a deeper view that includes nested types. For example, with fs_struct: $fs$ : "{.users=%i, .lock={...}, .umask=%i, .in_exec=%i, .root={...}, .pwd={...}}" $fs$$ : "{.users=%i, .lock={.raw_lock={.lock=%u}}, .umask=%i, .in_exec=%i, .root={.mnt=%p, .dentry=%p}, .pwd={.mnt=%p, .dentry=%p}}" - The user-space markers no longer default to an implicit MARKER_NAME_ENABLED() semaphore check for each marker. To check for enabled markers use a .d declaration file, then: if (MARKER_NAME_ENABLED()) MARKER_NAME() - Hyphenated marker names such as process(...).mark("foo-bar") are now accepted in scripts. They are mapped to the double-underscore form ("foo__bar"). - More robust user-space markers support is included. For some platforms (x86*, ppc*), this can let systemtap probe the markers without debuginfo. This implementation also supports preserving the "provider" name associated with a marker: probe process("foo").provider("bar").mark("baz") to match STAP_PROBE(bar, baz <...>) (Compile with -DSTAP_SDT_V1 to revert to the previous implementation. Systemtap supports pre-existing or new binaries using them.) - Embedded-C may be used within expressions as values, when in guru mode: num = %{ LINUX_VERSION_CODE %} // int64_t name = %{ /* string */ THIS_MODULE->name %} // const char* printf ("%s %x\n", name, num) The usual /* pure */, /* unprivileged */, and /* guru */ markers may be used as with embedded-C functions. - By default the systemtap-runtime RPM builds now include a shared library, staplog.so, that allows crash to extract systemtap data from a vmcore image. - Iterating with "foreach" can now explicitly save the value for the loop. foreach(v = [i,j] in array) printf("array[%d,%s] = %d\n", i, j, v /* array[i,j] */) - The new "--ldd" option automatically adds any additional shared libraries needed by probed or -d-listed userspace binaries to the -d list, to enable symbolic backtracing through them. Similarly, the new "--all-modules" option automatically adds any currently loaded kernel modules (listed in /proc/modules) to the -d list. - A new family of set_kernel_* functions make it easier for gurus to write new values at arbitrary memory addresses. - Probe wildcards can now use '**' to cross the '.' separator. $ stap -l 'sys**open' syscall.mq_open syscall.open - Backward compatibility flags (--compatible=VERSION, and matching script preprocessing predicate %( systemtap_v CMP "version" %) and a deprecation policy are being introduced, in case future tapset/language changes break valid scripts. * What's new in version 1.2, 2010-03-22 - Prototype support for "perf events", where the kernel supports the 2.6.33 in-kernel API. Probe points may refer to low-level perf_event_attr type/config numbers, or to a number of aliases defined in the new perf.stp tapset: probe perf.sw.cpu_clock, perf.type(0).config(4) { } - Type-casting can now use multiple headers to resolve codependencies. @cast(task, "task_struct", "kernel")->fs->umask - Tapset-related man pages have been renamed. 'man -k 3stap' should show the installed list, which due to prefixing should no longer collide over ordinary system functions. - User space marker arguments no longer use volatile if the version of gcc, which must be at least 4.5.0, supports richer DWARF debuginfo. Use cflags -DSTAP_SDT_VOLATILE=volatile or -DSTAP_SDT_VOLATILE= when building the sys/sdt.h application to override this one way or another. - A new construct for error handling is available. It is similar to c++ exception catching, using try and catch as new keywords. Within a handler or function, the following is valid and may be nested: try { /* arbitrary statements */ } catch (er) { /* e.g. println("caught error ", er) */ } - A new command line flag '-W' forces systemtap to abort translation of a script if any warnings are produced. It is similar to gcc's -Werror. (If '-w' is also supplied to suppress warnings, it wins.) - A new predicate @defined is available for testing whether a particular $variable/expression is resolvable at translate time: probe foo { if (@defined($bar)) log ("$bar is available here") } - Adjacent string literals are glued together, making this construct valid: probe process("/usr" @1 "/bin").function("*") { ... } - In order to limit potential impact from future security problems, the stap-server process does not permit its being launched as root. - On recent kernels, for some architectures/configurations, hardware breakpoint probes are supported. The probe point syntax is: probe kernel.data(ADDRESS).write probe kernel.data(ADDRESS).length(LEN).write probe kernel.data("SYMBOL_NAME").write * What's new in version 1.1, 2010-01-15 - New tracepoint based tapset for memory subsystem. - The loading of signed modules by staprun is no longer allowed for ordinary, unprivileged users. This means that only root, members of the group 'stapdev' and members of the group 'stapusr' can load systemtap modules using staprun, stap or stap-client. The minimum privilege required to run arbitrary --unprivileged scripts is now 'stapusr' membership. - The stap-server initscript is available. This initscript allows you to start systemtap compile servers as a system service and to manage these servers as a group or individually. The stap-server initscript is installed by the systemtap-server rpm. The build directory for the uprobes module (/usr/share/systemtap/runtime/uprobes) is made writable by the 'stap-server' group. All of the files generated when building the uprobes module, including the digital signature, are also writable by members of stap-server. See initscript/README.stap-server for details. - Some of the compile server client, server and certificate management tools have been moved from $bindir to $libexecdir/systemtap. You should use the new stap-server script or the stap-server initscript for server management where possible. The stap-server script provides the same functionality as the stap-server initscript except that the servers are run by the invoking user by default as opposed to servers started by the stap-server initscript which are run by the user stap-server by default. See stap-server(8) for more information. You may continue to use these tools by adding $libexecdir/systemtap to your path. You would need to do this, for example, if you are not root, you want to start a compile server and you are not running systemtap from a private installation. In this case you still need to use stap-start-server. - Any diagnostic output line that starts with "ERROR", as in error("foo"), will promote a "Pass 5: run failed", and the return code is 1. - Systemtap now warns about global variables being referenced from other script files. This aims to protect against unintended local-vs-global namespace collisions such as: % cat some_tapset.stp probe baz.one = bar { foo = $foo; bar = $bar } % cat end_user_script.stp global foo # intended to be private variable probe timer.s(1) { foo ++ } probe baz.* { println(foo, pp()) } % stap end_user_script.stp WARNING: cross-file global variable reference to foo from some_tapset.stp - Preprocessor conditional for kernel configuration testing: %( CONFIG_foo == "y" %? ... %) - ftrace(msg:string) tapset function to send strings to the system-wide ftrace ring-buffer (if any). - Better support for richer DWARF debuginfo output from GCC 4.5 (variable tracking assignments). Kernel modules are now always resolved against all their dependencies to find any info referring to missing symbols. DW_AT_const_value is now supported when no DW_AT_location is available. * What's new in verson 1.0, 2009-09-22 - process().mark() probes now use an enabling semaphore to reduce the computation overhead of dormant probes. - The function spec for dwarf probes now supports C++ scopes, so you can limit the probes to specific namespaces or classes. Multiple scopes can be specified, and they will be matched progressively outward. probe process("foo").function("std::vector<*>::*") { } probe process("foo").function("::global_function") { } - It is now possible to cross-compile systemtap scripts for foreign architectures, using the new '-a ARCH' and '-B OPT=VALUE' flags. For example, put arm-linux-gcc etc. into your $PATH, and point systemtap at the target kernel build tree with: stap -a arm -B CROSS_COMPILE=arm-linux- -r /build/tree [...] The -B option is passed to kbuild make. -r identifies the already configured/built kernel tree and -a its architecture (kbuild ARCH=...). Systemtap will infer -p4. - Cross compilation using the systemtap client and server - stap-start-server now accepts the -r, -R, -I, -B and -a options in order to start a cross compiling server. The server will correctly advertise itself with respect to the kernel release and architecture that it compiles for. - When specified on stap-client, the -r and -a options will be considered when searching for a suitable server. - When using the systemtap client and server udp port 5353 must be open in your firewall in order for the client to find servers using avahi-browse. Also the systemtap server will choose a random port in the range 1024-63999 for accepting ssl connections. - Support for unprivileged users: *********************************************************************** * WARNING!!!!!!!!!! * * This feature is EXPERIMENTAL at this time and should be used with * * care. This feature allows systemtap kernel modules to be loaded by * * unprivileged users. The user interface and restrictions will change * * as this feature evolves. * *********************************************************************** - Systemtap modules generated from scripts which use a restricted subset of the features available may be loaded by staprun for unprivileged users. Previously, staprun would load modules only for root or for members of the groups stapdev and stapusr. - Using the --unprivileged option on stap enables translation-time checking for use by unprivileged users (see restrictions below). - All modules deemed suitable for use by unprivileged users will be signed by the systemtap server when --unprivileged is specified on stap-client. See module signing in release 0.9.8 and stap-server in release 0.9 below. - Modules signed by trusted signers (servers) and verified by staprun will be loaded by staprun regardless of the user's privilege level. - The system administrator asserts the trustworthiness of a signer (server) by running stap-authorize-signing-cert as root, where the can be found in ~/.systemtap/ssl/server/stap.cert for servers started by ordinary users and in $sysconfdir/systemtap/ssl/server/stap.cert for servers started by root. - Restrictions are intentionally strict at this time and may be relaxed in the future: - probe points are restricted to: begin, begin(n), end, end(n), error, error(n), never, timer.{jiffies,s,sec,ms,msec,us,usec,ns,nsec}(n)*, timer.hz(n), process.* (for processes owned by the user). - use of embedded C code is not allowed. - use of tapset functions is restricted. - some tapset functions may not be used at all. A message will be generated at module compilation time. - some actions by allowed tapset functions may only be performed in the context of the user's own process. A runtime fault will occur in these situations, for example, direct memory access. - The is_myproc() tapset function has been provided so that tapset writers for unprivileged users can check that the context is of the users own process before attempting these actions. - accessing the kernel memory space is not allowed. - The following command line options may not be used by stap-client -g, -I, -D, -R, -B - The following environment variables are ignored by stap-client: SYSTEMTAP_RUNTIME, SYSTEMTAP_TAPSET, SYSTEMTAP_DEBUGINFO_PATH - nss and nss-tools are required to use this feature. - Support output file switching by SIGUSR2. Users can command running stapio to switch output file by sending SIGUSR2. - Memory consumption for scripts involving many uprobes has been dramatically reduced. - The preprocessor now supports || and && in the conditions. e.g. %( arch == "x86_64" || arch == "ia64" %: ... %) - The systemtap notion of "architecture" now matches the kernel's, rather than that of "uname -m". This means that 32-bit i386 family are all known as "i386" rather than "i386" or "i686"; "ppc64" as "powerpc"; "s390x" as "s390", and so on. This is consistent between the new "-a ARCH" flag and the script-level %( arch ... %) conditional. - It is now possible to define multiple probe aliases with the same name. A probe will expand to all matching aliases. probe foo = bar { } probe foo = baz { } probe foo { } # expands twice, once to bar and once to baz - A new experimental transport mechanism, using ftrace's ring_buffer, has been added. This may become the default transport mechanism in future versions of systemtap. To test this new transport mechanism, define 'STP_USE_RING_BUFFER'. - Support for recognizing DW_OP_{stack,implicit}_value DWARF expressions as emitted by GCC 4.5. * What's new in version 0.9.9, 2009-08-04 - Systemwide kernel .function.return (kretprobe) maxactive defaults may be overridden with the -DKRETACTIVE=nnn parameter. - Translation pass 2 is significantly faster by avoiding unnecessary searching through a kernel build/module directory tree. - When compiled against elfutils 0.142 systemtap now handles the new DW_OP_call_frame_CFA generated by by GCC. - uprobes and ustack() are more robust when used on applications that depend on prelinked/separate debuginfo shared libraries. - User space PROBE marks are not always found with or without separate debuginfo. The .probes section itself is now always put in the main elf file and marked as allocated. When building pic code the section is marked writable. The selinux memory check problems seen with programs using STAP_PROBES is fixed. - statement() probes can now override "address not at start of statement" errors in guru mode. They also provide alternative addresses to use in non-guru mode. - The stapgraph application can generate graphs of data and events emitted by systemtap scripts in real time. Run "stapgraph testsuite/systemtap.examples/general/grapher.stp" for an example of graphing the system load average and keyboard events. - Dwarf probes now show parameters and local variables in the verbose listing mode (-L). - Symbol aliases are now resolved to their canonical dwarf names. For example, probing "malloc" in libc resolves to "__libc_malloc". - The syntax for dereferencing $target variables and @cast() gained new capabilities: - Array indexes can now be arbitrary numeric expressions. - Array subscripts are now supported on pointer types. - An '&' operator before a @cast or $target returns the address of the final component, especially useful for nested structures. - For reading all probe variables, kernel.mark now supports $$vars and $$parms, and process.syscall now supports $$vars. - The SNMP tapset provides probes and functions for many network statistics. See stapprobes.snmp(3stap) for more details. - The dentry tapset provides functions to map kernel VFS directory entries to file or full path names: d_path(), d_name() and reverse_path_walk(). - SystemTap now has userspace markers in its own binaries, and the stap tapset provides the available probepoints and local variables. - Miscellaneous new tapset functions: - pgrp() returns the process group ID of the current process - str_replace() performs string replacement * What's new in version 0.9.8, 2009-06-11 - Miscellaneous new tapset functions: - sid() returns the session ID of the current process - stringat() indexes a single character from a string. - Using %M in print formats for hex dumps can now print entire buffers, instead of just small numbers. - Dwarfless syscalls: The nd_syscalls tapset is now available to probe system calls without requiring kernel debugging information. All of the same probepoints in the normal syscalls tapset are available with an "nd_" prefix, e.g. syscall.open becomes nd_syscall.open. Most syscall arguments are also available by name in nd_syscalls. - Module signing: If the appropriate nss libraries are available on your system, stap-server will sign each compiled module using a self-generated certificate. This is the first step toward extending authority to load certain modules to unprivileged users. For now, if the system administrator adds a certificate to a database of trusted signers (stap-authorize-signing-cert), modules signed using that certificate will be verified by staprun against tampering. Otherwise, you should notice no difference in the operation of stap or staprun. * What's new in version 0.9.7, 2009-04-23 - @cast can now determine its type information using an explicit header specification. For example: @cast(tv, "timeval", "")->tv_sec @cast(task, "task_struct", "kernel")->tgid - The overlapping process.* tapsets are now separated. Those probe points documented in stapprobes(3stap) remain the same. Those that were formerly in stapprobes.process(3stap) have been renamed to kprocess, to reflect their kernel perspective on processes. - The --skip-badvars option now also suppresses run-time error messages that would otherwise result from erroneous memory accesses. Such accesses can originate from $context expressions fueled by erroneous debug data, or by kernel_{long,string,...}() tapset calls. - New probes kprobe.function(FUNCTION) and kprobe.function(FUNCTION).return for dwarfless probing. These postpone function address resolution to run-time and use the kprobe symbol-resolution mechanism. Probing of absolute statements can be done using the kprobe.statement(ADDRESS).absolute construct. - EXPERIMENTAL support for user process unwinding. A new collection of tapset functions have been added to handle user space backtraces from probe points that support them (currently process and timer probes - for timer probes test whether or not in user space first with the already existing user_mode() function). The new tapset functions are: uaddr - User space address of current running task. usymname - Return the symbol of an address in the current task. usymdata - Return the symbol and module offset of an address. print_ustack - Print out stack for the current task from string. print_ubacktrace - Print stack back trace for current task. ubacktrace - Hex backtrace of current task stack. Please read http://sourceware.org/ml/systemtap/2009-q2/msg00364.html on the current restrictions and possible changes in the future and give feedback if you want to influence future developments. * What's new in version 0.9.5, 2009-03-27 - New probes process().insn and process().insn.block that allows inspection of the process after each instruction or block of instructions executed. So to count the total number of instructions a process executes during a run do something like: $ stap -e 'global steps; probe process("/bin/ls").insn {steps++} probe end {printf("Total instructions: %d\n", steps);}' \ -c /bin/ls This feature can slow down execution of a process somewhat. - Systemtap probes and function man pages extracted from the tapsets are now available under 3stap. To show the page for probe vm.pagefault or the stap function pexecname do: $ man 3stap vm.pagefault $ man 3stap pexecname - Kernel tracepoints are now supported for probing predefined kernel events without any debuginfo. Tracepoints incur less overhead than kprobes, and context parameters are available with full type information. Any kernel 2.6.28 and later should have defined tracepoints. Try the following to see what's available: $ stap -L 'kernel.trace("*")' - Typecasting with @cast now supports modules search paths, which is useful in case there are multiple places where the type definition may be found. For example: @cast(sdev, "scsi_device", "kernel:scsi_mod")->sdev_state - On-file flight recorder is supported. It allows stap to record huge trace log on the disk and to run in background. Passing -F option with -o option runs stap in background mode. In this mode, staprun is detached from console, and stap itself shows staprun's pid and exits. Specifying the max size and the max number of log files are also available by passing -S option. This option has one or two arguments seperated by a comma. The first argument is the max size of a log file in MB. If the size of a log file exceeds it, stap switches to the next log file automatically. The second is how many files are kept on the disk. If the number of log files exceeds it, the oldest log file is removed automatically. The second argument can be omitted. For example, this will record output on log files each of them is smaller than 1024MB and keep last 3 logs, in background. % stap -F -o /tmp/staplog -S 1024,3 script.stp - In guru mode (-g), the kernel probing blacklist is disabled, leaving only a subset - the kernel's own internal kprobe blacklist - to attempt to filter out areas unsafe to probe. The differences may be enough to probe more interrupt handlers. - Variables unavailable in current context may be skipped by setting a session level flag with command line option --skip-badvars now available. This replaces any dwarf $variable expressions that could not be resolved with literal numeric zeros, along with a warning message. - Both kernel markers and kernel tracepoint support argument listing through stap -L 'kernel.mark("*")' or stap -L 'kernel.trace("*")' - Users can use -DINTERRUPTIBLE=0 to prevent interrupt reentrancy in their script, at the cost of a bit more overhead to toggle the interrupt mask. - Added reentrancy debugging. If stap is run with the arguments "-t -DDEBUG_REENTRANCY", additional warnings will be printed for every reentrancy event, including the probe points of the resident and interloper probes. - Default to --disable-pie for configure. Use --enable-pie to turn it back on. - Improved sdt.h compatibility and test suite for static dtrace compatible user space markers. - Some architectures now use syscall wrappers (HAVE_SYSCALL_WRAPPERS). The syscall tapset has been enhanced to take care of the syscall wrappers in this release. - Security fix for CVE-2009-0784: stapusr module-path checking race. * What's new in version 0.9, 2009-02-19 - Typecasting is now supported using the @cast operator. A script can define a pointer type for a "long" value, and then access type members using the same syntax as with $target variables. For example, this will retrieve the parent pid from a kernel task_struct: @cast(pointer, "task_struct", "kernel")->parent->pid - process().mark() probes are now possible to trace static user space markers put in programs with the STAP_PROBE macro using the new sys/sdt.h include file. This also provides dtrace compatible markers through DTRACE_PROBE and an associated python 'dtrace' script that can be used in builds based on dtrace that need dtrace -h or -G functionality. - For those that really want to run stap from the build tree there is now the 'run-stap' script in the top-level build directory that sets up the SYSTEMTAP_TAPSET, SYSTEMTAP_RUNTIME, SYSTEMTAP_STAPRUN, and SYSTEMTAP_STAPIO environment variables (installing systemtap, in a local prefix, is still recommended for common use). - Systemtap now comes with a new Beginners Guide that walks the user through their first steps setting up stap, understanding how it all works, introduces some useful scripts and describes some common pitfalls. It isn't created by default since it needs a Publican setup, but full build instructions can be found in the wiki: http://sourceware.org/systemtap/wiki/PublicanQuikHowto An online version can be found at: http://sourceware.org/systemtap/SystemTap_Beginners_Guide.pdf - Standard tapsets included with Systemtap were modified to include extractable documentation information based on the kernel-doc infrastructure. When configured --enabled-docs a HTML and PDF version of the Tapset Reference Manual is produced explaining probes defined in each tapset. - The systemtap client and compile server are now available. These allow you to compile a systemtap module on a host other than the one which it will be run, providing the client and server are compatible. Other than using a server for passes 1 through 4, the client behaves like the 'stap' front end itself. This means, among other things, that the client will automatically load the resulting module on the local host unless -p[1234] was specified. See stap-server(8) for more details. The client/server now use SSL for network connection security and for signing. The systemtap client and server are prototypes only. Interfaces, options and usage may change at any time. - function("func").label("label") probes are now supported to allow matching the label of a function. - Systemtap initscript is available. This initscript allows you to run systemtap scripts as system services (in flight recorder mode) and control those scripts individually. See README.systemtap for details. - The stap "-r DIR" option may be used to identify a hand-made kernel build directory. The tool determines the appropriate release string automatically from the directory. - Serious problems associated with user-space probing in shared libraries were corrected, making it now possible to experiment with probe shared libraries. Assuming dwarf debugging information is installed, use this twist on the normal syntax: probe process("/lib64/libc-2.8.so").function("....") { ... } This would probe all threads that call into that library. Running "stap -c CMD" or "stap -x PID" naturally restricts this to the target command+descendants only. $$vars etc. may be used. - For scripts that sometimes terminate with excessive "skipped" probes, rerunning the script with "-t" (timing) will print more details about the skippage reasons. - Symbol tables and unwind (backtracing) data support were formerly compiled in for all probed modules as identified by the script (kernel; module("name"); process("file")) plus those listed by the stap "-d BINARY" option. Now, this data is included only if the systemtap script uses tapset functions like probefunc() or backtrace() that require such information. This shrinks the probe modules considerably for the rest. - Per-pass verbosity control is available with the new "--vp {N}+" option. "stap --vp 040" adds 4 units of -v verbosity only to pass 2. This is useful for diagnosing errors from one pass without excessive verbosity from others. - Most probe handlers now run with interrupts enabled, for improved system responsiveness and less probing overhead. This may result in more skipped probes, for example if a reentrant probe handler is attempted from within an interrupt handler. It may also make the systemtap overload detection facility more likely to be triggered, as interrupt handlers' run time would be included in the self-assessed overhead of running probe handlers. * What's new in version 0.8, 2008-11-13 - Cache limiting is now available. If the compiled module cache size is over a limit specified in the $SYSTEMTAP_DIR/cache/cache_mb_limit file, some old cache entries will be unlinked. See man stap(1) for more. - Error and warning messages are now followed by source context displaying the erroneous line/s and a handy '^' in the following line pointing to the appropriate column. - A bug reporting tool "stap-report" is now available which will quickly retrieve much of the information requested here: http://sourceware.org/systemtap/wiki/HowToReportBugs - The translator can resolve members of anonymous structs / unions: given struct { int foo; struct { int bar; }; } *p; this now works: $p->bar - The stap "-F" flag activates "flight recorder" mode, which consists of translating the given script as usual, but implicitly launching it into the background with staprun's existing "-L" (launch) option. A user can later reattach to the module with "staprun -A MODULENAME". - Additional context variables are available on user-space syscall probes. - $argN ($arg1, $arg2, ... $arg6) in process(PATH_OR_PID).syscall gives you the argument of the system call. - $return in process(PATH_OR_PID).syscall.return gives you the return value of the system call. - Target process mode (stap -c CMD or -x PID) now implicitly restricts all "process.*" probes to the given child process. (It does not affect kernel.* or other probe types.) The CMD string is normally run directly, rather than via a /bin/sh -c subshell, since then utrace/uprobe probes receive a fairly "clean" event stream. If metacharacters like redirection operators were present in CMD, then "sh -c CMD" is still used, and utrace/uprobe probes will receive events from the shell. % stap -e 'probe process.syscall, process.end { printf("%s %d %s\n", execname(), pid(), pp())}'\ -c ls ls 2323 process.syscall ls 2323 process.syscall ls 2323 process.end - Probe listing mode is improved: "-L" lists available script-level variables % stap -L 'syscall.*open*' syscall.mq_open name:string name_uaddr:long filename:string mode:long u_attr_uaddr:long oflag:long argstr:string syscall.open name:string filename:string flags:long mode:long argstr:string syscall.openat name:string filename:string flags:long mode:long argstr:string - All user-space-related probes support $PATH-resolved executable names, so probe process("ls").syscall {} probe process("./a.out").syscall {} work now, instead of just probe process("/bin/ls").syscall {} probe process("/my/directory/a.out").syscall {} - Prototype symbolic user-space probing support: # stap -e 'probe process("ls").function("*").call { log (probefunc()." ".$$parms) }' \ -c 'ls -l' This requires: - debugging information for the named program - a version of utrace in the kernel that is compatible with the "uprobes" kernel module prototype. This includes RHEL5 and older Fedora, but not yet current lkml-track utrace; a "pass 4a"-time build failure means your system cannot use this yet. - Global variables which are written to but never read are now automatically displayed when the session does a shutdown. For example: global running_tasks probe timer.profile {running_tasks[pid(),tid()] = execname()} probe timer.ms(8000) {exit()} - A formatted string representation of the variables, parameters, or local variables at a probe point is now supported via the special $$vars, $$parms, and $$locals context variables, which expand to a string containing a list "var1=0xdead var2=0xbeef var3=?". (Here, var3 exists but is for some reason unavailable.) In return probes only, $$return expands to an empty string for a void function, or "return=0xf00". * What's new in version 0.7, 2008-07-15 - .statement("func@file:*") and .statement("func@file:M-N") probes are now supported to allow matching a range of lines in a function. This allows tracing the execution of a function. - Scripts relying on probe point wildcards like "syscall.*" that expand to distinct kprobes are processed significantly faster than before. - The vector of script command line arguments is available in a tapset-provided global array argv[]. It is indexed 1 ... argc, another global. This can substitute for of preprocessor directives @NNN that fail at parse time if there are not enough arguments. printf("argv: %s %s %s", argv[1], argv[2], argv[3]) - .statement("func@file+line") probes are now supported to allow a match relative to the entry of the function incremented by line number. This allows using the same systemtap script if the rest of the file.c source only changes slightly. - A probe listing mode is available. % stap -l vm.* vm.brk vm.mmap vm.munmap vm.oom_kill vm.pagefault vm.write_shared - More user-space probe types are added: probe process(PID).begin { } probe process("PATH").begin { } probe process(PID).thread.begin { } probe process("PATH").thread.begin { } probe process(PID).end { } probe process("PATH").end { } probe process(PID).thread.end { } probe process("PATH").thread.end { } probe process(PID).syscall { } probe process("PATH").syscall { } probe process(PID).syscall.return { } probe process("PATH").syscall.return { } - Globals now accept ; terminators global odds, evens; global little[10], big[5]; * What's new in version 0.6, 2007-12-15 - A copy of the systemtap tutorial and language reference guide are now included. - There is a new format specifier, %m, for the printf family of functions. It functions like %s, except that it does not stop when a nul ('\0') byte is encountered. The number of bytes output is determined by the precision specifier. The default precision is 1. For example: printf ("%m", "My String") // prints one character: M printf ("%.5", myString) // prints 5 bytes beginning at the start // of myString - The %b format specifier for the printf family of functions has been enhanced as follows: 1) When the width and precision are both unspecified, the default is %8.8b. 2) When only one of the width or precision is specified, the other defaults to the same value. For example, %4b == %.4b == %4.4b 3) Nul ('\0') bytes are used for field width padding. For example, printf ("%b", 0x1111deadbeef2222) // prints all eight bytes printf ("%4.2b", 0xdeadbeef) // prints \0\0\xbe\xef - Dynamic width and precision are now supported for all printf family format specifiers. For example: four = 4 two = 2 printf ("%*.*b", four, two, 0xdeadbbeef) // prints \0\0\xbe\xef printf ("%*d", four, two) // prints 2 - Preprocessor conditional expressions can now include wildcard style matches on kernel versions. %( kernel_vr != "*xen" %? foo %: bar %) - Prototype support for user-space probing is showing some progress. No symbolic notations are supported yet (so no probing by function names, file names, process names, and no access to $context variables), but at least it's something: probe process(PID).statement(ADDRESS).absolute { } This will set a uprobe on the given process-id and given virtual address. The proble handler runs in kernel-space as usual, and can generally use existing tapset functions. - Crash utility can retrieve systemtap's relay buffer from a kernel dump image by using staplog which is a crash extension module. To use this feature, type commands as below from crash(8)'s command line: crash> extend staplog.so crash> help systemtaplog Then, you can see more precise help message. - You can share a relay buffer amoung several scripts and merge outputs from several scripts by using "-DRELAY_HOST" and "-DRELAY_GUEST" options. For example: # run a host script % stap -ve 'probe begin{}' -o merged.out -DRELAY_HOST & # wait until starting the host. % stap -ve 'probe begin{print("hello ");exit()}' -DRELAY_GUEST % stap -ve 'probe begin{print("world\n");exit()}' -DRELAY_GUEST Then, you'll see "hello world" in merged.out. - You can add a conditional statement for each probe point or aliase, which is evaluated when the probe point is hit. If the condition is false, the whole probe body(including aliases) is skipped. For example: global switch = 0; probe syscall.* if (switch) { ... } probe procfs.write {switch = strtol($value,10)} /* enable/disable ctrl */ - Systemtap will warn you if your script contains unused variables or functions. This is helpful in case of misspelled variables. If it doth protest too much, turn it off with "stap -w ...". - You can add error-handling probes to a script, which are run if a script was stopped due to errors. In such a case, "end" probes are not run, but "error" ones are. probe error { println ("oops, errors encountered; here's a report anyway") foreach (coin in mint) { println (coin) } } - In a related twist, one may list probe points in order of preference, and mark any of them as "sufficient" beyond just "optional". Probe point sequence expansion stops if a sufficient-marked probe point has a hit. This is useful for probes on functions that may be in a module (CONFIG_FOO=m) or may have been compiled into the kernel (CONFIG_FOO=y), but we don't know which. Instead of probe module("sd").function("sd_init_command") ? , kernel.function("sd_init_command") ? { ... } which might match neither, now one can write this: probe module("sd").function("sd_init_command") ! , /* <-- note excl. mark */ kernel.function("sd_init_command") { ... } - New security model. To install a systemtap kernel module, a user must be one of the following: the root user; a member of the 'stapdev' group; or a member of the 'stapusr' group. Members of the stapusr group can only use modules located in the /lib/modules/VERSION/systemtap directory (where VERSION is the output of "uname -r"). - .statement("...@file:line") probes now apply heuristics to allow an approximate match for the line number. This works similarly to gdb, where a breakpoint placed on an empty source line is automatically moved to the next statement. A silly bug that made many $target variables inaccessible to .statement() probes was also fixed. - LKET has been retired. Please let us know on if you have been a user of the tapset/tools, so we can help you find another way. - New families of printing functions println() and printd() have been added. println() is like print() but adds a newline at the end; printd() is like a sequence of print()s, with a specified field delimiter. * What's new since version 0.5.14?, 2007-07-03 - The way in which command line arguments for scripts are substituted has changed. Previously, $1 etc. would interpret the corresponding command line argument as an numeric literal, and @1 as a string literal. Now, the command line arguments are pasted uninterpreted wherever $1 etc. appears at the beginning of a token. @1 is similar, but is quoted as a string. This change does not modify old scripts, but has the effect of permitting substitution of arbitrary token sequences. # This worked before, and still does: % stap -e 'probe timer.s($1) {}' 5 # Now this also works: % stap -e 'probe syscall.$1 {log(@1)}' open # This won't crash, just signal a recursion error: % stap -e '$1' '$1' # As before, $1... is recognized only at the beginning of a token % stap -e 'probe begin {foo$1=5}' * What's new since version 0.5.13?, 2007-03-26 - The way in which systemtap resolves function/inline probes has changed: .function(...) - now refers to all functions, inlined or not .inline(...) - is deprecated, use instead: .function(...).inline - filters function() to only inlined instances .function(...).call - filters function() to only non-inlined instances .function(...).return - as before, but now pairs best with .function().call .statement() is unchanged. * What's new since version 0.5.12?, 2007-01-01 - When running in -p4 (compile-only) mode, the compiled .ko file name is printed on standard output. - An array element with a null value such as zero or an empty string is now preserved, and will show up in a "foreach" loop or "in" test. To delete such an element, the scripts needs to use an explicit "delete array[idx]" statement rather than something like "array[idx]=0". - The new "-P" option controls whether prologue searching heuristics will be activated for function probes. This was needed to get correct debugging information (dwarf location list) data for $target variables. Modern compilers (gcc 4.1+) tend not to need this heuristic, so it is no longer default. A new configure flag (--enable-prologues) restores it as a default setting, and is appropriate for older compilers (gcc 3.*). - Each systemtap module prints a one-line message to the kernel informational log when it starts. This line identifies the translator version, base address of the probe module, a broken-down memory consumption estimate, and the total number of probes. This is meant as a debugging / auditing aid. - Begin/end probes are run with interrupts enabled (but with preemption disabled). This will allow begin/end probes to be longer, to support generating longer reports. - The numeric forms of kernel.statement() and kernel.function() probe points are now interpreted as relocatable values - treated as relative to the _stext symbol in that kernel binary. Since some modern kernel images are relocated to a different virtual address at startup, such addresses may shift up or down when actually inserted into a running kernel. kernel.statement(0xdeadbeef): validated, interpreted relative to _stext, may map to 0xceadbeef at run time. In order to specify unrelocated addresses, use the new ".absolute" probe point suffix for such numeric addresses. These are only allowed in guru mode, and provide access to no $target variables. They don't use debugging information at all, actually. kernel.statement(0xfeedface).absolute: raw, unvalidated, guru mode only * What's new since version 0.5.10?, 2006-10-19 - Offline processing of debugging information, enabling general cross-compilation of probe scripts to remote hosts, without requiring identical module/memory layout. This slows down compilation/translation somewhat. - Kernel symbol table data is loaded by staprun at startup time rather than compiled into the module. - Support the "limit" keyword for foreach iterations: foreach ([x,y] in ary limit 5) { ... } This implicitly exits after the fifth iteration. It also enables more efficient key/value sorting. - Support the "maxactive" keyword for return probes: probe kernel.function("sdfsdf").maxactive(848) { ... } This allows up to 848 concurrently outstanding entries to the sdfsdf function before one returns. The default maxactive number is smaller, and can result in missed return probes. - Support accessing of saved function arguments from within return probes. These values are saved by a synthesized function-entry probe. - Add substantial version/architecture checking in compiled probes to assert correct installation of debugging information and correct execution on a compatible kernel. - Add probe-time checking for sufficient free stack space when probe handlers are invoked, as a safety improvement. - Add an optional numeric parameter for begin/end probe specifications, to order their execution. probe begin(10) { } /* comes after */ probe begin(-10) {} - Add an optional array size declaration, which is handy for very small or very large ones. global little[5], big[20000] - Include some example scripts along with the documentation. - Change the start-time allocation of probe memory to avoid causing OOM situations, and to abort cleanly if free kernel memory is short. - Automatically use the kernel DWARF unwinder, if present, for stack tracebacks. - Many minor bug fixes, performance, tapset, and error message improvements. systemtap-3.1/README000066400000000000000000000124671305163227500143040ustar00rootroot00000000000000systemtap: a linux trace/probe tool Visit the project web site at , for documentation and mailing lists for developers and users. This is free software. See the COPYING file for redistribution/modification terms. See the INSTALL file for generic build instructions. See the HACKING file for contribution advice. Prerequisites: - linux kernel - kernel module build environment (kernel-devel rpm) and/or dyninst - optionally, debugging information for kernel/user-space being instrumented - C compiler (same as what kernel was compiled with), to build kernel modules - C++11 compiler such as gcc 4.8+, to build systemtap itself - elfutils 0.151+ with libdwfl for debugging information parsing - root privileges Installation steps: - Install any debuginfo packages you need, for kernel and/or userspace. On modern Fedora, # debuginfo-install kernel [...] (Beware of confusion between kernel vs. kernel-debug vs kernel-PAE etc. variants. Each likely has a corresponding development and debuginfo package.) - Install the systemtap package. On modern Fedora, # yum install systemtap systemtap-runtime Build steps: - Consider installing the kernel-debuginfo, kernel-devel, gcc and dependent packages (or see below if you are building your own kernels from source). If using only the pure-userspace dyninst backend, install gcc and dyninst-devel. - If available, install your distribution's copy of elfutils and its development headers/libraries. Or if desired, download an elfutils source release to build in "bundled mode" (below), and untar it into some new directory. Or if desired, build elfutils separately one time, and install it to /usr/local. See http://elfutils.org/ Version 0.151 is recommended for i386 hosts probing prelinked programs. (PR12141) - On modern Fedora, install general optional build-requisites: # yum-builddep systemtap On modern Debian/Ubuntu, similarly: # apt-get build-dep systemtap - Download systemtap sources: http://sourceware.org/systemtap/ftp/releases/ http://sourceware.org/systemtap/ftp/snapshots/ (or) git clone git://sourceware.org/git/systemtap.git (or) http://sourceware.org/git/systemtap.git - Build systemtap normally: % .../configure [other autoconf options] Or, with build it with a bundled internal copy of elfutils: % .../configure --with-elfutils=ELFUTILS-SOURCE-DIR [other autoconf options] (Ensure decompression library headers/libraries are installed for elfutils' use.) Consider configuring with "--enable-dejazilla" to automatically contribute to our public test result database. Consider configuring with "--prefix=DIRECTORY" to specify an installation directory other than /usr/local. It can be an ordinary personal directory. % make all # make install To uninstall systemtap: # make uninstall - Run systemtap: To run systemtap after installation, add $prefix/bin to your $PATH, or refer to $prefix/bin/stap directly. If you keep your build tree around, you can also use the "stap" binary there. Some samples should be available under $prefix/share/doc/systemtap/examples. For the normal linux-kernel-module based backend, run "stap" as root. If desired, create "stapdev" and "stapusr" entries in /etc/groups. Any users in "stapdev"+"stapusr" will be able to run systemtap as if with root privileges. Users in "stapusr" only may launch (with "staprun") pre-compiled probe modules (created by "stap -p4 ...") that a system administrator copied under /lib/modules/`uname -r`/systemtap. "stapusr" may also be permitted to create arbitrary unprivileged systemtap scripts of their own. See README.unprivileged for additional setup instructions. To run a simple test. # stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' To run the full test suite from the build tree, install dejagnu, then: # make installcheck For the prototype dyninst pure-userspace backend, run "stap" as any user. % stap --runtime=dyninst -e 'probe process.function("*") { println(pn(), ":", $$parms) }' -c 'ls' Tips: - By default, systemtap looks for the debug info in these locations: /boot/vmlinux-`uname -r` /usr/lib/debug/lib/modules/`uname -r`/vmlinux /lib/modules/`uname -r`/vmlinux /lib/modules/`uname -r`/build/vmlinux Building a kernel.org kernel: - Consider applying the utrace kernel patches, if you wish to probe user-space applications. http://sourceware.org/systemtap/wiki/utrace Or if your kernel is near 3.5, apply the uprobes and related patches (see NEWS). Or if your kernel is >= 3.5, enjoy the built-in uprobes. - Build the kernel using your normal procedures. Enable CONFIG_DEBUG_INFO, CONFIG_KPROBES, CONFIG_RELAY, CONFIG_DEBUG_FS, CONFIG_MODULES, CONFIG_MODULE_UNLOAD, CONFIG_UTRACE if able - % make modules_install install headers_install - Boot into the kernel. - If you wish to leave the kernel build tree in place, simply run % stap -r /path/to/kernel/build/tree [...] You're done. - Or else, if you wish to install the kernel build/debuginfo data into a place where systemtap will find it without the "-r" option: % ln -s /path/to/kernel/build/tree /lib/modules/RELEASE/build - Instead of using the "-r" option, you can also use the environment variable SYSTEMTAP_RELEASE to direct systemtap to the kernel data. systemtap-3.1/README.security000066400000000000000000000074731305163227500161530ustar00rootroot00000000000000Systemtap builds kernel modules. To insert a kernel module on a system, root access is needed. SECURITY MODEL ============== Originally sudo(8) was used to grant root access. After compiling a new kernel module, stap ran "sudo staprun module_path". This worked, but required all systemtap users to have root access. Many sysadmins on enterprise systems do not have root access. So, a new security model was developed. To run the staprun program (which installs systemtap kernel modules), a user must be one of the following: * the root user; * a member of both 'stapdev' and 'stapusr' groups; or * a member of the 'stapusr' group. Members of the stapusr group can only use modules located in the /lib/modules/VERSION/systemtap directory (where VERSION is the output of "uname -r"). This directory must be owned by root and not be world writable. So, there are two classes of users: systemtap developers (the root user and members of the stapdev/stapusr groups) and systemtap users (members of only the stapusr group). Systemtap developers can compile and run any systemtap script. Systemtap users can only run "approved" pre-compiled modules located in /lib/modules/VERSION/systemtap. USAGE ===== Here's the usage case. A systemtap developer hears of a problem on a production machine (which doesn't have a compiler or kernel debuginfo installed). So, he write a systemtap script to probe certain areas of the kernel that will give him a better idea of what is going on. He develops the script on a development machine (that has the compiler and kernel debuginfo installed). Once he is satisfied with the systemtap script, he creates the systemtap kernel module and copies it to /lib/modules/VERSION/systemtap on the target production machine. He then asks a systemtap user on that machine to run the module and report the results. The above usage case would look something like this: On the development machine: # vi pmod.stp (The systemtap developer writes the systemtap script.) # stap -m pmod pmod.stp (The systemtap developer compiles and runs the script. If necessary, the script may need to be edited to fix any errors.) # scp pmod.ko prod_machine:/lib/modules/`uname -r`/systemtap (The systemtap developer copies the compiled kernel module to the proper directory on the production machine. Of course other methods - ftp, nfs, etc. could be used to transfer the module.) On the production machine: $ staprun pmod (The systemtap user runs the newly developed systemtap kernel module.) There are (at least) 2 different usage scenarios for the /lib/modules/VERSION/systemtap directory. 1) Most restrictive usage. If only root should be able to add "approved" systemtap modules to /lib/modules/VERSION/systemtap, the permissions should be 755, like this: drwxr-xr-x 2 root root 4096 2007-08-07 13:54 systemtap/ 2) More permissive usage. If all systemtap developers should be able to add "approved" systemtap modules to /lib/modules/VERSION/systemtap, its permissions should be 775 (and be owned by root, group stapdev), like this: drwxrwxr-x 2 root stapdev 4096 2007-08-07 13:54 systemtap/ INTERNALS ========= To accomplish the new security model, staprun has been split into two programs: staprun and stapio. Here is a description of a typical systemtap session. The staprun program is a setuid program that does some system setup, loads the kernel module, then runs stapio (and waits for it to finish). The stapio program runs as the invoking user and is responsible for all communication with the kernel module. After the script runs to completion, stapio fork/execs staprun -d to unload the kernel module. staprun is a setuid program. It holds on to the root privileges only for the least amount of time (as required to verify/load compiled kernel module files). It invokes only stapio, and only as the original (unprivileged) user. systemtap-3.1/README.stapregex000066400000000000000000000011361305163227500162740ustar00rootroot00000000000000The following files in this directory incorporate code from the re2c project: - stapregex.h - stapregex.cxx - stapregex-tree.h - stapregex-tree.cxx - stapregex-parse.h - stapregex-parse.cxx - stapregex-dfa.h - stapregex-dfa.cxx The codebase these files are based on was originally released into the public domain. Many thanks to the developers of re2c for their work. As a courtesy to the original developers of re2c, please include appropriate acknowledgment in future code derived from this file. Information on the original re2c distribution can be found at: http://sourceforge.net/projects/re2c/ systemtap-3.1/README.unprivileged000066400000000000000000000303111305163227500167640ustar00rootroot00000000000000Unprivileged Mode for Systemtap Users ===================================== Introduction ------------ In order to use the full capabilities of systemtap, one must run it as root or as a member of the groups stapusr and stapdev. For other (unprivileged) users, systemtap does provide support for use of a subset of systemtap's capabilities to perform limited probing. For example, tracing your own applications or polling using timers. The intent is to give unprivileged users capabilities similar to those provided by a debugger. Below are instructions for running systemtap scripts in unprivileged mode. Systemtap Compile Server ------------------------ In order to load the kernel module produced by compiling a systemtap script for an unprivileged user, we must know that the script was compiled correctly and that the script does not do anything dangerous. A systemap compile server provides the trusted compilation environment needed to certify both conditions. NOTE: In order to use a compile server, the nss and nspr packages must be installed on the client host and systemtap must have been built with NSS enabled. Run 'stap -V | grep NSS' to find out if NSS is enabled. NOTE: In order to detect servers on the local network, the avahi package must be installed on the client host and systemtap must have been built with avahi enabled. Run 'stap -V | grep AVAHI' to find out if avahi is enabled. To find out if a suitable server is available on the local network, this command should produce output similar to the following: # stap --list-servers --privileged=stapusr Systemtap Compile Server Status for 'online,trusted,compatible,signer' host=somehost ip=10.15.16.156 port=10913 sysinfo="2.6.34.7-66.fc13.x86_64 x86_64" certinfo="00:93:49:be:2a" NOTE: In order for servers to be detected, the port for mDNS (5353/udp) must be open on the server and client hosts. If no servers are listed, then you must ask your system administrator to make the appropriate compile server available on the local host or on the local network. The server must be trusted as an ssl peer and as a systemtap module signer on the local host. See "Setup and Administration of Unprivileged Users for System Administrators" below for more details. Trust of Unprivileged Users --------------------------- Even with the appropriate compile server available, each unprivileged user must be explicitly trusted. This is done by adding each unprivileged user to the group stapusr and possibly the group stapsys on each host on which they will run systemtap scripts. To see if you are a member of the group stapusr on the local host, this command should produce output similar to the following: # getent group stapusr stapusr:x:483:someuser,anotheruser If your userid is listed, then you are already a member of the group stapusr. If it is not, then you must ask your system administrator to add you to this group. Once added, Try the command newgrp stapusr to activate your membership. If all else fails, logging out and back in again should work. See the manual page for newgrp(1) for details. Using Systemtap in Unprivileged Mode ------------------------------------ Unprivileged users can compile any systemtap script either directly or using a compile server, but systemtap will not load the resulting kernel module for an unprivileged user unless it has been compiled and certified by a trusted compile server. To do this, as an unprivileged user, this command should produce output similar to the following: # stap -e 'probe begin { printf ("Hello\n"); exit (); }' Hello For unprivileged users, stap will automatically add the options --privilege and --use-server (you could also specify them yourself). --use-server tells systemtap to compile the script using a server. --privilege tells the server to check the script to maker sure it doesn't do anything 'dangerous', i.e. nothing that a user with the specified privilege credentials shouldn't be able to do. If the server approves of your script and is able to compile it, systemtap will then load the resulting module for you even though you are an unprivileged user. If you save the resulting module by using the -p4 option of stap, then trusted, unprivileged users can load the module at a later time using staprun: # stap -e 'probe begin { printf ("Hello\n"); exit (); }' -p4 stap_5330.ko # staprun stap_5330.ko Hello Note that the module has already been certified (signed), so no special options are needed. Additional Information ---------------------- o When specifying path names in your script and compiling using a server, you must use a server which has access to those paths (e.g. via nfs, or a server on the local host) and you must specify the paths in full from the servers's point of view. For example, specify probe process("foo").begin() as probe process("/the/full/path/as/seen/by/the/server/to/foo").begin() o You can use '--privilege=[stapusr|stapsys] -pN' (for 1 <= N <= 4) without --use-server to compile and check scripts directly. stap will still check your script for 'dangerous' behavior, but will not load it for an unprivileged user. o When using --privilege, all compile time and run time restrictions are enforced for all users, including root and members of the group stapdev. Setup and Administration of Unprivileged Users for System Administrators ======================================================================== Introduction ------------ In order to use the full capabilities of systemtap, one must run it as root or as a member of the group stapdev. For other (unprivileged) users, systemtap does provide support for use of a subset of systemtap's capabilities to perform limited probing. For example, tracing your own applications or polling using timers. The intent is to give unprivileged users capabilities similar to those provided by a debugger. In order for this to happen, the system administrator must first perform some setup: o Systemtap compile server(s) must be made available on the local network. One server is needed for each kernel version and architecture pair for which users will compile scripts. o The compile server(s) must be trusted as an SSL peer and as a signer of systemtap modules on hosts on which unprivileged users will compile and run their scripts respectively. o Unprivileged users must be added to the group stapusr, and possibly the group stapsys on the host(s) on which they will run their scripts. Below are the necessary steps for the system administrator to setup the above infrastructure. Systemtap Compile Server ------------------------ In order to load the kernel module produced by compiling a systemtap script for an unprivileged user, we must know that the script was compiled correctly and that the script does not do anything dangerous. A systemap compile server provides a trusted environment needed to certify both conditions. In order to make a compile server available on the local network the systemtap-server package and its prerequisites must be installed on the server host. The system administrator then uses the following command: sudo service stap-server start [-r KERNEL-RELEASE] [-a ARCH] For example: # sudo service stap-server start -r 2.6.34.7-61.fc13.x86_64 -a x86_64 Starting stap-server -a "x86_64" -r "2.6.34.7-61.fc13.x86_64" -u "stap-server" [ OK ] This starts a compile server for the specified kernel release and hardware architecture. The kernel and kernel-devel package for the specified release and architecture must be installed on the server host. The kernel-debuginfo package for each kernel release and architecture should also be installed, but is not relevant for unprivileged users. If either one (or both) the kernel release and/or architecture is not specified, the kernel release and/or architecture of the server host will be used: # sudo service stap-server start Starting stap-server -a "x86_64" -r "2.6.34.7-66.fc13.x86_64" -u "stap-server" [ OK ] As a short cut, to start a server for each kernel release and architecture installed on the server host, use the command: # sudo service stap-server start -i Starting stap-server -a "x86_64" -r "2.6.34.7-61.fc13.x86_64" -u "stap-server" [ OK ] Starting stap-server -a "x86_64" -r "2.6.34.7-63.fc13.x86_64" -u "stap-server" [ OK ] Starting stap-server -a "x86_64" -r "2.6.34.7-66.fc13.x86_64" -u "stap-server" [ OK ] NOTE: Only root can start a systemtap server using the service command. Trust of Compile Servers ------------------------ Once systemtap compile servers have been made available on the local network, the system administrator must certify which ones are trusted as SSL peers, as systemtap kernel module signers or both. Certifying a compile server as an SSL peer means what the system administrator trusts that it compiles systemtap scripts correctly. Certifying a compile server as a module signer means that the system administrator trusts it to correctly check a systemtap script for behavior which should not be made available to unprivileged users. When a script is compiled using the --privilege option, the server checks the script for such behavior and cryptographically signs the resulting module if it is safe for use by unprivileged users. Verification of the signature certifies that the module was certified as 'safe' by the server and that it has not been altered since it was certified. Systemtap compile servers started by using the 'service' command are automatically trusted both as SSL peers and as module signers on the server's host. No further setup of the servers is necessary for users (clients) on that same host. Before clients on another host can make use of a server, the system administrator of each client host must certify trust in that server. This is performed in two steps: 1) Identify the server(s) to be trusted. # stap --list-servers=online,compatible Systemtap Compile Server Status for 'online,compatible' host=somehost ip=10.15.16.156 port=26543 sysinfo="2.6.34.7-66.fc13.x86_64 x86_64" certinfo="00:93:49:be:2a" Identify the server(s) to be trusted by examining the host name, ip address and sysinfo (kernel release and architecture). Take note of the 'certinfo' field of each server to be trusted. NOTE: In order for servers to be detected, the port for mDNS (5353/udp) must be open on the server and client hosts. 2) For each server to be trusted for use by unprivileged clients, use the command: sudo stap --trust-servers=ssl,signer,all-users --use-server=CERTINFO1 [--use-server=CERTINFO2 ...] where each CERTINFOn is the value of the 'certinfo' field of a server to be trusted (obtained using the previous command). For example: # sudo stap --trust-servers=ssl,signer,all-users --use-server=00:93:49:be:2a Add trust in the following servers as an SSL peer for all users and as a module signer for all users? host=somehost ip=10.15.16.156 port=26543 sysinfo="2.6.34.7-66.fc13.x86_64 x86_64" certinfo="00:93:49:be:2a" [y/N] y Using the 'certinfo' to specify each server ensures that the exact servers which were intended are the ones which become trusted. Note that only root can certify trust in a server as signer in this way. Now verify the result: # stap --list-servers --privilege=stapusr Systemtap Compile Server Status for 'online,trusted,compatible,signer' host=somehost ip=10.15.16.156 port=26543 sysinfo="2.6.34.7-66.fc13.x86_64 x86_64" certinfo="00:93:49:be:2a" Each of the servers you specified in stap 2 above should be listed. Trust of Unprivileged Users --------------------------- Finally, once compile servers have been set up and are trusted, each unprivileged user must be explicitly trusted. This is done by adding each unprivileged user to the group stapusr, and possibly the group stapsys on each host on which they will run systemtap scripts: sudo usermod -a -G stapusr[,stapsys] USERID If the user is already logged in, they can try using newgrp stapusr to activate their membership. If all else fails, logging out and back in again should work. See newgrp(1) for details. systemtap-3.1/aclocal.m4000066400000000000000000001475001305163227500152610ustar00rootroot00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_check_compile_flag.m4]) m4_include([m4/ax_cxx_compile_stdcxx.m4]) m4_include([m4/gettext.m4]) m4_include([m4/iconv.m4]) m4_include([m4/intlmacosx.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/nls.m4]) m4_include([m4/pkg.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) systemtap-3.1/buildrun.cxx000066400000000000000000001121671305163227500157720ustar00rootroot00000000000000// build/run probes // Copyright (C) 2005-2016 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "config.h" #include "buildrun.h" #include "session.h" #include "util.h" #include "hash.h" #include "translate.h" #include #include #include #include extern "C" { #include #include #include #include #include #include #include #include #include #include } // A bit of obfuscation for Gentoo's sake. // We *need* -Werror for stapconf to work correctly. // https://bugs.gentoo.org/show_bug.cgi?id=522908 #define WERROR ("-W" "error") using namespace std; /* Adjust and run make_cmd to build a kernel module. */ static int run_make_cmd(systemtap_session& s, vector& make_cmd, bool null_out=false, bool null_err=false) { assert_no_interrupts(); // PR14168: we used to unsetenv values here; instead do it via // env(1) in make_any_make_cmd(). // Disable ccache to avoid saving files that will never be reused. // (ccache is useless to us, because our compiler commands always // include the randomized tmpdir path.) // It's not critical if this fails, so the return is ignored. (void) setenv("CCACHE_DISABLE", "1", 0); if (s.verbose > 2) make_cmd.push_back("V=1"); else if (s.verbose > 1) make_cmd.push_back("--no-print-directory"); else { make_cmd.push_back("-s"); make_cmd.push_back("--no-print-directory"); } // Exploit SMP parallelism, if available. long smp = thread::hardware_concurrency(); if (smp <= 0) smp = 1; // PR16276: but only if we're not running severely nproc-rlimited struct rlimit rlim; int rlimit_rc = getrlimit(RLIMIT_NPROC, &rlim); const unsigned int severely_limited = smp*30; // WAG at number of gcc+make etc. nested processes bool nproc_limited = (rlimit_rc == 0 && (rlim.rlim_max <= severely_limited || rlim.rlim_cur <= severely_limited)); if (smp >= 1 && !nproc_limited) make_cmd.push_back("-j" + lex_cast(smp+1)); if (strverscmp (s.kernel_base_release.c_str(), "2.6.29") < 0) { // Older kernels, before linux commit #fd54f502841c1, include // gratuitous "echo"s in their Makefile. We need to suppress // that with this bluntness. null_out = true; } int rc = stap_system (s.verbose, "kbuild", make_cmd, null_out, null_err); if (rc != 0) s.set_try_server (); return rc; } static vector make_any_make_cmd(systemtap_session& s, const string& dir, const string& target) { string newpath("PATH=/usr/bin:/bin"); const char *oldpath = getenv("PATH"); if (oldpath != NULL) { newpath += ':'; newpath += oldpath; } vector make_cmd { // PR14168: sanitize environment variables for kbuild invocation "env", "-uARCH", "-uKBUILD_EXTMOD", "-uCROSS_COMPILE", "-uKBUILD_IMAGE", "-uKCONFIG_CONFIG", "-uINSTALL_PATH", "-uLD_LIBRARY_PATH", newpath, "make", "-C", s.kernel_build_tree, "M=" + dir, // need make-quoting? target, // PR13847: suppress debuginfo creation by default "CONFIG_DEBUG_INFO=", // RHBZ1321628: suppress stack validation; expected to be temporary "CONFIG_STACK_VALIDATION=", }; // Add architecture, except for old powerpc (RHBZ669082) if (s.architecture != "powerpc" || (strverscmp (s.kernel_base_release.c_str(), "2.6.15") >= 0)) make_cmd.push_back("ARCH=" + s.architecture); // need make-quoting? // Add any custom kbuild flags make_cmd.insert(make_cmd.end(), s.kbuildflags.begin(), s.kbuildflags.end()); return make_cmd; } static vector make_make_cmd(systemtap_session& s, const string& dir) { return make_any_make_cmd(s, dir, "modules"); } static vector make_make_objs_cmd(systemtap_session& s, const string& dir) { // Kbuild uses these rules to build external modules: // // module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD)) // modules: $(module-dirs) // @$(kecho) ' Building modules, stage 2.'; // $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost // // So if we're only interested in the stage 1 objects, we can // cheat and make only the $(module-dirs) part. return make_any_make_cmd(s, dir, "_module_" + dir); } static void output_autoconf(systemtap_session& s, ofstream& o, const char *autoconf_c, const char *deftrue, const char *deffalse) { o << "\t"; if (s.verbose < 4) o << "@"; o << "if $(CHECK_BUILD) $(SYSTEMTAP_RUNTIME)/linux/" << autoconf_c; if (s.verbose < 5) o << " > /dev/null 2>&1"; o << "; then "; if (deftrue) o << "echo \"#define " << deftrue << " 1\""; if (deffalse) o << "; else echo \"#define " << deffalse << " 1\""; o << "; fi >> $@" << endl; } void output_exportconf(systemtap_session& s, ofstream& o, const char *symbol, const char *deftrue) { o << "\t"; if (s.verbose < 4) o << "@"; if (s.kernel_exports.find(symbol) != s.kernel_exports.end()) o << "echo \"#define " << deftrue << " 1\""; o << ">> $@" << endl; } void output_dual_exportconf(systemtap_session& s, ofstream& o, const char *symbol1, const char *symbol2, const char *deftrue) { o << "\t"; if (s.verbose < 4) o << "@"; if (s.kernel_exports.find(symbol1) != s.kernel_exports.end() && s.kernel_exports.find(symbol2) != s.kernel_exports.end()) o << "echo \"#define " << deftrue << " 1\""; o << ">> $@" << endl; } void output_either_exportconf(systemtap_session& s, ofstream& o, const char *symbol1, const char *symbol2, const char *deftrue) { o << "\t"; if (s.verbose < 4) o << "@"; if (s.kernel_exports.find(symbol1) != s.kernel_exports.end() || s.kernel_exports.find(symbol2) != s.kernel_exports.end()) o << "echo \"#define " << deftrue << " 1\""; o << ">> $@" << endl; } static int compile_dyninst (systemtap_session& s) { const string module = s.tmpdir + "/" + s.module_filename(); vector cmd { "gcc", "--std=gnu99", s.translated_source, "-o", module, "-fvisibility=hidden", "-O2", "-I" + s.runtime_path, "-D__DYNINST__", "-Wall", WERROR, "-Wno-unused", "-Wno-strict-aliasing", "-pthread", "-lrt", "-fPIC", "-shared", }; // BZ855981/948279. Since dyninst/runtime.h includes __sync_* calls, // the compiler may generate different code for it depending on -march. // For example, if the default is i386, we may get references to auxiliary // functions like __sync_add_and_fetch_4, which appear to be defined // nowhere. We hack around this problem thusly: if (s.architecture == "i386") cmd.push_back("-march=i586"); for (size_t i = 0; i < s.c_macros.size(); ++i) cmd.push_back("-D" + s.c_macros[i]); if (s.verbose > 3) cmd.insert(cmd.end(), { "-ftime-report", "-Q" }); // Add any custom kbuild flags cmd.insert(cmd.end(), s.kbuildflags.begin(), s.kbuildflags.end()); int rc = stap_system (s.verbose, cmd); if (rc) s.set_try_server (); return rc; } int compile_pass (systemtap_session& s) { if (s.runtime_usermode_p()) return compile_dyninst (s); int rc = uprobes_pass (s); if (rc) { s.set_try_server (); return rc; } // fill in a quick Makefile string makefile_nm = s.tmpdir + "/Makefile"; ofstream o (makefile_nm.c_str()); // Create makefile // Clever hacks copied from vmware modules string superverbose; if (s.verbose > 3) superverbose = "set -x;"; string redirecterrors = "> /dev/null 2>&1"; if (s.verbose > 6) redirecterrors = ""; // Support O= (or KBUILD_OUTPUT) option o << "_KBUILD_CFLAGS := $(call flags,KBUILD_CFLAGS)" << endl; o << "stap_check_gcc = $(shell " << superverbose << " if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then " << "echo \"$(1)\"; else echo \"$(2)\"; fi)" << endl; o << "CHECK_BUILD := $(CC) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CPPFLAGS) " << "$(LINUXINCLUDE) $(_KBUILD_CFLAGS) $(CFLAGS_KERNEL) $(EXTRA_CFLAGS) " << "$(CFLAGS) -DKBUILD_BASENAME=\\\"" << s.module_name << "\\\" " << WERROR << " -S -o /dev/null -xc " << endl; o << "stap_check_build = $(shell " << superverbose << " if $(CHECK_BUILD) $(1) " << redirecterrors << " ; then echo \"$(2)\"; else echo \"$(3)\"; fi)" << endl; o << "SYSTEMTAP_RUNTIME = \"" << s.runtime_path << "\"" << endl; // "autoconf" options go here // RHBZ 543529: early rhel6 kernels' module-signing kbuild logic breaks out-of-tree modules o << "CONFIG_MODULE_SIG := n" << endl; string module_cflags = "EXTRA_CFLAGS"; o << module_cflags << " :=" << endl; // XXX: This gruesome hack is needed on some kernels built with separate O=directory, // where files like 2.6.27 x86's asm/mach-*/mach_mpspec.h are not found on the cpp path. // This could be a bug in arch/x86/Makefile that names // mflags-y += -Iinclude/asm-x86/mach-default // but that path does not exist in an O= build tree. o << module_cflags << " += -Iinclude2/asm/mach-default" << endl; o << module_cflags << " += -I" + s.kernel_build_tree << endl; if (s.kernel_source_tree != "") o << module_cflags << " += -I" + s.kernel_source_tree << endl; for (unsigned i = 0; i < s.kernel_extra_cflags.size(); i++) o << module_cflags << " += " + s.kernel_extra_cflags[i] << endl; // NB: don't try // o << module_cflags << " += -Iusr/include" << endl; // since such headers are cleansed of _KERNEL_ pieces that we need o << "STAPCONF_HEADER := " << s.tmpdir << "/" << s.stapconf_name << endl; o << "$(STAPCONF_HEADER):" << endl; o << "\t@> $@" << endl; output_autoconf(s, o, "autoconf-hrtimer-rel.c", "STAPCONF_HRTIMER_REL", NULL); output_exportconf(s, o, "hrtimer_get_res", "STAPCONF_HRTIMER_GET_RES"); output_autoconf(s, o, "autoconf-generated-compile.c", "STAPCONF_GENERATED_COMPILE", NULL); output_autoconf(s, o, "autoconf-hrtimer-getset-expires.c", "STAPCONF_HRTIMER_GETSET_EXPIRES", NULL); output_autoconf(s, o, "autoconf-inode-private.c", "STAPCONF_INODE_PRIVATE", NULL); output_autoconf(s, o, "autoconf-inode-rwsem.c", "STAPCONF_INODE_RWSEM", NULL); output_autoconf(s, o, "autoconf-constant-tsc.c", "STAPCONF_CONSTANT_TSC", NULL); output_autoconf(s, o, "autoconf-ktime-get-real.c", "STAPCONF_KTIME_GET_REAL", NULL); output_autoconf(s, o, "autoconf-x86-uniregs.c", "STAPCONF_X86_UNIREGS", NULL); output_autoconf(s, o, "autoconf-nameidata.c", "STAPCONF_NAMEIDATA_CLEANUP", NULL); output_dual_exportconf(s, o, "unregister_kprobes", "unregister_kretprobes", "STAPCONF_UNREGISTER_KPROBES"); output_autoconf(s, o, "autoconf-kprobe-symbol-name.c", "STAPCONF_KPROBE_SYMBOL_NAME", NULL); output_autoconf(s, o, "autoconf-real-parent.c", "STAPCONF_REAL_PARENT", NULL); output_autoconf(s, o, "autoconf-uaccess.c", "STAPCONF_LINUX_UACCESS_H", NULL); output_autoconf(s, o, "autoconf-oneachcpu-retry.c", "STAPCONF_ONEACHCPU_RETRY", NULL); output_autoconf(s, o, "autoconf-dpath-path.c", "STAPCONF_DPATH_PATH", NULL); output_exportconf(s, o, "synchronize_kernel", "STAPCONF_SYNCHRONIZE_KERNEL"); output_exportconf(s, o, "synchronize_rcu", "STAPCONF_SYNCHRONIZE_RCU"); output_exportconf(s, o, "synchronize_sched", "STAPCONF_SYNCHRONIZE_SCHED"); output_autoconf(s, o, "autoconf-task-uid.c", "STAPCONF_TASK_UID", NULL); output_autoconf(s, o, "autoconf-from_kuid_munged.c", "STAPCONF_FROM_KUID_MUNGED", NULL); output_exportconf(s, o, "get_mm_exe_file", "STAPCONF_GET_MM_EXE_FILE"); output_dual_exportconf(s, o, "alloc_vm_area", "free_vm_area", "STAPCONF_VM_AREA"); output_autoconf(s, o, "autoconf-procfs-owner.c", "STAPCONF_PROCFS_OWNER", NULL); output_autoconf(s, o, "autoconf-alloc-percpu-align.c", "STAPCONF_ALLOC_PERCPU_ALIGN", NULL); output_autoconf(s, o, "autoconf-x86-fs.c", "STAPCONF_X86_FS", NULL); output_autoconf(s, o, "autoconf-x86-xfs.c", "STAPCONF_X86_XFS", NULL); output_autoconf(s, o, "autoconf-x86-gs.c", "STAPCONF_X86_GS", NULL); output_autoconf(s, o, "autoconf-grsecurity.c", "STAPCONF_GRSECURITY", NULL); output_autoconf(s, o, "autoconf-trace-printk.c", "STAPCONF_TRACE_PRINTK", NULL); output_autoconf(s, o, "autoconf-regset.c", "STAPCONF_REGSET", NULL); output_autoconf(s, o, "autoconf-utrace-regset.c", "STAPCONF_UTRACE_REGSET", NULL); output_autoconf(s, o, "autoconf-uprobe-get-pc.c", "STAPCONF_UPROBE_GET_PC", NULL); output_autoconf(s, o, "autoconf-hlist-4args.c", "STAPCONF_HLIST_4ARGS", NULL); output_exportconf(s, o, "tsc_khz", "STAPCONF_TSC_KHZ"); output_exportconf(s, o, "cpu_khz", "STAPCONF_CPU_KHZ"); output_exportconf(s, o, "__module_text_address", "STAPCONF_MODULE_TEXT_ADDRESS"); output_exportconf(s, o, "add_timer_on", "STAPCONF_ADD_TIMER_ON"); output_dual_exportconf(s, o, "probe_kernel_read", "probe_kernel_write", "STAPCONF_PROBE_KERNEL"); output_autoconf(s, o, "autoconf-hw_breakpoint_context.c", "STAPCONF_HW_BREAKPOINT_CONTEXT", NULL); output_autoconf(s, o, "autoconf-save-stack-trace.c", "STAPCONF_KERNEL_STACKTRACE", NULL); output_autoconf(s, o, "autoconf-save-stack-trace-no-bp.c", "STAPCONF_KERNEL_STACKTRACE_NO_BP", NULL); output_autoconf(s, o, "autoconf-asm-syscall.c", "STAPCONF_ASM_SYSCALL_H", NULL); output_autoconf(s, o, "autoconf-ring_buffer-flags.c", "STAPCONF_RING_BUFFER_FLAGS", NULL); output_autoconf(s, o, "autoconf-ring_buffer_lost_events.c", "STAPCONF_RING_BUFFER_LOST_EVENTS", NULL); output_autoconf(s, o, "autoconf-ring_buffer_read_prepare.c", "STAPCONF_RING_BUFFER_READ_PREPARE", NULL); output_autoconf(s, o, "autoconf-kallsyms-on-each-symbol.c", "STAPCONF_KALLSYMS_ON_EACH_SYMBOL", NULL); output_autoconf(s, o, "autoconf-walk-stack.c", "STAPCONF_WALK_STACK", NULL); output_autoconf(s, o, "autoconf-stacktrace_ops-warning.c", "STAPCONF_STACKTRACE_OPS_WARNING", NULL); output_autoconf(s, o, "autoconf-stacktrace_ops-int-address.c", "STAPCONF_STACKTRACE_OPS_INT_ADDRESS", NULL); output_autoconf(s, o, "autoconf-mm-context-vdso.c", "STAPCONF_MM_CONTEXT_VDSO", NULL); output_autoconf(s, o, "autoconf-mm-context-vdso-base.c", "STAPCONF_MM_CONTEXT_VDSO_BASE", NULL); output_autoconf(s, o, "autoconf-blk-types.c", "STAPCONF_BLK_TYPES", NULL); output_autoconf(s, o, "autoconf-perf-structpid.c", "STAPCONF_PERF_STRUCTPID", NULL); output_autoconf(s, o, "perf_event_counter_context.c", "STAPCONF_PERF_COUNTER_CONTEXT", NULL); output_autoconf(s, o, "perf_probe_handler_nmi.c", "STAPCONF_PERF_HANDLER_NMI", NULL); output_exportconf(s, o, "path_lookup", "STAPCONF_PATH_LOOKUP"); output_exportconf(s, o, "kern_path_parent", "STAPCONF_KERN_PATH_PARENT"); output_exportconf(s, o, "vfs_path_lookup", "STAPCONF_VFS_PATH_LOOKUP"); output_exportconf(s, o, "kern_path", "STAPCONF_KERN_PATH"); output_exportconf(s, o, "proc_create_data", "STAPCONF_PROC_CREATE_DATA"); output_exportconf(s, o, "PDE_DATA", "STAPCONF_PDE_DATA"); output_autoconf(s, o, "autoconf-module-sect-attrs.c", "STAPCONF_MODULE_SECT_ATTRS", NULL); output_autoconf(s, o, "autoconf-utrace-via-tracepoints.c", "STAPCONF_UTRACE_VIA_TRACEPOINTS", NULL); output_autoconf(s, o, "autoconf-task_work-struct.c", "STAPCONF_TASK_WORK_STRUCT", NULL); output_autoconf(s, o, "autoconf-vm-area-pte.c", "STAPCONF_VM_AREA_PTE", NULL); output_autoconf(s, o, "autoconf-relay-umode_t.c", "STAPCONF_RELAY_UMODE_T", NULL); output_autoconf(s, o, "autoconf-relay_buf-per_cpu_ptr.c", "STAPCONF_RELAY_BUF_PER_CPU_PTR", NULL); output_autoconf(s, o, "autoconf-fs_supers-hlist.c", "STAPCONF_FS_SUPERS_HLIST", NULL); output_autoconf(s, o, "autoconf-compat_sigaction.c", "STAPCONF_COMPAT_SIGACTION", NULL); output_autoconf(s, o, "autoconf-netfilter.c", "STAPCONF_NETFILTER_V313", NULL); output_autoconf(s, o, "autoconf-netfilter-313b.c", "STAPCONF_NETFILTER_V313B", NULL); output_autoconf(s, o, "autoconf-netfilter-4_1.c", "STAPCONF_NETFILTER_V41", NULL); output_autoconf(s, o, "autoconf-netfilter-4_4.c", "STAPCONF_NETFILTER_V44", NULL); output_autoconf(s, o, "autoconf-smpcall-5args.c", "STAPCONF_SMPCALL_5ARGS", NULL); output_autoconf(s, o, "autoconf-smpcall-4args.c", "STAPCONF_SMPCALL_4ARGS", NULL); // used by tapset/timestamp_monotonic.stp output_exportconf(s, o, "cpu_clock", "STAPCONF_CPU_CLOCK"); output_exportconf(s, o, "local_clock", "STAPCONF_LOCAL_CLOCK"); // used by runtime/uprobe-inode.c output_either_exportconf(s, o, "uprobe_register", "register_uprobe", "STAPCONF_UPROBE_REGISTER_EXPORTED"); output_either_exportconf(s, o, "uprobe_unregister", "unregister_uprobe", "STAPCONF_UPROBE_UNREGISTER_EXPORTED"); output_autoconf(s, o, "autoconf-old-inode-uprobes.c", "STAPCONF_OLD_INODE_UPROBES", NULL); output_autoconf(s, o, "autoconf-inode-uretprobes.c", "STAPCONF_INODE_URETPROBES", NULL); // used by tapsets.cxx inode uprobe generated code output_exportconf(s, o, "uprobe_get_swbp_addr", "STAPCONF_UPROBE_GET_SWBP_ADDR_EXPORTED"); // used by runtime/loc2c-runtime.h output_exportconf(s, o, "task_user_regset_view", "STAPCONF_TASK_USER_REGSET_VIEW_EXPORTED"); // used by runtime/stp_utrace.c output_exportconf(s, o, "task_work_add", "STAPCONF_TASK_WORK_ADD_EXPORTED"); output_exportconf(s, o, "wake_up_state", "STAPCONF_WAKE_UP_STATE_EXPORTED"); output_exportconf(s, o, "try_to_wake_up", "STAPCONF_TRY_TO_WAKE_UP_EXPORTED"); output_exportconf(s, o, "signal_wake_up_state", "STAPCONF_SIGNAL_WAKE_UP_STATE_EXPORTED"); output_exportconf(s, o, "signal_wake_up", "STAPCONF_SIGNAL_WAKE_UP_EXPORTED"); output_exportconf(s, o, "__lock_task_sighand", "STAPCONF___LOCK_TASK_SIGHAND_EXPORTED"); output_autoconf(s, o, "autoconf-pagefault_disable.c", "STAPCONF_PAGEFAULT_DISABLE", NULL); output_exportconf(s, o, "kallsyms_lookup_name", "STAPCONF_KALLSYMS"); output_autoconf(s, o, "autoconf-uidgid.c", "STAPCONF_LINUX_UIDGID_H", NULL); output_exportconf(s, o, "sigset_from_compat", "STAPCONF_SIGSET_FROM_COMPAT_EXPORTED"); output_exportconf(s, o, "vzalloc", "STAPCONF_VZALLOC"); output_exportconf(s, o, "vzalloc_node", "STAPCONF_VZALLOC_NODE"); output_exportconf(s, o, "vmalloc_node", "STAPCONF_VMALLOC_NODE"); // RHBZ1233912 - s390 temporary workaround for non-atomic udelay() output_exportconf(s, o, "udelay_simple", "STAPCONF_UDELAY_SIMPLE"); output_autoconf(s, o, "autoconf-tracepoint-strings.c", "STAPCONF_TRACEPOINT_STRINGS", NULL); output_autoconf(s, o, "autoconf-timerfd.c", "STAPCONF_TIMERFD_H", NULL); output_autoconf(s, o, "autoconf-module_layout.c", "STAPCONF_MODULE_LAYOUT", NULL); output_autoconf(s, o, "autoconf-mod_kallsyms.c", "STAPCONF_MOD_KALLSYMS", NULL); output_exportconf(s, o, "get_user_pages_remote", "STAPCONF_GET_USER_PAGES_REMOTE"); output_autoconf(s, o, "autoconf-get_user_pages_remote-flags.c", "STAPCONF_GET_USER_PAGES_REMOTE_FLAGS", NULL); output_autoconf(s, o, "autoconf-get_user_pages_remote-flags_locked.c", "STAPCONF_GET_USER_PAGES_REMOTE_FLAGS_LOCKED", NULL); o << module_cflags << " += -include $(STAPCONF_HEADER)" << endl; for (unsigned i=0; i 3) o << "EXTRA_CFLAGS += -ftime-report -Q" << endl; // XXX: unfortunately, -save-temps can't work since linux kbuild cwd // is not writable. // // if (s.keep_tmpdir) // o << "CFLAGS += -fverbose-asm -save-temps" << endl; // Kernels can be compiled with CONFIG_CC_OPTIMIZE_FOR_SIZE to select // -Os, otherwise -O2 is the default. o << "EXTRA_CFLAGS += -freorder-blocks" << endl; // improve on -Os // Generate eh_frame for self-backtracing o << "EXTRA_CFLAGS += -fasynchronous-unwind-tables" << endl; // We used to allow the user to override default optimization when so // requested by adding a -O[0123s] so they could determine the // time/space/speed tradeoffs themselves, but we cannot guantantee that // the (un)optimized code actually compiles and/or generates functional // code, so we had to remove it. // o << "EXTRA_CFLAGS += " << s.gcc_flags << endl; // Add -O[0123s] // o << "CFLAGS += -fno-unit-at-a-time" << endl; // 256^W512 bytes should be enough for anybody // XXX this doesn't validate varargs, per gcc bug #41633 o << "EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=512)" << endl; // gcc 5.0.0-0.13.fc23 ipa-icf seems to consume gigacpu on stap-generated code o << "EXTRA_CFLAGS += $(call cc-option,-fno-ipa-icf)" << endl; // Assumes linux 2.6 kbuild o << "EXTRA_CFLAGS += -Wno-unused " << WERROR << endl; #if CHECK_POINTER_ARITH_PR5947 o << "EXTRA_CFLAGS += -Wpointer-arith" << endl; #endif o << "EXTRA_CFLAGS += -I\"" << s.runtime_path << "\"" << endl; // XXX: this may help ppc toc overflow // o << "CFLAGS := $(subst -Os,-O2,$(CFLAGS)) -fminimal-toc" << endl; o << "obj-m := " << s.module_name << ".o" << endl; // print out all the auxiliary source (->object) file names o << s.module_name << "-y := "; for (unsigned i=0; itrailer_p) continue; string srcname = s.auxiliary_outputs[i]->filename; assert (srcname != "" && srcname.rfind('/') != string::npos); string objname = srcname.substr(srcname.rfind('/')+1); // basename assert (objname != "" && objname[objname.size()-1] == 'c'); objname[objname.size()-1] = 'o'; // now objname o << " " + objname; } // and once again, for the translated_source file. It can't simply // be named MODULENAME.c, since kbuild doesn't allow a foo.ko file // consisting of multiple .o's to have foo.o/foo.c as a source. // (It uses ld -r -o foo.o EACH.o EACH.o). { string srcname = s.translated_source; assert (srcname != "" && srcname.rfind('/') != string::npos); string objname = srcname.substr(srcname.rfind('/')+1); // basename assert (objname != "" && objname[objname.size()-1] == 'c'); objname[objname.size()-1] = 'o'; // now objname o << " " + objname; } // and once again, for the trailer type auxiliary outputs. for (unsigned i=0; itrailer_p) continue; string srcname = s.auxiliary_outputs[i]->filename; assert (srcname != "" && srcname.rfind('/') != string::npos); string objname = srcname.substr(srcname.rfind('/')+1); // basename assert (objname != "" && objname[objname.size()-1] == 'c'); objname[objname.size()-1] = 'o'; // now objname o << " " + objname; } o << endl; // add all stapconf dependencies o << s.translated_source << ": $(STAPCONF_HEADER)" << endl; for (unsigned i=0; ifilename << ": $(STAPCONF_HEADER)" << endl; o.close (); // Generate module directory pathname and make sure it exists. string module_dir = s.kernel_build_tree; string module_dir_makefile = module_dir + "/Makefile"; struct stat st; rc = stat(module_dir_makefile.c_str(), &st); if (rc != 0) { clog << _F("Checking \" %s \" failed with error: %s\nEnsure kernel development headers & makefiles are installed.", module_dir_makefile.c_str(), strerror(errno)) << endl; s.set_try_server (); return rc; } // Run make vector make_cmd = make_make_cmd(s, s.tmpdir); rc = run_make_cmd(s, make_cmd); if (rc) s.set_try_server (); return rc; } /* * If uprobes was built as part of the kernel build (either built-in * or as a module), the uprobes exports should show up. This is to be * as distinct from the stap-built uprobes.ko from the runtime. */ static bool kernel_built_uprobes (systemtap_session& s) { if (s.runtime_usermode_p()) return true; // sort of, via dyninst // see also tapsets.cxx:kernel_supports_inode_uprobes() return ((s.kernel_config["CONFIG_ARCH_SUPPORTS_UPROBES"] == "y" && s.kernel_config["CONFIG_UPROBES"] == "y") || (s.kernel_exports.find("unregister_uprobe") != s.kernel_exports.end())); } static int make_uprobes (systemtap_session& s) { if (s.verbose > 1) clog << _("Pass 4, preamble: (re)building SystemTap's version of uprobes.") << endl; // create a subdirectory for the uprobes module string dir(s.tmpdir + "/uprobes"); if (create_dir(dir.c_str()) != 0) { s.print_warning("failed to create directory for build uprobes."); s.set_try_server (); return 1; } // create a simple Makefile string makefile(dir + "/Makefile"); ofstream omf(makefile.c_str()); omf << "obj-m := uprobes.o" << endl; // RHBZ 655231: later rhel6 kernels' module-signing kbuild logic breaks out-of-tree modules omf << "CONFIG_MODULE_SIG := n" << endl; omf.close(); // create a simple #include-chained source file string runtimesourcefile(s.runtime_path + "/linux/uprobes/uprobes.c"); string sourcefile(dir + "/uprobes.c"); ofstream osrc(sourcefile.c_str()); osrc << "#include \"" << runtimesourcefile << "\"" << endl; // pass --modinfo k=v to uprobes build too for (unsigned i = 0; i < s.modinfos.size(); i++) { const string& mi = s.modinfos[i]; size_t loc = mi.find('='); string tag = mi.substr (0, loc); string value = mi.substr (loc+1); osrc << "MODULE_INFO(" << tag << "," << lex_cast_qstring(value) << ");" << endl; } osrc.close(); // make the module vector make_cmd = make_make_cmd(s, dir); int rc = run_make_cmd(s, make_cmd); if (!rc && !copy_file(dir + "/Module.symvers", s.tmpdir + "/Module.symvers")) rc = -1; if (s.verbose > 1) clog << _("uprobes rebuild exit code: ") << rc << endl; if (rc) s.set_try_server (); else s.uprobes_path = dir + "/uprobes.ko"; return rc; } static bool get_cached_uprobes(systemtap_session& s) { s.uprobes_hash = s.use_cache ? find_uprobes_hash(s) : ""; if (!s.uprobes_hash.empty()) { // NB: We always put uprobes.ko in its own directory, especially so // stap-serverd can more easily locate it. string dir(s.tmpdir + "/uprobes"); if (create_dir(dir.c_str()) != 0) return false; string cacheko = s.uprobes_hash + ".ko"; string tmpko = dir + "/uprobes.ko"; // The symvers file still needs to go in the script module's directory. string cachesyms = s.uprobes_hash + ".symvers"; string tmpsyms = s.tmpdir + "/Module.symvers"; if (get_file_size(cacheko) > 0 && copy_file(cacheko, tmpko) && get_file_size(cachesyms) > 0 && copy_file(cachesyms, tmpsyms)) { s.uprobes_path = tmpko; return true; } } return false; } static void set_cached_uprobes(systemtap_session& s) { if (s.use_cache && !s.uprobes_hash.empty()) { string cacheko = s.uprobes_hash + ".ko"; string tmpko = s.tmpdir + "/uprobes/uprobes.ko"; copy_file(tmpko, cacheko); string cachesyms = s.uprobes_hash + ".symvers"; string tmpsyms = s.tmpdir + "/uprobes/Module.symvers"; copy_file(tmpsyms, cachesyms); } } int uprobes_pass (systemtap_session& s) { if (!s.need_uprobes || kernel_built_uprobes(s)) return 0; if (s.kernel_config["CONFIG_UTRACE"] != string("y")) { clog << _("user-space process-tracking facilities not available [man error::process-tracking]") << endl; s.set_try_server (); return 1; } /* * We need to use the version of uprobes that comes with SystemTap. Try to * get it from the cache first. If not found, build it and try to save it to * the cache for future reuse. */ int rc = 0; if (!get_cached_uprobes(s)) { rc = make_uprobes(s); if (!rc) set_cached_uprobes(s); } if (rc) s.set_try_server (); return rc; } static vector make_dyninst_run_command (systemtap_session& s, const string& remotedir, const string&) { vector cmd { getenv("SYSTEMTAP_STAPDYN") ?: BINDIR "/stapdyn" }; // use slightly less verbosity if (s.verbose > 0) cmd.insert(cmd.end(), s.verbose - 1, "-v"); if (s.suppress_warnings) cmd.push_back("-w"); if (!s.cmd.empty()) cmd.insert(cmd.end(), { "-c", s.cmd }); if (s.target_pid) cmd.insert(cmd.end(), { "-x", lex_cast(s.target_pid) }); if (!s.output_file.empty()) cmd.insert(cmd.end(), { "-o", s.output_file }); if (s.color_mode != s.color_auto) { auto mode = s.color_mode == s.color_always ? "always" : "never"; cmd.insert(cmd.end(), { "-C", mode }); } cmd.push_back((remotedir.empty() ? s.tmpdir : remotedir) + "/" + s.module_filename()); // add module arguments cmd.insert(cmd.end(), s.globalopts.begin(), s.globalopts.end()); return cmd; } vector make_run_command (systemtap_session& s, const string& remotedir, const string& version) { if (s.runtime_usermode_p()) return make_dyninst_run_command(s, remotedir, version); // for now, just spawn staprun vector cmd { getenv("SYSTEMTAP_STAPRUN") ?: BINDIR "/staprun" }; // use slightly less verbosity if (s.verbose > 0) cmd.insert(cmd.end(), s.verbose - 1, "-v"); if (s.suppress_warnings) cmd.push_back("-w"); if (!s.output_file.empty()) cmd.insert(cmd.end(), { "-o", s.output_file }); if (!s.cmd.empty()) cmd.insert(cmd.end(), { "-c", s.cmd }); if (s.target_pid) cmd.insert(cmd.end(), { "-t", lex_cast(s.target_pid) }); if (s.target_namespaces_pid) cmd.insert(cmd.end(), { "-N", lex_cast(s.target_namespaces_pid) }); if (s.buffer_size) cmd.insert(cmd.end(), { "-b", lex_cast(s.buffer_size) }); if (s.need_uprobes && !kernel_built_uprobes(s)) { string opt_u = "-u"; if (!s.uprobes_path.empty() && strverscmp("1.4", version.c_str()) <= 0) { if (remotedir.empty()) opt_u.append(s.uprobes_path); else opt_u.append(remotedir + "/" + basename(s.uprobes_path.c_str())); } cmd.push_back(opt_u); } if (s.load_only) cmd.push_back(s.output_file.empty() ? "-L" : "-D"); // Note that if this system requires signed modules, we can't rename // it after it has been signed. if (!s.modname_given && (strverscmp("1.6", version.c_str()) <= 0) && s.mok_fingerprints.empty()) cmd.push_back("-R"); if (!s.size_option.empty()) cmd.insert(cmd.end(), { "-S", s.size_option }); if (s.color_mode != s.color_auto) { auto mode = s.color_mode == s.color_always ? "always" : "never"; cmd.insert(cmd.end(), { "-C", mode }); } if (s.monitor) cmd.insert(cmd.end(), { "-M", lex_cast(s.monitor_interval) }); cmd.push_back((remotedir.empty() ? s.tmpdir : remotedir) + "/" + s.module_filename()); // add module arguments cmd.insert(cmd.end(), s.globalopts.begin(), s.globalopts.end()); return cmd; } // Build tiny kernel modules to query tracepoints. // Given a (header-file -> test-contents) map, compile them ASAP, and return // a (header-file -> obj-filename) map. map make_tracequeries(systemtap_session& s, const map& contents) { static unsigned tick = 0; string basename("tracequery_kmod_" + lex_cast(++tick)); map objs; // create a subdirectory for the module string dir(s.tmpdir + "/" + basename); if (create_dir(dir.c_str()) != 0) { s.print_warning("failed to create directory for querying tracepoints."); s.set_try_server (); return objs; } // create a simple Makefile string makefile(dir + "/Makefile"); ofstream omf(makefile.c_str()); // force debuginfo generation, and relax implicit functions omf << "EXTRA_CFLAGS := -g -Wno-implicit-function-declaration " << WERROR << endl; // RHBZ 655231: later rhel6 kernels' module-signing kbuild logic breaks out-of-tree modules omf << "CONFIG_MODULE_SIG := n" << endl; // PR18389: disable GCC's Identical Code Folding, since the stubs may look identical omf << "EXTRA_CFLAGS += $(call cc-option,-fno-ipa-icf)" << endl; omf << "EXTRA_CFLAGS += -I" + s.kernel_build_tree << endl; if (s.kernel_source_tree != "") omf << "EXTRA_CFLAGS += -I" + s.kernel_source_tree << endl; for (unsigned i = 0; i < s.kernel_extra_cflags.size(); i++) omf << "EXTRA_CFLAGS += " + s.kernel_extra_cflags[i] << endl; omf << "obj-m := " << endl; // write out each header-specific source file into a separate file for (map::const_iterator it = contents.begin(); it != contents.end(); it++) { string sbasename = basename + "_" + lex_cast(++tick); // suffixed // write out source code string srcname = dir + "/" + sbasename + ".c"; string src = it->second; ofstream osrc(srcname.c_str()); osrc << src; osrc.close(); if (s.verbose > 2) clog << _F("Processing tracepoint header %s with query %s", it->first.c_str(), srcname.c_str()) << endl; // arrange to build it omf << "obj-m += " + sbasename + ".o" << endl; // NB: without prefix objs[it->first] = dir + "/" + sbasename + ".o"; } omf.close(); // make the module vector make_cmd = make_make_objs_cmd(s, dir); make_cmd.push_back ("-i"); // ignore errors, give rc 0 even in case of tracepoint header nits bool quiet = (s.verbose < 4); int rc = run_make_cmd(s, make_cmd, quiet, quiet); if (rc) s.set_try_server (); // Sometimes we fail a tracequery due to PR9993 / PR11649 type // kernel trace header problems. In this case, due to PR12729, we // used to get a lovely "Warning: make exited with status: 2" but no // other useful diagnostic. -vvvv would let a user see what's up, // but the user can't fix the problem even with that. return objs; } // Build a tiny kernel module to query type information static int make_typequery_kmod(systemtap_session& s, const vector& headers, string& name) { static unsigned tick = 0; string basename("typequery_kmod_" + lex_cast(++tick)); // create a subdirectory for the module string dir(s.tmpdir + "/" + basename); if (create_dir(dir.c_str()) != 0) { s.print_warning("failed to create directory for querying types."); s.set_try_server (); return 1; } name = dir + "/" + basename + ".ko"; // create a simple Makefile string makefile(dir + "/Makefile"); ofstream omf(makefile.c_str()); omf << "EXTRA_CFLAGS := -g -fno-eliminate-unused-debug-types" << endl; // RHBZ 655231: later rhel6 kernels' module-signing kbuild logic breaks out-of-tree modules omf << "CONFIG_MODULE_SIG := n" << endl; // NB: We use -include instead of #include because that gives us more power. // Using #include searches relative to the source's path, which in this case // is /tmp/..., so that's not helpful. Using -include will search relative // to the cwd, which will be the kernel build root. This means if you have a // full kernel build tree, it's possible to get at types that aren't in the // normal include path, e.g.: // @cast(foo, "bsd_acct_struct", "kernel")->... omf << "CFLAGS_" << basename << ".o :="; for (size_t i = 0; i < headers.size(); ++i) omf << " -include " << lex_cast_qstring(headers[i]); // XXX right quoting? omf << endl; omf << "obj-m := " + basename + ".o" << endl; omf.close(); // create our empty source file string source(dir + "/" + basename + ".c"); ofstream osrc(source.c_str()); osrc.close(); // make the module vector make_cmd = make_make_cmd(s, dir); bool quiet = (s.verbose < 4); int rc = run_make_cmd(s, make_cmd, quiet, quiet); if (rc) s.set_try_server (); return rc; } // Build a tiny user module to query type information static int make_typequery_umod(systemtap_session& s, const vector& headers, string& name) { static unsigned tick = 0; name = s.tmpdir + "/typequery_umod_" + lex_cast(++tick) + ".so"; // make the module // // NB: As with kmod, using -include makes relative paths more useful. The // cwd in this case will be the cwd of stap itself though, which may be // trickier to deal with. It might be better to "cd `dirname $script`" // first... vector cmd { "gcc", "-shared", "-g", "-fno-eliminate-unused-debug-types", "-xc", "/dev/null", "-o", name, }; for (size_t i = 0; i < headers.size(); ++i) cmd.insert(cmd.end(), { "-include", headers[i] }); bool quiet = (s.verbose < 4); int rc = stap_system (s.verbose, cmd, quiet, quiet); if (rc) s.set_try_server (); return rc; } int make_typequery(systemtap_session& s, string& module) { int rc; string new_module; vector headers; bool kernel = startswith(module, "kernel"); for (size_t end, i = kernel ? 6 : 0; i < module.size(); i = end + 1) { if (module[i] != '<') return -1; end = module.find('>', ++i); if (end == string::npos) return -1; string header = module.substr(i, end - i); vector matches; if (regexp_match(header, "^[a-zA-Z0-9/_.+-]+$", matches)) s.print_warning("skipping malformed @cast header \""+ header + "\""); else headers.push_back(header); } if (headers.empty()) return -1; if (kernel) rc = make_typequery_kmod(s, headers, new_module); else rc = make_typequery_umod(s, headers, new_module); if (!rc) module = new_module; return rc; } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/buildrun.h000066400000000000000000000016251305163227500154130ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2005 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef BUILDRUN_H #define BUILDRUN_H #include "elaborate.h" int compile_pass (systemtap_session& s); int uprobes_pass (systemtap_session& s); std::vector make_run_command (systemtap_session& s, const std::string& remotedir="", const std::string& version=VERSION); std::map make_tracequeries(systemtap_session& s, const std::map& contents); int make_typequery(systemtap_session& s, std::string& module); #endif // BUILDRUN_H /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/cache.cxx000066400000000000000000000316101305163227500152020ustar00rootroot00000000000000// systemtap cache manager // Copyright (C) 2006-2009 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "config.h" #include "session.h" #include "cache.h" #include "util.h" #include "stap-probe.h" #include #include #include #include #include #include #include extern "C" { #include #include #include #include #include #include #include #include } using namespace std; #define SYSTEMTAP_CACHE_MAX_FILENAME "cache_mb_limit" #define SYSTEMTAP_CACHE_DEFAULT_MB 256 #define SYSTEMTAP_CACHE_CLEAN_INTERVAL_FILENAME "cache_clean_interval_s" #define SYSTEMTAP_CACHE_CLEAN_DEFAULT_INTERVAL_S 300 struct cache_ent_info { vector paths; off_t size; // sum across all paths time_t mtime; // newest of all paths cache_ent_info(const vector& paths); bool operator<(const struct cache_ent_info& other) const; void unlink() const; }; void add_stapconf_to_cache(systemtap_session& s) { bool verbose = s.verbose > 1; string stapconf_src_path = s.tmpdir + "/" + s.stapconf_name; if (!copy_file(stapconf_src_path, s.stapconf_path, verbose)) { // NB: this is not so severe as to prevent reuse of the .ko // already copied. // // s.use_script_cache = false; // return; } } void add_script_to_cache(systemtap_session& s) { bool verbose = s.verbose > 1; // PR10543: clean the cache *before* we try putting something new into it. // We don't want to risk having the brand new contents being erased again. clean_cache(s); string module_src_path = s.tmpdir + "/" + s.module_filename(); PROBE2(stap, cache__add__module, module_src_path.c_str(), s.hash_path.c_str()); if (!copy_file(module_src_path, s.hash_path, verbose)) { s.use_script_cache = false; return; } // Copy the signature file, if any. It is not an error if this fails. if (file_exists (module_src_path + ".sgn")) copy_file(module_src_path + ".sgn", s.hash_path + ".sgn", verbose); string c_dest_path = s.hash_path; if (endswith(c_dest_path, ".ko") || endswith(c_dest_path, ".so")) c_dest_path.resize(c_dest_path.size() - 3); c_dest_path += ".c"; PROBE2(stap, cache__add__source, s.translated_source.c_str(), c_dest_path.c_str()); if (!copy_file(s.translated_source, c_dest_path, verbose)) { // NB: this is not so severe as to prevent reuse of the .ko // already copied. // // s.use_script_cache = false; } } bool get_stapconf_from_cache(systemtap_session& s) { if (s.poison_cache) return false; string stapconf_dest_path = s.tmpdir + "/" + s.stapconf_name; int fd_stapconf; // See if stapconf exists fd_stapconf = open(s.stapconf_path.c_str(), O_RDONLY); if (fd_stapconf == -1) { // It isn't in cache. return false; } // Copy the stapconf header file to the destination if (!get_file_size(fd_stapconf) || !copy_file(s.stapconf_path, stapconf_dest_path)) { close(fd_stapconf); return false; } // We're done with this file handle. close(fd_stapconf); if (s.verbose > 1) clog << _("Pass 4: using cached ") << s.stapconf_path << endl; return true; } bool get_script_from_cache(systemtap_session& s) { if (s.poison_cache) return false; string module_dest_path = s.tmpdir + "/" + s.module_filename(); string c_src_path = s.hash_path; int fd_module, fd_c; if (endswith(c_src_path, ".ko") || endswith(c_src_path, ".so")) c_src_path.resize(c_src_path.size() - 3); c_src_path += ".c"; // See if module exists fd_module = open(s.hash_path.c_str(), O_RDONLY); if (fd_module == -1) { // It isn't in cache. return false; } // See if C file exists. fd_c = open(c_src_path.c_str(), O_RDONLY); if (fd_c == -1) { // The module is there, but the C file isn't. Cleanup and // return. close(fd_module); unlink(s.hash_path.c_str()); return false; } // Check that the files aren't empty, and then // copy the cached C file to the destination if (!get_file_size(fd_module) || !get_file_size(fd_c) || !copy_file(c_src_path, s.translated_source)) { close(fd_module); close(fd_c); return false; } // Copy the cached module to the destination (if needed) if (s.last_pass != 3) { if (!copy_file(s.hash_path, module_dest_path)) { unlink(c_src_path.c_str()); close(fd_module); close(fd_c); return false; } // Copy the module signature file, if any. // It is not an error if this fails. if (file_exists (s.hash_path + ".sgn")) copy_file(s.hash_path + ".sgn", module_dest_path + ".sgn"); } // We're done with these file handles. close(fd_module); close(fd_c); // To preserve semantics (since this will happen if we're not // caching), display the C source if the last pass is 3. if (s.last_pass == 3) { ifstream i (s.translated_source.c_str()); cout << i.rdbuf(); } // And similarly, display probe module name for -p4. if (s.last_pass == 4) cout << s.hash_path << endl; // If everything worked, tell the user. We need to do this here, // since if copying the cached C file works, but copying the cached // module fails, we remove the cached C file and let the C file get // regenerated. // NB: don't use s.verbose here, since we're still in pass-2, // i.e., s.verbose = s.perpass_verbose[1]. if (s.perpass_verbose[2]) clog << _("Pass 3: using cached ") << c_src_path << endl; if (s.perpass_verbose[3] && s.last_pass != 3) clog << _("Pass 4: using cached ") << s.hash_path << endl; PROBE2(stap, cache__get, c_src_path.c_str(), s.hash_path.c_str()); return true; } void clean_cache(systemtap_session& s) { if (s.cache_path != "") { /* Get cache size limit from file in the stap cache dir */ string cache_max_filename = s.cache_path + "/"; cache_max_filename += SYSTEMTAP_CACHE_MAX_FILENAME; ifstream cache_max_file(cache_max_filename.c_str(), ios::in); unsigned long cache_mb_max; if (cache_max_file.is_open()) { cache_max_file >> cache_mb_max; cache_max_file.close(); } else { //file doesnt exist, create a default size ofstream default_cache_max(cache_max_filename.c_str(), ios::out); default_cache_max << SYSTEMTAP_CACHE_DEFAULT_MB << endl; cache_mb_max = SYSTEMTAP_CACHE_DEFAULT_MB; if (s.verbose > 1) clog << _F("Cache limit file %s/%s missing, creating default.", s.cache_path.c_str(), SYSTEMTAP_CACHE_MAX_FILENAME) << endl; } /* Get cache clean interval from file in the stap cache dir */ string cache_clean_interval_filename = s.cache_path + "/"; cache_clean_interval_filename += SYSTEMTAP_CACHE_CLEAN_INTERVAL_FILENAME; ifstream cache_clean_interval_file(cache_clean_interval_filename.c_str(), ios::in); unsigned long cache_clean_interval; if (cache_clean_interval_file.is_open()) { cache_clean_interval_file >> cache_clean_interval; cache_clean_interval_file.close(); } else { //file doesnt exist, create a default interval ofstream default_cache_clean_interval(cache_clean_interval_filename.c_str(), ios::out); default_cache_clean_interval << SYSTEMTAP_CACHE_CLEAN_DEFAULT_INTERVAL_S << endl; cache_clean_interval = SYSTEMTAP_CACHE_CLEAN_DEFAULT_INTERVAL_S; if (s.verbose > 1) clog << _F("Cache clean interval file %s missing, creating default.", cache_clean_interval_filename.c_str())<< endl; } /* Check the cache cleaning interval */ struct stat sb; if(stat(cache_clean_interval_filename.c_str(), &sb) < 0) { const char* e = strerror (errno); cerr << _F("clean_cache stat error: %s", e) << endl; return; } struct timeval current_time; gettimeofday(¤t_time, NULL); if(difftime(current_time.tv_sec, sb.st_mtime) < cache_clean_interval) { //interval not passed, don't continue if (s.verbose > 1) clog << _F("Cache cleaning skipped, interval not reached %lu s / %lu s.", (current_time.tv_sec-sb.st_mtime), cache_clean_interval) << endl; return; } else { //interval reached, continue if (s.verbose > 1) clog << _F("Cleaning cache, interval reached %lu s > %lu s.", (current_time.tv_sec-sb.st_mtime), cache_clean_interval) << endl; } // glob for all files that look like hashes glob_t cache_glob; ostringstream glob_pattern; glob_pattern << s.cache_path << "/*/*"; for (unsigned int i = 0; i < 32; i++) glob_pattern << "[[:xdigit:]]"; glob_pattern << "*"; int rc = glob(glob_pattern.str().c_str(), 0, NULL, &cache_glob); if (rc) { cerr << _F("clean_cache glob error rc=%d", rc) << endl; return; } regex_t hash_len_re; rc = regcomp (&hash_len_re, "([[:xdigit:]]{32}_[[:digit:]]+)", REG_EXTENDED); if (rc) { cerr << _F("clean_cache regcomp error rc=%d", rc) << endl; globfree(&cache_glob); return; } // group all files with the same HASH_LEN map > cache_groups; for (size_t i = 0; i < cache_glob.gl_pathc; i++) { const char* path = cache_glob.gl_pathv[i]; regmatch_t hash_len; rc = regexec(&hash_len_re, path, 1, &hash_len, 0); if (rc || hash_len.rm_so == -1 || hash_len.rm_eo == -1) cache_groups[path].push_back(path); // ungrouped else cache_groups[string(path + hash_len.rm_so, hash_len.rm_eo - hash_len.rm_so)] .push_back(path); } regfree(&hash_len_re); globfree(&cache_glob); // create each cache entry and accumulate the sum off_t cache_size_b = 0; set cache_contents; for (map >::const_iterator it = cache_groups.begin(); it != cache_groups.end(); ++it) { cache_ent_info cur_info(it->second); if (cache_contents.insert(cur_info).second) cache_size_b += cur_info.size; } unsigned long r_cache_size = cache_size_b; vector removed; //unlink .ko and .c until the cache size is under the limit for (set::iterator i = cache_contents.begin(); i != cache_contents.end(); ++i) { if (r_cache_size < cache_mb_max * 1024 * 1024) //convert cache_mb_max to bytes break; //remove this (*i) cache_entry, add to removed list for (size_t j = 0; j < i->paths.size(); ++j) PROBE1(stap, cache__clean, i->paths[j].c_str()); i->unlink(); r_cache_size -= i->size; removed.push_back(&*i); } if (s.verbose > 1 && !removed.empty()) { clog << _("Cache cleaning successful, removed entries: ") << endl; for (size_t i = 0; i < removed.size(); ++i) for (size_t j = 0; j < removed[i]->paths.size(); ++j) clog << " " << removed[i]->paths[j] << endl; } if(utime(cache_clean_interval_filename.c_str(), NULL)<0) { const char* e = strerror (errno); cerr << _F("clean_cache utime error: %s", e) << endl; return; } } else { if (s.verbose > 1) clog << _("Cache cleaning skipped, no cache path.") << endl; } } cache_ent_info::cache_ent_info(const vector& paths): paths(paths), size(0), mtime(0) { struct stat file_info; for (size_t i = 0; i < paths.size(); ++i) if (stat(paths[i].c_str(), &file_info) == 0) { size += file_info.st_size; if (file_info.st_mtime > mtime) mtime = file_info.st_mtime; } } // The ordering here determines the order that // files will be removed from the cache. bool cache_ent_info::operator<(const struct cache_ent_info& other) const { if (mtime != other.mtime) return mtime < other.mtime; if (size != other.size) return size < other.size; if (paths.size() != other.paths.size()) return paths.size() < other.paths.size(); for (size_t i = 0; i < paths.size(); ++i) if (paths[i] != other.paths[i]) return paths[i] < other.paths[i]; return false; } void cache_ent_info::unlink() const { for (size_t i = 0; i < paths.size(); ++i) ::unlink(paths[i].c_str()); } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/cache.h000066400000000000000000000004601305163227500146260ustar00rootroot00000000000000void add_script_to_cache(systemtap_session& s); bool get_script_from_cache(systemtap_session& s); void add_stapconf_to_cache(systemtap_session& s); bool get_stapconf_from_cache(systemtap_session& s); void clean_cache(systemtap_session& s); /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/cmdline.cxx000066400000000000000000000107041305163227500155530ustar00rootroot00000000000000// Shared data for parsing the stap command line // Copyright (C) 2014 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include #include "cmdline.h" // NB: when adding new options, consider very carefully whether they // should be restricted from stap clients (after --client-options)! struct option stap_long_options[] = { { "skip-badvars", no_argument, NULL, LONG_OPT_SKIP_BADVARS }, { "vp", required_argument, NULL, LONG_OPT_VERBOSE_PASS }, { "unprivileged", no_argument, NULL, LONG_OPT_UNPRIVILEGED }, { "client-options", no_argument, NULL, LONG_OPT_CLIENT_OPTIONS }, { "help", no_argument, NULL, LONG_OPT_HELP }, { "disable-cache", no_argument, NULL, LONG_OPT_DISABLE_CACHE }, { "poison-cache", no_argument, NULL, LONG_OPT_POISON_CACHE }, { "clean-cache", no_argument, NULL, LONG_OPT_CLEAN_CACHE }, { "compatible", required_argument, NULL, LONG_OPT_COMPATIBLE }, { "ldd", no_argument, NULL, LONG_OPT_LDD }, { "use-server", optional_argument, NULL, LONG_OPT_USE_SERVER }, { "list-servers", optional_argument, NULL, LONG_OPT_LIST_SERVERS }, { "trust-servers", optional_argument, NULL, LONG_OPT_TRUST_SERVERS }, { "use-server-on-error", optional_argument, NULL, LONG_OPT_USE_SERVER_ON_ERROR }, { "all-modules", no_argument, NULL, LONG_OPT_ALL_MODULES }, { "remote", required_argument, NULL, LONG_OPT_REMOTE }, { "remote-prefix", no_argument, NULL, LONG_OPT_REMOTE_PREFIX }, { "check-version", no_argument, NULL, LONG_OPT_CHECK_VERSION }, { "version", no_argument, NULL, LONG_OPT_VERSION }, { "tmpdir", required_argument, NULL, LONG_OPT_TMPDIR }, { "download-debuginfo", optional_argument, NULL, LONG_OPT_DOWNLOAD_DEBUGINFO }, { "dump-probe-types", no_argument, NULL, LONG_OPT_DUMP_PROBE_TYPES }, { "dump-probe-aliases", no_argument, NULL, LONG_OPT_DUMP_PROBE_ALIASES }, { "dump-functions", no_argument, NULL, LONG_OPT_DUMP_FUNCTIONS }, { "privilege", required_argument, NULL, LONG_OPT_PRIVILEGE }, { "suppress-handler-errors", no_argument, NULL, LONG_OPT_SUPPRESS_HANDLER_ERRORS }, { "modinfo", required_argument, NULL, LONG_OPT_MODINFO }, { "rlimit-as", required_argument, NULL, LONG_OPT_RLIMIT_AS }, { "rlimit-cpu", required_argument, NULL, LONG_OPT_RLIMIT_CPU }, { "rlimit-nproc", required_argument, NULL, LONG_OPT_RLIMIT_NPROC }, { "rlimit-stack", required_argument, NULL, LONG_OPT_RLIMIT_STACK }, { "rlimit-fsize", required_argument, NULL, LONG_OPT_RLIMIT_FSIZE }, { "sysroot", required_argument, NULL, LONG_OPT_SYSROOT }, { "sysenv", required_argument, NULL, LONG_OPT_SYSENV }, { "suppress-time-limits", no_argument, NULL, LONG_OPT_SUPPRESS_TIME_LIMITS }, { "runtime", required_argument, NULL, LONG_OPT_RUNTIME }, { "dyninst", no_argument, NULL, LONG_OPT_RUNTIME_DYNINST }, { "benchmark-sdt", no_argument, NULL, LONG_OPT_BENCHMARK_SDT }, { "benchmark-sdt-loops", required_argument, NULL, LONG_OPT_BENCHMARK_SDT_LOOPS }, { "benchmark-sdt-threads", required_argument, NULL, LONG_OPT_BENCHMARK_SDT_THREADS }, { "color", optional_argument, NULL, LONG_OPT_COLOR_ERRS }, { "colour", optional_argument, NULL, LONG_OPT_COLOR_ERRS }, { "prologue-searching", optional_argument, NULL, LONG_OPT_PROLOGUE_SEARCHING }, { "save-uprobes", no_argument, NULL, LONG_OPT_SAVE_UPROBES }, { "target-namespaces", required_argument, NULL, LONG_OPT_TARGET_NAMESPACES }, { "monitor", optional_argument, NULL, LONG_OPT_MONITOR }, { "interactive", no_argument, NULL, LONG_OPT_INTERACTIVE}, { NULL, 0, NULL, 0 } }; systemtap-3.1/cmdline.h000066400000000000000000000040711305163227500152000ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2014 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef CMDLINE_H #define CMDLINE_H 1 extern "C" { #include } // NB: when adding new options, consider very carefully whether they // should be restricted from stap clients (after --client-options)! // NB: The values of these enumerators must not conflict with the values of ordinary // characters, since those are returned by getopt_long for short options. enum { LONG_OPT_VERBOSE_PASS = 256, LONG_OPT_SKIP_BADVARS, LONG_OPT_UNPRIVILEGED, LONG_OPT_CLIENT_OPTIONS, LONG_OPT_HELP, LONG_OPT_DISABLE_CACHE, LONG_OPT_POISON_CACHE, LONG_OPT_CLEAN_CACHE, LONG_OPT_COMPATIBLE, LONG_OPT_LDD, LONG_OPT_USE_SERVER, LONG_OPT_LIST_SERVERS, LONG_OPT_TRUST_SERVERS, LONG_OPT_ALL_MODULES, LONG_OPT_REMOTE, LONG_OPT_CHECK_VERSION, LONG_OPT_USE_SERVER_ON_ERROR, LONG_OPT_VERSION, LONG_OPT_REMOTE_PREFIX, LONG_OPT_TMPDIR, LONG_OPT_DOWNLOAD_DEBUGINFO, LONG_OPT_DUMP_PROBE_TYPES, LONG_OPT_DUMP_PROBE_ALIASES, LONG_OPT_DUMP_FUNCTIONS, LONG_OPT_PRIVILEGE, LONG_OPT_SUPPRESS_HANDLER_ERRORS, LONG_OPT_MODINFO, LONG_OPT_RLIMIT_AS, LONG_OPT_RLIMIT_CPU, LONG_OPT_RLIMIT_NPROC, LONG_OPT_RLIMIT_STACK, LONG_OPT_RLIMIT_FSIZE, LONG_OPT_SYSROOT, LONG_OPT_SYSENV, LONG_OPT_SUPPRESS_TIME_LIMITS, LONG_OPT_RUNTIME, LONG_OPT_RUNTIME_DYNINST, LONG_OPT_BENCHMARK_SDT, LONG_OPT_BENCHMARK_SDT_LOOPS, LONG_OPT_BENCHMARK_SDT_THREADS, LONG_OPT_COLOR_ERRS, LONG_OPT_PROLOGUE_SEARCHING, LONG_OPT_SAVE_UPROBES, LONG_OPT_TARGET_NAMESPACES, LONG_OPT_MONITOR, LONG_OPT_INTERACTIVE, }; // NB: when adding new options, consider very carefully whether they // should be restricted from stap clients (after --client-options)! #define STAP_SHORT_OPTIONS "hVvtp:I:e:E:o:R:r:a:m:kgPc:x:D:bs:uqiwl:d:L:FS:B:J:jWG:T:" extern struct option stap_long_options[]; #endif // CMDLINE_H systemtap-3.1/compile000077500000000000000000000162451305163227500150000ustar00rootroot00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: systemtap-3.1/config.guess000077500000000000000000001236721305163227500157450ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: systemtap-3.1/config.in000066400000000000000000000127341305163227500152160ustar00rootroot00000000000000/* config.in. Generated from configure.ac by autoheader. */ /* Configuration/build date */ #undef DATE /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* make -P prologue-searching default */ #undef ENABLE_PROLOGUES /* Define to 1 to enable process.mark probes in stap, staprun, stapio. */ #undef ENABLE_SDT_PROBES /* Define to 1 if you have the avahi libraries. */ #undef HAVE_AVAHI /* Define to 1 if you have the header file. */ #undef HAVE_BOOST_UTILITY_STRING_REF_HPP /* Define to 1 if you have the header file. */ #undef HAVE_BPATCH_OBJECT_H /* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define to 1 if you have the header file. */ #undef HAVE_CRASH_DEFS_H /* define if the compiler supports basic C++11 syntax */ #undef HAVE_CXX11 /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if Dyninst is enabled */ #undef HAVE_DYNINST /* Define to 1 if F_SETPIPE_SZ is available. */ #undef HAVE_F_SETPIPE_SZ /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Flag indicating that libHelperSDT.so is available (can be found in PKGLIBDIR) */ #undef HAVE_JAVA /* Define to 1 if you have the `dw' library (-ldw). */ #undef HAVE_LIBDW /* Define to 1 if you have the `elf' library (-lelf). */ #undef HAVE_LIBELF /* Define if you have the readline library (-lreadline). */ #undef HAVE_LIBREADLINE /* have librpm */ #undef HAVE_LIBRPM /* have librpmio */ #undef HAVE_LIBRPMIO /* Define to 1 if you have the 'sqlite3' library (-lsqlite3). */ #undef HAVE_LIBSQLITE3 /* Define to 1 if libvirt development libraries are installed */ #undef HAVE_LIBVIRT /* Define to 1 if libxml2 development libraries are installed */ #undef HAVE_LIBXML2 /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if json-c and ncurses libraries are installed */ #undef HAVE_MONITOR_LIBS /* Define to 1 if you have the nss libraries. */ #undef HAVE_NSS /* Define to 1 if you have the `openat' function. */ #undef HAVE_OPENAT /* Define to 1 if you have the `ppoll' function. */ #undef HAVE_PPOLL /* Define to 1 to enable python version 2 probe support in systemtap. */ #undef HAVE_PYTHON2_PROBES /* Define to 1 to enable python version 3 probe support in systemtap. */ #undef HAVE_PYTHON3_PROBES /* Define to 1 if you have the header file. */ #undef HAVE_PYTHON_H /* Define to 1 if you have the SELinux libraries. */ #undef HAVE_SELINUX /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Base name of the python3 interpreter binary. */ #undef PYTHON3_BASENAME /* Base name of the python2 interpreter binary. */ #undef PYTHON_BASENAME /* extra stap version code */ #undef STAP_EXTRA_VERSION /* configure prefix location */ #undef STAP_PREFIX /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE systemtap-3.1/config.rpath000077500000000000000000000442161305163227500157310ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2014 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) wl= ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd[23].*) library_names_spec='$libname$shrext$versuffix' ;; freebsd* | dragonfly*) library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: systemtap-3.1/configure000077500000000000000000015257121305163227500153360ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for systemtap 3.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: systemtap@sourceware.org about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='systemtap' PACKAGE_TARNAME='systemtap' PACKAGE_VERSION='3.1' PACKAGE_STRING='systemtap 3.1' PACKAGE_BUGREPORT='systemtap@sourceware.org' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" gt_needs= enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS subdirs STAP_PREFIX STAP_EXTRA_VERSION LOCALEDIR ENABLE_NLS HAVE_JAVA_FALSE HAVE_JAVA_TRUE JAVADIR have_jar have_javac HAVE_SELINUX_FALSE HAVE_SELINUX_TRUE selinux_LIBS selinux_CFLAGS support_section_question HAVE_MONITOR_LIBS_FALSE HAVE_MONITOR_LIBS_TRUE ncurses_LIBS ncurses_CFLAGS jsonc_LIBS jsonc_CFLAGS HAVE_PYTHON_PROBES_FALSE HAVE_PYTHON_PROBES_TRUE HAVE_PYTHON3_PROBES_FALSE HAVE_PYTHON3_PROBES_TRUE PYTHON3_CPPFLAGS PYTHON3_CONFIG HAVE_PYTHON2_PROBES_FALSE HAVE_PYTHON2_PROBES_TRUE PYTHON_CPPFLAGS PYTHON_CONFIG BUILD_VIRT_FALSE BUILD_VIRT_TRUE HAVE_LIBXML2_FALSE HAVE_LIBXML2_TRUE libxml2_LIBS libxml2_CFLAGS HAVE_LIBVIRT_FALSE HAVE_LIBVIRT_TRUE libvirt_LIBS libvirt_CFLAGS HAVE_DYNINST_FALSE HAVE_DYNINST_TRUE DYNINST_LDFLAGS DYNINST_CXXFLAGS CXXCPP DATE staprun_LIBS stap_LIBS elfutils_abs_srcdir BUILD_ELFUTILS_FALSE BUILD_ELFUTILS_TRUE preferred_python HAVE_LIBREADLINE_FALSE HAVE_LIBREADLINE_TRUE READLINE_LIBS HAVE_AVAHI_FALSE HAVE_AVAHI_TRUE avahi_LIBS avahi_CFLAGS BUILD_SERVER_FALSE BUILD_SERVER_TRUE dracutbindir dracutstap HAVE_NSS_FALSE HAVE_NSS_TRUE nss_LIBS nss_CFLAGS XMLTO_STRINGPARAM_FALSE XMLTO_STRINGPARAM_TRUE BUILD_HTMLDOCS_FALSE BUILD_HTMLDOCS_TRUE HAVE_XMLTO_FALSE HAVE_XMLTO_TRUE HAVE_FOP_FALSE HAVE_FOP_TRUE have_fop have_xmlto BUILD_REFDOCS_FALSE BUILD_REFDOCS_TRUE BUILD_DOCS_FALSE BUILD_DOCS_TRUE have_ps2pdf have_dvips have_latex BUILD_CRASHMOD_FALSE BUILD_CRASHMOD_TRUE staplog_CPPFLAGS BUILD_TRANSLATOR_FALSE BUILD_TRANSLATOR_TRUE sqlite3_LIBS sqlite3_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG PIECXXFLAGS PIECFLAGS PIELDFLAGS HAVE_CXX11 py3execdir python3dir PYTHON3_PLATFORM PYTHON3_EXEC_PREFIX PYTHON3_PREFIX PYTHON3_VERSION PYTHON3 pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON PYTHON_UNKNOWN POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS SED RANLIB am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX LN_S EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_largefile enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_prologues enable_sdt_probes enable_ssp enable_pie enable_sqlite enable_translator enable_crash enable_docs enable_refdocs enable_htmldocs with_nss with_dracutstap with_dracutbindir enable_server with_avahi with_rpm with_python3 with_elfutils with_dyninst enable_virt with_python2_probes with_python3_probes with_selinux with_java with_extra_version ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC PYTHON PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR sqlite3_CFLAGS sqlite3_LIBS nss_CFLAGS nss_LIBS avahi_CFLAGS avahi_LIBS CXXCPP libvirt_CFLAGS libvirt_LIBS libxml2_CFLAGS libxml2_LIBS jsonc_CFLAGS jsonc_LIBS ncurses_CFLAGS ncurses_LIBS selinux_CFLAGS selinux_LIBS' ac_subdirs_all='testsuite' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures systemtap 3.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/systemtap] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of systemtap 3.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-largefile omit support for large files --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --enable-prologues make -P prologue-searching default --disable-sdt-probes disable process.mark probes in stap, staprun, stapio --disable-ssp disable gcc stack-protector --enable-pie enable position-independent-executable --enable-sqlite build with sqlite support --disable-translator build only runtime utilities --enable-crash[=DIRECTORY] enable crash extension (default is disabled). Optional DIRECTORY is the path to the crash header file (needed if installed in a non-standard location). --enable-docs enable building documentation (default on if latex etc. found). --enable-refdocs enable building reference documentation (default on if other documentation built). --enable-htmldocs enable building html documentation (default off). --enable-server enable building of stap-server (default on if nss etc. found). --enable-virt enable building of stapvirt support (default on if libvirt etc. found). Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --without-nss Do not use NSS even if present --with-dracutstap=DIR Install dracut module files in DIR --with-dracutbindir=DIR Use the dracut binary located in DIR --without-avahi Do not use Avahi even if present --with-rpm query rpm database for missing debuginfos --with-python3 prefer /usr/bin/python3 --with-elfutils=DIRECTORY find elfutils source code in DIRECTORY --with-dyninst=DIRECTORY find dyninst headers/libraries in DIRECTORY --without-python2-probes Disable building python version 2 probe support, even if it is available --without-python3-probes Disable building python version 3 probe support, even if it is available --without-selinux Do not use libselinux even if present --with-java=DIRECTORY Specify JDK directory to compile libHelperSDT.so against (default is /usr/lib/jvm/java) --with-extra-version=STRING Add STRING to stap -V version Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags PYTHON the Python interpreter PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path sqlite3_CFLAGS C compiler flags for sqlite3, overriding pkg-config sqlite3_LIBS linker flags for sqlite3, overriding pkg-config nss_CFLAGS C compiler flags for nss, overriding pkg-config nss_LIBS linker flags for nss, overriding pkg-config avahi_CFLAGS C compiler flags for avahi, overriding pkg-config avahi_LIBS linker flags for avahi, overriding pkg-config CXXCPP C++ preprocessor libvirt_CFLAGS C compiler flags for libvirt, overriding pkg-config libvirt_LIBS linker flags for libvirt, overriding pkg-config libxml2_CFLAGS C compiler flags for libxml2, overriding pkg-config libxml2_LIBS linker flags for libxml2, overriding pkg-config jsonc_CFLAGS C compiler flags for jsonc, overriding pkg-config jsonc_LIBS linker flags for jsonc, overriding pkg-config ncurses_CFLAGS C compiler flags for ncurses, overriding pkg-config ncurses_LIBS linker flags for ncurses, overriding pkg-config selinux_CFLAGS C compiler flags for selinux, overriding pkg-config selinux_LIBS linker flags for selinux, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF systemtap configure 3.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------------- ## ## Report this to systemtap@sourceware.org ## ## --------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------------- ## ## Report this to systemtap@sourceware.org ## ## --------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by systemtap $as_me 3.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='systemtap' VERSION='3.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi for ac_func in ppoll do : ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll" if test "x$ac_cv_func_ppoll" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PPOLL 1 _ACEOF fi done for ac_func in openat do : ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat" if test "x$ac_cv_func_openat" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_OPENAT 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.19 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" if test "x$GMSGFMT" = "x:"; then as_fn_error $? "missing gnu /usr/bin/msgfmt" "$LINENO" 5 fi # We want the 'PYTHON' varible to be python version 2. We also want # our custom 'PYTHON3' varible to be python version 3. # # Note that the python2/python3 code was inspired by code in the # 'abrt' configure: # # # First, figure out what version of python is in the executable named # 'python'. On most systems that is python version 2, but on arch # linux that is python version 3. # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON_UNKNOWN+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON_UNKNOWN in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_UNKNOWN="$PYTHON_UNKNOWN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON_UNKNOWN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON_UNKNOWN" && ac_cv_path_PYTHON_UNKNOWN="no" ;; esac fi PYTHON_UNKNOWN=$ac_cv_path_PYTHON_UNKNOWN if test -n "$PYTHON_UNKNOWN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_UNKNOWN" >&5 $as_echo "$PYTHON_UNKNOWN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$PYTHON_UNKNOWN" != "xno"; then # OK, we found 'python'. What version is it? { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON_UNKNOWN is version 2 or 3" >&5 $as_echo_n "checking whether $PYTHON_UNKNOWN is version 2 or 3... " >&6; } if ${ac_cv_python_unknown_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python_unknown_version=`$PYTHON_UNKNOWN -c "import sys; sys.stdout.write(sys.version[:3][0])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python_unknown_version" >&5 $as_echo "$ac_cv_python_unknown_version" >&6; } fi # Now we'll update the _AM_PYTHON_INTERPRETER_LIST variable (which # AM_PATH_PYTHON uses) to only be version 2 versions of python. Note # that the m4_define happens when autoconf is run, but the # FIRST_PYTHON_INTERPRETER variable expansion will happen when the # user runs configure. if test "x$PYTHON_UNKNOWN" != "xno" -a "x$ac_cv_python_unknown_version" = "x2"; then FIRST_PYTHON_INTERPRETER=python else FIRST_PYTHON_INTERPRETER=python2 fi # Now we can call AM_PATH_PYTHON to find python version 2.6+ (and # version 2 only). if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.6" >&5 $as_echo_n "checking whether $PYTHON version is >= 2.6... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.6'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Python interpreter is too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.6" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.6... " >&6; } if ${am_cv_pathless_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in $FIRST_PYTHON_INTERPRETER python2 python2.7 python2.6 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.6'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if ${am_cv_python_version+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if ${am_cv_python_platform+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[:3] == '2.7': can_use_sysconfig = 0 except ImportError: pass" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi python_basename=$(basename "$PYTHON") cat >>confdefs.h <<_ACEOF #define PYTHON_BASENAME "${python_basename}" _ACEOF # AM_PATH_PYTHON defines 'pyexecdir'. Make sure the python and # pyexecdir variables get sent down to the subconfigure in the # testsuite directory. as_fn_append ac_configure_args " python='$PYTHON' pyexecdir='$pyexecdir'" # Now let's try to find python version 3. if test "x$PYTHON_UNKNOWN" != "xno" -a "x$python_unknown_version" = "x3"; then # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON3+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON3 in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON3="$PYTHON3" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON3="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON3=$ac_cv_path_PYTHON3 if test -n "$PYTHON3"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON3" >&5 $as_echo "$PYTHON3" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else for ac_prog in python3 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON3+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON3 in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON3="$PYTHON3" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON3="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON3=$ac_cv_path_PYTHON3 if test -n "$PYTHON3"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON3" >&5 $as_echo "$PYTHON3" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PYTHON3" && break done fi python3_basename=$(basename "$PYTHON3") cat >>confdefs.h <<_ACEOF #define PYTHON3_BASENAME "${python3_basename}" _ACEOF # If we found python version 3, set up the other variables for python # version 3 that AM_PATH_PYTHON sets up for python version 2. if test -n "$PYTHON3"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python3 version" >&5 $as_echo_n "checking for python3 version... " >&6; } if ${ac_cv_python3_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python3_version=`$PYTHON3 -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python3_version" >&5 $as_echo "$ac_cv_python3_version" >&6; } PYTHON3_VERSION=$ac_cv_python3_version PYTHON3_PREFIX='${prefix}' PYTHON3_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python3 platform" >&5 $as_echo_n "checking for python3 platform... " >&6; } if ${ac_cv_python3_platform+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python3_platform=`$PYTHON3 -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python3_platform" >&5 $as_echo "$ac_cv_python3_platform" >&6; } PYTHON3_PLATFORM=$ac_cv_python3_platform { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python3 script directory" >&5 $as_echo_n "checking for python3 script directory... " >&6; } if ${ac_cv_python3_dir+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_python3_dir=`$PYTHON3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(0,0,prefix='$PYTHON3_PREFIX'))"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_python3_dir" >&5 $as_echo "$ac_cv_python3_dir" >&6; } python3dir=$ac_cv_python3_dir { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python3 extension module directory" >&5 $as_echo_n "checking for python3 extension module directory... " >&6; } if ${ac_cv_py3execdir+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_py3execdir=`$PYTHON3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON3_EXEC_PREFIX'))"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_py3execdir" >&5 $as_echo "$ac_cv_py3execdir" >&6; } py3execdir=$ac_cv_py3execdir # Make sure the python3 and py3execdir variables get sent down to # the subconfigure in the testsuite directory. as_fn_append ac_configure_args " python3='$PYTHON3' py3execdir='$ac_cv_py3execdir'" fi if test "${enable_prologues+set}" != set; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if prologue searching should be the default" >&5 $as_echo_n "checking to see if prologue searching should be the default... " >&6; } if { echo '#if __i386__ == 1 && __GNUC__ < 4' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then enable_prologues=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Check whether --enable-prologues was given. if test "${enable_prologues+set}" = set; then : enableval=$enable_prologues; if test "$enable_prologues" = yes; then $as_echo "#define ENABLE_PROLOGUES /**/" >>confdefs.h fi fi if test "${enable_sdt_probes+set}" != set; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if sdt probes should be the default" >&5 $as_echo_n "checking to see if sdt probes should be the default... " >&6; } if { echo '#if __GNUC__ < 4' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then enable_sdt_probes=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi # Check whether --enable-sdt-probes was given. if test "${enable_sdt_probes+set}" = set; then : enableval=$enable_sdt_probes; fi if test "x$enable_sdt_probes" != xno; then : $as_echo "#define ENABLE_SDT_PROBES 1" >>confdefs.h fi ax_cxx_compile_cxx11_required=false ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } if ${ax_cv_cxx_compile_cxx11+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_cxx_compile_cxx11=yes else ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 $as_echo "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for switch in -std=c++11 -std=c++0x +std=c++11 "-h std=c++11"; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" ac_success=yes break fi done fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX11=0 { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 $as_echo "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 $as_echo "#define HAVE_CXX11 1" >>confdefs.h fi if test "x$HAVE_CXX11" != x1; then : ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -std=c++0x" >&5 $as_echo_n "checking whether C++ compiler accepts -std=c++0x... " >&6; } if ${ax_cv_check_cxxflags___std_cpp0x+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -std=c++0x" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_check_cxxflags___std_cpp0x=yes else ax_cv_check_cxxflags___std_cpp0x=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags___std_cpp0x" >&5 $as_echo "$ax_cv_check_cxxflags___std_cpp0x" >&6; } if test "x$ax_cv_check_cxxflags___std_cpp0x" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling with -std=c++0x" >&5 $as_echo "$as_me: Compiling with -std=c++0x" >&6;} CXX="$CXX -std=c++0x" HAVE_CXX11=1 else as_fn_error $? "A compiler with C++11 support is required." "$LINENO" 5 fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi # Check whether --enable-ssp was given. if test "${enable_ssp+set}" = set; then : enableval=$enable_ssp; fi if test "x$enable_ssp" != xno; then : save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2" CFLAGS="$CFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int something (); _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling with gcc -fstack-protector-all et al." >&5 $as_echo "$as_me: Compiling with gcc -fstack-protector-all et al." >&6;} CFLAGS="$save_CFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2" CXXFLAGS="$save_CXXFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2" else { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not support -fstack-protector-all et al." >&5 $as_echo "$as_me: Compiler does not support -fstack-protector-all et al." >&6;} CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Compiling without fPIE by default (see PR 9922) # Check whether --enable-pie was given. if test "${enable_pie+set}" = set; then : enableval=$enable_pie; fi if test "x$enable_pie" == xyes; then : PIECFLAGS='-fPIE' PIECXXFLAGS='-fPIE' PIELDFLAGS='-pie -Wl,-z,relro -Wl,-z,now' save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" save_LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS $PIECFLAGS" CXXFLAGS="$CXXFLAGS $PIECXXFLAGS" LDFLAGS="$LDFLAGS $PIELDFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void main () {} _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling with gcc pie et al." >&5 $as_echo "$as_me: Compiling with gcc pie et al." >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not support -pie et al." >&5 $as_echo "$as_me: Compiler does not support -pie et al." >&6;} PIECFLAGS="" PIECXXFLAGS="" PIELDFLAGS="" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" LDFLAGS="$save_LDFLAGS" fi # Check whether --enable-sqlite was given. if test "${enable_sqlite+set}" = set; then : enableval=$enable_sqlite; else enable_sqlite=check fi sqlite3_LIBS= if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test "x$enable_sqlite" != xno; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3" >&5 $as_echo_n "checking for sqlite3... " >&6; } if test -n "$sqlite3_CFLAGS"; then pkg_cv_sqlite3_CFLAGS="$sqlite3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 > 3.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 > 3.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_sqlite3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 > 3.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$sqlite3_LIBS"; then pkg_cv_sqlite3_LIBS="$sqlite3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 > 3.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 > 3.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_sqlite3_LIBS=`$PKG_CONFIG --libs "sqlite3 > 3.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then sqlite3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sqlite3 > 3.7" 2>&1` else sqlite3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sqlite3 > 3.7" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$sqlite3_PKG_ERRORS" >&5 if test "x$enable_sqlite" != xcheck; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--enable-sqlite was given, but test for sqlite failed See \`config.log' for more details" "$LINENO" 5; } fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_sqlite" != xcheck; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--enable-sqlite was given, but test for sqlite failed See \`config.log' for more details" "$LINENO" 5; } fi else sqlite3_CFLAGS=$pkg_cv_sqlite3_CFLAGS sqlite3_LIBS=$pkg_cv_sqlite3_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LIBSQLITE3 1" >>confdefs.h fi fi # Check whether --enable-translator was given. if test "${enable_translator+set}" = set; then : enableval=$enable_translator; else enable_translator="yes" fi if test "$enable_translator" == "yes"; then BUILD_TRANSLATOR_TRUE= BUILD_TRANSLATOR_FALSE='#' else BUILD_TRANSLATOR_TRUE='#' BUILD_TRANSLATOR_FALSE= fi # Check whether --enable-crash was given. if test "${enable_crash+set}" = set; then : enableval=$enable_crash; if test "$enable_crash" != "no"; then save_CPPFLAGS="$CPPFLAGS" if test "$enable_crash" != "yes"; then staplog_CPPFLAGS=-I$enable_crash CPPFLAGS="${staplog_CPPFLAGS} $CPPFLAGS" fi for ac_header in crash/defs.h do : ac_fn_c_check_header_compile "$LINENO" "crash/defs.h" "ac_cv_header_crash_defs_h" " #define NR_CPUS 256 " if test "x$ac_cv_header_crash_defs_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_CRASH_DEFS_H 1 _ACEOF else as_fn_error $? "cannot find required crash header (crash-devel may need to be installed)" "$LINENO" 5 fi done CPPFLAGS="$save_CPPFLAGS" fi else enable_crash="no" fi if test "$enable_crash" != "no"; then BUILD_CRASHMOD_TRUE= BUILD_CRASHMOD_FALSE='#' else BUILD_CRASHMOD_TRUE='#' BUILD_CRASHMOD_FALSE= fi building_docs="no" # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; enable_docs=$enableval else enable_docs="check" fi # Extract the first word of "latex", so it can be a program name with args. set dummy latex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_latex+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_latex"; then ac_cv_prog_have_latex="$have_latex" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_latex="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_latex" && ac_cv_prog_have_latex="no" fi fi have_latex=$ac_cv_prog_have_latex if test -n "$have_latex"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_latex" >&5 $as_echo "$have_latex" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "dvips", so it can be a program name with args. set dummy dvips; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_dvips+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_dvips"; then ac_cv_prog_have_dvips="$have_dvips" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_dvips="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_dvips" && ac_cv_prog_have_dvips="no" fi fi have_dvips=$ac_cv_prog_have_dvips if test -n "$have_dvips"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_dvips" >&5 $as_echo "$have_dvips" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "ps2pdf", so it can be a program name with args. set dummy ps2pdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_ps2pdf+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_ps2pdf"; then ac_cv_prog_have_ps2pdf="$have_ps2pdf" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_ps2pdf="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_ps2pdf" && ac_cv_prog_have_ps2pdf="no" fi fi have_ps2pdf=$ac_cv_prog_have_ps2pdf if test -n "$have_ps2pdf"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ps2pdf" >&5 $as_echo "$have_ps2pdf" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x${have_latex}${have_dvips}${have_ps2pdf}" != "xyesyesyes"; then if test "$enable_docs" == "yes"; then as_fn_error $? "cannot find all tools for building documentation" "$LINENO" 5 fi if test "$enable_docs" == "check"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: will not build documentation, cannot find all tools" >&5 $as_echo "$as_me: WARNING: will not build documentation, cannot find all tools" >&2;} fi fi if test "x${have_latex}${have_dvips}${have_ps2pdf}" == "xyesyesyes" -a "$enable_docs" != "no"; then building_docs="yes" fi if test "$building_docs" == "yes"; then BUILD_DOCS_TRUE= BUILD_DOCS_FALSE='#' else BUILD_DOCS_TRUE='#' BUILD_DOCS_FALSE= fi building_refdocs="no" # Check whether --enable-refdocs was given. if test "${enable_refdocs+set}" = set; then : enableval=$enable_refdocs; enable_refdocs=$enableval else enable_refdocs="check" fi if test "$building_docs" == "no" -a "$enable_refdocs" == "yes" ; then as_fn_error $? "must use --enable-docs with --enable-refdocs" "$LINENO" 5 fi if test "$enable_refdocs" != "no" -a "${building_docs}" == "yes"; then building_refdocs="yes" fi if test "$building_refdocs" == "yes"; then BUILD_REFDOCS_TRUE= BUILD_REFDOCS_FALSE='#' else BUILD_REFDOCS_TRUE='#' BUILD_REFDOCS_FALSE= fi # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_xmlto+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_xmlto"; then ac_cv_prog_have_xmlto="$have_xmlto" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_xmlto="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_xmlto" && ac_cv_prog_have_xmlto="no" fi fi have_xmlto=$ac_cv_prog_have_xmlto if test -n "$have_xmlto"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_xmlto" >&5 $as_echo "$have_xmlto" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "fop", so it can be a program name with args. set dummy fop; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_fop+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_fop"; then ac_cv_prog_have_fop="$have_fop" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_fop="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_fop" && ac_cv_prog_have_fop="no" fi fi have_fop=$ac_cv_prog_have_fop if test -n "$have_fop"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_fop" >&5 $as_echo "$have_fop" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x${have_fop}" == "xyes"; then # Due to rhbz505364 / 830266, we must actually test-run fop, not just # hope that it works. { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if xmlto --with-fop actually works" >&5 $as_echo_n "checking to see if xmlto --with-fop actually works... " >&6; } if xmlto --with-fop pdf ${srcdir}/doc/SystemTap_Tapset_Reference/dummy-tapsets.xml >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: it's dead, Jim" >&5 $as_echo "it's dead, Jim" >&6; } have_fop="broken" fi rm -f dummy-tapsets.pdf fi if test "$have_fop" == "yes"; then HAVE_FOP_TRUE= HAVE_FOP_FALSE='#' else HAVE_FOP_TRUE='#' HAVE_FOP_FALSE= fi if test "$have_xmlto" == "yes"; then HAVE_XMLTO_TRUE= HAVE_XMLTO_FALSE='#' else HAVE_XMLTO_TRUE='#' HAVE_XMLTO_FALSE= fi building_htmldocs="no" # Check whether --enable-htmldocs was given. if test "${enable_htmldocs+set}" = set; then : enableval=$enable_htmldocs; building_htmldocs=$enableval else building_htmldocs="no" fi if test "$have_xmlto" == "no" -a "$building_htmldocs" == "yes"; then as_fn_error $? "xmlto required for building html documentation" "$LINENO" 5 fi if test "$building_htmldocs" == "yes"; then BUILD_HTMLDOCS_TRUE= BUILD_HTMLDOCS_FALSE='#' else BUILD_HTMLDOCS_TRUE='#' BUILD_HTMLDOCS_FALSE= fi cat > conftest.xml << 'EOF' foo Logging Tapset log logging Description baz EOF if test "x${have_xmlto}" == "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlto --stringparam support" >&5 $as_echo_n "checking for xmlto --stringparam support... " >&6; } xmlto --stringparam man.authors.section.enabled=0 html-nochunks conftest.xml >/dev/null 2>&1 if test $? == 0; then have_xmlto_stringparam="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f conftest.html fi if test "$have_xmlto_stringparam" == "yes"; then XMLTO_STRINGPARAM_TRUE= XMLTO_STRINGPARAM_FALSE='#' else XMLTO_STRINGPARAM_TRUE='#' XMLTO_STRINGPARAM_FALSE= fi rm -f conftest.xml # Check whether --with-nss was given. if test "${with_nss+set}" = set; then : withval=$with_nss; fi if test "x$with_nss" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nss" >&5 $as_echo_n "checking for nss... " >&6; } if test -n "$nss_CFLAGS"; then pkg_cv_nss_CFLAGS="$nss_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss >= 3\""; } >&5 ($PKG_CONFIG --exists --print-errors "nss >= 3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_nss_CFLAGS=`$PKG_CONFIG --cflags "nss >= 3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$nss_LIBS"; then pkg_cv_nss_LIBS="$nss_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss >= 3\""; } >&5 ($PKG_CONFIG --exists --print-errors "nss >= 3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_nss_LIBS=`$PKG_CONFIG --libs "nss >= 3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then nss_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "nss >= 3" 2>&1` else nss_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "nss >= 3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$nss_PKG_ERRORS" >&5 have_nss=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_nss=no else nss_CFLAGS=$pkg_cv_nss_CFLAGS nss_LIBS=$pkg_cv_nss_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_nss=yes $as_echo "#define HAVE_NSS 1" >>confdefs.h fi else have_nss=no fi if test "${have_nss}" = "yes"; then HAVE_NSS_TRUE= HAVE_NSS_FALSE='#' else HAVE_NSS_TRUE='#' HAVE_NSS_FALSE= fi # Check whether --with-dracutstap was given. if test "${with_dracutstap+set}" = set; then : withval=$with_dracutstap; fi if test "x$with_dracutstap" != "x"; then : dracutstap="$with_dracutstap" else dracutstap=/usr/lib/dracut/modules.d/99stap fi { $as_echo "$as_me:${as_lineno-$LINENO}: using dracut module directory $dracutstap" >&5 $as_echo "$as_me: using dracut module directory $dracutstap" >&6;} # Check whether --with-dracutbindir was given. if test "${with_dracutbindir+set}" = set; then : withval=$with_dracutbindir; fi if test "x$with_dracutbindir" != "x"; then : dracutbindir="$with_dracutbindir" else dracutbindir=/sbin fi { $as_echo "$as_me:${as_lineno-$LINENO}: using dracut binary $dracutbindir" >&5 $as_echo "$as_me: using dracut binary $dracutbindir" >&6;} # Check whether --enable-server was given. if test "${enable_server+set}" = set; then : enableval=$enable_server; enable_server=$enableval else enable_server="check" fi if test "$enable_server" != "no"; then if test "x${have_nss}" != "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: will not build systemtap compile server, cannot find nss headers" >&5 $as_echo "$as_me: WARNING: will not build systemtap compile server, cannot find nss headers" >&2;} fi fi if test "${have_nss}" == "yes" -a "$enable_server" != "no"; then BUILD_SERVER_TRUE= BUILD_SERVER_FALSE='#' else BUILD_SERVER_TRUE='#' BUILD_SERVER_FALSE= fi if test "${have_nss}" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compile-server client functionality will be disabled, cannot find nss development files" >&5 $as_echo "$as_me: WARNING: compile-server client functionality will be disabled, cannot find nss development files" >&2;} fi # Check whether --with-avahi was given. if test "${with_avahi+set}" = set; then : withval=$with_avahi; fi if test "x$with_avahi" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for avahi" >&5 $as_echo_n "checking for avahi... " >&6; } if test -n "$avahi_CFLAGS"; then pkg_cv_avahi_CFLAGS="$avahi_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"avahi-client\""; } >&5 ($PKG_CONFIG --exists --print-errors "avahi-client") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_avahi_CFLAGS=`$PKG_CONFIG --cflags "avahi-client" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$avahi_LIBS"; then pkg_cv_avahi_LIBS="$avahi_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"avahi-client\""; } >&5 ($PKG_CONFIG --exists --print-errors "avahi-client") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_avahi_LIBS=`$PKG_CONFIG --libs "avahi-client" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then avahi_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "avahi-client" 2>&1` else avahi_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "avahi-client" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$avahi_PKG_ERRORS" >&5 have_avahi=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_avahi=no else avahi_CFLAGS=$pkg_cv_avahi_CFLAGS avahi_LIBS=$pkg_cv_avahi_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_avahi=yes $as_echo "#define HAVE_AVAHI 1" >>confdefs.h fi else have_avahi=no fi if test "${have_avahi}" = "yes"; then HAVE_AVAHI_TRUE= HAVE_AVAHI_FALSE='#' else HAVE_AVAHI_TRUE='#' HAVE_AVAHI_FALSE= fi if test "${have_avahi}" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: some compile-server functionality will be restricted, cannot find avahi development files" >&5 $as_echo "$as_me: WARNING: some compile-server functionality will be restricted, cannot find avahi development files" >&2;} fi # Check whether --with-rpm was given. if test "${with_rpm+set}" = set; then : withval=$with_rpm; else with_rpm="auto" fi if test "$with_rpm" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpmtsInitIterator in -lrpm" >&5 $as_echo_n "checking for rpmtsInitIterator in -lrpm... " >&6; } if ${ac_cv_lib_rpm_rpmtsInitIterator+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrpm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char rpmtsInitIterator (); int main () { return rpmtsInitIterator (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rpm_rpmtsInitIterator=yes else ac_cv_lib_rpm_rpmtsInitIterator=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rpm_rpmtsInitIterator" >&5 $as_echo "$ac_cv_lib_rpm_rpmtsInitIterator" >&6; } if test "x$ac_cv_lib_rpm_rpmtsInitIterator" = xyes; then : $as_echo "#define HAVE_LIBRPM 1" >>confdefs.h stap_LIBS="$stap_LIBS -lc -lrpm" have_librpm="yes" else have_librpm="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpmdbNextIterator in -lrpmdb" >&5 $as_echo_n "checking for rpmdbNextIterator in -lrpmdb... " >&6; } if ${ac_cv_lib_rpmdb_rpmdbNextIterator+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrpmdb $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char rpmdbNextIterator (); int main () { return rpmdbNextIterator (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rpmdb_rpmdbNextIterator=yes else ac_cv_lib_rpmdb_rpmdbNextIterator=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rpmdb_rpmdbNextIterator" >&5 $as_echo "$ac_cv_lib_rpmdb_rpmdbNextIterator" >&6; } if test "x$ac_cv_lib_rpmdb_rpmdbNextIterator" = xyes; then : stap_LIBS="$stap_LIBS -lrpmdb" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpmFreeCrypto in -lrpmio" >&5 $as_echo_n "checking for rpmFreeCrypto in -lrpmio... " >&6; } if ${ac_cv_lib_rpmio_rpmFreeCrypto+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrpmio $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char rpmFreeCrypto (); int main () { return rpmFreeCrypto (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rpmio_rpmFreeCrypto=yes else ac_cv_lib_rpmio_rpmFreeCrypto=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rpmio_rpmFreeCrypto" >&5 $as_echo "$ac_cv_lib_rpmio_rpmFreeCrypto" >&6; } if test "x$ac_cv_lib_rpmio_rpmFreeCrypto" = xyes; then : $as_echo "#define HAVE_LIBRPMIO 1" >>confdefs.h stap_LIBS="$stap_LIBS -lc -lrpmio" have_librpmio="yes" else have_librpmio="no" fi if test "x$have_librpm" != "xyes" -a "$with_rpm" == "yes"; then as_fn_error $? "cannot find librpm" "$LINENO" 5 fi if test "x$have_librpmio" != "xyes" -a "$with_rpm" == "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find librpmio" >&5 $as_echo "$as_me: WARNING: cannot find librpmio" >&2;} fi fi LIBS_no_readline=$LIBS have_libreadline="no" { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link readline libs" >&5 $as_echo_n "checking how to link readline libs... " >&6; } for libtermcap in "" tinfo ncursesw ncurses curses termcap; do if test -z "$libtermcap"; then READLINE_LIBS="-lreadline" else READLINE_LIBS="-lreadline -l$libtermcap" fi LIBS="$READLINE_LIBS $LIBS_no_readline" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char readline (); int main () { return readline (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_libreadline="yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$have_libreadline" = "yes"; then break fi done if test "$have_libreadline" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } READLINE_LIBS="" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINE_LIBS" >&5 $as_echo "$READLINE_LIBS" >&6; } $as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h fi if test "$have_libreadline" == "yes"; then HAVE_LIBREADLINE_TRUE= HAVE_LIBREADLINE_FALSE='#' else HAVE_LIBREADLINE_TRUE='#' HAVE_LIBREADLINE_FALSE= fi LIBS=$LIBS_no_readline # Check whether --with-python3 was given. if test "${with_python3+set}" = set; then : withval=$with_python3; fi if test "x$with_python3" = "xyes"; then : if test -z "$PYTHON3"; then : as_fn_error $? "python version 3 is required" "$LINENO" 5 else preferred_python=$PYTHON3 fi else if test "x$PYTHON" = "x:"; then : as_fn_error $? "python version 2 is required" "$LINENO" 5 else preferred_python=$PYTHON fi fi build_elfutils=no # Check whether --with-elfutils was given. if test "${with_elfutils+set}" = set; then : withval=$with_elfutils; case "$with_elfutils" in yes) as_fn_error $? "--with-elfutils requires an argument" "$LINENO" 5 ;; ''|no) ;; *) build_elfutils=yes ;; esac fi if test $build_elfutils = yes; then BUILD_ELFUTILS_TRUE= BUILD_ELFUTILS_FALSE='#' else BUILD_ELFUTILS_TRUE='#' BUILD_ELFUTILS_FALSE= fi elfutils_abs_srcdir=`if test $build_elfutils = yes; then : cd $with_elfutils && pwd fi` if test $enable_translator = yes; then if test $build_elfutils = no; then # Need libdwfl-capable recent elfutils http://elfutils.org/ # On modern debian/ubuntu, libebl has been merged into libdw # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=457543 save_LIBS="$LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ebl_get_elfmachine in -lebl" >&5 $as_echo_n "checking for ebl_get_elfmachine in -lebl... " >&6; } if ${ac_cv_lib_ebl_ebl_get_elfmachine+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lebl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ebl_get_elfmachine (); int main () { return ebl_get_elfmachine (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ebl_ebl_get_elfmachine=yes else ac_cv_lib_ebl_ebl_get_elfmachine=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ebl_ebl_get_elfmachine" >&5 $as_echo "$ac_cv_lib_ebl_ebl_get_elfmachine" >&6; } if test "x$ac_cv_lib_ebl_ebl_get_elfmachine" = xyes; then : ebl_LIBS=-lebl else ebl_LIBS= fi LIBS="$save_LIBS" save_LIBS="$LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dwfl_module_getsym in -ldw" >&5 $as_echo_n "checking for dwfl_module_getsym in -ldw... " >&6; } if ${ac_cv_lib_dw_dwfl_module_getsym+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldw -Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dwfl_module_getsym (); int main () { return dwfl_module_getsym (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dw_dwfl_module_getsym=yes else ac_cv_lib_dw_dwfl_module_getsym=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dw_dwfl_module_getsym" >&5 $as_echo "$ac_cv_lib_dw_dwfl_module_getsym" >&6; } if test "x$ac_cv_lib_dw_dwfl_module_getsym" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBDW 1 _ACEOF LIBS="-ldw $LIBS" else as_fn_error $? "missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dwarf_next_unit in -ldw" >&5 $as_echo_n "checking for dwarf_next_unit in -ldw... " >&6; } if ${ac_cv_lib_dw_dwarf_next_unit+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldw -Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dwarf_next_unit (); int main () { return dwarf_next_unit (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dw_dwarf_next_unit=yes else ac_cv_lib_dw_dwarf_next_unit=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dw_dwarf_next_unit" >&5 $as_echo "$ac_cv_lib_dw_dwarf_next_unit" >&6; } if test "x$ac_cv_lib_dw_dwarf_next_unit" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBDW 1 _ACEOF LIBS="-ldw $LIBS" else as_fn_error $? "elfutils, libdw too old, need 0.148+" "$LINENO" 5 fi stap_LIBS="$stap_LIBS -Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf" LIBS="$save_LIBS" else # We built our own and stap_LDFLAGS points at the install. stap_LIBS="$stap_LIBS -Wl,--start-group -ldw -lebl -Wl,--end-group -lelf" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: stap will link $stap_LIBS" >&5 $as_echo "$as_me: stap will link $stap_LIBS" >&6;} # staprun has more modest libelf needs if test $build_elfutils = no; then save_LIBS="$LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_getshdrstrndx in -lelf" >&5 $as_echo_n "checking for elf_getshdrstrndx in -lelf... " >&6; } if ${ac_cv_lib_elf_elf_getshdrstrndx+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lelf $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char elf_getshdrstrndx (); int main () { return elf_getshdrstrndx (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_elf_elf_getshdrstrndx=yes else ac_cv_lib_elf_elf_getshdrstrndx=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_getshdrstrndx" >&5 $as_echo "$ac_cv_lib_elf_elf_getshdrstrndx" >&6; } if test "x$ac_cv_lib_elf_elf_getshdrstrndx" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBELF 1 _ACEOF LIBS="-lelf $LIBS" else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "libelf too old, need 0.142+ See \`config.log' for more details" "$LINENO" 5; } fi staprun_LIBS="$staprun_LIBS -lelf" LIBS="$save_LIBS" else # We built our own and staprun_LDFLAGS points at the install. staprun_LIBS="$staprun_LIBS -lelf" fi { $as_echo "$as_me:${as_lineno-$LINENO}: staprun will link $staprun_LIBS" >&5 $as_echo "$as_me: staprun will link $staprun_LIBS" >&6;} date=`date +%Y-%m-%d` cat >>confdefs.h <<_ACEOF #define DATE "$date" _ACEOF DATE="$date" # Before PR4037, we used to arrange to pass CFLAGS+=-m64 for a staprun # being compiled on 32-bit userspace but running against 64-bit kernels. # This is no longer necessary. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Use boost::string_ref if available ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu for ac_header in boost/utility/string_ref.hpp do : ac_fn_cxx_check_header_mongrel "$LINENO" "boost/utility/string_ref.hpp" "ac_cv_header_boost_utility_string_ref_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_utility_string_ref_hpp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BOOST_UTILITY_STRING_REF_HPP 1 _ACEOF fi done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check for Dyninst headers and libraries # Check whether --with-dyninst was given. if test "${with_dyninst+set}" = set; then : withval=$with_dyninst; fi case "$with_dyninst" in no) ;; ''|yes) # Try a simple-minded distro search DYNINST_CXXFLAGS="-I/usr/include/dyninst" DYNINST_LDFLAGS="-L/usr/lib64/dyninst -L/usr/lib/dyninst" # XXX both lib paths!?! ;; *) # Use paths in the user-specified prefix DYNINST_CXXFLAGS="-I$with_dyninst/include" DYNINST_LDFLAGS="-L$with_dyninst/lib/" # XXX need lib64 too? ;; esac if test "$with_dyninst" != "no"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $DYNINST_CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking dyninst support" >&5 $as_echo "$as_me: checking dyninst support" >&6;} for ac_header in BPatch_object.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "BPatch_object.h" "ac_cv_header_BPatch_object_h" "$ac_includes_default" if test "x$ac_cv_header_BPatch_object_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BPATCH_OBJECT_H 1 _ACEOF $as_echo "#define HAVE_DYNINST 1" >>confdefs.h have_dyninst=yes { $as_echo "$as_me:${as_lineno-$LINENO}: dyninst support available" >&5 $as_echo "$as_me: dyninst support available" >&6;} fi done if test -n "$with_dyninst" -a "$have_dyninst" != "yes"; then as_fn_error $? "Dyninst does not appear to be usable" "$LINENO" 5 fi CPPFLAGS="$old_CPPFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if test "${have_dyninst}" = "yes"; then HAVE_DYNINST_TRUE= HAVE_DYNINST_FALSE='#' else HAVE_DYNINST_TRUE='#' HAVE_DYNINST_FALSE= fi # Check whether --enable-virt was given. if test "${enable_virt+set}" = set; then : enableval=$enable_virt; enable_virt=$enableval else enable_virt="check" fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libvirt" >&5 $as_echo_n "checking for libvirt... " >&6; } if test -n "$libvirt_CFLAGS"; then pkg_cv_libvirt_CFLAGS="$libvirt_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libvirt >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libvirt >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libvirt_CFLAGS=`$PKG_CONFIG --cflags "libvirt >= 1.0.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$libvirt_LIBS"; then pkg_cv_libvirt_LIBS="$libvirt_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libvirt >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libvirt >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libvirt_LIBS=`$PKG_CONFIG --libs "libvirt >= 1.0.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then libvirt_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libvirt >= 1.0.2" 2>&1` else libvirt_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libvirt >= 1.0.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libvirt_PKG_ERRORS" >&5 have_libvirt=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libvirt=no else libvirt_CFLAGS=$pkg_cv_libvirt_CFLAGS libvirt_LIBS=$pkg_cv_libvirt_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libvirt=yes $as_echo "#define HAVE_LIBVIRT 1" >>confdefs.h fi if test "${have_libvirt}" = "yes"; then HAVE_LIBVIRT_TRUE= HAVE_LIBVIRT_FALSE='#' else HAVE_LIBVIRT_TRUE='#' HAVE_LIBVIRT_FALSE= fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml2" >&5 $as_echo_n "checking for libxml2... " >&6; } if test -n "$libxml2_CFLAGS"; then pkg_cv_libxml2_CFLAGS="$libxml2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libxml2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$libxml2_LIBS"; then pkg_cv_libxml2_LIBS="$libxml2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libxml2_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then libxml2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1` else libxml2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libxml2_PKG_ERRORS" >&5 have_libxml2=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libxml2=no else libxml2_CFLAGS=$pkg_cv_libxml2_CFLAGS libxml2_LIBS=$pkg_cv_libxml2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libxml2=yes $as_echo "#define HAVE_LIBXML2 1" >>confdefs.h fi if test "${have_libxml2}" = "yes"; then HAVE_LIBXML2_TRUE= HAVE_LIBXML2_FALSE='#' else HAVE_LIBXML2_TRUE='#' HAVE_LIBXML2_FALSE= fi if test "$enable_virt" != "no"; then if test "x${have_libvirt}" != "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: will not build systemtap virt support, cannot find libvirt headers" >&5 $as_echo "$as_me: WARNING: will not build systemtap virt support, cannot find libvirt headers" >&2;} fi if test "x${have_libxml2}" != "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: will not build systemtap virt support, cannot find xml2 headers" >&5 $as_echo "$as_me: WARNING: will not build systemtap virt support, cannot find xml2 headers" >&2;} fi fi if test "${have_libvirt}" == "yes" -a "${have_libxml2}" == "yes" -a "$enable_virt" != "no"; then BUILD_VIRT_TRUE= BUILD_VIRT_FALSE='#' else BUILD_VIRT_TRUE='#' BUILD_VIRT_FALSE= fi # Check whether --with-python2-probes was given. if test "${with_python2_probes+set}" = set; then : withval=$with_python2_probes; fi have_python2_support=no if test "x$with_python2_probes" != "xno"; then : pathless_python=$(basename "$PYTHON") # Extract the first word of "${pathless_python}-config", so it can be a program name with args. set dummy ${pathless_python}-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON_CONFIG" && ac_cv_path_PYTHON_CONFIG="no" ;; esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 $as_echo "$PYTHON_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$PYTHON_CONFIG" != "xno"; then : PYTHON_CPPFLAGS=`$PYTHON_CONFIG --includes 2> /dev/null` PYTHON_CPPFLAGS=$PYTHON_CPPFLAGS save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$PYTHON_CPPFLAGS $CPPFLAGS" { ac_cv_header_Python_h=; unset ac_cv_header_Python_h;} for ac_header in Python.h do : ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PYTHON_H 1 _ACEOF have_python2_support=yes fi done CPPFLAGS="$save_CPPFLAGS" fi fi if test "x$have_python2_support" = "xyes"; then : $as_echo "#define HAVE_PYTHON2_PROBES 1" >>confdefs.h else if test "x$with_python2_probes" = "xyes"; then : as_fn_error $? "python version 2 probe support requested but not found" "$LINENO" 5 fi fi if test "x$have_python2_support" = "xyes"; then HAVE_PYTHON2_PROBES_TRUE= HAVE_PYTHON2_PROBES_FALSE='#' else HAVE_PYTHON2_PROBES_TRUE='#' HAVE_PYTHON2_PROBES_FALSE= fi # Check whether --with-python3-probes was given. if test "${with_python3_probes+set}" = set; then : withval=$with_python3_probes; fi have_python3_support=no if test "x$with_python3_probes" != "xno"; then : pathless_python3=$(basename "$PYTHON3") if test "x${pathless_python3}" == "x"; then pathless_python3="python3" fi # Extract the first word of "${pathless_python3}-config", so it can be a program name with args. set dummy ${pathless_python3}-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON3_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON3_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON3_CONFIG="$PYTHON3_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON3_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON3_CONFIG" && ac_cv_path_PYTHON3_CONFIG="no" ;; esac fi PYTHON3_CONFIG=$ac_cv_path_PYTHON3_CONFIG if test -n "$PYTHON3_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON3_CONFIG" >&5 $as_echo "$PYTHON3_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$PYTHON3_CONFIG" != "xno"; then : PYTHON3_CPPFLAGS=`$PYTHON3_CONFIG --includes 2> /dev/null` PYTHON3_CPPFLAGS=$PYTHON3_CPPFLAGS save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$PYTHON3_CPPFLAGS $CPPFLAGS" { ac_cv_header_Python_h=; unset ac_cv_header_Python_h;} for ac_header in Python.h do : ac_fn_c_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default" if test "x$ac_cv_header_Python_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PYTHON_H 1 _ACEOF have_python3_support=yes fi done CPPFLAGS="$save_CPPFLAGS" fi fi if test "x$have_python3_support" = "xyes"; then : $as_echo "#define HAVE_PYTHON3_PROBES 1" >>confdefs.h else if test "x$with_python3_probes" = "xyes"; then : as_fn_error $? "python version 3 probe support requested but not found" "$LINENO" 5 fi fi if test "x$have_python3_support" = "xyes"; then HAVE_PYTHON3_PROBES_TRUE= HAVE_PYTHON3_PROBES_FALSE='#' else HAVE_PYTHON3_PROBES_TRUE='#' HAVE_PYTHON3_PROBES_FALSE= fi if test "x$have_python2_support" = "xyes" -o "x$have_python3_support" = "xyes"; then HAVE_PYTHON_PROBES_TRUE= HAVE_PYTHON_PROBES_FALSE='#' else HAVE_PYTHON_PROBES_TRUE='#' HAVE_PYTHON_PROBES_FALSE= fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jsonc" >&5 $as_echo_n "checking for jsonc... " >&6; } if test -n "$jsonc_CFLAGS"; then pkg_cv_jsonc_CFLAGS="$jsonc_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "json-c >= 0.12") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_jsonc_CFLAGS=`$PKG_CONFIG --cflags "json-c >= 0.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$jsonc_LIBS"; then pkg_cv_jsonc_LIBS="$jsonc_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.12\""; } >&5 ($PKG_CONFIG --exists --print-errors "json-c >= 0.12") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_jsonc_LIBS=`$PKG_CONFIG --libs "json-c >= 0.12" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then jsonc_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c >= 0.12" 2>&1` else jsonc_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c >= 0.12" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$jsonc_PKG_ERRORS" >&5 have_jsonc=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_jsonc=no else jsonc_CFLAGS=$pkg_cv_jsonc_CFLAGS jsonc_LIBS=$pkg_cv_jsonc_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_jsonc=yes fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ncurses" >&5 $as_echo_n "checking for ncurses... " >&6; } if test -n "$ncurses_CFLAGS"; then pkg_cv_ncurses_CFLAGS="$ncurses_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ncurses_CFLAGS=`$PKG_CONFIG --cflags "ncurses" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ncurses_LIBS"; then pkg_cv_ncurses_LIBS="$ncurses_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ncurses_LIBS=`$PKG_CONFIG --libs "ncurses" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ncurses_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncurses" 2>&1` else ncurses_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncurses" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ncurses_PKG_ERRORS" >&5 have_ncurses=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_ncurses=no else ncurses_CFLAGS=$pkg_cv_ncurses_CFLAGS ncurses_LIBS=$pkg_cv_ncurses_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_ncurses=yes fi if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes"; then HAVE_MONITOR_LIBS_TRUE= HAVE_MONITOR_LIBS_FALSE='#' else HAVE_MONITOR_LIBS_TRUE='#' HAVE_MONITOR_LIBS_FALSE= fi if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == yes; then $as_echo "#define HAVE_MONITOR_LIBS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler .section \"?\" flags support" >&5 $as_echo_n "checking for assembler .section \"?\" flags support... " >&6; } if ${stap_cv_sectionq+:} false; then : $as_echo_n "(cached) " >&6 else old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wa,--fatal-warnings" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ asm(".section .note.foo,\"?\",\"note\"\n" ".byte 1, 2, 3\n" ".previous\n" ".section .text,\"axG\",\"progbits\",foogroup,comdat\n" ".byte 1\n" ".pushsection .note.foo,\"?\",\"note\"\n" ".byte 4, 5, 6\n" ".popsection\n" ".byte 2\n"); _ACEOF if ac_fn_c_try_compile "$LINENO"; then : stap_cv_sectionq=yes else stap_cv_sectionq=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$old_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $stap_cv_sectionq" >&5 $as_echo "$stap_cv_sectionq" >&6; } support_section_question=0 if test $stap_cv_sectionq = yes; then support_section_question=1 fi ac_config_files="$ac_config_files includes/sys/sdt-config.h po/Makefile.in" if test $build_elfutils = yes -a $enable_translator = yes; then here=`pwd` case "$with_elfutils" in /*) elfutils_srcdir="$with_elfutils" ;; *) elfutils_srcdir="${here}/$with_elfutils" ;; esac if ! test -f ${elfutils_srcdir}/configure; then as_fn_error $? "No ${elfutils_srcdir}/configure, forgot to run autoreconf -i?" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: running ${elfutils_srcdir}/configure" >&5 $as_echo "$as_me: running ${elfutils_srcdir}/configure" >&6;} save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fgnu89-inline" CFLAGS="$CFLAGS -fgnu89-inline" gnu89_inline_flag="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int something (); _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling elfutils with gcc -fgnu89-inline" >&5 $as_echo "$as_me: Compiling elfutils with gcc -fgnu89-inline" >&6;} gnu89_inline_flag="-fgnu89-inline" else { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not support -fgnu89-inline" >&5 $as_echo "$as_me: Compiler does not support -fgnu89-inline" >&6;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" # Our libdw.so's libebl will look in $ORIGIN/../lib/... but that # $ORIGIN is where libdw.so resides, which is not where there is a ../lib. # Note that $libdir might be using a quoted use of $exec_prefix or $prefix. # So we must make sure to pass those settings to elfutils configure. elfutils_rpath="-Wl,--enable-new-dtags,-rpath,${libdir}/${PACKAGE_NAME}" # Check whether this is a source release, or a source checkout. # We need --enable-maintainer-mode if it isn't a source release. # elfutils.spec is only distributed in source releases. if test -f ${elfutils_srcdir}/elfutils.spec; then need_maintainer_option="" else need_maintainer_option="--enable-maintainer-mode" fi (mkdir -p build-elfutils && cd build-elfutils && bash ${elfutils_srcdir}/configure --enable-libebl-subdir=${PACKAGE_NAME} \ --includedir="${here}/include-elfutils" \ --libdir="${here}/lib-elfutils" \ --exec-prefix="$exec_prefix" \ --prefix="$prefix" \ --enable-dwz \ ${need_maintainer_option} \ CFLAGS="${CFLAGS/-Wall/} $gnu89_inline_flag -fexceptions" \ LDFLAGS="$LDFLAGS $elfutils_rpath" && if test -f ${elfutils_srcdir}/config/version.h.in; then echo Found elfutils/version.h header... else echo elfutils/version.h header not found, need elfutils 0.142+... exit -1 fi ) if test $? != 0; then exit -1; fi fi # Check whether --with-selinux was given. if test "${with_selinux+set}" = set; then : withval=$with_selinux; fi if test "x$with_selinux" != "xno"; then : pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for selinux" >&5 $as_echo_n "checking for selinux... " >&6; } if test -n "$selinux_CFLAGS"; then pkg_cv_selinux_CFLAGS="$selinux_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 ($PKG_CONFIG --exists --print-errors "libselinux") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_selinux_CFLAGS=`$PKG_CONFIG --cflags "libselinux" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$selinux_LIBS"; then pkg_cv_selinux_LIBS="$selinux_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 ($PKG_CONFIG --exists --print-errors "libselinux") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_selinux_LIBS=`$PKG_CONFIG --libs "libselinux" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then selinux_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libselinux" 2>&1` else selinux_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libselinux" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$selinux_PKG_ERRORS" >&5 have_selinux=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_selinux=no else selinux_CFLAGS=$pkg_cv_selinux_CFLAGS selinux_LIBS=$pkg_cv_selinux_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_selinux=yes $as_echo "#define HAVE_SELINUX 1" >>confdefs.h fi else have_selinux=no fi if test "${have_selinux}" = "yes"; then HAVE_SELINUX_TRUE= HAVE_SELINUX_FALSE='#' else HAVE_SELINUX_TRUE='#' HAVE_SELINUX_FALSE= fi ac_fn_c_check_decl "$LINENO" "F_SETPIPE_SZ" "ac_cv_have_decl_F_SETPIPE_SZ" "#include " if test "x$ac_cv_have_decl_F_SETPIPE_SZ" = xyes; then : $as_echo "#define HAVE_F_SETPIPE_SZ 1" >>confdefs.h fi # Extract the first word of "javac", so it can be a program name with args. set dummy javac; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_javac+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_javac"; then ac_cv_prog_have_javac="$have_javac" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_javac="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_javac" && ac_cv_prog_have_javac="no" fi fi have_javac=$ac_cv_prog_have_javac if test -n "$have_javac"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_javac" >&5 $as_echo "$have_javac" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "jar", so it can be a program name with args. set dummy jar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_jar+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_jar"; then ac_cv_prog_have_jar="$have_jar" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_jar="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_jar" && ac_cv_prog_have_jar="no" fi fi have_jar=$ac_cv_prog_have_jar if test -n "$have_jar"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_jar" >&5 $as_echo "$have_jar" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$have_javac" != no -a "$have_jar" != no; then echo java found, will try to configure Byteman support # Check whether --with-java was given. if test "${with_java+set}" = set; then : withval=$with_java; else with_java=/usr/lib/jvm/java fi if test ! -d "$with_java"; then with_java=no fi JAVADIR="${with_java}" # always needed to compile if test "$with_java" != "no"; then cat >>confdefs.h <<_ACEOF #define HAVE_JAVA "1" _ACEOF fi if test "$with_java" != "no"; then HAVE_JAVA_TRUE= HAVE_JAVA_FALSE='#' else HAVE_JAVA_TRUE='#' HAVE_JAVA_FALSE= fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: will not run per-method java probing, missing byteman or java requirements" >&5 $as_echo "$as_me: WARNING: will not run per-method java probing, missing byteman or java requirements" >&2;} if false; then HAVE_JAVA_TRUE= HAVE_JAVA_FALSE='#' else HAVE_JAVA_TRUE='#' HAVE_JAVA_FALSE= fi fi # java+byteman support ENABLE_NLS="$USE_NLS" localedir="$localedir" LOCALEDIR="$localedir" # Check whether --with-extra-version was given. if test "${with_extra_version+set}" = set; then : withval=$with_extra_version; fi if test "x$with_extra_version" != "xno"; then : stap_extra_version="$with_extra_version" { $as_echo "$as_me:${as_lineno-$LINENO}: Adding extra version $stap_extra_version" >&5 $as_echo "$as_me: Adding extra version $stap_extra_version" >&6;} else stap_extra_version="" fi cat >>confdefs.h <<_ACEOF #define STAP_EXTRA_VERSION "$stap_extra_version" _ACEOF STAP_EXTRA_VERSION="$stap_extra_version" stap_prefix=$prefix test "$stap_prefix" = NONE && stap_prefix=$ac_default_prefix cat >>confdefs.h <<_ACEOF #define STAP_PREFIX "$stap_prefix" _ACEOF STAP_PREFIX="$stap_prefix" ac_config_headers="$ac_config_headers config.h:config.in" ac_config_files="$ac_config_files Makefile doc/Makefile man/Makefile man/cs/Makefile doc/beginners/Makefile doc/SystemTap_Tapset_Reference/Makefile man/stap.1 man/stappaths.7 man/systemtap.8 man/cs/stap.1 man/cs/stappaths.7 man/cs/systemtap.8 initscript/config.systemtap initscript/config.stap-server initscript/systemtap initscript/stap-server initscript/99stap/module-setup.sh initscript/99stap/install initscript/99stap/check" subdirs="$subdirs testsuite" if test $enable_translator == "yes"; then ac_config_files="$ac_config_files run-stap" fi ac_config_files="$ac_config_files dtrace" ac_config_files="$ac_config_files stapdyn/Makefile" ac_config_files="$ac_config_files java/Makefile" ac_config_files="$ac_config_files java/stapbm" ac_config_files="$ac_config_files python/Makefile" ac_config_files="$ac_config_files staprun/Makefile" ac_config_files="$ac_config_files staprun/run-staprun" ac_config_files="$ac_config_files staprun/guest/stapshd" ac_config_files="$ac_config_files staprun/guest/stapsh-daemon" ac_config_files="$ac_config_files staprun/guest/stapsh@.service" # Setup "shadow" directory doc/beginners that has the basic directories setup for # xmlto in one directory (through directory links if necessary). # It would be nice to use AC_CONFIG_LINKS, but automake complains when # the src is a directory and not a file. ac_config_commands="$ac_config_commands doc/beginners" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_TRANSLATOR_TRUE}" && test -z "${BUILD_TRANSLATOR_FALSE}"; then as_fn_error $? "conditional \"BUILD_TRANSLATOR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_CRASHMOD_TRUE}" && test -z "${BUILD_CRASHMOD_FALSE}"; then as_fn_error $? "conditional \"BUILD_CRASHMOD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then as_fn_error $? "conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_REFDOCS_TRUE}" && test -z "${BUILD_REFDOCS_FALSE}"; then as_fn_error $? "conditional \"BUILD_REFDOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_FOP_TRUE}" && test -z "${HAVE_FOP_FALSE}"; then as_fn_error $? "conditional \"HAVE_FOP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XMLTO_TRUE}" && test -z "${HAVE_XMLTO_FALSE}"; then as_fn_error $? "conditional \"HAVE_XMLTO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_HTMLDOCS_TRUE}" && test -z "${BUILD_HTMLDOCS_FALSE}"; then as_fn_error $? "conditional \"BUILD_HTMLDOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XMLTO_STRINGPARAM_TRUE}" && test -z "${XMLTO_STRINGPARAM_FALSE}"; then as_fn_error $? "conditional \"XMLTO_STRINGPARAM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_NSS_TRUE}" && test -z "${HAVE_NSS_FALSE}"; then as_fn_error $? "conditional \"HAVE_NSS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_SERVER_TRUE}" && test -z "${BUILD_SERVER_FALSE}"; then as_fn_error $? "conditional \"BUILD_SERVER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_AVAHI_TRUE}" && test -z "${HAVE_AVAHI_FALSE}"; then as_fn_error $? "conditional \"HAVE_AVAHI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBREADLINE_TRUE}" && test -z "${HAVE_LIBREADLINE_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBREADLINE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_ELFUTILS_TRUE}" && test -z "${BUILD_ELFUTILS_FALSE}"; then as_fn_error $? "conditional \"BUILD_ELFUTILS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DYNINST_TRUE}" && test -z "${HAVE_DYNINST_FALSE}"; then as_fn_error $? "conditional \"HAVE_DYNINST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBVIRT_TRUE}" && test -z "${HAVE_LIBVIRT_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBVIRT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBXML2_TRUE}" && test -z "${HAVE_LIBXML2_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBXML2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_VIRT_TRUE}" && test -z "${BUILD_VIRT_FALSE}"; then as_fn_error $? "conditional \"BUILD_VIRT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON2_PROBES_TRUE}" && test -z "${HAVE_PYTHON2_PROBES_FALSE}"; then as_fn_error $? "conditional \"HAVE_PYTHON2_PROBES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON3_PROBES_TRUE}" && test -z "${HAVE_PYTHON3_PROBES_FALSE}"; then as_fn_error $? "conditional \"HAVE_PYTHON3_PROBES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON_PROBES_TRUE}" && test -z "${HAVE_PYTHON_PROBES_FALSE}"; then as_fn_error $? "conditional \"HAVE_PYTHON_PROBES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_MONITOR_LIBS_TRUE}" && test -z "${HAVE_MONITOR_LIBS_FALSE}"; then as_fn_error $? "conditional \"HAVE_MONITOR_LIBS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_SELINUX_TRUE}" && test -z "${HAVE_SELINUX_FALSE}"; then as_fn_error $? "conditional \"HAVE_SELINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_JAVA_TRUE}" && test -z "${HAVE_JAVA_FALSE}"; then as_fn_error $? "conditional \"HAVE_JAVA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_JAVA_TRUE}" && test -z "${HAVE_JAVA_FALSE}"; then as_fn_error $? "conditional \"HAVE_JAVA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by systemtap $as_me 3.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ systemtap config.status 3.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "includes/sys/sdt-config.h") CONFIG_FILES="$CONFIG_FILES includes/sys/sdt-config.h" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "man/cs/Makefile") CONFIG_FILES="$CONFIG_FILES man/cs/Makefile" ;; "doc/beginners/Makefile") CONFIG_FILES="$CONFIG_FILES doc/beginners/Makefile" ;; "doc/SystemTap_Tapset_Reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/SystemTap_Tapset_Reference/Makefile" ;; "man/stap.1") CONFIG_FILES="$CONFIG_FILES man/stap.1" ;; "man/stappaths.7") CONFIG_FILES="$CONFIG_FILES man/stappaths.7" ;; "man/systemtap.8") CONFIG_FILES="$CONFIG_FILES man/systemtap.8" ;; "man/cs/stap.1") CONFIG_FILES="$CONFIG_FILES man/cs/stap.1" ;; "man/cs/stappaths.7") CONFIG_FILES="$CONFIG_FILES man/cs/stappaths.7" ;; "man/cs/systemtap.8") CONFIG_FILES="$CONFIG_FILES man/cs/systemtap.8" ;; "initscript/config.systemtap") CONFIG_FILES="$CONFIG_FILES initscript/config.systemtap" ;; "initscript/config.stap-server") CONFIG_FILES="$CONFIG_FILES initscript/config.stap-server" ;; "initscript/systemtap") CONFIG_FILES="$CONFIG_FILES initscript/systemtap" ;; "initscript/stap-server") CONFIG_FILES="$CONFIG_FILES initscript/stap-server" ;; "initscript/99stap/module-setup.sh") CONFIG_FILES="$CONFIG_FILES initscript/99stap/module-setup.sh" ;; "initscript/99stap/install") CONFIG_FILES="$CONFIG_FILES initscript/99stap/install" ;; "initscript/99stap/check") CONFIG_FILES="$CONFIG_FILES initscript/99stap/check" ;; "run-stap") CONFIG_FILES="$CONFIG_FILES run-stap" ;; "dtrace") CONFIG_FILES="$CONFIG_FILES dtrace" ;; "stapdyn/Makefile") CONFIG_FILES="$CONFIG_FILES stapdyn/Makefile" ;; "java/Makefile") CONFIG_FILES="$CONFIG_FILES java/Makefile" ;; "java/stapbm") CONFIG_FILES="$CONFIG_FILES java/stapbm" ;; "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;; "staprun/Makefile") CONFIG_FILES="$CONFIG_FILES staprun/Makefile" ;; "staprun/run-staprun") CONFIG_FILES="$CONFIG_FILES staprun/run-staprun" ;; "staprun/guest/stapshd") CONFIG_FILES="$CONFIG_FILES staprun/guest/stapshd" ;; "staprun/guest/stapsh-daemon") CONFIG_FILES="$CONFIG_FILES staprun/guest/stapsh-daemon" ;; "staprun/guest/stapsh@.service") CONFIG_FILES="$CONFIG_FILES staprun/guest/stapsh@.service" ;; "doc/beginners") CONFIG_COMMANDS="$CONFIG_COMMANDS doc/beginners" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "run-stap":F) chmod +x run-stap ;; "dtrace":F) chmod +x dtrace ;; "java/stapbm":F) chmod +x java/stapbm ;; "staprun/run-staprun":F) chmod +x staprun/run-staprun ;; "staprun/guest/stapshd":F) chmod +x staprun/guest/stapshd ;; "staprun/guest/stapsh-daemon":F) chmod +x staprun/guest/stapsh-daemon ;; "doc/beginners":C) rm -f $ac_abs_top_builddir/doc/beginners/en-US $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite && mkdir -p $ac_abs_top_builddir/doc/beginners/build/en-US && ln -s $ac_abs_top_srcdir/doc/SystemTap_Beginners_Guide/en-US $ac_abs_top_builddir/doc/beginners/en-US && ln -s $ac_abs_top_srcdir/testsuite $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test "${prefix}" = "/usr/local"; then { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: For a private or temporary build of systemtap, we recommend" >&5 $as_echo "$as_me: For a private or temporary build of systemtap, we recommend" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: configuring with a prefix. For example, try" >&5 $as_echo "$as_me: configuring with a prefix. For example, try" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&5 $as_echo "$as_me: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Running systemtap uninstalled, entirely out of the build tree," >&5 $as_echo "$as_me: Running systemtap uninstalled, entirely out of the build tree," >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: is not supported." >&5 $as_echo "$as_me: is not supported." >&6;} fi systemtap-3.1/configure.ac000066400000000000000000001076331305163227500157120ustar00rootroot00000000000000dnl configure.ac --- autoconf input file for systemtap dnl Process this file with autoconf to produce a configure script. AC_INIT([systemtap], 3.1, systemtap@sourceware.org, systemtap) dnl ^^^ see also NEWS, systemtap.spec, testsuite/configure.ac dnl doc/SystemTap_Beginners_Guide/en-US/Book_Info.xml dnl Get the target arch for libHelperSDT.so AC_CANONICAL_TARGET AC_PREREQ(2.63) dnl We don't maintain a ChangeLog, which makes us non-GNU -> foreign. AM_INIT_AUTOMAKE([no-dist foreign]) AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AC_USE_SYSTEM_EXTENSIONS AC_PROG_MKDIR_P AC_SUBST(MKDIR_P) AC_PROG_LN_S AC_PROG_CC AC_PROG_CXX AC_PROG_CPP AM_PROG_CC_C_O AC_PROG_RANLIB AC_OBJEXT AC_EXEEXT AC_PROG_INSTALL AC_PROG_MAKE_SET AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) AC_SYS_LARGEFILE AC_CHECK_FUNCS(ppoll) AC_CHECK_FUNCS(openat) AM_GNU_GETTEXT(external) AM_GNU_GETTEXT_VERSION([0.19.4]) if test "x$GMSGFMT" = "x:"; then AC_MSG_ERROR([missing gnu /usr/bin/msgfmt]) fi # We want the 'PYTHON' varible to be python version 2. We also want # our custom 'PYTHON3' varible to be python version 3. # # Note that the python2/python3 code was inspired by code in the # 'abrt' configure: # # # First, figure out what version of python is in the executable named # 'python'. On most systems that is python version 2, but on arch # linux that is python version 3. AC_PATH_PROG([PYTHON_UNKNOWN], [python], [no]) if test "x$PYTHON_UNKNOWN" != "xno"; then # OK, we found 'python'. What version is it? AC_CACHE_CHECK([whether $PYTHON_UNKNOWN is version 2 or 3], [ac_cv_python_unknown_version], [ac_cv_python_unknown_version=`$PYTHON_UNKNOWN -c "import sys; sys.stdout.write(sys.version[[:3]][[0]])"`]) fi # Now we'll update the _AM_PYTHON_INTERPRETER_LIST variable (which # AM_PATH_PYTHON uses) to only be version 2 versions of python. Note # that the m4_define happens when autoconf is run, but the # FIRST_PYTHON_INTERPRETER variable expansion will happen when the # user runs configure. if test "x$PYTHON_UNKNOWN" != "xno" -a "x$ac_cv_python_unknown_version" = "x2"; then FIRST_PYTHON_INTERPRETER=python else FIRST_PYTHON_INTERPRETER=python2 fi m4_define([_AM_PYTHON_INTERPRETER_LIST], [$FIRST_PYTHON_INTERPRETER python2 python2.7 python2.6]) # Now we can call AM_PATH_PYTHON to find python version 2.6+ (and # version 2 only). AM_PATH_PYTHON([2.6], [], [:]) python_basename=$(basename "$PYTHON") AC_DEFINE_UNQUOTED([PYTHON_BASENAME], "${python_basename}", [Base name of the python2 interpreter binary.]) # AM_PATH_PYTHON defines 'pyexecdir'. Make sure the python and # pyexecdir variables get sent down to the subconfigure in the # testsuite directory. AS_VAR_APPEND([ac_configure_args], [" python='$PYTHON' pyexecdir='$pyexecdir'"]) # Now let's try to find python version 3. if test "x$PYTHON_UNKNOWN" != "xno" -a "x$python_unknown_version" = "x3"; then AC_PATH_PROG([PYTHON3], [python]) else AC_PATH_PROGS([PYTHON3], [python3 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0]) fi python3_basename=$(basename "$PYTHON3") AC_DEFINE_UNQUOTED([PYTHON3_BASENAME], "${python3_basename}", [Base name of the python3 interpreter binary.]) # If we found python version 3, set up the other variables for python # version 3 that AM_PATH_PYTHON sets up for python version 2. if test -n "$PYTHON3"; then AC_CACHE_CHECK([for python3 version], [ac_cv_python3_version], [ac_cv_python3_version=`$PYTHON3 -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON3_VERSION], [$ac_cv_python3_version]) AC_SUBST([PYTHON3_PREFIX], ['${prefix}']) AC_SUBST([PYTHON3_EXEC_PREFIX], ['${exec_prefix}']) AC_CACHE_CHECK([for python3 platform], [ac_cv_python3_platform], [ac_cv_python3_platform=`$PYTHON3 -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON3_PLATFORM], [$ac_cv_python3_platform]) AC_CACHE_CHECK([for python3 script directory], [ac_cv_python3_dir], [ac_cv_python3_dir=`$PYTHON3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(0,0,prefix='$PYTHON3_PREFIX'))"`]) AC_SUBST([python3dir], [$ac_cv_python3_dir]) AC_CACHE_CHECK([for python3 extension module directory], [ac_cv_py3execdir], [ac_cv_py3execdir=`$PYTHON3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON3_EXEC_PREFIX'))"`]) AC_SUBST([py3execdir], [$ac_cv_py3execdir]) # Make sure the python3 and py3execdir variables get sent down to # the subconfigure in the testsuite directory. AS_VAR_APPEND([ac_configure_args], [" python3='$PYTHON3' py3execdir='$ac_cv_py3execdir'"]) fi dnl Handle the prologues option. dnl dnl If the user didn't specify --enable-prologues/--disable-prologues dnl and the x86 system has a version of gcc less than version 4, dnl automatically enable prologues. if test "${enable_prologues+set}" != set; then AC_MSG_CHECKING([to see if prologue searching should be the default]) if { echo '#if __i386__ == 1 && __GNUC__ < 4' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then enable_prologues=yes AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi fi AC_ARG_ENABLE([prologues], AS_HELP_STRING([--enable-prologues], [make -P prologue-searching default]), [ if test "$enable_prologues" = yes; then AC_DEFINE([ENABLE_PROLOGUES],[],[make -P prologue-searching default]) fi]) dnl Handle the disable-sdt-probes option. dnl dnl Default to --disable-sdt-probes if --enable-sdt-probes/--disable-prologues dnl was not specified and the gcc version is less than version 4, if test "${enable_sdt_probes+set}" != set; then AC_MSG_CHECKING([to see if sdt probes should be the default]) if { echo '#if __GNUC__ < 4' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then enable_sdt_probes=no AC_MSG_RESULT([no]) else AC_MSG_RESULT([yes]) fi fi AC_ARG_ENABLE([sdt-probes], [AS_HELP_STRING([--disable-sdt-probes], [disable process.mark probes in stap, staprun, stapio])]) AS_IF([test "x$enable_sdt_probes" != xno], [ AC_DEFINE([ENABLE_SDT_PROBES], [1], [Define to 1 to enable process.mark probes in stap, staprun, stapio.]) ]) dnl We're now requiring *some* C++11, using RHEL6 (gcc 4.4.7) as a baseline. dnl This is too strict about __cplusplus for gcc < 4.7, so we have a manual fallback. AX_CXX_COMPILE_STDCXX(11, noext, optional) AS_IF([test "x$HAVE_CXX11" != x1],[ AC_LANG_PUSH(C++) AX_CHECK_COMPILE_FLAG([-std=c++0x], [ AC_MSG_NOTICE([Compiling with -std=c++0x]) CXX="$CXX -std=c++0x" HAVE_CXX11=1 ], [ AC_MSG_ERROR([A compiler with C++11 support is required.]) ]) AC_LANG_POP(C++) ]) AC_ARG_ENABLE([ssp], [AS_HELP_STRING([--disable-ssp], [disable gcc stack-protector])]) AS_IF([test "x$enable_ssp" != xno],[ save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2" CFLAGS="$CFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2" AC_COMPILE_IFELSE([AC_LANG_SOURCE([int something ();])], [ AC_MSG_NOTICE([Compiling with gcc -fstack-protector-all et al.]) CFLAGS="$save_CFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2" CXXFLAGS="$save_CXXFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2"],[ AC_MSG_NOTICE([Compiler does not support -fstack-protector-all et al.]) CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS"])]) dnl Link with gold if possible dnl but: https://bugzilla.redhat.com/show_bug.cgi?id=636603 dnl dnl AC_PATH_PROG(GOLD, [ld.gold], [no]) dnl if test "x$GOLD" != "xno" dnl then dnl mkdir -p Bdir dnl ln -sf $GOLD Bdir/ld dnl LDFLAGS="$LDFLAGS -B`pwd`/Bdir/" dnl AC_MSG_NOTICE([using ld.gold to link]) dnl fi # Compiling without fPIE by default (see PR 9922) AC_ARG_ENABLE([pie], [AS_HELP_STRING([--enable-pie], [enable position-independent-executable])]) AS_IF([test "x$enable_pie" == xyes],[ PIECFLAGS='-fPIE' PIECXXFLAGS='-fPIE' PIELDFLAGS='-pie -Wl,-z,relro -Wl,-z,now' save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" save_LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS $PIECFLAGS" CXXFLAGS="$CXXFLAGS $PIECXXFLAGS" LDFLAGS="$LDFLAGS $PIELDFLAGS" AC_LINK_IFELSE([AC_LANG_SOURCE([void main () {}])], [ AC_MSG_NOTICE([Compiling with gcc pie et al.]) ], [ AC_MSG_NOTICE([Compiler does not support -pie et al.]) PIECFLAGS="" PIECXXFLAGS="" PIELDFLAGS="" ]) CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" LDFLAGS="$save_LDFLAGS" ]) AC_SUBST(PIELDFLAGS) AC_SUBST(PIECFLAGS) AC_SUBST(PIECXXFLAGS) dnl Handle optional sqlite support. If enabled/disabled by the user, dnl do the right thing. If not specified by the user, use it if dnl present. AC_ARG_ENABLE([sqlite], AS_HELP_STRING([--enable-sqlite], [build with sqlite support]), [], dnl ACTION-IF-GIVEN [enable_sqlite=check]) dnl ACTION-IF-NOT-GIVEN sqlite3_LIBS= AS_IF([test "x$enable_sqlite" != xno], [PKG_CHECK_MODULES([sqlite3], [sqlite3 > 3.7], [AC_DEFINE([HAVE_LIBSQLITE3], [1], [Define to 1 if you have the 'sqlite3' library (-lsqlite3).])], [if test "x$enable_sqlite" != xcheck; then AC_MSG_FAILURE([--enable-sqlite was given, but test for sqlite failed]) fi])]) dnl Handle the option to only build runtime AC_ARG_ENABLE([translator], AS_HELP_STRING([--disable-translator], [build only runtime utilities]), [], [enable_translator="yes"]) AM_CONDITIONAL([BUILD_TRANSLATOR], [test "$enable_translator" == "yes"]) dnl Handle the option to build the crash extension AC_ARG_ENABLE([crash], AS_HELP_STRING([--enable-crash@<:@=DIRECTORY@:>@], [enable crash extension (default is disabled). Optional DIRECTORY is the path to the crash header file (needed if installed in a non-standard location).]), [if test "$enable_crash" != "no"; then dnl Handle custom install dir (if needed) save_CPPFLAGS="$CPPFLAGS" if test "$enable_crash" != "yes"; then staplog_CPPFLAGS=-I$enable_crash CPPFLAGS="${staplog_CPPFLAGS} $CPPFLAGS" AC_SUBST([staplog_CPPFLAGS]) fi AC_CHECK_HEADERS([crash/defs.h], [], [AC_MSG_ERROR([cannot find required crash header (crash-devel may need to be installed)])], [ #define NR_CPUS 256 ]) CPPFLAGS="$save_CPPFLAGS" fi], [enable_crash="no"]) AM_CONDITIONAL([BUILD_CRASHMOD], [test "$enable_crash" != "no"]) dnl Handle the option to build the documentation building_docs="no" AC_ARG_ENABLE([docs], AS_HELP_STRING([--enable-docs], [enable building documentation (default on if latex etc. found).]), [enable_docs=$enableval], [enable_docs="check"]) AC_CHECK_PROG(have_latex, latex, yes, no) AC_CHECK_PROG(have_dvips, dvips, yes, no) AC_CHECK_PROG(have_ps2pdf, ps2pdf, yes, no) if test "x${have_latex}${have_dvips}${have_ps2pdf}" != "xyesyesyes"; then if test "$enable_docs" == "yes"; then AC_MSG_ERROR([cannot find all tools for building documentation]) fi if test "$enable_docs" == "check"; then AC_MSG_WARN([will not build documentation, cannot find all tools]) fi fi if test "x${have_latex}${have_dvips}${have_ps2pdf}" == "xyesyesyes" -a "$enable_docs" != "no"; then building_docs="yes" fi AM_CONDITIONAL([BUILD_DOCS], [test "$building_docs" == "yes"]) dnl Handle the option to build the reference documentation building_refdocs="no" AC_ARG_ENABLE([refdocs], AS_HELP_STRING([--enable-refdocs], [enable building reference documentation (default on if other documentation built).]), [enable_refdocs=$enableval], [enable_refdocs="check"]) if test "$building_docs" == "no" -a "$enable_refdocs" == "yes" ; then AC_MSG_ERROR([must use --enable-docs with --enable-refdocs]) fi if test "$enable_refdocs" != "no" -a "${building_docs}" == "yes"; then building_refdocs="yes" fi AM_CONDITIONAL([BUILD_REFDOCS], [test "$building_refdocs" == "yes"]) AC_CHECK_PROG(have_xmlto, xmlto, yes, no) AC_CHECK_PROG(have_fop, fop, yes, no) if test "x${have_fop}" == "xyes"; then # Due to rhbz505364 / 830266, we must actually test-run fop, not just # hope that it works. AC_MSG_CHECKING([to see if xmlto --with-fop actually works]) if xmlto --with-fop pdf ${srcdir}/doc/SystemTap_Tapset_Reference/dummy-tapsets.xml >/dev/null 2>&1; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([it's dead, Jim]) have_fop="broken" fi rm -f dummy-tapsets.pdf fi AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" == "yes"]) AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" == "yes"]) dnl Handle the option to build the html documentation building_htmldocs="no" AC_ARG_ENABLE([htmldocs], AS_HELP_STRING([--enable-htmldocs], [enable building html documentation (default off).]), [building_htmldocs=$enableval], [building_htmldocs="no"]) if test "$have_xmlto" == "no" -a "$building_htmldocs" == "yes"; then AC_MSG_ERROR([xmlto required for building html documentation]) fi AM_CONDITIONAL([BUILD_HTMLDOCS], [test "$building_htmldocs" == "yes"]) dnl There is a strange bug in older versions of xmlto when generating pdf. dnl https://bugzilla.redhat.com/show_bug.cgi?id=526273 dnl So make sure to have a chapter title starting with L plus an refentry. dnl This will make sure the xmlto pdf support test fails on buggy versions. cat > conftest.xml << 'EOF' foo Logging Tapset log logging Description baz EOF if test "x${have_xmlto}" == "xyes"; then AC_MSG_CHECKING([for xmlto --stringparam support]) xmlto --stringparam man.authors.section.enabled=0 html-nochunks conftest.xml >/dev/null 2>&1 if test $? == 0; then have_xmlto_stringparam="yes" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi rm -f conftest.html fi AM_CONDITIONAL([XMLTO_STRINGPARAM], [test "$have_xmlto_stringparam" == "yes"]) rm -f conftest.xml dnl See if we have the nss/nspr headers and libraries AC_ARG_WITH([nss], AS_HELP_STRING([--without-nss], [Do not use NSS even if present])) AS_IF([test "x$with_nss" != "xno"], [ PKG_CHECK_MODULES([nss], [nss >= 3], [have_nss=yes AC_DEFINE([HAVE_NSS], [1], [Define to 1 if you have the nss libraries.]) ], [have_nss=no]) ], [have_nss=no]) AM_CONDITIONAL([HAVE_NSS], [test "${have_nss}" = "yes"]) dnl Handle dracut directory configuration. Note we hard-code /usr by default, dnl instead of $prefix, because dracut is a system service that doesn't listen dnl at relocatable directories. AC_ARG_WITH([dracutstap], AS_HELP_STRING([--with-dracutstap=DIR], [Install dracut module files in DIR])) AS_IF([test "x$with_dracutstap" != "x"],[dracutstap="$with_dracutstap"], [dracutstap=/usr/lib/dracut/modules.d/99stap]) AC_MSG_NOTICE([using dracut module directory $dracutstap]) AC_SUBST(dracutstap) dnl PR20850 Fix the boot time probing feature for fedora too. Typical rhel dnl location is /sbin, typical fedora location is /usr/bin. AC_ARG_WITH([dracutbindir], AS_HELP_STRING([--with-dracutbindir=DIR], [Use the dracut binary located in DIR])) AS_IF([test "x$with_dracutbindir" != "x"],[dracutbindir="$with_dracutbindir"], [dracutbindir=/sbin]) AC_MSG_NOTICE([using dracut binary $dracutbindir]) AC_SUBST(dracutbindir) dnl Handle the option to build the compile server. AC_ARG_ENABLE([server], AS_HELP_STRING([--enable-server], [enable building of stap-server (default on if nss etc. found).]), [enable_server=$enableval], [enable_server="check"]) if test "$enable_server" != "no"; then dnl See if we have enough libraries and tools to build the compile server if test "x${have_nss}" != "xyes"; then AC_MSG_WARN([will not build systemtap compile server, cannot find nss headers]) fi fi AM_CONDITIONAL([BUILD_SERVER], [test "${have_nss}" == "yes" -a "$enable_server" != "no"]) if test "${have_nss}" != "yes"; then AC_MSG_WARN([compile-server client functionality will be disabled, cannot find nss development files]) fi dnl See if we have the avahi libraries and headers AC_ARG_WITH([avahi], AS_HELP_STRING([--without-avahi], [Do not use Avahi even if present])) AS_IF([test "x$with_avahi" != "xno"], [ PKG_CHECK_MODULES([avahi], [avahi-client], [have_avahi=yes AC_DEFINE([HAVE_AVAHI], [1], [Define to 1 if you have the avahi libraries.]) ], [have_avahi=no]) ], [have_avahi=no]) AM_CONDITIONAL([HAVE_AVAHI], [test "${have_avahi}" = "yes"]) if test "${have_avahi}" != "yes"; then AC_MSG_WARN([some compile-server functionality will be restricted, cannot find avahi development files]) fi dnl Look for librpm. AC_ARG_WITH([rpm], [AS_HELP_STRING([--with-rpm], [query rpm database for missing debuginfos])], [], [with_rpm="auto"]) if test "$with_rpm" != "no"; then AC_CHECK_LIB(rpm, rpmtsInitIterator, [ AC_DEFINE([HAVE_LIBRPM],[1],[have librpm]) stap_LIBS="$stap_LIBS -lc -lrpm" have_librpm="yes"], [have_librpm="no"]) dnl explicit -lrpmdb is a separate requirement on some older librpms AC_CHECK_LIB(rpmdb, rpmdbNextIterator, [ stap_LIBS="$stap_LIBS -lrpmdb"]) AC_CHECK_LIB(rpmio, rpmFreeCrypto, [ AC_DEFINE([HAVE_LIBRPMIO],[1],[have librpmio]) stap_LIBS="$stap_LIBS -lc -lrpmio" have_librpmio="yes"], [have_librpmio="no"]) if test "x$have_librpm" != "xyes" -a "$with_rpm" == "yes"; then AC_MSG_ERROR([cannot find librpm]) fi if test "x$have_librpmio" != "xyes" -a "$with_rpm" == "yes"; then AC_MSG_WARN([cannot find librpmio]) fi fi dnl Look for readline. dnl dnl First save the orignal value of LIBS. LIBS_no_readline=$LIBS dnl Check how for readline presence and how to link with it. On some dnl systems you need to add a termcap compatible library. have_libreadline="no" AC_MSG_CHECKING([how to link readline libs]) for libtermcap in "" tinfo ncursesw ncurses curses termcap; do if test -z "$libtermcap"; then READLINE_LIBS="-lreadline" else READLINE_LIBS="-lreadline -l$libtermcap" fi LIBS="$READLINE_LIBS $LIBS_no_readline" AC_LINK_IFELSE( [AC_LANG_CALL([],[readline])], [have_libreadline="yes"]) if test "$have_libreadline" = "yes"; then break fi done if test "$have_libreadline" = "no"; then AC_MSG_RESULT([none]) READLINE_LIBS="" else AC_MSG_RESULT([$READLINE_LIBS]) AC_DEFINE(HAVE_LIBREADLINE, [1], [Define if you have the readline library (-lreadline).]) fi AC_SUBST([READLINE_LIBS]) AM_CONDITIONAL([HAVE_LIBREADLINE], [test "$have_libreadline" == "yes"]) dnl End of readline checks: restore LIBS LIBS=$LIBS_no_readline dnl Allow user to choose python3 for /usr/bin/dtrace AC_ARG_WITH([python3], AS_HELP_STRING([--with-python3],[prefer /usr/bin/python3])) AS_IF([test "x$with_python3" = "xyes"], [AS_IF([test -z "$PYTHON3"], [AC_MSG_ERROR([python version 3 is required])], [AC_SUBST(preferred_python,[$PYTHON3])])], [AS_IF([test "x$PYTHON" = "x:"], [AC_MSG_ERROR([python version 2 is required])], [AC_SUBST(preferred_python,[$PYTHON])])]) dnl Handle elfutils. If '--with-elfutils=DIR' wasn't specified, used dnl the system's elfutils. build_elfutils=no AC_ARG_WITH([elfutils], AS_HELP_STRING([--with-elfutils=DIRECTORY], [find elfutils source code in DIRECTORY]), [ case "$with_elfutils" in yes) AC_MSG_ERROR([--with-elfutils requires an argument]) ;; ''|no) ;; *) build_elfutils=yes ;; esac]) AM_CONDITIONAL(BUILD_ELFUTILS, test $build_elfutils = yes) AC_SUBST(elfutils_abs_srcdir, `AS_IF([test $build_elfutils = yes], [cd $with_elfutils && pwd])`) if test $enable_translator = yes; then if test $build_elfutils = no; then # Need libdwfl-capable recent elfutils http://elfutils.org/ # On modern debian/ubuntu, libebl has been merged into libdw # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=457543 save_LIBS="$LIBS" AC_CHECK_LIB(ebl, ebl_get_elfmachine,[ebl_LIBS=-lebl],[ebl_LIBS=]) LIBS="$save_LIBS" save_LIBS="$LIBS" AC_CHECK_LIB(dw, dwfl_module_getsym,[],[ AC_MSG_ERROR([missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)])], [-Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf]) AC_CHECK_LIB(dw, dwarf_next_unit,[],[ AC_MSG_ERROR([elfutils, libdw too old, need 0.148+])], [-Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf]) stap_LIBS="$stap_LIBS -Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf" LIBS="$save_LIBS" else # We built our own and stap_LDFLAGS points at the install. stap_LIBS="$stap_LIBS -Wl,--start-group -ldw -lebl -Wl,--end-group -lelf" fi fi AC_SUBST(stap_LIBS) AC_MSG_NOTICE([stap will link $stap_LIBS]) # staprun has more modest libelf needs if test $build_elfutils = no; then save_LIBS="$LIBS" dnl this will only succeed with elfutils 0.142+ AC_CHECK_LIB(elf,elf_getshdrstrndx,[],[ AC_MSG_FAILURE([libelf too old, need 0.142+])]) staprun_LIBS="$staprun_LIBS -lelf" LIBS="$save_LIBS" else # We built our own and staprun_LDFLAGS points at the install. staprun_LIBS="$staprun_LIBS -lelf" fi AC_SUBST(staprun_LIBS) AC_MSG_NOTICE([staprun will link $staprun_LIBS]) dnl Plop in the build (configure) date date=`date +%Y-%m-%d` AC_DEFINE_UNQUOTED(DATE, "$date", [Configuration/build date]) AC_SUBST(DATE, "$date") # Before PR4037, we used to arrange to pass CFLAGS+=-m64 for a staprun # being compiled on 32-bit userspace but running against 64-bit kernels. # This is no longer necessary. AC_LANG_PUSH(C++) # Use boost::string_ref if available AC_CHECK_HEADERS([boost/utility/string_ref.hpp]) AC_LANG_POP(C++) # Check for Dyninst headers and libraries AC_ARG_WITH([dyninst], AS_HELP_STRING([--with-dyninst=DIRECTORY], [find dyninst headers/libraries in DIRECTORY])) case "$with_dyninst" in no) ;; ''|yes) # Try a simple-minded distro search DYNINST_CXXFLAGS="-I/usr/include/dyninst" DYNINST_LDFLAGS="-L/usr/lib64/dyninst -L/usr/lib/dyninst" # XXX both lib paths!?! ;; *) # Use paths in the user-specified prefix DYNINST_CXXFLAGS="-I$with_dyninst/include" DYNINST_LDFLAGS="-L$with_dyninst/lib/" # XXX need lib64 too? ;; esac if test "$with_dyninst" != "no"; then AC_LANG_PUSH(C++) old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $DYNINST_CXXFLAGS" AC_MSG_NOTICE([checking dyninst support]) AC_CHECK_HEADERS([BPatch_object.h], [ AC_SUBST(DYNINST_CXXFLAGS) AC_SUBST(DYNINST_LDFLAGS) AC_DEFINE([HAVE_DYNINST],[1],[Define to 1 if Dyninst is enabled]) have_dyninst=yes AC_MSG_NOTICE([dyninst support available])]) if test -n "$with_dyninst" -a "$have_dyninst" != "yes"; then AC_MSG_ERROR([Dyninst does not appear to be usable]) fi CPPFLAGS="$old_CPPFLAGS" AC_LANG_POP(C++) fi AM_CONDITIONAL([HAVE_DYNINST], [test "${have_dyninst}" = "yes"]) dnl Check for the libvirt and libxml2 devel packages AC_ARG_ENABLE([virt], AS_HELP_STRING([--enable-virt], [enable building of stapvirt support (default on if libvirt etc. found).]), [enable_virt=$enableval], [enable_virt="check"]) dnl We require libvirt >= 1.0.2 because stapvirt relies on the dnl virDomainOpenChannel function, which was implemented in 1.0.2. PKG_CHECK_MODULES([libvirt], [libvirt >= 1.0.2], [ have_libvirt=yes AC_DEFINE([HAVE_LIBVIRT],[1],[Define to 1 if libvirt development libraries are installed]) ], [have_libvirt=no]) AM_CONDITIONAL([HAVE_LIBVIRT], [test "${have_libvirt}" = "yes"]) PKG_CHECK_MODULES([libxml2], [libxml-2.0], [ have_libxml2=yes AC_DEFINE([HAVE_LIBXML2],[1],[Define to 1 if libxml2 development libraries are installed]) ], [have_libxml2=no]) AM_CONDITIONAL([HAVE_LIBXML2], [test "${have_libxml2}" = "yes"]) if test "$enable_virt" != "no"; then dnl See if we have enough libraries and tools to build the virt server if test "x${have_libvirt}" != "xyes"; then AC_MSG_WARN([will not build systemtap virt support, cannot find libvirt headers]) fi if test "x${have_libxml2}" != "xyes"; then AC_MSG_WARN([will not build systemtap virt support, cannot find xml2 headers]) fi fi AM_CONDITIONAL([BUILD_VIRT], [test "${have_libvirt}" == "yes" -a "${have_libxml2}" == "yes" -a "$enable_virt" != "no"]) dnl Handle the option to build python2 probe support AC_ARG_WITH([python2-probes], AS_HELP_STRING([--without-python2-probes], [Disable building python version 2 probe support, even if it is available])) have_python2_support=no AS_IF([test "x$with_python2_probes" != "xno"], [dnl First, check to make sure we have the 'python-config' script. pathless_python=$(basename "$PYTHON") AC_PATH_PROG([PYTHON_CONFIG], [${pathless_python}-config], [no]) AS_IF([test "x$PYTHON_CONFIG" != "xno"], [dnl Use the 'python-config' script to find the python dnl include directories. PYTHON_CPPFLAGS=`$PYTHON_CONFIG --includes 2> /dev/null` AC_SUBST([PYTHON_CPPFLAGS], [$PYTHON_CPPFLAGS]) save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$PYTHON_CPPFLAGS $CPPFLAGS" dnl Now make sure we can find the python 2 Python.h file. We dnl need to clear the cached result, since this might be a dnl cached result from the python 3 header file (since they dnl share the same name). AS_UNSET([ac_cv_header_Python_h]) AC_CHECK_HEADERS([Python.h], [have_python2_support=yes]) CPPFLAGS="$save_CPPFLAGS"])]) AS_IF([test "x$have_python2_support" = "xyes"], [AC_DEFINE([HAVE_PYTHON2_PROBES], [1], [Define to 1 to enable python version 2 probe support in systemtap.])], [AS_IF([test "x$with_python2_probes" = "xyes"], [AC_MSG_ERROR([python version 2 probe support requested but not found])]) ]) AM_CONDITIONAL([HAVE_PYTHON2_PROBES], [test "x$have_python2_support" = "xyes"]) dnl Handle the option to build python3 probe support AC_ARG_WITH([python3-probes], AS_HELP_STRING([--without-python3-probes], [Disable building python version 3 probe support, even if it is available])) have_python3_support=no AS_IF([test "x$with_python3_probes" != "xno"], [dnl First, check to make sure we have the 'python3-config' script. pathless_python3=$(basename "$PYTHON3") if test "x${pathless_python3}" == "x"; then pathless_python3="python3" fi AC_PATH_PROG([PYTHON3_CONFIG], [${pathless_python3}-config], [no]) AS_IF([test "x$PYTHON3_CONFIG" != "xno"], [dnl Use the 'python3-config' script to find the python dnl include directories. PYTHON3_CPPFLAGS=`$PYTHON3_CONFIG --includes 2> /dev/null` AC_SUBST([PYTHON3_CPPFLAGS], [$PYTHON3_CPPFLAGS]) save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$PYTHON3_CPPFLAGS $CPPFLAGS" dnl Now make sure we can find the python 3 Python.h dnl file. However, we've got a problem. AC_CHECK_HEADERS dnl was called above for the python 2 version of dnl Python.h. But, autoconf doesn't really know the dnl difference between the two files, since they both have dnl the same name. So, we'll unset the cache variable. AS_UNSET([ac_cv_header_Python_h]) AC_CHECK_HEADERS([Python.h], [have_python3_support=yes]) CPPFLAGS="$save_CPPFLAGS"])]) AS_IF([test "x$have_python3_support" = "xyes"], [AC_DEFINE([HAVE_PYTHON3_PROBES], [1], [Define to 1 to enable python version 3 probe support in systemtap.])], [AS_IF([test "x$with_python3_probes" = "xyes"], [AC_MSG_ERROR([python version 3 probe support requested but not found])]) ]) AM_CONDITIONAL([HAVE_PYTHON3_PROBES], [test "x$have_python3_support" = "xyes"]) dnl We want either (or both) python probe support. AM_CONDITIONAL([HAVE_PYTHON_PROBES], [test "x$have_python2_support" = "xyes" -o "x$have_python3_support" = "xyes"]) dnl Check for presence of json-c and ncurses for use in monitor mode PKG_CHECK_MODULES([jsonc], [json-c >= 0.12], [have_jsonc=yes], [have_jsonc=no]) PKG_CHECK_MODULES([ncurses], [ncurses], [have_ncurses=yes], [have_ncurses=no]) AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes"]) if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == yes; then AC_DEFINE([HAVE_MONITOR_LIBS],[1],[Define to 1 if json-c and ncurses libraries are installed]) fi AC_CACHE_CHECK([for assembler .section "?" flags support], stap_cv_sectionq, [ old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wa,--fatal-warnings" AC_COMPILE_IFELSE([AC_LANG_SOURCE([asm(".section .note.foo,\"?\",\"note\"\n" ".byte 1, 2, 3\n" ".previous\n" ".section .text,\"axG\",\"progbits\",foogroup,comdat\n" ".byte 1\n" ".pushsection .note.foo,\"?\",\"note\"\n" ".byte 4, 5, 6\n" ".popsection\n" ".byte 2\n");])], stap_cv_sectionq=yes, stap_cv_sectionq=no) CFLAGS="$old_CFLAGS"]) AC_SUBST(support_section_question) support_section_question=0 if test $stap_cv_sectionq = yes; then support_section_question=1 fi AC_CONFIG_FILES([includes/sys/sdt-config.h po/Makefile.in]) if test $build_elfutils = yes -a $enable_translator = yes; then here=`pwd` case "$with_elfutils" in /*) elfutils_srcdir="$with_elfutils" ;; *) elfutils_srcdir="${here}/$with_elfutils" ;; esac if ! test -f ${elfutils_srcdir}/configure; then AC_MSG_ERROR([No ${elfutils_srcdir}/configure, forgot to run autoreconf -i?]) fi AC_MSG_NOTICE([running ${elfutils_srcdir}/configure]) save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fgnu89-inline" CFLAGS="$CFLAGS -fgnu89-inline" gnu89_inline_flag="" AC_COMPILE_IFELSE([AC_LANG_SOURCE([int something ();])], [ AC_MSG_NOTICE([Compiling elfutils with gcc -fgnu89-inline]) gnu89_inline_flag="-fgnu89-inline"],[ AC_MSG_NOTICE([Compiler does not support -fgnu89-inline])]) CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" # Our libdw.so's libebl will look in $ORIGIN/../lib/... but that # $ORIGIN is where libdw.so resides, which is not where there is a ../lib. # Note that $libdir might be using a quoted use of $exec_prefix or $prefix. # So we must make sure to pass those settings to elfutils configure. elfutils_rpath="-Wl,--enable-new-dtags,-rpath,${libdir}/${PACKAGE_NAME}" # Check whether this is a source release, or a source checkout. # We need --enable-maintainer-mode if it isn't a source release. # elfutils.spec is only distributed in source releases. if test -f ${elfutils_srcdir}/elfutils.spec; then need_maintainer_option="" else need_maintainer_option="--enable-maintainer-mode" fi (mkdir -p build-elfutils && cd build-elfutils && bash ${elfutils_srcdir}/configure --enable-libebl-subdir=${PACKAGE_NAME} \ --includedir="${here}/include-elfutils" \ --libdir="${here}/lib-elfutils" \ --exec-prefix="$exec_prefix" \ --prefix="$prefix" \ --enable-dwz \ ${need_maintainer_option} \ CFLAGS="${CFLAGS/-Wall/} $gnu89_inline_flag -fexceptions" \ LDFLAGS="$LDFLAGS $elfutils_rpath" && if test -f ${elfutils_srcdir}/config/version.h.in; then echo Found elfutils/version.h header... else echo elfutils/version.h header not found, need elfutils 0.142+... exit -1 fi ) if test $? != 0; then exit -1; fi fi dnl Optional libselinux support allows stapdyn to check dnl for booleans that would prevent Dyninst from working. AC_ARG_WITH([selinux], AS_HELP_STRING([--without-selinux], [Do not use libselinux even if present])) AS_IF([test "x$with_selinux" != "xno"], [ PKG_CHECK_MODULES([selinux], [libselinux], [have_selinux=yes AC_DEFINE([HAVE_SELINUX], [1], [Define to 1 if you have the SELinux libraries.]) ], [have_selinux=no]) ], [have_selinux=no]) AM_CONDITIONAL([HAVE_SELINUX], [test "${have_selinux}" = "yes"]) dnl Used in monitor mode. Only available on kernel versions >= 2.6.35 AC_CHECK_DECL([F_SETPIPE_SZ], [AC_DEFINE(HAVE_F_SETPIPE_SZ,[1], Define to 1 if F_SETPIPE_SZ is available.)], [], [#include ]) dnl Handle java+byteman support AC_CHECK_PROG(have_javac, javac, yes, no) AC_CHECK_PROG(have_jar, jar, yes, no) if test "$have_javac" != no -a "$have_jar" != no; then echo java found, will try to configure Byteman support AC_ARG_WITH([java], [AS_HELP_STRING([--with-java=DIRECTORY], [Specify JDK directory to compile libHelperSDT.so against (default is /usr/lib/jvm/java)])], [], [with_java=/usr/lib/jvm/java]) dnl don't use AC_CHECK_FILE here, as that blocks cross-compiling if test ! -d "$with_java"; then with_java=no fi AC_SUBST(JAVADIR, "${with_java}") # always needed to compile if test "$with_java" != "no"; then AC_DEFINE_UNQUOTED(HAVE_JAVA, "1", [Flag indicating that libHelperSDT.so is available (can be found in PKGLIBDIR)]) fi AM_CONDITIONAL([HAVE_JAVA], [test "$with_java" != "no"]) else AC_MSG_WARN([will not run per-method java probing, missing byteman or java requirements]) AM_CONDITIONAL([HAVE_JAVA],false) fi # java+byteman support AC_SUBST(ENABLE_NLS, "$USE_NLS") AC_SUBST(localedir, "$localedir") AC_SUBST(LOCALEDIR, "$localedir") AC_ARG_WITH([extra-version], AS_HELP_STRING([--with-extra-version=STRING], [Add STRING to stap -V version])) AS_IF([test "x$with_extra_version" != "xno"], [ stap_extra_version="$with_extra_version" AC_MSG_NOTICE([Adding extra version $stap_extra_version])], [ stap_extra_version=""]) AC_DEFINE_UNQUOTED(STAP_EXTRA_VERSION, "$stap_extra_version", [extra stap version code]) AC_SUBST(STAP_EXTRA_VERSION, "$stap_extra_version") dnl This is here mainly to make sure that configure --prefix=... changes dnl the config.h files so files depending on it are recompiled dnl prefix is passed through indirectly in the Makefile.am AM_CPPFLAGS. dnl Formerly: Don't use this directly (when not given it is set to NONE). dnl Currently: inline autoconf's later defaulting stap_prefix=$prefix test "$stap_prefix" = NONE && stap_prefix=$ac_default_prefix AC_DEFINE_UNQUOTED(STAP_PREFIX, "$stap_prefix", [configure prefix location]) AC_SUBST(STAP_PREFIX, "$stap_prefix") AC_CONFIG_HEADERS([config.h:config.in]) AC_CONFIG_FILES([Makefile doc/Makefile man/Makefile man/cs/Makefile \ doc/beginners/Makefile doc/SystemTap_Tapset_Reference/Makefile \ man/stap.1 man/stappaths.7 man/systemtap.8 \ man/cs/stap.1 man/cs/stappaths.7 man/cs/systemtap.8 \ initscript/config.systemtap initscript/config.stap-server \ initscript/systemtap initscript/stap-server \ initscript/99stap/module-setup.sh \ initscript/99stap/install \ initscript/99stap/check ]) AC_CONFIG_SUBDIRS(testsuite) if test $enable_translator == "yes"; then AC_CONFIG_FILES([run-stap], [chmod +x run-stap]) fi AC_CONFIG_FILES([dtrace], [chmod +x dtrace]) AC_CONFIG_FILES(stapdyn/Makefile) AC_CONFIG_FILES(java/Makefile) AC_CONFIG_FILES([java/stapbm], [chmod +x java/stapbm]) AC_CONFIG_FILES(python/Makefile) AC_CONFIG_FILES(staprun/Makefile) AC_CONFIG_FILES([staprun/run-staprun], [chmod +x staprun/run-staprun]) AC_CONFIG_FILES([staprun/guest/stapshd], [chmod +x staprun/guest/stapshd]) AC_CONFIG_FILES([staprun/guest/stapsh-daemon], [chmod +x staprun/guest/stapsh-daemon]) AC_CONFIG_FILES([staprun/guest/stapsh@.service]) # Setup "shadow" directory doc/beginners that has the basic directories setup for # xmlto in one directory (through directory links if necessary). # It would be nice to use AC_CONFIG_LINKS, but automake complains when # the src is a directory and not a file. AC_CONFIG_COMMANDS([doc/beginners], [rm -f $ac_abs_top_builddir/doc/beginners/en-US $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite && mkdir -p $ac_abs_top_builddir/doc/beginners/build/en-US && ln -s $ac_abs_top_srcdir/doc/SystemTap_Beginners_Guide/en-US $ac_abs_top_builddir/doc/beginners/en-US && ln -s $ac_abs_top_srcdir/testsuite $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite]) AC_OUTPUT if test "${prefix}" = "/usr/local"; then AC_MSG_NOTICE([]) AC_MSG_NOTICE([For a private or temporary build of systemtap, we recommend]) AC_MSG_NOTICE([configuring with a prefix. For example, try]) AC_MSG_NOTICE([$0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$]) AC_MSG_NOTICE([Running systemtap uninstalled, entirely out of the build tree,]) AC_MSG_NOTICE([is not supported.]) fi systemtap-3.1/coveragedb.cxx000066400000000000000000000243631305163227500162470ustar00rootroot00000000000000// coveragedb.cxx // Copyright (C) 2007 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "parse.h" #include "coveragedb.h" #include "config.h" #include "elaborate.h" #include "tapsets.h" #include "session.h" #include "util.h" #ifdef HAVE_LIBSQLITE3 #include #include #include using namespace std; void print_coverage_info(systemtap_session &s) { // print out used probes clog << _("---- used probes-----") << endl; for (unsigned i=0; i used_probe_list; s.probes[i]->collect_derivation_chain(used_probe_list); for (unsigned j=0; jlocations.size(); ++k) clog << _("probe: ") << used_probe_list[j]->locations[k]->components.front()->tok->location << endl; } clog << "----" << endl; // for each probe print used and unused variables for (unsigned j=0; jlocals.size(); ++j) { clog << _("local: ") << s.probes[i]->locals[j]->tok->location << endl; } for (unsigned j=0; junused_locals.size(); ++j) { clog << _("unused_local: ") << s.probes[i]->unused_locals[j]->tok->location << endl; } } // print out unused probes clog << _("---- unused probes----- ") << endl; for (unsigned i=0; i unused_probe_list; s.unused_probes[i]->collect_derivation_chain(unused_probe_list); for (unsigned j=0; jlocations.size(); ++k) clog << _("probe: ") << unused_probe_list[j]->locations[k]->components.front()->tok->location << endl; } } // print out used functions clog << _("---- used functions----- ") << endl; for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { clog << "function: " << it->second->tok->location << " " << it->second->name << endl; } // print out unused functions clog << _("---- unused functions----- ") << endl; for (unsigned i=0; itok->location << " " << s.unused_functions[i]->name << endl; } // print out used globals clog << _("---- used globals----- ") << endl; for (unsigned i=0; itok->location << " " << s.globals[i]->name << endl; } // print out unused globals clog << _("---- unused globals----- ") << endl; for (unsigned i=0; itok->location << " " << s.unused_globals[i]->name << endl; } } bool has_table(sqlite3 *db, const char * table) { int rc, rows, columns; char *errmsg; char **results = NULL; ostringstream command; command << "SELECT name FROM sqlite_master " << "WHERE type='table' AND name='" << table << "'"; rc = sqlite3_get_table(db, command.str().c_str(), &results, &rows, &columns, &errmsg); if(rc != SQLITE_OK) { cerr << _("Error in statement: ") << command.str() << " [" << errmsg << "]." << endl; } sqlite3_free_table(results); return (rows !=0); } bool has_index(sqlite3 *db, const char * index) { int rc, rows, columns; char *errmsg; char **results = NULL; ostringstream command; command << "SELECT name FROM sqlite_master " << "WHERE type='index' AND name='" << index << "'"; rc = sqlite3_get_table(db, command.str().c_str(), &results, &rows, &columns, &errmsg); if(rc != SQLITE_OK) { cerr << _("Error in statement: ") << command.str() << " [" << errmsg << "]." << endl; } sqlite3_free_table(results); return (rows !=0); } void sql_stmt(sqlite3 *db, const char* stmt) { char *errmsg; int ret; // cerr << "sqlite: " << stmt << endl; ret = sqlite3_exec(db, stmt, 0, 0, &errmsg); if(ret != SQLITE_OK) { cerr << _("Error in statement: ") << stmt << " [" << errmsg << "]." << endl; } } void enter_element(sqlite3 *db, coverage_element &x) { ostringstream command; command << "insert or ignore into counts values ('" << x.file << "', '" << x.line << "', '" << x.col << "', '" << x.type << "','" << x.name << "', '" << x.parent <<"'," << "'0', '0')"; sql_stmt(db, command.str().c_str()); } void increment_element(sqlite3 *db, coverage_element &x) { ostringstream command; // make sure value in table command << "insert or ignore into counts values ('" << x.file << "', '" << x.line << "', '" << x.col << "', '" << x.type << "','" << x.name << "', '" << x.parent <<"'," << "'0', '0'); " // increment appropriate value << "update counts set compiled=compiled+" << x.compiled << " where (" << "file=='" << x.file << "' and " << "line=='" << x.line << "' and " << "col=='" << x.col << "' and " << "type=='" << x.type << "' and " << "name=='" << x.name << "')"; sql_stmt(db, command.str().c_str()); } void sql_update_used_probes(sqlite3 *db, systemtap_session &s) { // update database used probes for (unsigned i=0; i used_probe_list; s.probes[i]->collect_derivation_chain(used_probe_list); for (unsigned j=0; jlocations.size(); ++k){ struct source_loc place = used_probe_list[j]->locations[k]->components.front()->tok->location; coverage_element x(place); x.type = db_type_probe; x.name = used_probe_list[j]->locations[k]->str(); x.compiled = 1; increment_element(db, x); } } // for each probe update used and unused variables for (unsigned j=0; jlocals.size(); ++j) { struct source_loc place = s.probes[i]->locals[j]->tok->location; coverage_element x(place); x.type = db_type_local; x.name = s.probes[i]->locals[j]->tok->content; x.compiled = 1; increment_element(db, x); } for (unsigned j=0; junused_locals.size(); ++j) { struct source_loc place = s.probes[i]->unused_locals[j]->tok->location; coverage_element x(place); x.type = db_type_local; x.name = s.probes[i]->unused_locals[j]->tok->content; x.compiled = 0; increment_element(db, x); } } } void sql_update_unused_probes(sqlite3 *db, systemtap_session &s) { // update database unused probes for (unsigned i=0; i unused_probe_list; s.unused_probes[i]->collect_derivation_chain(unused_probe_list); for (unsigned j=0; jlocations.size(); ++k) { struct source_loc place = unused_probe_list[j]->locations[k]->components.front()->tok->location; coverage_element x(place); x.type = db_type_probe; x.name = unused_probe_list[j]->locations[k]->str(); x.compiled = 0; increment_element(db, x); } } } } void sql_update_used_functions(sqlite3 *db, systemtap_session &s) { // update db used functions for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { struct source_loc place = it->second->tok->location; coverage_element x(place); x.type = db_type_function; x.name = it->second->name; x.compiled = 1; increment_element(db, x); } } void sql_update_unused_functions(sqlite3 *db, systemtap_session &s) { // update db unused functions for (unsigned i=0; itok->location; coverage_element x(place); x.type = db_type_function; x.name = s.unused_functions[i]->name; x.compiled = 0; increment_element(db, x); } } void sql_update_used_globals(sqlite3 *db, systemtap_session &s) { // update db used globals for (unsigned i=0; itok->location; coverage_element x(place); x.type = db_type_global; x.name = s.globals[i]->name; x.compiled = 1; increment_element(db, x); } } void sql_update_unused_globals(sqlite3 *db, systemtap_session &s) { // update db unused globals for (unsigned i=0; itok->location; coverage_element x(place); x.type = db_type_global; x.name = s.unused_globals[i]->name; x.compiled = 0; increment_element(db, x); } } void update_coverage_db(systemtap_session &s) { sqlite3 *db; int rc; string filename(s.data_path + "/" + s.kernel_release + ".db"); rc = sqlite3_open(filename.c_str(), &db); if( rc ){ cerr << "Can't open database: " << sqlite3_errmsg(db) << endl; sqlite3_close(db); return; } // lock the database sql_stmt(db, "begin"); string create_table("create table counts (" "file text, line integer, col integer, " "type text, name text, parent text, " "compiled integer, executed integer)"); string create_index("create unique index tokens on counts (file, line, col, " "type, name)"); // make sure the table is there if (!has_table(db, "counts")) sql_stmt(db, create_table.c_str()); // make sure the index is there if (!has_index(db, "tokens")) sql_stmt(db, create_index.c_str()); sql_update_used_probes(db, s); sql_update_unused_probes(db, s); sql_update_used_functions(db, s); sql_update_unused_functions(db, s); sql_update_used_globals(db, s); sql_update_unused_globals(db, s); // unlock the database and close database sql_stmt(db, "commit"); sqlite3_close(db); } #endif /* HAVE_LIBSQLITE3 */ /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/coveragedb.h000066400000000000000000000035501305163227500156670ustar00rootroot00000000000000// coveragedb.cxx // Copyright (C) 2007 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef COVERAGEDB_H #define COVERAGEDB_H #include "session.h" #include "staptree.h" #include /* tuples: file, line number, column, type of object, name values: number of times object "pulled_in", number of times "removed", times executed if (compiled == 0) object never compiled if (compiled > 0) object compiled The following are not currently implemented. if (executed == 0) never executed if (executed > 0) executed Want to make sure that the data base accurately reflects testing. 1) atomic updates, either commit all or none of information 2) only update coverage db compile info, if compile successful 3) only update coverage db execute info, if instrumentation run suscessfully Would like to have something that looks for interesting features in db: list which things are not compile list which things are not exectuted ratio of compiled/total (overall, by file, by line) ratio of executed/total (overall, by file, by line) */ enum db_type { db_type_probe = 1, db_type_function = 2, db_type_local = 3, db_type_global = 4, }; class coverage_element { public: std::string file; int line; int col; int type; std::string name; std::string parent; int compiled; int executed; coverage_element(): line(0), col(0), compiled(0), executed(0) {} coverage_element(source_loc &place): file(place.file->name), line(place.line), col(place.column), type(0), compiled(0), executed(0) {} }; void print_coverage_info(systemtap_session &s); void update_coverage_db(systemtap_session &s); #endif /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/csclient.cxx000066400000000000000000003313741305163227500157550ustar00rootroot00000000000000/* Compile server client functions Copyright (C) 2010-2014 Red Hat Inc. This file is part of systemtap, and is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License (GPL); either version 2, or (at your option) any later version. */ // Completely disable the client if NSS is not available. #include "config.h" #if HAVE_NSS #include "session.h" #include "cscommon.h" #include "csclient.h" #include "util.h" #include "stap-probe.h" #include #include #include #include #include #include #include #include extern "C" { #include #include #include #include #include #include #include #include #include #include #include } #if HAVE_AVAHI extern "C" { #include #include #include #include #include #include } #endif // HAVE_AVAHI extern "C" { #include #include #include #include #include #include #include #include } #include "nsscommon.h" using namespace std; #define STAP_CSC_01 _("WARNING: The domain name, %s, does not match the DNS name(s) on the server certificate:\n") #define STAP_CSC_02 _("could not find input file %s\n") #define STAP_CSC_03 _("could not open input file %s\n") #define STAP_CSC_04 _("Unable to open output file %s\n") #define STAP_CSC_05 _("could not write to %s\n") #define MOK_PUBLIC_CERT_NAME "signing_key.x509" static PRIPv6Addr ©Address (PRIPv6Addr &PRin6, const in6_addr &in6); static PRNetAddr ©NetAddr (PRNetAddr &x, const PRNetAddr &y); bool operator!= (const PRNetAddr &x, const PRNetAddr &y); bool operator== (const PRNetAddr &x, const PRNetAddr &y); extern "C" void nsscommon_error (const char *msg, int logit __attribute ((unused))) { clog << msg << endl << flush; } // Information about compile servers. struct compile_server_info { compile_server_info () : port(0), fully_specified(false) { memset (& address, 0, sizeof (address)); } string host_name; PRNetAddr address; unsigned short port; bool fully_specified; string version; string sysinfo; string certinfo; vector mok_fingerprints; bool empty () const { return this->host_name.empty () && ! this->hasAddress () && certinfo.empty (); } bool hasAddress () const { return this->address.raw.family != 0; } unsigned short setAddressPort (unsigned short port) { if (this->address.raw.family == PR_AF_INET) return this->address.inet.port = htons (port); if (this->address.raw.family == PR_AF_INET6) return this->address.ipv6.port = htons (port); assert (0); return 0; } bool isComplete () const { return this->hasAddress () && port != 0; } bool operator== (const compile_server_info &that) const { // If one item or the other has only a name, and possibly a port specified, // then allow a match by name and port only. This is so that the user can specify // names which are returned by avahi, but are not dns resolvable. // Otherwise, we will ignore the host_name. if ((! this->hasAddress() && this->version.empty () && this->sysinfo.empty () && this->certinfo.empty ()) || (! that.hasAddress() && that.version.empty () && that.sysinfo.empty () && that.certinfo.empty ())) { if (this->host_name != that.host_name) return false; } // Compare the other fields only if they have both been set. if (this->hasAddress() && that.hasAddress() && this->address != that.address) return false; if (this->port != 0 && that.port != 0 && this->port != that.port) return false; if (! this->version.empty () && ! that.version.empty () && this->version != that.version) return false; if (! this->sysinfo.empty () && ! that.sysinfo.empty () && this->sysinfo != that.sysinfo) return false; if (! this->certinfo.empty () && ! that.certinfo.empty () && this->certinfo != that.certinfo) return false; if (! this->mok_fingerprints.empty () && ! that.mok_fingerprints.empty () && this->mok_fingerprints != that.mok_fingerprints) return false; return true; // They are equal } // Used to sort servers by preference for order of contact. The preferred server is // "less" than the other one. bool operator< (const compile_server_info &that) const { // Prefer servers with a later (higher) version number. cs_protocol_version this_version (this->version.c_str ()); cs_protocol_version that_version (that.version.c_str ()); return that_version < this_version; } }; ostream &operator<< (ostream &s, const compile_server_info &i); ostream &operator<< (ostream &s, const vector &v); static void preferred_order (vector &servers) { // Sort the given list of servers into the preferred order for contacting. // Don't bother if there are less than 2 servers in the list. if (servers.size () < 2) return; // Sort the list using compile_server_info::operator< sort (servers.begin (), servers.end ()); } struct resolved_host // see also PR16326, PR16342 { string host_name; PRNetAddr address; resolved_host(string chost_name, PRNetAddr caddress): host_name(chost_name), address(caddress) {} }; struct compile_server_cache { vector default_servers; vector specified_servers; vector trusted_servers; vector signing_servers; vector online_servers; vector all_servers; map > resolved_hosts; }; // For filtering queries. enum compile_server_properties { compile_server_all = 0x1, compile_server_trusted = 0x2, compile_server_online = 0x4, compile_server_compatible = 0x8, compile_server_signer = 0x10, compile_server_specified = 0x20 }; // Static functions. static compile_server_cache* cscache(systemtap_session& s); static void query_server_status (systemtap_session &s, const string &status_string); static void get_server_info (systemtap_session &s, int pmask, vector &servers); static void get_all_server_info (systemtap_session &s, vector &servers); static void get_default_server_info (systemtap_session &s, vector &servers); static void get_specified_server_info (systemtap_session &s, vector &servers, bool no_default = false); static void get_or_keep_online_server_info (systemtap_session &s, vector &servers, bool keep); static void get_or_keep_trusted_server_info (systemtap_session &s, vector &servers, bool keep); static void get_or_keep_signing_server_info (systemtap_session &s, vector &servers, bool keep); static void get_or_keep_compatible_server_info (systemtap_session &s, vector &servers, bool keep); static void keep_common_server_info (const compile_server_info &info_to_keep, vector &filtered_info); static void keep_common_server_info (const vector &info_to_keep, vector &filtered_info); static void keep_server_info_with_cert_and_port (systemtap_session &s, const compile_server_info &server, vector &servers); static void add_server_info (const compile_server_info &info, vector& list); static void add_server_info (const vector &source, vector &target); static void merge_server_info (const compile_server_info &source, compile_server_info &target); #if 0 // not used right now static void merge_server_info (const compile_server_info &source, vector &target); static void merge_server_info (const vector &source, vector &target); #endif static void resolve_host (systemtap_session& s, compile_server_info &server, vector &servers); /* Exit error codes */ #define SUCCESS 0 #define GENERAL_ERROR 1 #define CA_CERT_INVALID_ERROR 2 #define SERVER_CERT_EXPIRED_ERROR 3 // ----------------------------------------------------- // NSS related code used by the compile server client // ----------------------------------------------------- static void add_server_trust (systemtap_session &s, const string &cert_db_path, vector &server_list); static void revoke_server_trust (systemtap_session &s, const string &cert_db_path, const vector &server_list); static void get_server_info_from_db (systemtap_session &s, vector &servers, const string &cert_db_path); static string global_client_cert_db_path () { return SYSCONFDIR "/systemtap/ssl/client"; } static string private_ssl_cert_db_path () { return local_client_cert_db_path (); } static string global_ssl_cert_db_path () { return global_client_cert_db_path (); } static string signing_cert_db_path () { return SYSCONFDIR "/systemtap/staprun"; } /* Connection state. */ typedef struct connectionState_t { const char *hostName; PRNetAddr addr; const char *infileName; const char *outfileName; const char *trustNewServerMode; } connectionState_t; #if 0 /* No client authorization */ static char * myPasswd(PK11SlotInfo *info, PRBool retry, void *arg) { char * passwd = NULL; if ( (!retry) && arg ) passwd = PORT_Strdup((char *)arg); return passwd; } #endif /* Add the server's certificate to our database of trusted servers. */ static SECStatus trustNewServer (CERTCertificate *serverCert) { SECStatus secStatus; CERTCertTrust *trust = NULL; PK11SlotInfo *slot = NULL; /* Import the certificate. */ slot = PK11_GetInternalKeySlot(); const char *nickname = server_cert_nickname (); secStatus = PK11_ImportCert(slot, serverCert, CK_INVALID_HANDLE, nickname, PR_FALSE); if (secStatus != SECSuccess) goto done; /* Make it a trusted peer. */ trust = (CERTCertTrust *)PORT_ZAlloc(sizeof(CERTCertTrust)); if (! trust) { secStatus = SECFailure; goto done; } secStatus = CERT_DecodeTrustString(trust, "P,P,P"); if (secStatus != SECSuccess) goto done; secStatus = CERT_ChangeCertTrust(CERT_GetDefaultCertDB(), serverCert, trust); done: if (slot) PK11_FreeSlot (slot); if (trust) PORT_Free(trust); return secStatus; } /* Called when the server certificate verification fails. This gives us the chance to trust the server anyway and add the certificate to the local database. */ static SECStatus badCertHandler(void *arg, PRFileDesc *sslSocket) { SECStatus secStatus; PRErrorCode errorNumber; CERTCertificate *serverCert = NULL; SECItem subAltName; PRArenaPool *tmpArena = NULL; CERTGeneralName *nameList, *current; char *expected = NULL; const connectionState_t *connectionState = (connectionState_t *)arg; errorNumber = PR_GetError (); switch (errorNumber) { case SSL_ERROR_BAD_CERT_DOMAIN: /* Since we administer our own client-side databases of trustworthy certificates, we don't need the domain name(s) on the certificate to match. If the cert is in our database, then we can trust it. If we know the expected domain name, then issue a warning but, in any case, accept the certificate. */ secStatus = SECSuccess; expected = SSL_RevealURL (sslSocket); if (expected == NULL || *expected == '\0') break; fprintf (stderr, STAP_CSC_01, expected); /* List the DNS names from the server cert as part of the warning. First, find the alt-name extension on the certificate. */ subAltName.data = NULL; serverCert = SSL_PeerCertificate (sslSocket); secStatus = CERT_FindCertExtension (serverCert, SEC_OID_X509_SUBJECT_ALT_NAME, & subAltName); if (secStatus != SECSuccess || ! subAltName.data) { fprintf (stderr, _("Unable to find alt name extension on the server certificate\n")); secStatus = SECSuccess; /* Not a fatal error */ break; } // Now, decode the extension. tmpArena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (! tmpArena) { fprintf (stderr, _("Out of memory\n")); SECITEM_FreeItem(& subAltName, PR_FALSE); secStatus = SECSuccess; /* Not a fatal error here */ break; } nameList = CERT_DecodeAltNameExtension (tmpArena, & subAltName); SECITEM_FreeItem(& subAltName, PR_FALSE); if (! nameList) { fprintf (stderr, _("Unable to decode alt name extension on server certificate\n")); secStatus = SECSuccess; /* Not a fatal error */ break; } /* List the DNS names from the server cert as part of the warning. The names are in a circular list. */ current = nameList; do { /* Make sure this is a DNS name. */ if (current->type == certDNSName) { fprintf (stderr, " %.*s\n", (int)current->name.other.len, current->name.other.data); } current = CERT_GetNextGeneralName (current); } while (current != nameList); break; case SEC_ERROR_CA_CERT_INVALID: /* The server's certificate is not trusted. Should we trust it? */ secStatus = SECFailure; /* Do not trust by default. */ if (! connectionState->trustNewServerMode) break; /* Trust it for this session only? */ if (strcmp (connectionState->trustNewServerMode, "session") == 0) { secStatus = SECSuccess; break; } /* Trust it permanently? */ if (strcmp (connectionState->trustNewServerMode, "permanent") == 0) { /* The user wants to trust this server. Get the server's certificate so and add it to our database. */ serverCert = SSL_PeerCertificate (sslSocket); if (serverCert != NULL) { secStatus = trustNewServer (serverCert); } } break; default: secStatus = SECFailure; /* Do not trust this server */ break; } if (expected) PORT_Free (expected); if (tmpArena) PORT_FreeArena (tmpArena, PR_FALSE); if (serverCert != NULL) { CERT_DestroyCertificate (serverCert); } return secStatus; } static PRFileDesc * setupSSLSocket (connectionState_t *connectionState) { PRFileDesc *tcpSocket; PRFileDesc *sslSocket; PRSocketOptionData socketOption; PRStatus prStatus; SECStatus secStatus; tcpSocket = PR_OpenTCPSocket(connectionState->addr.raw.family); if (tcpSocket == NULL) goto loser; /* Make the socket blocking. */ socketOption.option = PR_SockOpt_Nonblocking; socketOption.value.non_blocking = PR_FALSE; prStatus = PR_SetSocketOption(tcpSocket, &socketOption); if (prStatus != PR_SUCCESS) goto loser; /* Import the socket into the SSL layer. */ sslSocket = SSL_ImportFD(NULL, tcpSocket); if (!sslSocket) goto loser; /* Set configuration options. */ secStatus = SSL_OptionSet(sslSocket, SSL_SECURITY, PR_TRUE); if (secStatus != SECSuccess) goto loser; secStatus = SSL_OptionSet(sslSocket, SSL_HANDSHAKE_AS_CLIENT, PR_TRUE); if (secStatus != SECSuccess) goto loser; /* Set SSL callback routines. */ #if 0 /* no client authentication */ secStatus = SSL_GetClientAuthDataHook(sslSocket, (SSLGetClientAuthData)myGetClientAuthData, (void *)certNickname); if (secStatus != SECSuccess) goto loser; #endif #if 0 /* Use the default */ secStatus = SSL_AuthCertificateHook(sslSocket, (SSLAuthCertificate)myAuthCertificate, (void *)CERT_GetDefaultCertDB()); if (secStatus != SECSuccess) goto loser; #endif secStatus = SSL_BadCertHook(sslSocket, (SSLBadCertHandler)badCertHandler, connectionState); if (secStatus != SECSuccess) goto loser; #if 0 /* No handshake callback */ secStatus = SSL_HandshakeCallback(sslSocket, myHandshakeCallback, NULL); if (secStatus != SECSuccess) goto loser; #endif return sslSocket; loser: if (tcpSocket) PR_Close(tcpSocket); return NULL; } static SECStatus handle_connection (PRFileDesc *sslSocket, connectionState_t *connectionState) { PRInt32 numBytes; char *readBuffer; PRFileInfo info; PRFileDesc *local_file_fd; PRStatus prStatus; SECStatus secStatus = SECSuccess; #define READ_BUFFER_SIZE (60 * 1024) /* If we don't have both the input and output file names, then we're contacting this server only in order to establish trust. In this case send 0 as the file size and exit. */ if (! connectionState->infileName || ! connectionState->outfileName) { numBytes = htonl ((PRInt32)0); numBytes = PR_Write (sslSocket, & numBytes, sizeof (numBytes)); if (numBytes < 0) return SECFailure; return SECSuccess; } /* read and send the data. */ /* Try to open the local file named. * If successful, then write it to the server */ prStatus = PR_GetFileInfo(connectionState->infileName, &info); if (prStatus != PR_SUCCESS || info.type != PR_FILE_FILE || info.size < 0) { fprintf (stderr, STAP_CSC_02, connectionState->infileName); return SECFailure; } local_file_fd = PR_Open(connectionState->infileName, PR_RDONLY, 0); if (local_file_fd == NULL) { fprintf (stderr, STAP_CSC_03, connectionState->infileName); return SECFailure; } /* Send the file size first, so the server knows when it has the entire file. */ numBytes = htonl ((PRInt32)info.size); numBytes = PR_Write(sslSocket, & numBytes, sizeof (numBytes)); if (numBytes < 0) { PR_Close(local_file_fd); return SECFailure; } /* Transmit the local file across the socket. */ numBytes = PR_TransmitFile(sslSocket, local_file_fd, NULL, 0, PR_TRANSMITFILE_KEEP_OPEN, PR_INTERVAL_NO_TIMEOUT); if (numBytes < 0) { PR_Close(local_file_fd); return SECFailure; } PR_Close(local_file_fd); /* read until EOF */ readBuffer = (char *)PORT_Alloc(READ_BUFFER_SIZE); if (! readBuffer) { fprintf (stderr, _("Out of memory\n")); return SECFailure; } local_file_fd = PR_Open(connectionState->outfileName, PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE, PR_IRUSR | PR_IWUSR | PR_IRGRP | PR_IWGRP | PR_IROTH); if (local_file_fd == NULL) { fprintf (stderr, STAP_CSC_04, connectionState->outfileName); return SECFailure; } while (PR_TRUE) { // No need for PR_Read_Complete here, since we're already managing multiple // reads to a fixed size buffer. numBytes = PR_Read (sslSocket, readBuffer, READ_BUFFER_SIZE); if (numBytes == 0) break; /* EOF */ if (numBytes < 0) { secStatus = SECFailure; break; } /* Write to output file */ numBytes = PR_Write(local_file_fd, readBuffer, numBytes); if (numBytes < 0) { fprintf (stderr, STAP_CSC_05, connectionState->outfileName); secStatus = SECFailure; break; } } PR_Free(readBuffer); PR_Close(local_file_fd); /* Caller closes the socket. */ return secStatus; } /* make the connection. */ static SECStatus do_connect (connectionState_t *connectionState) { PRFileDesc *sslSocket; PRStatus prStatus; SECStatus secStatus; secStatus = SECSuccess; /* Set up SSL secure socket. */ sslSocket = setupSSLSocket (connectionState); if (sslSocket == NULL) return SECFailure; #if 0 /* no client authentication */ secStatus = SSL_SetPKCS11PinArg(sslSocket, password); if (secStatus != SECSuccess) goto done; #endif secStatus = SSL_SetURL(sslSocket, connectionState->hostName); if (secStatus != SECSuccess) goto done; prStatus = PR_Connect(sslSocket, & connectionState->addr, PR_INTERVAL_NO_TIMEOUT); if (prStatus != PR_SUCCESS) { secStatus = SECFailure; goto done; } /* Established SSL connection, ready to send data. */ secStatus = SSL_ResetHandshake(sslSocket, /* asServer */ PR_FALSE); if (secStatus != SECSuccess) goto done; /* This is normally done automatically on the first I/O operation, but doing it here catches any authentication problems early. */ secStatus = SSL_ForceHandshake(sslSocket); if (secStatus != SECSuccess) goto done; // Connect to the server and make the request. secStatus = handle_connection(sslSocket, connectionState); done: prStatus = PR_Close(sslSocket); return secStatus; } static bool isIPv6LinkLocal (const PRNetAddr &address) { // Link-local addresses are members of the address block fe80:: if (address.raw.family == PR_AF_INET6 && address.ipv6.ip.pr_s6_addr[0] == 0xfe && address.ipv6.ip.pr_s6_addr[1] == 0x80) return true; return false; } int client_connect (const compile_server_info &server, const char* infileName, const char* outfileName, const char* trustNewServer) { SECStatus secStatus; PRErrorCode errorNumber; int attempt; int errCode = GENERAL_ERROR; struct connectionState_t connectionState; // Set up a connection state for use by NSS error callbacks. memset (& connectionState, 0, sizeof (connectionState)); connectionState.hostName = server.host_name.c_str (); connectionState.addr = server.address; connectionState.infileName = infileName; connectionState.outfileName = outfileName; connectionState.trustNewServerMode = trustNewServer; /* Some errors (see below) represent a situation in which trying again should succeed. However, don't try forever. */ for (attempt = 0; attempt < 5; ++attempt) { secStatus = do_connect (& connectionState); if (secStatus == SECSuccess) return SUCCESS; errorNumber = PR_GetError (); switch (errorNumber) { case PR_CONNECT_RESET_ERROR: /* Server was not ready. */ sleep (1); break; /* Try again */ case SEC_ERROR_EXPIRED_CERTIFICATE: /* The server's certificate has expired. It should generate a new certificate. Return now and we'll try again. */ errCode = SERVER_CERT_EXPIRED_ERROR; return errCode; case SEC_ERROR_CA_CERT_INVALID: /* The server's certificate is not trusted. The exit code must reflect this. */ errCode = CA_CERT_INVALID_ERROR; return errCode; default: /* This error is fatal. */ return errCode; } } return errCode; } int compile_server_client::passes_0_4 () { PROBE1(stap, client__start, &s); // arguments parsed; get down to business if (s.verbose || ! s.auto_server_msgs.empty ()) clog << _("Using a compile server.") << endl; struct tms tms_before; times (& tms_before); struct timeval tv_before; gettimeofday (&tv_before, NULL); // Create the request package. int rc = initialize (); assert_no_interrupts(); if (rc != 0) goto done; rc = create_request (); assert_no_interrupts(); if (rc != 0) goto done; rc = package_request (); assert_no_interrupts(); if (rc != 0) goto done; // Submit it to the server. rc = find_and_connect_to_server (); assert_no_interrupts(); if (rc != 0) goto done; // Unpack and process the response. rc = unpack_response (); assert_no_interrupts(); if (rc != 0) goto done; rc = process_response (); done: struct tms tms_after; times (& tms_after); unsigned _sc_clk_tck = sysconf (_SC_CLK_TCK); struct timeval tv_after; gettimeofday (&tv_after, NULL); #define TIMESPRINT "in " << \ (tms_after.tms_cutime + tms_after.tms_utime \ - tms_before.tms_cutime - tms_before.tms_utime) * 1000 / (_sc_clk_tck) << "usr/" \ << (tms_after.tms_cstime + tms_after.tms_stime \ - tms_before.tms_cstime - tms_before.tms_stime) * 1000 / (_sc_clk_tck) << "sys/" \ << ((tv_after.tv_sec - tv_before.tv_sec) * 1000 + \ ((long)tv_after.tv_usec - (long)tv_before.tv_usec) / 1000) << "real ms." if (rc == 0) { // Save the module, if necessary. if (s.last_pass == 4) s.save_module = true; // Copy module to the current directory. if (! pending_interrupts) { if (s.save_module) { string module_src_path = s.tmpdir + "/" + s.module_filename(); string module_dest_path = s.module_filename(); copy_file (module_src_path, module_dest_path, s.verbose >= 3); // Also copy the module signature, it it exists. module_src_path += ".sgn"; if (file_exists (module_src_path)) { module_dest_path += ".sgn"; copy_file(module_src_path, module_dest_path, s.verbose >= 3); } } // Print the name of the module if (s.last_pass == 4) { cout << s.module_filename() << endl; } } } // syntax errors, if any, are already printed if (s.verbose) { string ws = s.winning_server; if (ws == "") ws = "?"; clog << _("Passes: via server ") << ws << " " << getmemusage() << TIMESPRINT << endl; } if (rc && !s.dump_mode) { clog << _("Passes: via server failed. Try again with another '-v' option.") << endl; } PROBE1(stap, client__end, &s); return rc; } // Initialize a client/server session. int compile_server_client::initialize () { int rc = 0; // Initialize session state argc = 0; // Private location for server certificates. private_ssl_dbs.push_back (private_ssl_cert_db_path ()); // Additional public location. public_ssl_dbs.push_back (global_ssl_cert_db_path ()); // Create a temporary directory to package things in. client_tmpdir = s.tmpdir + "/client"; rc = create_dir (client_tmpdir.c_str ()); if (rc != 0) { const char* e = strerror (errno); clog << _("ERROR: cannot create temporary directory (\"") << client_tmpdir << "\"): " << e << endl; } return rc; } // Create the request package. int compile_server_client::create_request () { // Add the current protocol version. int rc = write_to_file (client_tmpdir + "/version", CURRENT_CS_PROTOCOL_VERSION); if (rc != 0) return rc; // Add the script file or script option if (s.script_file != "") { if (s.script_file == "-") { // Copy the script from stdin string packaged_script_dir = client_tmpdir + "/script"; rc = create_dir (packaged_script_dir.c_str ()); if (rc != 0) { const char* e = strerror (errno); clog << _("ERROR: cannot create temporary directory ") << packaged_script_dir << ": " << e << endl; return rc; } rc = ! copy_file("/dev/stdin", packaged_script_dir + "/-"); if (rc != 0) return rc; // Name the script in the packaged arguments. rc = add_package_arg ("script/-"); if (rc != 0) return rc; } else { // Add the script to our package. This will also name the script // in the packaged arguments. rc = include_file_or_directory ("script", s.script_file); if (rc != 0) return rc; } } // Add -I paths. Skip the default directory. if (s.include_arg_start != -1) { unsigned limit = s.include_path.size (); for (unsigned i = s.include_arg_start; i < limit; ++i) { rc = add_package_arg ("-I"); if (rc != 0) return rc; rc = include_file_or_directory ("tapset", s.include_path[i]); if (rc != 0) return rc; } } // Add other options. rc = add_package_args (); if (rc != 0) return rc; // Add the sysinfo file string sysinfo = "sysinfo: " + s.kernel_release + " " + s.architecture; rc = write_to_file (client_tmpdir + "/sysinfo", sysinfo); if (rc != 0) return rc; // Add localization data rc = add_localization_variables(); // Add the machine owner key (MOK) fingerprints file, if needed. if (! s.mok_fingerprints.empty()) { ostringstream fingerprints; vector::const_iterator it; for (it = s.mok_fingerprints.begin(); it != s.mok_fingerprints.end(); it++) fingerprints << *it << endl; rc = write_to_file(client_tmpdir + "/mok_fingerprints", fingerprints.str()); if (rc != 0) return rc; } return rc; } // Add the arguments specified on the command line to the server request // package, as appropriate. int compile_server_client::add_package_args () { // stap arguments to be passed to the server. int rc = 0; unsigned limit = s.server_args.size(); for (unsigned i = 0; i < limit; ++i) { rc = add_package_arg (s.server_args[i]); if (rc != 0) return rc; } // Script arguments. limit = s.args.size(); if (limit > 0) { rc = add_package_arg ("--"); if (rc != 0) return rc; for (unsigned i = 0; i < limit; ++i) { rc = add_package_arg (s.args[i]); if (rc != 0) return rc; } } return rc; } int compile_server_client::add_package_arg (const string &arg) { int rc = 0; ostringstream fname; fname << client_tmpdir << "/argv" << ++argc; write_to_file (fname.str (), arg); // NB: No terminating newline return rc; } // Symbolically link the given file or directory into the client's temp // directory under the given subdirectory. int compile_server_client::include_file_or_directory ( const string &subdir, const string &path ) { // Must predeclare these because we do use 'goto done' to // exit from error situations. vector components; string name; int rc; // Canonicalize the given path and remove the leading /. string rpath; char *cpath = canonicalize_file_name (path.c_str ()); if (! cpath) { // It can not be canonicalized. Use the name relative to // the current working directory and let the server deal with it. char cwd[PATH_MAX]; if (getcwd (cwd, sizeof (cwd)) == NULL) { rpath = path; rc = 1; goto done; } rpath = string (cwd) + "/" + path; } else { // It can be canonicalized. Use the canonicalized name and add this // file or directory to the request package. rpath = cpath; free (cpath); // Including / would require special handling in the code below and // is a bad idea anyway. Let's not allow it. if (rpath == "/") { if (rpath != path) clog << _F("%s resolves to %s\n", path.c_str (), rpath.c_str ()); clog << _F("Unable to send %s to the server\n", path.c_str ()); return 1; } // First create the requested subdirectory. name = client_tmpdir + "/" + subdir; rc = create_dir (name.c_str ()); if (rc) goto done; // Now create each component of the path within the sub directory. assert (rpath[0] == '/'); tokenize (rpath.substr (1), components, "/"); assert (components.size () >= 1); unsigned i; for (i = 0; i < components.size() - 1; ++i) { if (components[i].empty ()) continue; // embedded '//' name += "/" + components[i]; rc = create_dir (name.c_str ()); if (rc) goto done; } // Now make a symbolic link to the actual file or directory. assert (i == components.size () - 1); name += "/" + components[i]; rc = symlink (rpath.c_str (), name.c_str ()); if (rc) goto done; } // Name this file or directory in the packaged arguments. rc = add_package_arg (subdir + "/" + rpath.substr (1)); done: if (rc != 0) { const char* e = strerror (errno); clog << "ERROR: unable to add " << rpath << " to temp directory as " << name << ": " << e << endl; } return rc; } // Add the localization variables to the server request // package. int compile_server_client::add_localization_variables() { int rc; string envVar; string fname; const set &locVars = localization_variables(); set::iterator it; /* Note: We don't have to check for the contents of the environment * variables here, since they will be checked extensively on the * server. */ for (it = locVars.begin(); it != locVars.end(); it++) { char* var = getenv((*it).c_str()); if (var) envVar += *it + "=" + (string)var + "\n"; } fname = client_tmpdir + "/locale"; rc = write_to_file(fname, envVar); return rc; } // Package the client's temp directory into a form suitable for sending to the // server. int compile_server_client::package_request () { // Package up the temporary directory into a zip file. client_zipfile = client_tmpdir + ".zip"; string cmd = "cd " + cmdstr_quoted(client_tmpdir) + " && zip -qr " + cmdstr_quoted(client_zipfile) + " *"; vector sh_cmd { "sh", "-c", cmd }; int rc = stap_system (s.verbose, sh_cmd); return rc; } int compile_server_client::find_and_connect_to_server () { // Accumulate info on the specified servers. vector specified_servers; get_specified_server_info (s, specified_servers); // Examine the specified servers to make sure that each has been resolved // with a host name, ip address and port. If not, try to obtain this // information by examining online servers. vector server_list; for (vector::const_iterator i = specified_servers.begin (); i != specified_servers.end (); ++i) { // If we have an ip address and were given a port number, then just use the one we've // been given. Otherwise, check for matching compatible online servers and try their // ip addresses and ports. if (i->hasAddress() && i->fully_specified) add_server_info (*i, server_list); else { // Obtain a list of online servers. vector online_servers; get_or_keep_online_server_info (s, online_servers, false/*keep*/); // If no specific server (port) has been specified, // then we'll need the servers to be // compatible and possibly trusted as signers as well. if (! i->fully_specified) { get_or_keep_compatible_server_info (s, online_servers, true/*keep*/); if (! pr_contains (s.privilege, pr_stapdev)) get_or_keep_signing_server_info (s, online_servers, true/*keep*/); } // Keep the ones (if any) which match our server. keep_common_server_info (*i, online_servers); // Add these servers (if any) to the server list. add_server_info (online_servers, server_list); } } // Did we identify any potential servers? unsigned limit = server_list.size (); if (limit == 0) { clog << _("Unable to find a suitable compile server. [man stap-server]") << endl; // Try to explain why. vector online_servers; get_or_keep_online_server_info (s, online_servers, false/*keep*/); if (online_servers.empty ()) clog << _("No servers online to select from.") << endl; else { clog << _("The following servers are online:") << endl; clog << online_servers; if (! specified_servers.empty ()) { clog << _("The following servers were requested:") << endl; clog << specified_servers; } else { string criteria = "online,trusted,compatible"; if (! pr_contains (s.privilege, pr_stapdev)) criteria += ",signer"; clog << _F("No servers matched the selection criteria of %s.", criteria.c_str()) << endl; } } return 1; } // Sort the list of servers into a preferred order. preferred_order (server_list); // Now try each of the identified servers in turn. int rc = compile_using_server (server_list); if (rc == SUCCESS) return 0; // success! // If the error was that a server's cert was expired, try again. This is because the server // should generate a new cert which may be automatically trusted by us if it is our server. // Give the server a chance to do this before retrying. if (rc == SERVER_CERT_EXPIRED_ERROR) { if (s.verbose >= 2) clog << _("The server's certificate was expired. Trying again") << endl << flush; sleep (2); rc = compile_using_server (server_list); if (rc == SUCCESS) return 0; // success! } // We were unable to use any available server clog << _("Unable to connect to a server.") << endl; if (s.verbose == 1) { // This information is redundant at higher verbosity levels. clog << _("The following servers were tried:") << endl; clog << server_list; } return 1; // Failure } int compile_server_client::compile_using_server ( vector &servers ) { // Make sure NSPR is initialized. Must be done before NSS is initialized s.NSPR_init (); // Attempt connection using each of the available client certificate // databases. Assume the server certificate is invalid until proven otherwise. PR_SetError (SEC_ERROR_CA_CERT_INVALID, 0); vector dbs = private_ssl_dbs; vector::iterator i = dbs.end(); dbs.insert (i, public_ssl_dbs.begin (), public_ssl_dbs.end ()); int rc = GENERAL_ERROR; // assume failure bool serverCertExpired = false; for (i = dbs.begin (); i != dbs.end (); ++i) { // Make sure the database directory exists. It is not an error if it // doesn't. if (! file_exists (*i)) continue; #if 0 // no client authentication for now. // Set our password function callback. PK11_SetPasswordFunc (myPasswd); #endif // Initialize the NSS libraries. const char *cert_dir = i->c_str (); SECStatus secStatus = nssInit (cert_dir); if (secStatus != SECSuccess) { // Message already issued. continue; // try next database } // Enable all cipher suites. // SSL_ClearSessionCache is required for the new settings to take effect. /* Some NSS versions don't do this correctly in NSS_SetDomesticPolicy. */ do { const PRUint16 *cipher; for (cipher = SSL_GetImplementedCiphers(); *cipher != 0; ++cipher) SSL_CipherPolicySet(*cipher, SSL_ALLOWED); } while (0); SSL_ClearSessionCache (); server_zipfile = s.tmpdir + "/server.zip"; // Try each server in turn. for (vector::iterator j = servers.begin (); j != servers.end (); ++j) { // At a minimum we need an ip_address along with a port // number in order to contact the server. if (! j->hasAddress() || j->port == 0) continue; // Set the port within the address. j->setAddressPort (j->port); if (s.verbose >= 2) clog << _F("Attempting SSL connection with %s\n" " using certificates from the database in %s\n", lex_cast(*j).c_str(), cert_dir); rc = client_connect (*j, client_zipfile.c_str(), server_zipfile.c_str (), NULL/*trustNewServer_p*/); if (rc == SUCCESS) { s.winning_server = lex_cast(*j); break; // Success! } // Server cert has expired. Try other servers and/or databases, but take note because // server should generate a new certificate. If no other servers succeed, we'll try again // in case the new cert works. if (rc == SERVER_CERT_EXPIRED_ERROR) { serverCertExpired = true; continue; } if (s.verbose >= 2) { clog << _(" Unable to connect: "); nssError (); // Additional information: if the address is IPv6 and is link-local, then it must // have a scope_id. if (isIPv6LinkLocal (j->address) && j->address.ipv6.scope_id == 0) { clog << _(" The address is an IPv6 link-local address with no scope specifier.") << endl; } } } // SSL_ClearSessionCache is required before shutdown for client applications. SSL_ClearSessionCache (); nssCleanup (cert_dir); if (rc == SECSuccess) break; // Success! } // Indicate whether a server cert was expired, so we can try again, if desired. if (rc != SUCCESS) { if (serverCertExpired) rc = SERVER_CERT_EXPIRED_ERROR; } return rc; } int compile_server_client::unpack_response () { // Unzip the response package. server_tmpdir = s.tmpdir + "/server"; vector cmd { "unzip", "-qd", server_tmpdir, server_zipfile }; int rc = stap_system (s.verbose, cmd); if (rc != 0) { clog << _F("Unable to unzip the server response '%s'\n", server_zipfile.c_str()); return rc; } // Determine the server protocol version. string filename = server_tmpdir + "/version"; if (file_exists (filename)) ::read_from_file (filename, server_version); // Warn about the shortcomings of this server, if it is down level. show_server_compatibility (); // If the server's response contains a systemtap temp directory, move // its contents to our temp directory. glob_t globbuf; string filespec = server_tmpdir + "/stap??????"; if (s.verbose >= 3) clog << _F("Searching \"%s\"\n", filespec.c_str()); int r = glob(filespec.c_str (), 0, NULL, & globbuf); if (r != GLOB_NOSPACE && r != GLOB_ABORTED && r != GLOB_NOMATCH) { if (globbuf.gl_pathc > 1) { clog << _("Incorrect number of files in server response") << endl; rc = 1; goto done; } assert (globbuf.gl_pathc == 1); string dirname = globbuf.gl_pathv[0]; if (s.verbose >= 3) clog << _(" found ") << dirname << endl; filespec = dirname + "/*"; if (s.verbose >= 3) clog << _F("Searching \"%s\"\n", filespec.c_str()); int r = glob(filespec.c_str (), GLOB_PERIOD, NULL, & globbuf); if (r != GLOB_NOSPACE && r != GLOB_ABORTED && r != GLOB_NOMATCH) { unsigned prefix_len = dirname.size () + 1; for (unsigned i = 0; i < globbuf.gl_pathc; ++i) { string oldname = globbuf.gl_pathv[i]; if (oldname.substr (oldname.size () - 2) == "/." || oldname.substr (oldname.size () - 3) == "/..") continue; string newname = s.tmpdir + "/" + oldname.substr (prefix_len); if (s.verbose >= 3) clog << _F(" found %s -- linking from %s", oldname.c_str(), newname.c_str()); rc = symlink (oldname.c_str (), newname.c_str ()); if (rc != 0) { clog << _F("Unable to link '%s' to '%s':%s\n", oldname.c_str(), newname.c_str(), strerror(errno)); goto done; } } } } // If the server version is less that 1.6, remove the output line due to the synthetic // server-side -k. Look for a message containing the name of the temporary directory. // We can look for the English message since server versions before 1.6 do not support // localization. if (server_version < "1.6") { cmd = { "sed", "-i", "/^Keeping temporary directory.*/ d", server_tmpdir + "/stderr" }; stap_system (s.verbose, cmd); } // Remove the output line due to the synthetic server-side -p4 cmd = { "sed", "-i", "/^.*\\.ko$/ d", server_tmpdir + "/stdout" }; stap_system (s.verbose, cmd); done: globfree (& globbuf); return rc; } int compile_server_client::process_response () { // Pick up the results of running stap on the server. string filename = server_tmpdir + "/rc"; int stap_rc; int rc = read_from_file (filename, stap_rc); if (rc != 0) return rc; rc = stap_rc; if (s.last_pass >= 4) { // The server should have returned a module. string filespec = s.tmpdir + "/*.ko"; if (s.verbose >= 3) clog << _F("Searching \"%s\"\n", filespec.c_str()); glob_t globbuf; int r = glob(filespec.c_str (), 0, NULL, & globbuf); if (r != GLOB_NOSPACE && r != GLOB_ABORTED && r != GLOB_NOMATCH) { if (globbuf.gl_pathc > 1) clog << _("Incorrect number of modules in server response") << endl; else { assert (globbuf.gl_pathc == 1); string modname = globbuf.gl_pathv[0]; if (s.verbose >= 3) clog << _(" found ") << modname << endl; // If a module name was not specified by the user, then set it to // be the one generated by the server. if (! s.save_module) { vector components; tokenize (modname, components, "/"); s.module_name = components.back (); s.module_name.erase(s.module_name.size() - 3); } // If a uprobes.ko module was returned, then make note of it. string uprobes_ko; if (server_version < "1.6") uprobes_ko = s.tmpdir + "/server/uprobes.ko"; else uprobes_ko = s.tmpdir + "/uprobes/uprobes.ko"; if (file_exists (uprobes_ko)) { s.need_uprobes = true; s.uprobes_path = uprobes_ko; } } } else if (s.have_script) { if (rc == 0) { clog << _("No module was returned by the server.") << endl; rc = 1; } } globfree (& globbuf); } // If the server returned a MOK certificate, copy it to the user's // current directory. string server_MOK_public_cert = s.tmpdir + "/server/" MOK_PUBLIC_CERT_NAME; if (file_exists (server_MOK_public_cert)) { string dst = MOK_PUBLIC_CERT_NAME; copy_file (server_MOK_public_cert, dst, (s.verbose >= 3)); } // Output stdout and stderr. filename = server_tmpdir + "/stderr"; flush_to_stream (filename, clog); filename = server_tmpdir + "/stdout"; flush_to_stream (filename, cout); return rc; } int compile_server_client::read_from_file (const string &fname, int &data) { // C++ streams may not set errno in the even of a failure. However if we // set it to 0 before each operation and it gets set during the operation, // then we can use its value in order to determine what happened. errno = 0; ifstream f (fname.c_str ()); if (! f.good ()) { clog << _F("Unable to open file '%s' for reading: ", fname.c_str()); goto error; } // Read the data; errno = 0; f >> data; if (f.fail ()) { clog << _F("Unable to read from file '%s': ", fname.c_str()); goto error; } // NB: not necessary to f.close (); return 0; // Success error: if (errno) clog << strerror (errno) << endl; else clog << _("unknown error") << endl; return 1; // Failure } template int compile_server_client::write_to_file (const string &fname, const T &data) { // C++ streams may not set errno in the even of a failure. However if we // set it to 0 before each operation and it gets set during the operation, // then we can use its value in order to determine what happened. errno = 0; ofstream f (fname.c_str ()); if (! f.good ()) { clog << _F("Unable to open file '%s' for writing: ", fname.c_str()); goto error; } // Write the data; f << data; errno = 0; if (f.fail ()) { clog << _F("Unable to write to file '%s': ", fname.c_str()); goto error; } // NB: not necessary to f.close (); return 0; // Success error: if (errno) clog << strerror (errno) << endl; else clog << _("unknown error") << endl; return 1; // Failure } int compile_server_client::flush_to_stream (const string &fname, ostream &o) { // C++ streams may not set errno in the even of a failure. However if we // set it to 0 before each operation and it gets set during the operation, // then we can use its value in order to determine what happened. errno = 0; ifstream f (fname.c_str ()); if (! f.good ()) { clog << _F("Unable to open file '%s' for reading: ", fname.c_str()); goto error; } // Stream the data // NB: o << f.rdbuf() misbehaves for some reason, appearing to close o, // which is unfortunate if o == clog or cout. while (1) { errno = 0; int c = f.get(); if (f.eof ()) return 0; // normal exit if (! f.good()) break; o.put(c); if (! o.good()) break; } // NB: not necessary to f.close (); error: if (errno) clog << strerror (errno) << endl; else clog << _("unknown error") << endl; return 1; // Failure } void compile_server_client::show_server_compatibility () const { // Locale sensitivity was added in version 1.6 if (server_version < "1.6") { clog << _F("Server protocol version is %s\n", server_version.v); clog << _("The server does not use localization information passed by the client\n"); } } // Issue a status message for when a server's trust is already in place. static void trust_already_in_place ( const compile_server_info &server, const vector &server_list, const string cert_db_path, bool revoking ) { // What level of trust? string purpose; if (cert_db_path == signing_cert_db_path ()) purpose = _("as a module signer for all users"); else { purpose = _("as an SSL peer"); if (cert_db_path == global_ssl_cert_db_path ()) purpose += _(" for all users"); else purpose += _(" for the current user"); } // Issue a message for each server in the list with the same certificate. unsigned limit = server_list.size (); for (unsigned i = 0; i < limit; ++i) { if (server.certinfo != server_list[i].certinfo) continue; clog << server_list[i] << _(" is already "); if (revoking) clog << _("untrusted ") << purpose << endl; else clog << _("trusted ") << purpose << endl; } } // Add the given servers to the given database of trusted servers. static void add_server_trust ( systemtap_session &s, const string &cert_db_path, vector &server_list ) { // Get a list of servers already trusted. This opens the database, so do it // before we open it for our own purposes. vector already_trusted; get_server_info_from_db (s, already_trusted, cert_db_path); // Make sure the given path exists. if (create_dir (cert_db_path.c_str (), 0755) != 0) { clog << _F("Unable to find or create the client certificate database directory %s: ", cert_db_path.c_str()); perror (""); return; } // Must predeclare this because of jumps to cleanup: below. vector processed_certs; // Make sure NSPR is initialized. Must be done before NSS is initialized s.NSPR_init (); // Initialize the NSS libraries -- read/write SECStatus secStatus = nssInit (cert_db_path.c_str (), 1/*readwrite*/); if (secStatus != SECSuccess) { // Message already issued. goto cleanup; } // Enable all cipher suites. // SSL_ClearSessionCache is required for the new settings to take effect. /* Some NSS versions don't do this correctly in NSS_SetDomesticPolicy. */ do { const PRUint16 *cipher; for (cipher = SSL_GetImplementedCiphers(); *cipher != 0; ++cipher) SSL_CipherPolicySet(*cipher, SSL_ALLOWED); } while (0); SSL_ClearSessionCache (); // Iterate over the servers to become trusted. Contact each one and // add it to the list of trusted servers if it is not already trusted. // client_connect will issue any error messages. for (vector::iterator server = server_list.begin(); server != server_list.end (); ++server) { // Trust is based on certificates. We need only add trust in the // same certificate once. // // RHBZ 1075685: If the new server to be trusted is selected by address + port, // and there is no avahi assistance available, or the server is not known // to avahi, then its certificate serial number field will be empty. We // therefore have no basis for comparing it to the serial numbers on already-trusted // certificates. In this case, unconditionally contact the new server to obtain // its certificate. if (! server->certinfo.empty ()) { // We need not contact the server if it has already been processed. if (find (processed_certs.begin (), processed_certs.end (), server->certinfo) != processed_certs.end ()) continue; processed_certs.push_back (server->certinfo); // We need not contact the server if it is already trusted. if (find (already_trusted.begin (), already_trusted.end (), *server) != already_trusted.end ()) { if (s.verbose >= 2) trust_already_in_place (*server, server_list, cert_db_path, false/*revoking*/); continue; } } // At a minimum we need an ip_address along with a port // number in order to contact the server. if (! server->hasAddress() || server->port == 0) continue; // Set the port within the address. server->setAddressPort (server->port); int rc = client_connect (*server, NULL, NULL, "permanent"); if (rc != SUCCESS) { clog << _F("Unable to connect to %s", lex_cast(*server).c_str()) << endl; nssError (); // Additional information: if the address is IPv6 and is link-local, then it must // have a scope_id. if (isIPv6LinkLocal (server->address) && server->address.ipv6.scope_id == 0) { clog << _(" The address is an IPv6 link-local address with no scope specifier.") << endl; } } } cleanup: // Shutdown NSS. // SSL_ClearSessionCache is required before shutdown for client applications. SSL_ClearSessionCache (); nssCleanup (cert_db_path.c_str ()); // Make sure the database files are readable. glob_t globbuf; string filespec = cert_db_path + "/*.db"; if (s.verbose >= 3) clog << _F("Searching \"%s\"\n", filespec.c_str()); int r = glob (filespec.c_str (), 0, NULL, & globbuf); if (r != GLOB_NOSPACE && r != GLOB_ABORTED && r != GLOB_NOMATCH) { for (unsigned i = 0; i < globbuf.gl_pathc; ++i) { string filename = globbuf.gl_pathv[i]; if (s.verbose >= 3) clog << _(" found ") << filename << endl; if (chmod (filename.c_str (), 0644) != 0) { s.print_warning("Unable to change permissions on " + filename + ": "); perror (""); } } } } // Remove the given servers from the given database of trusted servers. static void revoke_server_trust ( systemtap_session &s, const string &cert_db_path, const vector &server_list ) { // Make sure the given path exists. if (! file_exists (cert_db_path)) { if (s.verbose >= 5) { clog << _F("Certificate database '%s' does not exist", cert_db_path.c_str()) << endl; for (vector::const_iterator server = server_list.begin(); server != server_list.end (); ++server) trust_already_in_place (*server, server_list, cert_db_path, true/*revoking*/); } return; } // Must predeclare these because of jumps to cleanup: below. CERTCertDBHandle *handle; PRArenaPool *tmpArena = NULL; CERTCertList *certs = NULL; CERTCertificate *db_cert; vector processed_certs; const char *nickname; // Make sure NSPR is initialized. Must be done before NSS is initialized s.NSPR_init (); // Initialize the NSS libraries -- read/write SECStatus secStatus = nssInit (cert_db_path.c_str (), 1/*readwrite*/); if (secStatus != SECSuccess) { // Message already issued goto cleanup; } handle = CERT_GetDefaultCertDB(); // A memory pool to work in tmpArena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (! tmpArena) { clog << _("Out of memory:"); nssError (); goto cleanup; } // Iterate over the servers to become untrusted. nickname = server_cert_nickname (); for (vector::const_iterator server = server_list.begin(); server != server_list.end (); ++server) { // If the server's certificate serial number is unknown, then we can't // match it with one in the database. if (server->certinfo.empty ()) continue; // Trust is based on certificates. We need only revoke trust in the same // certificate once. if (find (processed_certs.begin (), processed_certs.end (), server->certinfo) != processed_certs.end ()) continue; processed_certs.push_back (server->certinfo); // Search the client-side database of trusted servers. db_cert = PK11_FindCertFromNickname (nickname, NULL); if (! db_cert) { // No trusted servers. Not an error, but issue a status message. if (s.verbose >= 2) trust_already_in_place (*server, server_list, cert_db_path, true/*revoking*/); continue; } // Here, we have one cert with the desired nickname. // Now, we will attempt to get a list of ALL certs // with the same subject name as the cert we have. That list // should contain, at a minimum, the one cert we have already found. // If the list of certs is empty (NULL), the libraries have failed. certs = CERT_CreateSubjectCertList (NULL, handle, & db_cert->derSubject, PR_Now (), PR_FALSE); CERT_DestroyCertificate (db_cert); if (! certs) { clog << _F("Unable to query certificate database %s: ", cert_db_path.c_str()) << endl; PORT_SetError (SEC_ERROR_LIBRARY_FAILURE); nssError (); goto cleanup; } // Find the certificate matching the one belonging to our server. CERTCertListNode *node; for (node = CERT_LIST_HEAD (certs); ! CERT_LIST_END (node, certs); node = CERT_LIST_NEXT (node)) { // The certificate we're working with. db_cert = node->cert; // Get the serial number. string serialNumber = get_cert_serial_number (db_cert); // Does the serial number match that of the current server? if (serialNumber != server->certinfo) continue; // goto next certificate // All is ok! Remove the certificate from the database. break; } // Loop over certificates in the database // Was a certificate matching the server found? */ if (CERT_LIST_END (node, certs)) { // Not found. Server is already untrusted. if (s.verbose >= 2) trust_already_in_place (*server, server_list, cert_db_path, true/*revoking*/); } else { secStatus = SEC_DeletePermCertificate (db_cert); if (secStatus != SECSuccess) { clog << _F("Unable to remove certificate from %s: ", cert_db_path.c_str()) << endl; nssError (); } } CERT_DestroyCertList (certs); certs = NULL; } // Loop over servers cleanup: assert(!certs); if (tmpArena) PORT_FreeArena (tmpArena, PR_FALSE); nssCleanup (cert_db_path.c_str ()); } // Obtain information about servers from the certificates in the given database. static void get_server_info_from_db ( systemtap_session &s, vector &servers, const string &cert_db_path ) { // Make sure the given path exists. if (! file_exists (cert_db_path)) { if (s.verbose >= 5) clog << _F("Certificate database '%s' does not exist.", cert_db_path.c_str()) << endl; return; } // Make sure NSPR is initialized. Must be done before NSS is initialized s.NSPR_init (); // Initialize the NSS libraries -- readonly SECStatus secStatus = nssInit (cert_db_path.c_str ()); if (secStatus != SECSuccess) { // Message already issued. return; } // Must predeclare this because of jumps to cleanup: below. PRArenaPool *tmpArena = NULL; CERTCertList *certs = get_cert_list_from_db (server_cert_nickname ()); if (! certs) { if (s.verbose >= 5) clog << _F("No certificate found in database %s", cert_db_path.c_str ()) << endl; goto cleanup; } // A memory pool to work in tmpArena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (! tmpArena) { clog << _("Out of memory:"); nssError (); goto cleanup; } for (CERTCertListNode *node = CERT_LIST_HEAD (certs); ! CERT_LIST_END (node, certs); node = CERT_LIST_NEXT (node)) { compile_server_info server_info; // The certificate we're working with. CERTCertificate *db_cert = node->cert; // Get the host name. It is in the alt-name extension of the // certificate. SECItem subAltName; subAltName.data = NULL; secStatus = CERT_FindCertExtension (db_cert, SEC_OID_X509_SUBJECT_ALT_NAME, & subAltName); if (secStatus != SECSuccess || ! subAltName.data) { clog << _("Unable to find alt name extension on server certificate: ") << endl; nssError (); continue; } // Decode the extension. CERTGeneralName *nameList = CERT_DecodeAltNameExtension (tmpArena, & subAltName); SECITEM_FreeItem(& subAltName, PR_FALSE); if (! nameList) { clog << _("Unable to decode alt name extension on server certificate: ") << endl; nssError (); continue; } // We're interested in the first alternate name. assert (nameList->type == certDNSName); server_info.host_name = string ((const char *)nameList->name.other.data, nameList->name.other.len); // Don't free nameList. It's part of the tmpArena. // Get the serial number. server_info.certinfo = get_cert_serial_number (db_cert); // Our results will at a minimum contain this server. add_server_info (server_info, servers); // Augment the list by querying all online servers and keeping the ones // with the same cert serial number. vector online_servers; get_or_keep_online_server_info (s, online_servers, false/*keep*/); keep_server_info_with_cert_and_port (s, server_info, online_servers); add_server_info (online_servers, servers); } cleanup: if (certs) CERT_DestroyCertList (certs); if (tmpArena) PORT_FreeArena (tmpArena, PR_FALSE); nssCleanup (cert_db_path.c_str ()); } // Utility Functions. //----------------------------------------------------------------------- ostream &operator<< (ostream &s, const compile_server_info &i) { // Don't print empty information if (i.empty ()) return s; s << " host="; if (! i.host_name.empty ()) s << i.host_name; else s << "unknown"; s << " address="; if (i.hasAddress()) { PRStatus prStatus; switch (i.address.raw.family) { case PR_AF_INET: case PR_AF_INET6: { #define MAX_NETADDR_SIZE 46 // from the NSPR API reference. char buf[MAX_NETADDR_SIZE]; prStatus = PR_NetAddrToString(& i.address, buf, sizeof (buf)); if (prStatus == PR_SUCCESS) { s << buf; break; } } // Fall through default: s << "offline"; break; } } else s << "offline"; s << " port="; if (i.port != 0) s << i.port; else s << "unknown"; s << " sysinfo=\""; if (! i.sysinfo.empty ()) s << i.sysinfo << '"'; else s << "unknown\""; s << " version="; if (! i.version.empty ()) s << i.version; else s << "unknown"; s << " certinfo=\""; if (! i.certinfo.empty ()) s << i.certinfo << '"'; else s << "unknown\""; if (! i.mok_fingerprints.empty ()) { // FIXME: Yikes, this output is ugly. Perhaps the server output // needs a more structured approach. s << " mok_fingerprints=\""; vector::const_iterator it; for (it = i.mok_fingerprints.begin (); it != i.mok_fingerprints.end (); it++) { if (it != i.mok_fingerprints.begin ()) s << ", "; s << *it; } s << "\""; } return s; } ostream &operator<< (ostream &s, const vector &v) { // Indicate an empty list. if (v.size () == 0 || (v.size () == 1 && v[0].empty())) s << "No Servers" << endl; else { for (unsigned i = 0; i < v.size(); ++i) { // Don't print empty items. if (! v[i].empty()) s << v[i] << endl; } } return s; } PRNetAddr & copyNetAddr (PRNetAddr &x, const PRNetAddr &y) { PRUint32 saveScope = 0; // For IPv6 addresses, don't overwrite the scope_id of x unless x is uninitialized or it is 0. if (x.raw.family == PR_AF_INET6) saveScope = x.ipv6.scope_id; x = y; if (saveScope != 0) x.ipv6.scope_id = saveScope; return x; } bool operator== (const PRNetAddr &x, const PRNetAddr &y) { // Same address family? if (x.raw.family != y.raw.family) return false; switch (x.raw.family) { case PR_AF_INET6: // If both scope ids are set, compare them. if (x.ipv6.scope_id != 0 && y.ipv6.scope_id != 0 && x.ipv6.scope_id != y.ipv6.scope_id) return false; // not equal // Scope is not a factor. Compare the address bits return memcmp (& x.ipv6.ip, & y.ipv6.ip, sizeof(x.ipv6.ip)) == 0; case PR_AF_INET: return x.inet.ip == y.inet.ip; default: break; } return false; } bool operator!= (const PRNetAddr &x, const PRNetAddr &y) { return !(x == y); } static PRIPv6Addr & copyAddress (PRIPv6Addr &PRin6, const in6_addr &in6) { // The NSPR type is a typedef of struct in6_addr, but C++ won't let us copy it assert (sizeof (PRin6) == sizeof (in6)); memcpy (& PRin6, & in6, sizeof (PRin6)); return PRin6; } // Return the default server specification, used when none is given on the // command line. static string default_server_spec (const systemtap_session &s) { // If --privilege=X has been used, where X is not stapdev, // the default is online,trusted,compatible,signer // otherwise // the default is online,trusted,compatible // // Having said that, // 'online' and 'compatible' will only succeed if we have avahi // 'trusted' and 'signer' will only succeed if we have NSS // string working_string = "online,trusted,compatible"; if (! pr_contains (s.privilege, pr_stapdev)) working_string += ",signer"; return working_string; } static int server_spec_to_pmask (const string &server_spec) { // Construct a mask of the server properties that have been requested. // The available properties are: // trusted - servers which are trusted SSL peers. // online - online servers. // compatible - servers which compile for the current kernel release // and architecture. // signer - servers which are trusted module signers. // specified - servers which have been specified using --use-server=XXX. // If no servers have been specified, then this is // equivalent to --list-servers=trusted,online,compatible. // all - all trusted servers, trusted module signers, // servers currently online and specified servers. string working_spec = server_spec; vector properties; tokenize (working_spec, properties, ","); int pmask = 0; unsigned limit = properties.size (); for (unsigned i = 0; i < limit; ++i) { const string &property = properties[i]; // Tolerate (and ignore) empty properties. if (property.empty ()) continue; if (property == "all") { pmask |= compile_server_all; } else if (property == "specified") { pmask |= compile_server_specified; } else if (property == "trusted") { pmask |= compile_server_trusted; } else if (property == "online") { pmask |= compile_server_online; } else if (property == "compatible") { pmask |= compile_server_compatible; } else if (property == "signer") { pmask |= compile_server_signer; } else { // XXX PR13274 needs-session to use print_warning() clog << _F("WARNING: unsupported compile server property: %s", property.c_str()) << endl; } } return pmask; } void query_server_status (systemtap_session &s) { unsigned limit = s.server_status_strings.size (); for (unsigned i = 0; i < limit; ++i) query_server_status (s, s.server_status_strings[i]); } static void query_server_status (systemtap_session &s, const string &status_string) { // If this string is empty, then the default is "specified" string working_string = status_string; if (working_string.empty ()) working_string = "specified"; // If the query is "specified" and no servers have been specified // (i.e. --use-server not used or used with no argument), then // use the default query. // TODO: This may not be necessary. The underlying queries should handle // "specified" properly. if (working_string == "specified" && (s.specified_servers.empty () || (s.specified_servers.size () == 1 && s.specified_servers[0].empty ()))) working_string = default_server_spec (s); int pmask = server_spec_to_pmask (working_string); // Now obtain a list of the servers which match the criteria. vector raw_servers; get_server_info (s, pmask, raw_servers); // Augment the listing with as much information as possible by adding // information from known servers. vector servers; get_all_server_info (s, servers); keep_common_server_info (raw_servers, servers); // Sort the list of servers into a preferred order. preferred_order (servers); // Print the server information. Skip the empty entry at the head of the list. clog << _F("Systemtap Compile Server Status for '%s'", working_string.c_str()) << endl; bool found = false; unsigned limit = servers.size (); for (unsigned i = 0; i < limit; ++i) { assert (! servers[i].empty ()); // Don't list servers with no cert information. They may not actually // exist. // TODO: Could try contacting the server and obtaining its cert if (servers[i].certinfo.empty ()) continue; clog << servers[i] << endl; found = true; } if (! found) clog << _("No servers found") << endl; } // Add or remove trust of the servers specified on the command line. void manage_server_trust (systemtap_session &s) { // This function should do nothing if we don't have NSS. // Nothing to do if --trust-servers was not specified. if (s.server_trust_spec.empty ()) return; // Break up and analyze the trust specification. Recognized components are: // ssl - trust the specified servers as ssl peers // signer - trust the specified servers as module signers // revoke - revoke the requested trust // all-users - apply/revoke the requested trust for all users // no-prompt - don't prompt the user for confirmation vectorcomponents; tokenize (s.server_trust_spec, components, ","); bool ssl = false; bool signer = false; bool revoke = false; bool all_users = false; bool no_prompt = false; bool error = false; for (vector::const_iterator i = components.begin (); i != components.end (); ++i) { if (*i == "ssl") ssl = true; else if (*i == "signer") { if (geteuid () != 0) { clog << _("Only root can specify 'signer' on --trust-servers") << endl; error = true; } else signer = true; } else if (*i == "revoke") revoke = true; else if (*i == "all-users") { if (geteuid () != 0) { clog << _("Only root can specify 'all-users' on --trust-servers") << endl; error = true; } else all_users = true; } else if (*i == "no-prompt") no_prompt = true; else s.print_warning("Unrecognized server trust specification: " + *i); } if (error) return; // Make sure NSPR is initialized s.NSPR_init (); // Now obtain the list of specified servers. vector server_list; get_specified_server_info (s, server_list, true/*no_default*/); // Did we identify any potential servers? unsigned limit = server_list.size (); if (limit == 0) { clog << _("No servers identified for trust") << endl; return; } // Create a string representing the request in English. // If neither 'ssl' or 'signer' was specified, the default is 'ssl'. if (! ssl && ! signer) ssl = true; ostringstream trustString; if (ssl) { trustString << _("as an SSL peer"); if (all_users) trustString << _(" for all users"); else trustString << _(" for the current user"); } if (signer) { if (ssl) trustString << _(" and "); trustString << _("as a module signer for all users"); } // Prompt the user to confirm what's about to happen. if (no_prompt) { if (revoke) clog << _("Revoking trust "); else clog << _("Adding trust "); } else { if (revoke) clog << _("Revoke trust "); else clog << _("Add trust "); } clog << _F("in the following servers %s", trustString.str().c_str()); if (! no_prompt) clog << '?'; clog << endl; for (unsigned i = 0; i < limit; ++i) clog << " " << server_list[i] << endl; if (! no_prompt) { clog << "[y/N] " << flush; // Only carry out the operation if the response is "yes" string response; cin >> response; if (response[0] != 'y' && response [0] != 'Y') { clog << _("Server trust unchanged") << endl; return; } } // Now add/revoke the requested trust. string cert_db_path; if (ssl) { if (all_users) cert_db_path = global_ssl_cert_db_path (); else cert_db_path = private_ssl_cert_db_path (); if (revoke) revoke_server_trust (s, cert_db_path, server_list); else add_server_trust (s, cert_db_path, server_list); } if (signer) { cert_db_path = signing_cert_db_path (); if (revoke) revoke_server_trust (s, cert_db_path, server_list); else add_server_trust (s, cert_db_path, server_list); } } static compile_server_cache* cscache(systemtap_session& s) { if (!s.server_cache) s.server_cache = new compile_server_cache(); return s.server_cache; } static void get_server_info ( systemtap_session &s, int pmask, vector &servers ) { // Get information on compile servers matching the requested criteria. // The order of queries is significant. Accumulating queries must go first // followed by accumulating/filtering queries. bool keep = false; if (((pmask & compile_server_all))) { get_all_server_info (s, servers); keep = true; } // Add the specified servers, if requested if ((pmask & compile_server_specified)) { get_specified_server_info (s, servers); keep = true; } // Now filter or accumulate the list depending on whether a query has // already been made. if ((pmask & compile_server_online)) { get_or_keep_online_server_info (s, servers, keep); keep = true; } if ((pmask & compile_server_trusted)) { get_or_keep_trusted_server_info (s, servers, keep); keep = true; } if ((pmask & compile_server_signer)) { get_or_keep_signing_server_info (s, servers, keep); keep = true; } if ((pmask & compile_server_compatible)) { get_or_keep_compatible_server_info (s, servers, keep); keep = true; } } // Get information about all online servers as well as servers trusted // as SSL peers and servers trusted as signers. static void get_all_server_info ( systemtap_session &s, vector &servers ) { // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& all_servers = cscache(s)->all_servers; if (all_servers.empty ()) { get_or_keep_online_server_info (s, all_servers, false/*keep*/); get_or_keep_trusted_server_info (s, all_servers, false/*keep*/); get_or_keep_signing_server_info (s, all_servers, false/*keep*/); if (s.verbose >= 4) { clog << _("All known servers:") << endl; clog << all_servers; } } // Add the information, but not duplicates. add_server_info (all_servers, servers); } static void get_default_server_info ( systemtap_session &s, vector &servers ) { if (s.verbose >= 3) clog << _("Using the default servers") << endl; // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& default_servers = cscache(s)->default_servers; if (default_servers.empty ()) { // Get the required information. // get_server_info will add an empty entry at the beginning to indicate // that the search has been performed, in case the search comes up empty. int pmask = server_spec_to_pmask (default_server_spec (s)); get_server_info (s, pmask, default_servers); if (s.verbose >= 3) { clog << _("Default servers are:") << endl; clog << default_servers; } } // Add the information, but not duplicates. add_server_info (default_servers, servers); } static bool isPort (const char *pstr, compile_server_info &server_info) { errno = 0; char *estr; unsigned long p = strtoul (pstr, & estr, 10); if (errno != 0 || *estr != '\0' || p > USHRT_MAX) { clog << _F("Invalid port number specified: %s", pstr) << endl; return false; } server_info.port = p; server_info.fully_specified = true; return true; } static bool isIPv6 (const string &server, compile_server_info &server_info) { // An IPv6 address is 8 hex components separated by colons. // One contiguous block of zero segments in the address may be elided using ::. // An interface may be specified by appending %IF_NAME to the address (e.g. %eth0). // A port may be specified by enclosing the ip address in [] and adding :. // Allow a bracketed address without a port. assert (! server.empty()); string ip; string::size_type portIx; if (server[0] == '[') { string::size_type endBracket = server.find (']'); if (endBracket == string::npos) return false; // Not a valid IPv6 address // Extract the address. ip = server.substr (1, endBracket - 1); portIx = endBracket + 1; } else { ip = server; portIx = string::npos; } // Find out how many components there are. The maximum is 8 unsigned empty = 0; vector components; tokenize_full (ip, components, ":"); if (components.size() > 8) return false; // Not a valid IPv6 address // The components must be either hex values between 0 and 0xffff, or must be empty. // There can be only one empty component. string interface; for (unsigned i = 0; i < components.size(); ++i) { if (components[i].empty()) { if (++empty > 1) return false; // Not a valid IPv6 address } // If it's the final component, see if it specifies the interface. If so, strip it from the // component in order to simplify parsing. It still remains as part of the original ip address // string. if (i == components.size() - 1) { size_t ix = components[i].find ('%'); if (ix != string::npos) { interface = components[i].substr(ix); components[i] = components[i].substr(0, ix); } } // Skip leading zeroes. unsigned j; for (j = 0; j < components[i].size(); ++j) { if (components[i][j] != '0') break; } // Max of 4 hex digits if (components[i].size() - j > 4) return false; // Not a valid IPv6 address for (/**/; j < components[i].size(); ++j) { if (! isxdigit (components[i][j])) return false; // Not a valid IPv6 address } } // If there is no empty component, then there must be exactly 8 components. if (! empty && components.size() != 8) return false; // Not a valid IPv6 address // Try to convert the string to an address. PRStatus prStatus = PR_StringToNetAddr (ip.c_str(), & server_info.address); if (prStatus != PR_SUCCESS) return false; // Examine the optional port if (portIx != string::npos) { string port = server.substr (portIx); if (port.size() != 0) { if (port.size() < 2 || port[0] != ':') return false; // Not a valid Port port = port.substr (1); if (! isPort (port.c_str(), server_info)) return false; // not a valid port } } else server_info.port = 0; return true; // valid IPv6 address. } static bool isIPv4 (const string &server, compile_server_info &server_info) { // An IPv4 address is 4 decimal components separated by periods with an // additional optional decimal port separated from the address by a colon. assert (! server.empty()); // Find out how many components there are. The maximum is 8 vector components; tokenize (server, components, ":"); if (components.size() > 2) return false; // Not a valid IPv4 address // Separate the address from the port (if any). string addr; string port; if (components.size() <= 1) addr = server; else { addr = components[0]; port = components[1]; } // Separate the address components. // There must be exactly 4 components. components.clear (); tokenize (addr, components, "."); if (components.size() != 4) return false; // Not a valid IPv4 address // The components must be decimal values between 0 and 255. for (unsigned i = 0; i < components.size(); ++i) { if (components[i].empty()) return false; // Not a valid IPv4 address errno = 0; char *estr; long p = strtol (components[i].c_str(), & estr, 10); if (errno != 0 || *estr != '\0' || p < 0 || p > 255) return false; // Not a valid IPv4 address } // Try to convert the string to an address. PRStatus prStatus = PR_StringToNetAddr (addr.c_str(), & server_info.address); if (prStatus != PR_SUCCESS) return false; // Examine the optional port if (! port.empty ()) { if (! isPort (port.c_str(), server_info)) return false; // not a valid port } else server_info.port = 0; return true; // valid IPv4 address. } static bool isCertSerialNumber (const string &server, compile_server_info &server_info) { // This function assumes that we have already ruled out the server spec being an IPv6 address. // Certificate serial numbers are 5 fields separated by colons plus an optional 6th decimal // field specifying a port. assert (! server.empty()); string host = server; vector components; tokenize (host, components, ":"); switch (components.size ()) { case 6: if (! isPort (components.back().c_str(), server_info)) return false; // not a valid port host = host.substr (0, host.find_last_of (':')); // fall through case 5: server_info.certinfo = host; break; default: return false; // not a cert serial number } return true; // valid cert serial number and optional port } static bool isDomain (const string &server, compile_server_info &server_info) { // Accept one or two components separated by a colon. The first will be the domain name and // the second must a port number. assert (! server.empty()); string host = server; vector components; tokenize (host, components, ":"); switch (components.size ()) { case 2: if (! isPort (components.back().c_str(), server_info)) return false; // not a valid port host = host.substr (0, host.find_last_of (':')); // fall through case 1: server_info.host_name = host; break; default: return false; // not a valid domain name } return true; } static void get_specified_server_info ( systemtap_session &s, vector &servers, bool no_default ) { // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& specified_servers = cscache(s)->specified_servers; if (specified_servers.empty ()) { // Maintain an empty entry to indicate that this search has been // performed, in case the search comes up empty. specified_servers.push_back (compile_server_info ()); // If --use-server was not specified at all, then return info for the // default server list. if (s.specified_servers.empty ()) { if (s.verbose >= 3) clog << _("No servers specified") << endl; if (! no_default) get_default_server_info (s, specified_servers); } else { // Iterate over the specified servers. For each specification, add to // the list of servers. unsigned num_specified_servers = s.specified_servers.size (); for (unsigned i = 0; i < num_specified_servers; ++i) { string &server = s.specified_servers[i]; // If no specific server(s) specified, then use the default servers. if (server.empty ()) { if (s.verbose >= 3) clog << _("No servers specified") << endl; if (! no_default) get_default_server_info (s, specified_servers); continue; } // Determine what has been specified. Servers may be specified by: // - domain{:port} // - certificate-serial-number{:port} // - IPv4-address{:port} // - IPv6-address{:port} // where items within {} are optional. // Check for IPv6 addresses first. It reduces the amount of checking necessary for // certificate serial numbers. compile_server_info server_info; vector resolved_servers; if (isIPv6 (server, server_info) || isIPv4 (server, server_info) || isCertSerialNumber (server, server_info)) { // An address or cert serial number has been specified. // No resolution is needed. resolved_servers.push_back (server_info); } else if (isDomain (server, server_info)) { // Try to resolve the given name. resolve_host (s, server_info, resolved_servers); } else { clog << _F("Invalid server specification for --use-server: %s", server.c_str()) << endl; continue; } // Now examine the server(s) identified and add them to the list of specified // servers. vector known_servers; vector new_servers; for (vector::iterator i = resolved_servers.begin(); i != resolved_servers.end(); ++i) { // If this item was fully specified, then just add it. if (i->fully_specified) add_server_info (*i, new_servers); else { // It was not fully specified, so we need additional info. Try // to get it by matching what we have against other known servers. if (known_servers.empty ()) get_all_server_info (s, known_servers); // See if this server spec matches that of a known server vector matched_servers = known_servers; keep_common_server_info (*i, matched_servers); // If this server spec matches one or more known servers, then add the // augmented info to the specified_servers. Otherwise, if this server // spec is complete, then add it directly. Otherwise this server spec // is incomplete. if (! matched_servers.empty()) add_server_info (matched_servers, new_servers); else if (i->isComplete ()) add_server_info (*i, new_servers); else if (s.verbose >= 3) clog << _("Incomplete server spec: ") << *i << endl; } } if (s.verbose >= 3) { clog << _F("Servers matching %s: ", server.c_str()) << endl; clog << new_servers; } // Add the newly identified servers to the list. if (! new_servers.empty()) add_server_info (new_servers, specified_servers); } // Loop over --use-server options } // -- use-server specified if (s.verbose >= 2) { clog << _("All specified servers:") << endl; clog << specified_servers; } } // Server information is not cached // Add the information, but not duplicates. add_server_info (specified_servers, servers); } static void get_or_keep_trusted_server_info ( systemtap_session &s, vector &servers, bool keep ) { // If we're filtering the list and it's already empty, then // there's nothing to do. if (keep && servers.empty ()) return; // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& trusted_servers = cscache(s)->trusted_servers; if (trusted_servers.empty ()) { // Maintain an empty entry to indicate that this search has been // performed, in case the search comes up empty. trusted_servers.push_back (compile_server_info ()); // Check the private database first. string cert_db_path = private_ssl_cert_db_path (); get_server_info_from_db (s, trusted_servers, cert_db_path); // Now check the global database. cert_db_path = global_ssl_cert_db_path (); get_server_info_from_db (s, trusted_servers, cert_db_path); if (s.verbose >= 5) { clog << _("All servers trusted as ssl peers:") << endl; clog << trusted_servers; } } // Server information is not cached if (keep) { // Filter the existing vector by keeping the information in common with // the trusted_server vector. keep_common_server_info (trusted_servers, servers); } else { // Add the information, but not duplicates. add_server_info (trusted_servers, servers); } } static void get_or_keep_signing_server_info ( systemtap_session &s, vector &servers, bool keep ) { // If we're filtering the list and it's already empty, then // there's nothing to do. if (keep && servers.empty ()) return; // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& signing_servers = cscache(s)->signing_servers; if (signing_servers.empty ()) { // Maintain an empty entry to indicate that this search has been // performed, in case the search comes up empty. signing_servers.push_back (compile_server_info ()); // For all users, check the global database. string cert_db_path = signing_cert_db_path (); get_server_info_from_db (s, signing_servers, cert_db_path); if (s.verbose >= 5) { clog << _("All servers trusted as module signers:") << endl; clog << signing_servers; } } // Server information is not cached if (keep) { // Filter the existing vector by keeping the information in common with // the signing_server vector. keep_common_server_info (signing_servers, servers); } else { // Add the information, but not duplicates. add_server_info (signing_servers, servers); } } static void get_or_keep_compatible_server_info ( systemtap_session &s, vector &servers, bool keep ) { #if HAVE_AVAHI // If we're filtering the list and it's already empty, then // there's nothing to do. if (keep && servers.empty ()) return; // Remove entries for servers incompatible with the host environment // from the given list of servers. // A compatible server compiles for the kernel release and architecture // of the host environment. // // Compatibility can only be determined for online servers. So, augment // and filter the information we have with information for online servers. vector online_servers; get_or_keep_online_server_info (s, online_servers, false/*keep*/); if (keep) keep_common_server_info (online_servers, servers); else add_server_info (online_servers, servers); // Now look to see which ones are compatible. // The vector can change size as we go, so be careful!! for (unsigned i = 0; i < servers.size (); /**/) { // Retain empty entries. assert (! servers[i].empty ()); // Check the target of the server. if (servers[i].sysinfo != s.kernel_release + " " + s.architecture) { // Target platform mismatch. servers.erase (servers.begin () + i); continue; } // If the client requires secure boot signing, make sure the // server has the right MOK. if (! s.mok_fingerprints.empty ()) { // This server has no MOKs. if (servers[i].mok_fingerprints.empty ()) { servers.erase (servers.begin () + i); continue; } // Make sure the server has at least one MOK in common with // the client. vector::const_iterator it; bool mok_found = false; for (it = s.mok_fingerprints.begin(); it != s.mok_fingerprints.end(); it++) { if (find(servers[i].mok_fingerprints.begin(), servers[i].mok_fingerprints.end(), *it) != servers[i].mok_fingerprints.end ()) { mok_found = true; break; } } // This server has no MOK in common with the client. if (! mok_found) { servers.erase (servers.begin () + i); continue; } } // The server is compatible. Leave it in the list. ++i; } #else // ! HAVE_AVAHI // Without Avahi, we can't obtain the target platform of the server. // Issue a warning. if (s.verbose >= 2) clog << _("Unable to detect server compatibility without avahi") << endl; if (keep) servers.clear (); #endif } static void keep_server_info_with_cert_and_port ( systemtap_session &, const compile_server_info &server, vector &servers ) { assert (! server.certinfo.empty ()); // Search the list of servers for ones matching the // serial number specified. // The vector can change size as we go, so be careful!! for (unsigned i = 0; i < servers.size (); /**/) { // Retain empty entries. if (servers[i].empty ()) { ++i; continue; } if (servers[i].certinfo == server.certinfo && (servers[i].port == 0 || server.port == 0 || servers[i].port == server.port)) { // If the server is not online, then use the specified // port, if any. if (servers[i].port == 0) { servers[i].port = server.port; servers[i].fully_specified = server.fully_specified; } ++i; continue; } // The item does not match. Delete it. servers.erase (servers.begin () + i); } } // Obtain missing host name or ip address, if any. Return 0 on success. static void resolve_host ( systemtap_session& s, compile_server_info &server, vector &resolved_servers ) { vector& cached_hosts = cscache(s)->resolved_hosts[server.host_name]; if (cached_hosts.empty ()) { // The server's host_name member is a string containing either a host name or an ip address. // Either is acceptable for lookup. const char *lookup_name = server.host_name.c_str(); if (s.verbose >= 6) clog << _F("Looking up %s", lookup_name) << endl; struct addrinfo hints; memset(& hints, 0, sizeof (hints)); hints.ai_family = AF_UNSPEC; // AF_INET or AF_INET6 to force version struct addrinfo *addr_info = 0; int rc = getaddrinfo (lookup_name, NULL, & hints, & addr_info); // Failure to resolve will result in an appropriate message later, if other methods fail. if (rc != 0) { if (s.verbose >= 6) clog << _F("%s not found: %s", lookup_name, gai_strerror (rc)) << endl; } else { // Loop over the results collecting information. assert (addr_info); for (const struct addrinfo *ai = addr_info; ai != NULL; ai = ai->ai_next) { PRNetAddr new_address; // We support IPv4 and IPv6, Ignore other protocols, if (ai->ai_family == AF_INET) { // IPv4 Address struct sockaddr_in *ip = (struct sockaddr_in *)ai->ai_addr; new_address.inet.family = PR_AF_INET; new_address.inet.ip = ip->sin_addr.s_addr; } else if (ai->ai_family == AF_INET6) { // IPv6 Address struct sockaddr_in6 *ip = (struct sockaddr_in6 *)ai->ai_addr; new_address.ipv6.family = PR_AF_INET6; new_address.ipv6.scope_id = ip->sin6_scope_id; copyAddress (new_address.ipv6.ip, ip->sin6_addr); } else continue; // Try to obtain a host name. Otherwise, leave it empty. char hbuf[NI_MAXHOST]; int status = getnameinfo (ai->ai_addr, ai->ai_addrlen, hbuf, sizeof (hbuf), NULL, 0, NI_NAMEREQD | NI_IDN); if (status != 0) hbuf[0] = '\0'; cached_hosts.push_back(resolved_host(hbuf, new_address)); } } if (addr_info) freeaddrinfo (addr_info); // free the linked list } // If no addresses were resolved, then return the info we were given. if (cached_hosts.empty()) add_server_info (server, resolved_servers); else { // We will add a new server for each address resolved vector new_servers; for (vector::const_iterator it = cached_hosts.begin(); it != cached_hosts.end(); ++it) { // Start with the info we were given compile_server_info new_server = server; // NB: do not overwrite port info if (it->address.raw.family == AF_INET) { new_server.address.inet.family = PR_AF_INET; new_server.address.inet.ip = it->address.inet.ip; } else // AF_INET6 { new_server.address.ipv6.family = PR_AF_INET6; new_server.address.ipv6.scope_id = it->address.ipv6.scope_id; new_server.address.ipv6.ip = it->address.ipv6.ip; } if (!it->host_name.empty()) new_server.host_name = it->host_name; add_server_info (new_server, new_servers); } if (s.verbose >= 6) { clog << _F("%s resolves to:", server.host_name.c_str()) << endl; clog << new_servers; } add_server_info (new_servers, resolved_servers); } } #if HAVE_AVAHI // Avahi API Callbacks. //----------------------------------------------------------------------- struct browsing_context { AvahiSimplePoll *simple_poll; AvahiClient *client; vector *servers; }; // Get the value of the requested key from the Avahi string list. static string get_value_from_avahi_string_list (AvahiStringList *strlst, const string &key) { AvahiStringList *p = avahi_string_list_find (strlst, key.c_str ()); if (p == NULL) { // Key not found. return ""; } char *k, *v; int rc = avahi_string_list_get_pair(p, &k, &v, NULL); if (rc < 0 || v == NULL) { avahi_free (k); return ""; } string value = v; avahi_free (k); avahi_free (v); return value; } // Get a vector of values of the requested key from the Avahi string // list. This is for multiple values having the same key. static void get_values_from_avahi_string_list (AvahiStringList *strlst, const string &key, vector &value_vector) { AvahiStringList *p; value_vector.clear(); p = avahi_string_list_find (strlst, key.c_str ()); for (; p != NULL; p = avahi_string_list_get_next(p)) { char *k, *v; int rc = avahi_string_list_get_pair(p, &k, &v, NULL); if (rc < 0 || v == NULL) { avahi_free (k); break; } value_vector.push_back(v); avahi_free (k); avahi_free (v); } return; } extern "C" void resolve_callback( AvahiServiceResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, const char *name, const char *type, const char *domain, const char *host_name, const AvahiAddress *address, uint16_t port, AvahiStringList *txt, AvahiLookupResultFlags /*flags*/, AVAHI_GCC_UNUSED void* userdata) { PRStatus prStatus; assert(r); const browsing_context *context = (browsing_context *)userdata; vector *servers = context->servers; // Called whenever a service has been resolved successfully or timed out. switch (event) { case AVAHI_RESOLVER_FAILURE: clog << _F("Failed to resolve service '%s' of type '%s' in domain '%s': %s", name, type, domain, avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r)))) << endl; break; case AVAHI_RESOLVER_FOUND: { compile_server_info info; // Decode the address. char a[AVAHI_ADDRESS_STR_MAX]; avahi_address_snprint(a, sizeof(a), address); prStatus = PR_StringToNetAddr (a, & info.address); if (prStatus != PR_SUCCESS) { clog << _F("Invalid address '%s' from avahi", a) << endl; break; } // We support both IPv4 and IPv6. Ignore other protocols. if (protocol == AVAHI_PROTO_INET6) { info.address.ipv6.family = PR_AF_INET6; info.address.ipv6.scope_id = interface; info.port = port; } else if (protocol == AVAHI_PROTO_INET) { info.address.inet.family = PR_AF_INET; info.port = port; } else break; // Save the host name. info.host_name = host_name; // Save the text tags. info.sysinfo = get_value_from_avahi_string_list (txt, "sysinfo"); info.certinfo = get_value_from_avahi_string_list (txt, "certinfo"); info.version = get_value_from_avahi_string_list (txt, "version"); if (info.version.empty ()) info.version = "1.0"; // default version is 1.0 // The server might provide one or more MOK certificate's // info. get_values_from_avahi_string_list(txt, "mok_info", info.mok_fingerprints); // Add this server to the list of discovered servers. add_server_info (info, *servers); break; } default: break; } avahi_service_resolver_free(r); } extern "C" void browse_callback( AvahiServiceBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AVAHI_GCC_UNUSED AvahiLookupResultFlags flags, void* userdata) { browsing_context *context = (browsing_context *)userdata; AvahiClient *c = context->client; AvahiSimplePoll *simple_poll = context->simple_poll; assert(b); // Called whenever a new services becomes available on the LAN or is removed from the LAN. switch (event) { case AVAHI_BROWSER_FAILURE: clog << _F("Avahi browse failed: %s", avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b)))) << endl; avahi_simple_poll_quit(simple_poll); break; case AVAHI_BROWSER_NEW: // We ignore the returned resolver object. In the callback // function we free it. If the server is terminated before // the callback function is called the server will free // the resolver for us. if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, (AvahiLookupFlags)0, resolve_callback, context))) { clog << _F("Failed to resolve service '%s': %s", name, avahi_strerror(avahi_client_errno(c))) << endl; } break; case AVAHI_BROWSER_REMOVE: case AVAHI_BROWSER_ALL_FOR_NOW: case AVAHI_BROWSER_CACHE_EXHAUSTED: break; } } extern "C" void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata) { assert(c); browsing_context *context = (browsing_context *)userdata; AvahiSimplePoll *simple_poll = context->simple_poll; // Called whenever the client or server state changes. if (state == AVAHI_CLIENT_FAILURE) { clog << _F("Avahi Server connection failure: %s", avahi_strerror(avahi_client_errno(c))) << endl; avahi_simple_poll_quit(simple_poll); } } extern "C" void timeout_callback(AVAHI_GCC_UNUSED AvahiTimeout *e, AVAHI_GCC_UNUSED void *userdata) { browsing_context *context = (browsing_context *)userdata; AvahiSimplePoll *simple_poll = context->simple_poll; avahi_simple_poll_quit(simple_poll); } #endif // HAVE_AVAHI static void get_or_keep_online_server_info ( systemtap_session &s, vector &servers, bool keep ) { // If we're filtering the list and it's already empty, then // there's nothing to do. if (keep && servers.empty ()) return; // We only need to obtain this once per session. This is a good thing(tm) // since obtaining this information is expensive. vector& online_servers = cscache(s)->online_servers; if (online_servers.empty ()) { // Maintain an empty entry to indicate that this search has been // performed, in case the search comes up empty. online_servers.push_back (compile_server_info ()); #if HAVE_AVAHI // Must predeclare these due to jumping on error to fail: vector avahi_servers; // Initialize. AvahiClient *client = NULL; AvahiServiceBrowser *sb = NULL; // Allocate main loop object. AvahiSimplePoll *simple_poll; if (!(simple_poll = avahi_simple_poll_new())) { clog << _("Failed to create Avahi simple poll object") << endl; goto fail; } browsing_context context; context.simple_poll = simple_poll; context.servers = & avahi_servers; // Allocate a new Avahi client int error; client = avahi_client_new (avahi_simple_poll_get (simple_poll), (AvahiClientFlags)0, client_callback, & context, & error); // Check whether creating the client object succeeded. if (! client) { clog << _F("Failed to create Avahi client: %s", avahi_strerror(error)) << endl; goto fail; } context.client = client; // Create the service browser. if (!(sb = avahi_service_browser_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_stap._tcp", NULL, (AvahiLookupFlags)0, browse_callback, & context))) { clog << _F("Failed to create Avahi service browser: %s", avahi_strerror(avahi_client_errno(client))) << endl; goto fail; } // Timeout after 0.5 seconds. struct timeval tv; avahi_simple_poll_get(simple_poll)->timeout_new( avahi_simple_poll_get(simple_poll), avahi_elapse_time(&tv, 1000/2, 0), timeout_callback, & context); // Run the main loop. avahi_simple_poll_loop(simple_poll); if (s.verbose >= 6) { clog << _("Avahi reports the following servers online:") << endl; clog << avahi_servers; } // Merge with the list of servers, as obtained by avahi. add_server_info (avahi_servers, online_servers); fail: // Cleanup. if (client) { // Also frees the service browser avahi_client_free(client); } if (simple_poll) avahi_simple_poll_free(simple_poll); #else // ! HAVE_AVAHI // Without Avahi, we can't detect online servers. Issue a warning. if (s.verbose >= 2) clog << _("Unable to detect online servers without avahi") << endl; #endif // ! HAVE_AVAHI if (s.verbose >= 5) { clog << _("All online servers:") << endl; clog << online_servers; } } // Server information is not cached. if (keep) { // Filter the existing vector by keeping the information in common with // the online_server vector. keep_common_server_info (online_servers, servers); } else { // Add the information, but not duplicates. add_server_info (online_servers, servers); } } // Add server info to a list, avoiding duplicates. Merge information from // two duplicate items. static void add_server_info ( const compile_server_info &info, vector& target ) { if (info.empty ()) return; bool found = false; for (vector::iterator i = target.begin (); i != target.end (); ++i) { if (info == *i) { // Duplicate. Merge the two items. merge_server_info (info, *i); found = true; } } if (! found) target.push_back (info); } // Add server info from one vector to another. static void add_server_info ( const vector &source, vector &target ) { for (vector::const_iterator i = source.begin (); i != source.end (); ++i) { add_server_info (*i, target); } } // Filter the vector by keeping information in common with the item. static void keep_common_server_info ( const compile_server_info &info_to_keep, vector &filtered_info ) { assert (! info_to_keep.empty ()); // The vector may change size as we go. Be careful!! for (unsigned i = 0; i < filtered_info.size (); /**/) { // Retain empty entries. if (filtered_info[i].empty ()) { ++i; continue; } if (info_to_keep == filtered_info[i]) { merge_server_info (info_to_keep, filtered_info[i]); ++i; continue; } // The item does not match. Delete it. filtered_info.erase (filtered_info.begin () + i); continue; } } // Filter the second vector by keeping information in common with the first // vector. static void keep_common_server_info ( const vector &info_to_keep, vector &filtered_info ) { // The vector may change size as we go. Be careful!! for (unsigned i = 0; i < filtered_info.size (); /**/) { // Retain empty entries. if (filtered_info[i].empty ()) { ++i; continue; } bool found = false; for (unsigned j = 0; j < info_to_keep.size (); ++j) { if (filtered_info[i] == info_to_keep[j]) { merge_server_info (info_to_keep[j], filtered_info[i]); found = true; } } // If the item was not found. Delete it. Otherwise, advance to the next // item. if (found) ++i; else filtered_info.erase (filtered_info.begin () + i); } } // Merge two compile server info items. static void merge_server_info ( const compile_server_info &source, compile_server_info &target ) { // Copy the host name if the source has one. if (! source.host_name.empty()) target.host_name = source.host_name; // Copy the address unconditionally, if the source has an address, even if they are already // equal. The source address may be an IPv6 address with a scope_id that the target is missing. assert (! target.hasAddress () || ! source.hasAddress () || source.address == target.address); if (source.hasAddress ()) copyNetAddr (target.address, source.address); if (target.port == 0) { target.port = source.port; target.fully_specified = source.fully_specified; } if (target.sysinfo.empty ()) target.sysinfo = source.sysinfo; if (target.version.empty ()) target.version = source.version; if (target.certinfo.empty ()) target.certinfo = source.certinfo; } #if 0 // not used right now // Merge compile server info from one item into a vector. static void merge_server_info ( const compile_server_info &source, vector &target ) { for (vector::iterator i = target.begin (); i != target.end (); ++i) { if (source == *i) merge_server_info (source, *i); } } // Merge compile server from one vector into another. static void merge_server_info ( const vector &source, vector &target ) { for (vector::const_iterator i = source.begin (); i != source.end (); ++i) merge_server_info (*i, target); } #endif #endif // HAVE_NSS /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/csclient.h000066400000000000000000000033361305163227500153740ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2010-2014 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef CSCLIENT_H #define CSCLIENT_H #if HAVE_NSS #include "cscommon.h" struct compile_server_info; class compile_server_client { public: compile_server_client (systemtap_session &s) : s(s), argc(0), server_version() {} int passes_0_4 (); private: // Client/server session methods. int initialize (); int create_request (); int package_request (); int find_and_connect_to_server (); int unpack_response (); int process_response (); // Client/server utility methods. int include_file_or_directory ( const std::string &subdir, const std::string &path ); int add_package_args (); int add_package_arg (const std::string &arg); int compile_using_server (std::vector &servers); int add_localization_variables(); int read_from_file (const std::string &fname, int &data); template int write_to_file (const std::string &fname, const T &data); int flush_to_stream (const std::string &fname, std::ostream &o); void show_server_compatibility () const; systemtap_session &s; std::vector private_ssl_dbs; std::vector public_ssl_dbs; std::string client_tmpdir; std::string client_zipfile; std::string server_tmpdir; std::string server_zipfile; unsigned argc; cs_protocol_version server_version; }; // Utility functions void query_server_status (systemtap_session &s); void manage_server_trust (systemtap_session &s); #endif // HAVE_NSS #endif // CSCLIENT_H systemtap-3.1/cscommon.cxx000066400000000000000000000060441305163227500157600ustar00rootroot00000000000000/* Compile-server and client common functions Copyright (C) 2011 Red Hat Inc. This file is part of systemtap, and is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License (GPL); either version 2, or (at your option) any later version. */ #include "config.h" // Disable the code in this file if NSS is not available #if HAVE_NSS #include "util.h" #include "cscommon.h" #include #include #include #include #include #include #include extern "C" { #include } using namespace std; cs_protocol_version::~cs_protocol_version () { assert (this->v); free ((void*)this->v); } const cs_protocol_version & cs_protocol_version::operator= (const char *v) { if (this->v) free ((void *)this->v); this->v = strdup (v); return *this; } bool cs_protocol_version::operator< (const cs_protocol_version &that) const { // Compare the levels of each version in turn. vector these_tokens; tokenize (this->v, these_tokens, "."); vector those_tokens; tokenize (that.v, those_tokens, "."); unsigned this_limit = these_tokens.size (); unsigned that_limit = those_tokens.size (); unsigned i; for (i = 0; i < this_limit && i < that_limit; ++i) { char *e; unsigned long this_level = strtoul (these_tokens[i].c_str (), & e, 0); assert (! *e); unsigned long that_level = strtoul (those_tokens[i].c_str (), & e, 0); assert (! *e); if (this_level > that_level) return false; if (this_level < that_level) return true; } // If the other version has more components, then this one is less than that one. if (i < that_limit) { assert (i == this_limit); return true; } // This version is greater than or equal to that one. return false; } int read_from_file (const string &fname, cs_protocol_version &data) { // C++ streams may not set errno in the even of a failure. However if we // set it to 0 before each operation and it gets set during the operation, // then we can use its value in order to determine what happened. string dataStr; errno = 0; ifstream f (fname.c_str ()); if (! f.good ()) { clog << _F("Unable to open file '%s' for reading: ", fname.c_str()); goto error; } // Read the data; errno = 0; f >> dataStr; if (f.fail ()) { clog << _F("Unable to read from file '%s': ", fname.c_str()); goto error; } data = dataStr.c_str (); // NB: not necessary to f.close (); return 0; // Success error: if (errno) clog << strerror (errno) << endl; else clog << _("unknown error") << endl; return 1; // Failure } string get_cert_serial_number (const CERTCertificate *cert) { ostringstream serialNumber; serialNumber << hex << setfill('0') << right; for (unsigned i = 0; i < cert->serialNumber.len; ++i) { if (i > 0) serialNumber << ':'; serialNumber << setw(2) << (unsigned)cert->serialNumber.data[i]; } return serialNumber.str (); } #endif /* HAVE_NSS */ systemtap-3.1/cscommon.h000066400000000000000000000044021305163227500154010ustar00rootroot00000000000000// Common functions and macros used by the compile-server and its client. #ifndef CSCOMMON_H #define CSCOMMON_H 1 #if HAVE_NSS extern "C" { #include #include } #endif // Versioning system for the protocol used for communication between the compile-server and client. // The original version is 1.0. After that, we use the systemtap release number. // // By Policy: // - All servers are backward compatible with clients. Servers adapt to the protocol version // of the client. // - All clients are backward compatible with servers. Clients adapt to the protocol version // of the server. Warnings are issued for servers lacking features. // // Features: // Version 1.0 // Original version // Versions 1.6 and higher // Client: // - Passes localization variables to the server in the file client_tmpdir + "/locale" // - Looks for the uprobes module in server_response + "/uprobes" // - No longer needs to remove stap's "Keeping temporary directory ..." message from // the server's stderr response. // - Looks for 'version' tag in server's avahi record and does not automatically connect to // an incompatible server. Also prefers newer servers over older ones. // Server: // - Applies localization variables passed from the client to stap during translation. // - Looks for the uprobes module in server_response + "/uprobes" // - Uses --tmpdir to specify temp directory to be used by stap, instead of -k, in order to // avoid parsing error messages in search of stap's randomly-generated temp dir. // - Advertises its protocol version using a 'version' tag in avahi. // #define CURRENT_CS_PROTOCOL_VERSION VERSION struct cs_protocol_version { cs_protocol_version (const char *v = "1.0") : v(0) { *this = v; } ~cs_protocol_version (); const cs_protocol_version &operator= (const char *v); bool operator< (const cs_protocol_version &that) const; const char *v; }; #if HAVE_NSS struct thread_arg { PRFileDesc *tcpSocket; CERTCertificate *cert; SECKEYPrivateKey *privKey; PRNetAddr addr; }; extern int read_from_file (const std::string &fname, cs_protocol_version &data); extern std::string get_cert_serial_number (const CERTCertificate *cert); #endif #endif // CSCOMMON_H systemtap-3.1/depcomp000077500000000000000000000560161305163227500147770ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: systemtap-3.1/doc/000077500000000000000000000000001305163227500141575ustar00rootroot00000000000000systemtap-3.1/doc/.gitignore000066400000000000000000000001111305163227500161400ustar00rootroot00000000000000*.aux *.glo *.idx *.log *.lot *.out *.pdf *.toc *.dvi _region_.* langref systemtap-3.1/doc/.latex2html-init000066400000000000000000000021161305163227500172050ustar00rootroot00000000000000$CUSTOM_TITLES = 1; $CUSTOM_TITLES_LENGTH = 6; # modified version of make_long_title # does not include the section number in the title (name) of the file sub custom_title_hook { local($_)= @_; local($num_words) = $CUSTOM_TITLES_LENGTH; #RRM: scan twice for short words, due to the $4 overlap # Cannot use \b , else words break at accented letters $_ =~ s/(^|\s)\s*($GENERIC_WORDS)(\'|(\s))/$4/ig; $_ =~ s/(^|\s)\s*($GENERIC_WORDS)(\'|(\s))/$4/ig; #remove leading numbering, unless that's all there is. local($sec_num); if (!(/^\d+(\.\d*)*\s*$/)&&(s/^\s*(\d+(\.\d*)*)\s*/$sec_num=$1;''/e)) { $num_words-- }; &remove_markers; s/<[^>]*>//g; #remove tags #revert entities, etc. to TeX-form... s/([\200-\377])/"\&#".ord($1).";"/eg; $_ = &revert_to_raw_tex($_); # get $LONG_TITLES number of words from what remains $_ = &get_first_words($_, $num_words) if ($num_words); # ...and cleanup accents, spaces and punctuation $_ = join('', (0 ? $sec_num : ''), $_); s/\\\W\{?|\}//g; s/\s/_/g; s/\W/_/g; s/__+/_/g; s/_+$//; $_; } systemtap-3.1/doc/Language_Reference_Guide/000077500000000000000000000000001305163227500207755ustar00rootroot00000000000000systemtap-3.1/doc/Language_Reference_Guide/Makefile000066400000000000000000000006731305163227500224430ustar00rootroot00000000000000#Makefile for Language_Reference_Guide XML_LANG = en-US DOCNAME = Language_Reference_Guide PRODUCT = Fedora BRAND = fedora CHUNK_SECTION_DEPTH=1 #OTHER_LANGS = as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW # Extra Parameters start here # Extra Parameters stop here COMMON_CONFIG = /usr/share/publican include $(COMMON_CONFIG)/make/Makefile.common systemtap-3.1/doc/Language_Reference_Guide/README000066400000000000000000000016541305163227500216630ustar00rootroot00000000000000This is an automated source build of the Language Reference Guide, used to build it in Publican. To build the source, run: bash publicanize-langref.sh This will copy the LaTeX source of the Language Reference Guide and convert it to DocBook XML. You can now build it in pdf, html, etc using Publican. The main source of the Language Reference Guide is in: ../langref.tex As such, any revisions to this document should be applied to ../langref.tex, not to the source in this directory. IMPORTANT: The publicanize-langref.sh script uses latexml to create the raw XML files from langref.tex first before cleaning it up for Publican. You will need LaTeXML along with all its required perl modules to use publicanize-langref.sh. For more information on building from source, downloading, and installing LaTeXML, refer to the following URLs: http://dlmf.nist.gov/LaTeXML/download.html http://dlmf.nist.gov/LaTeXML/install.html systemtap-3.1/doc/Language_Reference_Guide/en-US/000077500000000000000000000000001305163227500217245ustar00rootroot00000000000000systemtap-3.1/doc/Language_Reference_Guide/en-US/Author_Group.xml000066400000000000000000000006121305163227500250630ustar00rootroot00000000000000 Robb Romans IBM Documentation robb@linux.vnet.ibm.com systemtap-3.1/doc/Language_Reference_Guide/en-US/Book_Info.xml000066400000000000000000000042401305163227500243130ustar00rootroot00000000000000 Language Reference Guide A guide to the constructs and syntax used in SystemTap scripts Fedora 10 1 1 The SystemTap Language Reference Guide is a comprehensive reference of the language constructs and syntax used in SystemTap scripts. It is suitable for users who have intermediate to advanced knowledge of SystemTap. For other available SystemTap documentation, refer to . Logo Copyright © 2007 Red Hat Inc., Copyright © 2007 IBM Corp., Copyright © 2007 Intel Corporation. This document was derived from other documents contributed to the SystemTap project by employees of Red Hat, IBM and Intel. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The GNU Free Documentation License is available from or by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. systemtap-3.1/doc/Language_Reference_Guide/en-US/Language_Reference_Guide.ent000066400000000000000000000001071305163227500272500ustar00rootroot00000000000000 systemtap-3.1/doc/Language_Reference_Guide/en-US/Preface.xml000066400000000000000000000011171305163227500240130ustar00rootroot00000000000000 Preface systemtap-3.1/doc/Language_Reference_Guide/en-US/Revision_History.xml000066400000000000000000000011031305163227500257600ustar00rootroot00000000000000 Revision History 1.0 systemtap-3.1/doc/Language_Reference_Guide/en-US/images/000077500000000000000000000000001305163227500231715ustar00rootroot00000000000000systemtap-3.1/doc/Language_Reference_Guide/en-US/images/icon.svg000066400000000000000000003301271305163227500246500ustar00rootroot00000000000000 image/svg+xml id="path2858" /> systemtap-3.1/doc/Language_Reference_Guide/publicanize-langref.sh000077500000000000000000000204551305163227500252630ustar00rootroot00000000000000#!/bin/bash #this script converts the langref.tex source for the Language Reference Guide into #DocBook XML. the conversion is done thru latexml, a utility that comes with dblatex-0.2.7. #the output xml file of latexml is pretty dirty, so this script is needed to further clean it up. #copy latex file to here cp ../langref.tex . #convert it to raw xml latexml langref.tex --dest=Language_Reference_Guide.xml #remove excess whitespace sed -i -e 's/^\s*//g' Language_Reference_Guide.xml sed -i -e 's///g' Language_Reference_Guide.xml cat Language_Reference_Guide.xml | perl -p -e 'undef $/;s|\n<\?latexml options="twoside,english" class="article"\?>\n<\?latexml package="geometry"\?>\n<\?latexml RelaxNGSchema="LaTeXML"\?>\n<\?latexml RelaxNGSchema="LaTeXML"\?>\n\nSystemTap Language Reference|<\!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ ]>\n\n|msg' | perl -p -e 'undef $/;s|\n

This document was derived from other documents contributed to the SystemTap project by employees of Red Hat, IBM and Intel.

\n
\n\n

Copyright © 2007 Red Hat Inc.\nCopyright © 2007 IBM Corp.\nCopyright © 2007 Intel Corporation.

\n
\n\n

Permission is granted to copy, distribute and/or modify this document\nunder the terms of the GNU Free Documentation License, Version 1.2\nor any later version published by the Free Software Foundation;\nwith no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

\n
\n\n

The GNU Free Documentation License is available from\nhttp://www.gnu.org/licenses/fdl.html or by writing to\nthe Free Software Foundation, Inc., 51 Franklin Street,\nFifth Floor, Boston, MA 02110-1301, USA.

\n
||msg' | #fix up screens perl -p -e 'undef $/;s|\n\n||msg' | perl -p -e 'undef $/;s|\n\n\n||msg' | perl -p -e 'undef $/;s|\n\n||msg' | perl -p -e 'undef $/;s|\n\n\n||msg' | #fix up index tags perl -p -e 'undef $/;s|\nIndex\n||msg' | #needed later, for TABLES! perl -p -e 'undef $/;s|\n||msg' > clean.xml #further fix up headers! perl -p -i -e 's|<\?latexml searchpaths="[^>]*>\n||g' clean.xml #change main tags sed -i -e 's/<\/document>/<\/book>/g' clean.xml #more fixup for screen tags perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml #clean section tags sed -i -e 's/
/<\/chapter>/g' clean.xml #change subsection and subsubsection tags to section sed -i -e 's//<\/section>/g' clean.xml sed -i -e 's//<\/section>/g' clean.xml #remove with sed -i -e 's///g' clean.xml sed -i -e 's/<\/para>//g' clean.xml sed -i -e 's/

//g' clean.xml sed -i -e 's/<\/p>/<\/para>/g' clean.xml #properly convert xrefs sed -i -e 's//indexterm>/g' clean.xml perl -p -i -e 's///g' clean.xml sed -i -e 's///g' clean.xml sed -i -e 's/<\/indexphrase>/<\/primary>/g' clean.xml #convert s sed -i -e 's/emph>/emphasis>/g' clean.xml #convert itemizedlists and listitems, dependent on successful exec of "fix up screens" perl routines sed -i -e 's///g' clean.xml sed -i -e 's///g' clean.xml sed -i -e 's/<\/itemize>/<\/itemizedlist>/g' clean.xml sed -i -e 's/<\/item>/<\/listitem>/g' clean.xml #convert orderedlists and their respective listitems perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml #TRICKY: this perl expression takes all occurences of # http://sourceware.org/systemtap/wiki/HomePage # and replaces the string with "/>". from jfearn # note: [^"]* means "any number of occurences of characters that are NOT quotes # note: () groups strings/an expression together, which can be called later as $1 when replacing perl -p -i -e 's|([^<]*|$1/>|g' clean.xml #now, convert s sed -i -e 's/ accordingly; bold is , typewriter is perl -p -i -e 's|([^<]*)|$1|g' clean.xml sed -i -e 's///g' clean.xml perl -p -i -e 's|([^<]*)|$1|g' clean.xml sed -i -e 's///g' clean.xml #weird remainders, defaulting them to command perl -p -i -e 's|([^<]*)|$1|g' clean.xml sed -i -e 's///g' clean.xml perl -p -i -e 's|([^<]*)|$1|g' clean.xml sed -i -e 's///g' clean.xml #TABLES! #the first expression is quite dirty, since it assumes that all tables have 3 columns. dunno yet how to #automagicize this, since the orig XML doesn't have any attribute that specifies columns per table sed -i -e 's///g' clean.xml sed -i -e 's/tabular>/tgroup>/g' clean.xml perl -p -i -e 's|)|
]*>||g' clean.xml perl -p -i -e 's|]*>||g' clean.xml perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml perl -p -i -e 's|||g' clean.xml #remove "About this guide" section #perl -p -i -e 'undef $/;s|
\nAbout this guide||msg' clean.xml #finalize: copy clean.xml to en-US, then deletes it cp clean.xml en-US/Language_Reference_Guide.xml #delete excess files rm langref.tex rm clean.xml rm Language_Reference_Guide.xml systemtap-3.1/doc/Makefile.am000066400000000000000000000017451305163227500162220ustar00rootroot00000000000000# Makefile.am --- automake input file for systemtap docs ## process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = subdir-objects PDF_FILES = tutorial.pdf langref.pdf DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap SUBDIRS = SystemTap_Tapset_Reference beginners if BUILD_DOCS all-local: $(PDF_FILES) clean-local: rm -f *.pdf *.out *.log *.aux *.toc *.lot *.idx *.glo *.dvi install-data-hook: $(MKDIR_P) $(DOC_INSTALL_DIR) $(INSTALL_DATA) $(PDF_FILES) $(DOC_INSTALL_DIR) uninstall-local: @list='$(PDF_FILES)'; for p in $$list; do \ echo " rm -f '$(DOC_INSTALL_DIR)/$$p'"; \ rm -f "$(DOC_INSTALL_DIR)/$$p"; \ done endif SUFFIXES = ps pdf dvi ps tex .ps.pdf: ps2pdf -r600 $< .dvi.ps: dvips -t letter -o $@ $< .tex.dvi: pwd=`pwd`; cd $(srcdir); \ latex -output-directory=$$pwd $<; \ touch $*.glo \ makeindex $*.glo -s nomencl.ist -o $*.gls \ latex -output-directory=$$pwd $<; \ latex -output-directory=$$pwd $<; \ latex -output-directory=$$pwd $< systemtap-3.1/doc/Makefile.in000066400000000000000000000453101305163227500162270ustar00rootroot00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am --- automake input file for systemtap docs VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATE = @DATE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DYNINST_CXXFLAGS = @DYNINST_CXXFLAGS@ DYNINST_LDFLAGS = @DYNINST_LDFLAGS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_NLS = @ENABLE_NLS@ EXEEXT = @EXEEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ JAVADIR = @JAVADIR@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PIECFLAGS = @PIECFLAGS@ PIECXXFLAGS = @PIECXXFLAGS@ PIELDFLAGS = @PIELDFLAGS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON3 = @PYTHON3@ PYTHON3_CONFIG = @PYTHON3_CONFIG@ PYTHON3_CPPFLAGS = @PYTHON3_CPPFLAGS@ PYTHON3_EXEC_PREFIX = @PYTHON3_EXEC_PREFIX@ PYTHON3_PLATFORM = @PYTHON3_PLATFORM@ PYTHON3_PREFIX = @PYTHON3_PREFIX@ PYTHON3_VERSION = @PYTHON3_VERSION@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_UNKNOWN = @PYTHON_UNKNOWN@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STAP_EXTRA_VERSION = @STAP_EXTRA_VERSION@ STAP_PREFIX = @STAP_PREFIX@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ avahi_CFLAGS = @avahi_CFLAGS@ avahi_LIBS = @avahi_LIBS@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutbindir = @dracutbindir@ dracutstap = @dracutstap@ dvidir = @dvidir@ elfutils_abs_srcdir = @elfutils_abs_srcdir@ exec_prefix = @exec_prefix@ have_dvips = @have_dvips@ have_fop = @have_fop@ have_jar = @have_jar@ have_javac = @have_javac@ have_latex = @have_latex@ have_ps2pdf = @have_ps2pdf@ have_xmlto = @have_xmlto@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jsonc_CFLAGS = @jsonc_CFLAGS@ jsonc_LIBS = @jsonc_LIBS@ libdir = @libdir@ libexecdir = @libexecdir@ libvirt_CFLAGS = @libvirt_CFLAGS@ libvirt_LIBS = @libvirt_LIBS@ libxml2_CFLAGS = @libxml2_CFLAGS@ libxml2_LIBS = @libxml2_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ ncurses_CFLAGS = @ncurses_CFLAGS@ ncurses_LIBS = @ncurses_LIBS@ nss_CFLAGS = @nss_CFLAGS@ nss_LIBS = @nss_LIBS@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ preferred_python = @preferred_python@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py3execdir = @py3execdir@ pyexecdir = @pyexecdir@ python3dir = @python3dir@ pythondir = @pythondir@ sbindir = @sbindir@ selinux_CFLAGS = @selinux_CFLAGS@ selinux_LIBS = @selinux_LIBS@ sharedstatedir = @sharedstatedir@ sqlite3_LIBS = @sqlite3_LIBS@ srcdir = @srcdir@ stap_LIBS = @stap_LIBS@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ staprun_LIBS = @staprun_LIBS@ subdirs = @subdirs@ support_section_question = @support_section_question@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = subdir-objects PDF_FILES = tutorial.pdf langref.pdf DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap SUBDIRS = SystemTap_Tapset_Reference beginners SUFFIXES = ps pdf dvi ps tex all: all-recursive .SUFFIXES: .SUFFIXES: ps pdf dvi ps tex .dvi .pdf .ps .tex $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-am: all-am check: check-recursive @BUILD_DOCS_FALSE@all-local: all-am: Makefile all-local installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @BUILD_DOCS_FALSE@clean-local: @BUILD_DOCS_FALSE@uninstall-local: @BUILD_DOCS_FALSE@install-data-hook: clean: clean-recursive clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-local .MAKE: $(am__recursive_targets) install-am install-data-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ check check-am clean clean-generic clean-local cscopelist-am \ ctags ctags-am distclean distclean-generic distclean-tags dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-hook install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am uninstall-local .PRECIOUS: Makefile @BUILD_DOCS_TRUE@all-local: $(PDF_FILES) @BUILD_DOCS_TRUE@clean-local: @BUILD_DOCS_TRUE@ rm -f *.pdf *.out *.log *.aux *.toc *.lot *.idx *.glo *.dvi @BUILD_DOCS_TRUE@install-data-hook: @BUILD_DOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR) @BUILD_DOCS_TRUE@ $(INSTALL_DATA) $(PDF_FILES) $(DOC_INSTALL_DIR) @BUILD_DOCS_TRUE@uninstall-local: @BUILD_DOCS_TRUE@ @list='$(PDF_FILES)'; for p in $$list; do \ @BUILD_DOCS_TRUE@ echo " rm -f '$(DOC_INSTALL_DIR)/$$p'"; \ @BUILD_DOCS_TRUE@ rm -f "$(DOC_INSTALL_DIR)/$$p"; \ @BUILD_DOCS_TRUE@ done .ps.pdf: ps2pdf -r600 $< .dvi.ps: dvips -t letter -o $@ $< .tex.dvi: pwd=`pwd`; cd $(srcdir); \ latex -output-directory=$$pwd $<; \ touch $*.glo \ makeindex $*.glo -s nomencl.ist -o $*.gls \ latex -output-directory=$$pwd $<; \ latex -output-directory=$$pwd $<; \ latex -output-directory=$$pwd $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: systemtap-3.1/doc/SystemTap_Beginners_Guide/000077500000000000000000000000001305163227500212215ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/.gitignore000066400000000000000000000000041305163227500232030ustar00rootroot00000000000000tmp systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/000077500000000000000000000000001305163227500221505ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Appendix.xml000066400000000000000000000010311305163227500244350ustar00rootroot00000000000000 Full Version of Advanced Scripts This appendix contains the full versions of all scripts discussed in . systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml000066400000000000000000001170401305163227500260740ustar00rootroot00000000000000
Array Operations in SystemTap array operations associative arrays operations associative arrays This section enumerates some of the most commonly used array operations in SystemTap.
Assigning an Associated Value array operations assigning associated values assigning associated values array operations values, assignment of array operations Use = to set an associated value to indexed unique pairs, as in: array_name[index_expression] = value shows a very basic example of how to set an explicit associated value to a unique key. You can also use a handler function as both your index_expression and value. For example, you can use arrays to set a timestamp as the associated value to a process name (which you wish to use as your unique key), as in: assigning associated values array operations associating timestamps to process names array operations assigning associated values associating timestamps to process names operations assigning associated values associating timestamps to process names assigning associated values associating timestamps to process names array operations associating timestamps to process names assigning associated values array operations timestamps, association thereof to process names assigning associated values array operations Associating Timestamps to Process Names foo[tid()] = gettimeofday_s() Whenever an event invokes the statement in , SystemTap returns the appropriate tid() value (that is, the ID of a thread, which is then used as the unique key). At the same time, SystemTap also uses the function gettimeofday_s() to set the corresponding timestamp as the associated value to the unique key defined by the function tid(). This creates an array composed of key pairs containing thread IDs and timestamps. In this same example, if tid() returns a value that is already defined in the array foo, the operator will discard the original associated value to it, and replace it with the current timestamp from gettimeofday_s().
Reading Values From Arrays reading values from arrays array operations array operations reading values from arrays operations reading values from arrays You can also read values from an array the same way you would read the value of a variable. To do so, include the array_name[index_expression] statement as an element in a mathematical expression. For example: reading values from arrays array operations using arrays in simple computations array operations reading values from arrays using arrays in simple computations operations reading values from arrays using arrays in simple computations using arrays in simple computations reading values from arrays array operations algebraic formulas using arrays reading values from arrays array operations array operations reading values from arrays computing for timestamp deltas operations reading values from arrays computing for timestamp deltas computing for timestamp deltas reading values from arrays array operations reading values from arrays computing for timestamp deltas array operations timestamp deltas, computing for reading values from arrays array operations Using Array Values in Simple Computations delta = gettimeofday_s() - foo[tid()] This example assumes that the array foo was built using the construct in (from ). This sets a timestamp that will serve as a reference point, to be used in computing for delta. The construct in computes a value for the variable delta by subtracting the associated value of the key tid() from the current gettimeofday_s(). The construct does this by reading the value of tid() from the array. This particular construct is useful for determining the time between two events, such as the start and completion of a read operation. reading values from arrays array operations empty unique keys array operations reading values from arrays empty unique keys operations reading values from arrays empty unique keys empty unique keys reading values from arrays array operations Note If the index_expression cannot find the unique key, it returns a value of 0 (for numerical operations, such as ) or a null/empty string value (for string operations) by default.
Incrementing Associated Values array operations incrementing associated values incrementing associated values array operations operations incrementing associated values Use ++ to increment the associated value of a unique key in an array, as in: array_name[index_expression] ++ Again, you can also use a handler function for your index_expression. For example, if you wanted to tally how many times a specific process performed a read to the virtual file system (using the event vfs.read), you can use the following probe: incrementing associated values array operations tallying virtual file system reads (VFS reads) array operations incrementing associated values tallying virtual file system reads (VFS reads) operations incrementing associated values tallying virtual file system reads (VFS reads) tallying virtual file system reads (VFS reads) incrementing associated values array operations VFS reads, tallying of incrementing associated values array operations vfsreads.stp probe vfs.read { reads[execname()] ++ } In , the first time that the probe returns the process name gnome-terminal (that is, the first time gnome-terminal performs a VFS read), that process name is set as the unique key gnome-terminal with an associated value of 1. The next time that the probe returns the process name gnome-terminal, SystemTap increments the associated value of gnome-terminal by 1. SystemTap performs this operation for all process names as the probe returns them.
Processing Multiple Elements in an Array multiple elements in an array array operations array operations multiple elements in an array operations multiple elements in an array array operations processing multiple elements in an array processing multiple elements in an array array operations operations processing multiple elements in an array Once you've collected enough information in an array, you will need to retrieve and process all elements in that array to make it useful. Consider : the script collects information about how many VFS reads each process performs, but does not specify what to do with it. The obvious means for making useful is to print the key pairs in the array reads, but how? array operations processing multiple elements in an array foreach operations processing multiple elements in an array foreach processing multiple elements in an array foreach array operations foreach processing multiple elements in an array array operations array operations processing multiple elements in an array iterations, processing elements in an array as operations processing multiple elements in an array iterations, processing elements in an array as iterations, processing elements in an array as processing multiple elements in an array array operations The best way to process all key pairs in an array (as an iteration) is to use the foreach statement. Consider the following example: array operations processing multiple elements in an array cumulative virtual file system reads, tallying operations processing multiple elements in an array cumulative virtual file system reads, tallying cumulative virtual file system reads, tallying processing multiple elements in an array array operations processing multiple elements in an array cumulative virtual file system reads, tallying array operations virtual file system reads (cumulative), tallying processing multiple elements in an array array operations cumulative-vfsreads.stp global reads probe vfs.read { reads[execname()] ++ } probe timer.s(3) { foreach (count in reads) printf("%s : %d \n", count, reads[count]) } In the second probe of , the foreach statement uses the variable count to reference each iteration of a unique key in the array reads. The reads[count] array statement in the same probe retrieves the associated value of each unique key. Given what we know about the first probe in , the script prints VFS-read statistics every 3 seconds, displaying names of processes that performed a VFS-read along with a corresponding VFS-read count. array operations processing multiple elements in an array limiting the output of foreach operations processing multiple elements in an array limiting the output of foreach processing multiple elements in an array limiting the output of foreach array operations limiting the output of foreach processing multiple elements in an array array operations array operations processing multiple elements in an array ordering the output of foreach operations processing multiple elements in an array ordering the output of foreach processing multiple elements in an array ordering the output of foreach array operations ordering the output of foreach processing multiple elements in an array array operations Now, remember that the foreach statement in prints all iterations of process names in the array, and in no particular order. You can instruct the script to process the iterations in a particular order by using + (ascending) or - (descending). In addition, you can also limit the number of iterations the script needs to process with the limit value option. For example, consider the following replacement probe: probe timer.s(3) { foreach (count in reads- limit 10) printf("%s : %d \n", count, reads[count]) } This foreach statement instructs the script to process the elements in the array reads in descending order (of associated value). The limit 10 option instructs the foreach to only process the first ten iterations (that is, print the first 10, starting with the highest value).
Clearing/Deleting Arrays and Array Elements array operations deleting arrays and array elements operations deleting arrays and array elements array operations clearing arrays/array elements operations clearing arrays/array elements clearing arrays/array elements array operations Sometimes, you may need to clear the associated values in array elements, or reset an entire array for re-use in another probe. in allows you to track how the number of VFS reads per process grows over time, but it does not show you the number of VFS reads each process makes per 3-second period. array operations clearing arrays/array elements delete operator operations clearing arrays/array elements delete operator clearing arrays/array elements array operations delete operator delete operator clearing arrays/array elements array operations To do that, you will need to clear the values accumulated by the array. You can accomplish this using the delete operator to delete elements in an array, or an entire array. Consider the following example: array operations clearing arrays/array elements virtual file system reads (non-cumulative), tallying operations clearing arrays/array elements virtual file system reads (non-cumulative), tallying clearing arrays/array elements array operations virtual file system reads (non-cumulative), tallying virtual file system reads (non-cumulative), tallying clearing arrays/array elements array operations noncumulative-vfsreads.stp global reads probe vfs.read { reads[execname()] ++ } probe timer.s(3) { foreach (count in reads) printf("%s : %d \n", count, reads[count]) delete reads } In , the second probe prints the number of VFS reads each process made within the probed 3-second period only. The delete reads statement clears the reads array within the probe. Note array operations clearing arrays/array elements multiple array operations within the same probe operations clearing arrays/array elements multiple array operations within the same probe clearing arrays/array elements array operations multiple array operations within the same probe multiple array operations within the same probe clearing arrays/array elements array operations You can have multiple array operations within the same probe. Using the examples from and , you can track the number of VFS reads each process makes per 3-second period and tally the cumulative VFS reads of those same processes. Consider the following example: global reads, totalreads probe vfs.read { reads[execname()] ++ totalreads[execname()] ++ } probe timer.s(3) { printf("=======\n") foreach (count in reads-) printf("%s : %d \n", count, reads[count]) delete reads } probe end { printf("TOTALS\n") foreach (total in totalreads-) printf("%s : %d \n", total, totalreads[total]) } In this example, the arrays reads and totalreads track the same information, and are printed out in a similar fashion. The only difference here is that reads is cleared every 3-second period, whereas totalreads keeps growing.
Using Arrays in Conditional Statements array operations conditional statements, using arrays in operations conditional statements, using arrays in conditional statements, using arrays in array operations if/else statements, using arrays in array operations You can also use associative arrays in if statements. This is useful if you want to execute a subroutine once a value in the array matches a certain condition. Consider the following example: vfsreads-print-if-1kb.stp global reads probe vfs.read { reads[execname()] ++ } probe timer.s(3) { printf("=======\n") foreach (count in reads-) if (reads[count] >= 1024) printf("%s : %dkB \n", count, reads[count]/1024) else printf("%s : %dB \n", count, reads[count]) } Every three seconds, prints out a list of all processes, along with how many times each process performed a VFS read. If the associated value of a process name is equal or greater than 1024, the if statement in the script converts and prints it out in kB. Testing for Membership array operations conditional statements, using arrays in testing for array membership operations conditional statements, using arrays in testing for array membership conditional statements, using arrays in array operations testing for array membership testing for array membership conditional statements, using arrays in array operations membership (in array), testing for conditional statements, using arrays in array operations You can also test whether a specific unique key is a member of an array. Further, membership in an array can be used in if statements, as in: if([index_expression] in array_name) statement To illustrate this, consider the following example: vfsreads-stop-on-stapio2.stp global reads probe vfs.read { reads[execname()] ++ } probe timer.s(3) { printf("=======\n") foreach (count in reads+) printf("%s : %d \n", count, reads[count]) if(["stapio"] in reads) { printf("stapio read detected, exiting\n") exit() } } The if(["stapio"] in reads) statement instructs the script to print stapio read detected, exiting once the unique key stapio is added to the array reads.
Computing for Statistical Aggregates statistical aggregates array operations aggregates (statistical) array operations array operations computing for statistical aggregates operations computing for statistical aggregates computing for statistical aggregates array operations Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (that is, storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array. array operations computing for statistical aggregates adding values to statistical aggregates operations computing for statistical aggregates adding values to statistical aggregates computing for statistical aggregates array operations adding values to statistical aggregates adding values to statistical aggregates computing for statistical aggregates array operations To add value to a statistical aggregate, use the operator <<< value. need more examples of supported rvalues, for example, length, count, and what each one does. stat-aggregates.stp global reads probe vfs.read { reads[execname()] <<< $count } array operations computing for statistical aggregates count (operator) operations computing for statistical aggregates count (operator) computing for statistical aggregates array operations count (operator) count operator computing for statistical aggregates array (operator) In , the operator <<< $count stores the amount returned by $count to the associated value of the corresponding execname() in the reads array. Remember, these values are stored; they are not added to the associated values of each unique key, nor are they used to replace the current associated values. In a manner of speaking, think of it as having each unique key (execname()) having multiple associated values, accumulating with each probe handler run. Note In the context of , count returns the amount of data read by the returned execname() to the virtual file system. array operations computing for statistical aggregates extracting data collected by statistical aggregates operations computing for statistical aggregates extracting data collected by statistical aggregates computing for statistical aggregates array operations extracting data collected by statistical aggregates extracting data collected by statistical aggregates computing for statistical aggregates array operations integer extractors computing for statistical aggregates array operations To extract data collected by statistical aggregates, use the syntax format @extractor(variable/array index expression). extractor can be any of the following integer extractors: count array operations computing for statistical aggregates @count (integer extractor) operations computing for statistical aggregates @count (integer extractor) computing for statistical aggregates array operations @count (integer extractor) @count (integer extractor) computing for statistical aggregates array operations Returns the number of all values stored into the variable/array index expression. Given the sample probe in , the expression @count(reads[execname()]) will return how many values are stored in each unique key in array reads. sum array operations computing for statistical aggregates @sum (integer extractor) operations computing for statistical aggregates @sum (integer extractor) computing for statistical aggregates array operations @sum (integer extractor) @sum (integer extractor) computing for statistical aggregates array operations Returns the sum of all values stored into the variable/array index expression. Again, given sample probe in , the expression @sum(reads[execname()]) will return the total of all values stored in each unique key in array reads. min array operations computing for statistical aggregates @min (integer extractor) operations computing for statistical aggregates @min (integer extractor) computing for statistical aggregates array operations @min (integer extractor) @min (integer extractor) computing for statistical aggregates array operations Returns the smallest among all the values stored in the variable/array index expression. max array operations computing for statistical aggregates @max (integer extractor) operations computing for statistical aggregates @max (integer extractor) computing for statistical aggregates array operations @max (integer extractor) @max (integer extractor) computing for statistical aggregates array operations Returns the largest among all the values stored in the variable/array index expression. avg array operations computing for statistical aggregates @avg (integer extractor) operations computing for statistical aggregates @avg (integer extractor) computing for statistical aggregates array operations @avg (integer extractor) @avg (integer extractor) computing for statistical aggregates array operations Returns the average of all values stored in the variable/array index expression. When using statistical aggregates, you can also build array constructs that use multiple index expressions (to a maximum of 5). This is helpful in capturing additional contextual information during a probe. For example: Multiple Array Indexes global reads probe vfs.read { reads[execname(),pid()] <<< 1 } probe timer.s(3) { foreach([var1,var2] in reads) printf("%s (%d) : %d \n", var1, var2, @count(reads[var1,var2])) } In , the first probe tracks how many times each process performs a VFS read. What makes this different from earlier examples is that this array associates a performed read to both a process name and its corresponding process ID. The second probe in demonstrates how to process and print the information collected by the array reads. Note how the foreach statement uses the same number of variables (that is, var1 and var2) contained in the first instance of the array reads from the first probe.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml000066400000000000000000000217731305163227500241450ustar00rootroot00000000000000
Associative Arrays arrays associative arrays associative arrays introduction SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it. associative arrays introduction key pairs key pairs introduction arrays associative arrays introduction unique keys unique keys introduction arrays associative arrays introduction associated values associated values introduction arrays associative arrays introduction index expression index expression introduction arrays Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as global variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of awk, and is as follows: associative arrays introduction syntax syntax introduction arrays format introduction arrays array_name[index_expression] Here, the array_name is any arbitrary name the array uses. The index_expression is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named foo that specifies the ages of three people tom, dick, and harry (which are unique keys). To assign them the ages (associated values) of 23, 24, and 25 respectively, we'd use the following array statements: associative arrays introduction example example introduction arrays Basic Array Statements foo["tom"] = 23 foo["dick"] = 24 foo["harry"] = 25 You can specify up to nine index expressions in an array statement, each one delimited by a comma (,). This is useful if you wish to have a key that contains multiple pieces of information. The following line from uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of devname with that key. device[pid(),execname(),uid(),ppid(),"W"] = devname Important All associate arrays must be declared as global, regardless of whether the associate array is used in one or multiple probes.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Author_Group.xml000066400000000000000000000013071305163227500253110ustar00rootroot00000000000000 Red Hat, Inc. Don Domingo Engineering Services and Operations Content Services ddomingo@redhat.com William Cohen Engineering Services and Operations Performance Tools wcohen@redhat.com systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Book_Info.xml000066400000000000000000000023551305163227500245440ustar00rootroot00000000000000 %BOOK_ENTITIES; ]> SystemTap Beginners Guide Introduction to SystemTap 3.1 SystemTap 3.1 2 This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail. Logo &YEAR; &HOLDER; systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Chapter.xml000066400000000000000000000010641305163227500242610ustar00rootroot00000000000000 Test This is a test paragraph
Section 1 Test Test of a section
Section 2 Test Test of a section
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/000077500000000000000000000000001305163227500250725ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/Conventions.xml000066400000000000000000000201341305163227500301210ustar00rootroot00000000000000
Document Conventions This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information. In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later include the Liberation Fonts set by default.
Typographic Conventions Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows. Mono-spaced Bold Used to highlight system input, including shell commands, file names and paths. Also used to highlight keys and key combinations. For example:
To see the contents of the file my_next_bestselling_novel in your current working directory, enter the cat my_next_bestselling_novel command at the shell prompt and press Enter to execute the command.
The above includes a file name, a shell command and a key, all presented in mono-spaced bold and all distinguishable thanks to context. Key combinations can be distinguished from an individual key by the plus sign that connects each part of a key combination. For example:
Press Enter to execute the command. Press CtrlAltF2 to switch to a virtual terminal.
The first example highlights a particular key to press. The second example highlights a key combination: a set of three keys pressed simultaneously. If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in mono-spaced bold. For example:
File-related classes include filesystem for file systems, file for files, and dir for directories. Each class has its own associated set of permissions.
Proportional Bold This denotes words or phrases encountered on a system, including application names; dialog-box text; labeled buttons; check-box and radio-button labels; menu titles and submenu titles. For example:
Choose SystemPreferencesMouse from the main menu bar to launch Mouse Preferences. In the Buttons tab, select the Left-handed mouse check box and click Close to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand). To insert a special character into a gedit file, choose ApplicationsAccessoriesCharacter Map from the main menu bar. Next, choose SearchFind… from the Character Map menu bar, type the name of the character in the Search field and click Next. The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the Copy button. Now switch back to your document and choose EditPaste from the gedit menu bar.
The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context. Mono-spaced Bold Italic or Proportional Bold Italic Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:
To connect to a remote machine using ssh, type ssh username@domain.name at a shell prompt. If the remote machine is example.com and your username on that machine is john, type ssh john@example.com. The mount -o remount file-system command remounts the named file system. For example, to remount the /home file system, the command is mount -o remount /home. To see the version of a currently installed package, use the rpm -q package command. It will return a result as follows: package-version-release.
Note the words in bold italics above: username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system. Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
Publican is a DocBook publishing system.
Pull-quote Conventions Terminal output and source code listings are set off visually from the surrounding text. Output sent to a terminal is set in mono-spaced roman and presented thus: books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs Source-code listings are also set in mono-spaced roman but add syntax highlighting as follows:
Notes and Warnings Finally, we use three visual styles to draw attention to information that might otherwise be overlooked. Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier. Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled “Important” will not cause data loss but may cause irritation and frustration. Warnings should not be ignored. Ignoring warnings will most likely cause data loss.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/Feedback.xml000066400000000000000000000006121305163227500272770ustar00rootroot00000000000000
We Need Feedback! feedback contact information for this manual You should over ride this by creating your own local Feedback.xml file.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/Legal_Notice.xml000066400000000000000000000010221305163227500301340ustar00rootroot00000000000000 Copyright &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at http://www.gnu.org/licenses/fdl.txt). systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/Program_Listing.xml000066400000000000000000000012301305163227500307100ustar00rootroot00000000000000 package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/Revision_History.xml000066400000000000000000000011121305163227500311260ustar00rootroot00000000000000 Revision History 3.0-0 Mon Mar 12 2012 Jeff Fearn jfearn@redhat.com Publican 3.0 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/000077500000000000000000000000001305163227500256625ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/brand.css000066400000000000000000000004261305163227500274640ustar00rootroot00000000000000/*headings*/ h1, h2, h3, h4, h5, h6, div.producttitle, div.subtitle, div.author div.author, div.translator div.translator, div.othercredit div.othercredit, div.editor div.editor, div.contrib div.contrib, .title, .titlepage .edition, .titlepage .releaseinfo { color: #336699; } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/common.css000066400000000000000000000611111305163227500276640ustar00rootroot00000000000000* { widows: 4 !important; orphans: 4 !important; } body, h1, h2, h3, h4, h5, h6, pre, li, div { line-height: 1.29em; } body { background-color: white; margin:0 auto; font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; font-size: 14px; max-width: 770px; color: black; } body.toc_embeded { /*for web hosting system only*/ margin-left: 300px; } object.toc, iframe.toc { /*for web hosting system only*/ border-style: none; position: fixed; width: 290px; height: 99.99%; top: 0; left: 0; z-index: 100; border-style: none; border-right:1px solid #999; } /* Hide web menu */ body.notoc { margin-left: 3em; } iframe.notoc { border-style:none; border: none; padding: 0px; position:fixed; width: 21px; height: 29px; top: 0px; left:0; overflow: hidden; margin: 0px; margin-left: -3px; } /* End hide web menu */ /* desktop styles */ body.desktop { margin-left: 26em; } body.desktop .book > .toc { display:block; width:24em; height:99.99%; position:fixed; overflow:auto; top:0px; left:0px; /* padding-left:1em; */ background-color:#EEEEEE; font-size: 12px; } body.pdf { max-width: 100%; } .toc { line-height:1.35em; } .toc .glossary, .toc .chapter, .toc .appendix { margin-top:1em; } .toc .part { margin-top:1em; display:block; } span.glossary, span.appendix { display:block; margin-top:0.5em; } div { padding-top:0px; } div.section { page-break-inside: avoid; } p, div.para { padding-top: 0px; margin-top: 1em; padding-bottom: 0px; margin-bottom: 1em; } div.formalpara { padding-top: 0px; margin-top: 1em; padding-bottom: 0px; margin-bottom: 1em; } .varlistentry div.para { page-break-before: avoid; } /*Links*/ a { outline: none; } a:link { text-decoration: none; border-bottom: 1px dotted ; color:#3366cc; } body.pdf a:link { word-wrap: break-word; } a:visited { text-decoration:none; border-bottom: 1px dotted ; color:#003366; } div.longdesc-link { float:right; color:#999; } .toc a, .qandaset a { font-weight:normal; border:none; } .toc a:hover, .qandaset a:hover { border-bottom: 1px dotted; } /*headings*/ h1, h2, h3, h4, h5, h6 { color: #336699; margin-top: 0px; margin-bottom: 0px; background-color: transparent; margin-bottom: 0px; margin-top: 20px; page-break-inside: avoid; page-break-after: avoid; word-wrap: break-word; } h1 { font-size: 22px; } .titlepage h1.title { text-align:left; } .book > .titlepage h1.title { text-align: center; } .article > .titlepage h1.title, .article > .titlepage h2.title { text-align: center; } .set .titlepage > div > div > h1.title { text-align: center; } .part > .titlepage h1.title { text-align: center; font-size: 24px; } div.producttitle { margin-top: 0px; margin-bottom: 20px; font-size: 48px; font-weight: bold; /* background: #003d6e url(../images/h1-bg.png) top left repeat-x; */ color: #336699; text-align: center; padding-top: 12px; } .titlepage .corpauthor { margin-top: 1em; text-align: center; } .section h1.title { font-size: 18px; padding: 0px; color: #336699; text-align: left; background: white; } h2 { font-size: 20px; margin-top: 30px; } .book div.subtitle, .book h2.subtitle, .book h3.subtitle { margin-top: 1em; margin-bottom: 1em; font-size: 18px; text-align: center; } div.subtitle { color: #336699; font-weight: bold; } h1.legalnotice { font-size: 24px; } .preface > div > div > div > h2.title, .preface > div > div > div > h1.title { margin-top: 1em; font-size: 24px; } .appendix h2 { font-size: 24px; } h3 { font-size: 14px; padding-top:0px; padding-bottom: 0px; margin-bottom: 0px; } h4 { font-size: 14px; padding-top:0px; padding-bottom:0px; } h5 { font-size: 14px; } h6 { font-size: 14px; margin-bottom: 0px; } .abstract h6 { margin-top:1em; margin-bottom:.5em; font-size: 24px; } .index > div > div > div > h2.title { font-size: 24px; } .chapter > div > div > div > h2.title { font-size: 24px; } .section > div > div > div > h2.title { font-size: 21px; page-break-inside: avoid; page-break-before: avoid; page-break-after: avoid; } .section > div > div > div > h3.title { font-size: 17px; } /*element rules*/ hr { border-collapse: collapse; border-style:none; border-top: 1px dotted #ccc; width:100%; } /* web site rules */ ul.languages, .languages li { display:inline; padding:0px; } .languages li a { padding:0px .5em; text-decoration: none; } .languages li p, .languages li div.para { display:inline; } .languages li a:link, .languages li a:visited { color:#444; } .languages li a:hover, .languages li a:focus, .languages li a:active { color:black; } ul.languages { display:block; background-color:#eee; padding:.5em; } /*supporting stylesheets*/ /*unique to the webpage only*/ .books { position:relative; } .versions li { width:100%; clear:both; display:block; } a.version { font-size: 20px; text-decoration:none; width:100%; display:block; padding:1em 0px .2em 0px; clear:both; } a.version:before { content:"Version"; font-size: smaller; } a.version:visited, a.version:link { color:#666; } a.version:focus, a.version:hover { color:black; } .books { display:block; position:relative; clear:both; width:100%; } .books li { display:block; width:200px; float:left; position:relative; clear: none ; } .books .html { width:170px; display:block; } .books .pdf { position:absolute; left:170px; top:0px; font-size: smaller; } .books .pdf:link, .books .pdf:visited { color:#555; } .books .pdf:hover, .books .pdf:focus { color:#000; } .books li a { text-decoration:none; } .books li a:hover { color:black; } /*products*/ .products li { display: block; width:300px; float:left; } .products li a { width:300px; padding:.5em 0px; } .products ul { clear:both; } /*revision history*/ .revhistory { display:block; } .revhistory table { background-color:transparent; border-color:#fff; padding:0px; margin: 0; border-collapse:collapse; border-style:none; } .revhistory td { text-align :left; padding:0px; border: none; border-top: 1px solid #fff; font-weight: bold; } .revhistory .simplelist td { font-weight: normal; } .revhistory .simplelist { margin-bottom: 1.5em; margin-left: 1em; } .revhistory table th { display: none; } /*credits*/ .authorgroup div { clear:both; text-align: center; } div.author div.author, div.translator div.translator, div.othercredit div.othercredit, div.editor div.editor, div.contrib div.contrib { margin: 0px; padding: 0px; margin-top: 12px; font-size: 14px; font-weight: bold; color: #336699; } div.editedby { margin-top: 15px; margin-bottom: -0.8em; } div.authorgroup .author, div.authorgroup.editor, div.authorgroup.translator, div.authorgroup.othercredit, div.authorgroup.contrib { display: block; font-size: 14px; page-break-inside: avoid; } .revhistory .author { display: inline; } .othercredit h3 { padding-top: 1em; } .othercredit { margin:0px; padding:0px; } .releaseinfo { clear: both; } .copyright { margin-top: 1em; } /* qanda sets */ .answer { margin-bottom:1em; border-bottom:1px dotted #ccc; } .qandaset .toc { border-bottom:1px dotted #ccc; } .question { font-weight:bold; } .answer .data, .question .data { padding-left: 2.6em; } .answer .label, .question .label { float:left; font-weight:bold; } /* inline syntax highlighting */ .perl_Alert { color: #0000ff; } .perl_BaseN { color: #007f00; } .perl_BString { color: #5C3566; } .perl_Char { color: #ff00ff; } .perl_Comment { color: #888888; } .perl_DataType { color: #0000ff; } .perl_DecVal { color: #00007f; } .perl_Error { color: #ff0000; } .perl_Float { color: #00007f; } .perl_Function { color: #007f00; } .perl_IString { color: #5C3566; } .perl_Keyword { color: #002F5D; } .perl_Operator { color: #ffa500; } .perl_Others { color: #b03060; } .perl_RegionMarker { color: #96b9ff; } .perl_Reserved { color: #9b30ff; } .perl_String { color: #5C3566; } .perl_Variable { color: #0000ff; } .perl_Warning { color: #0000ff; } /*Lists*/ ul { list-style-image: url("../images/dot.png"); list-style-type: circle; padding-left: 1.6em; } ul ul { list-style-image: url("../images/dot2.png"); list-style-type: circle; } ol.1 { list-style-type: decimal; } ol.a, ol ol { list-style-type: lower-alpha; } ol.i { list-style-type: lower-roman; } ol.A { list-style-type: upper-alpha; } ol.I { list-style-type: upper-roman; } dt { font-weight:bold; margin-bottom:0px; padding-bottom:0px; } dd { margin:0px; margin-left:2em; padding-top:0px; } li { padding-top: 0px; margin-top: 0px; padding-bottom: 0px; /* margin-bottom: 16px; */ } /*images*/ img { display:block; margin: 2em 0; max-width: 100%; } .inlinemediaobject, .inlinemediaobject img, .inlinemediaobject object { display:inline; margin:0px; overflow: hidden; } .figure { margin-top: 1em; width: 100%; } .figure img, .mediaobject img { display:block; margin: 0em; page-break-inside: avoid; } .figure .title { margin-bottom:2em; padding:0px; } /*document modes*/ .confidential { background-color:#900; color:White; padding:.5em .5em; text-transform:uppercase; text-align:center; } .longdesc-link { display:none; } .longdesc { display:none; } .prompt { padding:0px .3em; } /*user interface styles*/ .screen .replaceable { } .guibutton, .guilabel { font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight: bold; } .example { background-color: #ffffff; border-left: 3px solid #aaaaaa; padding-top: 1px; padding-bottom: 0.1em; padding-left: 1em; } .equation { border-left: 3px solid #aaaaaa; background-color: #ffffff; padding-top: 1px; padding-bottom: 0.1em; padding-left: 1em; } .equation-contents { margin-left: 4em; } div.title { margin-bottom: 1em; font-weight: 14px; font-weight: bold; color: #336699; page-break-inside: avoid; page-break-after: avoid; word-wrap: break-word; } .example-contents { background-color: #ffffff; } .example-contents .para { /* padding: 10px;*/ } /*terminal/console text*/ .computeroutput, .option { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight:bold; } .replaceable { font-style: italic; } .command, .filename, .keycap, .classname, .literal { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight:bold; } /* no bold in toc */ .toc * { font-weight: inherit; } .toc H1 { font-weight: bold; } div.programlisting { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } pre { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; display:block; background-color: #f5f5f5; color: #000000; /* border: 1px solid #aaaaaa; */ margin-bottom: 1em; padding:.5em 1em; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ font-size: 0.9em; border-style:none; box-shadow: 0 2px 5px #AAAAAA inset; -moz-box-shadow: 0 2px 5px #AAAAAA inset; -webkit-box-shadow: 0 2px 5px #AAAAAA inset; -o-box-shadow: 0 2px 5px #AAAAAA inset; } body.pdf pre { border: 1px solid #AAAAAA; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; -o-box-shadow: none; } pre .replaceable, pre .keycap { } code { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; white-space: pre-wrap; word-wrap: break-word; font-weight:bold; } .parameter code { display: inline; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } code.email { font-weight: normal; font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; } /*Notifications*/ div.warning:before { content:url(../images/warning.png); padding-left: 5px; } div.note:before { content:url(../images/note.png); padding-left: 5px; } div.important:before { content:url(../images/important.png); padding-left: 5px; } div.warning, div.note, div.important { color: black; margin: 0px; padding: 0px; background: none; background-color: white; margin-bottom: 1em; border-bottom: 1px solid #aaaaaa; page-break-inside: avoid; } div.admonition_header p { margin: 0px; padding: 0px; color: #eeeeec; padding-top: 0px; padding-bottom: 0px; height: 1.4em; line-height: 1.4em; font-size: 17px; display:inline; } div.admonition_header { background-origin:content-box; clear: both; margin: 0px; padding: 0px; margin-top: -40px; padding-left: 58px; line-height: 1.0px; font-size: 1.0px; } div.warning div.admonition_header { background: url(../images/red.png) top left repeat-x; background-color: #590000; background: -webkit-linear-gradient(#a40000,#590000); background: linear-gradient(#a40000,#590000); } div.note div.admonition_header { background: url(../images/green.png) top right repeat-x; background-color: #597800; background: -webkit-linear-gradient(#769f00,#597800); background: linear-gradient(#769f00,#597800); } div.important div.admonition_header { background: url(../images/yellow.png) top right repeat-x; background-color: #a6710f; background: -webkit-linear-gradient(#d08e13,#a6710f); background: linear-gradient(#d08e13,#a6710f); } div.warning p:first-child, div.warning div.para:first-child, div.note p:first-child, div.note div.para:first-child, div.important p:first-child, div.important div.para:first-child { padding: 0px; margin: 0px; } div.admonition { border: none; border-left: 1px solid #aaaaaa; border-right: 1px solid #aaaaaa; padding:0px; margin:0px; padding-top: 1.5em; padding-bottom: 1em; padding-left: 2em; padding-right: 1em; background-color: #eeeeec; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } /*Page Title*/ #title { display:block; height:45px; padding-bottom:1em; margin:0px; } #title a.left{ display:inline; border:none; } #title a.left img{ border:none; float:left; margin:0px; margin-top:.7em; } #title a.right { padding-bottom:1em; } #title a.right img { border:none; float:right; margin:0px; margin-top:.7em; } /*Table*/ div.table { /* page-break-inside: avoid; */ } table { border: 1px solid #444; width:100%; border-collapse:collapse; table-layout: fixed; word-wrap: break-word; } table.blockquote, table.simplelist, .calloutlist table { border-style: none; } table th { text-align:left; background-color:#6699cc; padding:.3em .5em; color:white; } table td { padding:.15em .5em; } table tr.even td { background-color:#f5f5f5; } tr:nth-child(even) { background-color: #eeeeee; } table th p:first-child, table td p:first-child, table li p:first-child, table th div.para:first-child, table td div.para:first-child, table li div.para:first-child { margin-top:0px; padding-top:0px; display:inline; } th, td { border-style:none; vertical-align: top; /* border: 1px solid #000; */ } .blockquote td, .simplelist th, .simplelist td { border: none; } table table td { border-bottom:1px dotted #aaa; background-color:white; padding:.6em 0px; } table table { border:1px solid white; } td.remarkval { color:#444; } td.fieldval { font-weight:bold; } .lbname, .lbtype, .lbdescr, .lbdriver, .lbhost { color:white; font-weight:bold; background-color:#999; width:120px; } td.remarkval { width:230px; } td.tname { font-weight:bold; } th.dbfield { width:120px; } th.dbtype { width:70px; } th.dbdefault { width:70px; } th.dbnul { width:70px; } th.dbkey { width:70px; } span.book { margin-top:4em; display:block; font-size: 11pt; } span.book a{ font-weight:bold; } span.chapter { display:block; } table.simplelist td, .calloutlist table td { border-style: none; } table.lt-4-cols.lt-7-rows td { border: none; } /*to simplify layout*/ table.lt-4-cols.gt-14-rows tr:nth-child(odd) { background-color: #fafafa; } /* to keep simple but stripe rows */ .gt-8-cols td { border-left: 1px solid #ccc; } .gt-8-cols td:first-child { border-left: 0; } /* to apply vertical lines to differentiate columns*/ /*Breadcrumbs*/ #breadcrumbs ul li.first:before { content:" "; } #breadcrumbs { color:#900; padding:3px; margin-bottom:25px; } #breadcrumbs ul { margin-left:0; padding-left:0; display:inline; border:none; } #breadcrumbs ul li { margin-left:0; padding-left:2px; border:none; list-style:none; display:inline; } #breadcrumbs ul li:before { content:"\0020 \0020 \0020 \00BB \0020"; color:#333; } dl { margin-top: 0px; margin-left: 28px; } .toc dl { margin-left: 10px; } /*index*/ .glossary h3, .index h3 { font-size: 20px; color:#aaa; margin:0px; } .indexdiv { margin-bottom:1em; } .glossary dt, .index dt { color:#444; padding-top:.5em; } .glossary dl dl dt, .index dl dl dt { color:#777; font-weight:normal; padding-top:0px; } .index dl dl dt:before { content:"- "; color:#ccc; } /*changes*/ .footnote { font-size: 10px; margin: 0px; color: #222; } .footnotes { margin-bottom: 60px; } table .footnote { } sup { margin:0px; padding:0px; font-size: 10px; padding-left:0px; } .footnote { position:relative; } .footnote sup { color: black; left: .4em; } .footnote a:link, .footnote a:visited { text-decoration:none; border: none; } .footnote .para sup { /* position:absolute; */ vertical-align:text-bottom; } a.footnote { padding-right: 0.5em; text-decoration:none; border: none; } .footnote sup a:link, .footnote sup a:visited { color:#92917d; text-decoration:none; } .footnote:hover sup a { text-decoration:none; } .footnote p,.footnote div.para { padding-left:1em; } .footnote a:link, .footnote a:visited before{ color:#00537c; } .footnote a:hover { } /**/ .pdf-break { page-break-before: always; } div.legalnotice { page-break-before: always; } div.abstract { page-break-before: always; /* page-break-after: always;*/ } div.chapter { page-break-before: always; } div.titlepage, div.titlepage > div, div.titlepage > div > div { page-break-inside: avoid; page-break-after: avoid; } div.preface, div.part { page-break-before: always; } div.appendix { page-break-before: always; } div.section { page-break-inside: auto; page-break-before: auto; page-break-after: auto; } dt.varlistentry { page-break-inside: avoid; page-break-after: avoid; } dd { page-break-before: avoid; } div.note .replaceable, div.important .replaceable, div.warning .replaceable, div.note .keycap, div.important .keycap, div.warning .keycap { } ul li p:last-child, ul li para:last-child { margin-bottom:0px; padding-bottom:0px; } /*document navigation*/ .docnav a, .docnav strong { border:none; text-decoration:none; font-weight:normal; } .docnav { list-style:none; margin:0px; padding:0px; position:relative; width:100%; padding-bottom:2em; padding-top:1em; height:2.5em; line-height:2.5em; /* border-top:1px dotted #ccc; background-color: rgba(240, 240, 240, 0.9); -webkitbox-shadow: 0px .15em .5em rgba(0,0,0,0.2); -moz-box-shadow: 0px .15em .5em rgba(0,0,0,0.2); box-shadow: 0px .15em .5em rgba(0,0,0,0.2); */ } .docnav li { list-style:none; margin:0px; padding:0px; display:inline; font-size: 14px; } .docnav li:before { content:" "; } .docnav li.previous, .docnav li.next { position:absolute; top:1.5em; } .docnav li.up, .docnav li.home { margin:0px 1.5em; } .docnav.top li.home { color: #336699; font-size: 22pt; font-weight: bold; } .docnav li.previous { left:0px; text-align:left; } .docnav li.next { right:0px; text-align:right; } .docnav li.previous strong, .docnav li.next strong { height: 17px; display: block; } .docnav { margin:0 auto; text-align:center; } .docnav li.next a strong { background: url(../images/stock-go-forward.png) right 120% no-repeat; padding-top:3px; padding-bottom:4px; padding-right:28px; } .docnav li.previous a strong { background: url(../images/stock-go-back.png) left 120% no-repeat; padding-top:3px; padding-bottom:4px; padding-left:28px; padding-right:0.5em; } .docnav li.home a strong { background: url(../images/stock-home.png) top left no-repeat; padding:5px; padding-left:28px; } .docnav li.up a strong { background: url(../images/stock-go-up.png) top left no-repeat; padding:5px; padding-left:28px; } .docnav a:link, .docnav a:visited { color:#666; } .docnav a:hover, .docnav a:focus, .docnav a:active { color:black; } .docnav a { max-width: 10px; overflow:hidden; } .docnav a:link strong { text-decoration:none; } .docnav { margin:0 auto; text-align:center; } ul.docnav { margin-bottom: 1em; } /* Reports */ .reports ul { list-style:none; margin:0px; padding:0px; } .reports li{ margin:0px; padding:0px; } .reports li.odd { background-color: #eeeeee; margin:0px; padding:0px; } .reports dl { display:inline; margin:0px; padding:0px; float:right; margin-right: 17em; margin-top:-1.3em; } .reports dt { display:inline; margin:0px; padding:0px; } .reports dd { display:inline; margin:0px; padding:0px; padding-right:.5em; } .reports h2, .reports h3{ display:inline; padding-right:.5em; font-size: 14px; font-weight:normal; } .reports div.progress { display:inline; float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; margin:0px; margin-top:-1.3em; padding:0px; border:none; } /*uniform*/ body.results, body.reports { max-width:57em ; padding:0px; } /*Progress Bar*/ div.progress { display:block; float:left; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; height:1em; } div.progress span { height:1em; float:left; } div.progress span.translated { background:#6c3 url(../images/shine.png) top left repeat-x; } div.progress span.fuzzy { background:#ff9f00 url(../images/shine.png) top left repeat-x; } /*Results*/ .results ul { list-style:none; margin:0px; padding:0px; } .results li{ margin:0px; padding:0px; } .results li.odd { background-color: #eeeeee; margin:0px; padding:0px; } .results dl { display:inline; margin:0px; padding:0px; float:right; margin-right: 17em; margin-top:-1.3em; } .results dt { display:inline; margin:0px; padding:0px; } .results dd { display:inline; margin:0px; padding:0px; padding-right:.5em; } .results h2, .results h3 { display:inline; padding-right:.5em; font-size: 14px; font-weight:normal; } .results div.progress { display:inline; float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; margin:0px; margin-top:-1.3em; padding:0px; border:none; } /* Dirty EVIL Mozilla hack for round corners */ pre { -moz-border-radius:11px; -webkit-border-radius:11px; border-radius: 11px; /* page-break-inside: avoid; */ } .example { -moz-border-radius:0px; -webkit-border-radius:0px; border-radius: 0px; page-break-inside: avoid; } /* move these invisible fields out of the flow */ .example > a:first-child, .table > a:first-child { float: left; } .package, .citetitle { font-style: italic; } .titlepage .edition, .titlepage .releaseinfo { color: #336699; background-color: transparent; margin-top: 1em; margin-bottom: 1em; font-size: 20px; font-weight: bold; text-align: center; } span.remark { background-color: #ff00ff; } .draft { background-image: url(../images/watermark-draft.png); background-repeat: repeat-y; background-position: center; } .foreignphrase { font-style: inherit; } dt { clear:both; page-break-inside: avoid; page-break-after: avoid; } dt img { border-style: none; max-width: 112px; } dt object { max-width: 112px; } dt .inlinemediaobject, dt object { display: inline; float: left; margin-bottom: 1em; padding-right: 1em; width: 112px; } dl:after { display: block; clear: both; content: ""; } .toc dd { padding-bottom: 0px; margin-bottom: 1em; padding-left: 1.3em; margin-left: 0px; } div.toc > dl > dt { padding-bottom: 0px; margin-bottom: 0px; margin-top: 1em; } .strikethrough { text-decoration: line-through; } .underline { text-decoration: underline; } .calloutlist img, .callout { padding: 0px; margin: 0px; width: 12pt; display: inline; vertical-align: middle; } li.step > a:first-child { display: block; } .stepalternatives { list-style-image: none; list-style-type: upper-alpha; } .task { /* page-break-inside: avoid; */ } .added { background-color: #99ff99; } .changed { background-color: #ffff77; } .deleted { background-color: #ff4455; text-decoration: line-through; } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/default.css000066400000000000000000000001231305163227500300140ustar00rootroot00000000000000@import url("common.css"); @import url("overrides.css"); @import url("lang.css"); systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/epub.css000066400000000000000000000021101305163227500273210ustar00rootroot00000000000000/*headings*/ h1, h2, h3, h4, h5, h6, div.producttitle, div.subtitle, div.author div.author, div.translator div.translator, div.othercredit div.othercredit, div.editor div.editor, div.contrib div.contrib, .title, .titlepage .edition { } div.para { margin-top: 1em; } /* inline syntax highlighting */ .perl_Alert { color: #0000ff; } .perl_BaseN { color: #007f00; } .perl_BString { color: #5C3566; } .perl_Char { color: #ff00ff; } .perl_Comment { color: #888888; } .perl_DataType { color: #0000ff; } .perl_DecVal { color: #00007f; } .perl_Error { color: #ff0000; } .perl_Float { color: #00007f; } .perl_Function { color: #007f00; } .perl_IString { color: #5C3566; } .perl_Keyword { color: #002F5D; } .perl_Operator { color: #ffa500; } .perl_Others { color: #b03060; } .perl_RegionMarker { color: #96b9ff; } .perl_Reserved { color: #9b30ff; } .perl_String { color: #5C3566; } .perl_Variable { color: #0000ff; } .perl_Warning { color: #0000ff; } b, strong { font-weight: bolder; } code.command { font-family: monospace; font-weight: bolder; } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/css/print.css000066400000000000000000000003001305163227500275210ustar00rootroot00000000000000@import url("common.css"); @import url("overrides.css"); @import url("lang.css"); #tocframe { display: none; } body.toc_embeded { margin-left: 30px; } .producttitle { color: #336699; } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/000077500000000000000000000000001305163227500263375ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/1.png000066400000000000000000000013211305163227500272020ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<NIDATX͗=haS U3j\䒎-p A2v| "n.N.mn Jq.dXEPg^LK;}<{{3#LP ?7dzEIH (} &i$%eJ)"~ `A3o _d\ۙF{LKmԶW ,7o/ "!"!^&\̵91qRO+KL{Նh3vn'O=eJ)?/YS\8˔R)>`棗$ld_q 8iN٢ >m^dz$f#Ӻ~U-,j`)O.ޝ/Ԥ I5@}Xܸvģe|?V y'w9ãc$PXj 4~<@(R 4vX]LPX]BV3 f@au cT=|]f*+LMgz⹭# W7׵ȶ޲s;2P^miSHȴpl$dS _ ?B1UhfTb&IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/1.svg000066400000000000000000000024721305163227500272250ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/10.png000066400000000000000000000017741305163227500272760ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<yIDATX͗oU?ve+ ]RvK4/֠M!`"`[JD @i>!lڊ$,ՈhXIj1XP)}Ι{=Wh)%dI^&GZ%;: M4ZL#(Z(֧( ;xЫH@A" gԾ{`V,P<ʉhLρAZH%%e ,c_^ʖE + Yrzӷ7ܳ܆k  0fP0xk{ W}ʵ_us~+o _d)u29"j#u!>8m{@\kum9^ӛM..c˃au$^$XMۖܗ%v9;w4Qp/q(Q8[Sཏ/{ x才冤}#E6v΍LbȣUOD2ĜeoٸYp,w\Ԅr!_L[cR2 lN]ELR 4vv~Z T\ UZb6y--| =jXnλٸ#d lLJ^x R}q۸8G@"ȅ&ػs;O&SE6.KFM㜉^g!ܐ̧8#All6̟sbUs[c~Gu1Up 8oJH m+@ZH՜zV+'B.O$wܖQI!Jv5[Mv/ҏf'JIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/10.svg000066400000000000000000000056661305163227500273150ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/11.png000066400000000000000000000014571305163227500272750ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗OhAƿl" =hI4-ḎIēA^'ZRRP1TB.J(*!l:eLv7ɶi>7;o9)W:(ĊGh{xGEpReipYfs3KW1y󜓻Vn<Ȁn}J p2i;jLv-^8K8O  ^WP]Ln6_vBٴ (fkUbv9tېJ.`X/jws ^ 6Ҕv:v:9 ȫQVCPN0.O?tqWB>φaJLpɎ.FaS@0>z\x|'D)kmoSX ' )V148v:A6, amӃp;x>{ok.72r/Qc5\+ms/W./Wp+|/FW6C` 3o?͗+I@Vߏc@\U7I =3 l̀R (cT85M:8`r9},%:4*)3]e1'? ŌSN&Md*Qj6X.o?&Z׬qN4IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/11.svg000066400000000000000000000040521305163227500273020ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/12.png000066400000000000000000000017721305163227500272760ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<wIDATX͗[hTWe1 Z`,FHC6K;XHKQ B@P_l}(ޠւ/4i^%FSm'hLdwf<9\OZ^쵅֚LBf8TXa,E LzТZtہTcT`iB@qq;ntrBJ66IOZLy*mJ[ eZɯq!"h_Ӝ`ɟcDHU&!dcS6Ŀ܎o 'vl  -d Q'E@$ؤ,('߽yЏr^ŇwJywםכ[ Q6ue^c BՍ%y0ڰAnGٹ6JkjaϪV#'l:.^p.{x,sns/d>zW-fKy̛GV'@%(Yj^8++?~5ZÎ9zO5rat˜}݉?7ߺy'Qlo6n systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/13.png000066400000000000000000000020451305163227500272710ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]hUMkjڄeJ6cӚZD,'XTuC/Ap M]b8݅0DGpsmZX%vic%=NjlIW}?99J)J 쀽cgo=B"&Jd?J:7g !Q`{qǔ{U ?tV'Oy_I4tߥvEd`OW_?VIl",lKC~fo^1@I6n?+&h;%?w:o(,dا?:>j9o|nN!Ȏ >nN}LLcq## zsWGZ3f86x)7D^ݹQ]$9Trǣ{8вW2Kq7Eɻ/睗X@8c3p=<õf AB3x*||x7>uO?}Bb|z]q~ Wo7+P"d*?B@ZkE&!{чosuazw(lke 8|Pxw.҉n`x|#Y6q+eyn 0x=td2^ F,OüK2o A\,Nd>|Y׉[{AKC; RdҾ}8 6 ɶliJ8'4D8W?\=L(l=Q^!IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/13.svg000066400000000000000000000075731305163227500273170ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/14.png000066400000000000000000000016361305163227500272770ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]HSa4t4[VaMLjHfQ:&Ⱦn uj7B7%u%&6ufb"ҌX#Jp|8_myPJJ1)u*lir@h58 B[Pù@DoN+0;:V%q来L:%`j.`X(X}uemczl<,/a摸$hUpUrSCw6ğ\,/f2dXO '[cvtڣ}p Z :ش.FFUNIi_bU.Z+N>|笥}(N+ VKun4Vu systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/15.png000066400000000000000000000017531305163227500273000ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<hIDATXW]HSQ5o͜E-"aΨ("{J=(67 ,"^Ĵ)[(۬M==zw{VL?osνCcH%hJh 64@"-aFFi Fby`펗ij+aukgxx 0-Nhv1nH@ё%Lwd%%Pָ HO̙4<*+&؅hĠcH Yw"2 X  jT)?~OF1F+OG{@:j*:-NVcWZӈ<~n1.P{}l@^sM sn\4׎Ydq i18X'iPf0 ܸ~9;` Œ|zPۆ'PqK2` h{\.Vq'&}22:!4p//CyIZzZM2!>tAnoڐ-ng8wƛ5>~Em4k9Kô4؞0sҀ@n| nϏ;p pVZ3n7!#d142&AIPh P--+9/isB\4}Э /#J@%)& :yK;G8 ynHe=Q}YB+7Ů, ܞ ybET-o rMWUm,Ȼ$ t7U *Cq?b8^L^_m%T,ſɄ+V=e)D#eWDoǿxIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/15.svg000066400000000000000000000060101305163227500273020ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/16.png000066400000000000000000000020461305163227500272750ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗QlSe]Wtc-ˈAIjb0LLH cWI4M|&>hB$FC(&&eUq2cmRχ^{/\&;'JQG>ơΞ Bєf RLhHqbPG$ט"-x@cqGo}lY}kG0R<#9i-5=rD*܁$PV;J_X2o* 鱳u#,$mm%xzQoŹvs6뿔btdYPtf4թ,5>bsE.wf8őނPgOsӽ4^7}{iL•(ݶ3oԹc #EBP)˛UV$o6 Ֆ8!@E)fZ2N|dvg'xM\ vja!bC} ݻ[p;LJĬN.cZ0|{Z돆@5Omc۾/'nie_ǮT{ݜj H?ƧNLJqؗL/N u#[#LN̨)ŕrCF,e.̉pJ>:Dl>b򺌖b66owedB] T(O긖>%;uU=v,"Ƅ9, hmvém' systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/17.png000066400000000000000000000016071305163227500273000ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗_HQ,? ,9ȬnbB _w]Aw]S҄.""׊ y2Tİ!ftњ߾o.=}s!$P7B6[Ҏ FiՅM5XcXIȋ1@suW\UGs )cG̕6PxT cS Eu59c6 $)~#0VQL+?s=ɦ_1T́mCX3Z=>+3Uշgnw軔tՁQ3 yKT /^S2Z[mܒ;F{YS^P f@H;R1NŁ]ۏ_a2++޵eѕv M*%z4Ng=q%??}a+g&rhbϤ8H̀Ety>@e?LڝÑI-&48<?T`vo&BZ[zܗ…l>xuh Lkq6IaEUyγ5j@ H2Q^|/-F'kV (+rٟ @{d68񯳸ǿMh ͈ۨp:F-ۆ.22&צ[ ڰkj\ DqwI~HiJPzɄ7Z?s[E&z$iHP&tIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/17.svg000066400000000000000000000031731305163227500273130ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/18.png000066400000000000000000000021071305163227500272750ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]lUX:Ѝm!Hס12Fp\d1`@p!^xcBF݅CBhF نANqӡmZ{X׾RW9y9sRdJ&ƳFZ4YP.EQ֋Gc)by uB@yy{^`YNJ5Љb4~F Xu5nÛ&O΄ ՟? h~ -|QBj NJf?˿hO0:93;O^G&.G)VaN(ʷ.+(n@ u} XjX\5[J|3|=4_Q(- 4:Nq/UPy͍IYt\2014f)qƞ-a)zE TmtS98h9@i^ Y W@VecHϼg ,ZWf0{r  {{N~㓜4Sq \gﳏ.+f _~;R7OaVجl{UG穋 1HX;k^MмY2V0yUZRwP=")6 -;6R5 yHᵫ6'.)EkWci,Rbc+ Df8JOfefӳ W  ׬ÞJ׫O~߅/\1-x-,QC\mYi)a=dtȐe[B,*} gN:'0]xJߪOӑބ[$ԙÍ;a/z6!]W7a ՛5;CM^!ܞ;U?\LٝTOHyS{tIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/18.svg000066400000000000000000000117061305163227500273150ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/19.png000066400000000000000000000020501305163227500272730ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗_lSU?nJe(S4ي1$Lc5,U g|14`b5 /e$@ؘѩdQdLRf3iڵ^X9;wRRJ+)9jE֎P~i DMѾB,A[wPh)p C;euFMOĆOɤu@וXǕԾEsMv*@=PHBLX n?ب9R,)G4y/m;m{=n*uMXfmJm[ mAOy=3fQEήm<>^׳6zy'hj@Jŗ't4Ulzfg j&*>{# 7ן\hōڅdX3N+=޲5y} UHxy"t<[[CCd` Hoe{=kk`Y6k} +g{_`z&ƙߦx2@J[Bwh$SD}d`7_l \2|a='F'y釳r,kok޷Y-~.OGݚc@$p5~%R\.,-aZ]h,CMRRſJd f@Zx{vlDn}X8 [ 4s3Օr/Q>}@2!SFMc* aOK8Sz^JjDcqfnڟRJ systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/2.png000066400000000000000000000016171305163227500272130ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATXW_HSQ٦+LV,0( ){ћ@("  z(zԩ/ * Q4HLHCCc41==n۝ۙSt9}ι~0ƐIЌPf׃` * .7&9vθNH˄ {2F8c e:MLh$P24m@@x˄ x&dT2y,<Š{4@V'}0Xky?\T`oY*F ZTTS-!wz]%lyxI= F]`"Yƛ;g);{-j?ӷ_5CXEdE=`i}J;@RB(kRQ'~ ܗ3jάhuh(݁/KR <:=@%n!hrԸj9 'RH *%\4C-^n|\S7/IA)lqT_?.`fn1ݰV#\n3؁",.q&]Tģ"0m#!0OGGNy|$Z4dD;pʴ?5E^YVjber&5?1Җ-꿀1B{sb ͞:cE,M]CknN[tJV@5 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/20.png000066400000000000000000000022231305163227500272650ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗[LUK! P B_(ZeFH-Oc 5KS}0DV.%QIjF1iڴ!@ kV[Y .v;;Hl3??ߙ ~]eU&]yPƒԆQ2oLt7 ;xmdHOzQ*N#Z<~}BG # 5]969F{ 2a1Pv'WڂnjA[EtXzA 3۬g(on$9)ٖEEaI+*dlNZDUyKwIJގ) Oj:ċo]XM3PUF:㠋NJp%K~5}c=yԼҋ;@Uq.i* {|}t {DVĀ&]Ѽyo4}~{fHpx|g?oKZ ȱ2Cs~ J? d`jf^%-Ԡe\1 q@%7%j|t{SC)^y}&Qi`U)ѵӣܜ }l`(CȂ(V<+vot~_g;&;INU$72(ZJ4PUFU[3s-HM.X"6++ȦIlRr ~s4sa^U`- ic'6hE&N~ฑwY eoi>{KMqZO 2v ];8TWJsNj~u7f|2o@06up  systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/21.png000066400000000000000000000017471305163227500273000ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<dIDATX͗MhTWsNiE\XS1V݄f@C#M&XJc3*)tSjF4р6E[ (.D m2LL9ܟ΍rw9;ZkJ YRuXHpm/(AZk(1B c~9)x^!7fZOn}pnQ+aEOa72c''l7h%V?xq!Uc}įE?AJH3 JH?w#ҁZtx4́g vku(/j*~ق*/V,bYg-B[GS systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/22.png000066400000000000000000000021661305163227500272750ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗Lu_KS<"֘7j&]֒4[[ʭ??ܪ ( aVX3ڈf $i SKϷ?8{{.~?~B)JB:`]Q^kG(t" _QPˮHcHJēBw*%^X2`/ːV_#JD(l~^Yu?`[T*M~ ޕ<3!u26cq҆k\qTlt3FUdmHjG . kc2) 14΍Q4*%vwnN|6eMg;z:ݎoF-.q>ě~՛/Q^kuږCU2qm)O<;ps&o<$51M)F`ʊB@(y18 rbJ{[WYP ׵AyAbL:YN BEG4.i{`߰~Hh 645=$Ghh18m3v@v;.EH)M]c`pyY|*JgmR<,&1>_oѴp!Z05PΑ ]DSQ:*waKYCoCxk'É`v( [OUY)iW.xkxR1ObxluKrB,xF'6373o?MZ>&(eiǑV-sSS(%lǺ౲7xd0ZJyQQv#؝ rgi>> lB t? VxP+Vb6Bj;XLx̓˃b#VjX BA IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/22.svg000066400000000000000000000066751305163227500273210ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/23.png000066400000000000000000000022741305163227500272760ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<9IDATX͗}He{>\L9W9)Kd#AIQ6 hQYjsU#ɩc>qgsb{u=!F9WqN埁@'<,a&ogpLË '=bػ{R‡/A " jJY{N34^z&AQ8M~cS\Yc6RD(?fԅFZ)7y%Lδ͚8U4Q̃3əYbY0=[gh/_ ƀ xۨ~``)t0f!|FSpfs~-(DXDEXpbr.F@Fu} `KAs47n6ol  tZ nK(ji4h%쨫n b rDU$VvY!IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/23.svg000066400000000000000000000111141305163227500273020ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/24.png000066400000000000000000000020731305163227500272740ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗_L[e)e`0\d8s&D:Fd[3 aotK4qJ;11bD%tL2;NXu/dΙ **|^+Y7 jy~}RJr %z-!ѕ B(RDQ0RidSd<**;.{*y+ST)F?kjkwk6p륮],bB[Fu@Z|pS B7;+S\1ϭIWu;leZ",K6~J*XG-Ũ.9UŅL]LR&cueUxOKkWVSҥAK6ۂky C?Y . c 5!?:e{kp g$4!xdRm/).๦ZP2@F+7a DcU"wd\ Zt%h]Dkq˳$u$82q^_I` §90h3P5|^V7ione,CGFnPԃywt'(֡⤕q}SM;{*V9s~FLDN-<-@ϑ1>Bo/>~&:|6op[CF"@]խt=BGQc嬸n@ a߾1V25BL}kj+[X: 6煢OEoqN;辎B705y,7"g+rv5[Lvhҥ!IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/24.svg000066400000000000000000000055401305163227500273110ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/25.png000066400000000000000000000022361305163227500272760ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗[LUgv.hz) U*[L A%ڠM d}2x<-MkkbjD Vp2LJ]ݡRә9o?BJRBYRuz;*B*ntp)(jRk,ioL1!Pr!@ŗ@X@i2}dbjf :eɎeXA )C³l$)k\բbpt9a6%J?`xlNJU: @x-ᅍiXCR*N|Eueޣ?ih!.r?X&A!xyZܜQ@zX g@B00?;s]mN|T3i9 8bwo/uj! Vj Q)>gjSú(yiOpڴ;7Vt#\Fuy1=^oh EM7?Sq}fXRra9 vG,+crV\UdUq 6o>XֿԠu[y_8QZZ x@(jYqjz1|V(jw'A?z,$Kv5[L,?2IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/25.svg000066400000000000000000000073311305163227500273120ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/26.png000066400000000000000000000022771305163227500273040ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<?u|6ZnβTr iH!N9Os^1ys_{<#,%%UwCW"d R6[G~)|G*<%<dSJz[S 2[ѐ=G0LUqG{޻6vRUNy)ҡ ߆[(j a<Nu`!m=GA d0):LxSl2*1qk4`]JQ펀}j¯DރdRk3+&{:tw|c߀ثr 7QRQ5fAV?/9!׶ !A~K/I> Y?kj;GoaPJ]S>[uy$Q37š4=Ѐw{ S3T_&UYc 'u)=*oĝokdiIt &^!"+%7aoN><`pd\/~-m|b,xfT>9{q$Eb|G-Uפ;8_+xlJ9ʯn ќ3Okú<-蟋9/+[\SH5sksMү5k@ ])n=B^HSQ9`2z SU%^ڽBOkրrH1 ¹oc'ef#WPd.B=FR|4 h^-ﭝEXL^ʆ46ĩz~`gm|L"-fB^C2:<g systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/27.png000066400000000000000000000020761305163227500273020ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]lSe9I~auSu2d#+o؍& " F*`Z4b憩,1,:FtiV6H_e1)3W}~-+rt~$ systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/28.png000066400000000000000000000023431305163227500273000ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<`IDATX͗klU]]a (c$fauEaLt|`,f21B2}P(Nf́d\$0PҎ]JG{۷Ha|zs<RPu|#EU&K8].p!&o^H")'P (%§29[u(1)AXZ<ȦyoEʔ&w[Hڅ ,ڴx& 7gKSo3X^SQt4n8= W'A$isyt^6 wMÞf̅Kq](%fwG9jQK+K^<9,M)>5igUU#2"cwyȉ3j51 Nb٥T<, B|_ oю XB06m*b#g_b^.S_`RA6jfk#+ᵺ>Vר.f|^'>F˃Þ5@{M)BF @ qh@F[6K<Wy>=;,_~5ǒY%xoϑ7wmX-ff<8YRu_*,5q\{B8s8{ E3&08ﺼzkS%Mw)libq,&j&3ڑ2g@&dUUBoqWU_2.z`+R<&)<>H[bLb͂G1II?ص$Gy 35[+82S28?`4 &%ꁕϕbB00']4;BW:}'R :{sT G\Q-8dֿ=,}[ZtL=0I.~yoW}ɖe(lV t^Fzh.6.7-hcoa( 4ﴐZ%g4BjӸ'ᡵ Ԧqk2V=\{bf:IasIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/28.svg000066400000000000000000000132271305163227500273160ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/29.png000066400000000000000000000022741305163227500273040ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<9IDATX͗Lu_8"Flh2 $.Z0XĀhڊlkS@ʆX(i12[!j ܉ Os<)2zu}???_*s eNsj R)@hr '@Gk+{# ANe}@z}*^{yF7(fATqI5o=PqPd},34G(rQ] )y8\g 2Tރ`>T֗Mh[+' !f.<ˊ$liV*s*KBbZyOZ*Ui,OImE&9RP9>nxgr [ol*eX =xQ'8 X^)&59(fsyF PK™{NnhnAgau: 16TZs75$'D#hH 7tcs=;FXk_0V%h=3c> E2p '.c6'-Ћj0;o|v,\ ՜ŧ ~=/H*qi]& PɥZ~y?/dPr[ TjqpF~͑߃m /[k?UzO+oI@N4l-DOԷ17{N,y>|Rr^Dj*bR~H`px 7D;#`o.0 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/3.png000066400000000000000000000017101305163227500272060ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<EIDATX͗KLTI*n7@{bGz0b|  Π&,,@ƍ Lbf3+qaԅ10 QcGZ'DZ.G2tW}!0[:UuZSHȂ\C]5֯8Zđ*}mGn} 7KȅB@K1E,H@i$..{U8hkׁ0T ε`< $.kdQ<J#J#q,Ȉۻ<<JR8h?y:jߟ ;ؽu-^(?:񉿮ݥ+GGJ@j !ιRІ ^9ɈU8{x/˗: *-.bVˉɯj@x-vnx ,Az )`::|LG&g,#;8>eŔ/_J˾0}Ɲ}p|k6T;sV[ y]DZq>8RHWGJ|sOān:#<`˸Ժut>w">HG@xޡwdsznpgdJ *dW)xٞZ*VWz Nf[ Nf*{Y1>/_ʭLsMkiXeTl6ؐɋq<$XBK"?o2b-.Zv{:̽{ VCehᖶȼK0'wޕT8юA!U0SB|iL\Kʼnz~܎=LQُD_eI>IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/3.svg000066400000000000000000000062551305163227500272320ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/30.png000066400000000000000000000023631305163227500272730ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<pIDATX͗klUw:.]ҔMB4Hl%!Ԃ&XLcT m5$&D0ڂF01Ѵ4$M)A -iJ>>faJ4ws=RPPƸ!w+ܑ!B;w>BRP\R%[~)Ż=~X(v)H5jZ׎n-qOQxW_>о`"^LD()nxxPJI|:j'9@Fw,yP\Rᄀlw:[{etXeH_a$MӞ@⺖*:9jj* xi[+]]@ zC.ڭ|zŹnî/[B1"4"PR\D9_bˁw6QUMz룼RѰ;&Fغq-d8Eb xˏ佯~/o}ͬ_(gr)?ç:yiu4W-Q+*@WA;tƽ>nݞ`Iڰְ.zPV:Q+µ=V5 T;OfΝN@12:5 >ӕeބI~/~w\NҜO q_@fU q0xOL2@ߍa} J6dg Oj EH3G`ȍ792`E7vRRn31aűŒ?HӎUM`,8 =D# P2K3A_~0'4[S|frV;w#cӉL\QaI[]1;Ie#L8'Z(|Jvn!EQxB΅InbW4R,*{hSgb);^SKS[R,m]WwR}53]%@cmXR;jYv1l`d/qZtA [xvs.i_]7bʵ MuIDZc%+,Y h+2 JOe}FGJܪ%% M܂ B^>ZSqꀮ5>{"c XPj ?W'kNVGڅWD3_?܌%1ǒO,?ɛ"LpIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/30.svg000066400000000000000000000114561305163227500273110ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/31.png000066400000000000000000000020731305163227500272720ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗_h[U?gӚbׁCu_ZZ|e"tk+ &eĺEdnK]W!j(5,OҤ=>4MRtϹ?w{~w픲t@㶁aBv+4_!@щrO!O-e;-xѯ7FEFLp㺦N ޳ϼzvԕoEB{+ہ4{IxF)Ŝ(pw|bY`_fiOG6TTm>M2E _2ؽj,W3JrCJہa%HKR4SHoz;[9:+;q.o⭗;[U.8xiFցl }G=y\DIT =v"xg9vk֒fE@n0Y5n΄RSpU|;_v;8ݿcƓT 6]4E]ȷ[Mi\;)M`!௻ӮҴP$ߠzX45UNawC wV-B(?Hra`Vԁ/fǁAN,ųsSpnms7RU8^LX"IGk#=eJ9|;UVzs˕r2H1WԠՔSmf2s@F*폛 tXZYe!ZXʒKۙݪrp;'^\AJV?TN}<ۨ8L1~Eg_ c\ L["8q;l%*QA?68+%!'*nA5oM*p`\_P(zBxJ(zOh%~fpL(z'[F rbmOm_Kx {CIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/31.svg000066400000000000000000000076421305163227500273140ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/32.png000066400000000000000000000023341305163227500272730ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<YIDATX͗Lu_/py9 IHh`̜1Zn4礵V-W-K Q?kԶ$H+A*"L@~sOq(2z|=<<!d9,:rzQEB*YilO=Hу"EuCyaBm϶ !RhUJ},ʁ U ^ttޱ/˖%`+Y Eͯ?V\`<E)u[0'H[L7?G:2Tt%xlkg!HZM\T8St1:Ĭ4ps`a RMRd*f5MO|x2{Ac1ں8|7:MAzQE~uh5k626A\*a7b&7% YXLFT)nu nE?)-Ԓ?8}^_mR1G9. +t%cscw(F'xٹe#V3q&:z.4jpW oܕ6zh́QlQt@JxM[sF *Y"` dB.HT2֐db`d/.4ln zn݄AHky׵-SUd0:)6y̽>Ќ Fj{OQIS{/vY k7>đ(_78ui> ]}üV8z VJg^}p[,iUKga6R`?؜l%*R9B'/?-&()fLkEDؑ+`D)\Xefpt#/@LլiNfS E5pxf"TǡݙڝIRddn>}tDGcsՂw=!ʊ|_Ou % {:{(l8 EƽD\ r_,v5[J,?ۀMΑcIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/32.svg000066400000000000000000000111441305163227500273050ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/33.png000066400000000000000000000023771305163227500273030ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<|IDATX͗oLU?\*xkeYZќJb-VjekpCH lڬlt ȿrszrEFwy}wRJʼ꽐j])DH' B.)k4<3&xlm巳2@j`O隺e{6jǾ"+G}O%z{ f)> PL m=Xƛ-a:qG  v1A@dR=>S62vsGt!( =:8jAlZƵ9,ۂ|8udeV!'3 _wz:z3.A~Uma|IvQnEױʋJJQXK;28Eޱ.RZa) |{7'k:NHlJ|9[;yG._不ߍ"oy XD}C!KCЕpc~t^n pw(:=kKIۍ><^?QsBB343Zpm$Dzau&$<|o=[4˗8xy /G(t!Z0GR8q>9!̪zT;A+BGhnF> sZ1+2 34v7#Ʈʵl.ɝ.Tȯm9:Je%.Mܵn*??bcH +oBpf[6f@܎5δ wiI 1y^B@t3!Dkʀ7rcGp$ڰ.]7#eΔ@699u^#BxG/hɝb8S<^?ě{Om-۴" b3lVl y{#r|5 ݂M!O52T\S5uyW &-tE/P/ systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/34.png000066400000000000000000000022321305163227500272720ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗[L\EsXn ]H#I0EQDU&&FKI-Hm"MӨA|hj6 PJE.ʲ3>lٳ̜o!d5*;`Yqau!)%d~!EBH}H` !vI)7rY;g* )#$~NS-U=Kp+JD~CB*Z֜X@Lyay8Smc3Ő6UcXԦ |`@`a0]) Lz90oA! =5 )j/ئ?`YoWSX>i6kϧ};s%yUp .Aaus少f2[F%<^.h"w&L! p) ^{?tW5lq_I|gN:b#HBnܠ߄Rj\_x' <漵:97G #m% JJb=IYyxU>;n.@ǥWXw7 ]zxȄ'طb1?za]MZ:CGg|gr[h%s_b!G'8{ 6G=IA=[{o#zzĸǝ$P}fR!I^˽8(q.=9§6>\;טHF\1Q:Lp=g:2:9@= LL{qn7%B|ghphޙoF[^LbƧ -FY[PiL2(s1S'[I͑ ;qdҗl^F'!.)f|eL@aMK 乶CՆkjV~(wh6U+Nfփ5gq{"1P=\U{b՞f+UվjHIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/34.svg000066400000000000000000000100071305163227500273040ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/35.png000066400000000000000000000023231305163227500272740ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<PIDATX͗[lUgn/]llb)Rj6&AMD &$_<(Fb4 Dj%P0i r 4ֺ-vݝaӝ Ӝ3|?BJtBVvv/[j M)CH7 EkBck6N6,*!ImRwv) (ڸ?Wtĉٛ5նu߆{[{˥|^hlm@Va%$h\%i"SDxѤ0-CŦzY#ysf1ەpz 3ӰےLPOJ:~uRӱ/L(NY4-*~;/v8΃?r!(R[D:$ۙF`8̍~Q -%Yb" ǸxB Cu-\DT g%5F9|娀t[\}Dլ%YDWC\(re<@`s aǖ57hД2+Vv[Y4\X<>N^)gMy>4_?? -,u&83g՟_Y_-Viu cP\ah$LYa._nd:gW} _>΃mPמ/`̻w,J $,[öU%l@82'ζe!Ϧחcv@ ObT"B~`\3qJhM1vV>i qg͠ V<ƳsII9?KoںƇ@cc͔d;֕c])^_)[m5  //GPt]Op&Ǹʨp8B.F*Yid;䝽|p_~!tr/WGIi39ŗlF̚JN#a*)ft Yƀ02[kB6_ܻ,˴hm=}XnLZmV D yD(ZUqj^سQ(Z A?񘶋I"j01|KIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/35.svg000066400000000000000000000116001305163227500273050ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/36.png000066400000000000000000000024061305163227500272770ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗mLe9(naё B6Q7jcķղejs䖭r. -˶ ʱ#p8/݇sx8/y]}u-$eLcR_hJ%BW- ESmS)rOmdr7P2E]R.o:@z)*H65loKX.5(Bj.+5J]Qnտ1vȯhڄGټsb!{wNqC{K}Iuh݊4̵~1 )yy]A7Vr!޿TJH`h DT -belar_\c>vjא8. hKRl9YFRH7i`T::h-66uпY*_P CX2w\zSqM$Mt;Wc}RFt<Wxj +zY Yf|(M)Q]p37U8Q]9c{Á0f|PDM&!Ͷa3'NqC(^tIQ systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/37.png000066400000000000000000000022031305163227500272730ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]LU3miХHRk.ȅb# MhIK#ꅱzEc ȅimhh RQCtBng.3 K߫93|;ߙ)% e]˛YT" FΞC}+)V2eBJVw@J~o{ӹ5p<pP86zN<:GjY*(Bkq@X' e ENd"΀|Ŵڿ<^mT;qP1Am!A@A^6Odm`z [6YHK1-:21㋌{PK-RWcD:/_4ɑ*yK_|+V#b 2b\+9V 3Q4R&<͛5-)Ǭ/{$3 d-R~wC\maL'H3(knыL^)+@BU.\q4,Bs_%;x hJe 㙐j6aZՊB Y systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/38.png000066400000000000000000000024551305163227500273050ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗klU]WnlRd̍p)0 "f ?0,F(01*$_M. #! " & c iYƀm]vC[¸e?y9y9BJXBSu@0yv,EU Xڐ EE k[*dbw~|,5{mWd?t+nyhw/r<BQ.ZW3jS@c+8 6%fH8ԡ,CEz w2LHa97ۻu j؅㓱$qtu' )ŲK-3Yp&i&cpl7DzTo>gW-`Ĕ`?ml_õ[r 4J;|j4AZ; u1-eUl?"~ 'tq\]n2)l{oBhЊȀo_7 z9qtس2%N05J,]xS<9z-Y 4eU)8~^ @w~{NX5PGdts^JOGP X`11'ı iV3NN^9؟`qA;lVhF5=%|—Ut:c4Nc 2qSWQi=p;P{v݃ʹ}C 2Ӄ1o-Kg%2/AaڢܺÇ;Of1?:ȥvrmilXZ@~y(BӔ~r^AUɴD j"Px>]m`NV:DN]|UJv"FQ?ۦ% 11 qzhY-Lf 5)D9!۫55RRT ձiE!Vq! 7cjo9$8skKCQ~]-Ïa{A^y5h ϱbЏl;Tw#86o$>x=LJhhjcu\m o9Q Dی!HI#ޠNWA0b2rq<`gwu\MP}&oOw4nZD)GW(jYiNxa׺ systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/39.png000066400000000000000000000024241305163227500273020ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗]lTE9vne)&(b(j Ҙ (P0ʅ^h1$D܈mV5JQnuYv=E۳{PR߻973)% e\ӍWkD%h\t>CZH{C}Xs, !ec%xT÷$r"ŤG1f?U{znX/5SyS Em۵y_H>PDT[dڹ«2Rð 8㹓@?K P2) 381dZ#VӪR,s XWPh%EG̓ߡi9yه(v4Ɂ;y$QUK* %ZXI>/v)#4L/gu rmfyQ]vB?@QO-`3,Ε‐K")rVNw{d7QUÞmX&*K'>?xN9V4Mzt_Qxf|^9?H #4enpTho ]cݗ|jexv L4z;6FB)݆##Pvpy` g S@gIu\"L+xbr7p26s&/>9LD|%+]u´tks+رS\4v_iش27<~AC@055bU^xL;7>Rf[M"*Oo9L\`0G;yyŃṒ(@>4#U^fY‘c` ĎC?$JJ'4Μ7&"!`t EmbY497300rmcmށ##Cs+ټ!tS⍛kec6zO7r%;oFHg/8lڇ{<-b9Pn{SZ.}vH\+,Y_ /+l @`O @n!O^tM5wϝ=u=Bjm$ EMל= voA?z$4񿜠! IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/39.svg000066400000000000000000000136451305163227500273240ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/4.png000066400000000000000000000015061305163227500272120ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗?LQǿw"І`S$*I[&$` `hɵP`"A0j.&\e9B`-8]w-~{Ϸ}9G)JJ i G= Cy<N3cњdd d2Y,ʀ)pj1ά>/ĞDߚi̞OK"&w. P,E$&g33l`"癒9i7xg?Q Օ7 4L5:nzԅ.7 G=0>!0wӋi3Uz]SvXi2k5j \ⷴMT,pdm!F^?'?jPh@W3y+XAjVyU_{ng?Im qv ,"V7q^TUXzB!gr:47֡Nɍn7+˴SwVؗUlt8i`]?7}fzٻPbԲ EiY4sfLsN. `D|~q4Yqu뀜{HG 'ֈɝO;Ӭ+`܎yAycZ%;ddGTO^@3IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/4.svg000066400000000000000000000027011305163227500272230ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/40.png000066400000000000000000000021711305163227500272710ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX͗[L\U9͡r´(TD$Fb11`5_Llɤ\1DFjLP/-Scat.g0̜SJA֬?k:B)~B+;݉sYKg)Bգ*ri%fJvxƷSlܞ!{@6N)%|] (=sDj^&qla=5wc寴(]^2wD zӕ!8vIz3=Gd\h?y,z(,8,e(`dFbGnOWV.9с+# =@e.S(Qt5@l!(=?=͙χgkqv׷8< tE?C&W 9v7_xν0-oE~/GrR) |ϴ>0 GIu&Z6ʎ\h{xKX%Gߌu^kP9.'<[ 9 ]f =dVoXX^`ngسRm.\9N^k'#kqXi)%:` *|=- ' ߋ͂ ;+~ٙ̚ uTƷ';É甛cgI甛s @Jr< Νddk1r,106e+1P˼Ci@='Ѫsҍoϟ ~V]\["'=؛_\+a# systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/5.png000066400000000000000000000016241305163227500272140ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATXWMLAf)?RA@X4$&z&p0!A&&|CH C($ 6k ಽWΟčqB" gS8u?Qi)F}1Tf-AKi systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/6.png000066400000000000000000000016531305163227500272170ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<(IDATX͗[HTAs<^ˌʹ hضIPhty( QCQtD6 (.*JLg/uFMӹofJ))#tno Jv* BPCm_CunLjq;G_45- K 3x%icɠY\=iPҸN _y]M:MD& .,5R|Lcc)<pP(Ee 4oF4`,td3ݏUJUBSV&t2+#-m6х<7S Ny=bVFC#]W:WX"T Jض޻m5,?0‰K- systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/7.png000066400000000000000000000014631305163227500272170ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATXWMkQ=5mՖPJnb,4~,"0EqD\ƭ?mlqQPnmEӀdPC ҐLsI&!̛9;k:^$ 66Q`<AKɰјdd NN>!^e>1, .e,<73mj/ A{֦}+ o)Cw23`e-y1<(]2qRckYkU.B6XUpۻ]Arvhꀚjeqq*|\t@oxn2e~U $T D4c݇;U0"ݘSnalyK)f>0"19s,vSho`tx=cDIKNC.#>|3C-i4n\DbǯbfCGqvk 2NˡMsVn+?n2*$-y_8F^F!i mT@ϱr˦AS~F7# ^8|[j  xp2 [xHxjNKVµi 1D\?mLѴY#?,h[IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/7.svg000066400000000000000000000016571305163227500272370ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/8.png000066400000000000000000000017411305163227500272170ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<^IDATX͗]hW$fjnR[T6J1ŦK+("l0Gj݌MJ.׺!ZJ?i٤ 6X&9g&msj-y~y&Y΅v+)Y?nq>#l.`>oW Xh8L.o7/?B}9~HTǻwTr-2ZQBA~.?vQJ{&` oa% HՓi‰KWtH6U XX,Тjy#7Cݙϵf9t!C5,+^oVXtuhݷh- 7i>k鐼c<4'qZ?iiy, hUܴ:"& P systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/9.png000066400000000000000000000016551305163227500272240ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<*IDATX͗KHTQ8IeNDAN(5"ZE7-." $6E$eh2sZ4sQ_o=ߙ5ɔL;`Φ2FIB{-ejf֔!. 8:˰PgT*u5|!\9))P@jȍؼw^p.= ?۷ @W@I)=; systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/dot.png000066400000000000000000000002551305163227500276350ustar00rootroot00000000000000PNG  IHDR TKbKGD pHYs  tIME :IDATuɱ AuPF> 4H|yIc{$ N$$(=w$Aݵ^ _ )d6IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/dot2.png000066400000000000000000000002001305163227500277050ustar00rootroot00000000000000PNG  IHDR TKGIDATm˱ 0> p@Jmq#" d1qT/aǑnxz IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/green.png000066400000000000000000000002601305163227500301430ustar00rootroot00000000000000PNG  IHDRtsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<-IDATc(🉁7ӿ0(\l,t$P [ ;, ~NIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/h1-bg.png000066400000000000000000000010651305163227500277450ustar00rootroot00000000000000PNG  IHDRdmMbKGD=n pHYs  tIME 5-IDAT8UQ9GKz4u  DK 9|atzn—OMl|]/=ϼx;j30A@ ,{F,i!2kX[ף]<=*;_`vԙ;luSn=*7>7?A%AB:^Zʷ{*2y۠ns٭Ʉ~c!?ozRuI)aΪOG^"NXɟ ̾{񏏡݇5Ymmew->IiU?`9 oVQ#x3ӹzׯztj?v/Q+IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/image_left.png000066400000000000000000000102741305163227500311450ustar00rootroot00000000000000PNG  IHDRX-*zFbKGDC pHYs B(xtIME \IIDATh{lW|%i.&6ͥ%A[X.B \Ԋn+ UU ej+,l) t[Me3vq&ǹ%i4:>sgZfZA0 V}Y/Uy*7cav{O !)u =3twoaun!' ȃ.eBp{oDCe~ }l!JPt7]>&6|=۷(V5ĖL_Guu>t)$v6NAgXх`N{uaԑ٧AώouTCv"l6L}:јGD!mh/So)SZ2]܍| z7"Ğk.Cx}zDMwUݿЃ !q5%P UuisM`N`5:etv ص{ CG;G9N7C$V"R Tv |;[h=D^(D\J !2PB~" .F& Eje4㧭,h4h;#c#(\NϠ袙YOhs]>ch^xtrCn{sPH%įD6VLeiEfQh2x*F}$u/A%' 8*iw폀?ZI׮A6~ +P>{D]DDy*3|Y7uL<PA=Cpɔ\ԃzd"1.(B{ 7`rA0A܁rQXm_1It6lF.ߌmoRzUFiSu&qi] V D"  KʍtE wi(&Ug0 'gut#yPC#l"N >k r_2?i3jFĖB_Dl)v㿶 ߋ?|q(/-ŃC(/,&w.b6 ѳ["A,{CesA"n/zQ'a4:D݈P)yxڎ stXh/`ʝD!RbQu睤edmtt#R7ϙ+waeE_ Qu rɓngُb x?PAge˨{ "k oOA{ۧ'?'VYON7Q>|֮.!H$#HK)@gj[MMTTyf9iMpEPD涊8=̏A{{)u儔Oƺ(2dɢ(⏕8kٸBLw0/x$"~% Ad2y%8ѪBx~6.)?<޽8۷S/a55MD7 |"7WxYgNPh8${FEą$z5~7#&č_tmꈴ#"Y.p)O*0JTQ1C c|rTEkHPUq2gs: ?)BKLFP@_Fg5#Gn6Qdl(B;=Px]܃9Vy1Wp(>u8u ,[^$5C.@02k =DbSBJ6 ­cϟ1+ D%}.*竴{! dWNIK;$wotA m-I" f Aˡ K>0.%XD_,Iz/cRF!܂4~g1" хm^H;DS=S)DZ#3x̻jKIs[t);Tt*mAG& rԭ_ 4jG Qu T_k"`?o3`KA2I)l:g^6гrG:KTWGhOUPyqQ%B'X+W_H]Ѷ6^K!X֤ F@D"bKf1ibAS=p᪦Ϛ,;]^y}gA93gHئ1A}:x%j , y{ZB4f"!ʔGC& Ӫ]Zej[|tc&ZՈAy*'iMP(0Sw(:zhnj&P7 n/oAD˽'7)>~z6mtЌΚ:ɣ뮣v:b Plv"AU?pxzEŰ'*SI)h ɢ*FJeY|gH˺uk&jX >6=_-#uti(/zw#/0csF74 $!?2B݂Yzt5#')Kz=G䷿Ν48BJe -,C^1m3?O;PGHgAHOгiNwnUDZ)Rjj,$ʄtDIOc龗M\^GkhV"JѹDZ͟GԾe ͒A0{{W#sda̿nWwf~ Z_allRJlƶm,BJGc-^6-h =c5\ǖXU j=Bi)uԋ: pGE`=ΑE(D ;;ut,VP(D8&#RO1En~Do/-B[D%sDzyhs_/C~ ]#ho_K2"?qAq#e9P=rB|L3T+Y٪t`|֭~aw"l]ڱ]QPb_OX ;a{rxul*p9*}A߾.Ɋ-|rU: <®5B+KX󯠎==3nnCĖ"W#jnXWSfzvlB_O!șyG)+m|B,B/]c/GRy(ץ{zmCD";;IwvZh*uѝAr◷Qo ۱V<7V,l9>j榫qqkx ӲO\eZv&s DMwW@k!lqJ*tl\$#""sEazgT@X~f. օPȔUE¯i`Me雑-Żvsۊ.lCރhĤSE$Zj/Š-Fo*Fߏh MK-(Dd>4~!SfM=)wئxEV< }/r?7=6&Ҵ9lوhs.ȯ! tiԇMD.>Da& #jn>e0VQNcy@idߙ;3ŒOېb?VYZٛ`@TD$VjBދhإ" l6. PC\y ?d! bL+c image/svg+xml systemtap logo Andy Fitzsimon, Red Hat 2008 systemtap systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/image_right.png000066400000000000000000000046711305163227500313340ustar00rootroot00000000000000PNG  IHDR)K=4sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< 6IDATx}VU?yQQEeYxVVFAOoYd::4:ًQf3V:aY)ܕMIeYAPEe?}ػwﳯCd?fM6޽/o8F`.Ɍ_l`jik0å_WӚ`hiiaf۝S!xg1 5U+}̙1祚u`vaDW͌ʚ0'-B'Q< X&0?["൐p'sazB$2 #"Ÿj'&0 bA kDWcC^`#Roc1bhNP!o'1`lFd1 \L3krܫioׇ|o49`* A\ lr[յwc5NLMU# yr3k f3"RG<5ƚ8ʛ1)y%M8q ؛>Ixz1p軆Mw6p'Pֈx+8`;VaVw6/f?,® lhT /o8탒z{d6>& Qc.m&z2EI&a=n`ƣtCWQc]NVUX ֟FrD߅xiS$*fO.%uEF?N>O¾]|6v3w*=X^OEFI}~c~\.g qyA1 ox7ŲC2ۻӚhj茲*&O'CK"=eэ:?&G{RID~w]zqs=h|ѫ(JZ,HHʼn]&M<^db{"=% o ph,kPk!?NbPY'hҙH ±tѵI?.gڿ%<ukG'қFVr84TD{/=3@z6ppp1)8XϣHg%u~'Grm(Z+=˚OM38_?snj!=í#l@e~M.R623} %&-:{Jׄy1ج~}vnykQ>[8KIC-ةegsOEk- OKս`m?qD={*vܙ'}LSRo-ءlؘJI'A=AIB?gZ <,ÆGDKwvק+dЍDޗ;Hilnq:*}(W񨯣bij% \Q[n)SN9~ "m,D~:NI=w~ MlTRW`k*6j7Q w8p(Q'E>UIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/important.png000066400000000000000000000044161305163227500310670ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATh՚klwvmzw 1 /%e"0%`ҒDIC!HmE@JP!T% FR5(JEJ uWJll퇙ڻH#̽sΜRLʷm@__5(fw~#Å4NAQk]BXViQkE9FvX>Z2yyN`e,[47NtTSnxO.,`TitÓ+9X P=鵺=&=n\ UaK2DPEM7&BiNh=`>O;F|;J k5s3M7򀵀R:óON2ކ ^$TY ֱ¾ ҟp%@=Gk$n_tcD_ %3kN`ZAkHrqy.ݾRBӍ!`*(P)g{ Qf؉SAxƀ{g,X)1phQ`S1$ܢϠfMr H#F5d;ujYm]?d&[N !(f1ܯWQQ1\YA6A}Iހn/sBJ@~bV`5ypb5#GV(1yXUZZۣh@2r$(Np"c}:аDF&(Ёqxt&}Wg|jwYJzz$cϋUK^Yu_% x F (F u%iEDB.eoCsjRt8ݑdž)v$)c1$zPR߶&K޽dn<l*]&A(K8I _$G~_Kb3[mZij uLBE)öuA|bub0e_h~)II/Hfp">~]) 7w`:p1+cF lHy,'5ğ-"Qc2%,H̝rb9FI6K !\QiI8 .; ڹs1` F\H+Ov$).U 7 T P@H!\B:S[hBnWGE*nO+ N#[DF:oD w5B-OD|+e~ ;4 "CzX)GK#E.g 8fC`/P$iS + |--S8 n846A^MPU@GPhpjI<0Fϧ|M zHMrhYyd|.+EG1E^5}  v~Q?>N]t/oq!?ȽҶL@_ j<^v逋mR*=f)Rl>ʨ(&1>".z  .`>#RJ5$_s/9Y񡇕[3wba6[1{{sݖ_WI`#5WKIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/important.svg000066400000000000000000000047441305163227500311060ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/note.png000066400000000000000000000040461305163227500300160ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAThՙmTޙ;3˲tyKI"5DcM?4jci-64m-451jK475\o;3sg;.LO99* !jGS)d**pеs_#0 :0}8qxеJ+ I@8<(Ujm !,kf# @(TǢEXd LaVƾtKmm߻w;H:ㆮmjH`-7ޕ+QUYPY% /@pqq cl{m+۶Γt‘Msqu%S\Au\RYz)N8o4tm#ч,"?~iB ckT"^ vD?\KKQ>C׶( |͟φښCJd]I2b՜< @pkg }˭P0buƇE3K bR("I| ~%?>Yb|ׅ{Տ<6/ (Hf`C~ '2VCq=&=i`.Bv\2CҞHs)i,1VeqzD*x׳|Jд.Ӥ-W0b.5~cP__߇ۀzc9wD$|yW:˅DM}#mYB+( Gˍ퀤U/P"B'e\NeFx9BKdl"+zG>rn U sz25XOa\#S}5/g G'`MBP~g*KvJ=,iR}B0o~3`"YQ}2$a"?C\kI#IW$n1:0K4kDs⦅Vu=YoeK0fk6k~Ej{p ̐^] ]8~Xovn蚀灃1 YGG%xR:vxwatl+Wx?JmXr`nl%tP ۿg/3Cځ7مe$#{p&Qkr#7W8UxمNy^($ZRku nT.ٽ=еc #I}o˸4ozlH)Pk{uhq,l{?0tT`k1`h m];;.1G+@ LSS3 N/wyYQ&0b™SL=wĈql>5vlLg,)~XaZzz h!q k==֓  _\\]\n~ 7t-[ ]Ñ`GJ5ogOx8 1tmo%Ε<,4w9qMG!ݓ_rX@kr%6 !5׬ҷڤ)SkЁ-YC׆}Tr/ݻe+SU v`**zf1tzu^{99<6b(Dӻ?ͳq>6='y =Dg(2;|@ef̞D:}/? f* Cז " @}a$7`~е-WKp0 K@8k"+@kuGPp$ZFN2zfCV]ue0" D <; 6IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/note.svg000066400000000000000000000052541305163227500300330ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/red.png000066400000000000000000000002431305163227500276160ustar00rootroot00000000000000PNG  IHDRtsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATcX🉁w gIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/shine.png000066400000000000000000000002221305163227500301470ustar00rootroot00000000000000PNG  IHDR1bKGD pHYs  tIME  IDATcD&L &7FfU2 IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/stock-go-back.png000066400000000000000000000014261305163227500314740ustar00rootroot00000000000000PNG  IHDRĴl;sRGBbKGD pHYs  tIME+yIDAT8˵?HQǿGG/Y*ĸH\77 bR Bb^dY&^Z^Ÿ {MQPJ%8 :;;/ӷ%\~:550MnkK?4)ز,EuG|Y<Cu@0M!E &20Jbi?T6锴zLsp Uq U5sVRg6\"0IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/stock-go-forward.png000066400000000000000000000015341305163227500322400ustar00rootroot00000000000000PNG  IHDRĴl;sRGBbKGD pHYs  tIME*0jIDAT8˵OHW?3lgkHC/ ɭ=EJDņ](ȡP$SN9U (Z^BЊ)BŅUOq77Cge]w}彙w~қFz7~N*ٙ{_l\\Bx>VIno$j UkJ}(Cn''$IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/stock-go-up.png000066400000000000000000000013611305163227500312160ustar00rootroot00000000000000PNG  IHDRĴl;sRGBbKGD pHYs  tIME*;%`qIDAT8˭?kSQ{{sScB]JJE NLBKҬ7pRpA nT u*$!)(Ѷ'76Mڛ4Q {? hT*]5rWc 8numqYԪ/GC.zB@4}&7XjuW~cc#ܜt]?VI`7F\eoozm%ÿKt:}mffzeYl6fB`U O&hWU|guu5JnKB T*etxZ8tZVV!!DennRxgZ )%SaLOO?XYYضM4uݳCϧ)g~~qH$"J]vk,s ضmommYfFA/߳\@ |cVk0`#PH<>::t lJQ)b ^l%T)"vTp<608"ݽ]wJTl7 ]wL xVuۀcr܅{MP.G)d7Q华ZgIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/stock-home.png000066400000000000000000000014631305163227500311220ustar00rootroot00000000000000PNG  IHDRĴl;sRGBbKGD pHYs  tIMEVIDAT8˭UKA}3**i+X $HA 7рn1gI,"=xYo-$%@lat?ۋ 1&>]fgo߼.KڜJRJ~?aW>s$BAVAn"f25R}Yt755E+lnnbkk ǵc}YXX#aqq1F_qE>mnnNF1#LFGG!mH9Y>ˁ14 B$wr_>GTS㠿n6M&=EQw^r {oU*LNN`6]WO&eY0NNN:*m.۶Q,1==MBP@UեX,7IRy?@ދiiHmj3 a%4QIxǡ~!`Ύ@i²,1aG)f26neY .˲t]A4MXӴ{;uݞ0MA 8^E#fr 8<'d @Sj7ƍVn=IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/title_logo.png000066400000000000000000001161731305163227500312170ustar00rootroot00000000000000PNG  IHDRIE!sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATx}yEc=3/,d!U_.OPWU_DA9B}_ ;a@B{ݝݝݞٙI'vw]UO}:GqGqz p*Qp(@𝝝Ml 0('GClٲE&IO6/֟188hutt}G3$BZk%G3f[C9pG9bvvv2pxwQ755\>t=! <:w5zꦛn2wbqKЖ7ӟ]vQcc#wttV}[+ w<8 ԗ%2)Tww&":Hmˏ?7oR8g׮].Tͳ}b%'-+"%M^ڳMzx<.o$V9g/8q"šNJ,0"ظnεo8GIHRbxx l gw O 5ipl"eWk/8v. @VM6nf(cCyGqh'}6B@d.H4u% t Wx۶m%Y;$?<}%|*}Kgt f8IdF,տ=< 0*|}tڵڬ3*%g?m AJ}fK˲dwwA[ϣx@,X,fk@ag8D8۲S>}Ks4;?.VWSdT9<1~{.⺺: mš#<88hHCC8Q /yط:[85-N1aM3`X堓Kd2):&}8J8#v#8Q瞕 p;2SgL_忺.<n6lpD7:7lzfd txy'k_zy逓?Jx{|tɴfiiwV^Oz+:uA'=B` y4n}eMMSl^zCm;w\.4ggGz>E>ל3 p{*%=/jV,%yK5b$|plKU[]:;qē>3C:ճ 念k!ܠ|-_D/ݦ.ğݸꭾQ!#]oB3}!xz/:/Gɿlapt4d^~wZŅBRn_?K)aKVtkk+wvv`>eSS w -7w{tw)~mGz8ֆhmmLOOZ+'r:}i93ԯ܊?Ƕl٠::: 1Ǥ~˖eMS\[cOwr0)"͚HTw57=wJ#ݶ[KnӴ:MoYtww[A$4eL&mPs1U Nc93\._Wl~ʕr̙ݟ.3F[w'ֈWyg2RH!PD&v͙/9]_an?ڍW6o\XUo^W:;;BDM믏˗>px(K "jkkf͚ o~D ~bie'O869{M4iuiLO'xZF)aD` ,62ж/X#H)3R3%iJ]{ [,7D߻F,=5O'H Dlr s4"?;A/hߗ\x+MA2(M4 olj v~;W?w!a,aiBa`ɔJAdd?#C1$fT<wo!n{vSL7_BtUڱ~+V"[ þ*H)eY <뺢P(Vɸ1H@y;]\Ӣe0 ~]f.|RMw 6+ޒO-&cqh9 >MRqE}}}ڪloq%rWWNSx' 43V? 1|fGJ$>H %H- EH3r`g+sx!M \ s4o?[|Jo<7/}l'@R b!ZZ[mA8Rc43\.g2ilV---T(X,f+\K 9zɭ|HؾnV|#ڡWKUf娥٬'b qY/KPcQ?| dd2+ A:J`f)ɘ T`vpIW%➯~zȲ0z1R aYORxғ2ȗmֆ)x?`> G~*@F&tvvRh#/;r9cV+Wvl! bќgiX,dY͎;LKKikkc\WRJkm!|X#3o4^M/fw/Q;U~XSOϐgmS/2>y^xrC㗪m_ʺB(4yd<*yń HmbppPڶ-<r ó5RB ,R3fl f,:B2okkNc5 6ة GMfd< 6l ni_l4ߒ4rgzѳyD: 鴬 Y7$$c'^X."׬Vz`_QՓɬ5Yt%4!{6뚏Y-y1J zTW4_۶b/ 8& 7?9c|ooGnŀ\.G===B7H}}}d_bC")FhHxIcYRo/559oyk,m}}`0HTnz߿6_nR\&%FKyrmvE<;?RT6O9pTGz7N7qZ_ӖKZzlե<=CD #/~*l6ksb@:/ٺ&Ǻ9 /Ҟj~0tF+3 v% пW,X+Nx<p-+$H&#~ǯ~u%{'+#y6眳D^s%8n9X&b,Įntk%xg`WFYP.VZ1I5c&:#Bkk+Dz"N.;o\S o6 }?F]U8U>@?zw}pm۶#ts2ifQuG[CQR($ lcec^l6KoUkZt8+l8ڞ3IH5͘i'1r!>@&"sqlbI([Ǘ/G>[5x8{+OH--/Xğvl:{YpIlgۙ(6ּ60`m_~xnb ;;8w eد!͚$vAXŠ2)6 kҎp@ĎǸYж1$xKѬ:::j-+*lw ,ml`D$i Abz.sg`JQO=$.ٓmbW冸W(wQ ҋvyL&! O8?"%f죲i; o3۵my o{ew%́+X)xJn 7ybBrR`>YF$Nju1+z#$E~ t$H^NH9 Wذs$$wZ>444Xc1%/}|RJADRK-1R)B IKdXW]~a2?cMK\(ooox<g1&x1{Gp匩xY0>laalcڦیmZmˊv0JSlV@65KT]Eiȓ ^&<uP&\j\*KU?J*ȕ>)*< 1صf{UWd1آN 6t:-핶mKux&˲Du %,!J;!4\+S) Wo?c@dGl+VXfͲ nlJ&9W$r fg(ſ=S͖oejmvIzXà3IOFE,cUj"~`e*GLi 0vheʊY - d*ãm% <2e r9AP]]A@*($P(q-R&n/קt"v>_w9!@㨁>hܹG>އR 5鄔ȕէ/-1(Q=y9?9jGNf%T|^wwti|9E)}6YD"j"eRRsYĬj%nxZMꏖiԕ/@zlmK5'2 eZv`t={8 -Y!N!JlDT>86[=ֵ0s?3pDQi7oF,t:mANۭ.⇮}lt~) + ۳X:Yٕ|'W@PG D^BD_o:ajϠ! H|‰X,*dvT$.a`CE1%(8 b*2ś#Z @#a`:R(S1> Us +NtI+⌒Kxd+@Lƾ}PОD'Ϯ>_1%"08e#yim۶kKZʄ2?5ܝe2`ߟ[Om%?e "|""R^󹏕mA.wsz:9\*l&3("qK-("6P.LjP)>0~DOϹ,m0A|]W/a'ꄨgE kƮXuoPx^ec{[>ϣ\<ndGϧF7WXJqL\")NÉtKEB;B|q寜:("`̬()epY]t5|Z^.,:SƬcH BI Oj(J֑{%6xxQ6&r=6͞?j.Q=|bOO '2xFyZgMU5,Cwk_q / }}}^wwJx`?8Lgg'wuux<hٷ,:]Ykj36Q!`?2|EHQ X1Cو)IisZ K-W IfXCѡ^\RzDPfЗZ^cDUfQRK zNMQ'D)>G;bSޗTД-w=NL(G:H0I:=AMjs 99d2޴i&"yϣ152yP[zOMgΜXqim;v0h?h}(RHଗi.F/_mf|}%n奔`eYkmv\>J!D=$@Vp mGTEK&bYPya'@%" t Q(^rNd@ O4: @{<պq-^$'0JBk fYJVoIq`/VK5c\Š+̪UT{jAk=ހU?bKo= ~̺LreAl[3<1 jx#kv&Rև%c/B_d>  xx@'A pj,<*XESeV-F*؝pD~hŽ;;M6Zco۳x?oA!ܜm|p%/ܔ˃\. oL>fgߚ+n]k׌GF>-W B!NL&yx}~K\"4Dg4('cI\tZ#Q"zZ08JՉJJ 𨤟{ \ݫ^_%d&g@?/`up?* B tuu[t( V^-,i 9DZ'IX c7^6ۮ>ߗ_V~ԩS e`޴KB6KyPڏHP<.Jꑴ!*iOVy&0O uUR4< B$ГqKeQMX 2 {^#AI IDATDtxGUWWcK]RX./L;z=ts ypяUL-05gfj{EU9r?$|DF^$ *KT#&`hM3ib3mdcF ͙ vmI`;ZGFֿ5J˜AMDDltZyGŕx̶ZcTPwڥА u3;LO5r#g~w=1d/6ǽVU<"y+,xU:P⯔3o/j"nF+MZXL7/Kr!8h #)C󺜧_ٽP 3'Y(eYrC(L>7}}}P@}}.0s$材55yZ%n$2RGǐ}4pԆ* _Њ !kk@i>pf=҄J[[t2l3 VJNč0kTJ5A1j!30$ڬӺknyr!2Q諯7]Ν;J)2 `ެ4o",_14r? kc͂?r\wBԮ~ ߝw.dSikkqBXB(}wL0u$zu/uc#=PneYڴiTJQ>A4yb析lW/SZF9FI1y9C;nH>$w qKNҜذ.fauW?M_ 3[3\A2Px\qZ#yV&d05;`&}tuf:ڂ#I瀑V.?nut@ HCi}]6Ic#=ߌ1Q9i'<iGm^\A|g{vkUzw#y$~i89\+c+ be? !d'_VdqG`#='77.d < o휳#g͢esp>PWKĪUm4Pvo~cwc֢)Iz}jePEڏ!m4訢Ƈanz4@ޕSMD~~9ѧ9yD=&"^s{{f:)۶ |v} 1%>uN3>v西^?}=|kMbHƐ Pi+ A>yD !$Rԩ3ϴi\soy[c~3BY(Iszǿh"#BmHh28\n` RO*^~5AWkvg5=g8#R샱U/6y9΃qwTނ *w9(>"!=b`aZ֔y V*R4n527|!ãɅm3͝ <3nN:Bl7^.< ֖[)Q ~mnܼGIn1B1s d7&fA<W|^' =00ɤbҲT?Sqwa3a*c+}~+hMfcD |E ]߀Qw^x>p]4;-qFJƸRUH28T~e<[NK!{,̙g)S@Dc .X8˟Q"|AGLȽߧD͂4LIeW9`#ܶM#{QmU>T*ޤi I~@Ťiu-8n>(q3|zr@qsGacC0MPvUG<끎P2@cڜcr;NZn1&p4;FHO"ãɑNC/^ ,[q @}=D^Va.m}6m+?>d+1#|c2,8*(]y6&fS$ٖ}gˤsOD/CQr0(u-|ϦMf@!b×99v}(ӥrוΓ(J{-}8[̵5­3U ЛU6?yH>Cr"Fpk+IJeKRH=oy^vEh3 Ov{śZmI)eBk'"(cbvFT T<+ߏT*{zzL24L |<$=ѣ_?{^maqBp{Y݅1X߇.g%FHO(mm@QOPŏH|}*0Z <ɤ0kz~{ehqv:;8V{01ə&N8E H /~'CM&o)mǙ9B #rfRA<^;Xɢ*vٸJ&\.n۶m#pBM/=[0s8^Sώ1۶}0S[0Q+}q%|7R@Dda,d -Mm4PC⇪~E (Fu&0iß L 3)T,ʩ`zkM4B9ɫMaϜ :dا`Ȳ)U:>wEs q׭l۶mCm}庮rqCFm,#?eY4d"h-l"Y$M3 ,%XIA$4w6'^t*X0_Ϙ9Oi2ӛ0=!0 UC/*6~5qceg"w~/0A]cw]i%yHjl9s ڊ$?P cRJXNEokw]FMGp}y캮5U1^&--rNIPB[B #d,E\0KQr ueQDs903mL:70=,)jfb}soMCoc_)CH^L >!0%Da: R"Gy`-[{2ȹsH/w5D۶avh˲F:"–_}k;\cN;ٝmmmP(y.b1>l=ŤmUr%reYRJZXRk-4)4RR' ̂Yʒ6P$1sc d&0 icVry,n1gM$qm̗-D?^ >o7ˠPN76Hw!e&MVenw13xD/ Ai]u&cޫ%]vS8@R?@q}PvyhbB/zSOllg8\A`Ě! Ok SD1 |`ƅӊ^"eYb "A[xYuQQQ3UPB`W?\uUe7E!ĚΟ=kv г=M 7(飑F?r򼽽rܘ!1e!ϫJ)a!v5юԖ)j2RR',,+4,RjecQB!LIZ1,*!6^*Nm(.Pj=, 1DQӷ91B9 @F~fG\((F8RL;S⏘ ۧg,O; 3_yo\K7o>ɿW nth0򷭭 !/  Ắ4t]8Bk-m#Jg(%R*p]ZtZ_^!`%$d=F<hFMs+ 2xV$a/] L5W zP;GS)$$J&c`Jd7lF[=rf '5Y<G˼ ?81`Aϗv"Ÿ߈ʚrPؖ_hog5&}=}\\P(c A FͅPCH&Zkz-ҞiqT>J*qZ~"`ɛ  u(Jv EXk+R|%/z<P5CV < m mB 0Z3 3a1\f ZwV jC<Qkoį/ ;DŽ3.`^nL83￯?4.o<~״vp|7 :yMA5\x\v-Bxq.*Q)o7^6PFM瞻DnZ' 5H0"f(S${`hS#7\se-I>Mq&ݍ->X<z}<3a9mC:gn޿_$$af+f/ywB8d@mm Q !PsUF^fBz|Ri#\-1vn{Un%''zP$"$!@b{-X.PW +` \) %B 9ɩ{U1k^}R <9e5k|`wLFyT']cNKn3Q,'2)3{9N 1וk c?$r#cru6ϮV> <8 2{#]]]:FN;ڳܥnKS'ȱg|xtk?}=޸g>G@1o\&~X:Wu$ f[:;iN̬ u]hkt!"g! N}  Y -ȥ^_zX7?!868(‡&{ˑ]HzI H9M69s樕+WVW[JJl6i=4ߴk7`裻͸JL A"LLKf)q`Chƶޜ$]%,T-RAXhST n~lZ3-;"9=mvu>|`ftuXWDθ徛?:y%nS(se%R]7!վ5k>SzYZดQ 0v1qަmw@o9 n5{Zoݚ5k|x\ߺ%Tp& X6ؽs0yK> /BPzbײlC.>Xw%_Y_A!Ӊ\J~Qy<]:G3j"x](*U _N=d?5kLޫnˡ3"ӄ9Hŀߎ4\>}-۵H8ЯxLZ~&07/?ǽaÆ VoyZVO, :8V5(Udgc.%;S a/E"6?}70ޚm;~Ka>e`J_ΆJa,!k0zu+t=O\9{ګ==L=u<เ癟I=^|LF?_#ZVzŀhC]eW.Zx|___@8^ ltUt}0`y`z'y8[Jޒƍ%.[Kg:}y5)D\yl-$p|^X1w3=QKH97\qVǧ]]3YL;KѤ"0;אn?|rox=#7쾻~{-%yoU\:Rx>X\] equٚ."%1}]waʕk/lVV#ӾvXB3ҷ@Kmcw3~J<;C`ou<l{Gn&* RMqop'O,S:yr[V&49$ѓRiNI--_q=艈LGzߣOбG>Wf:1-ѨT.-x4uk2`1e%l\u>W6e3i͘{>>c+P.\Z;"qED1 . ;")(k5u*tC:ֆ\ZtzU1qzYlxAm4H{\蝗%J+GL&ǁ"∈ Z 50or3J{OO6t2V =DhBma.vAXw#|laSf lI?l "gˠ+:sճ7,y9ځ0!fqgmݐFcawcpժq`q[ş7BAcA^K6 %Zҟ )ڗF)wITj Y:)(>gvt#nP 2TulL97D(RZ Fߓ;BwGz)Inn")>Sۏ^'"`k܆rNCa pt} m16o<ׅҽ m<0^ <4c UnIl.@{vdg[o7 @3&.Bex\|?%M- H7+]jED;qLfxer*<6qDX׬9QJ0{WؼyS0^'"zo]xXZ(0.@ RDj(gRw8g4LWnh ap[^cbx=W^PLYy8?=\Gw_LeGܯ]ZĴGN|nɎSL ?^j?(w?s;w\sTY!g-  3KP^Hp:/\Ԍ؇Z #d>,k׉ nkW1x5ȫz7^!Dxϥp1ס:ǣ8t>Я']Z]oKoGOz[amlr\A3b+CO:jrY#"$"ܚ>g2"fP9 ŒCyST#" (AuL&Sܰaۿ,AX+Jmv뇆 }O/XDT*Ro:L3G}}}^Us?yg\>u͍y~+ua | XTrFN&и"HyecMU}fR4?ĻzP U)v4cd%&5ٍ!q6NE*3s8N!N{{{};N@߄6<9[4E:yV O<V^q]:""" HR*PJ1-P߼Q#]͋r m^u[c. Vz,#y@&8> U6H5u?sh)p&_ϧ?;WSQW616$$wÈ#q~TM/={7K h|U=6Ow߯jȀY#*s㿣0"(2s@DAA@>8{ډlOhÃKj rͯ m#]~BD̳VFJN^)E$Ӑ7}T\MUCW]3ҷU!v0jʸ'O>}:EQT@kM,D$1_,zY趫;`~"abfk<X>B^& ==}Q"DsXL jJe1Ϊ@_v1:8!ڴQ/ Ŀ |EW jVŪі'jnkpg: -ym^wrTՈWީ,ZGOc)8|}b$${p\v\I"Rq` gbU`y,G#hyܰM0"Kz%N z"G搩[xVFJNu; 8 ) Vݼ!3GJcf3ZkߥS8i~OQPQ\V<}T?t>vR~CʥRf`p.Z*PW7y'}T ~ro9@*EEG{E0ռWzbOS[^sj0gL]6A8-AֺS)!"OI%ng9x[[o޼9)& Z] лL-W̃ӟ7m6\_GF~^t( IġϘB ;(V(3#꾋ï $UKïoZꜛIlZIzx<1AjĠ31H:E])sJY?( ayRl/FhM:XBw鈢}l=JWyNQ[#XmPNKڙAopƬ:T!3###F dAЖJVKwO='_~3p᧸߉D4Q/LH5u<T&Ii=`TjGyN4gs'Вg[M"(\=[1]z6 zJGHg2k|4:ZOFBU"~@EۢowOF&{;V-wRuˤZ7N Q$ɤ)IW?iӟ8Ge&zF޸܂]z6QK^B0|~$Q bq"kۋhIK2VA;EdͮO_w:BD1(z0P33L'+hX%Q"*m0 'nꥴqbo|/7{DZq$j_v8ig@$^rQ}ku0ݦo~~K1X(=mۄ6PQu a8 *r>kԦ܎A"2}`^MӂIRTT 70[4mK=_.y;~ xF BN묚+ۘd90XJ F_4[v"Չ>_o|3f޳Cإo5}BvQ}))2uƴL܏AJ_D0*и8|E+#HLaTI_?VOAE㤝^l'G'u-V߈GO~ `f9^!;1w!TWV|ч?? Ac={)X;}ա_i\׍܇N\gi[`Kd=&r~ m %cӁ㼛ϊE 5zf.QsI;NJ*^A[)t=s7~ؖԦ t˝śQ[[H/ۯW:||,Y'nZ׳?,v[A8KDUIQ=V VwI€s$ˊ#(Bz]z69M}:K ~.V.пTm+?snC4<InF%__ѷZc_$u'v6yj%Asga!⵻K?KO2W,(|??ֈ~|.9Sԙ_1,è8dw݇{瞏mo5_bJd`IL07U}Eba7?{1GyH~eSe J[}03` |X# ' "rDd&pl^7GngL!qW>\.C |"K);Ae ]m?uxU5 -.j s͸w 藾}xcqQuډhm*" ~VPsP<,,:Z]~/_x=iMx?)B׊?㢋^K<+8dq׈1۬kөn>+ *cؕq7nX1ghY=0i`r( #~6#X DԊޙ(,(F M4 cllCD-;/;ȦhD1P [Q'&#(aW5D$lzNJU 0,s N,Κ1Mʖ$&,gp"OC@AD:{'YqJ c<U{߂J5%9%LI_p юfAZa ZkDw%> fGxIYtj'pl,Yi7rhuX_(Vb^x8{ |0k'qSO^ op>U֡,rMY({xS܆>#DtȘI;%+'75Gf[.Ւ?YDL +`>O$]aR\q-%˒G3uσMD | ?Y4B$ʕv8ɢ]0\ÃYX8νOFeAU0"N2 ND'X! IDAT2٭m(f ey5&rqv[^Em;̆` a"Vfduפ:yf^ (n7kTYEFeт`8=m^vo@nQuU;{8e"#bf/cMD9Z^5 D}k4o)߮^/h;Yե4X"0A9mpF٨dwzim:Bhc$d Օ9pkƏ}IX}V@qU @1^"9èz/3fԪ]hзxod.ʠox 0zfԂޅMƥa@^Me"^E e+v[qIU)ֵT'IuM3>qإ_*d4E& (O|2:Y0|=w8AhGQdmmHMu:}~ Z=yt`ކQ^T Ω#++=kxJF0K; ij>^ ֺF`f,~^^VTs f#y5wNr+z0::L"x9p^qHHyռ0[rVvQ%|ظj)GQVV7e '2ރv%ܝsWBp/i= ;QE!"qѷ#.wAc[:-ԅ^&kld yvּDDoځ yLany?HP8`yj[0 =_"x.{n!L0d`Eq7~׾u:LY *K8L*XH9 q vu3㾎E/D4c)h/)c|fmJv*fqC}G`bA.p+K*j\ED߀I ʶ%f=0QI: ":u9IazAy'@㜇jzLVbѰ߫B% XpgpjyXM6X,]{ Z0< 0>qsњmԣq[?xG`ƵqW~3SIݾ #1LqUN":fCD0RIUì5MT;/[(tHam0L%IIJ\1]~Ǝz޻cI{ cvףQiu:W,zd#kAH$ٔUF&o6h[T?cʰW`6Vџ̄YduEqv`ԒeԷ;oA-7,Y9و,Cof@-C_ l*3`k]i0!Y3 `6_Hմ`&)T0 b <|OP}I[`$sbB= [l6`z\7zYd`3ڪ_À:E0g0)#׎/;NVYsIk v=Ծoa@>_(.A󧢁0ڞX`e)!m}9{a\ujt4dG"=x9oϵ5sYFO 4+IFAXG تLveinQU3?~v8};`R}if­oBLe+t/yYl<tsu$d7@vAdxb}' `$ okx3ס2qk=F0a$ig,6*껙4xf2J-ֈ cy.k%Bm tm> ctLT4u4&Z7Ċ_5zTD`J(ov17fg϶I$V=j$I*$y$P1L*IDi":.ߢYyciA\o[~QaMSIy߄_3%a@=V_- f7M"U*g%-+ \űtFlVORәGk]=NQٺ5広m0GaVU i?joh뺯_j.ZKT DQT>i-2wİ=&R@ODtZrg_E AaD^TuV8jiekkN 1T)PJUf憵5V@8I 8J9 6>UKyIa!z~Iږjf„ Q]k)V-~<DJc JMrHl zx`fszʘl%Np uJ  d6"l"kG( (R"FDN p#dpF`5T*~7JeKR([+<Өy^q.%_0BD/8Br D䵷w zf6V/"嶂`vi\n!cm-b []u  kԵ@J8ݝGۈhR3cECks "y0:܌t:]( ֖"M@TXv1MYMAdy^E'1_3@EEO)Zdkh h6&)Y'^Ԁ-NÌY井E7l ~'ђ3LAD'TiΛ!fBofY8HմRnt;À~ `x#+iQ,(Kv+~u85Z0FI&e S6eJI"`&_k0 Lq7.dn]+cU!fuUT5r9bK=3ˠ0N"RQ""NhDk]TJ RJ A`ܖNWB QnyPPkoI*Ҿہ6mvm[ngWWڲeKWo 514D%t-Ԩ5b}ugD_┡t:R-)c+aYXCiM2B$t,tZ@~^(FQstcgYlٲe F衡 R$k,ACcLNoE%DE#E ( ]X,\wLẠُP{4H$`^j:Fgg'6lhEH '"fŢ_JC/W{|~|>JUTlN:nŘyq$g8掾yLW5ޟ 1k(ӌ3httT)/NŢf+7 ""s=j"uSJM@E̺*HFM>|>50D 1((ˁcRA6:րEi뢈Aowt:=]7S_&3r,6J:@Dd&bpMTBN:F @pt$Ϟ=`lj<"b|q֚Rb!~L&cc;̙s)dK}?VD4u]uAD a(O)7ϊ@絬VWv^\(A`gƪUjC`w ( ˇa8200PD@eԭ.@kq0x%SHpC۝S(v8v:;;x"AH=m+筬)-T'zKD(U09UEe2Da" 1oD P7@4m 7ʖl^ dY8N"2۠ Q$9EfcS'6L&3~rZ@Dp&{lϙ FP B.kxsgV w 3i-9R=Zx9xkxr \ ! 4-~ĉZq$ 9On (eNOzy\Uz֚7C" _IHڶڨ 0 +Hre2c,t{C?oA"H+@A@F (F%iOy qU:*1qR .+p"Ͷ0lnC0TvdL#Xqi&f iG8Sh,vEȡo,ԛNCm0 %j+‡ɍ" `hh]'5{& #Rc??8)#د;J OB!h.0u,E{qROoذaŋӷv[M'gϞaFJ褫, ECP 0 ]]]ʕ+#2c /H+!g庱ĀffA88 Ŝb3%h%rcB)Lx[K]]/rhLNwb'"? ҁZQt+*"B'}n6Nu]7JUWOӦMCPxj%!vZj9y.1֊8(3g##1X8 14iE5kZ6(-)Q`_{ Tv~CCCA@B]ZhvUD* k}]v@Y|`ڣV_C̛(MfW3s^?бajycD hBG!LU,MQrPkȍZ ڊ` Gc/Zɑ𭡡ޢE>Pt*~`={ŰEbŊzIӦMQr]Ux\!5xp5N'8]sf^\EZm '8})idنk Lf{XSmǣ0"^MN2=K˖-kƖ-[ں&v~_DfRU裐*\1*wwwCD!ْ\%~@Dx3 :G-/+Q(b`gk̛.%l($@KU@бrfRCO eAR@c2눘oWnZh#;r2kBpR*f͚RaiӦ#Jv]n-Aނ(>uuu-ҳD@uG~|@UUbTk]'0qLЬT41]vdf坒@Nu9Tf>x⤮/~F'㎛# C6C-UL! VH ݓm4cD\h <7at9;쌈Dc6eNeJ9*Ѱ5lFR*KPU:=3m@]߲;}rܹ L5T;"ED52T-Yr̼HGZ@@G2Q*+WV"Qv'癙A}aڴ']dr~-[Fl: _њ}aL&CCCujf%8Tiȃd;zQR9&eYq[ RQfucGy)*b;uR0't8UY5~~ 3pjkQ(^h&4,[^m yQp bO}&L˚EanI9ri"ۀwFx@kVJ97d/ZGbNLE0z;Ǝ͡bHYx)բ+MXzmPl]$#a&ӝKCf\(\"@`&.]rgp #Eg…]prife}' 2 =Pn9`-屴m9G6ÌzybdTZe[9 tdϞ~D8#ΦW^uU իsmmT7DD ɷ}_㦛n|'` D8It Z@ yu CCC#<@M17Dh~=$ӴbdisDxD= 4d['vz+u 2\ zf zfB_t 7T/^ʩ7rw fR{0KblWpx( »uX+V0|v=])u*JZQ?=޿Wݠlt<M*I lv! 8>D"4 "h=Ek7O)Riя8,\{RDIDATN;0:%=D*ԷP$r^m/]zڇO?㔣49ZdhWF0ė^rSg w?%рΨ&ȥqJD{Z)6T~׿uCrz6ʪ- f1a :L)ODlͦ6 ļQbb"b",,=t+W11>8A$φܡE?A_Hb| ">S -՚F bf KD$GD[7:}))(2mi ,,bf p,"z_~^h;Cz&'+"mu*DƦq1h-rGFa 57gEil/^3?F=׹^ G: BT4OMZ˥ z| \" E#p :S/`J)0(bdj3KD*AsDDH|S?4}^sb^!bޝ@Lx-i&'n-[NJ Xa : 1'Kpݝ5$ vlWΟ磬-*e~:Ĭ B7+$QHVCY-_@B"Mz@3' Pa"$!EQF/[DDLӂ(*^F #DO=ǙO]LDA q'yu-GAAHX\ |p*)'ve˜KX0MC{qNt vRTF agWDw/X! .+ } iJ ,itDiL@y0 ѠoU$7xضe˗Q]r<b@ Dr:0J^&q:}7`hH XkW\D[0lMf9Ã̰VzU~( i yJ^¿9)8DM:Di jsȲe˜^dΗ4S$JEr`鄦v@ 1eGxTvٱ;x C(`PZ&SorE y%*G<7 ?vnq,Tt3 DB24K ZkYs!!Wi{ZvAKZ- S]Um\CRDPd E业$QA8??_滽p~կQX򢌈t)Q`ȓHYĦ:U'PH*be HI9fV*30ucM}bb"͞={yMaDS+0xPAث*QZc4 H]V]tG婧@? .UԈ#`#V%e;N,ֺW@_ݝ $`]Bq7d1w0 ;ѣGOx1upW^ye Xc˶JDFSDl t  %,iY>??冪W_}u9YkQQXE{8m"b3Sjz* M`քY!<=5"l8,gp!3wFZB]UI ' RE-PVKtH,Q*8f&e"GDq!5]U9z___[ ժ!{fiOXc[؃L7KB WUh=[!f4??2FW^yeӳ@40QTQEFu9!#T d]IDhvEcBf/0XF,{b3#N`Az&&&088`n,3QR5kDbD~l zg:a:SWfK޳͑W x9%(nYXH(ꌤ+r.f I5̀ilO;18hOtBsI=R:2ÎY"%HLjZ#""F֕52ƸG}e_ovL&Sd2ފ*8V`Dı: #G/w/%B2$g-o!ۄGbrL ݵg-taaW}8{RTe+e. ,X4xyl̑jWRgb{=f#Q)/'AIXW4$ C$I֣$V[Xw$A6EЇI$Z C= ࠬ9ZJ*ai.Hрٰ7 "X$z]='$_>%PPÃEQbU5e4xÑWOZ =8Ø_j;ό(I$A-Ih|2zp%E ԄMlK֒"WukT[ 'I 0&b40^z=Ҁ|_o<AƘЧm8A'kƍ|1Ec>NRў={9ouz펻-#v!KK⭵9k?=&3Cs@K+PS)T*FJ34`:UvVd2ZT(ɘ0 M:ff6Ap9TuM$I"Q0;X[[ݼmQt:唦iEsgEpߵkЗ]Hh~~/=<ttthww...J;aAZXX;v裏>}}}gm[zhbbb&qj˵440HJ:V&iz!;4ݺ.ϧ]y/SÃHw殮%Z[[nmm˹9=2N(+sk{,,,4K288ȭ~{v}-'@8e=ֲZu;圖I^y!8tQUahsy:zy^iキf3JymmfWN62~m^el;6ۼvmyl*cUƶoͫFy%P.F]! |; 6 %0@\Q)<ɵM]AVw{uP*zAQ0 Lf w2۷/<[4|_Mqut{0٨ }[ x}(xKMӝ)(HZ~ aHc'??s c?.U} ȽT.|PxQ*M^ 7qaqzpGm=_¯xk;[9#~Q*O@3| d/, wVk|| D6r]~kABFD ϔSfGb @*1埁ݒK+ `  eGNU*zaji=l>›_r<^)\n_,L|; ~`(;vtgpH\o߾hȽ^hڔ#G.}&#l>i=&?R9~@peLO~^774Ho)LX^>z=sUwGB! wAn^;rp+/V硡It"rxB;@ {C.7r8< oF[ ׭Gc(<ß*]VM5'bz`+nm=m:< z,@™t?ozz@ o@qx>nW*JW{CCCϋ24tKӅgCřC{ ]ߧSbz28m'9==uxm| ^T+%h?0>>B|Mic/+y@oT?ŏo^3iT j]mN@/S6;r\o<7s6!_d#W4gӿ@!]Dԝy||\p6 i>K9sAuxgEpNˑNR44Wr#@;Et VAu <$dmKzAҝQ*W\Npfˍ=T*f? 6#m755Gz|87:b8WmqZ, i RCCC+r!"sڝ?8\v錒VGG%:/mOQmT|v=`'RPv)L6V™P8QڐbB$@.{h4ɛSh::-AT9N祈`/[佹-',f&SNjoUr7ޛr.ϸ;R5Op-"i :By c(vigf@rጝr (e6- op1CY(K6-V@h:gn{'x7Tyj˕i87G~l[< 3==xX@?!*q$}S43s[>ljp܊\.W"5T< Qn R> '?0]PRѯlNaOk(󝥙@x;) 6lz9TJ"#_!(''y[,o}Hvˤ Oz׶&|OEg궩K"~R:8I_P& 榧_qS?>O) + c/cjr@jo=xIR7Ksrªwo-ĝ̵~+>]*V[VoL788g_*ҝQ%Ǡ_lkf[/ image/svg+xml systemtap logo Andy Fitzsimon, Red Hat 2008 systemtap systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/warning.png000066400000000000000000000036251305163227500305200ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATh]lWww޵wg㴉T؎Ǝ !4 8Pߚ`C RT}!g) }HHRBRQƖ? "Bhשϙ쮽3; 4{{sW}֊HІ[JB˅z:Xu͟f2+Wᡂ }{%i S1Zl}rQrQyo5ޥTQ28=>g?&| XM~0t?ҫE:'qɏ>!b@Qc=Oھ%to۾;x'z/,1xEd^<&?vbl&i m֓ %=BaϾsO?Dx4<zӶCB݇wMOX" js|<a4F[]ca6x޶}w֎2lcaJ obC2RDj{ w| %jԵ+ox h |u5zޑ<bU@gGobD|d.n"V ޾]GGȋ(Qqt^4Jl`N`,7D{N־zv,FÌ`}W ErKK'񂖱DMlE:D8]/*@BM~l2V,KK{FLz'涌է9IJZ'cEXA 6YZȗ歷Nu&=#n(}WEyz B"_AwLc-Bzɤ}8F6`/R;>E@Kyd: ۪m PO5wo2'Oha:Hˑ 'y`Ʃ&@!ܙ>hאMy@t _ >LʻNԇj6-x@ˤc>`$&9@Kx-vT)!nT$1Ed"F4A kRȆI6`؇} ޿ݤ,=!\?dk<ځ\eqC.G|ɹG p % ع8cph˒/Vehk,Nbfw(*e d ??Ɯ ټ1ټTX;5q[Fgo<,piw-ߜsaR;–}(O{㋭nhk@T#ǖLޟG%Qe{,R._%: bK95q*W%.͖}i*(tsՂ S%JTtg {kWްE+Hfg"V_/0Ƈ ^G{Tڪ۹8]9}%y{h}R-b*?Ce÷In6"–M'BH͟a~֌'UnjnH^=TbG(FhA͏`,1w % Q-P' *ePP-З¿kKEx1{f[+3Ց0|' o_oH.<8#[-CQTQ<8#%@S\忮$TY~i#foFVw:pCL((g&00EXZ^ռsOǵɰYukAțoOƫ3bIENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/warning.svg000066400000000000000000000127441305163227500305350ustar00rootroot00000000000000 image/svg+xml systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/watermark-draft.png000066400000000000000000000614251305163227500321500ustar00rootroot00000000000000PNG  IHDRߊbKGD pHYs B(xtIME !? IDATxu%ewYt%۾! Np $$Xp.I  C^,NpiXpfx xx)}V !_?VO]//f/%B!Z'+[#lZ_.13}룀7W׀ׁՁ݀U|ST`6VwD.6!=p^ 毥ϻlR:L5~enq`A:5o,0e*緽, BԾ>lAuv fIЅB/ ͪ>88>ѝ !Dop#R6n[t!-B7x;/_Wn>}·T?Ip3@!Z./K샀#2fbJwY3t!B>8ذϳFtI콒] lQKN] ]!zb< w)+kQOw2ڮ.,t%B|,]70fg/wrJνE:g5&k ]V%q1_8X̟/')A.x<ߛV9(``zES!DCB>7|N,׃f@.J"a(n~.%a4-Y+! !Dх|j4ʯM'oUCx +kr=h]!Z)ۤY99'p^0{3H`&`vz]!&KTD|`i7(IN9X/!B.Z+y'=׺/}&Y``6NmM!/pM(``ZW9@0;_x [O +$B%3/J܎~uQx6z  fOٗc7aYsW- !|p=S;ډs6pheC` 8˒-z lG0Ѕ5ssIM361Oq3;q%]-j`6hWTO !Dy؝)] :%ƣ,)z h,[,F KЅU[l)h- _. fKπ]<$BJ we f``vpʲfUq;xHr BGJkzz zgMh=T_ f$n\|! B>}0 pf0ۿ1V8X`` = .(,_6Yx3;U9S1"mlkB.Z*e{NfḂ  1ْϳ̪;ꡚ !D%7@ۺ̟?f;OSz'<4\y~쭂I~l*kEud`vz]! 4xJJiMf'7+Ob4[n_N~W.MlRڣ[C,~$n5J0LNclb.:|F0{ϤsxHމzʣHqBfx41kne1;j,}oWCV 6$/ (裁𭇕ً{b6㯇1TӴ[淋i.hp-f붨opc=ǼV5|woeε*q5"6σ ..ILfŗCg|ԯZrcv<R풿OGe㎸ZX}X$)P<Ҡ9Y !:x]ė/k7XXׄq-G[ZÁ,$musOQm-xZړҎ,+8YY1cfBvI* /\gi6YҚf V,=i4sJЅe}s*rR>)`{\BӚV`Sڶ\DNA$B$˲;86m355C^Gs fcxu`ς^~۟gw bY7(CE|9*(4`p?9qڂi^Lx4CB! n;[cOH3Zfm57~mpjă_Ux_N xɆ̎(X{Bv;h ' y?`Zr:xur̺ef_ʋ=QFp|npe6߽e 1l}pn)f|Y NTIvt!Dd ꙩ*Jf}sq';ٲD¿#bM㱸1 b l f/=g1n-Pm: 10qh`ɹ֢oY W3y~t}}Fߗ\gQX/s~ |[T*&Uٺ7wMkp&`m}%ՍO?БڸlT֎a#\vpMbۦVg{#`vWӠ^>& 5C )ɕy>˸{Je줢y,;=k+fϦ˸ygׁ>YmB ߩg0K[U g\gQ8ݯz7%B_gb,3uBɿۖSm>.X{,Ƴ`¢K+_ge1OY 35~{47wB6k"m4D;t!D ׀,ƃq_Syl`zgz,nrfbOЯENo?VJ"pE罒*'FFkiu 7 !J6^^:G)ڮx6)_vj5.l+8$!mAջo8-Tu^gQ8?_/ ㆌ(p-"c)QGI{̏S/ e1 zIw{)LKuKj˒Wp xz> !Z=X5ִ^^Ӛ>P. $2,i@߽ Qg{ܜ~QZ=,3>m`vZOG$Bt Ռ9䢂5j<|L ̀[—~jُ 4w3*w;3Y.e5@4ʃlPcl~,Uq ߺ=n fwK}2w0̾J+#KТti||_^.h)ă|7%H0;pI~(mkj}l{`&_U8``6:of'xn21EUk J4<-USn+껞:6IЅM6ӚZ2P~R2?WMVGX}H0hiMS\\Hu -`k.r"U[〛(\]Z1lf Νv^&̵*kۘ*yZ.h/f1ޝD`v^sv9 O0{O Vvu V:f``ߗnóuc v/v Ytߏpm}pz,xJӃir*=`{g{ϲKeCfiyF1x,}F~ԵLt&o{䑪vlzQ:!}uމg6mt!,aVhB}CZXv+^ST5lj8rWOPn+Ocrt0{ s+YC e
    #>;PI*]m9ꐴy>3x=("mL0[?[C=I(.*G Ѝ hвK_!/YW[W9wNb b1 8 !Sz<tS|LwkpJ~EIYy8s w%ss.wwrL|⯂x{8%w݅|$X쿁kp*}"d1 1M~Hɳ_d1P~~L[W_ fP_Ewx6+/1y0۬Hb8]㉸v}S$]ͩIl{0ou';*i6/2T/ÁM:au9LYGf1n,AB7q<>m%d0@m'qG(P:)TϺl$ޞGO#xZk9hTr/LY،'Sk[<>â<Ŭ Fi|ԒNb&p63_-]Vpl,KqxZV)UG݅9۬S/.0$R`iZfWj(Nt!_ Yknoǭld$%wQl!o~-G18[$1b2`TU Mxr*r$Gu>V@o1`#1뾋<'>Ʒ\>J~=.Ng$3/;%+%%XUnVP3 ͨm03k^R`vh'uχbyHk㡙ma1_(ӡ]pό[J~t6{XU^Nrß3p;V1N0{Y.+w?q?-iݧrUh8-djƗQb@ س>})qc|8\.{}sQZX||p0h9ʻ`Jh)Q9_ۦ)쨨9~0e|XKE^,pK!9{3``mi X倧S̀V7~M,b'g}e<:%l9yl~E?_vWp{`{.-"cZx?#͑ixolS[tڇ{ <9Uzyqi׾t & nrf%eu,?Z,< \̾Exir*<З hs,a֭H3Ÿ-ϗ%/UYV+s^mTͩȏ}5i%袵|x`-r,ҋj`nPxW['x-8 +B f{h\ _Y="'vGC<Ӧs Cl nRυdzo> xؼ×ӫe:|jϜ~7^'It0| G욡>}Ó9s*[|_eB˱ݷj;߶^KuOi^OK;Q{HwS|TDWK/ =EG3K +9E|~t|4Y1"'`I/oaik5Ã,۵Jzh˖v%fO/S]IYU&T`vroõZO>o/ҋÅ2-h]Tzg*GpOcPUʵEu zxC7 f6Z`6)q?:]٥Uz&JY|N~: vV n4C-|L3r*C w#^-A}7NȩQ)9q{rv0[0tc&2A#4ZjpWO<OY_(d]㩖 fg&6l֡%-=cA9p8.sBjy[om:9+`/m< L6+ ?\yLhs,tl_">>'X.Z[.Scs?u =ݾv fn]#u5ҪaErJ~N:2D2=1} žpt|0Rq7ySw{YcG~ 2 _!S=Sgx;a"F͢}oLWpY#p@/˕5C5{#k5+@H`o~*^Ktr)v f.ۦѸD}bzyπ| 8q$qxR7*C=]| y&v"X}f]iM'דcŸI0{^ ^x5otv0Sg}jho`r4OO hTOݑO..yg—Ld/`o ˳/Oe1n[[ &Utzi_5"iTfj=STx .!LsBfx`scf^ f;硸t;rY7na _z,L4j=`&f-t|4++"KYEG,i~&&ooy Y_e6qF8ptW؊{)GP[F(>bI8ƭ/ fGT(kqRs},[TK _i܁z3%0gyz.*R8,Ax܀=ڍsyF(d!Ab ^r,>bI{[iҤSXdLTK nSlSZ} H<<ؗPl 6Ʀ@h\oyn/X^_ ۴II\'!A-{1y-/KB#IHXbgۿG%b/F}[as4nt ,Ҡ޿}ltS194+op󊔓;d htnK%=5,^<9hNEK㊴XyG"Z>e?2B_3`=|iټ֠? ̮b||\NÃ#mH|MdzWM/7ݗ,}]~w\V.Z/mc1 7/4i_`}Z$6 fNNmݪ7P#X`GoAl"(X^9.[׿J"~G0c۶FSH=-w==Խ/1ǔx#/V,^orm 4jw pV0{9w&<ʩT[9``62qL|"0cgGY⁄>nN%wП|.bF,x Yqۃkp5JE>[щ4bӌ/EG,i HX{Э>?v^ʚ3]mRݚnL nh|+B"nNb `)``vyVfy~xefi>KnT<ő躪=#ao\,kb{Km+>f1OL?]=fN+䴴U{|H`vtVrw=ƜUB^H! _6b[X1oO8 {%L[xN b- qt|#Kg#K88`PNifs ps0 !A-}]rkw }xaYO`tZYC}-S0<\oµ6ۘToY܎ֿʽxKmK .§oȱŲ49k-G%?kbXܭ(UƜmCށ>KgG9;$}TCL)_f$yDJ,nQG.'j<|7^1gs[' yWO?/>Qf-{Sو O}ZQuiaX1Y~%ܗzjԾudAz|::xV 잂9'2ٸsB޺+Z"ͩ=~/RW>ĭ5[>q+R]0aPy/NXдKq-`sO3&e1/^y?NlT㻸V#+2K x`Uu_`7ܘ'9.nzFZQ) = g1ޅfMwU\G;9ʏăt M0~ka.kBmq7D0۫`b3<_ss\H[pK&_LB\`mw]Ix"r*)``c0F[Q+C[73RQ[8qܭ7G q_c6,مesFG!T'þhr-FgC7io'KÊ,=½fϩ؏Cˋf*$=QJ;8d4#m㯔O`G6p{;wJ؎/-+m) 4#|I4?'Q:<, 8/y{-+su_BNfiЯDeD{%-C.LJve KB~{7mei2u.mYEO/bWQ5{9 fk?0'[y~_6|ɽ/fP=ު3/й5s29i^c⍸e=}$ոl'Byv`vk2>D~b|XU[ Bqwfg1۩Ui=w'Cr;NTK)I0Of WH+1Tiu>hɽ}n:s_Ԣ#1ofG'O{ORKRo7gݞZ/cδWz!bAnAQ`rfphj`hos`nE}65n$@0[3om84_mb\!,< Ь94tmYg1vOjbnvFNb>8/ۚ|g;lŀUo48Ңb'?^ oH*-PQ+/MPܿ{\TO k`M;e%g/+U`yQ^dWWnbc. IDAT_/s9YgGs\h^_M:CnrSV 9Ti4}f?ޤy[ݑ`^ msy-)\ohfh,ƽhy } fOt^p׫[qngË򚸝99 885Tw U36x-cڇ{ gASoԟ> "z,?fSՀm--&V_-+Xy^fk zDhO%zw5MK/6IDvf:!o)]̩p3٘dӜ,x,U0B^P1GcKk t]}p%=8ŏ1O7&}Fz4Io!h_G#b?. f5YVj\O`0 wLق VDB+-'ٓ{VWģ-Scq{?ό(_`2) fWZ6je"`}s*p8`6@xƪ[(oo[ zE,J4og>op ][X7}`rZ7[d<oqffm;^D^x5ݿuGZYUz0{$&z!y m.}G y< mE<}+EO7&gw w\3z)LpQ):TAx7o<@@4} u}A#}ӂ(6 Բd19YVy>z^L9lT0;w!ۏɻ>O(r$B{5%qt)UW<`4n'[&A Y| ,̮+i4J0.}GIH{,aY!7O>OQw눅ފ0LJmH0;-qW' kO@KG5 =Ҡ[+G,s&r}7ZQ+##k,ƾR/p]7 ?}ZE’{ 6n.p=pc0Ԃ='} <-s{ܓ>Mc˗MOc KoBjA^xZc_g1~f!<,y ve0:'g,-3UsʴjPs`$Pv`(xMqW tv&sC&oXMx24l !A':E``v{ M3Er/f{>IiB`8 |ո^7]̶nWZ} EĂ5o)Nɍ<=WT5ub^Y`6**7`pA < p@u}l,+o{{VD zA 1^e.`w}0k7~V~oN~yוM:mK/wYm F6c1]pͧz~,r,yRrqZW},jû[S75\אQHB/qoM`Ϝ-``\ zt=#s:~D^uю3Ŗ^֤T?b=`d+YK;U5hVƷ[Wne(1_xwECↂBHkbiv9ej:|T153aըYS%Z|{\5BMQKtT_7M|p-]xV3 `vj m{GK02~[īҬrNNu]YYvn^" ~g0s9kBq_,9w`3|?y~~wLŃY} 3G٪}C@kCܸ* B^_כj098vNm7wʓ-j<cx8E7fmYX⣁?TWÓ='1[ z?.d`[R&˧.M<_v]CN4G*}`619 #5d/Q~?U^P+u~}40o0r;\9ƍj4[Yg͝-= m5o$s^p;6H9Si~ގx'HC1E/滁qu~wjglB0"i6J`W``c07+ u.ϱKLN/7{;_|; ਜԿ z^ݕu~`p5 Dj&xH<yֻŸ`<`m 29ugLeաJFN?C"`As㒭B38΀[7`#p|Uj tfO&$wŀ;ll3ن{p/zߙX|;8!HF#8ʠ:f]Y 0("" k \"[$J{}h:UUUsNNz~wH _Tf`.5{%EҧkS2cK*";YN2ڃc(R:Hi:0Hi"Ӏ-|Ypj?&V`&fZm<&c6,RFD3nY?祈ېӖsKs}b>DUFHPDIxe( t,UOtV{9͌n֤luڟFL|QeV_{X_N.Rzoz)RHDrFMov\\t{-0|- Oh6ѪYϝ28ֳAT}{wν̫eMAH8d@}6q9<2m:9G˥j9Z4ހs-k1 thKֆ9jRmV 䫕9P:KM- 'Fug_-sn%_jGG$84'9'GUxW]C%UDg)-@|G)ѝ|EeTt{.WU~P}oR1J0P|1 ܷf_C1f?3z[-N`f"0qՒII'*Fo9:;H5 <֒ו9Z[h2痶OW=vKj%FyػL0/s~euvMOM0K_1׮Jx_x[ݦkZpEuH2j:H#-no;g/$?vlBTLH:֦9{eMo!f_]2/ Ab p1F)m:X{܌{k+6ػ9C=Aȍ-lLD_7ָ"=&1Wu7Y@Lzl$)G['9侤S9Φcs˜6I?iƫ 37%j赚&?Hibs'ҁUeļt=f KMQ?=tvt[m]H{+S#L1&9Uu0Q}XXزHsI8mO1@ n6*u{KҵUFSܿv%.'U 2IljÁۈkt?)]'T/?O*Rz{iu"5Oߕ< ]&"i ڟc9bݗ>GƎf5߁5߀/'VY$ɀ|݊.n6} 8}O-ĐI:&n%,DnX@ Z$8/SdJ?Z/}Kv*R6Dս7vɅuc]O沵|HT_mަCf1s'y˜GTO0?^lZt\=|/lD\o5zy10H6n.E v2pY`jJl"̿yDYKtI2/@2a~+`:Hi6=>U*Rz=RONRJGK`4-R:m-ވΆn 2D峡mg2'`MwED#"ɀ_} ?)ĄicqPEJ[4+VAIJO6i*Rޓ{I.'oS!ɀ߁} ')^ϱ)6V$R~^ +^Ìj`.5{l~ $'V`_vM;9|h&&ivFuUttC+cI0XpJҳ j4`CdkcUpS$=52㩿 k>pLzhl\wAపB$t:X3ߖcɔׁo̹"/%*=gVIݴ`+Rӫ[=V1m.4S`^/ɀ/m x0U lץ~1|^;6R :4HZZro_9 wO$Ey ^U9Xc-)O$kwkiN,R:WnB0Kʜ2jx͸pG$ 3\ZHd't8Hiv倽 vLj{)Rr]Rz{|شſ_XZ{[_MDB+zii.5\Pd}j.T*s}'hqDn)epIe+ *MV~SX2&f)s6mj"=O_D\#?op'%ՒzCP&5db9[#~B@Ku[q::}=v1{_lwZT=tu3@̺nfGEJ:b=["tEJOxdI2kiҜH)kY "mҰӹ2WeMohԏwL ,4"]ύ49GwD0x]Π{/GNsItuңp V"|-/#.+l|b" =t$;'2ϒ&֓_ԃ{2O$Ŝ1<K䠟#ɀ^Z"o~KʜW>'͗5HssU$ɀ_v*wEJ,by#DYӵ; 1ap("AHIt'ImEH k}#oѡ&tIrN\wBIt# ^9E eUJ鵯I_꙯ԡ`"3ʜŲ P`{p[PZիy Y`NҹeWuL{z5qZ)_LF x2O9oG]ķwgǁ 撖ErTѓxwuNEJ` Na=> SW/I*ܗN|Ab]=|q1DZn6kKjhwzTIZ9tNIeU{.uNwMs7"] d@_j-R|.pOY2 z=3hBߏsi``"_x$I󼆾t9ՍjNm4i;2Á/YuTbLsEJyHҒޣʜ'9ˇ h)^DK|S jYYĒP!֧oXM1C~18:gw)-}F syarߏ-sMuxHiζJ imbWo}Ryi')=!I)/Od8۫[l ukd5,5,BL[PժrcDZʜ KE7êWG$5\H <`RI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IZܫmB{IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Common_Content/images/yellow.png000066400000000000000000000002571305163227500303640ustar00rootroot00000000000000PNG  IHDRtsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<,IDATc'+???K]?2?^Y2`$IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/CrossInstrumenting.xml000066400000000000000000000277231305163227500265650ustar00rootroot00000000000000
    Generating Instrumentation for Other Computers cross-instrumentation building kernel modules from SystemTap scripts cross-instrumentation generating instrumentation from SystemTap scripts cross-compiling script from here: http://sourceware.org/ml/systemtap/2008-q3/msg00310.html kernel modules from SystemTap scripts, building building kernel modules from SystemTap scripts instrumentation modules from SystemTap scripts, building building instrumentation modules from SystemTap scripts compiling instrumentation/kernel modules from SystemTap scripts cross-compiling above; add short description, significance, howto, script (test first) When users run a SystemTap script, SystemTap builds a kernel module out of that script. SystemTap then loads the module into the kernel, allowing it to extract the specified data directly from the kernel (refer to in for more information). Normally, however, SystemTap scripts can only be run on systems where SystemTap is deployed (as in ). This could mean that if you want to run SystemTap on ten systems, you would need to deploy SystemTap on all those systems. In some cases, this may be neither feasible nor desired. For instance, corporate policy may prohibit an administrator from installing RPM packages that provide compilers or debug information on specific machines, and thus prevent the deployment of SystemTap. To work around this problem, SystemTap allows you to use cross-instrumentation. Cross-instrumentation is the process of generating SystemTap instrumentation module from a SystemTap script on one computer to be used on another computer. This process offers the following benefits: cross-instrumentation advantages of advantages of cross-instrumentation The kernel information packages for various machines can be installed on a single host machine. Each target machine only needs one RPM package to be installed in order to use the generated SystemTap instrumentation module: the systemtap-runtime package. For the sake of simplicity, the following terms are used throughout this section: cross-instrumentation instrumentation module instrumentation module cross-instrumentation Instrumentation module — the kernel module built from a SystemTap script. The SystemTap module is built on the host system, and will be loaded on the target kernel of target system. cross-instrumentation host system host system cross-instrumentation Host system — the system on which you compile the instrumentation modules from SystemTap scripts in order to load them on target systems. cross-instrumentation target system target system cross-instrumentation Target system — the system for which you are building the instrumentation modules from SystemTap scripts. cross-instrumentation target kernel target kernel cross-instrumentation Target kernel — the kernel of the target system. This is the kernel on which you intend to load or run the instrumentation module. To configure a host system and target systems, complete the following steps: cross-instrumentation configuration host system and target system host system and target system cross-instrumentation configuration target system and host system configuration Install the systemtap-runtime package on each target system. Determine the kernel running on each target system by running the uname -r command on each of these systems. Install SystemTap on the host system. You will be building the instrumentation module for the target systems on the host system. For instructions on how to install SystemTap, refer to . Using the target kernel version determined earlier, install the target kernel and related RPM packages on the host system as described in . If multiple target systems use different target kernels, repeat this step for each different kernel used on the target systems. After completing these steps, you can now build the instrumentation module (for any target system) on the host system. To build the instrumentation module, run the following command on the host system (be sure to specify the appropriate values): stap -p4 -r kernel_version script -m module_name Here, kernel_version refers to the version of the target kernel (the output of the uname -r command on the target machine), script refers to the script to be converted into the instrumentation module, and module_name is the desired name of the instrumentation module. Note uname -m determining architecture notation architecture notation, determining To determine the architecture notation of a running kernel, you can run the following command: uname -m Once the instrumentation module is compiled, copy it to the target system and then load it using: staprun module_name.ko For example, to create the instrumentation module simple.ko from a SystemTap script named simple.stp for the target kernel 2.6.18-92.1.10.el5 (on x86_64 architecture), use the following command: stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple This creates a module named simple.ko. To use this instrumentation module, copy it to the target system and run the following command (on the target system): staprun simple.ko Important The host system must be the same architecture and running the same distribution of Linux as the target system in order for the built instrumentation module to work.
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Errors.xml000066400000000000000000000671041305163227500241560ustar00rootroot00000000000000 Understanding SystemTap Errors By type - http://sourceware.org/systemtap/tutorial/node23.html This chapter explains the most common errors you may encounter while using SystemTap.
    Parse and Semantic Errors understanding SystemTap errors parse/semantics error errors parse/semantics error parse/semantics error understanding SystemTap errors Parse and semantic errors occur while SystemTap attempts to parse and translate the script into C, before converting it into a kernel module. For example, type errors result from operations that assign invalid values to variables or arrays. parse error: expected foo, saw bar understanding SystemTap errors parse/semantics error invalid values to variables/arrays errors parse/semantics error invalid values to variables/arrays parse/semantics error understanding SystemTap errors invalid values to variables/arrays invalid values to variables/arrays parse/semantics error understanding SystemTap errors understanding SystemTap errors parse/semantics error grammatical/typographical script error errors parse/semantics error grammatical/typographical script error parse/semantics error understanding SystemTap errors grammatical/typographical script error grammatical/typographical script error parse/semantics error understanding SystemTap errors typographical script error parse/semantics error understanding SystemTap errors The script contains a grammatical or typographical error. SystemTap detected the type of the construct that is incorrect, given the context of the probe. need more clarification (example) on this; could not replicate. how to replicate? For example, the following invalid SystemTap script is missing its probe handlers: An attempt to run this SystemTap script fails with the following error message showing that the parser expects something other than the probe keyword in column 1 of line 2: parse error: expected one of '. , ( ? ! { = +=' saw: keyword at perror.stp:2:1 1 parse error(s). parse error: embedded code in unprivileged script understanding SystemTap errors parse/semantics error embedded code in unprivileged script errors parse/semantics error embedded code in unprivileged script parse/semantics error understanding SystemTap errors embedded code in unprivileged script embedded code in unprivileged script parse/semantics error understanding SystemTap errors unprivileged script, embedded code in parse/semantics error understanding SystemTap errors unsafe embedded code in unprivileged script parse/semantics error understanding SystemTap errors The script contains unsafe embedded C code, that is, blocks of code surrounded by %{ and %}. SystemTap allows you to embed C code in a script, which is useful if there are no tapsets to suit your purposes. However, embedded C constructs are not safe and SystemTap reports this error to warn you if such constructs appear in the script. understanding SystemTap errors parse/semantics error guru mode errors parse/semantics error guru mode parse/semantics error understanding SystemTap errors guru mode guru mode parse/semantics error understanding SystemTap errors If you are sure that any similar constructs in the script are safe and you are a member of the stapdev group (or have root privileges), run the script in "guru" mode by using the option: stap -g script semantic error: type mismatch for identifier 'foo' ... string vs. long understanding SystemTap errors parse/semantics error type mismatch for identifier errors parse/semantics error type mismatch for identifier parse/semantics error understanding SystemTap errors type mismatch for identifier type mismatch for identifier parse/semantics error understanding SystemTap errors identifier type mismatch parse/semantics error understanding SystemTap errors The function foo in the script used the wrong type (such as %s or %d). In the following example, the format specifier should be %s and not %d, because the execname() function returns a string: probe syscall.open { printf ("%d(%d) open\n", execname(), pid()) } semantic error: unresolved type for identifier 'foo' understanding SystemTap errors parse/semantics error unresolved type for identifier errors parse/semantics error unresolved type for identifier parse/semantics error understanding SystemTap errors unresolved type for identifier unresolved type for identifier parse/semantics error understanding SystemTap errors The identifier (variable) was used, but no type (integer or string) could be determined. This occurs, for instance, if you use a variable in a printf statement while the script never assigns a value to the variable. semantic error: Expecting symbol or array index expression understanding SystemTap errors parse/semantics error expected symbol/array index expression errors parse/semantics error expected symbol/array index expression parse/semantics error understanding SystemTap errors expected symbol/array index expression expected symbol/array index expression parse/semantics error understanding SystemTap errors SystemTap could not assign a value to a variable or to a location in an array. The destination for the assignment is not a valid destination. The following example code would generate this error: while searching for arity N function, semantic error: unresolved function call understanding SystemTap errors parse/semantics error unresolved function call errors parse/semantics error unresolved function call parse/semantics error understanding SystemTap errors unresolved function call unresolved function call parse/semantics error understanding SystemTap errors function call (unresolved) parse/semantics error understanding SystemTap errors A function call or array index expression in the script used an invalid number of arguments or parameters. In SystemTap, arity can either refer to the number of indices for an array, or the number of parameters to a function. semantic error: array locals not supported, missing global declaration? array locals not supported parse/semantics error understanding SystemTap errors understanding SystemTap errors parse/semantics error non-global arrays errors parse/semantics error non-global arrays parse/semantics error understanding SystemTap errors non-global arrays non-global arrays parse/semantics error understanding SystemTap errors The script used an array operation without declaring the array as a global variable (global variables can be declared after their use in SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities. semantic error: variable 'foo' modified during 'foreach' iteration understanding SystemTap errors parse/semantics error variable modified during 'foreach' errors parse/semantics error variable modified during 'foreach' parse/semantics error understanding SystemTap errors variable modified during 'foreach' variable modified during 'foreach' parse/semantics error understanding SystemTap errors The array foo is being modified (being assigned to or deleted from) within an active foreach loop. This error also displays if an operation within the script performs a function call within the foreach loop. semantic error: probe point mismatch at position N, while resolving probe point foo understanding SystemTap errors parse/semantics error probe mismatch errors parse/semantics error probe mismatch parse/semantics error understanding SystemTap errors probe mismatch probe mismatch parse/semantics error understanding SystemTap errors SystemTap did not understand what the event or SystemTap function foo refers to. This usually means that SystemTap could not find a match for foo in the tapset library. N refers to the line and column of the error. how to explain N in previous? "The divergence from the “tree” of probe point namespace is at position N (starting with zero at left)." (from tutorial) semantic error: no match for probe point, while resolving probe point foo understanding SystemTap errors parse/semantics error no match for probe point errors parse/semantics error no match for probe point parse/semantics error understanding SystemTap errors no match for probe point no match for probe point parse/semantics error understanding SystemTap errors probe point (no match for) parse/semantics error understanding SystemTap errors SystemTap could not resolve the events or handler function foo for a variety of reasons. This error occurs when the script contains the event kernel.function("something"), and something does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number. semantic error: unresolved target-symbol expression understanding SystemTap errors parse/semantics error unresolved target-symbol expression errors parse/semantics error unresolved target-symbol expression parse/semantics error understanding SystemTap errors unresolved target-symbol expression unresolved target-symbol expression parse/semantics error understanding SystemTap errors target-symbol expression, unresolved parse/semantics error understanding SystemTap errors A handler in the script references a target variable, but the value of the variable could not be resolved. This error could also mean that a handler is referencing a target variable that is not valid in the context when it was referenced. This may be a result of compiler optimization of the generated code. semantic error: libdwfl failure understanding SystemTap errors parse/semantics error libdwfl failure errors parse/semantics error libdwfl failure parse/semantics error understanding SystemTap errors libdwfl failure libdwfl failure parse/semantics error understanding SystemTap errors There was a problem processing the debugging information. In most cases, this error results from the installation of a kernel-debuginfo package whose version does not match the probed kernel exactly. The installed kernel-debuginfo package itself may have some consistency or correctness problems. semantic error: cannot find foo debuginfo SystemTap could not find a suitable kernel-debuginfo package.
    Runtime Errors and Warnings understainding SystemTap errors runtime errors/warnings errors runtime errors/warnings runtime errors/warnings understainding SystemTap errors Runtime errors and warnings occur when the SystemTap instrumentation has been installed and is collecting data on the system. WARNING: Number of errors: N, skipped probes: M understainding SystemTap errors runtime errors/warnings number of errors: N, skipped probes: M errors runtime errors/warnings number of errors: N, skipped probes: M runtime errors/warnings understainding SystemTap errors number of errors: N, skipped probes: M number of errors: N, skipped probes: M runtime errors/warnings understainding SystemTap errors Errors and/or skipped probes occurred during this run. Both N and M are the counts of the number of probes that were not executed due to conditions such as too much time required to execute event handlers over an interval of time. division by 0 understainding SystemTap errors runtime errors/warnings division by 0 errors runtime errors/warnings division by 0 runtime errors/warnings understainding SystemTap errors division by 0 division by 0 runtime errors/warnings understainding SystemTap errors invalid division runtime errors/warnings understainding SystemTap errors The script code performed an invalid division. aggregate element not found understainding SystemTap errors runtime errors/warnings aggregate element not found errors runtime errors/warnings aggregate element not found runtime errors/warnings understainding SystemTap errors aggregate element not found aggregate element not found runtime errors/warnings understainding SystemTap errors A statistics extractor function other than @count was invoked on an aggregate that has not had any values accumulated yet. This is similar to a division by zero. aggregation overflow understainding SystemTap errors runtime errors/warnings aggregation overflow errors runtime errors/warnings aggregation overflow runtime errors/warnings understainding SystemTap errors aggregation overflow aggregation overflow runtime errors/warnings understainding SystemTap errors overflow of aggregation runtime errors/warnings understainding SystemTap errors An array containing aggregate values contains too many distinct key pairs at this time. MAXNESTING exceeded understainding SystemTap errors runtime errors/warnings MAXNESTING exceeded errors runtime errors/warnings MAXNESTING exceeded runtime errors/warnings understainding SystemTap errors MAXNESTING exceeded MAXNESTING exceeded runtime errors/warnings understainding SystemTap errors exceeded MAXNESTING runtime errors/warnings understainding SystemTap errors Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10. MAXACTION exceeded understainding SystemTap errors runtime errors/warnings MAXACTION exceeded errors runtime errors/warnings MAXACTION exceeded runtime errors/warnings understainding SystemTap errors MAXACTION exceeded MAXACTION exceeded runtime errors/warnings understainding SystemTap errors exceeded MAXACTION runtime errors/warnings understainding SystemTap errors The probe handler attempted to execute too many statements in the probe handler. The default number of actions allowed in a probe handler is 1000. kernel/user string copy fault at ADDR understainding SystemTap errors runtime errors/warnings copy fault errors runtime errors/warnings copy fault runtime errors/warnings understainding SystemTap errors copy fault copy fault runtime errors/warnings understainding SystemTap errors The probe handler attempted to copy a string from kernel or user space at an invalid address (ADDR). pointer dereference fault understainding SystemTap errors runtime errors/warnings pointer dereference fault errors runtime errors/warnings pointer dereference fault runtime errors/warnings understainding SystemTap errors pointer dereference fault pointer dereference fault runtime errors/warnings understainding SystemTap errors There was a fault encountered during a pointer dereference operation such as a target variable evaluation.
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Feedback.xml000066400000000000000000000022371305163227500243620ustar00rootroot00000000000000 %BOOK_ENTITIES; ]>
    We Need Feedback! feedback contact information for this manual If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a report in Bugzilla: http://sourceware.org/bugzilla/ against the product systemtap. When submitting a report, be sure to include the specific file or URL the report refers to and the manual's identifier: &BOOKID; If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Installation.xml000066400000000000000000000236321305163227500253410ustar00rootroot00000000000000
    Installation and Setup required packages, installation thru yum, repos (?); possibly, a script to install all required packages notes in ~/Desktop/SystemTap/aug21chatlog and ~/Desktop/SystemTap/noted_wcohenmeeting Installation Setup and Installation Setup and Installation To deploy SystemTap, install the SystemTap packages along with the corresponding set of -devel, -debuginfo, and -debuginfo-common packages for your kernel. If your system has multiple kernels installed and you intend to use SystemTap on more than one of them, also install the -devel and -debuginfo packages for each of those kernel versions. The following sections discuss the installation procedures in greater detail. Important Many users confuse -debuginfo with -debug. Remember that the deployment of SystemTap requires the installation of the -debuginfo package of the kernel, not the -debug version of the kernel.
    Installing SystemTap To deploy SystemTap, install the following RPM packages: Installation systemtap package systemtap package Installation systemtap-runtime package systemtap-runtime package systemtap systemtap-runtime To do so, run the following command as root: yum install systemtap systemtap-runtime Note that before using SystemTap, you still need to install the required kernel information packages. On modern systems, run the following command as root to install these packages: stap-prep If this command does not work, try manual installation as described below.
    Installing Required Kernel Information Packages Manually Installation required packages required packages packages required to run SystemTap RPMs required to run SystemTap Installation kernel information packages kernel information packages SystemTap needs information about the kernel in order to place instrumentation in it (in other words, probe it). This information also allows SystemTap to generate the code for the instrumentation. The required information is contained in the matching -devel, -debuginfo, and -debuginfo-common packages for your kernel. The necessary -devel and -debuginfo packages for the ordinary "vanilla" kernel are as follows: kernel-debuginfo kernel-debuginfo-common kernel-devel Likewise, the necessary packages for the PAE kernel are kernel-PAE-debuginfo, kernel-PAE-debuginfo-common, and kernel-PAE-devel. Installation kernel version, determining the kernel version, determining the determining the kernel version uname -r To determine what kernel your system is currently using, use: uname -r For example, if you intend to use SystemTap on kernel version 2.6.18-53.el5 on an i686 machine, download and install the following RPM packages: kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm kernel-devel-2.6.18-53.1.13.el5.i686.rpm Important The version, variant, and architecture of the -devel, -debuginfo and -debuginfo-common packages must match the kernel you wish to probe with SystemTap exactly. The easiest way to install the required kernel information packages is through yum install and debuginfo-install commands. The debuginfo-install command is included with later versions of the yum-utils package (for example, version 1.1.10) and also requires an appropriate yum repository from which to download and install -debuginfo and -debuginfo-common packages. You can install the required -devel, -debuginfo, and -debuginfo-common packages for your kernel. When the appropriate software repositories are enabled, install the corresponding packages for a specific kernel with the following commands: yum install kernelname-devel-version debuginfo-install kernelname-version Replace kernelname with the appropriate kernel variant name (for example, ), and version with the target kernel's version. For example, to install the required kernel information packages for the kernel-PAE-2.6.18-53.1.13.el5 kernel, run: yum install kernel-PAE-devel-2.6.18-53.1.13.el5 debuginfo-install kernel-PAE-2.6.18-53.1.13.el5 Once you have manually downloaded the required packages to the machine, run the following command as root to install them: rpm --force -ivh package_names
    Initial Testing Installation initial testing initial testing testing, initial If you are currently using the kernel you intend to probe with SystemTap, you can immediately test whether the deployment was successful. If not, you restart the system and load the appropriate kernel. To start the test, run the following command: stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' This command instructs SystemTap to print read performed and then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, it prints output similar to the following: Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms. Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms. Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms. Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310usr/430sys/3714real ms. Pass 5: starting run. read performed Pass 5: run completed in 10usr/40sys/73real ms. The last three lines of the output (beginning with Pass 5) indicate that SystemTap was able to successfully create the instrumentation to probe the kernel, run the instrumentation, detect the event being probed (in this case, a virtual file system read), and execute a valid handler (print text then close it with no errors).
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Introduction.xml000066400000000000000000000174261305163227500253650ustar00rootroot00000000000000 %BOOK_ENTITIES; ]> Introduction Introduction performance monitoring performance monitoring Introduction SystemTap is a tracing and probing tool that allows users to study and monitor the activities of the computer system (particularly, the kernel) in fine detail. It provides information similar to the output of tools like netstat, ps, top, and iostat, but is designed to provide more filtering and analysis options for collected information.
    Documentation Goals Introduction documentation goals documentation goals Introduction Introduction goals, documentation goals, documentation Introduction SystemTap provides the infrastructure to monitor the running Linux kernel for detailed analysis. This can assist administrators and developers in identifying the underlying cause of a bug or performance problem. Without SystemTap, monitoring the activity of a running kernel would require a tedious instrument, recompile, install, and reboot sequence. SystemTap is designed to eliminate this and allows users to gather the same information by running user-written SystemTap scripts. SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. As a consequence, it is less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is aimed at knowledgeable and experienced users, which makes learning the tool similarly difficult. To lower these barriers, the SystemTap Beginners Guide was written with the following goals: to introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions; to provide pre-written SystemTap scripts for monitoring detailed activity in different components of the system, along with instructions on how to run them and analyze their output. above, Short description on the underlying goals of SystemTap_Beginners_Guide, what we want to teach users.
    SystemTap Capabilities ** Short summary; when is SystemTap suitable vs other popular monitoring tools such as top, Oprofile or /proc Introduction capabilities of SystemTap capabilities of SystemTap Introduction Flexibility: SystemTap's framework allows users to develop simple scripts for investigating and monitoring a wide variety of kernel functions, system calls, and other events that occur in kernel space. As a result, SystemTap is not so much a tool as it is a system that allows you to develop your own kernel-specific forensic and monitoring tools. Ease of use: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel. Most of the SystemTap scripts enumerated in demonstrate system forensics and monitoring capabilities not natively available with other similar tools (such as top, oprofile, or ps). These scripts are provided to give readers extensive examples of the application of SystemTap and to educate them further on the capabilities they can employ when writing their own SystemTap scripts.
    Limitations of SystemTap Introduction limitations of SystemTap limitations of SystemTap Introduction The current iteration of SystemTap allows for a multitude of options when probing kernel-space events for a wide range of kernels. However, SystemTap's ability to probe user-space events depends on kernel support (the Utrace mechanism) that is not available in many kernels. As a consequence, only some kernel versions support user-space probing. At present, the developmental efforts of the SystemTap community are geared towards improving SystemTap's user-space probing capabilities.
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Legal_Notice.xml000066400000000000000000000017171305163227500252250ustar00rootroot00000000000000 This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. For more details see the file COPYING in the source distribution of Linux. systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Preface.xml000066400000000000000000000011411305163227500242340ustar00rootroot00000000000000 Preface systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/References.xml000066400000000000000000000103561305163227500247600ustar00rootroot00000000000000 References display links to other useful, more advanced systemtap docs - http://sourceware.org/systemtap/documentation.html, http://sourceware.org/systemtap/wiki/HomePage This chapter enumerates other references for more information about SystemTap. Refer to these sources in the course of writing advanced probes and tapsets. SystemTap Wiki The SystemTap Wiki is a collection of links and articles related to the deployment, usage, and development of SystemTap. You can find it at . SystemTap Tutorial Much of the content in this book comes from the SystemTap Tutorial. The SystemTap Tutorial is a more appropriate reference for users with intermediate to advanced knowledge of C++ and kernel development, and you can find it at . man stapprobes The stapprobes3stap man page enumerates a variety of probe points supported by SystemTap, along with additional aliases defined by the SystemTap tapset library. The bottom part of the man page includes a list of other man pages enumerating similar probe points for specific system components, such as tapset::scsi, tapset::kprocess, tapset::signal, and so on. man stapfuncs The stapfuncs3stap man page enumerates numerous functions supported by the SystemTap tapset library, along with the prescribed syntax for each of them. Note, however, that it does not provide a complete list of all supported functions; there are more undocumented functions available. SystemTap Tapset Reference Manual The SystemTap Tapset Reference Manual describes the individual predefined functions and probe points of the tapsets in greater detail. You can find it at . SystemTap Language Reference The SystemTap Language Reference is a comprehensive reference of SystemTap's language constructs and syntax. It is recommended for users with a rudimentary to intermediate knowledge of C++ and other similar programming languages, and is available to all users at . Tapset Developers Guide Once you have sufficient proficiency in writing SystemTap scripts, you can try to write your own tapsets. The Tapset Developers Guide describes how to add functions to your tapset library. Test Suite The systemtap-testsuite package allows you to test the entire SystemTap toolchain without having to build it from source code. In addition, it also contains numerous examples of SystemTap scripts to study and test; some of these scripts are also documented in . By default, the example scripts included in systemtap-testsuite are located in the /usr/share/systemtap/testsuite/systemtap.examples/ directory. systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Revision_History.xml000066400000000000000000000043471305163227500262210ustar00rootroot00000000000000 Revision History 2.0-1 Mon Jul 20 2009 Don Domingo ddomingo@redhat.com includes 5.4 minor updates and additional script "dropwatch.stp" 1.0-1 Wed Jun 17 2009 Don Domingo ddomingo@redhat.com Building+pushing to RHEL systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml000066400000000000000000000653701305163227500262410ustar00rootroot00000000000000
    Basic SystemTap Handler Constructs handlers SystemTap handler constructs SystemTap handlers SystemTap handler constructs handlers SystemTap handler constructs syntax and format SystemTap handlers SystemTap handler constructs syntax and format syntax and format SystemTap handler constructs handlers SystemTap supports the use of several basic constructs in handlers. The syntax for most of these handler constructs are mostly based on C and awk syntax. This section describes several of the most useful SystemTap handler constructs, which should provide you with enough information to write simple yet useful SystemTap scripts.
    Variables handlers SystemTap handler constructs variables SystemTap statements SystemTap handler constructs variables variables SystemTap handler constructs handlers format and syntax SystemTap handler constructs handlers Variables can be used freely throughout a handler; simply choose a name, assign a value from a function or expression to it, and use it in an expression. SystemTap automatically identifies whether a variable should be typed as a string or integer, based on the type of the values assigned to it. For instance, if you use set the variable foo to gettimeofday_s() (as in foo = gettimeofday_s()), then foo is typed as a number and can be printed in a printf() with the integer format specifier (%d). handlers SystemTap handler constructs global SystemTap statements SystemTap handler constructs global global SystemTap handler constructs handlers Note, however, that by default variables are only local to the probe they are used in. This means that variables are initialized, used and disposed at each probe handler invocation. To share a variable between probes, declare the variable name using global outside of the probes. Consider the following example: timer-jiffies.stp global count_jiffies, count_ms probe timer.jiffies(100) { count_jiffies ++ } probe timer.ms(100) { count_ms ++ } probe timer.ms(12345) { hz=(1000*count_jiffies) / count_ms printf ("jiffies:ms ratio %d:%d => CONFIG_HZ=%d\n", count_jiffies, count_ms, hz) exit () } CONFIG_HZ, computing for computes the CONFIG_HZ setting of the kernel using timers that count jiffies and milliseconds, then computing accordingly. The global statement allows the script to use the variables count_jiffies and count_ms (set in their own respective probes) to be shared with probe timer.ms(12345). Note The ++ notation in (that is, count_jiffies ++ and count_ms ++) is used to increment the value of a variable by 1. In the following probe, count_jiffies is incremented by 1 every 100 jiffies: probe timer.jiffies(100) { count_jiffies ++ } In this instance, SystemTap understands that count_jiffies is an integer. Because no initial value was assigned to count_jiffies, its initial value is zero by default.
    Target Variables handlers target variables target variables The probe events that map to actual locations in the code (for example kernel.function("function") and kernel.statement("statement")) allow the use of target variables to obtain the value of variables visible at that location in the code. You can use the -L option to list the target variable available at a probe point. If the debug information is installed for the running kernel, you can run the following command to find out what target variables are available for the vfs_read function: stap -L 'kernel.function("vfs_read")' This will yield something similar to the following: kernel.function("vfs_read@fs/read_write.c:277") $file:struct file* $buf:char* $count:size_t $pos:loff_t* Each target variable is proceeded by a $ and the type of the target variable follows the :. The kernel's vfs_read function has $file (pointer to structure describing the file), $buf (pointer to the user-space memory to store the read data), $count (number of bytes to read), and $pos (position to start reading from in the file) target variables at the entry to the function. When a target variable is not local to the probe point, like a global external variable or a file local static variable defined in another file then it can be referenced through @var("varname@src/file.c"). SystemTap tracks the typing information of the target variable and can examine the fields of a structure with the -> operator. The -> operator can be chained to look at data structures contained within data structures and follow pointers to other data structures. The -> operator will obtain the value in the field of the structure. The -> operator is used regardless whether accessing a field in a substructure or accessing another structure through a pointer. For example to access a field of the static files_stat target variable defined in fs/file_table.c (which holds some of the current file system sysctl tunables), one could write: stap -e 'probe kernel.function("vfs_read") { printf ("current files_stat max_files: %d\n", @var("files_stat@fs/file_table.c")->max_files); exit(); }' Which will yield something similar to the following: current files_stat max_files: 386070 For pointers to base types such as integers and strings there are a number of functions listed below to access kernel-space data. The first argument for each functions is the pointer to the data item. Similar functions are described in for accessing target variables in user-space code. kernel_char(address) Obtain the character at address from kernel memory. kernel_short(address) Obtain the short at address from kernel memory. kernel_int(address) Obtain the int at address from kernel memory. kernel_long(address) Obtain the long at address from kernel memory kernel_string(address) Obtain the string at address from kernel memory. kernel_string_n(address, n) Obtain the string at address from the kernel memory and limits the string to n bytes.
    Pretty Printing Target Variables target variables pretty printing SystemTap scripts are often used to observe what is happening within the code. In many cases just printing the values of the various context variables is sufficient. SystemTap makes a number operations available that can generate printable strings for target variables: $$vars Expands to a character string that is equivalent to sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", parm1, ..., parmN, var1, ..., varN) for each variable in scope at the probe point. Some values may be printed as =? if their run-time location cannot be found. $$locals Expands to a subset of $$vars containing only the local variables. $$parms Expands to a subset of $$vars containing only the function parameters. $$return Is available in return probes only. It expands to a string that is equivalent to sprintf("return=%x", $return) if the probed function has a return value, or else an empty string. Below is a command-line script that prints the values of the parameters passed into the function vfs_read: stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }' There are four parameters passed into vfs_read: file, buf, count, and pos. The $$parms generates a string for the parameters passed into the function. In this case all but the count parameter are pointers. The following is an example of the output from the previous command-line script: file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48 Having the address a pointer points to may not be useful. Instead the fields of the data structure the pointer points to may be of more use. Use the $ suffix to pretty print the data structure. The following command-line example uses the pretty printing suffix to print more details about the data structures passed into the function vfs_read: stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }' The previous command line will generate something similar to the following with the fields of the data structure included in the output: file={.f_u={...}, .f_path={...}, .f_op=0xffffffffa06e1d80, .f_lock={...}, .f_count={...}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={...}, .f_cred=0xffff88013148fc80, .f_ra={...}, .f_version=0, .f_security=0xffff8800b8dce560, .private_data=0x0, .f_ep_links={...}, .f_mapping=0xffff880037f8fdf8} buf="" count=8196 pos=-131938753921208 With the $ suffix fields that are composed of data structures are not expanded. The $$ suffix will print the values contained within the nested data structures. Below is an example using the $$ suffix: stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }' The $$ suffix, like all strings, is limited to the maximum string size. Below is a representative output from the previous command-line script, which is truncated because of the string size limit: file={.f_u={.fu_list={.next=0xffff8801336ca0e8, .prev=0xffff88012ded0840}, .fu_rcuhead={.next=0xffff8801336ca0e8, .func=0xffff88012ded0840}}, .f_path={.mnt=0xffff880132fc97c0, .dentry=0xffff88001a889cc0}, .f_op=0xffffffffa06f64c0, .f_lock={.raw_lock={.slock=196611}}, .f_count={.counter=2}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={.lock={.raw_lock={.lock=16777216}}, .pid=0x0, .pid_type=0, .uid=0, .euid=0, .signum=0}, .f_cred=0xffff880130129a80, .f_ra={.start=0, .size=0, .async_size=0, .ra_pages=32, .
    Typecasting target variables typecasting In most cases SystemTap can determine a variable's type from the debug information. However, code may use void pointers for variables (for example memory allocation routines) and typing information is not available. Also the typing information available within a probe handler is not available within a function; SystemTap functions arguments use a long in place of a typed pointer. SystemTap's @cast operator (first available in SystemTap 0.9) can be used to indicate the correct type of the object. The is from the task.stp tapset. The function returns the value of the state field from a task_struct pointed to by the long task. The first argument of the @cast operator, task, is the pointer to the object. The second argument is the type to cast the object to, task_struct. The third argument lists what file that the type definition information comes from and is optional. With the @cast operator the various fields of this particular task_struct task can be accessed; in this example the state field is obtained. Casting Example
    Checking Target Variable Availability target variables variable availability As code evolves the target variables available may change. The @defined makes it easier to handle those variations in the available target variables. The @defined provides a test to see if a particular target variable is available. The result of this test can be used to select the appropriate expression. The from the memory.stp tapset provides an probe event alias. Some version of the kernel functions being probed have an argument $flags. When available, the $flags argument is used to generate the local variable write_access. The versions of the probed functions that do not have the $flags argument have a $write argument and that is used instead for the local variable write_access. Testing target variable available Example
    Conditional Statements handlers conditional statements SystemTap statements conditional statements In some cases, the output of a SystemTap script may be too large. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe. Do this by using conditionals in handlers. SystemTap accepts the following types of conditional statements: If/Else Statements handlers conditional statements if/else SystemTap statements conditional statements if/else if/else conditional statements handlers Format: if (condition) statement1 else statement2 The statement1 is executed if the condition expression is non-zero. The statement2 is executed if the condition expression is zero. The else clause (else statement2) is optional. Both statement1 and statement2 can be statement blocks. ifelse.stp global countread, countnonread probe kernel.function("vfs_read"),kernel.function("vfs_write") { if (probefunc()=="vfs_read") countread ++ else countnonread ++ } probe timer.s(5) { exit() } probe end { printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread) } is a script that counts how many virtual file system reads (vfs_read) and writes (vfs_write) the system performs within a 5-second span. When run, the script increments the value of the variable countread by 1 if the name of the function it probed matches vfs_read (as noted by the condition if (probefunc()=="vfs_read")); otherwise, it increments countnonread (else {countnonread ++}). While Loops handlers conditional statements while loops SystemTap statements conditional statements while loops while loops conditional statements handlers Format: while (condition) statement So long as condition is non-zero the block of statements in statement are executed. The statement is often a statement block and it must change a value so condition will eventually be zero. For Loops handlers conditional statements for loops SystemTap statements conditional statements for loops for loops conditional statements handlers Format: for (initialization; conditional; increment) statement The for loop is shorthand for a while loop. The following is the equivalent while loop: initialization while (conditional) { statement increment } need simple, simple examples for FOR and WHILE Conditional Operators handlers conditional statements conditional operators SystemTap statements conditional statements conditional operators conditional operators conditional statements handlers Aside from == ("is equal to"), following operators can also be used in conditional statements: >= Greater than or equal to <= Less than or equal to != Is not equal to
    Command-Line Arguments handlers SystemTap handler constructs command-line arguments SystemTap statements SystemTap handler constructs command-line arguments command-line arguments SystemTap handler constructs handlers A SystemTap script can also accept simple command-line arguments using a $ or @ immediately followed by the number of the argument on the command line. Use $ if you are expecting the user to enter an integer as a command-line argument, and @ if you are expecting a string. commandlineargs.stp probe kernel.function(@1) { } probe kernel.function(@1).return { } is similar to , except that it allows you to pass the kernel function to be probed as a command-line argument (as in stap commandlineargs.stp kernel function). You can also specify the script to accept multiple command-line arguments, noting them as @1, @2, and so on, in the order they are entered by the user. handlers SystemTap handler constructs variable notations SystemTap statements SystemTap handler constructs variable notations variable notations SystemTap handler constructs handlers
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml000066400000000000000000001125621305163227500243300ustar00rootroot00000000000000
    SystemTap Scripts scripts introduction SystemTap scripts introduction For the most part, SystemTap scripts are the foundation of each SystemTap session. SystemTap scripts instruct SystemTap on what type of information to collect, and what to do once that information is collected. scripts introduction components SystemTap scripts introduction components components SystemTap scripts introduction scripts introduction events and handlers SystemTap scripts introduction events and handlers handlers and events SystemTap scripts introduction As stated in , SystemTap scripts are made up of two components: events and handlers. Once a SystemTap session is underway, SystemTap monitors the operating system for the specified events and executes the handlers as they occur. Note scripts introduction probes SystemTap scripts introduction probes probes SystemTap scripts introduction An event and its corresponding handler is collectively called a probe. A SystemTap script can have multiple probes. A probe's handler is commonly referred to as a probe body. In terms of application development, using events and handlers is similar to instrumenting the code by inserting diagnostic print statements in a program's sequence of commands. These diagnostic print statements allow you to view a history of commands executed once the program is run. SystemTap scripts allow insertion of the instrumentation code without recompilation of the code and allows more flexibility with regard to handlers. Events serve as the triggers for handlers to run; handlers can be specified to record specified data and print it in a certain manner. Format scripts introduction format and syntax SystemTap scripts introduction format and syntax format and syntax SystemTap scripts introduction syntax and format SystemTap scripts introduction SystemTap scripts use the file extension .stp, and contains probes written in the following format: probe event {statements} SystemTap supports multiple events per probe; multiple events are delimited by a comma (,). If multiple events are specified in a single probe, SystemTap will execute the handler when any of the specified events occur. scripts introduction statement blocks SystemTap scripts introduction statement blocks statement blocks SystemTap scripts introduction Each probe has a corresponding statement block. This statement block is enclosed in braces ({ }) and contains the statements to be executed per event. SystemTap executes these statements in sequence; special separators or terminators are generally not necessary between multiple statements. Note Statement blocks in SystemTap scripts follow the same syntax and semantics as the C programming language. A statement block can be nested within another statement block. scripts introduction functions SystemTap scripts introduction functions functions SystemTap scripts introduction SystemTap allows you to write functions to factor out code to be used by a number of probes. Thus, rather than repeatedly writing the same series of statements in multiple probes, you can just place the instructions in a function, as in: function function_name(arguments) {statements} probe event {function_name(arguments)} The statements in function_name are executed when the probe for event executes. The arguments are optional values passed into the function. Important is designed to introduce readers to the basics of SystemTap scripts. To understand SystemTap scripts better, it is advisable that you refer to ; each section therein provides a detailed explanation of the script, its events, handlers, and expected output.
    Event Events introduction SystemTap events can be broadly classified into two types: synchronous and asynchronous. Synchronous Events Events synchronous events synchronous events Events A synchronous event occurs when any process executes an instruction at a particular location in kernel code. This gives other events a reference point from which more contextual data may be available. Events examples of synchronous and asynchronous events examples of synchronous and asynchronous events Events Examples of synchronous events include: syscall.system_call Events syscall.system_call syscall.system_call Events The entry to the system call system_call. If the exit from a syscall is desired, appending a .return to the event monitor the exit of the system call instead. For example, to specify the entry and exit of the system call close, use syscall.close and syscall.close.return respectively. vfs.file_operation Events vfs.file_operation vfs.file_operation Events The entry to the file_operation event for Virtual File System (VFS). Similar to syscall event, appending a .return to the event monitors the exit of the file_operation operation. kernel.function("function") Events kernel.function("function") kernel.function("function") Events The entry to the kernel function function. For example, kernel.function("sys_open") refers to the "event" that occurs when the kernel function sys_open is called by any thread in the system. To specify the return of the kernel function sys_open, append the return string to the event statement; that is, kernel.function("sys_open").return. Events wildcards wildcards in events events wildcards When defining probe events, you can use asterisk (*) for wildcards. You can also trace the entry or exit of a function in a kernel source file. Consider the following example: wildcards.stp probe kernel.function("*@net/socket.c") { } probe kernel.function("*@net/socket.c").return { } Wild cards also work for other types of events, for example syscall.* In the previous example, the first probe's event specifies the entry of ALL functions in the kernel source file net/socket.c. The second probe specifies the exit of all those functions. Note that in this example, there are no statements in the handler; as such, no information will be collected or displayed. kernel.trace("tracepoint") tracepoint Events kernel.trace("tracepoint") kernel.trace("tracepoint") Events The static probe for tracepoint. Recent kernels (2.6.30 and newer) include instrumentation for specific events in the kernel. These events are statically marked with tracepoints. One example of a tracepoint available in systemtap is kernel.trace("kfree_skb") which indicates each time a network buffer is freed in the kernel. module("module").function("function") Events module("module") module("module") Events Allows you to probe functions within modules. For example: moduleprobe.stp probe module("ext3").function("*") { } probe module("ext3").function("*").return { } The first probe in points to the entry of all functions for the ext3 module. The second probe points to the exits of all functions for that same module; the use of the .return suffix is similar to kernel.function(). Note that the probes in do not contain statements in the probe handlers, and as such will not print any useful data (as in ). A system's kernel modules are typically located in /lib/modules/kernel_version, where kernel_version refers to the currently loaded kernel version. Modules use the file name extension .ko. Asynchronous Events Events asynchronous events asynchronous events Events Asynchronous events are not tied to a particular instruction or location in code. This family of probe points consists mainly of counters, timers, and similar constructs. Examples of asynchronous events include: begin Events begin begin Events The startup of a SystemTap session; that is, as soon as the SystemTap script is run. end Events end end Events The end of a SystemTap session. timer events Events timer events timer events Events An event that specifies a handler to be executed periodically. For example: timer-s.stp probe timer.s(4) { printf("hello world\n") } is an example of a probe that prints hello world every 4 seconds. It is also possible to use the following timer events: timer.ms(milliseconds) timer.us(microseconds) timer.ns(nanoseconds) timer.hz(hertz) timer.jiffies(jiffies) When used in conjunction with other probes that collect information, timer events allows you to print out get periodic updates and see how that information changes over time. Important SystemTap supports the use of a large collection of probe events. For more information about supported events, refer to man stapprobes. The SEE ALSO section of man stapprobes also contains links to other man pages that discuss supported events for specific subsystems and components. is reference appropriate? too advanced for readers (it seems so to me)? please advise.
    SystemTap Handler/Body handlers introduction Consider the following sample script: helloworld.stp probe begin { printf ("hello world\n") exit () } In , the event begin (that is, the start of the session) triggers the handler enclosed in { }, which simply prints hello world followed by a new-line, then exits. Note functions (used in handlers) exit() exit() functions SystemTap scripts continue to run until the exit() function executes. If the users wants to stop the execution of the script, it can interrupted manually with CtrlC. printf ( ) Statements printf() format strings The printf () statement is one of the simplest functions for printing data. printf () can also be used to display data using a wide variety of SystemTap functions in the following format: printf ("format string\n", arguments) printf() format strings format strings printf() The format string specifies how arguments should be printed. The format string of instructs SystemTap to print hello world, and contains no format specifiers. printf() format specifiers format specifiers printf() You can use the format specifiers %s (for strings) and %d (for numbers) in format strings, depending on your list of arguments. Format strings can have multiple format specifiers, each matching a corresponding argument; multiple arguments are delimited by a comma (,). Note printf() syntax and format syntax and format printf() format and syntax printf() Semantically, the SystemTap printf function is very similar to its C language counterpart. The aforementioned syntax and format for SystemTap's printf function is identical to that of the C-style printf. To illustrate this, consider the following probe example: variables-in-printf-statements.stp probe syscall.open { printf ("%s(%d) open\n", execname(), pid()) } instructs SystemTap to probe all entries to the system call open; for each event, it prints the current execname() (a string with the executable name) and pid() (the current process ID number), followed by the word open. A snippet of this probe's output would look like: editorial review: does a clarification that "format specifier1" is to "argument1", "format specifier2" is to "argument2", or is this clear enough? vmware-guestd(2206) open hald(2360) open hald(2360) open hald(2360) open df(3433) open df(3433) open df(3433) open hald(2360) open SystemTap Functions functions SystemTap script functions handler functions SystemTap supports a wide variety of functions that can be used as printf () arguments. uses the SystemTap functions execname() (name of the process that called a kernel function/performed a system call) and pid() (current process ID). is "handler function" an appropriate term? wcohen: use "SystemTap functions" to match up language in man pages The following is a list of commonly-used SystemTap functions: tid() functions tid() functions tid() tid() functions The ID of the current thread. uid() functions uid() uid() functions The ID of the current user. cpu() functions cpu() cpu() functions The current CPU number. gettimeofday_s() functions gettimeofday_s() gettimeofday_s() functions The number of seconds since UNIX epoch (January 1, 1970). ctime() functions ctime() ctime() functions Convert number of seconds since UNIX epoch to date. pp() functions pp() pp() functions A string describing the probe point currently being handled. thread_indent() functions thread_indent() thread_indent() functions This particular function is quite useful in providing you with a way to better organize your print results. The function takes one argument, an indentation delta, which indicates how many spaces to add or remove from a thread's "indentation counter". It then returns a string with some generic trace data along with an appropriate number of indentation spaces. The generic data included in the returned string includes a timestamp (number of microseconds since the first call to thread_indent() by the thread), a process name, and the thread ID. This allows you to identify what functions were called, who called them, and the duration of each function call. If call entries and exits immediately precede each other, it is easy to match them. However, in most cases, after a first function call entry is made several other call entries and exits may be made before the first call exits. The indentation counter helps you match an entry with its corresponding exit by indenting the next function call if it is not the exit of the previous one. Consider the following example on the use of thread_indent(): thread_indent.stp probe kernel.function("*@net/socket.c").call { printf ("%s -> %s\n", thread_indent(1), probefunc()) } probe kernel.function("*@net/socket.c").return { printf ("%s <- %s\n", thread_indent(-1), probefunc()) } prints out the thread_indent() and probe functions at each event in the following format: 0 ftp(7223): -> sys_socketcall 1159 ftp(7223): -> sys_socket 2173 ftp(7223): -> __sock_create 2286 ftp(7223): -> sock_alloc_inode 2737 ftp(7223): <- sock_alloc_inode 3349 ftp(7223): -> sock_alloc 3389 ftp(7223): <- sock_alloc 3417 ftp(7223): <- __sock_create 4117 ftp(7223): -> sock_create 4160 ftp(7223): <- sock_create 4301 ftp(7223): -> sock_map_fd 4644 ftp(7223): -> sock_map_file 4699 ftp(7223): <- sock_map_file 4715 ftp(7223): <- sock_map_fd 4732 ftp(7223): <- sys_socket 4775 ftp(7223): <- sys_socketcall This sample output contains the following information: The time (in microseconds) since the initial thread_indent() call for the thread (included in the string from thread_indent()). The process name (and its corresponding ID) that made the function call (included in the string from thread_indent()). An arrow signifying whether the call was an entry (<-) or an exit (->); the indentations help you match specific function call entries with their corresponding exits. The name of the function called by the process. remember to add a reference later to "tapsets" from here, to clarify that thread_indent is defined in tapsets as a special function of sorts name local variables name variables (local) name name local variables Identifies the name of a specific system call. This variable can only be used in probes that use the event syscall.system_call. target() functions target() target() functions Used in conjunction with stap script -x process ID or stap script -c command. If you want to specify a script to take an argument of a process ID or command, use target() as the variable in the script to refer to it. For example: targetexample.stp probe syscall.* { if (pid() == target()) printf("%s\n", name) } When is run with the argument -x process ID, it watches all system calls (as specified by the event syscall.*) and prints out the name of all system calls made by the specified process. This has the same effect as specifying if (pid() == process ID) each time you wish to target a specific process. However, using target() makes it easier for you to re-use the script, giving you the ability to pass a process ID as an argument each time you wish to run the script (that is, stap targetexample.stp -x process ID). For more information about supported SystemTap functions, refer to man stapfuncs. will need a complete listing of supported handler functions? also, SystemTap function descriptions seem ambiguous, please advise.
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Section.xml000066400000000000000000000004471305163227500243030ustar00rootroot00000000000000
    Section 1 Test Test of a section
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/SystemTap_Beginners_Guide.ent000066400000000000000000000005011305163227500277160ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/SystemTap_Beginners_Guide.pdf000066400000000000000000016473241305163227500277260ustar00rootroot00000000000000%PDF-1.4 % 1 0 obj << /Title (SystemTap Beginners Guide - Introduction to SystemTap) /Author (Logo) /Creator (DocBook XSL Stylesheets with Apache FOP) /Producer (Apache FOP Version SVN branches/fop-2_0) /CreationDate (D:20170217114950-05'00') >> endobj 2 0 obj << /N 3 /Length 3 0 R /Filter /FlateDecode >> stream xZ{UӴj7j'%n]f7;avv&vljyz^]RB SE4"&u]'6NqIx!Dcb7IQH!pXse[U$l~yι0&r2W1BkXh{C~`͠X -~6>]~¡/31+ن[n5N[Yw*"]7Y3Ւj'p[]AM2[g}Wn%+H_l*pR.ӳ!'~ŕ !\L aT&8͊>c~fo!~uוruc(,ØeT+u)eUI?JemYs`f1Hl-XθiJu缐ɒfLB%3O%2&Mrƥ+$}3T`3SSJռM%_ $2E\r)=e(^q+@_a)4oFZ1o,ʧHDvIV7A4~Yk.7դ/TŚ2jeI[Z!3ap\2Y&l;b9O_ >|b{*GOӚI֟Q9<y 앑#ج4Ss_eE+tջ7̿58AsYuu%8Cd r9:cΰ3fB&gBs7D!Jr0K%\Rz*ZcΐrYbbTח6Nz:[u>Cv|jvPlAQ%Rk6Qx=gю%v88B26hM(7^I)[n&Oܞ""RpUhJEF"ώ** 3k.M5O_T[] S $ў*lO>PX{Z1XY&X_n=XZ3ȶJuu6ծ0s=ӊl[~H|Yݼ^<<ù8{9N5瓕ON]|g z%^$ɏ gDm>F?+jnm%ۼH"/h+i_ӡ,Hg))hd{;[ڸYҹ6 lKq{'Sξ^3IJsl: > X&Yij9My缘 ( ] /Q헨)*ymO],YlE"öW3,yk OUϒFnK'C,O0ȥ|T,"\Y군ڰv;NW28m^rͿ̮]08o ZUUJ\Ċkloy~ `Ih/zvZ,V*j~ 9ĕZ~[tMY!)Ȏ{EPvANoYdWgҤ +)tVFrI\_3MX/Y4n:#:} 1{:aiM+WkZWUխʴ ^жt>tM7Po0PQ՜]a㤡uoΘDmm;GIrBn` Jom3r6kh_9\ I=؏̷rm$uߔRomRi!eYlQU9iiGXdpE2NԌ=V(HS*n\϶nbG^הFn;]or";Vi7܎_W]&{0B87ahM[|H1B 1}V@Hr'~?pkOp;֮nI"<NJމquE8ŬOG:0p] at PڠZŝv9Vl%cEǠAհj7cy 07j[=b(?AͬFњ"UzqH_Z8GlvjJK:G5c:9gWUF7Xhe"R~[{d aEB kٍ${۾CmI${m aO$=^Jيq{/_:y{&h{Ʈ՝z+5&EW3Eew8 ks#|{bEdڼ b/v(reOֳI}X̥§ E69RyCZYIxQ\Y c*xE7p!Ik^4~7ywtgӿkXHR ?Qg endstream endobj 3 0 obj 5016 endobj 4 0 obj [/ICCBased 2 0 R] endobj 5 0 obj << /Type /Metadata /Subtype /XML /Length 6 0 R >> stream Logo application/pdf SystemTap Beginners Guide - Introduction to SystemTap en 2017-02-17T11:49:50-05:00 Apache FOP Version SVN branches/fop-2_0 1.4 DocBook XSL Stylesheets with Apache FOP 2017-02-17T11:49:50-05:00 2017-02-17T11:49:50-05:00 endstream endobj 6 0 obj 997 endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode >> stream xQ=O0+n[KVa1TmL**,=;+$l5ljS`jt 7d`ss|@,CS-Ru`XHH`C {Xwi;3ӠeKhHmQ7mpc'bClXfh$ǡ7cg{{`IEFmWȰ R˾ks_=2Y=(҇`&k۵:O$_U?wk endstream endobj 8 0 obj 278 endobj 9 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 7 0 R >> endobj 12 0 obj << /URI (mailto:ddomingo@redhat.com) /S /URI >> endobj 13 0 obj << /Type /Annot /Subtype /Link /Rect [ 367.37 627.515 481.37 635.375 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 12 0 R /H /I >> endobj 14 0 obj << /URI (mailto:wcohen@redhat.com) /S /URI >> endobj 15 0 obj << /Type /Annot /Subtype /Link /Rect [ 367.37 614.515 469.37 622.375 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 14 0 R /H /I >> endobj 16 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream xUoF~篘VJ.Q^UIl(^v}YpȥpU`f}3;|(;5@Yߎ6 ̵Glc3̦G Գu@yx͠i-i|Ekv{J`m]&S&dš< -\𵐒\"~w*26:4&Fp|xߨF:]22d?v<:ykddZƣ#e{ȘLZiڝ.uq=8?5 msMxZȍ#MD.ET>N4:Wqi$hʈ M(ЫXTQg? }KQKYpOʄ\cش=n8kxj;RYo9t{U>Q3T.K>2W)y 7>Fַ3?NUK=bPMX;c6~O?FC;#Gt .49teRxǠ`# UTf\갺{hHrΡPއ9?*! %йXL吩X$c(esY*^g. S/WVD\vy , աJ=1HG0Qbaw 6WB.!E.8g'Vʂ'ez nx|< W;0+l , X+$?x!%|qx4dJ .'77SQ endstream endobj 17 0 obj 1056 endobj 18 0 obj [ 13 0 R 15 0 R ] endobj 19 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 18 0 R /Contents 16 0 R >> endobj 20 0 obj << /URI (https://fedorahosted.org/liberation-fonts/) /S /URI >> endobj 21 0 obj << /Type /Annot /Subtype /Link /Rect [ 402.464 598.573 474.164 607.823 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 20 0 R /H /I >> endobj 22 0 obj << /Type /Annot /Subtype /Link /Rect [ 93.062 66.696 234.47 74.096 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 20 0 R /H /I >> endobj 23 0 obj << /Length 24 0 R /Filter /FlateDecode >> stream xXے}Wc\~|Ǝ3K5) v3 !)OTIs|Zy=$O~iQ8iR;]uBǏp:qOF3O{K[ʮ1rSe+_~s/Q}< pCka0&  ܔ7su;R .^nftq6 NEY]rG?&#7L PKO֫G֥R^ه(\0ӣ~7wцOs.@Ή rJ#VnE."l#8r4Ͳ4yP^Vg| QPDfSEՋNvgG~Izڕ)-:UAͮlߋVښE#]#sU95JpSoIUۺ vLx^QƩSEhF$ eߑO@h{<%9C@8#!!S$3[+=JGub4v LH#v; 2H3 FZ4xlK(CV ښ Ӣ, \꾥iw-U+- k< MI~ճ(焉VRY8Z7/M:IUտRdP \ļ iP;r@p9uSB2 8)lQCS?ف_^n$>Cˢhzs*Tt26A/|M"C®oZQqp@i3DGۺ,9{nE8T]ᗺT(軺,n! ͒{Y,IAE-CTDN,{F٪RR%5BoOqt$(*U2c zoFsCpnQZR#Y\#ۀ^/z$K𡒯FvC4U,r-:d 1ʐmE }י]B_m \$XnLF3rHob b<fu0AciƌЪ]-43D}e,_e#n73'=!:M BwTXP\0j2| 4ԴEyoPᲜˆ 4$ۉMɻG3x3{IC4c?`GѬhc:9q7TUgUXkB=U AۑjJ8|NB.8̏O" aZ/)[B:1jԮzbnop.ح-SoKXw kz^8C^G 3( :⛠gj0ҽi@&(F "\[vHsg/EkXe 5Q8Lhfz^NhzY ک=5QɺƲIcn[Фr,Egow4sf8|8i=)\onё|N"~%#Z}+yH/lew#Fd?n7to&1].!ګy4 sSd{L  ! `0,2\t 3)>BgKf*Lq:W&C6,<]g>JpԊq*nX _9D8%\\($N =![=ӊ>ӨMX~ԯ3In4Q3xKN PIY<I+]"Ks5nm^^yYVӞolxMoQ!0$MEz]f> endobj 27 0 obj << /Length 28 0 R /Filter /FlateDecode >> stream xZI8ׯб;R/=:<1ck>P`4KĒ$ʞ[D~L>aK&ryB9\*.]OI; w;&b};AOS%1= yU\ _cuu:36>ի`7J <-͑ӇJD7NcdY|+1LEKgQ!AWdmgܝ3fدYNRQ,-qŒ6M p>d#.wlʩtDZEd]3)y]^eYkօm!F.z}hE,ECAj}v*Y:.Cѡ"4+]$ސ 9ˏ e^%i'^ǥ,>T5f8+Q-+֔,"IוrC8$)*oSizpp\R6-RFܗ8_ڦ)uKnЦfM|{jq.Aт҇f^q3.7@'Iurn˯ Xgz|ou^n!)~t2pɬ 5;#9YqfO3w<_]Ŭ>$s82nAxk_J=g}Y-򑧤EYvBt'76\pioIJsE`CemD#pHL/O"#&}=e$Q> xC_oRIoO:tHWcU{.eg] \QݲQxL""T461׬y:i">jVtn'bׁFcQ+Xl5ߖ{QgU*&%` /<-˖cVi6T󜓜{,s-ʾBn a6hҬ0l1) ʲyJkKA_Rsw8ɚ6 Jd>_oiCޢ(Ȫ(U>6&-JGeb_5^jWeΖvZlӄz(já?=ۢ\L2Obt$cEaS$8,g]mG̊$of񹶛LXj3Y7pOLv9d#ܙgfn:FCKbSۤ+:f1Щ5SUʊ@u[ٺH>mV}>-H >OMB0%\iK 3͜C9xr "tE,M1΄Z =JǍ$J jZVv,pC\eiކuQ? DaNmr`BHOD2t&ŝ&6' 0 KeB:c$g\\+w2Qa8j+} h@Zc =:1Pv]P` S'P[Ęp*چ]:Xgh׉(%B"ԞB$pfTQOÛ}F $Au-Ozu,+SB RK~A=1eZ<([r!MvM^ 2bɥ#'r@K:6)zt.(U1bD<^Q#";v;}h|%.xhKog3`zFwfmC6FPnz* |խiYF*`qd\lt8bymҶ~yKݏ }(z~0-c 蝪uJe^r!zq2TpW O{@dR+i\:/te:Wgѓsˈo#==: ԫFP~/XꈅE<-rH?ot}ߔ'\ j W%;SZ6%]MbW6Չ endstream endobj 28 0 obj 2601 endobj 29 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 27 0 R >> endobj 30 0 obj << /Length 31 0 R /Filter /FlateDecode >> stream x՘K6t&,-4mC" Zʢ#.)ɢӦiHl>f8 ?/Wm>$qO/) pQB/0_(].:j6hc -oao f7_Znz/Zuyh v]Kazxo 'GP( zp?K-*x]J={?-^]iT6b\:q`x?3>=ζoVE$f,M.:j֑ql4 ڧB6&C?11/QN7haPNӋHh606Ha0Ja+Xz4x1 '%;DQߡ;I&usġdezG<8uB2bB8Moe)1wBiryJs4bWHB,Aeu5j!q&N)!|I3"P 8 /%4N#ah}DFVLP gz`C=պZ neYʃxS>{Tƀ>Q~9uh=4=!E$\ɺC WR*E <q}GA%ګle={R '*t˗^Ox4$ad' [3v˲ +ReYJO0tLۣЪWk" /7Wg0U[dLearTg>z]#/Llu!dj (9c/f C_4>D/=\A%˛g3>"4tZܚvRmo./^ekŬ8:?FGu n.1.99?9?i^Y$b~>MfAi!r.1 .^ZE]mvþnxVB7_(^w}𥵿CzA:uǟibLCTqOb4IX! !@O'As8)aΊ/ԎxJ\@Kk~5u<@neMs5l RE}(PIRF3|/tr[;IJMW݄h2wU['ɒ}za'0+l,ZE3"^`1H1jvN1xBnѧ-v;}ħ1{ [N1kjS$SU3=aAܫ;*qț"G;Oe"Ч3)5Ss#IV=Ƭ"a="k,$+<[7A01kd׫J6w-l]^fȌJjVdć2AZ"m SIDvߡe8ZV5=H&Hw=ȡaA>D07]cN0fX#K#hO6K]N71a֙D?h9ǶWwOى60eh#DC9לNcR#ryQ"% ;E_]@2ͼeCx+PB)TTz_dJ7+Kھ Y L9&p(ʲYvW|)JO`ȎFبEBCMKq(B70)mSq9LMPq`7$Ŀ&5RSnP,Pj䥑m+ Qnl[gBHbWwDOC!:0eCqJ.30nw&ZlҘ݉a̗a" endstream endobj 31 0 obj 1930 endobj 32 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 30 0 R >> endobj 33 0 obj << /URI (http://sourceware.org/bugzilla/) /S /URI >> endobj 34 0 obj << /Type /Annot /Subtype /Link /Rect [ 351.758 658.375 485.148 667.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 33 0 R /H /I >> endobj 35 0 obj << /Length 36 0 R /Filter /FlateDecode >> stream xVM0+RCJݪUUuPUlqvK Ȍg{3o_K5޷ @槧 d#JC#0${/=QOΘ;@o*Z+ghg\YwW¶v>lϰ}.t=ӎ5q=~Y\# 8b  6s"?Љw*kff<$,& ci3!ad6l{2wRʇɜvǏ)15U`(ghd.Zمxl!|*3)nFζr)Jٶ˫CNe'[5.GRF = zgٲ*ͭFYxߩ;l/RrgZliLj޺_AD&xۡ =jѫF-Fb̾  .wUg n/L?Oq| endstream endobj 36 0 obj 835 endobj 37 0 obj [ 34 0 R ] endobj 38 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 37 0 R /Contents 35 0 R >> endobj 39 0 obj << /Length 40 0 R /Filter /FlateDecode >> stream xT0+]iq8njohS!6:1P$;~3y=p`tS1ɠd}8|rrAy>d,>ўtS7XQ]Xe! ׀.5'2 %T_B"v:L9>dNo*R^`]Xu16r:A+BbƝp6<ah|D<`ňBL&5%lBBs֫WyYS[{ <wJvj6-:;nq;B[Y!hV(_Xr+U-g52ol ֎£ 54>57D!= lu^spq\IjZ;SfI/Ȇ"!{!9n.KZo;-8od;wt /ʋqR]lL+t4Uے endstream endobj 40 0 obj 499 endobj 41 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 39 0 R >> endobj 42 0 obj << /Length 43 0 R /Filter /FlateDecode >> stream xXK6W6KJDآ-"muC֢B$ѫG@Y (qq CvDT*x8丂rc%ܣf3R[haM^=߫|ȯ`4qAVf2wws &k݀~b6#~18OB>l3OX8'm~FzZ `$fYILOjf2؎͔O!0Xb[0YUA|'h]Bjpc}iq)ar|bpg>Fs^fo/%czu9u09 ;NCqjsB=:pfE}R1p( s$ wR6:vTÈۢ>8 dfXLUIT$yYEi:,#:(R6$c9LdR5S @1qN%s@IB 8+I*IdC o2Punɱ*$<1E" |) YӡF_QQΝl1 [MbuLimA$J5SR;]<"W)޼!wJiS);P\a [qaA<;xxn (R\Ir}ae]*4~_@i7缳0pkȅ5T;TB^g %Qc]v'_TQB2]-XjT?TT8)wuY6Lu,N5ڠ(I2`]UÁt4yTⱼO_]40dxt5f!8)ԏ-Ii?tQ \C!qtNbl1$Pc6ΎZ-ʞsptUy3jaS}i :aCxQX=0@`n:7~08n(P9#EŬy-ׁWYZ }gx۶ enZD 3sL{gg. #{Hy\DQO,@1@;Rvf;@<6;TvQդ*CbRVr$!regTK`:W)ցe.nk$e(NY ++6g/ S[TƘ/&0-J_n_} *-|K/M*J:;N#o'{n[| @\8tla_u*T1S KkM83 /Я6X.L1^-A6?tLYW{lM̺*=sb>-XqG鱎YKDɟ,9P2y+By$vAb#7ц4; 5A.o _?i~ a| 2 r9 u 'Хm3\@5žtyMD`1c8C+ wS$ZB? ]vdVvx]FigBk/@ڌ^וE@1rpMi3hnH*Yg@/)iGH)VZDP<\QڛX52_ endstream endobj 43 0 obj 1858 endobj 44 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 42 0 R >> endobj 45 0 obj << /Length 46 0 R /Filter /FlateDecode >> stream xYݏܶ߿KcļE\h8"(<([Zi-i}CҒ(HmJ3Ùߌ>("$iѮQ$9NeÒjS. $<̏7JhanxqD?A `] c;x!AN5&Rxs7aﶨЏ/m_?v=[,W½"&o-6n[/S6zuB6xlL͟byhlѮFRDJ%2}flpaRULan}ાMr!/Z‰v_pQM~@EX7+ -UUu"<M|[6x „dOy91%J#ڻ ŌzI毗'\NA4B BTWQ16#>gS"z/ 7U^bd|Um%M9pT*d8ЊkuHn ND-O@1@eL<͡-UEYf_Y[ +CeM2é,ۀ@&Xh =c2nAvMl[hb6a\vQ_)4E25#g!.w5KX<$QdAUݒ xxd".!P"IZGmR-FSse] 4^s2SesNL$VND5:tOPq1F9Qo_.MW].O&JH*J]/uFN0AGWi'_Pzǰ" R==a@F|  UrEtXθ`i1Ux 4ix 5o_BfL8F4J f*Zt8*;Y qK=ao!aes Ix4P[jsD}#tg֧i ؋USA7mp(aiz 3/eճVR,xg]eMB3&={Fd=i7Uz*N[kD,H+UjڂMU|`15~aPa5׀mrx ~sr\Vo̹Ή&S%ۍ1hc 6F$k𭖑rBƲ7zoOwOFI(AKx4pԿBPtGĭLBYVCI$ɀ/O3~FqiHʯQgm YJL8kw 7uǦ<'[Bbjc"vK3L-0!*VJDfEf6g֤4It FĻ:y(4R>eJ4QLҐ|*+u6a]1q i![>OХIεV~:÷clӉ*~-ÝWu \Wzd=؇tBgآ'Mqӻ?Ǔs|{=Уº;f6s933 ˒|Q\օqF%3{ m-{*˝e `'Ơ=aصc$bpЩ,5v\Z 8DHS o^he|nٻxߺ9|!93MhOC~. seH9MT\[)M~<+0>]1ͧr7Wk&h|J]<?#>ț~ jiX3i*wK[EPYbQv~R ̝cfVk:,ZEk( ch% VVəXf*dbeX1OQ '` endstream endobj 46 0 obj 2356 endobj 47 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 45 0 R >> endobj 48 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 433.4 null] >> endobj 49 0 obj << /Type /Annot /Subtype /Link /Rect [ 438.998 316.175 500.148 325.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 50 0 obj << /Type /Annot /Subtype /Link /Rect [ 73.858 303.175 173.328 312.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 51 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 185.2 null] >> endobj 52 0 obj << /Type /Annot /Subtype /Link /Rect [ 230.598 267.175 511.838 276.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 53 0 obj << /Type /Annot /Subtype /Link /Rect [ 73.858 254.175 117.198 263.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 54 0 obj << /Length 55 0 R /Filter /FlateDecode >> stream xZ[~c0$%mE$(2A屰̿92u-6A23oԗd}*=t$uBŵT B!&C4mAD&#./Uo_;x˪=Á^\۴XgirT.ǔ7P PʡږٹfQ)c^]]tk6 F>-[X O@>H:4<*Uҳl2O(O-d9yN+8d_2+.;%Cm#'(xaA\PqY[!)!zb B"e?hk#KIs"F N= F}F(A}Ts\(tɎ5 ~&c7CCzVycgY j#XD&~>.h&k ;"ٵu*@@jQqC'1AUKAЋU)]L%`F2A%J\dݤ sA [|u-Abz-.MՐ J; x_M(Irg_M(pmH(0{dax\2Z 91.]EjvJEfGM6\{v kaĀk29!B7_lx{$ΖB=jdɺI5S3ٷYMCXR0HZ ?]EңxR1$P5A]6 |Y^%@ G3Q7ibtRǣ Z%"b* x[ES#܇u i:-={z@U4)ߪm1S%$!z 24{Xs 0Ҟ?r푷KAwCVx$={d{Z(.0plX~eBbe5W0q845-+;f1KU)D32񮨷>J%2=Hq8t;t2sZ1݋|G]F!XRxj|Bؾuj%rJ8m 84.H9|+pqNcFRZ6¶AiԻ 7 Lv8(fFi {k`E]KQ0RӤB$QqG]L~1RbB(HiݺO Xa߰nLIr2M07G$ץgt7C=%Ԑ (IJj@<=J`Z뒠ѡAv5D.Pַ҅b1H[Itr0KDA9J!N©:lJL2eq.3Ȑkrwh G yp{Ǽ:YܫcH0=Rр}: C#$o9#sŗ> = f! 17_/o!9s4FǿC8\?H^B~ 4fjhU!4V^9pחM|wu`p!!;6ԋ 2~7i |#Nm F0pQNԸM:oyD̤U66 W}17UЀYtv1 <=6KR+A`ZX r>/lu cw S@ǜi+ rlst}}~'-ru= :Ǽu#Ek.'(p'wKo)B`ӛ52{]`Q**67Ư%~_䂳 endstream endobj 55 0 obj 2504 endobj 56 0 obj [ 49 0 R 50 0 R 52 0 R 53 0 R ] endobj 57 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 56 0 R /Contents 54 0 R >> endobj 58 0 obj << /Length 59 0 R /Filter /FlateDecode >> stream xZo߿olHJc^Ѣh>A ʶz+iO!Iqu) ܮ(35~ zq\$KiJ"U<_DQH% Z&lػD%< lHi6iOuE>oK]N2{7juzzMͷ8N9fd$L)786M<_oyпeǛ>0/ JeKy޽R8-˕RyƖXlB O)XU6\;PB,rUs԰ r2J伄Q><] 'P]jcS%6?1`&rߛ=w" M4D-vG~)T۷Tb1cDžB sl3rYxT^'2,ѣ z~w Tgɴ::adWj_ׂP4=/o)33񯜗ϣK<{μ>/7S%ցikK\pV7!-3lHmd΄t-lk(қӏILO;vAqj_H㎕|e9?E# R ݮN=ݱ+ 59v*M;&Кb 5}R7(>zl E,(* %OЏh.%,Kˡ0fP%j{spS7]Hա,PM5wSlS5TU$PŸQjw'HBՌ>G^"$! 6Ghf([tH ]{Qrydp _Ǹjvq6Pvn2敉Q[K 468-SFGOjdj"9Yq<ˏ+7Uo gcоX, MmHu .oȤm0Ab6LlUrƶ%r3 ?u[3rxLvW~7['br[`cݴ&z wi_0/r Zn˾'¼b=]Ӱ>3TK% }%BܷlՑlvݘk*`]{<-Ŧr\|].I endstream endobj 59 0 obj 2233 endobj 60 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 58 0 R >> endobj 61 0 obj << /Length 62 0 R /Filter /FlateDecode >> stream xXKs6Wi%߹5mI;9$VIrEH$.K}hy[]~Y11_Aac <^.'Ss\J`.Z%eoY .ݏ#*V^>|=]=&jWpz]=BGq5m~ZT J|>ի0}A ѡF6S֌F] c%If.L۱!0'EQ4D'9Qy2+}\mj!Z9+FY$0h/9l//!QgQ"zGI/!-@ vqJJ.g{2jl 'p Agr^dSYmVd' @c+^ d]$"-3 qxa`/f+|wq^fb}g!m?kIv^l3Yf8`'<.BT)v8z{bՌq1N|r&P w ݒ0WU Q{U"V/jD"UEH{jU@.d) JJ@o{Sd+Y J3h@F3ԳdO<0MR %^CG#oA 2 d2Q8:B+PXEJ~%fnMv6ry|uD]xwYͱZrQ7N!#EGސu X'FǨX;;U-T0[`3Bx9m=b`]0v<w{.B'X9 [+2GgH!Ȧ~ +Hhl*Ge6S9<`yn,3dqp.zQ klUK곿 WM2B%6Ź:nލ9K%rl)̔JmB" e6s“:X|mLpDe\x tŷPj1p%0cc;ާ1ьb#A`KNgq݅Ea V={{m`J5Fmm:bOeنomvۅM.d #p=zI}"! endstream endobj 62 0 obj 1650 endobj 63 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 61 0 R >> endobj 64 0 obj << /Type /Annot /Subtype /Link /Rect [ 107.874 321.075 271.274 330.325 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 65 0 obj << /Type /Annot /Subtype /Link /Rect [ 363.044 285.075 526.444 294.325 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 66 0 obj << /Length 67 0 R /Filter /FlateDecode >> stream xXMo6mg[4;, Ƌ99>zDnWԭ C i"Y^=uÙo'VԛgYeiĢy~*cG^ğ~0@?[fTE+CN?˦_~hl67?X ٰ稾BO>I{~Lwˎ_6Iٸap)&~F\Q|<֙8ljqkCa1$: yihOƗƣKy_B[%ZQxĒcc|r/gN^q`1ŝd[ 4fy Nbes|p/ ie[۔ӽhJ?Uힴu-EB!~j7+GGc x(WĮi2n-E۶]-BbcY6l;4Bۈ=;tc%k9pa>3lz%*J)^1K S&%;} iÐ q~yΣ]l ;l]m=Lbp2N{lTho<ϒ8u{^6NL,&&jJYLQ} #f ҏĞY[CöY0x%<5eovQGfKX$Ne'@V@ځ=OD0fGp.#'œFvDa*{}%'5`dn% v ğa3}ھ@ʈgT-!p|H̎ Uk1PMQ ГIG($$%l۵,EA ~ZPc5) )E #hԶ~XWő`dyL΃zcb.8 ])iJL]?ʝY)+*4vZdn[:OִBӚ @Nb-u_3a:l:k\OD9 m mMe!k>)s*x;sm;axDI#B( h#_bgOS6FtbYkJS== /Eծ_}CCպPСhL__Iw)s%G`U$Ӹ7mEtuJ9ib>WN_Y:6#{_4q.po>h(K]$5qÀ+Kq8_*j|cllTrAd8sF'HKHGp.> endobj 70 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 446.3 null] >> endobj 71 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 156.449 251.824 165.699 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 70 0 R /H /I >> endobj 72 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 530.1 null] >> endobj 73 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.164 156.449 380.764 165.699 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 72 0 R /H /I >> endobj 74 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 660.1 null] >> endobj 75 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 119.077 246.294 128.327 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 74 0 R /H /I >> endobj 76 0 obj << /Length 77 0 R /Filter /FlateDecode >> stream xYmo_Aܗ]Izq?]$m=)  )J{> S(qp33_5qJQV]ڏA3hI:ECa"30'餕!]~0_`4qWXb&+O)'Tw-FWz=AH"Ga4cHm~~Wm!Jt+u[AfzŰnmΓ08;;=qo[(9Oxm{_SόO w;?A^+'IpaGǂxoX cnW\(`fKDF@{kElh?[d\z 0Q̹!sdt[EQ<8ρ_HdayIA;yY@VV,@{ {>cN'10'-zlZ,'jYn߿nK( ɖ. dskvqbLcIt $D݁'7uو\=H`˯](O^j6F%CQ R]mMY6 (k*0;,,#ias`99AX8<R t%IP-EamZRֳ_V72$>֢ڙ' *B, u I hj" jdhU1LKؤ/V1DE)%&8iu+܄Q5w=}xҭnqcDy!Z Z@ bbs a1eWl*ANteR}W^nZBv 2:gPo"XI2Ѡm@n45/\(1N̹Um2> JfZYM=C(f/m>_(MͱQQ Om%^JB<nW( nWڽvw{o.+Pрż_P!lգ8G]) 胖KEG,ݩ?0 ֘zKBPi-F3/ʓZYh\2ken͸RAFk]tQP}-Me3O@ic,4iY Ve jɘa}Qf'8)5MX.6r>KCra LD;I&{;Ƚm|ƞ1Bm֠K ]yޓ&S6ñǮ cٔLBXw 0b$O~Y EE0X*]Uϭ+k'EJ*(|yYۢhai~TF;G~ (Kd_'A =1d+2Uwe#=M e*gĴڽhsVpM#ox)2+ @yL@Ͻji؛NN%qBW> endobj 80 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 718.3 null] >> endobj 81 0 obj << /Type /Annot /Subtype /Link /Rect [ 108.888 693.175 330.628 702.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 80 0 R /H /I >> endobj 82 0 obj << /Length 83 0 R /Filter /FlateDecode >> stream xXM6W%)Lv]Ӌ292"KQnWdQt/d`ib}XU7 ĩc?'Y$LXPOrBL S"??V” bq`?l`fwe٘y=n-<iE ~CvjU|ST۬՞Wݪcvb?Own0̦iؿ_ܶ] 9aHh3^ͿϲjQd?A0M)1&35nKN2Xzީ>]G>ko3YZ3tVXQ++OXo% 4Mwka6ѦvňM_R!].7ũ,k;f;'V?Ȑfzx+U~W aGz&AF lD,ClJ)yrA],C@B&+ٿ\̎Һ+VhvdW;Ǻ*ںѬ=('j^ nHʋiE@}RUF7v23: `QG1,CXOlq64.%r -8R\zYf:Ǿz-1;AQJmF\.xv/ Id`QU}(lgG?hز&9UxNӆ,z<]ǎQ<]5]}wяq:g6i2l- >+7br/4eđHd9UWԦ v^7¦exV;V%~x;fOMU}GQD){Ar%p6-r&AHD=Cyom&B:C8163YإHv#j~*5YG .^طusڻ$b~;@YwT O ۺx" u pݞ[>uE!}KdhϸYS2P>|5yatNQњP-?Б1o@n6ezႾڱ C,Q?\_m\~ysؑPxx{QSWo p)K&Jؐ{1Ci ٹ0'~YԦj2GLZ3,awwQRG.i]өnлn}D*WjƄ.8:=7}tѽO%] c h@ (ˁcv9fu> .a_!Rb۞A]:`^۔~"9]5쪽eۖu: |p+4i#zVֺ r)Ֆ7ara H4TgQd|lK>s=_^3 /;a0( ˣ׼X: 𗝉+TfKX ˎΞ9O;,M] ˎ\  WU}3\f[PSf=}IJVtl 5Ud endstream endobj 83 0 obj 2070 endobj 84 0 obj [ 81 0 R ] endobj 85 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 84 0 R /Contents 82 0 R >> endobj 86 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 53.858 379.486 null] >> endobj 88 0 obj << /Type /Annot /Subtype /Link /Rect [ 149.668 292.547 291.948 301.797 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 86 0 R /H /I >> endobj 89 0 obj << /Type /Annot /Subtype /Link /Rect [ 423.728 266.547 482.088 275.797 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 86 0 R /H /I >> endobj 90 0 obj << /Type /Annot /Subtype /Link /Rect [ 71.858 253.547 152.998 262.797 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 86 0 R /H /I >> endobj 91 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 53.858 663.3 null] >> endobj 92 0 obj << /Type /Annot /Subtype /Link /Rect [ 150.788 240.547 276.378 249.797 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 91 0 R /H /I >> endobj 93 0 obj << /Length 94 0 R /Filter /FlateDecode >> stream xYkܶ>ȗ8ƆˇDɗn08GX44^/ nvwVxyyKhA}?I,i$4z<%dLGTĘBaehaM lcKެ#Z3F15&ޭx2r -Ք1ۜO/f4DRjm˪uQ#ɏmgv7ٞ_WnpF bُ~z}f8uB=(YjOra1~l+ı<> 1#99֎̣#.C۽X [j+ӈOZEdj{>`<'fk*6Do[CSuy$*rh >Mޑ/|!n <^º_Mݐ\Yn)WXV5,7BkH}B4͡ʻHy4)I[ۺj бcSe}o}e>f}iZ`bq6Rġ'1^Zkӓtؐ'`PTrBtH(>{x_ F Rb\*dnƁE|xKxT`sHsiVn4q+/d7N`>DO(X~ldgzpI$=xj}lEGQRDA$Qc"T"BKˁPR FQj?rc# [uM 2c\!29d+iVt}f3ƖǾUO.t`/>{tmߙ柁M~q}T?QmLwhprlȯ>]y,P\yi&/6iC&ސoȰX;4XF\D)K:&u ',\#Y-䇺)`*omAHW5A7f[iFr&!^׊ r- ͑LޙbrI:Vb]2{0k:y. ű i9V·,V@s^,>81gj[ 6cM L%0=9ރ- +AdFUR{Ӏ*/k϶k6>Vþ?vʼs˚;d+ #E YQf7=RNwi="b:I.$"B5<ማ ]ADX{t *{R,rn jFXfUZO|??XOx@J#:!4mNCY4_lSGW461i1 gDSfψD:_Tcz7&o]>faxgr.uDP3 L`|T K4Pq~ `*eLBr]2Mqc[Oc[snZ%0گy`ó#}cs2TҘp?R վ<4+t,"=@$pR@T/Ma^I!4xMo.6+V9 E> Ҿ'T`ԋϣ_NyMFYVlVuN$TbAI5YпLh\l7k֛yb"=p=֮a{QV!ljjƚ{Ȍ@p.nj_*/c82^+ }?\RN9ZԨmb Dшv:ѭ2ָzk{:=]oRL=,Xē=͡$HeOpsJ D ܼ`N)X(ŗ}y;Okں}߳X'ۗ葻{uY^⯏R )#т/K%)WLc7)Ab}[Է̅Dvd4sq0P> 0SYkʾt#XnC„\P=ť=:e2OˋQ+D!i{صUm^r!g p2ȅ\sgPDs兮@쳦+v?Ar'R'.N> endobj 96 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 87.874 588.3 null] >> endobj 98 0 obj << /Type /Annot /Subtype /Link /Rect [ 105.874 481.996 220.344 491.246 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 96 0 R /H /I >> endobj 99 0 obj << /Length 100 0 R /Filter /FlateDecode >> stream xY[6~)WIlE"COtlVזIbI](;@ 2)pf8fiÀ[5yc$%HNW\(„T+|aK͊O43E[@GqSl(u8yG懩V&o!R&A?i)6=l}`(<'bNq1 hBH ?R7!bwʪwߕ?7Z86ȭu41&V*!L}[vnbZ"+u<7E= ؄^G' &0L?+n+DD)S5[8+AݤUs@Qgu7 5eYgtm_qbzB`׬PȆ+nA _1ƂnӸd|g5~tP߲vpɪtz!~KϗSuT=JS bv^Q0%a>'#QŃ s }a]"Tl!ct(TىhB-]bdY턔l`U{لc&!TKNh7Z#gl `mM7e Dh%.:;TGfR,FNg/a鎦?O% gD"D}.ޑv{xtRF$%=y<;X OGYѕH X*w%.UR?fbI2R{fQ""t.Ty_}uN{|,DKMЎ?nm/{b.|&pQ9mǡXffߨ/3MJ.њtt n>#_d٪$&mYjߛ9MN\izKP7LD:ix_Xyq?}=3JTx;Mxhpb9gȞpr !˰5lpQ(&Z$X~7?—ӯ☏áOѴ*Bdʥ%\ٓjS[Yz!?hoLTaFuC=B^MJ^?JcjO{Tߟ/eդݹu2:*b00bNGZ;bb{dE[옳M 1 {9+:lw!hˌLt,B;6MV9L[|b5, bV N&0.*Z\o#}°F't$ؾcl+$ b 3ںI/..mnnGXL0-xY8=#'5%=|\;HeFM LlaH&䋍 ^aHOQ nM5_9;ְi,uDS~(rx(5M)%\CPwy5.U@uWémBe1HgW\|(E!TX˶vKtkM4.ZBvkK(D\F#ʒ@50fntO+n[qbW8ӣ6#hZ*: >-mUtc7VHILP->dvžbL7ziՒ '$&Q704LZp:g<3pm|AnE> endobj 102 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 87.874 142.573 null] >> endobj 103 0 obj << /Type /Annot /Subtype /Link /Rect [ 64.978 648.975 193.908 658.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 102 0 R /H /I >> endobj 104 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.788 402.022 475.148 411.272 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 102 0 R /H /I >> endobj 105 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 389.022 121.648 398.272 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 102 0 R /H /I >> endobj 106 0 obj << /Length 107 0 R /Filter /FlateDecode >> stream xZ_ ͡^HQlzHl6*K>I=#w?D&=5)pf8>lQicDA,c"x  X(( 2?;+23E'Cv?M/~=K{Lؼ߼͟7$TTJ ?y{Lε)I{SVu@Z<ת6L~,Vo~&?lQڙ7E]_?~yj4@*X"`<~x="d(PRj|St26#fsf@;`~nF_! !/ZZgj*m2+r멣5,A(l ( b@P o6 bJe3 UG!..2ct qNDcSI P$G&EmpI<& <8ZFBeOᛯ& \! 4.9SAm`ћOi Ծ\qZh_v7ER,>'v9 -IyZ>e,`LRzOHbK8-%>Ìv9c g=%5uu 9 9GsHEpF IMJpId"xC2=4G@<)'EIL'MˊI(1#6g Y>r˄[|LwGRpzW՚0Xd8^f@ t0$$7wYysA;GqpGA DL#.jxa8`H@i= E?io9m(Vǐ*4̖ٔK"Jp) BwY)poEmHa!mڛW(dD `wPc`wKFtxx3b/ǰp%#N z]FTE'ĉi-rL6Iávez+:/)/90kr0s@1dJ_!yb9Ԧ 6_* G3O10Y!._4*o ]CԇB@'$$>i.E \o2[]+_3 9syCMWm%hI56 M)=" jPR" $1t"xb@f5zh{V\R ˁ3ကJ} s+ȡn'u`$5_cxUy3T*BpiuΒk\>%[7cR02 c=NIQKZ!8Tg~y +) 9T:D&_/Bw$N`K֒y*M]vꪁgӚ|-VY_8ނSVwtBU݁  {s CcVrnrV[(uR.N:0gi @ R,Υ *f<040's a-bR.}JME$L@ZQa3{8 4crD]GE/,:0=Y ,E ~40]v9Q}Xj@>s/*WXlI윀$/hݤ fb`m#$4io<'L֔HTwv3_B L܄d>9Vl )z#  W[7gc߷|nocR,R݈ms$!KVxf%&nwGvEY\4ek=O.DˀnYzJ)+NlV cl튳 0IAzތ?ʿHYǙaj{Cj8zdI_{@*tƣ{@+{@J-= zhX?DӉikz@>2;lW}H+F`Bķ<-]8J?u%%[% D mIY7}wSL+$OMRk:f[˹\ ^*o#p<( WN<2Hvx{W̬y\BI^ZzԗeN2.a>|@r78[c}3EfLt0Qz=J㣐r(,8\#E<#tuIp!ȀeдvTwi~g|UcD`Mռ.{W}wzS^kOccZa^rɾiWV]*<:fm]Yc mvՄӖz* 6J ON;[rNkc4a}m endstream endobj 107 0 obj 2416 endobj 108 0 obj [ 103 0 R 104 0 R 105 0 R ] endobj 109 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 108 0 R /Contents 106 0 R >> endobj 110 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 53.858 183.209 null] >> endobj 111 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 669.775 300.714 679.025 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 112 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 446.123 300.714 455.373 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 113 0 obj << /Length 114 0 R /Filter /FlateDecode >> stream xXKoFW̭6`&4iC" Z \ID(ÎR_bC,jwo;3ԗŗv:+@0GRŸt(paw-9|0o9t&=@[k.W#\:06: ̻O2z^?k l/(DQ≮C$(HaWew ߂4Jtq"avj: Z|.3.mK9T u;[ ۵kT+SKd) n [N9 I[!!T^Rw$sQiqa nwo:"G)Qk%ȱQ"WP5Γ9b5 oƢR]BúgpIIc =I mg6b'H׸cTD~Q0HeOS4\pLY~z:s}Ml$AAA6u3$8|57b?E'ۼj}[VVoVSV9}+(s<vFӲ** "$ "֥Y1=u\ +!fNCIA%uV-d~qʆ}X.c:j14,C 'C*yn1 /[W&_6$qDdfE4>>+ ,QCy+H%.mTBVWy]!:FRe!?gnb* %x]4UwVee{_ۻ{B " SLhlBOڭ}NO)J?0j0t ߞB΃jvOH_v_7'xl UtrZC}V1aF%qjxA2i{7]2,cIo{} 3T~.o\V ~EûG˰c{ѱVCh=m~%6e~ۼ8 MG endstream endobj 114 0 obj 1509 endobj 115 0 obj [ 111 0 R 112 0 R ] endobj 116 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 115 0 R /Contents 113 0 R >> endobj 117 0 obj << /Type /Action /S /GoTo /D [118 0 R /XYZ 87.874 529.3 null] >> endobj 119 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 87.874 521.675 null] >> endobj 120 0 obj << /Type /Annot /Subtype /Link /Rect [ 105.874 667.175 202.574 676.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 121 0 obj << /Type /Annot /Subtype /Link /Rect [ 314.854 580.175 534.934 589.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 117 0 R /H /I >> endobj 122 0 obj << /Type /Action /S /GoTo /D [79 0 R /XYZ 87.874 250.746 null] >> endobj 123 0 obj << /Type /Annot /Subtype /Link /Rect [ 378.874 544.175 487.264 553.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 122 0 R /H /I >> endobj 124 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 531.175 254.044 540.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 122 0 R /H /I >> endobj 125 0 obj << /Length 126 0 R /Filter /FlateDecode >> stream xYMo6 r `3!*ddE9A iII=<["m8-JUX} ß[#N"߇5NLLM,U$B2&4Rx+a,[O_vUb/buuE>zC2{ole pCvWwpF7$2j)$F$) }A~yimq>ZͪzmkjmJNS;` k 2{RD+Mc_aO&kVph/g/W'\UM rYP]EIfUQz L@vxcP~ڶ!Βs`obˬͫƓyMm=;Ѣ(iNsY  o},=B{*ica6Tuc}j-Qr/$/q>Vr,T8K ""YrE VWh(ԐzS+pOGyI>ں{2)#<Mڂ!LJIef9ǟ@tm{v"#RE=(ػ}`dm49Tx>=4%]L{yЮm,;MMs QF:cg1a}tf2a؟=@u\j-2<(]_JMy!/2auN1r/xr_cp\h8߻?S \|k>/_nMpt!@ӊg뉡u$xJu#4̀1fNF}"|F|csTw2Tk/fx-CvkEh$v58zg$wIXtD=|6*;\:2T Q sY85c gLcl2g,KTcKq*1݄)]w=D1m/ftcX !G'$!Ƨ xcߜ=X NG&I%J#b8k7C=UAnpπ-/ɜ2F%_ ZrZ9ǮGbZLHH/Pv4RFEǓidx}> endobj 128 0 obj << /Type /Action /S /GoTo /D [129 0 R /XYZ 53.858 515.254 null] >> endobj 130 0 obj << /Type /Annot /Subtype /Link /Rect [ 71.858 365.384 216.928 374.634 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 128 0 R /H /I >> endobj 131 0 obj << /Length 132 0 R /Filter /FlateDecode >> stream xYn}hXD $l {I7cB9=!9&9*A=ؤK 0 }9}tuUuJ07ƒS&QAd"e`D<Bi:@ ᤅ&>xiU8_кAa+{tܯ~zrvZтo}*b㪺IMVܳǧqmg?vs1Z C_f?6y}{h-*1n!iċ-L„5&R|F ȁ܁)8QaBV4raԁ!)glܑA|t5+ ǒf !2Mٸ]\LJ,},My@̓$7% )4)T./?EU氮y\S.˦塀{`+`cs3"Zu2wRT6IYh"ٕ=LNb8V$v$7tAb+8@L;l܆vt໳'ۚ,wI/<,ڥeYnN#6CciIڙF2)h395㭯kPfE;`{]c=9%Ќf'm<{]Z5܆\5Cʻn|^h)-8Ot*RJGy&aٖ"GҹȜ'Rγ9eC ܶQh;2ױn_Qk3ꙶ'Xe/}Fpp"!$T_dn >@c>g K#ĝ/| σCVmI +}L@NQ)y$ΖUraR%]({)mK]E6!M_ >U1ac2Vm*H#jJLrprNgF1hߍExl<%ZM(nz-(Pm!NUzr"ݦ h˂Wn al}d-ߡh߄8D|?YLg:+ʢ<L.0<Wc Q.Я81 -%:+R_a48Oh|NN\C/9:5r̢q q8:CY h ׼kb}P]B(-R Uq_zj⛚}S5SAJKQ|#h0"ba#1q22 sersYϻ`Q|\3)nkR͂%uXs%0@L\j=yM=ӖW*׶6DQV,{ @ű@mi,#)ˠ}XjG!x=7J,NmaF癅 Cw73qL#S|!O8,eܙ<| !yNDg!6iLDE [$- tlpqiEWo)O Kra\L!0c ERwS &rBܥ#"E8R8Qz '8-rpTnpAFp%3,`i=Y)=hkJEsLVZȗfsޤ(Q8QY< J9m2<\ =xūgNɈ9Ts:}:>Ba7پ5WV䙪l?)\~Rba@h_={ endstream endobj 132 0 obj 2142 endobj 133 0 obj [ 130 0 R ] endobj 129 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 133 0 R /Contents 131 0 R >> endobj 134 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 87.874 513.3 null] >> endobj 136 0 obj << /Type /Annot /Subtype /Link /Rect [ 134.774 405.259 282.054 414.509 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 134 0 R /H /I >> endobj 137 0 obj << /Length 138 0 R /Filter /FlateDecode >> stream xY[~_A[hIhl}+2I X][r$yFP+gE<sx;o7qѿHK>f#/S ~ _q3<mÄ@ӎ}hf c?7_z7#6c*_!yK2x' Ǜo}LpvQ{:\2 ~~uRek}rd%f"򴮫|{od8k$yLJߏFvmbe^ZGsK|+،CyH C]`/CE 1,(F'AElHP3?S0:/Iǭɰ霩0a[brh|{SErS\zmVc(h^A5x<# C/HuAxT8FîgP_2EDCl l~6TZ%'0838@Czzŗjqkp,9fˈ*d pX7ڥ඀T@}?F=_O2`pRIڃgnJ \nB7G⡧b |/H~bpfq{ iGZxʵg70,#؁(ȭXq fd3}?r]5]Ȉ:!fv `Inf̘XRgSLwnR[7e4N2 }di`OWk`$ zk]qF001qHr'3_1.O1[T5ΎN޲>@H/\ujTzv Yu%945#MQ3 h=k^vB&/tWppACQ VSǢQMM<,1%1%1^X%GS@_j{Bg_T DaU{efؔI늲7ٳs;]sxES:lPTOmcĆ1UB`Q**g'ODHrJ;MJJnܞZ̹jkoym8M{6mI$\f5 vojjPY5 f 5d~sEl/;e <ҚF [qKx|J'eqC[!iCIm±Du6#()OSBLꂜC²oBN%JbCƨ/GX: JSI RupmtT$һ0wI+(\6rW39kO:xl[)# [:%Ff\l7ʍ2N r׽:> endobj 140 0 obj << /Type /Action /S /GoTo /D [141 0 R /XYZ 53.858 650.3 null] >> endobj 142 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 467.329 186.108 476.579 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 140 0 R /H /I >> endobj 143 0 obj << /Type /Annot /Subtype /Link /Rect [ 148.568 372.429 280.818 381.679 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 140 0 R /H /I >> endobj 144 0 obj << /Length 145 0 R /Filter /FlateDecode >> stream xZm6>B4*ze+@Chtnxg<3z馸~e $@WBK1IGo-<`%ihfvk~Ol׫ 伲{z/v/V_\mj|jN'ѱ ")gM7xWV*:/0JLjO֪r}gg0@PBߏDVd=71 |_`n1ˆԁ9,s^ pBxpTȘ?9ۧyqps;j. p PE A02WbCJM\VǾ CJ1Ƈ:tU#*b2Yjb7V[u{l4caC7nn?Fn9>1[{oM07)Y<.Ń aܻ{T|i}[_p9JaSV]QD\P@i\?]?%gfX A\ "#)-xJ/0ΐzQ-9Ԑ>rF~q߿4 Tq $ɣ PTFo^<ސ'~_?/oG3 ߲&K I9BdII$@Y>VGbx! I BIIΊR S&A:ReǛar)\_"Q}-d5+B!B:$i:6%8FzXNw\F>\uRl!AMJ6*!L'RX!3S:иF3$3cQ!.1ã 0bKE% *ސsR]Fls[?\}gtshB3b{qM9u:89 ?A21[--E[ t=߇ ^H$+v٘α8(ɄIpok[]9b/a /0&"YUS/uQ7=iކ\l4\Cm:ߤ)D_8ebP.ˑPwrc့ Nk3?U䌧1~athdqQ#Tm⡀J-I?4TBjX+l{~Wz<\ɃY+RoA3B%&#|1̀v(lM* O@8'iJ8ݐ2?Yᖗm7o endstream endobj 145 0 obj 2507 endobj 146 0 obj [ 142 0 R 143 0 R ] endobj 141 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 146 0 R /Contents 144 0 R >> endobj 147 0 obj << /Length 148 0 R /Filter /FlateDecode >> stream xZmo6_A)6z]{ ^>E (.ZiRڕ(Jm66]r8y8a{acƉ/hGDz>B2&L†h{pD1r41 `×-ywV1ϳ_}rfְ-tܞ}wu\eƔ>ќ\ȯM2Uu&eشjwɻм\1Gcmao?; *ap3nORvţX}hq#XLă=㽛ixcm4Wӳhœ FRGgi~TPrJ]}l}V?I'7GL|DfS!IH$]RViT}6iI@½*q%ilTQcIvIH6I߮iB#"S^p@:&/[gMT,lwNHn6fHX$wI^6tV(VR5-|mHVդ5?fH(9DaE^Ѷ2<bz3vXxl{Nd]ѾJv aϛ䨮.V#@u! Fk9%jb ٙkr@<6~+(>^ӣ  ]D ڧ*@qM^yto8ktVX68h3 y_$]4Ro&`>bC)#2JDb@{ ћ=4ӣq5t%|·d`F8 ƦZq:?LAxdpLYңn[>k J!IL5_|B/̻\3~0KC1XCsDw`0GҴ@S/.UAxkiKc_`1o_O.FA4fAPIV#Ӈ^/J.zFb pLd{_c=Hi :DPlM|mY(|sћ.[^5kFD!`f2wMҵ|w."_}L6ReQJV!lTvOH+xlMP+B$i:6tyQWP7 &IQC֬h(3l=8`Uy]8@l F@ ! 5pkv=Qw}>V"Bʰ D~lbx;>'G0t)˧p@fmۓ"Ip dr2@RDx!4J&h1 ~f$dqf2ZIi/MK dI֪AN^{ר+ұA\I!@^j K7vUץF0su2Q>~\tݜ~_/%}ond5Os$ r:7>rcEP}b:R'>F |l9|'i!ަ C|x@R&cXc!+>#}Hkfɲ—O>Ʒ1TX(^>aYG&jD}|ڣ7n5仼Hj2;x[sO^n.Ո3ӠeriG  3ao=_x .GX "' [W 9lUbxzF9P(O]pgg(c;wOv;z=ğ=E0h(9+l#Ru)Y,l/X'wPU4jy8QQ~kw0'`QBќdM",,d X3A1Y8_x@3 $P"8٨ĿZ]@=|1eYDPA{3eJ+e)=9Ab6|=WxQy nGݏUy3"'|yQD]qέle9]g_-FDDXdD|lkrzVHikO5BJԿCEW.9슕:Ss7;Ij}3qDZG}A/F,:|yZ@ڛy|ih} ȓ,_ޞLN< endstream endobj 148 0 obj 2577 endobj 149 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 147 0 R >> endobj 150 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 439.551 null] >> endobj 152 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 182.981 null] >> endobj 153 0 obj << /Type /Annot /Subtype /Link /Rect [ 107.884 521.426 251.264 530.676 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 150 0 R /H /I >> endobj 154 0 obj << /Type /Annot /Subtype /Link /Rect [ 107.884 251.856 364.094 261.106 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 152 0 R /H /I >> endobj 155 0 obj << /Length 156 0 R /Filter /FlateDecode >> stream xZ[o~ 6 xRD)lM"/C h3.I394v\jҹܾ3C5NI)p#(wc.:k-l#3R)),Sy:MrML%'1u#u@˪]c/|ziT8`6]ĸ2 }HV-/ح d9Ą-*čh/ 6 \7)#x[zeT45.\W [.(lʹ`:0&$ %!$ M\lT_B#=nҤ*O0~. =qb@*^尅`Xlymʈ1=c\AEVMqhblI=0.]{YO>8+.oS\pMVVᢺH~SIV/toDejS?areEcv.*u7 X/T^*Rʺ!ٲTCmη4Ɓ;u}|RqtDžC'LXρB%נ|rcÎR:}6'YQuE=Tήsk8 S"+3ggɱ=Ho2P']^B2't,*","7὾W!B|rVDF()+uJS K^Su?RGTTJޤ3ί'd lν<>j)jMw$-Trw +c6EFLTƤ-+bဋQ tŦEUbRtj8D8ʤfNB:K' = 0K 6 渢,uT[Wm߰DbCAV[@De`ҙwpm. / 6_ %̓[XC` gp C.C:,ZГZ*]C-Zf>નIՄoȦ^nH6ilVxpt`Y3\(h7ѲsS`G)b81ӕ*~-|Hҧ w>Cۜ9{BhCP0}$8|paϱ0H [$cJGi ?uh.Wf,cuvo _c1bTizSve8KhgIZ٫stge>P)%CE{4>o9z؄RiB~ zJcʵ  AO9'X *bE}xD 0iHL{L/ ɒ46Awʌ>I7-!\ 4ӶI[!0!f~aZ/WXVAYRvO pq/*۲(Mֽ}Mn]fFࣻuFcSQZc[@  ]5ݺ7fD+RWǴ>wpFW:5-7АC]D&G|rʙ^}*7|,O.ȅ?ŽV+W94`"R\L4QU.[ j_ouѲ:;Uͬ0 eRΨLWF ggvo.95R=I#چ`J<@mDt`J73Hۮ*8Ɯ2"e 56'4^nbe#q 35~́mOE G?h endstream endobj 156 0 obj 2931 endobj 157 0 obj [ 153 0 R 154 0 R ] endobj 151 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 157 0 R /Contents 155 0 R >> endobj 158 0 obj << /Type /Action /S /GoTo /D [159 0 R /XYZ 53.858 436.9 null] >> endobj 160 0 obj << /Type /Annot /Subtype /Link /Rect [ 71.858 233.975 184.678 243.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 158 0 R /H /I >> endobj 161 0 obj << /Length 162 0 R /Filter /FlateDecode >> stream xY[oF~ׯXl:.6Ļy-,"T\7sxӐ3b쇦Aoߜ+NVghI6D y2}%\*$ o;&l `E ɻUb/5_u2flޮշ7ACFnv eZ3w؊HJSlmU7i͊;cyO>ԍ=ܤGWWn|gF; qbُf^_~:3ZuP>cP2L_ EgYuC3;<'pX$CGl'L ́vByޱ`+]m%im0hOrGc'h;Iw%&+d5)[4}\&fY1 uydֶ&ޒO )w$uYcC)K՝$v[ٺ x<'RXT˪CemwY6$+HYAEv[gq 8G@8tCYYR~H "N9^9V孥> twek }ȸ#yZ̝ Lx$>9H 4# 0g|aP' fcMbWyyj6G[cɞɨs3Wym;d .ʘuYkw&GfD`{d0ѝ=<kAb&󄮭UDf”KJ҆@36$=1bThFQ4)qb~vT>]gBAVJZ OOᱬXx "4Uf;mN3 !M$Jٟ،DBXhRMLRs-Yy&I6C.j'8@8~I=ĔV,t_/dIz^rU$2~:Rx^ʔ"@“0}FnN OșfQ!33/oG.jcL ̏QdȨnBElۃ!g*k3ޢi0K"eBZj0=$E'1r!g @OHH㇆ypL<]ijG]$`+Zkd X@ޱE Jс(s{UV4;_%hrMv.09~v})%C1Ē CF&k!y Z\qHX&vq>m:j/!-ȇjN]*"3IEC\== R%]#,8-}&ccXX%sV:>#8_-H}L JmASq.}c5331YYK!OvCI1ɿ||8am$kem,Hs*T)DZ*Fl]pI`q_V>ǵC%Yme/KPD'c5\`bJ"R'ŶE>͟s x:}ney \򵙗kp,OPs>ۑ|tPP1b$Hp:X$u!oZo$P߿AV ,"(rXԣ.CHh>jG ߬ё endstream endobj 162 0 obj 2117 endobj 163 0 obj [ 160 0 R ] endobj 159 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 163 0 R /Contents 161 0 R >> endobj 164 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 87.874 215.598 null] >> endobj 166 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 128.849 256.264 138.099 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 164 0 R /H /I >> endobj 167 0 obj << /Type /Annot /Subtype /Link /Rect [ 311.824 128.849 437.414 138.099 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 91 0 R /H /I >> endobj 168 0 obj << /Length 169 0 R /Filter /FlateDecode >> stream xYYo~_1 h;}N6M` UJ"!gIe9O4A|4fU_}i 7a S?ƉYE+!5R1& WThx)a pF>bc7 _?7ņ6_;q|=i4.|z{ ͟798h齗xʴf |~7"%>-7/tj@[|K0DZ;ʕ;z;.D`?kC۹!<^@Mk`B]I[i+ c\{xG$or4J2jq+]T K=Iji1Gbr6V-]deq ,Ne懴*Iۼ~K;R7IIb9%THIɢwReqT)IO&Qr.Ņ^hފX cR5iAsp!cݐCRܧ0$?.W$mcotlEufvXZ](j=V "Zk4SvF%9U\ :<5Fy,C# d3(Cً%*۝:. AV'  ppCZ%MYl3Jwcv=U_d j~9E<6bM23h ` MQ(5mg$)9Op>dp`1YۙV68P,Üɬi]@ ͜vσYspK3d@N$J5b)m;2yO>>հYɁ*;4Mlts4 a17U(==2y4_}Zj#fref߭P&H>ep#Eid*wR⸿,.ڧ!,>cL?5:)'-UL" |ˡWid2D@Z{<'-H2us^ 'l,<>]0kC@?妇K;ݫ ޣgX̙6#-u y eOmyǭ endstream endobj 169 0 obj 2055 endobj 170 0 obj [ 166 0 R 167 0 R ] endobj 165 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 170 0 R /Contents 168 0 R >> endobj 171 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 616.111 265.714 625.361 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 172 0 R /H /I >> endobj 173 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 535.867 null] >> endobj 175 0 obj << /Type /Annot /Subtype /Link /Rect [ 287.974 458.247 554.164 467.497 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 173 0 R /H /I >> endobj 176 0 obj << /Type /Annot /Subtype /Link /Rect [ 414.334 143.445 535.494 152.695 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 173 0 R /H /I >> endobj 177 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 130.445 230.124 139.695 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 173 0 R /H /I >> endobj 178 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 718.3 null] >> endobj 179 0 obj << /Type /Annot /Subtype /Link /Rect [ 259.014 130.445 466.894 139.695 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 180 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 221.065 null] >> endobj 181 0 obj << /Type /Annot /Subtype /Link /Rect [ 161.794 93.076 429.104 102.326 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 180 0 R /H /I >> endobj 182 0 obj << /Length 183 0 R /Filter /FlateDecode >> stream xZ[o~_]*"}(iP؋@i q(/)_ B~Wٖ|&$5Tc"$(C}T<3"Ft#9O`CArv6Uaϔ8-ּCU3Tݘ<9%ٝm *w_{\ $7Ѕ *|KaJqΟ,)909CAǢlAW+HӪF>m19NMj,Xݻ}&OYGVx<лl jk52S-Peݓ\,CҖ!`GŇ5EОQ?+:OtǶ8ZW\qnq Q%i+M58ܴWCgV4"[]_Wx.wLIw!Fp`t$m~RH݂$P Q)&zdpNRltiSH]LU˲9(A7@sѧKE@+&0=tNL1~d[H^M)-'ui%i}% RH`}~4g:n i6C 49>+vO&O (6)Nhf1qH5EK T:=WF움A-90aSmPdz(| C u)DM]sp>i?/8 1ѡa6 HBC9;@XZy *GƉ`F*HZ|r Svʸ0gv:b"쎸5jPzd3趾 axSS;;Vih[.K>2ݥ0¨{*^/}6Walm3h]Qa/|6^%@`(aQ`RbxQ`b0x 1 zMn^qU =(F.mݖ06uk*2ÓDr! \}2c>k0P¶(˙/L, \Nx m7W+SBJ%}./DQ. xxɿFc endstream endobj 183 0 obj 2357 endobj 184 0 obj [ 171 0 R 175 0 R 176 0 R 177 0 R 179 0 R 181 0 R ] endobj 174 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 184 0 R /Contents 182 0 R >> endobj 185 0 obj << /Type /Annot /Subtype /Link /Rect [ 154.348 603.748 421.658 612.998 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 180 0 R /H /I >> endobj 186 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 407.87 null] >> endobj 188 0 obj << /Type /Annot /Subtype /Link /Rect [ 64.978 301.323 192.248 310.573 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 186 0 R /H /I >> endobj 189 0 obj << /Type /Annot /Subtype /Link /Rect [ 230.598 171.596 357.868 180.846 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 186 0 R /H /I >> endobj 190 0 obj << /Type /Annot /Subtype /Link /Rect [ 103.318 145.596 230.588 154.846 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 186 0 R /H /I >> endobj 191 0 obj << /Length 192 0 R /Filter /FlateDecode >> stream xYY~_oUoz AJ `p=;8.wWu&gvd'$A3lvUUUϗ N}A$HҮq% uHGWBjʥbL3a,lLf~l/# Voa]Å?cOoW/߂\mƚFi`7'W;mmI$%[[VuߦGq =(?W?^Z)=Zf_a76Vq;(ML?'\$N2 e _xgfTI,> 7?DGHch~(2i _x0y94$EYU` v9k^a_yb"D-:Jq6I/UPU7NC4-{V" m`,{$@vqF,&&MȾ,@wxiY71#)]@in&q#qRo*G WC"ˊjW+73 ꯆ!G 4L'Z[y4K>oǙ@Oh}8:1]7GMוb90JmJAۤPKh %>^Ez?6 Ri{j:O5 UPL,T7yt?8pL' & sr kPN Ik$xBqv+\dl,jPHRTJ0цLqlBHDcgeє+hJi8>`1܄oUX[{*hE~;Cqʹ3Vf ~ÓcHvoc|ZVϽ]qe vb!awy/[7[.R&{gc{aXJl]#agc(f8t\E8e\О"C.CZo<2qJ@>DKL|"u$Vs,ODN }$*tiYcf-;1xQ/C3|IIT],h*9V/U4s7fUQ&S7Yaன_/md;O,v$&$6/-0F{{#O.8̑fdu[ ]ĶB.NE\*3.lB"[[[ @`LQ1`+KR3l51h|S4,:q'+bd;Ӡ45- sЭ_qsMEv6W=T L2pFyW04 :%?(oqс\f0˴ҴlPwa s'$w f.+h]vc8D.Ia&DnqyknX>4-_bCap,,9gto@ -+? endstream endobj 192 0 obj 2349 endobj 193 0 obj [ 185 0 R 188 0 R 189 0 R 190 0 R ] endobj 187 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 193 0 R /Contents 191 0 R >> endobj 194 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 690.3 null] >> endobj 196 0 obj << /Type /Annot /Subtype /Link /Rect [ 190.164 520.08 368.554 529.33 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 197 0 obj << /Type /Annot /Subtype /Link /Rect [ 284.634 470.962 463.024 480.212 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 198 0 obj << /Type /Annot /Subtype /Link /Rect [ 299.944 407.844 478.334 417.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 199 0 obj << /Type /Annot /Subtype /Link /Rect [ 197.374 143.195 375.764 152.445 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 200 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 247.448 null] >> endobj 201 0 obj << /Type /Annot /Subtype /Link /Rect [ 389.104 143.195 543.054 152.445 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 202 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 130.195 184.014 139.445 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 203 0 obj << /Length 204 0 R /Filter /FlateDecode >> stream xYmo_18,"EI/hbz?(2+K^IN.(;CJ$J+<>#>$l[G,"n2dB*%łw%WNc%>{txyQ^pW\zZLe o|e~pw׷''X&I,$!G:{r¤u^})L_wu>5;>foʶy|Sxt!$cRd; c&T0ߟhw NmnS50I%>{|g}mRHLoyW*dZjE '$3E^ "؝N"ZȤ?c%==J+<ȴIPi(Z"&U1!=g%>>(¤?-$nI,@Uc.c*E)YVK?$?i?ۦ6aM{t2^(DB:RϟdNp70 K=KS~5^lo!$O=nXv~WT7iֳWccсC]P`DĒ%D .ItFҝde7-R XD#ggB:m75krn*g.@XV>eV҉Diz8`n/lm:؇wR!L*,$<;"$L?hLVa4U݂w94S%P Aqlսǩt g)n Fj1J072 hRIYIVi6plLCHf&dJ}gzSbX+֣p^#B5)3qh$p,G2i6 V1үqZFzݲ:f*FEYJ+E`zc]4զsҦO!-6جNzg>?\yc3P i HTVT#rB(ʤBYF< &C2.:槧ǧWc޴y~6ԥf9MzTfR=*)3\Ԙh;Ӣ*|Cуx{˪6y뇾iqÒb]IkHYo7vi.Kp" d Y o̗o}hAF/z#;욑5&8KUXjѝ=W\PZtJ5Z$BnCՇZ&6.-|gS(Gr`\±% ȚZ#=Z@tX t)=LZ6JihM'66֮Fԧn?3kTīp^w~{Il>e %YB NBVBW!r0jwUOa5DNG~{iYߐ'ww{tm5O,BI=>+^*I:d# TI$;\ H{Z`Flg]ׂZ}(mqɴ p%B[z*#9Rccܴi7X,\"'+CX#m&DWߜr,5,6^ ?cwXWAi4#L[e]9|»H6pspg<1)*t9 he~=}8/j1Eس]d> endobj 206 0 obj << /Type /Action /S /GoTo /D [207 0 R /XYZ 53.858 690.3 null] >> endobj 208 0 obj << /Type /Annot /Subtype /Link /Rect [ 64.978 508.175 260.048 517.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 206 0 R /H /I >> endobj 209 0 obj << /Length 210 0 R /Filter /FlateDecode >> stream xWKoH W h2F{ܢ-w{sP%WRh$epZ, |$?Rﹻ !(A2 9Q,oqRLp;~ϩ؇F":XzlcEoPBȟ1ps]&}@0҄P(j3z~+[ OEYjm>ŧ >ɨ hO/·Qqƨ(q$nX"@FI`JX$Dt|Nnzfc31XЎaޭ~Qh8iF;,:?N<؆b50xB# Qa۹;^6(1 ʭZ2w;!Zf kG>18:^ăQkz8-Rfdy;jŞYMW%)c8F9( + Gq/(;u7b7}RG8h,mmIݝjfaK<^J6G˘u!v6<#=xH!5>% Bccs͉qEɄIOL,ro4 ),yQ-ҢH`^^FW$ endstream endobj 210 0 obj 989 endobj 211 0 obj [ 208 0 R ] endobj 207 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 211 0 R /Contents 209 0 R >> endobj 212 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.874 638.275 351.744 647.525 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 213 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 220.638 null] >> endobj 214 0 obj << /Type /Annot /Subtype /Link /Rect [ 373.984 638.275 517.934 647.525 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 213 0 R /H /I >> endobj 215 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.874 625.275 221.684 634.525 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 213 0 R /H /I >> endobj 216 0 obj << /Length 217 0 R /Filter /FlateDecode >> stream xXm_1`HEb~HӻE4m|6ζ$6 3dQ$Hw+r8 /80GfRX9y&T ɘ.T׎ 8Ah'L`-`8,u-ήq^yaɛf|SB?k<.|xgpH˜s0 S!=WS.>6P.۲:ȵ-Z-}JXPrRye~"A`y+dJŦX0Olp>m5?磘KhDMX FgAdAfS4ctY j2n sZ[[L4qk {=@I^d6F9gG,AexJs121q@$˘ޱU\;1fb8,GZG 'u̇eh):2M])D $N+ϗ0Fq+Db.T}?ժs|cAuouUqmk˧TO.R5\[]BS-<ՃMm4k,H]4X哜"ū4:&D2M?je'AjR=E]qŵr3?"5;3g ):xs 3ᛝ-j4_ζ=e {=vrvR9 .V[CzgX7`Ֆ-Yi Q/Gf:QF#@™F$B!>:VG i a0VdmBfMFtSvst $)c: c5N:j4Ο2KTß#Q5G_DY*1ri7Oޜ<Ř䴦WeEK,Uk x jGWoOQrY!޾P;~/Q(/\0OJ̝#U#u mνiS$ea$DJd;"V`N7G:^,/#τk)n$ ײ:i7bE ;]㱨 xn7Y.Ej7xh:WEHl('@ow Fy* `M™J ,))"aRksY <x}g?b"f[<߸lL]% ̀o]-:s+((ϘzC_$@]Tt8HM:Lj1L)/r {0ӭmuvY:Y@S]Qæh,{Q'~ۢTypv._$&+Bv ?"~ۈو\ɒRaP 6s+6O <&vLEwڿA [=tW{So +vMGETIڅc!rCy}9\^ d3F~#ōZ MmTX j<@1HT-l\m)`eo~.4hθ1ag! ݎN8h$(3|zYO.<чcn/#*5M EeVsHJ˒w掿{Hik)$q{\ 'Ta}dKaiƎBOoԯo$ݓ+:Z8<犣z\{yt7iqaRy3K =ݽa&kkØF@ŗ Ek' |mW5$1FX*Bb*+oŢ endstream endobj 217 0 obj 1965 endobj 218 0 obj [ 212 0 R 214 0 R 215 0 R ] endobj 219 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 218 0 R /Contents 216 0 R >> endobj 220 0 obj << /Type /Action /S /GoTo /D [219 0 R /XYZ 87.874 197.421 null] >> endobj 221 0 obj << /Type /Annot /Subtype /Link /Rect [ 150.568 596.975 328.398 606.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 220 0 R /H /I >> endobj 222 0 obj << /Length 223 0 R /Filter /FlateDecode >> stream xYm6_A(Av5@] CxheV͢CJ)Vk-3|fp{ߕ cAė4# xJHr1& U/ /3r[1Fؒł-`tq<,5Fj-fz 2r-)}ٜ\ɾQZTU7Iʊ w@=֍]'{[Yoϋ0F[ 1쯳~e\~Z3  aEژkQ.vZcF hq)NO !;`G^ڶjoJF|h̢m(c-j wL$ @yBG O֡[!^+1߬`=Fq/.0VGSJ%^OkSyTΚ~RǍ鼍tf>1ř<CWqdkq`S|sL'1لE!G&ĞCE0 9쫬hˋg߷x|>!RI%ˋ< P)YW.y ix=:Oyo4ܐ|(<//' j|{M h$t)LǑOU^ q0c @>78{DǏz$ͶR*-U}IZ M(hD ԉi!I8Jv\%Y !?6l}niܸУ{Z֤<4$!yV7\$LU]+ؔ% َ|H8NVu.)ljb"{U;Zyp"I]i4x19N I>#eE6PKffc'\ӛ *YzpQ3U1 anW Nl߀HhC5&x8^E*1'I;2Q18h,u m =VuKĘv~ΑDH偤Y%i+YYj&E`?W…d$:V;gV<hpQEtvH_I6 ! / |>cG>ǟ֎{J_V@x&g7GL8Q] mPTR83ݴp̏ij^L7w{H~G.rgYMiSٳ>=T`aw(:)Xm6s CD M7Gr]pyS!R2&s@Z]9iܮVh?DsKkйУ9 ͅd9YuY \xcƒavtx!%?xK&KTj"_1Ppg"v%9jKQ5fj(,l̍S/ 5n_VMR&izr蝰.Q6SJ.4;eyRmpb9VEm^J;, ΂|NmMxMFw~L,Hj&֟. endstream endobj 223 0 obj 2065 endobj 224 0 obj [ 221 0 R ] endobj 225 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 224 0 R /Contents 222 0 R >> endobj 226 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 87.874 676.3 null] >> endobj 228 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.994 542.575 257.954 551.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 229 0 obj << /Type /Annot /Subtype /Link /Rect [ 172.814 434.675 331.774 443.925 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 230 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.784 292.675 303.744 301.925 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 231 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.784 215.675 303.744 224.925 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 232 0 obj << /Length 233 0 R /Filter /FlateDecode >> stream xYKo6aCdI=,9r[#=6[WS"iOE-`W ' ~_Gl61N&qD"A7WB*eĘ$`?k3rW(0f6|'F~ڼFw0ȧMgc/O0{7zu{ledzGN8#wgł&qL eJ1@޿<OMV]YdummNtowr}ZGb H`&J( []fg42& sj=Zs0KRQFJ<դZ8h<% N[4aPӺ9qDaae' Bj4REw v amtۿ}]6jq77>n]sMOApO {@Uϐd (Ua|PުߝHb(Q?X)y)J;?9,2$>қW7 T4:?V'쟋4$XUa)-xM@[!ȍ2P%`8탵xD\]|HA%6gπ'¬jmQ]p58>q%,V^CVqNSU;rHB=Ю}&DD^u`cP޵۲bz1P@ Q!Q+_ m _&%pV-Rt =lW|(ZH=W&$ :Ԛ/y׸ɩޓS}=>]XՊzk!L.|U1ێ?nOg(OlQZfP;fܼZFTȾl5}8M  ۶Y5*bS "YԄ9&2;war)|"]Q6#O)m bվU6鮑yyd qq&ZlR4 hhl%rΏ@0祄Na/-I9 x̋ZnB g@ƫ>y癜{1 6F?W4c22DD,@'=/åD$i24sWkd[ǁ6 -۾lOZj@v-E.$r3i2XO͡o4t|Ȫ][V?MzI_i.]D<( WeMm_r>OEc`!4xޡY߇w4R$keb;YҾd2{o<. U<ے8 }"[geBbhYCLtCUV_O5dk <OpldP@.F+~a*ըt'Tℴ]y>͎٢} {(J~Ү"m x!̋GeJJ7W4}?lcMڽytXAq$WG@䥞MJۣ;Fɕ Hߗ1x"NVQ5"f u`[1d৉*WJ*L|;tD;gm gS۽͊+o3n)|ll5?;+*rMyR>'|i@S6@0BY7c4QMRmzZz > endobj 235 0 obj << /Type /Action /S /GoTo /D [236 0 R /XYZ 53.858 613.3 null] >> endobj 237 0 obj << /Type /Annot /Subtype /Link /Rect [ 64.978 443.175 237.258 452.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 235 0 R /H /I >> endobj 238 0 obj << /Type /Annot /Subtype /Link /Rect [ 147.798 394.175 320.078 403.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 235 0 R /H /I >> endobj 239 0 obj << /Type /Annot /Subtype /Link /Rect [ 139.438 260.375 255.038 269.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 72 0 R /H /I >> endobj 240 0 obj << /Type /Annot /Subtype /Link /Rect [ 204.488 113.375 300.648 122.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 242 0 obj << /Type /Annot /Subtype /Link /Rect [ 322.888 113.375 419.588 122.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 243 0 obj << /Length 244 0 R /Filter /FlateDecode >> stream xYoFbP 8Phrnz.9͇(8ȕ0ER2+CCݙ<73_5})\? $L `NW\/pXo>_n$V6x|Ub[, hjXwiU(F@baA7.8Q]IKnwىb =Cy.[N+ێӒMJN/ ^kufPhE<B. 0шA=?5I߾N=9(uyffQRы ܍&%az!qf? 'u*`w9X=sCI.FU%`d MYbܖFHۃ L `y8$j(2Co*igAh(e^i{ʽC}FJz>/OOǟbxSH`HC붨 J|JB>CAQ'~8Ų]7wfYDa!E`|ӑUr/s o߾"&taoE)lLhe)Ӭ.|spc[ZvOX~%~D<&|HDzj7^5x.{xjU}->]ծ..|2kf iImVw{zLٜK$V;Qokw|R,u8@uų;8ɔzYEdXa/2] ~ѡu# Xs%6.Q*$U}5[zixԙ !4@`];S˵%tya1E(N,p;l]Vdf_mr,lY>li"0\ٹ?-X1f(ucIɆ9kxSrΝXذ]YI~2}} 5F(FObfJC"t$BWOp_?(ٶ8jc l*#FhY 1uԞzs X:\N23g_=BpPǖSalڡhm dQchͳ2ZPɯ7 cyG 8 `ȩ%"FhpXd^ncq䲉Jt^ J̈_<+Po4'ÚفߑA ͤ,tx_B"X?Y8'Qh>6`xM$%$^8z]'smsEHt7N ['tf8Sz<p -r U7ũE3Pf endstream endobj 244 0 obj 2327 endobj 245 0 obj [ 237 0 R 238 0 R 239 0 R 240 0 R 242 0 R ] endobj 236 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 245 0 R /Contents 243 0 R >> endobj 246 0 obj << /URI (http://sourceware.org/systemtap/wiki/utrace) /S /URI >> endobj 247 0 obj << /Type /Annot /Subtype /Link /Rect [ 509.724 446.416 534.744 455.666 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 246 0 R /H /I >> endobj 248 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 433.416 255.144 442.666 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 246 0 R /H /I >> endobj 249 0 obj << /Length 250 0 R /Filter /FlateDecode >> stream xZmܶ'㑢`vmx'qk^!]Ԯ1;Q<G$ۭ>c$1M␄< \ CHxk rha9v#XU+F~X0.yzc5&+OcST_Q1]=_n^YoNBJI)d#>yqnHHz ֨a b(X^KP{]'omq1\F42M!<~1RCF{7%D)rpBNmhl5)X0&Giqag8>KM6 @iE# ,*Hi,pV_Z\{iojk5D -vFp[ mwk'EUt*YJ{%u`4( T<=&d@ 'ȝ.$/ԶaeޕzwENhR*euӑ&~8J0D1`p= 3]u T9\74n* 0XQM%GWV$aMQb;Հ[GdV pbuc_;}8[mYHY4܃oǾhPlAxޗͦnvZ^oȡע? Bnd H@b sEΰ*GCge%UAM;p\C*<\pF0@1Eu50c`I,Cr`9 HSqI~4m'Q:J  CsL=&0|5c7=e[EQ|J&\Hs)TzkzdBA ~vgGYgA&r7kkc( MxLFɋ?=uwզ^WjuuŲaA ?Y)Fu:2qYݾH'x=T-*``YN32Vt g?Z}A4m[ZY%ugB0 L!)"uڣƚo (]=S"A u2_>#XaX?}2lmM* <,&iGۃx;} ۩ڐ`\w(!BB,Mڮ3g{A #At;A}*pO)! (n' -L? Z7ۛXSCqc!_j @B4_aE` 3"FN>FOX}W"48тd[v|bM`cEZfݾ'z9Lt'!i1.LUND/hg?Zw1|D/D8#1*(j-0^/S 8>R˳Fby WS(Z\CB;w_ YiyrK0Ѽ3,CD9\@!Q4'Z&FL'>r[_AL~Q!唘;Z/ \M Z6Ϡҹ4 Vo<5xReJ/~M&Ka9P$NSO`s*]aҼYd:g<^n ]}3OBy Rd }E"л ,xynN}&k>XCh, I?L#{u_4uCAƋ஀ٝmfFea[:p]" mn%[K Sm]9w L >(á7 Ut HOP4꽶xrǣ2]s9rvƖxY=ƋTy:-๦.}2u@10\S*)yV=?M)C,K'!㗖魨|Vc_tmTẹUݝ l \<:=`IsVWHc=ϧ4h9@4 K>{R.̀79C_Af\F9Vҩ/fq1OHLe>m}3$Ru!m?G=E@a]hI@ΫVc𷎙,"G&z{$AJT ^܋g (ll\Ž))yݍ(L5y{> endobj 253 0 obj << /Type /Action /S /GoTo /D [141 0 R /XYZ 53.858 259.194 null] >> endobj 254 0 obj << /Type /Annot /Subtype /Link /Rect [ 411.788 141.175 507.948 150.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 255 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 128.175 98.868 137.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 256 0 obj << /Length 257 0 R /Filter /FlateDecode >> stream xYmo6bPC4J:H]hm. Uߡ(jEl.ExmQ3|Fsו%ş'qC%x+R0Gɱ1qy%@&.?%$uD};4"NЄ;Ҳ>?>&k{;#Wzp)VU^638I^ڞ(- \te?#bg >Ζ(_RQRQgj,'G"M<h*P{GصE i3VS!f B> xQ NBV(zVp]…w=%1$V_*o^y!Vm5&*s49(:FXȯT0 ޳X_3s]/P';O٬Ωl i?Źw3$~VoR˦ ijv@ 3u CM;]w}yoGӎ֋EuJؤS}꼖1;Q;Q_1ƍ>L.r=kF{BL>lW G^xp4е%lcoXmh:U VNI7)CTYbj&D{R#ޕX>HR'ȝ/|c)gGT0 zPy>\"qjAQV ,:gBƮw݋IrJ(p<Nn 7 5\l`pBc?th)}jK1A=>Q;Z7˺+> endobj 260 0 obj << /Type /Action /S /GoTo /D [259 0 R /XYZ 53.858 210.1 null] >> endobj 261 0 obj << /Type /Annot /Subtype /Link /Rect [ 204.594 300.58 444.124 309.83 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 260 0 R /H /I >> endobj 262 0 obj << /Length 263 0 R /Filter /FlateDecode >> stream xZmo_R$9؛}'Rv{(DH*[wf_l_ɝggg N $9\$ h(<>RS.cpEN k?~+#}[ltˎ|_0/51RssԻ^Q=;z?i^㏜pFn7qi`BQ5ANnqMk>>Jnvmc4nԀq)Wb|䴽-wlyF@( nK:R3 \A?0Ui:gTFj#$vjRT-dD-%@z:qt؆ 뛘 .`aa~sZnyRgE~͗Mu_ӦeV4AyuUǤ&;vu\'Iq*wz_.Uv0pӓEu/6;7|"2PXdGjE4Ydy($M隬HLF8D`;! Or/v6Ṭ̌Bcx(}kRRR?=ظox쳑vF\i8 ˖QȄeg/hAnI*pk (u9o}WeȑhгPU 6".ȂW\I_y 9CuZ .ގJl[8݇`Pj"&* :D`UZ^Uq6Nf$}HEVP:^^|4 ̞bGAVaXS~<`If:!BHKiL`h j ]eⲶ NmDS0#]Nq^d_$ 7d}NAn/V0" ×+ye`n,?(;WFYM8'+MZy"͖qS)bܟoBn l3+dݓ\CyiC&X{aVȔrU|D3d~b%@1jaSyCAajp^(R¸17OUnRqjS-RloЛIH GY_W(wCcVz|rG*9.Spa%AR$sRW]MTkѼm*>? 5U#LA hP6lR:=^xQp5> ]]l#b*Ar,!#,GRC*>6cIScA9@4OFPûr 5rFM9mǾZcab1/ÀRgf}.twL7*2~Y*%\9NDQ3f@LVԇ뽽&Zo.}PFiN'O}7d*+Ӥ_=H[hHZ=dlyTwKRx0)aB=!!,C9*]FT{Ωa+j2Tli;> |n H# 欱L 24,`KA>a}/IWqZT?qEc =KfFKXC5o]xubbl]ٸʪǃ]=VE؝&ܑj,5JnH"t]+NN7RoH-;rnh &u=?E%C_N?uc>~yJ>_VyY[u+ }#p(ֵm`] ʸu׭J3 a CzҚj` z V'l!h_=j4) :,dS'gQ@ qb;hjĵ-'fvEY/9w7Tv4j_hSv֌ق]1LO:kjr[b_Y1  , `ge(fFpv(0=I zƅlih YI|L 9)8iæ O8гF:w^Mb"',8 ' R SrĦ#cOxĆY;g8Bfyd:keź4H`|Ю־z|Brb̐7 c OnrkUmX˶v,>mֶ{몏YR xƛgޜRT9C |} ?b8 endstream endobj 263 0 obj 2502 endobj 264 0 obj [ 261 0 R ] endobj 265 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 264 0 R /Contents 262 0 R >> endobj 266 0 obj << /Length 267 0 R /Filter /FlateDecode >> stream xY[۸~ lCJ"%>MEC&m %Gx~ŒEYbMs*}]qCkIP-c.uJX yXhfM.Xǎ|\e+F1yY{L|X`-bcTP}?>lW>sy NęC]LANp#M>TaU3yOC.<B{Gwǧ4Y,~B)nM.owf$m.rFໞҕqp3uZNF}ce m3|+0$|Dž.^1p1-٧Vl0?@Oۺ $N3*]"rkHuliɋC]:!;./N\*pii9%[Jkt{Z*K qlI֐(wڸ6- Qo Qʿl.tl[ڮ-8U&m<.3`FUwh`Fh𔧔 - ~rJn"wfʼ' R"*mY}} š(7*먦a]sⷲ6b9[EUr /wے.f:ΖmvQGM,&iO3U~kZ-sܓ3]Ucfù>V=NB19iO1(ử \sL8:>'V#(Sk̑*ʪhADWLmERnY|#:$ϐ$ Ay%ю¢J: muܜcYcxp֩.vKg565 ]MI8y8OY5ֳp)Kmw#0;(,udx2wوւ}x$X\[qƹy\'iCǶ?"b9,=BQ=m9@u6HHi@/, Ě 8Lm$ rʜ.-+O ه L%hDtX( $msJ\G&D9,osڤ ;.ʑCe#:nNgu߰ /C)uD7Jmfh.jP^c˒r۠u((%LtI셕N+ :L7s$k~ve#/ʟIaEK*PW\8'Y^HYfbX1g$u$8TohP5=o??H{ $ ѠcXOQ Kl5w!}<- @@.zNlIC12 ܕ,M~궻yz&-<>(V?C֦$y]j4bʹ wΓ1G3G<9|Kb wl'gR07J~@;%,9L1%pu 81}1'81hPa2θ"|#4pqti#yǒoaa r Vڤe~x.3"B;Fˬ~%O;tc@u}[8Iq׈&pmZxa@,Z,Ws1rǏ=WO]l+Bu+T3EQq}"AS14:+v(]Cva xy endstream endobj 267 0 obj 2303 endobj 268 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 266 0 R >> endobj 269 0 obj << /Type /Action /S /GoTo /D [26 0 R /XYZ 87.874 718.3 null] >> endobj 270 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 707.175 124.004 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 269 0 R /H /I >> endobj 271 0 obj << /Type /Annot /Subtype /Link /Rect [ 555.212 707.175 560.772 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 269 0 R /H /I >> endobj 272 0 obj << /Type /Action /S /GoTo /D [26 0 R /XYZ 87.874 686.1 null] >> endobj 273 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 694.175 229.0 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 272 0 R /H /I >> endobj 274 0 obj << /Type /Annot /Subtype /Link /Rect [ 555.216 694.175 560.216 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 272 0 R /H /I >> endobj 275 0 obj << /Type /Action /S /GoTo /D [26 0 R /XYZ 87.874 557.698 null] >> endobj 276 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 681.175 270.62 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 275 0 R /H /I >> endobj 277 0 obj << /Type /Annot /Subtype /Link /Rect [ 555.046 681.175 560.046 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 275 0 R /H /I >> endobj 278 0 obj << /Type /Action /S /GoTo /D [29 0 R /XYZ 53.858 172.27 null] >> endobj 279 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 668.175 260.675 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 278 0 R /H /I >> endobj 280 0 obj << /Type /Annot /Subtype /Link /Rect [ 552.879 668.175 560.099 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 278 0 R /H /I >> endobj 281 0 obj << /Type /Action /S /GoTo /D [32 0 R /XYZ 87.874 457.927 null] >> endobj 282 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 655.175 248.97 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 281 0 R /H /I >> endobj 283 0 obj << /Type /Annot /Subtype /Link /Rect [ 550.73 655.175 560.17 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 281 0 R /H /I >> endobj 284 0 obj << /Type /Action /S /GoTo /D [38 0 R /XYZ 53.858 718.3 null] >> endobj 285 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 642.175 217.311 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 284 0 R /H /I >> endobj 286 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.59 642.175 560.25 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 284 0 R /H /I >> endobj 287 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 621.175 158.528 630.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 288 0 R /H /I >> endobj 289 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.987 621.175 560.547 630.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 288 0 R /H /I >> endobj 290 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 608.175 229.553 617.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 291 0 R /H /I >> endobj 292 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.648 608.175 560.208 617.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 291 0 R /H /I >> endobj 293 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 595.175 238.373 604.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 294 0 R /H /I >> endobj 295 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.588 595.175 560.148 604.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 294 0 R /H /I >> endobj 296 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 582.175 246.525 591.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 297 0 R /H /I >> endobj 298 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.534 582.175 560.094 591.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 297 0 R /H /I >> endobj 299 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 718.3 null] >> endobj 300 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 561.175 185.143 570.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 299 0 R /H /I >> endobj 301 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.818 561.175 560.378 570.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 299 0 R /H /I >> endobj 302 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 548.175 230.597 557.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 74 0 R /H /I >> endobj 303 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.642 548.175 560.202 557.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 74 0 R /H /I >> endobj 304 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 535.175 258.473 544.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 305 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.568 535.175 560.128 544.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 48 0 R /H /I >> endobj 306 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 522.175 422.864 531.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 307 0 obj << /Type /Annot /Subtype /Link /Rect [ 553.386 522.175 558.946 531.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 308 0 obj << /Type /Action /S /GoTo /D [79 0 R /XYZ 87.874 630.03 null] >> endobj 309 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 509.175 224.815 518.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 308 0 R /H /I >> endobj 310 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.81 509.175 560.37 518.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 308 0 R /H /I >> endobj 311 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 496.175 349.564 505.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 122 0 R /H /I >> endobj 312 0 obj << /Type /Annot /Subtype /Link /Rect [ 553.834 496.175 559.394 505.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 122 0 R /H /I >> endobj 313 0 obj << /Type /Action /S /GoTo /D [60 0 R /XYZ 87.874 322.352 null] >> endobj 314 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 483.175 258.078 492.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 315 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.456 483.175 560.016 492.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 316 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 470.175 316.311 479.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 117 0 R /H /I >> endobj 317 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.152 470.175 559.712 479.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 117 0 R /H /I >> endobj 318 0 obj << /Type /Action /S /GoTo /D [118 0 R /XYZ 87.874 410.752 null] >> endobj 319 0 obj << /Type /Annot /Subtype /Link /Rect [ 159.874 457.175 317.428 466.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 318 0 R /H /I >> endobj 320 0 obj << /Type /Annot /Subtype /Link /Rect [ 554.248 457.175 559.808 466.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 318 0 R /H /I >> endobj 321 0 obj << /Type /Action /S /GoTo /D [63 0 R /XYZ 53.858 679.3 null] >> endobj 322 0 obj << /Type /Annot /Subtype /Link /Rect [ 159.874 444.175 286.054 453.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 321 0 R /H /I >> endobj 323 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.886 444.175 560.006 453.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 321 0 R /H /I >> endobj 324 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 423.175 286.03 432.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 80 0 R /H /I >> endobj 325 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.576 423.175 559.696 432.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 80 0 R /H /I >> endobj 326 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 410.175 185.847 419.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 72 0 R /H /I >> endobj 327 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.346 410.175 560.466 419.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 72 0 R /H /I >> endobj 328 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 162.2 null] >> endobj 329 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 397.175 217.358 406.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 328 0 R /H /I >> endobj 330 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.132 397.175 560.252 406.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 328 0 R /H /I >> endobj 331 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 384.175 190.463 393.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 332 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.458 384.175 560.578 393.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 333 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 87.874 203.773 null] >> endobj 334 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 371.175 279.403 380.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 333 0 R /H /I >> endobj 335 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.818 371.175 559.938 380.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 333 0 R /H /I >> endobj 336 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 87.874 291.989 null] >> endobj 337 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 358.175 300.595 367.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 336 0 R /H /I >> endobj 338 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.57 358.175 559.69 367.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 336 0 R /H /I >> endobj 339 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 87.874 183.794 null] >> endobj 340 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 345.175 206.515 354.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 339 0 R /H /I >> endobj 341 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.342 345.175 560.462 354.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 339 0 R /H /I >> endobj 342 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 332.175 239.123 341.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 343 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.108 332.175 560.228 341.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 344 0 obj << /Type /Action /S /GoTo /D [149 0 R /XYZ 53.858 718.3 null] >> endobj 345 0 obj << /Type /Annot /Subtype /Link /Rect [ 159.874 319.175 337.893 328.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 344 0 R /H /I >> endobj 346 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.488 319.175 559.608 328.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 344 0 R /H /I >> endobj 347 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 658.417 null] >> endobj 348 0 obj << /Type /Annot /Subtype /Link /Rect [ 159.874 306.175 250.991 315.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 347 0 R /H /I >> endobj 349 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.153 306.175 560.273 315.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 347 0 R /H /I >> endobj 350 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 363.364 null] >> endobj 351 0 obj << /Type /Annot /Subtype /Link /Rect [ 159.874 293.175 361.422 302.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 350 0 R /H /I >> endobj 352 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.308 293.175 559.428 302.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 350 0 R /H /I >> endobj 353 0 obj << /Type /Action /S /GoTo /D [159 0 R /XYZ 53.858 718.3 null] >> endobj 354 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 280.175 268.928 289.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 353 0 R /H /I >> endobj 355 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.892 280.175 560.012 289.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 353 0 R /H /I >> endobj 356 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 87.874 322.578 null] >> endobj 357 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 267.175 284.913 276.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 356 0 R /H /I >> endobj 358 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.778 267.175 559.898 276.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 356 0 R /H /I >> endobj 359 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 254.175 215.699 263.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 360 0 R /H /I >> endobj 361 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.144 254.175 560.264 263.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 360 0 R /H /I >> endobj 362 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 241.175 274.281 250.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 363 0 R /H /I >> endobj 364 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.748 241.175 559.868 250.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 363 0 R /H /I >> endobj 365 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 228.175 304.205 237.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 366 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.64 228.175 559.76 237.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 367 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 354.003 null] >> endobj 368 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 215.175 295.412 224.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 367 0 R /H /I >> endobj 369 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.704 215.175 559.824 224.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 367 0 R /H /I >> endobj 370 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 569.346 null] >> endobj 371 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 202.175 308.895 211.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 370 0 R /H /I >> endobj 372 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.606 202.175 559.726 211.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 370 0 R /H /I >> endobj 373 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 189.175 349.832 198.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 374 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.31 189.175 559.43 198.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 375 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 176.175 365.572 185.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 213 0 R /H /I >> endobj 376 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.196 176.175 559.316 185.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 213 0 R /H /I >> endobj 377 0 obj << /Type /Action /S /GoTo /D [219 0 R /XYZ 87.874 271.621 null] >> endobj 378 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 163.175 341.014 172.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 377 0 R /H /I >> endobj 379 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.376 163.175 559.496 172.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 377 0 R /H /I >> endobj 380 0 obj << /Type /Action /S /GoTo /D [225 0 R /XYZ 53.858 158.698 null] >> endobj 381 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.874 150.175 328.85 159.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 380 0 R /H /I >> endobj 382 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.462 150.175 559.582 159.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 380 0 R /H /I >> endobj 383 0 obj << /Type /Action /S /GoTo /D [236 0 R /XYZ 53.858 366.3 null] >> endobj 384 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 137.175 168.127 146.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 383 0 R /H /I >> endobj 385 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.466 137.175 560.586 146.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 383 0 R /H /I >> endobj 386 0 obj << /Type /Action /S /GoTo /D [252 0 R /XYZ 87.874 718.3 null] >> endobj 387 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 116.175 195.601 125.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 386 0 R /H /I >> endobj 388 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.156 116.175 560.276 125.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 386 0 R /H /I >> endobj 389 0 obj << /Type /Action /S /GoTo /D [252 0 R /XYZ 87.874 326.453 null] >> endobj 390 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 103.175 219.573 112.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 389 0 R /H /I >> endobj 391 0 obj << /Type /Annot /Subtype /Link /Rect [ 549.118 103.175 560.238 112.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 389 0 R /H /I >> endobj 392 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 90.175 311.566 99.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 260 0 R /H /I >> endobj 393 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.494 90.175 559.614 99.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 260 0 R /H /I >> endobj 394 0 obj << /Type /Action /S /GoTo /D [268 0 R /XYZ 87.874 506.3 null] >> endobj 395 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 77.175 266.822 86.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 394 0 R /H /I >> endobj 396 0 obj << /Type /Annot /Subtype /Link /Rect [ 548.798 77.175 559.918 86.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 394 0 R /H /I >> endobj 397 0 obj << /Length 398 0 R /Filter /FlateDecode >> stream xOwq} ̎^̈ȈXJd{d5m/|H4#l`wF]U?]wߵcznWs\kݾ'/7?_W/}u=2/OL|Ң~1_g:.')sv 浛eKCp6Zm< Z~́7npK-[o7  zz>_"(% XH|o^{a7/}l'o;NS׿TN굒#z:IVs6Tׂґe @,Y&Ldr4b9XN,G'щr b9d)R"KE,Y4dir"ˉ,'tdґ#@,Y&LdRF,KiR:N,KR,Y d)R"KE, Yr"ˉ,'tdґe @,Y&LdRF,KR;N,uKRԁ,Y d}}}}}}jgC2f 2Cpo?8w4K/t3[?}Kw>E=W}u.Ԇu\HvRuP e\@=e\H,Y dR"KE, Yr"ˉ,Y:td2e @,Y& e\HM,kBjbY3PbY3R#KA,Y TdR!KC,'r"ˉ,Y:td2e D,Y& e\@݉e\HM,kBjbY3R#KA,Y*TdҐ!KC,_{L 5r3y9sK\Ƿoo?ߌ[7h-SAfoM8Jk%@jCuzHvP XF,G'щr b9d)R KE,Y4dir"ˉ,'ґ#KG,YLd2eKiRF,KR:A,eKRd)R"KE, Y4dir"ˉ,'tdґe @,Y&LdRF,KR;N,KRԁ,Y dR"KE, Y~=jq]BOwA,tvo?O>7Nw:rMqtR{Cz:IՆ uvT#$5"5yeͣHM,kA,kEjd)R KA,Y*4diʲeџQφjADuNBPjE5Ld2e˚GX< ԝX<IJQ&5"5d)R"KE, Y4dir"ˉ,'tdґe @,Y&LdIJQ&5u'5"5yy KA,Y*TdҐ!}<32lOw3W_ܯi"ex{ɇ[՟x.9u\kqP 1rI$:HVT;rr"ˉ,Y:td2e D,Y&IM,kxPwbY[ƓX֦&m< KA,Y*TdiҐ!KCYNd9#KG,Y d2e"$G{dMazuG]:1XHy77?nt-"Bk79֭[SMH^͓\X>Y([In,$gT&SMHuHun7ғnғn7ӓ S*LU2UeTm17{VAmRmVT;zP e D,XnՃXn?rr mF,Y TdR"KC, YNd9D,Y:td2e D,XnՃXnՃXnՃXn?rR KA,Y*TdiҐ!˚\?q6i>8ZMڤӧ4i;=vfKW/p_&qQX\O[_f8,7؍ƵZu ɕDy2dTGC!ѐHut::RT@c0UaT*SULU1Ucu BwK@vRTOT'Pe"DI,KiRF,KR:A,eKR KA,Y*TdiҐ!ˉ,'r"KG,Y d2e"DI,KmRN,KRA,uKR KA,Y*4diҐ!˚5iYCyy˩Fka\Y(D,7ʅ SLU2UeTSLu2T:SuL5j0`T&RQTkE#cHvY$@"ʙ0UaT*SUL՘1UcN:dT:S L5j2dT(G#;R]QTkF#ډLU0UaT*S5jL՘1T'SLՙ3UgTS L5j"Ue%e%e%e%e%e%e%e%e%e%e%e%e%e%e%e%e%e%e%eڶ.*h\\ Յpy^pxW7o_?Ǐ Cתײ8,O>&H88pwM'G

    ;˕ro,3UgTSML5jMQTkrZD#՚&| ՚& S*LU2UeTS5:dNLՙ3`T&SML5jMQTkHTkrZD#՚& S*LU2UeTS5:d:SuL5j0`T&SMZD#՚&#՚&44LU0UaTْْْْiGovoL@cەo?ClR˺ ԃX=ؤF,Y TdR"KC,묓 }N^W4\Y(+I.,,O$73dTm(Gu#6ʑj݊rZ7c| պLU0UaT*SUjL՘1T'SLu2UgTS L5j2dTFm#պU(Gu6ʑjݰr*LU0UeTS5jL՘궡at g7 qG3ûfNkQx9s:ۿ|{}}~>߾}z}o^+psqϻCJ O\Y(_^Q.,,O?(73UgTS L5j2dTʑj3#yGu HΙ| :gr*LU0UeT*S5jL՘jݐ5 u-Eq?)/eDn>yŻu[}y~Ӄ/sjSO'峳\Y(wLՙ3`T&SMH.G9RQT2~#պe(gT SLU2UcTN:d:SuL5j0`T&SMZe$H.G9RQT2~3UaT*SUL՘1UcT'SLu2UgTS L5j2dTk$rZ#IwZ#I#I| I S*L͖͖͖͖͖͖͖NU{ۦ 2[yylڞ|~9<~:zzN>||w{??=ɇyǏvk~=s; |՜`w](P\Y(_Q.,,O(gT(GlwZF9R`| z6ʙ0UaT*SUL՘1UcN:3UgTS L5j2Dl#zF6ʑj=%HMTI(gT SLU2UcTF&eL4r-ѧ9ZѧfՋ?||O—{˥NM2Ӝ'9z7?8NףjG9S*LU0UeTS5jLu2T'SLՙ3UgTSML5j":]rZIޑjG9R(GuLU0UaT*S5jL՘1T'SLՙ3UgTS L5j":]rZIޑjG9R$HNף S*LU2UeTS5ZWo7VQ͹NeTiӽsF^ۻ7z<W^͟^owVfO{>vB׭IkG_~Ak,xP,wxP.,_E[kzsD,7 +umɅL5j2dTk3HTk3@ޑvmɑvmRݮ 9S*LU2UeTS5jLu2T'SuLՙ3`T&SMHu6Hu6Hu6Hu6nf S*LU2UeTS5ZW^ysXѺu=8./Zjr=۶xw+ǟW5o^Նda|nUZ?8n,O?(7S+峱N:3UgTS L5j2DuH#:rZ|QT/ʙ0UaT*SUjL՘1UcN:3UgTS L5j2Dۮ$Gۮ Hu5Hu5nF S*LU2UeTS5Zk޹G7׊= AVG٣5h;>ߓ k{G_۞yzg9Cn$rzVĵ嵓ɅI@0UaT*SUL՘1UcN:3UgTS L5j2D/#zʑj= HETA_(gT SLU2UcTN:d:SuL5j0`T&SMZB9R}#zʑj= Hr*LU0UeTS5iއ%]e?SUoW/8ٶ3j_jϫrO{&^ykַßw'Լ#v|bq(w׭4$O'VT SULU2UcTV{}ggQDymBrc9SML5j+PTk^rZ #՚W| ՚W S*LU2UeTS5:dNLՙ3`T&SML5j+PTk^ATk^rZ #՚W S*LU2UeTܪ5}[ϴ8:~9v99k8W{}QGO=.g5ux95 f$O'kArcy\0UaT*SUjL՘1T'SLՙ3UgTS L5j"mX#mX#mX#mXmKr*LU0UaT*S5jLfNOWzF^3 '5 jmߍr*LU0UeT*S5jL՘dNLՙ3UgTSML5jmߍrZw(G}7RQTْْْْْْْR00fY(rc9SML5jmrZF(GQ$R"QT S*LU2UeTSLu2T'SuLՙj0`T&SMH6D9R"IޑjmrZEF(gT SULU1Uc`Z:FZmwu--ůo>ܽ:x 28>ݶ[{ihҎ>Ǐqw@y-I,wrL՘1UcN:3UgTS L5j2DHu[nw#mT;ə0UaT*SUL՘1UcN:dT:S L5j2dTnw#mT;ɑ|'9Rݖ$gT SULU1Ucs:Nֹ|9ײhy2mx~_onvh.ܮ<ݟwpoF.y|rGv%ȅrcTN:dT:SuL5j0dTTGC!ѐHut::RT`T SLU2UcTN:d:SuL5j0`T&SM* JCҐt*JG2 *`T SULU1UcTN:dT:S L5j0dTjCڐ6jGڑvllllllllllltz&mP~xu~~,^Ջ7on͉jcX0svG4+X.,,O`9S L5j"0 Hi(G5L#@5LC9S*LU0UeTS5jLu2T'SLՙ3UgTSML5j"00 Hi(G5LC9S*LU2UeTS5jLu2T'SuLՙj0`T&SMHi(G5L#yG5LC9RaRaʙ0UaT*SUL՘j[k2'Jm㋶vvC;Gtǟ~|wxwyv[KDZSWs##YuNMPRVT;2e"DI,MeAM,Me_wbm* jbm*zmSYP#KA,Y*TdR!KC,'r"KG,Y: d2e"DI,MeAM,MeAM,MeAM,Me_bm* jd)R KA,Y*4dY7jQ =8nh#,>_i0}|~͇Z]C=w_kɃzuoZ6xR%"Y,wgc&RCHޑj=HJrZ%B9S*LU2UeTSRig9Xn,{gQrL5j2D5NB9R;Rʑj H>jPT SLU2UeTSLu2T:SuL5j0`T&RyʑjMPTkrZS'Zs'3UaT SULU1:=_h~pܸ|Qi߹]?ݾ/W~ۛ?޽{|Qjkcw=Cc_$vo;ɕNDrZ#DH6E9RMDI.LU0UaT*S5jL՘dN:3UgTS L5j2D(ʑjm"JTkQ#DH6E9S*LU2UeTStZe6v+V.X߼=s>Lzv:l-^S$_\X>Y$S(7?(GuJ)Y#:%KraT*SUL՘1U[33g9Xn,{gQrL5j2DuJHNɒ#:%rZdI>jE9S*LU2UeTS5jLu2T'SuLՙ3`T&SMHNɢ)Y#:%rZdI>jE9S*LU0UeTS56Z뉦uFhh2`R~/ ^jn\wn_oϯK݋ o~~<{D@rG0UaT*SUL՘1UcN:dT:S L5j2dTm(G;RPTk6#ڿ LU0UaT*S5jL՘1T'SLՙ3UgTS L5j"ڿ Ho#yGʑjFTk63UaT*SULU1z K $6l"ZG0BlO0^Çn~}ϻAZX5k{'_X̦ztN=cFradyX(Lu2T:SuL5j0`T&RF$GHuan#L0IT S*LU2UeTsU|N^#L '5$Y${Pn,cH,w:R{PT SLU2UcTSLu2T:SuL5j0`T&R{PT4wZ=h$HAC9S*LU2UeTS5jLu2T'SuLՙ3`T&SMHAC9R{PT4#պ=h(gT SLU2UcT"1i#8. 88n7`[ֶ.,'|F.{si zڮ}yv"">CwGuޚrcyb'Q^[\X>YTSGK?;ɕڊDymKrc9SML5]/ɑ]/ɑ]/ɑ]/Rݶ%9S*LU0UeTS5jLu2T'SLՙ3UgTSML5j"m^#m^wmKrmKrmKr*LU0UeTS5Zub>Q}􃣆ඝw\#W/p{|{a[f85Z=/G>:_Z[ߑQ\X>Y(_Qn,+SUL՘1UcT'SLu2UgTS L5j2dT<ʑj'yGu^H˓| :/r*LU0UeT*S5jL՘dNLՙ3UgTSML5jG9R(Gu^H˓| :/r*LU0UaT*S5jL˷h#3qc ˱>Rzw| ^Ӽ`~]_hg;;N-%S_&;_ '/ʍL՘dN:3UgTS L5j2DAʑjm@Tk# H6@9S*LU2UeTS5jLu2T'SuLՙj0`T&SMH6@9R HޑjmrZ| LU0UaT*SUjLΝ[-dΞK_fq#6sq^W>|Z$^o~|{{~oOO=r6onIѯ>v_qkI_GW. rGVrady|}B9SMZQT| ;R(Gu>@3UaT*SULU1UcT'SLu2UgT:S L5j2dT| ʑjD9R(Gu>@3UaT SULU1յrnck~W[ө\0.W.wz񛷷7k˿}{,?=|s??9s+_KM@_#|j QT SLU2UeTZZ|v+X.,,O`&SMHf(G5F9R0ʑj̈́I>j̈́QT S*LU2UeTSLu2T'SuLՙj0`T&SMHf(G5&yGڑv@:*LU0UeTS5nMTfGϊ} ˡX} W^秹o:lU\_~.񤭟:*<%+% 'mədT:S L5j0dTxHƓ$HƓ(G5$@5D9S*LU2UeTS5Z6hG\Y(mH.,,O׶M$73dTxHƓ(G5D9R$R$ʙ0UaT*SUL՘1UcN:dT:S L5j2dTxHƓ$HƓ(G5D9R$ʙ0UaT*SUjL՘j'v{'Uy8SۗH endstream endobj 398 0 obj 14945 endobj 399 0 obj [ 270 0 R 271 0 R 273 0 R 274 0 R 276 0 R 277 0 R 279 0 R 280 0 R 282 0 R 283 0 R 285 0 R 286 0 R 287 0 R 289 0 R 290 0 R 292 0 R 293 0 R 295 0 R 296 0 R 298 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 309 0 R 310 0 R 311 0 R 312 0 R 314 0 R 315 0 R 316 0 R 317 0 R 319 0 R 320 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 329 0 R 330 0 R 331 0 R 332 0 R 334 0 R 335 0 R 337 0 R 338 0 R 340 0 R 341 0 R 342 0 R 343 0 R 345 0 R 346 0 R 348 0 R 349 0 R 351 0 R 352 0 R 354 0 R 355 0 R 357 0 R 358 0 R 359 0 R 361 0 R 362 0 R 364 0 R 365 0 R 366 0 R 368 0 R 369 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 378 0 R 379 0 R 381 0 R 382 0 R 384 0 R 385 0 R 387 0 R 388 0 R 390 0 R 391 0 R 392 0 R 393 0 R 395 0 R 396 0 R ] endobj 400 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 399 0 R /Contents 397 0 R >> endobj 401 0 obj << /Length 402 0 R /Filter /FlateDecode >> stream xVێ6}Wc4IIX, Zw)_(Yd>, Hp̙!̿2!磍L'O%a4&8ۃ 3=8hDGށ<_IP%@kv _~'d RXL RRfOv۹n7k6wYm`kqq}22Whqߗ0=ym^oX}'tl S}2i.jzhq~nwĜxˈШƞҵ\\Ul;Gu Jg>x^gD5r2r<5ՄS9ECe˲z[) MT.K8<สosOH^!P^6[>e6M݆ [W4kV0fZ7_k†SR`v>5;< MBSCGվ΃h`E]hC OxĭkLC^sT%K}ԝ;tQH=#kjʖŔ[7(jl7 >3_6uqsuN9DaGgZ7{m lX#lA| zTM}-HG+es}+Nkb|> endobj 404 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 500.712 null] >> endobj 406 0 obj << /Type /Annot /Subtype /Link /Rect [ 325.734 515.587 369.654 524.837 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 404 0 R /H /I >> endobj 407 0 obj << /Length 408 0 R /Filter /FlateDecode >> stream xXao6_q0 lHJ:] ].mn@Mlɕd#%ٲ:ɶ GE޽G}s U}5 HpL|A)q |[P3c\1D[Z,^ңK%Nq\M2j15=7h* OgԍhqO A*̽`wѺrv _{OGwa饥a@U8ѧ!sZ0߷ҵLksD`B@!z-3+ jHk?A3 F7֮7 8(8_5 3HPƺι!:oaqRqD[ $/"dTJx)H|KFM!,?Ą40 MyK2\!!,jH&N{"NLEz3P,0EIj%fZe2z/:Kg1 TDsD*ɢ6.>ѣ],`JL5{EAvh}oVh% L 1W;ԎJa sd9-5ɋQ^hN)b:V m1"eZcHdV 1Y<MD9Bs lj>C֖+1$fôOzx$KesP 0*) Ml?.HsμKk+pXwfs$ vc>6پ)e؇<8 }5tMy mB| <ȮwL)x}~t'ClULIpYeez9}XElu "guz@kL`%9zt>aTޭt|ǭm{D+AO]9)'\ƒ`y.>8dɝcPEo\[z&. =nxĸ#;(N(Tp7C)0;0~t0fT/%A7IcM%W4n endstream endobj 408 0 obj 1591 endobj 409 0 obj [ 406 0 R ] endobj 405 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 409 0 R /Contents 407 0 R >> endobj 288 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 718.3 null] >> endobj 291 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 634.1 null] >> endobj 294 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 363.94 null] >> endobj 297 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 146.068 null] >> endobj 411 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 718.3 null] >> endobj 412 0 obj << /Type /Annot /Subtype /Link /Rect [ 291.844 199.943 456.344 209.193 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 413 0 obj << /Length 414 0 R /Filter /FlateDecode >> stream xX˒6+]fYM^NRE=E: 4 PM2 J| l*-Qx{ǿ+v3β҈E|S# Ưnӈj<# [Ǫ^ϿWn2V/ZLW Ǩ F峗woB|!(_crc~+F6{ob~|=Cz¥fsg3~'f/! ڐo\o|^o<181~IQ]嘗lQ K2ߏޣ!*k4zӡ81ϖ6t /1KXsLgҐf;/itFڝBs%.>'{{Z&iD&L3[a*}lYʦc֚<ٱ;]+ LA%[7aB`kᰧ7{Uth.*ZVOoFՒUyCPĆf'(U;` j",ZW0rIK3_/ҴF8l9y}gbboonw0 ܲ4ܑkK; b/!.g+}7-W0D ÿ(>J6hr[MHjG7s,HC0OXFn):<IdVvv8DK ˉBԎ,a @X\.kv*؉WI1M=ԇ5 }ץ͆Z<(@f Y4ؕv/NH5ρh"ĕ)0 YkSija8@nK^|H26WQq5HCSlA`ٞJ{&r~ŸQs7vR)EكSNev1)] GXb;ء˱G )$܁]@Uh!}Ì j8`,ߋxFȳ~@ÿg pϯLBNÈ/9..ȿAQ7 wU> endobj 241 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 87.874 485.641 null] >> endobj 417 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.874 547.144 245.034 556.394 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 328 0 R /H /I >> endobj 418 0 obj << /Type /Annot /Subtype /Link /Rect [ 452.354 534.144 530.164 543.394 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 419 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.874 521.144 182.784 530.394 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 420 0 obj << /Length 421 0 R /Filter /FlateDecode >> stream xYKoFϯhdJd;"^doCL]9C*d7%Hl4YW5w0 sI8RD ?RS.cpE6lJ8b l{|u2lnw}][&4ƦZ]B?iynN8#wK f6Z- ìO.F鮷EK}E M-2{uLH}BrzgCl檌1M[z,B 5y92`"J)0pX "j+_UGT`GM[zVR }G.6ҭE7p|#JM[+msP>%_m7(7negGw%1-K3ẓ{ߑf1&^ڎ`qNi`D=U6Ֆg%O&4!Zfh47ȗ'ݿ#U\S>B"JBC!zZDuP 2(lH Fz:wgC$k/ 1Z`Ck|DC:yw8&e̎'Z!ѽ;y7tPA 6"kDZU,R-%^GRH:%idx(bXzG|:eFP8ȫc]_|\1oL=3*FЅ/xg`ÄGQzDS؊پ QmDfQ-LOMs!31á7,[,I pnez+8T]pא1V1JLYJ\َXr*ݷۨ¢2^:%ɑ$‚/Z׮!i%J2Kw e' 5B ∾!K(V=(pUd5_{7m*jy!%'H9A`=:I3 rکvHAi[eY0-[>75 B3cr\OBi*%4?lpu)lVZ-WfiCY$gJc:v/@}pcq括^SYE l[C"3 td`'NrGͅZW%78=R2+XVRt\ZϡR & &UՈLJQ}%%Ɋ}queT|!oE=ϸkg}&]s9sqJeqS(kn":!gW&+py\75oV \tɄ _Ҳ-o_>޿6=eFrqsI;{ݿnwzL,亂y=E#nv7ΊUUu1\_| u0R9ۡ :,}߾YNO& _mj%&@D.@ 3ʇ0~]+Qhx3 FT>? 0(@>,UvZ~;~ӆnD-.+x'iz:=>W9~\- \\6+eE.*c`JyغC޼,ЫU|~3 %~ܭM`>ߢ&0O+EeAlc8J:7!9ZKZuӅ:` endstream endobj 421 0 obj 2504 endobj 422 0 obj [ 417 0 R 418 0 R 419 0 R ] endobj 416 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 422 0 R /Contents 420 0 R >> endobj 423 0 obj << /Type /Action /S /GoTo /D [424 0 R /XYZ 53.858 164.806 null] >> endobj 425 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 403.198 97.778 412.448 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 404 0 R /H /I >> endobj 426 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 207.681 97.778 216.931 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 404 0 R /H /I >> endobj 427 0 obj << /Type /Annot /Subtype /Link /Rect [ 232.768 194.681 413.968 203.931 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 423 0 R /H /I >> endobj 428 0 obj << /Type /Annot /Subtype /Link /Rect [ 123.898 181.681 167.818 190.931 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 404 0 R /H /I >> endobj 429 0 obj << /Type /Annot /Subtype /Link /Rect [ 125.998 153.681 169.918 162.931 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 404 0 R /H /I >> endobj 430 0 obj << /Length 431 0 R /Filter /FlateDecode >> stream xYQ۸~0$%JbK"wݥ][A]!E{g$˦Dk&XIqF g>HMp}Jb-![M~ PKTdJ%(&DȤ« GO9XB)>v x>)&:yg8ac-^|7< "0]ؖjƕZt^ܥTR5lƬeUn'`Ak5/֞g6[q\_ufp.b\^!2_uޢΘnqP:M' Vq+Pv!ǥm{6"@_5ZodvaڣsYC!9@\p0Po[ua=ҕJ=[/>tRZ+EQ|輂jaj/kq@Yl-P|eO#l }6kHCxk2ʋfvlV|3{e% c$h*u/17KWy t+;ÄE-8pV5sGDQJU+ogIGUycQ%[ճ+"ٓk0?tH#9K͡5 fM~7ٕǩBn0X'`%%'?.m`/ȅ "Hx4,6,h=H>6E\yq 2u7E,85?LOZ]rԈ֬kQiE2Mg# > DӀp{q~b#*qT%]>Oz]ut~#=g]&=y& 9p*ʹx^/񨥗ҋeV\H+"gfYYsbtY3RU@ݤػ`UV,Gt *DR@ 8PȺޘyfH!Z@ )ĚDhgExhK(ĺfQVdb#Q E/(dG!JF$KY:_BX{9H\)LutI/`#.¼) 70qV}r.1x=<+ Jv(eI͈ЉR.P,?irfQV4Z+a]%Ti<ò̐LG^0Uڒ롬>"K *Y5Ŝdq(+B^,juUzSn0sWC3j.վ3)ND~~(c 7[^$Zo͟HR/ u:XVVWB}A'& GP ͟D_ l]Vex K刼|Io97P3m.a5> L~o`6)୐(ziI o?pnJWo^O?QKu 45tQcE|vb^11}xy$/Fnồy*7X!6bj*!/S,o pDZ?b#5`whJm'{gp$N,%Lm;{SmA!|б4g,- K[bkCT3ongb8JHx喝Y58A3(|(&i]wM4x-<Aı}PaG6iN=Q4jMĸq(IU`Q3C<3J-Bq@-Or>9¶GhTfY$dzFA78Z7m,ں %3:zwYA~c[P :<noۼ6ߘGh=7cD@;hB'мk*(&qs zr{p1TIɀqhKJKNwz# t]8']G@ȹi|@HCIk{؇BcDjE2Ϯ]Eve͛o|Hc7*ؿf?W5s5G GWto{fX]uNǾIJ!XuRYOFϭo'4 endstream endobj 431 0 obj 2106 endobj 432 0 obj [ 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R ] endobj 424 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 432 0 R /Contents 430 0 R >> endobj 433 0 obj << /Type /Action /S /GoTo /D [434 0 R /XYZ 87.874 455.3 null] >> endobj 435 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 298.313 158.454 307.563 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 433 0 R /H /I >> endobj 436 0 obj << /Type /Annot /Subtype /Link /Rect [ 221.814 298.313 366.884 307.563 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 128 0 R /H /I >> endobj 437 0 obj << /Type /Annot /Subtype /Link /Rect [ 486.924 298.313 537.494 307.563 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 438 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 285.313 131.224 294.563 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 439 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 257.313 230.594 266.563 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 433 0 R /H /I >> endobj 440 0 obj << /Length 441 0 R /Filter /FlateDecode >> stream xYo6aX2 _"a1lEj"pm&*˞$7 ;e[""?}<ϿO("7Z'7} J pDS. "x[aO'׬ :&}=yzI|PJ^7o/qN#SK䫋(AW{##µ֊"IG8$FOv٢L6Y,QLy_kS9}.ӯ6<~ٗ=K [ٵ ?FGSϼqk8RvF8DGQKJ=Am6܏lCg; yVmw0/Z[f;qyq0?q$Zsc׻L|9Rrll2j6e=L/D5];~ F%J٘QM|3)="BB.뫤@X o~*fɧz(<_PUI˶uz+uߠ \SQaA2t+WIvn7([ 4HÄɤU{pf'>_N`!q P&kyBQ,{p<7eY1;3Ug'"7!s8^ܔ< iL(-jtLjAJnßm]\;6C6^S Co$lw0P{ulŎr ok1¬)lDh+Uf^@BѮCq*XI I <-J(N]qP#16. 'i+`WKS<s{Tpbyٚce@U6lcP( GʈcJ`t4&D;*9uT@׉mdM4Vj_7^2R(U(|."gaj;#Ϣe<^,z^TS Q~T2hGӪVOe<*s5+cN{,0 ~[c#B9ܛuavb+OmaOå-ESOoQܛ|;zYw[:cQuY)\I6Og@ʙn(ơ*d=}'k1?B")]nya(> mqYNb-X-XnoB5JQql PHr jZ-̥ }p2~,L{+p] ks&j K;݂ xo~ m&H endstream endobj 441 0 obj 1953 endobj 442 0 obj [ 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R ] endobj 434 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 442 0 R /Contents 440 0 R >> endobj 443 0 obj << /Type /Action /S /GoTo /D [434 0 R /XYZ 87.874 268.438 null] >> endobj 444 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 648.975 261.718 658.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 443 0 R /H /I >> endobj 445 0 obj << /Type /Annot /Subtype /Link /Rect [ 465.168 648.975 497.398 658.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 433 0 R /H /I >> endobj 446 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 635.975 92.208 645.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 433 0 R /H /I >> endobj 447 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 622.975 150.558 632.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 448 0 obj << /Type /Annot /Subtype /Link /Rect [ 153.338 622.975 298.408 632.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 128 0 R /H /I >> endobj 449 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 53.858 542.109 null] >> endobj 451 0 obj << /Type /Annot /Subtype /Link /Rect [ 81.638 328.09 170.018 337.34 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 449 0 R /H /I >> endobj 452 0 obj << /Type /Annot /Subtype /Link /Rect [ 125.998 172.299 214.378 181.549 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 449 0 R /H /I >> endobj 453 0 obj << /Length 454 0 R /Filter /FlateDecode >> stream xYYoF~ׯ-foEu"(>DASEX"q \RZRm sgg0|Ck(A|Dą"LHJ0IU˄0khdvmYtBɛ8yw+%.L~M#oԵ4ڗ?2kFQ ?7 c\uΪ{D֘d37pSxJ76E{Ç8Ǧl i;+..]-[[j+ÿhmG#x}mO8eV&R;wkpߏDkG^EQ+PQ[Q ^ Z}JU- %Cl1,;.ˬMemR9lMgMglzS8Jɉ*\Ftb쟄C.w & &U(\\&?/揿*6߸\G#gp)6.pk^2B}J,jć1ċ~!l1u~s΅}Qan7mUʺ~ڸX4 Ep(η%dK(W1d Xf9fd ==GRioa iBzC֛ /Lkɵ4)0 pmOQP8J>J\pq8-wcZ"+S*={lJ#WM4@ A6/GhgS|dKI,#JFMm4HQxdޤyD-K2˓Q1.pi|IϘl)oլ3K z]e\*XEb:<52,n 2~K&L׋yIUBPT6*gx9򻤈J´ċ]BEqQ`H,l<5&>tKgXv%^n~ ]w Zu= ;T] I#\ o&N[}v!FGjqa 0VԈS!:\>iۏQ8sxćHHކ'U?N'q2.5)II-,֭5,qf?`Kr9t.[f~p0gC>"S|?g|vg՟M_>3ӫW/^~.W_iGP=jm|\6 1$mΝSUTW?<.@G7Xkqs:tӁ*Ytq-pѶJ˜VFDPO^mzdʣ]3aݣtg(WIԃ?V ӰF#Vu1 D#Lͫ4R.)=(hq2[;SsJ'QlZdjD5, ڲDx}U#8%::?#DCzbc$j\Ԟ#؄ޱ5ag[_HGbFݡV?lx SHl y\p)En@26pJU-mw&X /F:TѨoj5{?zHjOT&$Pg]ݼ]:33wD ;{zZ7usZfgɈ` ԈLlȹp2NpO&r`΢XD}5jiƝ:=r;xF endstream endobj 454 0 obj 1999 endobj 455 0 obj [ 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 451 0 R 452 0 R ] endobj 450 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 455 0 R /Contents 453 0 R >> endobj 456 0 obj << /Type /Action /S /GoTo /D [457 0 R /XYZ 87.874 692.3 null] >> endobj 458 0 obj << /Type /Annot /Subtype /Link /Rect [ 115.654 416.493 185.124 425.743 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 456 0 R /H /I >> endobj 459 0 obj << /Type /Annot /Subtype /Link /Rect [ 279.644 311.913 349.114 321.163 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 456 0 R /H /I >> endobj 460 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 123.333 229.484 132.583 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 456 0 R /H /I >> endobj 461 0 obj << /Length 462 0 R /Filter /FlateDecode >> stream xYݏF篘Dܲm^{Dyy`+`Rm4jo{' (r_0 >Vs €ɉb E `pOM 'ܗnźN1E[rXA<{㼂Aɣwk6M/@^E΃Grx0z̀Q/Fx@ JQc0g&q'i/a5\Ogl=_ƕl]p.h$xTH-˭=뽔Pk$˔&Rx)^"6m( ZF ZR >#aRl32ޟz0^EdvGI zt V= lJ_)e[: vf;;W,^ev[C4>k88om~/ 6IeݮԁD8vkK>F2!]0tT@ Q|6%Y=7@PfAMJp6O杽Fu\ &R^4J  }Sue R:8++ Q^=nA`P ] /TߥY%әꋈ6ŗ!@1Di÷h(|mkD0%ha983A\VLirk.xy)&9SclA-f|1ys_Idg8J)d,| K:Is_oE8>x bh KTcrL TA|K0m%^Ѝ3ŨK&SyC>4U|a^~e[W8 VAtqZ.ͥ}wB3.]Sjis"ă2plƐ@hUP*9ermz,ڃfcDB]3=\}RCrǚ $((zܻ #I)޺Xj"8c9麈viX?\uUsc/F!|e0yvP_qꐘ%8ؼfxr' c 増mf[Wg(D%lo a;zDR߶pbĥЕO uq)c tu,*qmb[z#tאtaFgג.C\cGʁZQgXG 5 Eک.uv6}<.㑠jzxi~mKy${ylu1t/ѠZ_8 hpτ`'@8H3[I}jdH (lN$(l=YQ.loNjBq %]Ĵ'>Br?ZMrOYSjf"N5Jg-%mDBцR׮P-i=$M=V/!vyk"D=:9a- A '{ZF3Gv-YuGnINE&a#y}`/PFw*P-qP a2(A%Le";ܛK> endstream endobj 462 0 obj 1842 endobj 463 0 obj [ 458 0 R 459 0 R 460 0 R ] endobj 457 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 463 0 R /Contents 461 0 R >> endobj 464 0 obj << /Type /Action /S /GoTo /D [465 0 R /XYZ 53.858 491.7 null] >> endobj 466 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 506.575 116.108 515.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 464 0 R /H /I >> endobj 467 0 obj << /Type /Annot /Subtype /Link /Rect [ 366.878 80.072 429.128 89.322 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 464 0 R /H /I >> endobj 468 0 obj << /Length 469 0 R /Filter /FlateDecode >> stream xYkoF_1۴@ $ `nEwh!24SJRNݢ}̐ԋ؈%9q{e~Zp|GVO'JPDzTr!K)uBXad扴ib .#Yd FY늼_81oopcMӈ2jO=.>T K9B}YU| oWErʋkr12{"ofo~߮O?d k1N g=Is"`^O(Zbǀ0[>[ĕˮN {ٵVp}Nf F')͘lSw:X3O(NRakOYpv/nVW%{Jd䟺tZ+#v + &Y- W&8#\Śj} wq).m[khz,1xyU/G+qLHqz|gˋVP "7%Izo-є8b|!kڠ@{0Z#jeu8D3k,K]/ i$#t>)E3sHyNr*V_G*A⍒Sl;ԫ<[# 1t)?| I 68F\E3z*DAa=r,cpg{o ?fs"a]ا!a)І)*j06 clJ9o 3l2MVYdjcPg"DzIKݙnqڀ Ļ><>g,#d5Uxf;tvw̼_]^B/MRm^^g;BwqEW/ca !_eDi[P>Y*ww]ou[JȱJҤPfV4:vUuxuy뼈wyY6QӢ<][WӤJb;'T1ݦMJhC}^iӞ3:5c3!X'Yu(-ЯUm;< Ag.ocB r5H[Aݗx0/q1`_"M'f.@kX/ ;ϐkk C5J}nh!/JG륑J|>٥##J7ir:_>O n=yiK3z8&c|aX4\2/IXX.^^ >rrQ}D[TGRfy(#>6B L5\C!\33J'D:"\!+PNKfJt6GWS.. =ZRB5Đ{ߎ nеFn[,p@ &T~Cgڙ8A/)~A*_KI`i@ jj]F>WhmsVz*N2Z i?!`lg4|^MI1Ti\|8cYi޷*A vgJ>m vz endstream endobj 469 0 obj 1991 endobj 470 0 obj [ 466 0 R 467 0 R ] endobj 465 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 470 0 R /Contents 468 0 R >> endobj 471 0 obj << /Type /Action /S /GoTo /D [472 0 R /XYZ 87.874 499.5 null] >> endobj 473 0 obj << /Type /Annot /Subtype /Link /Rect [ 429.684 542.375 556.404 551.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 471 0 R /H /I >> endobj 474 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 529.375 157.904 538.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 471 0 R /H /I >> endobj 475 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 488.375 222.264 497.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 464 0 R /H /I >> endobj 476 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.994 234.175 298.524 243.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 471 0 R /H /I >> endobj 477 0 obj << /Length 478 0 R /Filter /FlateDecode >> stream xYmoܸbp-$E~94 5y,imz^RҮHIݠI6]Qp3  8D0 H# s0Aķ:~P/MO;uSl(޼}1KxkXj6۪m 3,~SN3:?k)n~n.΀Q L7ɔ : 9aͫ -yC}㵔>a-NNw58ɤK<)[9h_':֮ Rd4P*Ȉ6ΐ6P-w ~4mIцmZpq %𦀫MmX#B Jx\ȱW"/.K[#ź (+mcehwuqLMv̹%Y'NbêJ[ޕu8,b]ezyF@נd[B.k:'N p}JzΦ.Lpe=O$p1cҸ!5h`-<6NL%z`S 5y=B0)\1yr]>zo}oPӔ}2o {bq]VaݑV 3@I I`4P&9t`MwY&$SpZ$',>WApY#JՀ ?,P?'QO"U NBU8+DxekCtzRbֶ,S:Dѭ=4IiHI]${gU<q0W,""˪.1 {W'o~ ~hE;j *5NM+ cۗ"tE҄ @De7XvY 'QڪkI4 k5/<-gFSWYȗsgaw=ગCb4v+gtآgfi6UE`2MG,0*!fe<]~|/1:!F*G W|-ͧ&j8:rj|ݠ'F;+yy*b*B3=s sV>:ȉ0rRĹZ-Wu) 8rN5:øqȖ1ӬK]~xU΋r3 tH.5I-KmRŎoFn96Miյz5<ь\o|HsYmYr *2Ҁ/W5[`_50v2Ff~xFa=/BS%QK.x> Ip)orPE<儀󃡷P mR~ ?>Af Sj[dĂMri6Rd:?rM N.[pŷU/ݞƺ->e@`2|AkBnya5A_a+$vHaE=1٥E|\XnYswkDN|؆; oaFMti+)ml"i5 (O{% endstream endobj 478 0 obj 2101 endobj 479 0 obj [ 473 0 R 474 0 R 475 0 R 476 0 R ] endobj 472 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 479 0 R /Contents 477 0 R >> endobj 480 0 obj << /Length 481 0 R /Filter /FlateDecode >> stream xXmo6_qu iHJmݺY0E!۴-4TQN ;J-J`P ;== ]z6 ssNvqz(s\=a>1#FMĸ.{IYla;^5;gh4tGS2 wB=lT!W(ig:_{#2F3"+&l~9dUe8:~>Hiw̡0 6z%16 ʅs~W1n[jmLx̽r+,zCqh;:Z^sY;#w\:p^<;NU51:YjVPWGX"NI 6 )3|7x,OR)r iK K]R0ӑzj¹vJ%uX@QS1zAE]”\·Uc>F~lX8a޶Jz8@Xgb" a 20oqDUїtkLڱ*=7!'(4m{qxMԍn3Uso15nSKGLv9u-w"NUCZ|󑀡Dp *Nd(kP>dG37i18TfOUc$6yX0><KpΣľ{`Ft(GML^#ϫAݶf7AT׶}(06L'5L$\ϕ]X cYz(s,aF(@m)&J>x5|GS LR>^]߀O,G9ʛuݘm{3gp05KULd9X`c_;#Uq"1 T1p+J FM*1T;5 eV0~ \7aOC QbM 曪9*H NX'x%sgƇ} _`,x&zTOFQxSO8_oux%{,㤘qrpr5@o!nWo8}{\6Z~B"ϢGl[wSF 0Dx_XW't[zty|B7,G`)_fA AttW҃@.'\.^<ocu:]/F{ߕg uj,xbbzHO endstream endobj 481 0 obj 1517 endobj 482 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 480 0 R >> endobj 360 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 718.3 null] >> endobj 172 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 417.9 null] >> endobj 363 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 149.8 null] >> endobj 484 0 obj << /Type /Action /S /GoTo /D [482 0 R /XYZ 53.858 659.1 null] >> endobj 485 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 292.975 101.658 302.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 486 0 obj << /Length 487 0 R /Filter /FlateDecode >> stream xZYoG~h%1t#}pveaH #`D6Łg﷪{Kq "uv_Wˆ~(.|8ђ: JP+!5R1& WThx똰IhfXH>n #|=kq2Fl6͏\iל\Se ")o7EYE>o#I˷7\Oa-W~5z}{̰BuC4fZ(ʅ7~?9cF \{: %6z|Fļ́vkoc}V\BߴE}x=HowNREɻwqT+RP +࢕cթ()sROJR 9DV%qO (yQq!QGwXSaJPꩡQr6QdBZq'UqnSr!sE&|H L !2?g!ͥ1_IY8ZB͞<ՑH,3<* "4w,5OIհzgJr=hh@jI Ѓ$}E/S]Rs'wP`G4' jcawwQҒOFFTٸrWħkX-/Y=C^hN 1`br6/)4G* bQsFe_rzocC$,@ -:((A Zxc C@tR7ySZGCP†잂4%A| iw%zwu* vȅv{: U=3AeUFpC"` hg:90Ȣ49!i3j,DԶP J ~IQMpόSuf cKqWBĘNI2:3N)d(pw1ȭР痮.+)BN}J32|;U-oaq!و~ dv!k}9^yvmrKS$R;9&z_i&+k֘rj>D|4:&X&GҴT ޾1#f ?"kCoq܂`=ȷ\[huY3G#t T\,w *'iJr_H/w+H s>x l9>P+hft gll&O8ڵ_SORPP\^)Ɗz[*1}SV$Mi64D&<LZsMFoj^JM پ{pO^wځDJ2@D\my-'wNچa(KѨ S}[^a646)K{~SXgqf.."hn4  N'4.~ ] 4I#Q~u}HPᜐ@.Ǹ<|-Zc:t&pRb`thpg_'`SP}\~-< S. J;"fLTn>ݹ+D{[,4pL hx %n6&kn`>L?oV5r7 ޠ l͠MI>#R3~Sf w/%(-U%u7'ҿ~0kMbۃɸ]j;ssPܘ*\/Bd ZyЭ\8 o6sg)k~$q_6.]hh_X}xv8(% 9<ӆX)F}>K(fj-ۛ_ aݣp茚 z|)]^*']Ȭ]Х.Y|6vNУwI$=+.$Bh($N> endobj 489 0 obj << /Type /Action /S /GoTo /D [490 0 R /XYZ 87.874 146.145 null] >> endobj 491 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 491.39 135.674 500.64 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 492 0 obj << /Type /Annot /Subtype /Link /Rect [ 488.624 491.39 546.984 500.64 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 489 0 R /H /I >> endobj 493 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 478.39 211.814 487.64 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 489 0 R /H /I >> endobj 494 0 obj << /Type /Annot /Subtype /Link /Rect [ 240.194 266.205 287.994 275.455 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 495 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 135.02 207.814 144.27 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 496 0 obj << /Length 497 0 R /Filter /FlateDecode >> stream xYob\%z@MT"[̒K%afvvfו'06կ3aO2-T q@xLj|[3>~iĮO4nxl/i5|^2FlWsu:34_V/Sz^}h9ܯY]Yp(LJe Zsp>*=NI_/*"n՛(˒x7*!qm jFgB,ژ`ݞWJ( 7 O3_ m':NƂn{T9VtVrP >l|K팘g-;7Eہ*VZ;$Z60|Bx` eoۼH^|8&)feRIVMGH3HOeU` =e{RDAYCf߇1.=2;Z; %ze虎ai5mo498lT$M'&y2b(kMn0{&=[fDQ7M`dFhP\D!Q&DR#ş?wI/N$i{h\*)F)5z "}@vkh :W._MСRjp=\2㍦@DQ?Bq@"Tc!%TjfcTVV>MpXU C$ERLv  ;!Ӥ,@奝0@1xٌ0ĭxB7_;^ˆ Fo1!5_𥷈TK9谋Jp5X%"=Tkfwm)ǵl4 ܥe-W.Ej2zΝ/o_e o_3| ό$'xY (@ӡmA\yea.P&<1Żg"jpjhOWM1<5wKz_9Z?bT@K-t$]ǣ:M#\؛3R\"ÄlѧTL%(yi hw8\Vs1].9,h庡^Ȥ ݼl3lyT$2ӧrQ29[xo9Txj`>bjvXl`If]<&)%9Kl,.aC\7/̓딁?ZP?D1*@1^4F:l)mr]oJ0tje-츿ärn޶\C3Z1m'6ǂqe(DTpX! n\2`d֪E͆}6ׄ]^DDNa#]^ Qs{*7FmunE ?kDbHnC1L K[Z[~qӮd;\Oy9 -POEWXJ 'u^ oZmfnD Hhɑ 3l0ޜN#*NgȱPSf9svTqɄ֘ >u}:JPs|ӧ6Pm{4OLK —M-M*fq;mtCty .býdS67?> endobj 499 0 obj << /Length 500 0 R /Filter /FlateDecode >> stream xXioF_1m)d˛F[u=FiPāA+D<E{,u\QdHٙ7ǾY SC 67 2\,5혦M1,s S%VMG0w?fLz>z ]ڌZ5F/}3MIy0]ׄޞ/%企۪iTЫLzߍ.z i2msSֺ0m̀/[!,o>(j7E3za2ÇaWB[u}]v}oz]A0Ghemh" y:V:<Vvu2 LU: mCtᐅ[áh9no/%{!q|q\;R:\w. \78z*7 '#/e bTa>ee("Z_ZVu.c5W%߿sZNZL(+n*z_l+{s 4od-~6d<_dlLoʴ"t+eՋG^yzoӋW!/D؝FGpHPb eﱻ-װilAi Y^E/Y*k9ZD]pnLiE~VY7- 9,^JyՔωLiMusKFSy,i^ka`DhKX^Hxg6iqhb OpZ-0>-r<7ܛZI:+kc&R&iUZQ~V&, 0D`Gpf6Aa9 rE/*4Y%̬³0#-oZ*et#Y,a 0 V9bI%!= E 9ey=F#Ųd1r1YVWGv\-W,0(Sn(M}T(Ԛ'ɶGnSY]rFlgJmqJ&s.5SDؾ'R5LD57Y>RieQF0)f |- WkG8/J::p~3 Z+*N#oL;n Nːjkd i,t?+b ١+X:tr:<-? S@,AP L߆vyR&`m:1cl_׷4¹5# = -0 ta 2 QNDC#z:0#ӳ5+)tޚq졙6'3X3P*Pֺ˽}3txc7Y{1 q2y9'uStv]qhR!_|Qu1.֒GئĐa 0 _[_u6{Ȝۨ2,Apݵ6'Oc endstream endobj 500 0 obj 1856 endobj 501 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 499 0 R >> endobj 502 0 obj << /Type /Action /S /GoTo /D [501 0 R /XYZ 53.858 548.9 null] >> endobj 503 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 243.08 130.664 252.33 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 502 0 R /H /I >> endobj 504 0 obj << /Type /Annot /Subtype /Link /Rect [ 187.344 230.08 230.134 239.33 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 502 0 R /H /I >> endobj 505 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 180.185 130.664 189.435 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 502 0 R /H /I >> endobj 506 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.084 167.185 388.884 176.435 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 507 0 obj << /Type /Action /S /GoTo /D [482 0 R /XYZ 53.858 718.3 null] >> endobj 508 0 obj << /Type /Annot /Subtype /Link /Rect [ 414.444 167.185 540.044 176.435 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 507 0 R /H /I >> endobj 509 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 154.185 193.994 163.435 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 507 0 R /H /I >> endobj 510 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 113.185 202.804 122.435 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 502 0 R /H /I >> endobj 511 0 obj << /Length 512 0 R /Filter /FlateDecode >> stream xYm6_)|X$p. :[bK$_n[J%z nEq>gqKNvKIbibQjƯԔKŘ$\QmЀ%QM@~3F>+hˬc!Vi̞| Q]P]O-#8ܮ" u2'Lk*9ݒ*]~΋{O6f]Y7W\Mv~?{{Q($-,AFN(Wb~"ۡZ&][@8׆Z&6y|7Sմ͟=-f450ƵwTDȨ=NxK&aLJK*33>bg?# h޻SEGP1=Ѽ!(=xdGˏRc=R[b <2y:➖ A D@ C9Ϗs1?9g,ιDzU姌ԏ2lh Ze;*oRCkLBlB}MuV} bEbqdFM&` k跸 OH!-Vt>HL%x*d: AbaLY/fEI\fuiY,oHQݤ] ^{PI:stna؅3 ZֺZs**aXΒd5o!6/W2m^0VW}K&+qqyïńN-322 U${u^} yN.dv)}իW)M LULNK@p, 霔ϕP)8F$+["PN4rSFn:-O "x.؉[?#iVN# 9 a3 Y q ~"HuYY\t0vsfy(€tE_Y+qvɛz}֌\xBDACam&;D.ux,fB)QBB2< :'Sqy !!p qy,[к.c8cx)ർ&ýR9M%w& >q o :- IR#yPHp6P hYV.Ni:!~2R췟k͗P, #oH~0yrG< YqynMpt㈫I!@$'půE?RhReii(S uB'$%^7کlJXaO 18 $T icO$C4FrRXO"KD$FiՕXbA\g Vc(cm3WteXO;3G\sSdptgt}p") 4WeTP~CBt+\8˙s_$U^Kp!k[eݔUNj:6%]6tsZwAλCϨR \*qĖY<ȗ6Vꉙϯv?!0ad{)6? +8p 5ɟ\`D?? p\8i_`wj"e<9]Dpq/1ʓ%4KhܗЎV|X:I]Q6x84B@KfW.+8s o<Zza#.tchQ\:v萼oovfA llK̘ATm>eKAs)*7skm]3.9݁)X+,9>" 6o1 'K \+QJ'($w¬j $)Pc|)?EzUp`v9ĿrȚy<2Y_`!KSwwsk endstream endobj 512 0 obj 2049 endobj 513 0 obj [ 503 0 R 504 0 R 505 0 R 506 0 R 508 0 R 509 0 R 510 0 R ] endobj 514 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 513 0 R /Contents 511 0 R >> endobj 515 0 obj << /Type /Action /S /GoTo /D [514 0 R /XYZ 87.874 124.31 null] >> endobj 516 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 607.375 233.928 616.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 515 0 R /H /I >> endobj 517 0 obj << /Length 518 0 R /Filter /FlateDecode >> stream xX[o~ׯ`Gt4MRo/4Z! JZ'<&ڍ euk#̰/=S Qj dtR1Xk[1 0b@R`-RiF3T IzKPm@t u1'B/B=}, ~č zRyGvWy - J1WXF]3uU8tQ/\IqGUIQU,WM7Q˱V`P6xF8nN{(ISPZN׻?XŦ d/';,|,\J!e㷿!L|dsqڍ.%>(>k sds[_Ǒ( KT]uWh@BtCc XM%.N甄(4>Gu|I,b!1K& I3uFimx_Gq 6Cq]g B{cߠ {SD[n0BuuFVh2vRV@Lj8o8Y#\(TgMHr?-~i%+0L1ZLt옿m# |7e7|㷿d47&͗T^=U^E鿓{#%]e_UDGQ̿X'` }C#j5.o<_ND:0tQX_!eX)D5` DC7mGahgsP+ endstream endobj 518 0 obj 1985 endobj 519 0 obj [ 516 0 R ] endobj 520 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 519 0 R /Contents 517 0 R >> endobj 521 0 obj << /Type /Action /S /GoTo /D [520 0 R /XYZ 53.858 346.849 null] >> endobj 522 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 407.624 134.004 416.874 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 521 0 R /H /I >> endobj 523 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.234 342.873 177.364 352.123 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 521 0 R /H /I >> endobj 524 0 obj << /Type /Annot /Subtype /Link /Rect [ 447.794 342.873 495.594 352.123 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 484 0 R /H /I >> endobj 525 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 329.873 322.374 339.123 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 507 0 R /H /I >> endobj 526 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.014 301.873 206.144 311.123 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 521 0 R /H /I >> endobj 527 0 obj << /Length 528 0 R /Filter /FlateDecode >> stream xXm_16^]bC$项R`8,y-Ėt|-C?^`ć<3C?+2Շ~A8 9QLqRLiB_8a[j87^?êXQvu)+`ޮ183cVѣVWKKq7 DLJo`Uod#t<67/za:D/­)UnѐH2h_v1f&`7"#6fbtVpd#`dNX6J -E(D͎ћ؄D.d%@z\.Dc}|IEyo67T'.GXDd:Ouf}uS-cf?B:L-./'b­MIޑ1Ht/_ؗݩضyYtL:KZT)23Ünj(_^~!  i:/)|b E~m^G1,P"d&[ ƺ艤|w!r!^y/ S,K!J(`"IcY.;6b&<8.2ǨWu>6?f5i67,(!rfȮp77:{-cޢGp2hS o{)^`\y&֐Ĵ51s<,&;|;M^l3yB&u$pTGḳv˃Gh_PRhLQłIcDv kzAP=QXK/)5GCXX WXqoe}>̧h~YHv?m&R]3& nлQ[7.tv?iOɱ\ \:]`JaĞr ò12o;oNmujDZjDTx' gɺiS9$ #R.@Ja)=c=U͈e1@xRE-'3I4;w4^KY<>3w4!<7w{+ endstream endobj 528 0 obj 1889 endobj 529 0 obj [ 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R ] endobj 530 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 529 0 R /Contents 527 0 R >> endobj 531 0 obj << /Type /Action /S /GoTo /D [532 0 R /XYZ 53.858 634.7 null] >> endobj 533 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 339.26 105.548 348.51 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 531 0 R /H /I >> endobj 534 0 obj << /Type /Annot /Subtype /Link /Rect [ 115.568 237.216 167.258 246.466 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 531 0 R /H /I >> endobj 535 0 obj << /Type /Annot /Subtype /Link /Rect [ 125.998 145.694 177.688 154.944 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 531 0 R /H /I >> endobj 536 0 obj << /Length 537 0 R /Filter /FlateDecode >> stream xY[~ׯ8uk`Gs5m5\o0Hb" I,fHJYh`E!uΙOA?͗Jo'?Us\7 G2W[RL(sEaݒ 0al~/YiU(T1aBzmm.QiLg9A]7 )^V܊~ жוl^b+*0v0|9U޵ e5RguyY'e5Ь4>)-GLJE^k6$ƕyzHUqQiٲY5FԈ1ha"qqt84/vrDh4z"M.q^# @ 0 YB>._Pm=v%1h1.vBQ*3{y0FomEɊf7/J?s={Vq0~!\Any -tZ{sZ*RږR<ő`DNe<.[% WC C,8,/v*/`v5[)T̥YΰE=;p7s44hfjI_ʎC jX5F&q#x{8wt.ˆlwXp$_f@}Mdʋʆ&2P~ Mzm4.? i}u!ˠJ]k׫8χ^[C7tF&Mz0H҂ LnӼ &:) ,R܌s.9`h^G%~E6GK j)(]:K=q0TIňn:S)=)es)eZ9}3sQAg=ыyC:Awyf_퟿{ٍ޾i4۔&'χ,.ma=^I؏=d,\ k%YŋKPH~P4 |vt1{FOs_~͒'}.R R_<-Eu3K_^['*q/u.+hPVP/Xj*5Sl~DeY ::^gRZ&w5wTl (`k+`)^=9?;%TD3 C#Y:5X腿Ip24 ~nyT:r3^^t`J֭ܘ%U$%@2 Ias:aP<*$bE.hnFGg4fڔ b?זe1q^1NfvjbmenPeLs#9(# nGd;R1BDcL4:]5`L,/ddO[UF#mԘm6:02sӗ\5 缭B,Wk{]P1 \5!;+v2g~ښMuNg&MGӲ(IȌ[f7c>UbCgF;c% C7hdؠp!@GX)=gWyh9عe_X GG Fs ZfZͦ;-fb@پP3bܽUa+}1 @k!avء/WQ2nNr8 1=(Z1b $g@8q/ r xje597QK~.7g-UG&q\Ű/9 蠅t%sXp]s|j(#lMU2۞}՘os7qh%iWkyRc9+wB쑵̗g3eCƾf]e(P,C;rH@Y|k!cO]q ʚ,偪i~Y[WSG/0*Gh161 Q$h*$C"pC\2>2>u !|._VFRΞQݾ;Er vra Pro3f72Šdx)#U~3'lq,ox endstream endobj 537 0 obj 2208 endobj 538 0 obj [ 533 0 R 534 0 R 535 0 R ] endobj 532 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 538 0 R /Contents 536 0 R >> endobj 539 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 119.767 null] >> endobj 541 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 634.7 null] >> endobj 542 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 455.707 154.574 464.957 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 541 0 R /H /I >> endobj 543 0 obj << /Type /Annot /Subtype /Link /Rect [ 176.794 162.642 386.334 171.892 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 539 0 R /H /I >> endobj 544 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.574 108.642 232.274 117.892 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 541 0 R /H /I >> endobj 545 0 obj << /Length 546 0 R /Filter /FlateDecode >> stream xY[o~_1MXֳs'@^ E[Ay˕j ɵ9gHjiZD̹̙s' ~^ /~h8#G(A5)!5R1& WThm ;hd ^{%/#Y|[~nPW7bVS=j ef='ɉ xK 8ړyVeߐɶ"I%ߗYV.HBgw髏owWS޺bHzZǔ+187Ac`;kC#ƆC 6'J.!i?N̕FƸ0Guύhd4 MDU_{QfAMӎ1&:mKMq\K)O8*1zH.i$YqpQR>Q]o*'!n3KPC&mOn7'v7 ;AGB虊\F=G.kIؘDő6~~l<&Ȑȱ!2"ƴnNSrFFF q5ZjQ*R:+rMM]yp(oW{'$q}JwpL V,/}RoniU M$~PyG8Nr[|ru?!{\~G=͋JO 2~SL&`*o#X6~X,_'RI>8t'meqOBnqsHDyFqS&!s uѭ!KO.!H޽MwYnN Z>+!َ/_oݿ֗/X?Eڃg4) yJ}SW!!f }qQ//EE^_,CFB OMՒmpM ;ZcI18dɸɓ"qj2QN$}c(kaD俘o!ww=,>q5!.u3>Si^WqbS$w;o-S9A̵zjiuZ@$|IgNKruf9XpdZPj5#614#;&œ9ĒtFw.$1*/W|5y!//ޒQ9FhD IChA=B$i( S,p5 Hr3$CUwGH U&m=xgMh3G MzڔE^'ד{cnIX( 53<ijP  YBUMC7٧&Å٣;@HzcA0M}R#CWjA9BY`X՟ uàS RyWCu08 ͬ1BPq#c&bt9 3C%wǴ q n iSHk^7xL6"q_$Dt]~uj `zƘ/sQ (7=`Oh3dY (*Ѹhgio%JP{l)i 9.C e|%bۀw|Qs,TwzЃjْ@%]3sfW1U>)>fZjTpF|9-+0WgCvW+ !<s@ i:&g M"IZ9}@-[ZQ5s$;AZi0 @> 7}Kdx5'Cƚ2]JXs4x

    p,ic%#HUWzšI.~U6 endstream endobj 546 0 obj 2243 endobj 547 0 obj [ 542 0 R 543 0 R 544 0 R ] endobj 540 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 547 0 R /Contents 545 0 R >> endobj 548 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 277.969 null] >> endobj 550 0 obj << /Type /Annot /Subtype /Link /Rect [ 74.978 409.98 141.678 419.23 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 541 0 R /H /I >> endobj 551 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 700.9 null] >> endobj 552 0 obj << /Type /Annot /Subtype /Link /Rect [ 167.238 409.98 405.108 419.23 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 553 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 659.1 null] >> endobj 554 0 obj << /Type /Annot /Subtype /Link /Rect [ 410.668 409.98 482.928 419.23 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 553 0 R /H /I >> endobj 555 0 obj << /Type /Annot /Subtype /Link /Rect [ 296.178 383.98 511.828 393.23 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 556 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 370.98 73.298 380.23 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 557 0 obj << /Type /Annot /Subtype /Link /Rect [ 118.898 346.844 191.158 356.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 553 0 R /H /I >> endobj 558 0 obj << /Type /Annot /Subtype /Link /Rect [ 277.298 346.844 343.998 356.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 541 0 R /H /I >> endobj 559 0 obj << /Type /Annot /Subtype /Link /Rect [ 401.258 346.844 473.518 356.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 553 0 R /H /I >> endobj 560 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 320.844 268.958 330.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 548 0 R /H /I >> endobj 561 0 obj << /Type /Annot /Subtype /Link /Rect [ 361.238 320.844 433.498 330.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 553 0 R /H /I >> endobj 562 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.558 266.844 203.818 276.094 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 553 0 R /H /I >> endobj 563 0 obj << /Length 564 0 R /Filter /FlateDecode >> stream xYms6_qj(ڙtzLFwPu<KlDR!)ۙNE_$\.'&bwa  Yģu'%ǃvR1& WTx[49Whu^yX_FɈGKhݨn:V念+`]i@14&^cn fpK-h[W?G/}ku#4>1w-Wa^U( Ŵ\nx^wt붞 0CM%t`ZvvAeۥ VƫtJ.ϚeQlQMQݽT{Ǽz(P:M"͢dE %+"%%EwƠ]h {rE Y|Ք$!alta̒@6ڒpπ0a]7&QRsx^Jf )zmu],hZW Q.]X,ւŶ9T{>WL|.|?tZ2@XQ:b|*Qw2<^#aex#x`TkmV+[mPNwoܽϚUGc8(9 _Z?~ }=6򩴳[U3kd˳( j0qV6YAr$'yڟ>8$<-]Lh!j<)<첡5y/3|O|I4!haR 3p}Iz%a!mfW} OBz"]^,aA9aH 4͒']B7+_]$alg1FafP=WW>vVCӘ*U:wi ^nQ4Wuu'CZp}C}D-r48^i];` T~dI~ɢX2f$kqڙk|&Y ϐ,Jj v j#Y=D:櫼>e$sH g0SaWrfqXћIu&-5)Ɏ5\BV&EN+qu,S gƊ3(a`f!v1c躁`̙ Ds6R& f_xgL2Ж-aڇ8N^k)ْtWlwn? 1@/+}(Q}GܜbIpz,EઁHA!c -*~gmeHS _:yPaɻw2q4)(iPUu&Olb/p{iylMz)s_ih/ 0fg(CժvD3}EOWX'#Lﱇ*'j`VP7d(]FpH~R a|I4٬?_d!Am2> endobj 566 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 129.06 null] >> endobj 567 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 324.175 143.444 333.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 566 0 R /H /I >> endobj 568 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.574 206.175 221.144 215.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 566 0 R /H /I >> endobj 569 0 obj << /Type /Action /S /GoTo /D [570 0 R /XYZ 87.874 217.3 null] >> endobj 571 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 97.575 286.284 106.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 569 0 R /H /I >> endobj 572 0 obj << /Length 573 0 R /Filter /FlateDecode >> stream xYmoF_10.]̾H!k 0hj%HE,)䒊]EOFDqyv|q`wE g1a%<ͣ#!ǥbLWa ЅuFy<ϳ|[]ฆݬcqWWSg@/y걃VO-p G''@C1q^S"M,{e}V$:][u˒# C=:8~ȘSwne`tҷ]+ ~i`ٛUo9 2h [2oXCZ9O;ٴ3+2zV횟FeDW&_4k KG &ht]wx)0d9Fe?QcT/$'4IfeװɪͦBaNx;A8"!ruJy}wUW1.V84z~غ(XӠoNM8(3&r=&QZmq1aijQvi;iU9٫I۫q۫xAMۑ^NFTsEM!Дf@C#Gvi˛8O h6ݗx h}mĊFWoL7)=P -ָv-,@ 7mxFv]9HW-dA?X%"CNe|Lܽ:3!c<#DL bnTlBUO.+Y4Mz;B &pr :?!1*d٣Gl"PQӯ > 7g^\ydvcsh˓H\HM|[}X_icU)TOoJ0cRIwr7b9-HE\B%JmPaAgYw 48gTEwc@x=A%g*%@J[V6r'Ց,C`{<ț˴RN [X$\a#;F% 09.B7FƳ[ǖ\IYol endstream endobj 573 0 obj 2132 endobj 574 0 obj [ 567 0 R 568 0 R 571 0 R ] endobj 570 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 574 0 R /Contents 572 0 R >> endobj 575 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 237.812 null] >> endobj 577 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 592.527 null] >> endobj 578 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 329.46 144.458 338.71 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 577 0 R /H /I >> endobj 579 0 obj << /Type /Annot /Subtype /Link /Rect [ 115.568 280.687 206.168 289.937 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 577 0 R /H /I >> endobj 580 0 obj << /Type /Annot /Subtype /Link /Rect [ 288.948 267.687 522.388 276.937 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 575 0 R /H /I >> endobj 581 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.558 226.687 222.158 235.937 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 577 0 R /H /I >> endobj 582 0 obj << /Length 583 0 R /Filter /FlateDecode >> stream xXmo6_q0,ZDJX . ٦mz$7 Q-QJ`@m"w ӏP{wk"A1)K&sD6F;[Y,$1չ(7w PQ$M}GJl}6A+}}0+ҴAaͦIPl@ݶ-hqbཀྵrB?$-o!+)*R;V l4Yhu-p)Ea=9%*yC:u"[5TKy{Ow[Qh H-ns$!1[wbKIvɦ$Ƿ>BA@| ua)M%OQ XY'7#N,I>RguDQԪ '7rxLViu(ÃMc2w0:EnUC<>+X:g 9|vCͺF8oү }SF endstream endobj 583 0 obj 1915 endobj 584 0 obj [ 578 0 R 579 0 R 580 0 R 581 0 R ] endobj 576 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 584 0 R /Contents 582 0 R >> endobj 585 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 499.5 null] >> endobj 587 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 161.379 167.904 170.629 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 585 0 R /H /I >> endobj 588 0 obj << /Length 589 0 R /Filter /FlateDecode >> stream xX]o6}Kj![m m=ā،-Ė`:0uta% r)]EEE.r%ya$ g}*l,\@/J88–#Ba ] %Zk<85Ҹ 58tC@Nq]q,9'(R(Ъ< IH*uB-ЋfN`V&eĔ&Q!yk[ Z"UZ"9w7[niO8g4̱O齤+}zWAsJyy$J4B%vdʜlrO@1OWpϳ8ȋh׫"2h-Y_M|G\]gF@\p "w?l\ ׸ڷ$ȃqvYU~*͒>ˮp)^XSHZ#"= -}w1y{ \Ή NԞOQv\]PbIMucvfz%'ĊC::[!J$]-Y2K#>"d]C.)U|> { ζ9/].IiZ=ڢus /'cPD8O)LŁ`ï([wiA f4o͔q:-}c?E9xt6=,qey8~% μd C*A(h=xܕgp}熲[;GwKRbPū!OcZ8zRvΊPd>UsH,xbo0 q^}. F٤jpqN3qGnz`Rx1P"N9lR7kWv_$i.(>قtO#1, endstream endobj 589 0 obj 1574 endobj 590 0 obj [ 587 0 R ] endobj 586 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 590 0 R /Contents 588 0 R >> endobj 591 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 707.175 133.888 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 585 0 R /H /I >> endobj 592 0 obj << /Type /Annot /Subtype /Link /Rect [ 232.228 681.175 328.928 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 593 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.558 616.526 211.588 625.776 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 585 0 R /H /I >> endobj 594 0 obj << /Length 595 0 R /Filter /FlateDecode >> stream xYobv͐H{[E녡Ȕ#,$9Yp{lS;I+68 g_& (̇8/_r" q)u 0\0}F͎&YfM ?M>| x42zln'z|r50lKBP`?y ~.uEқymXyU^}_&?͇>m B]%r=iS4zŸ,:k@hAiw訠ֶwmVq.BPEzqE]V&õ8b;ti)8?B#<֪ (vfv#%&7 Ys9xsFukQ$#gDR R\ uW٦S C pOP*"6SjN 0~IN$__+_ʥ 2Ύpތt'ʉf$o;utuH)ctRɰdUS+QF"]ê+}Jˌ::Bk(beW/A9H o.y$A7jK,GL(ĐbpL=~9Cp(6P?ei}w}f秭NTseQaL^镥:;"K ր'iՏ2;!h\$C1)5 YwC_ b[M+4P:<+rRbLٷAq[b@ݐ>qeq2ޥc!> 8 HlI:=?DQ@Ax_ǀJP~bgrw'bQ gWt8 ?FB8mZwscmPb cǔsbu3YI-qp¿$jz 6&YPlkulx~+-c$*=Cc vGhʬ4c=\}ڃ~plہfnjwzU)D̩e۩\yh8wApoOsl2/i,.{¾c}*boE=/_eD'j{TWŵU*';B\bWܶT\o.Nuf$'ѷ%k予HH| ,jZ'YA/됗)α繾YY`0'lB:J"ؕ& Wӡ8K,MvYThmlⲊkST]rzNz_7:4Oϣ,z<va8:8+SHlUӍQbO򃞢ؐNJ=h"> endobj 598 0 obj << /Type /Action /S /GoTo /D [599 0 R /XYZ 87.874 434.7 null] >> endobj 600 0 obj << /Type /Action /S /GoTo /D [597 0 R /XYZ 53.858 336.132 null] >> endobj 601 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 528.575 159.564 537.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 600 0 R /H /I >> endobj 602 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 464.575 302.404 473.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 598 0 R /H /I >> endobj 603 0 obj << /Type /Annot /Subtype /Link /Rect [ 505.294 464.575 536.974 473.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 600 0 R /H /I >> endobj 604 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 451.575 127.884 460.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 600 0 R /H /I >> endobj 605 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.574 423.575 237.264 432.825 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 600 0 R /H /I >> endobj 606 0 obj << /Length 607 0 R /Filter /FlateDecode >> stream xXnF}W H {K(P4E\!C6!dD*Q;$%ޤ- o;3gΞчo8v}bɉbn E `p_' P?"ͼfnE;| M7ߦXk ;Gu>J~4T^&3Q93C8OV0hO/h)e7 (G'IFq[jK {L1Q(~fG?8̈89{Ifw HÎ1Ѭ<4@,;JH-kE^l}HWE^f@C9s)Y~rπ!7?Wq^]Ue]$<6ʲ:7e=i9+vI?4V7۴NW/ω+\Iwĸ(K|^(/gUqUXLnTZFxw8%,bMj_]O\*< %מ뎇W b6 M7Yff81}. (Jv6$K2ƚ4rl9a|kq@D(ECHa-7~ˡ"v"Dl5potTɀUE;ɑ+4U]A7.G'UTw$'={;"P7Uh[f8(QV7 \Gd]YmN`ˏlBb_ڏG T.-k,&UyQ'aNS,x.IF14N/Ԙ  n$!A; -*ё/GMi(F) G(|UlƓKӂoO@իaŹ' iFlpT&4QW,hHXyI_1cP턦j9y搔P'(/ +,W30WW8ypp"Xѝa{?$c羝üND0@vگ 3yI. 9vک' JvDXW_|y'pzˠiP3>JɩzF՝Qꡐ-siy<0'4urpQHY$ x-21vh;JP,~9vKРa(8w CɂReU3N.SiL B4BꉐsV`ԲCl@&ˇg qÙV㬡n$3cnlpcMmƫ1k}?mW9.9a79#)`Cm#{B3R@D,*KemhA[c蛑؂<@ { =D-Fԋ eGLecO}M{tEy%=a '~<nQIVeH=b1ٶM)i8|/|c]ʼn>b ~Ğ endstream endobj 607 0 obj 1768 endobj 608 0 obj [ 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R ] endobj 599 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 608 0 R /Contents 606 0 R >> endobj 609 0 obj << /Length 610 0 R /Filter /FlateDecode >> stream xXmo6_eC"[CV"ӱ0Yr%yiP(ɶ(ʞOIH<=G#T3[k#3_rs)ʸOX1C$)/`06+ x2EW^aw} 19z=LWD)5Y>*inn`*?}bAW7nQteZ$},|WqkӨ|AL\%|L 4M:c (e4R4/X1jO]/2ȳ%+2!4k#mKZV,ǎ%P vEY^ZPEw<%YnFMaJ kT>qqcT臋%)TK_ϓP8n.]ڮ;\_jQdCJK v),}.&`MQ'mdɾyM1ekv[u; 8ov)uE3m. oN2tw#cZ4z A/[um֕IR!7@CYXeZ.Q\ ˰ 2"c]w!] { Öi%eB:8B5Pv*T+``*p)(q4& llb N6 (" hrp>_AuA򶮬C]owmP[Ŝq817n}}@9 TJ9Ps>(yuIx\4_!r5x趺eأ]B4bLUg7IuWhd5.t?"vT0þ;)pBa endstream endobj 610 0 obj 1216 endobj 611 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 609 0 R >> endobj 612 0 obj << /Type /Action /S /GoTo /D [611 0 R /XYZ 53.858 718.3 null] >> endobj 613 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 337.18 136.784 346.43 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 612 0 R /H /I >> endobj 614 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.574 112.785 214.484 122.035 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 612 0 R /H /I >> endobj 615 0 obj << /Length 616 0 R /Filter /FlateDecode >> stream xXێ6}WAl,@R Z7d>ċ"˻Bmɑ{Y" !uHig3KwіtQd46Z vq)pDfv dĽ E7^ cQ,zp +~`/~& ;2eu=2:oZn_-"JD`0d1EW[țʋ[[ٸnIE]x{sjq=`*sөt&T*VǦ7<'c?a)tbݗ WPi3Vɰ>,x"[Փ!B[?t/+V޶pBوt54$olH[҃URJLK;Â(XiwBed6>3mr)JyIPgt>4 ̉ѝcul6jnɷ>\e;*ߝSNpc#lPFˋn7z={ݛyְ̌ !Q$G7vjy|qe - VNx/wIipKB!Gi0J(^!Kdqq#X5gJ`7;\dy?e4*dM"4Q:! nBpBHnx`Kڜ91%C{N:F] +Hd8=!i`Lz#.HZzyANvy6Z#)&dIuSUfJ92=l\=|]C0݆øݴC~{rY<:uYeIz,.&B`$nm4]s kyWGs}vB D| CL(ԏ(N^f$`bF{qS#6\;LTB=bJ8{=7\76V¹k  j$Fw=&OkznF1ضhp53FiݹԲB=DuJ]_`JI1@]6dAe+]'!jrrd Y{ 1瑣Hht:.rZKK\%HOhD%ic)%.vTi)EP(2-N%9Dj`M֣m[Əm;hv"tPut2?чy39GFu6/زR>{#};ۇ%$1UCV. *+#a61cPжqD;ݾ:C , ;l&8x X{pN*{CS0&[zNS>AyK! hqtVo~r8!N="zJ("Ghxɱ)Uw:UPp˭ޙ\*:RޗMdzj6`:uQ%,ְ*x*Ƭz,YsHЩ|{Wݿ endstream endobj 616 0 obj 1564 endobj 617 0 obj [ 613 0 R 614 0 R ] endobj 618 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 617 0 R /Contents 615 0 R >> endobj 619 0 obj << /Type /Action /S /GoTo /D [620 0 R /XYZ 53.858 306.451 null] >> endobj 621 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.818 492.975 515.728 502.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 612 0 R /H /I >> endobj 622 0 obj << /Type /Action /S /GoTo /D [618 0 R /XYZ 87.874 123.91 null] >> endobj 623 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.918 466.975 455.668 476.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 622 0 R /H /I >> endobj 624 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 373.326 102.768 382.576 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 612 0 R /H /I >> endobj 625 0 obj << /Type /Action /S /GoTo /D [599 0 R /XYZ 87.874 179.7 null] >> endobj 626 0 obj << /Type /Annot /Subtype /Link /Rect [ 128.328 373.326 335.078 382.576 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 625 0 R /H /I >> endobj 627 0 obj << /Type /Annot /Subtype /Link /Rect [ 93.878 308.326 138.898 317.576 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 619 0 R /H /I >> endobj 628 0 obj << /Length 629 0 R /Filter /FlateDecode >> stream xYm6_&( %p롽^\86m [D)WNjC6@lQyf 9A]ُPQ1 "!NATe" c++lg]!%9rJJOڬ7cH li$PC= J| 6-T=*y끅l_on' 88"値"sgVG:ƀ JaPzD:=`b&`( "Qq,Upd`B|9?|K3 #,tu$%9H3&ϰ5iErudQAH4v8oaoC_QDqyF6էZ,0H8H"ͣgl(~ R|1gto#EVT֫#u9d3}TQX7'Jb =Eq|]hT52q$MR'ο"ߠ*n5Z=;bhD'H01kuWY=#3~Vyn˦FyM-ljjP-'4PV.gL˃ Ld:Nrc/ΎE(FeR:"7K%;-A:^ﻓp50Oۢ 5OSXAX./cB'-{Kp:tD+'/u+/Y9gБQB$Lk]a% O9<&qU'&+[I=nrd|͊&wn(.QVlT- m{{292*TXC"T5Jlt^VjIWe.f&ΔʮX VEva<ӞXѵ^L@#"Oꢲ,]: x4~tuZ3~b3!zb}c+[B&ii[]`u@3V6,瀀#vɑ),|Am^,4$H۞>&dϢ($1K&n&z^,RN”%MgQr"UFy&պEHjy 蚰\rB$c:G8#l76%hN!vwd s )(At͒ݾFp*)$v)L d&ځZ+;n=06oL׏av؛ڑ٭b{*U1d Gp6 OVۥ28Qز<6VVM'Vcg6X2HE1D>m@CSiݞJbcz2+;.%Wε9Rv/Xh9u:?ﶲKljM{袧b7EcIB矐rp #SpLᲽN{:^,A9^wvNh $~tE+ɡ_h%(?BS`6၀&rxay9K[Q=r`oT[/c)[ȽC/_Dd,omZ@r^BKc endstream endobj 629 0 obj 2255 endobj 630 0 obj [ 621 0 R 623 0 R 624 0 R 626 0 R 627 0 R ] endobj 620 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 630 0 R /Contents 628 0 R >> endobj 631 0 obj << /Type /Action /S /GoTo /D [632 0 R /XYZ 87.874 562.578 null] >> endobj 633 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 628.114 132.894 637.364 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 619 0 R /H /I >> endobj 634 0 obj << /Type /Annot /Subtype /Link /Rect [ 357.984 615.114 545.844 624.364 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 631 0 R /H /I >> endobj 635 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.574 551.453 210.594 560.703 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 619 0 R /H /I >> endobj 636 0 obj << /Type /Action /S /GoTo /D [620 0 R /XYZ 53.858 439.1 null] >> endobj 637 0 obj << /Type /Annot /Subtype /Link /Rect [ 112.874 198.324 383.514 207.574 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 636 0 R /H /I >> endobj 638 0 obj << /Type /Annot /Subtype /Link /Rect [ 440.104 185.324 554.044 194.574 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 625 0 R /H /I >> endobj 639 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.874 172.324 177.904 181.574 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 625 0 R /H /I >> endobj 640 0 obj << /Length 641 0 R /Filter /FlateDecode >> stream xYn7}WCmax1"EӤӠ`E]ew%(BY2zAI.p8E=sa(>}Z f8ĸĔ B83 i~A/6I.2jV50Kf}3W]@Dwj)גSKd0s .B,N9/旓9"$`r~_ϓ'% g8[ﴄ@56S pSMpQ`΋]&* s#mQuA#FP^RV]rArR6;^(iN6LGW:65G6]Xg.pkX):O;E 8ov 㝲{/văZp/ (pj?Z3XI q<\&PMk,GKˀM%^5cãTpVnڠ~xPwwB:y*G2[F`ӭgzQFN'15dF\D)[ 4:I{0oO5$ N =MNoI]RǤtߙeTH4é0aPIg@G= 57@ rO- \5 |s}W5޾ƃC)掩̃Sr]4ڃ(֎O 1>p0C8NFŦ*xMC8ǜhi(8 ǰ;4K*ru\nlT4-!'g|Ek72%̡>3t^ [ӇSyRFmj <8Ls}Δ{s7ѧu8]k#q3+mp|vA|R& d8ă s[e|Rg+Vgd|| ?(c Jggm"ͦ8.GP3$۝{]b3H%"DV=h ņ(Am:k"No6VEB͵1TMj ;HPplɢuZۼ@WIa&3QVP%=e T(oJm$.iSdzٔ TJw_YIu;YyIAWIGަ'>f$V K>%Dx i,9AU[v8 ˽prgxGqĥtg]wCœ^=:Uq0hM ajj_,;);.!*ᮥSPZ6] EGG4 M4U',XZ[g'E$DjgznZY=ߎYXEWh,]!LNSD3}0?8N4F֣uN݈8u'\EhR2~m<]TvO! :>EW>$N+z d;<kX8`şzG endstream endobj 641 0 obj 1948 endobj 642 0 obj [ 633 0 R 634 0 R 635 0 R 637 0 R 638 0 R 639 0 R ] endobj 632 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 642 0 R /Contents 640 0 R >> endobj 643 0 obj << /Type /Action /S /GoTo /D [644 0 R /XYZ 53.858 399.104 null] >> endobj 645 0 obj << /Type /Action /S /GoTo /D [632 0 R /XYZ 87.874 157.449 null] >> endobj 646 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 441.979 146.108 451.229 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 645 0 R /H /I >> endobj 647 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.658 428.979 494.578 438.229 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 643 0 R /H /I >> endobj 648 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 415.979 175.018 425.229 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 643 0 R /H /I >> endobj 649 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.558 387.979 176.578 397.229 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 619 0 R /H /I >> endobj 650 0 obj << /Length 651 0 R /Filter /FlateDecode >> stream xXm۸_1Mpno(J^k"%*K:I(P/DqE{pHCC`@Q!oc  d'..$a£T96%5#Z:c_ o5v n͇{-[-n)HCB8Q $j=S**C\eS_ϋWsXGE>/lz/YF O@A̴{qw;^.oOa\M| I޲y2$r{Lÿj"B~@lF\JQ? }L]Cua;)ve y9F{hw!kYaJ XAv^qB|@ZZjZX·c~ y7L6Eh0 x_jְM3 [FU5QyQm5Ŷy*MY!$MftMn NE"I'p^Cm7?ot(M ipq1:5޼a}):೮ȁN8 5:ͦᆯ ]Y\*op1ln2gU7mlA\us*b]אG$0Dc; PM|(#׍e& 3}=B66z=/0]e:nL IDXJ wM-)@r0{,:aǬz>*v<t2.#ȓO}@mڗ@>/:6 Z_8 s\zZtpp8V=[C7KFkft^3Hǻ>~D.9HExMb_<}ףK.,7mz{m1Ps•Ü6Of>R7m@!7|2<*J\ajaۍ^xՅ85i7xX7.pX4c5hR⾻:ޤ$-Vy?A7Q<57p;i/̾G> endobj 653 0 obj << /Type /Action /S /GoTo /D [654 0 R /XYZ 87.874 148.25 null] >> endobj 655 0 obj << /Type /Annot /Subtype /Link /Rect [ 107.884 150.125 156.244 159.375 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 653 0 R /H /I >> endobj 656 0 obj << /Length 657 0 R /Filter /FlateDecode >> stream xXmoF_1MQ]$O9pEE)RRvt7$-ɵ?"@,3۱IT,2ù!>z|IGfti՟/|y@2+΅qqtB2A"@q.ޣ~D.Xg.PJz%ɧKG|x, q2(\b)L)R+bVT5m}.P q7:Q Q7>h(PsIMo5+nwIcTp"-_EЛcNRvA$tO/AԳ+R!y[%`Ew1Baj&Ϳb*!e\ 6ч.,e) ]XbT}blx8?TXmPFt:ԪUބqmO%1?$#i:Wś'1|%:Kb>w&`Dc9bT8LZQ1eY Zo|**wu5h@C9DmÜ@.tzz Y-Y-4q< '> ),(%|7[ݬLq{u~b6.GS=XWnZ36mYe}NPU endstream endobj 657 0 obj 1923 endobj 658 0 obj [ 655 0 R ] endobj 654 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 658 0 R /Contents 656 0 R >> endobj 659 0 obj << /Type /Action /S /GoTo /D [660 0 R /XYZ 53.858 316.5 null] >> endobj 661 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 461.375 102.218 470.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 653 0 R /H /I >> endobj 662 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 346.375 245.058 355.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 659 0 R /H /I >> endobj 663 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.488 346.375 466.848 355.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 653 0 R /H /I >> endobj 664 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.558 305.375 179.918 314.625 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 653 0 R /H /I >> endobj 665 0 obj << /Length 666 0 R /Filter /FlateDecode >> stream xXmsF_ w̐@Sh)`JgLFeGS[8C޽etrp>CgwG 9O9C'c0ǥj%8>T혙:hkXmKKz^Npv\*-1{oqaa{RLLK%Gq7N_YPDJ)h>3x?,՘wf6][˸Ufh8 Њ~ntP4K-f*cZ9 IyR]S5Zbe6om׼4m_&Z9X`WY$ؠt_PsƐ;./3ڬ#QZˎy7`KNf#U$TȴW%`VyӔBg:;ט􆻘vnL)h ˺xϮP:f @J)x!NK 򢌖P;FlF47NԹ:> ^|qdɣz1N1xJCoN~?x}R ,NK'? kCo:w|zpű\5N*Y:: h ETp}m.g8 YxY,OGQQ'+?H3Ço 8S!C}ƶ$| X4*U@89_J()~jl[5]G6$"3xiV}='͈F>ۻc?I(]b } a˒e E{{L FiR"(t^WS@g{}Pe?**}x6JI9o:_gV<ٛgsp"3-5RzuI(ZȴQ&YLh\ U ֩4ˢȰXE˸C\VQ,K!k,&<,4e1f&QxNhmc]~U+DD\aL!\HA8XvA`JE8|q0lMZJ b5bM*%*s7>Ey^E+q#> endobj 668 0 obj << /Length 669 0 R /Filter /FlateDecode >> stream xY[ܶ~_kֈC6ΌBJ;^=$]gEMװWx.Z"0GM!͏?ct57?}> <>W9{Ea n/"~$&{ǷnAۻY~8DNR8N17;,f2؍͂@c82Y"חacޥYx)h`coFF .o8%Hxp yGRLS\^Svn[_{LӹhV,faL@l8 w<+G6e}|.T526Ek!TE%Ivw,v?չJFEe*SբB=!]ntckڑ+MRLIh*e*+c5Pem?oqP AEu+۶BC+TeJFحe%y2:86tmʶ*i\NZ)u޵C@uoPT[m7hoU6*KAPGg#<;ZWLrxd\RDRCļ˷(mw(hC4UAG Y.Y|*LYuZ7̈R@Jł-H?(9))2Ϣn|)t0(`*w!`>'<8|;݄Swghn2J'#An!{eџ^omJ9Q"Xwd$UW'ñ,pmN93ȡoBz@5Uu(k l6R$NyXX"%tT!.Q7,H.En3;QاSevTy[yVj84mcEc^R|P' qx9ȫԇ%]ytCB!uCik*=x ~Eߠ?~fŢ 8 YG׺=Dm[vKcN] BP.Y N;hd@0𹖉]$6Fl-닽 4 yٺ8{Wl tylOWu!SIfn$YDQkl-nF\N 1WB Ƕ JmGG9[m2OpE-+Ԩ/P8/bQ&ԭ+-FNڷvvf䏀[K03pI/+:2öʸ\y`ˇ@ޤsN ٬rP801D]g]gȧeR~nBz^pRg雗^\ɪ> Gar^pH52lEn:5@_Z~Z{<ܐ\g?_C@xwXOu.IvcL7O`|T,*$XM_R36`;@%jDgq-:<ď :lkwte`""UzIepI(6r;gJ1_ qnX`uFwΦl=E0alYNp`isf=Z k"$%bA #t=P<!qJ90`<}JM۠^S\4WS5M ^G\,Ƌa&.-(*%rxyh(\պI endstream endobj 669 0 obj 2292 endobj 670 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 668 0 R >> endobj 671 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 718.3 null] >> endobj 672 0 obj << /Type /Annot /Subtype /Link /Rect [ 286.928 217.069 484.778 226.319 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 671 0 R /H /I >> endobj 673 0 obj << /Type /Annot /Subtype /Link /Rect [ 187.678 67.069 284.378 76.319 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 119 0 R /H /I >> endobj 674 0 obj << /Length 675 0 R /Filter /FlateDecode >> stream xZYF~ׯh%60+oxf,808bK"CmUC$əY`mۀ%5Yu~UF(r65F\n@$w\Nq:LHJa.-חV - E/ 2\:{糘=UfحF`m~36pef2k0X+9V0¿hi(X`*WeE=IEeќ.IS)XRu(p3!_+CqUe$ )ɮȲ(I]ɯG]X0)L%,X&$jV|U$T^GuR$+&Uc2ҡO)|<~l /?^V}.X$\"= NI:)@;%oUګG8-(LM]h\PזC0*[ÕcZ*&29':ZGZin1IT*(wM| 20(+s[Kicu^4Zb&1nrP-ܐ FFiU߫])&n*mE%_X+3A쿀hyQNAr饓tQ 04SpɬtnuR XdR4  Л{HغteE*MLvz){x ȗxf]=:c>'Q'Hw] &=rK׺e }ocw;pFp>O6aXl䋹i(b#1 .ʋCU5Q݆d^!h ,x_o50|(:ONݺ;P.,u kB] tRE1B׼È~uyXOM % ʎJE$h½.:^\4팝-ӦDvɾ"< `r[ f2urQ:H5 `z:YwGzb;lS~ =ӝ#d?i亷N]BT*wg6<Ͽwqn\ϴEIڑD ܰ7`IBg H0Px 8Z>ɨ@L 3)09>`r,&-@o#%xXWtsWAŎb䱊PVHu_)<u|Y-;n% :/h|\(nZL2NP>Fnj a_z"z4G:v]P"a[Uhq 'eXY1to+w5sg(;!2Y[+u~+>\HYxO] G>꾨PiVFW>ga0+# 2 D#U[7?T22z2"xп\O_F+z~223!un3pw,W +5]=&W_r=e` !,%l$ثISɎ3ܷp^On2m%t\:lϖ.`רd ]!?w}N~Z:hN,B@1  n<'jwU%iշm"QvBA:ZHfpFT^bІ1&סM6$'1#.2c+)̂.YISw=hF]|>wTZO@d9c09 NQY'&MJnT+/@dB g)3x0Hn|zP{1w*"0$]5OD׳xY.Newa`8aB1͝vnnBY%YLm+JBz%&kC(:qnrJ$KOYd ̐ 8]hɝO`Ū!8g@CBJ2u/uw 52ojxs]h&pMbC<"iq(:ҫ5{uJUak0dDEYrf~Wӛj lU@`T(zJh"CgA.ЮV8R> endobj 678 0 obj << /Length 679 0 R /Filter /FlateDecode >> stream xX[~(.RI! !0L ߓ:&t#-Ow<o g+NSqdL||ƃow~BCMǃ`wG⪵5Wںi"ܴ͊xWS]us+innN1]P)/:~׷8FA)3~,}OH=}> ӡ2lfh/ c¥#>#L،ẈWv:PwVZ*Pf7v1uy ~Гpjv`<͜l?*38g Utf@Dgq& 0̈6Yq^\FGvry!L| R4^2M44[q,†E Y(4D%.7D=wΊvv7Kw7eeeݮe&E|UYJ_v32o+>[x5I݁U:f96eզ}eͲ>CwD?x'\̾,ϔ3T R){䉕JJQj{;Y|[X1nةݟZVN b mN:nR[Z ǬIr37ҙY$[sy",fgTx_g눙Bߚ"S ..SjK6tcLJ `ZIꬂuWX$nP4 %ݙ.Y?)BNAT٤y>ޗ99,VLrB6YY6Fz2BVZ;Q99(^AtwIBb@i=HX2Dތ8Ok C~NacPIZ)p]g+%|T%԰+ӟCI#<tD y3I9)gnrƗp ټ<Ʋ܃0k4\ iLŹhOP 2DR!"+lU}f-Ph3>7jiP5^ dSPozJ$+י K<>*x1}ne#KupFR] WĊ:xUqf('`Y\#rZ'ք9y՞i0,B (^{[-q,%q1w-s `p2X̕詊 0QE\/TEbk7ͩʺ)C^ }OD& &9"y%|$A>6CaCȦVLSCzһICk n#!dO )-_zKv@ȄQqUw%NK`&X")&D mўҘ|ecb_h%*RJ _E _"nGv,S1:~D8yȲ+H:`r_-~4m 4 3$[RᎶ BjsH ¡"_ k*;0\pU_Qm; )owAP>JfMM7<#% (~QT ^ дU$0|evJUbHzŰBd뛵d$=sAc9ka_{(/z9#EFЫV eѲP-Yty-`F 쫀H^j Pxx.@#R@SsBX?+<-)1X [\pU܈JKxI-Rme@zڸjl쾎k컫Ph "9 8K@.fYz$e~:4_-S՘O endstream endobj 679 0 obj 1961 endobj 680 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 678 0 R >> endobj 681 0 obj << /Length 682 0 R /Filter /FlateDecode >> stream xXn8+Z QIQϮ:EhitvA˴-Dz~I%N̢幯ssϵHg, 4"Q,?}8`<a}}:^4q. teMΚ%f~c0{ |=0ݦ@~z +AnCplNFV.R_[+/Xm-%q /:m? ̣$ȳ>O=Z12ZOԮR`,))'ՃkQit)U >wdi0T!IU6r$@K#P4o؉i:M]ӷV\m=o+g'5H߳$[sy%Rɦ@Ek81wƽPu6d#3b9jq=Vhirп_ݳLNO8Z( ygZlozUFhMiS?qcly+څ|FM!;13j*狇% UU#15i^OhtnT-'֢_yZ٫εVC磢R0v>#j5qq6Ʉ!߷{xX$I&쐍( Y-m n0/Qjk e,[^bX,el~1SiEvFjJ|-0=b[S)YE+ ˳4B46h@|䑾A):K'A4϶8w(F:y!JlYOSmώIsodg KИ6bY9CPmִ _j@E-yZ!ȶ}TWCyX2r#w?PxB <FngTwAeUR7o>!7NX~^PMޜm6rA<]]ڙؙ4̦y`innš:^[uçVz)?pp0_޵f}p1=o7G"b s_the?{Ƕ*Νnr\y8Xx:`gWͲ茋.췖 :B~wݧϮbi<ѫ3ǴZH܁g4Q2NC4(K7[BUh|eA/0R^x$xEbRr%l0uء'F߉smyMc0BZ2 Ң=:yAhdtDάΡ o+p~^{8pwhغ6Q%D+]$V^vWC[WB$ N/;Jh endstream endobj 682 0 obj 1761 endobj 683 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 681 0 R >> endobj 684 0 obj << /Length 685 0 R /Filter /FlateDecode >> stream xVMo8Wc{(Q6-fF.H-T\JJGIvdZ@[817|үſw26512ɲ).$a"T 8;Gzia?eE6)GK`nXGGdH!_͕fJIq5| ޼]g$ҸӶnmgsk*?wbP</e5?O<=jy/(c M!TPԋ91a< f%ؙ L&DIeji?_bBs^v^{O1s#lU &Wv1YDycq(r^Yj,4ƭabs_FՈqiA;P4ӕk^׽is-tM[mPVmW٢f;]tݦ5֐ƩEU*%J,FB\}uwaLi'41x#?Ьͽ[hVꑭ7u xkx0 qK@iVp3*hSB5 dJwChv#U$1 s͝ >j|VcA=X[|ᴱ] Ś"63+8=800 ,B-]~gM}ѷvΗhv{bJG싏qƩ"J,q{×'I[ʲgy?+laQN>-*A3m K3h=jY1IV!NӅ߾: i@%|U2+X7 oqc>h T\kz)lθo}nm:lyw9˳q!MK endstream endobj 685 0 obj 858 endobj 686 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 684 0 R >> endobj 687 0 obj << /URI (http://sourceware.org/systemtap/wiki/HomePage) /S /URI >> endobj 688 0 obj << /Type /Annot /Subtype /Link /Rect [ 310.424 611.975 524.944 621.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 687 0 R /H /I >> endobj 689 0 obj << /URI (http://sourceware.org/systemtap/tutorial/) /S /URI >> endobj 690 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.744 548.975 441.594 558.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 689 0 R /H /I >> endobj 691 0 obj << /URI (http://sourceware.org/systemtap/tapsets/) /S /URI >> endobj 692 0 obj << /Type /Annot /Subtype /Link /Rect [ 349.904 359.975 529.984 369.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 691 0 R /H /I >> endobj 693 0 obj << /URI (http://sourceware.org/systemtap/langref/) /S /URI >> endobj 694 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.574 296.975 548.284 306.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 693 0 R /H /I >> endobj 695 0 obj << /Type /Annot /Subtype /Link /Rect [ 105.874 283.975 187.574 293.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 693 0 R /H /I >> endobj 696 0 obj << /Type /Annot /Subtype /Link /Rect [ 377.674 170.975 542.174 180.225 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 697 0 obj << /Length 698 0 R /Filter /FlateDecode >> stream xYKW< {}?Rqgrl XC2n({v~_VaJsN~, YJ4"q~aL0b,$ADy _6?1QOyM`ÁjV|g-a<&1~ii2>Z6h#+#5xD4!9e1>ɏ|y'#[O&yM޺aAz01d:s93D|}f;gf"A4< a&`I -[4 Ƃ8o4I4$d4uCZQ)dV5 (Ǽ`gq:z=VzD98 hBڑL`9Fx@W?r'[R;020FERrs4)zMw0Re0ЎrNΪǣ0jتΐ6'J!(˵$ZuhČ8Q509=%9j f$F4.Ħ)"hzflp_yŒ2yJ*2<!i, QkYC$yq~TE Ahe Tq&=YOYWڊpt``QձE{D>ɢUq3lN'%0cChL#̅{]% $#,Df/h]xь$ǚw s JG#MGRghET=$wro5/9Գ g}R bRΗ},DYVꢭ ]_#~bGJ (um`8Th2U)}"daȼp=I.vWN:stkJUtXPӈx@Z.q~)v6;t%\`-r} d@-Vp|?xk߰glx)==-o)gK3q"NZ'f!O "֙Ni)8FWqz&upa䡒F+/J5D(v]Yan#bzӖN[Q|nu^aߊ'L5uoݛ!&@: <&!q+0Ga<)v'yaKGqI{({*Dkӫ1* ʣ3֝n"=U"7Cfhp #Q# endstream endobj 698 0 obj 2073 endobj 699 0 obj [ 688 0 R 690 0 R 692 0 R 694 0 R 695 0 R 696 0 R ] endobj 700 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 699 0 R /Contents 697 0 R >> endobj 701 0 obj << /Length 702 0 R /Filter /FlateDecode >> stream xT0 M"I!"1 &w$&~U=}u{Fko-:88H5퐲N !WƊ݃1b_~hb-@zFQfg7MLo(WzM=TkM6nr~L&:j!m+ö.b26ELSXjE֏ATliBQ&6>W0/iCog{ ߰ l=aZNvjG'4tk˫ endstream endobj 702 0 obj 261 endobj 703 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 701 0 R >> endobj 704 0 obj << /Type /Annot /Subtype /Link /Rect [ 395.338 673.625 509.338 681.305 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 12 0 R /H /I >> endobj 705 0 obj << /Type /Annot /Subtype /Link /Rect [ 395.338 618.625 509.338 626.305 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 12 0 R /H /I >> endobj 706 0 obj << /Length 707 0 R /Filter /FlateDecode >> stream xTn0 +6 (ɲZ[Qlz(z0"1خߏQ`H=#LbR %{lA$K*ͅKM^ t& >?pJޑՒ]9kv͵42_8f6zf^￴^FOPĉpkp ;nV:M.}?aZcd>"L_n)iQ|\k4K`;^i y=dxɣ~8A}V . ]twN ~E})DS)ccqRpIK[cWϢ-΋k/:-. KHqFȒDj8$ ]A$1݉/U_%8ղ(*8T;qզ9!Jp\gvu|V-w1MLwkd(g[đU judJ EGΚ6Uu9oh' _^orK'tzJ[/0ڿ'ba)zi%qY endstream endobj 707 0 obj 581 endobj 708 0 obj [ 704 0 R 705 0 R ] endobj 709 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 708 0 R /Contents 706 0 R >> endobj 710 0 obj << /Length 711 0 R /Filter /FlateDecode >> stream xTn0+nɊVj1Q3c2E/].9#L!t=QiEop79do(-(B/)e& 9nnaWKq gTe>as JUɣUk$hdfL[o65_ Y(kKcHׅ)3Mʤ&aa. w%!cqe^{.eֱ2!ι endstream endobj 711 0 obj 262 endobj 712 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 710 0 R >> endobj 713 0 obj << /Type /Action /S /GoTo /D [514 0 R /XYZ 87.874 208.435 null] >> endobj 714 0 obj << /Type /Annot /Subtype /Link /Rect [ 180.784 628.923 191.904 638.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 713 0 R /H /I >> endobj 715 0 obj << /Type /Action /S /GoTo /D [490 0 R /XYZ 87.874 217.27 null] >> endobj 716 0 obj << /Type /Annot /Subtype /Link /Rect [ 180.784 589.923 191.904 599.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 715 0 R /H /I >> endobj 717 0 obj << /Type /Action /S /GoTo /D [530 0 R /XYZ 87.874 371.123 null] >> endobj 718 0 obj << /Type /Annot /Subtype /Link /Rect [ 197.464 589.923 208.584 599.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 717 0 R /H /I >> endobj 719 0 obj << /Type /Action /S /GoTo /D [236 0 R /XYZ 71.858 707.425 null] >> endobj 720 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 550.923 200.804 560.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 719 0 R /H /I >> endobj 721 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 105.874 333.925 null] >> endobj 722 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 511.923 200.804 521.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 721 0 R /H /I >> endobj 723 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 105.874 128.925 null] >> endobj 724 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 472.923 200.804 482.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 723 0 R /H /I >> endobj 725 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 105.874 179.925 null] >> endobj 726 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 433.923 200.804 443.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 725 0 R /H /I >> endobj 727 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 105.874 256.925 null] >> endobj 728 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 394.923 200.804 404.173 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 727 0 R /H /I >> endobj 729 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 87.874 721.425 null] >> endobj 730 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 327.071 200.804 336.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 729 0 R /H /I >> endobj 731 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 53.858 683.425 null] >> endobj 732 0 obj << /Type /Annot /Subtype /Link /Rect [ 254.614 314.071 260.174 323.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 731 0 R /H /I >> endobj 733 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 108.318 null] >> endobj 734 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.264 275.071 276.384 284.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 733 0 R /H /I >> endobj 735 0 obj << /Type /Action /S /GoTo /D [225 0 R /XYZ 53.858 121.325 null] >> endobj 736 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.684 249.071 188.804 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 735 0 R /H /I >> endobj 737 0 obj << /Type /Action /S /GoTo /D [686 0 R /XYZ 53.858 702.225 null] >> endobj 738 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.264 210.071 276.384 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 737 0 R /H /I >> endobj 739 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 252.19 null] >> endobj 740 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 171.071 200.804 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 741 0 obj << /Type /Action /S /GoTo /D [60 0 R /XYZ 98.874 679.525 null] >> endobj 742 0 obj << /Type /Annot /Subtype /Link /Rect [ 241.834 158.071 247.394 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 741 0 R /H /I >> endobj 743 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 489.425 null] >> endobj 744 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.144 145.071 221.264 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 743 0 R /H /I >> endobj 745 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 310.55 null] >> endobj 746 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.044 106.071 274.164 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 745 0 R /H /I >> endobj 747 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 702.225 null] >> endobj 748 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.934 80.071 241.054 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 747 0 R /H /I >> endobj 749 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 566.992 null] >> endobj 750 0 obj << /Type /Annot /Subtype /Link /Rect [ 303.054 67.071 314.174 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 751 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 131.125 null] >> endobj 752 0 obj << /Type /Annot /Subtype /Link /Rect [ 426.588 707.175 437.708 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 751 0 R /H /I >> endobj 753 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 184.445 null] >> endobj 754 0 obj << /Type /Annot /Subtype /Link /Rect [ 481.048 694.175 492.168 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 753 0 R /H /I >> endobj 755 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 108.327 null] >> endobj 756 0 obj << /Type /Annot /Subtype /Link /Rect [ 425.828 681.175 436.948 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 755 0 R /H /I >> endobj 757 0 obj << /Type /Action /S /GoTo /D [219 0 R /XYZ 98.874 679.525 null] >> endobj 758 0 obj << /Type /Annot /Subtype /Link /Rect [ 384.138 655.175 395.258 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 757 0 R /H /I >> endobj 759 0 obj << /Type /Action /S /GoTo /D [207 0 R /XYZ 53.858 721.425 null] >> endobj 760 0 obj << /Type /Annot /Subtype /Link /Rect [ 389.688 629.175 400.808 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 759 0 R /H /I >> endobj 761 0 obj << /Type /Annot /Subtype /Link /Rect [ 503.858 616.175 514.978 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 735 0 R /H /I >> endobj 762 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.528 603.175 477.648 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 719 0 R /H /I >> endobj 763 0 obj << /Type /Annot /Subtype /Link /Rect [ 474.868 590.175 485.988 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 721 0 R /H /I >> endobj 764 0 obj << /Type /Annot /Subtype /Link /Rect [ 469.298 577.175 480.418 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 723 0 R /H /I >> endobj 765 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.518 564.175 477.638 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 725 0 R /H /I >> endobj 766 0 obj << /Type /Annot /Subtype /Link /Rect [ 469.298 551.175 480.418 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 727 0 R /H /I >> endobj 767 0 obj << /Type /Annot /Subtype /Link /Rect [ 528.098 538.175 539.218 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 729 0 R /H /I >> endobj 768 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 87.874 570.825 null] >> endobj 769 0 obj << /Type /Annot /Subtype /Link /Rect [ 429.708 525.175 440.828 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 768 0 R /H /I >> endobj 770 0 obj << /Type /Action /S /GoTo /D [227 0 R /XYZ 87.874 399.925 null] >> endobj 771 0 obj << /Type /Annot /Subtype /Link /Rect [ 408.598 499.175 419.718 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 770 0 R /H /I >> endobj 772 0 obj << /Type /Action /S /GoTo /D [219 0 R /XYZ 87.874 255.546 null] >> endobj 773 0 obj << /Type /Annot /Subtype /Link /Rect [ 516.638 486.175 527.758 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 772 0 R /H /I >> endobj 774 0 obj << /Type /Action /S /GoTo /D [225 0 R /XYZ 53.858 533.397 null] >> endobj 775 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.828 473.175 496.948 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 774 0 R /H /I >> endobj 776 0 obj << /Type /Annot /Subtype /Link /Rect [ 500.518 460.175 511.638 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 753 0 R /H /I >> endobj 777 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 553.271 null] >> endobj 778 0 obj << /Type /Annot /Subtype /Link /Rect [ 486.068 447.175 497.188 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 777 0 R /H /I >> endobj 779 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 438.995 null] >> endobj 780 0 obj << /Type /Annot /Subtype /Link /Rect [ 353.008 421.175 364.128 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 779 0 R /H /I >> endobj 781 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 212.846 null] >> endobj 782 0 obj << /Type /Annot /Subtype /Link /Rect [ 474.388 408.175 485.508 417.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 783 0 obj << /Type /Annot /Subtype /Link /Rect [ 525.518 395.175 536.638 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 784 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 721.425 null] >> endobj 785 0 obj << /Type /Annot /Subtype /Link /Rect [ 353.008 369.175 364.128 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 784 0 R /H /I >> endobj 786 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 138.319 null] >> endobj 787 0 obj << /Type /Annot /Subtype /Link /Rect [ 391.918 356.175 403.038 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 788 0 obj << /Type /Annot /Subtype /Link /Rect [ 353.008 330.175 364.128 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 789 0 obj << /Type /Action /S /GoTo /D [195 0 R /XYZ 87.874 436.094 null] >> endobj 790 0 obj << /Type /Annot /Subtype /Link /Rect [ 484.188 317.175 495.308 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 791 0 obj << /Type /Annot /Subtype /Link /Rect [ 489.758 304.175 500.878 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 792 0 obj << /Type /Action /S /GoTo /D [174 0 R /XYZ 87.874 316.559 null] >> endobj 793 0 obj << /Type /Annot /Subtype /Link /Rect [ 464.938 291.175 476.058 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 792 0 R /H /I >> endobj 794 0 obj << /Type /Annot /Subtype /Link /Rect [ 497.508 278.175 508.628 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 795 0 obj << /Type /Action /S /GoTo /D [187 0 R /XYZ 53.858 686.898 null] >> endobj 796 0 obj << /Type /Annot /Subtype /Link /Rect [ 441.938 265.175 453.058 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 795 0 R /H /I >> endobj 797 0 obj << /Type /Annot /Subtype /Link /Rect [ 517.508 252.175 528.628 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 798 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 699.625 null] >> endobj 799 0 obj << /Type /Annot /Subtype /Link /Rect [ 362.348 239.175 373.468 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 798 0 R /H /I >> endobj 800 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.818 200.175 429.938 209.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 747 0 R /H /I >> endobj 801 0 obj << /Type /Annot /Subtype /Link /Rect [ 544.188 187.175 555.308 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 802 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.818 161.175 441.938 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 803 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 634.625 null] >> endobj 804 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.348 122.175 397.468 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 805 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.818 83.175 441.938 92.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 806 0 obj << /Length 807 0 R /Filter /FlateDecode >> stream xZKFWa6`fH[z4DIj)Y*ْCW]ϞyRB¿#/!BnՙS+m\e3,D>AH9ebIL _n%ů?kxćլyں䱼oԪ̓Gޜd&9΅LYߣ ;y{zD3pyFr"I-N@bIίZ $[+f/Z)>U)e]捗Re9 ]+x~CA 0&@e^ *ȶp |Pe,:~U$L䜳Y\r3oƙ%WX?U릙xH"Dz6Qr 9yWe#ʡ.8YG̶@")CvCGMWvخ)ͱMfRECO+Yd.7uNQr)}3F{QwSAďPVS?{8i]v7F<rǩNN)7!n)#Cra(EH;I%URFPCj.`CjcmZ՚oJ9uw5T+ 7B%㮽* /8nJP/+cCf!&=?ө7JUл^'Oe&Jt?Vj&h]D5iص^قZڃ'Dlb$~5uP7ʡ3^V!V8q]]dQ9T/ S0<&Ў'eq' n40 |??08m>'q|APq$0a0MʺJr-ingpt<C %qSNS~ǿe3EJzL1Ւ8XO:H+F"5Ǚpj@23N-#HR{Ggq_;vSd+pNlaoBq9z~^<91 3| H& $z{ҳ^"hu&qTKkQT.j>*pFe(ש3i{PR*‡ :ݪ>%_f,*®qWKsFDUa;7-]Kn9e1"zv0_=`OJtj]߽v֧{p.o*+^f>EH$\wJc鐩#6 IWHӺ Su2A9#,=͙)B. YdMMQ;/>鰤Kي]!ynb$..r_G$򀨮܉yb"bYBT96$dc$pz9t]N!)`Fʱ.$?uƎT{ɲC[9aEkP|6F,Wbӭ9:Vaf&<}'hF)X jN%Qa<HrsNUwհO\!.G|w/^.xΩ U!jPƪ830Q;3r9_34pۯq`DZqAIJzSΊbA8`:' 1́ $[8ny9M0ܤVN~*IΖ~-1rz`5N?]VR:T2:}#Upv;=]WEW0 T%C-Jf3KW!ab@lNZ1@do^&nɳNw/P3.JO 'q~f=gn/N̛.);NL.=K''܍7nqdR~Y Ҕ%$W;> endobj 810 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 707.175 191.267 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 811 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.948 707.175 526.068 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 411 0 R /H /I >> endobj 812 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 647.1 null] >> endobj 813 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 694.175 135.207 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 812 0 R /H /I >> endobj 814 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.442 694.175 526.562 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 812 0 R /H /I >> endobj 815 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 579.606 null] >> endobj 816 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 681.175 207.301 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 815 0 R /H /I >> endobj 817 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.076 681.175 526.196 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 815 0 R /H /I >> endobj 818 0 obj << /Type /Action /S /GoTo /D [434 0 R /XYZ 87.874 534.5 null] >> endobj 819 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 668.175 353.853 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 818 0 R /H /I >> endobj 820 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.02 668.175 525.14 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 818 0 R /H /I >> endobj 821 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 53.858 621.1 null] >> endobj 822 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 655.175 303.588 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 821 0 R /H /I >> endobj 823 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.384 655.175 525.504 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 821 0 R /H /I >> endobj 824 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 53.858 117.391 null] >> endobj 825 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 642.175 240.223 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 824 0 R /H /I >> endobj 826 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.84 642.175 525.96 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 824 0 R /H /I >> endobj 827 0 obj << /Type /Action /S /GoTo /D [465 0 R /XYZ 53.858 596.9 null] >> endobj 828 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 629.175 329.412 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 827 0 R /H /I >> endobj 829 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.196 629.175 525.316 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 827 0 R /H /I >> endobj 830 0 obj << /Type /Action /S /GoTo /D [472 0 R /XYZ 87.874 128.3 null] >> endobj 831 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 616.175 118.035 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 830 0 R /H /I >> endobj 832 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.558 616.175 526.678 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 830 0 R /H /I >> endobj 833 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 603.175 296.431 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 507 0 R /H /I >> endobj 834 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.434 603.175 525.554 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 507 0 R /H /I >> endobj 835 0 obj << /Type /Action /S /GoTo /D [501 0 R /XYZ 53.858 628.1 null] >> endobj 836 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 590.175 340.825 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 835 0 R /H /I >> endobj 837 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.116 590.175 525.236 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 835 0 R /H /I >> endobj 838 0 obj << /Type /Action /S /GoTo /D [520 0 R /XYZ 53.858 413.866 null] >> endobj 839 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 577.175 223.721 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 838 0 R /H /I >> endobj 840 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.958 577.175 526.078 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 838 0 R /H /I >> endobj 841 0 obj << /Type /Action /S /GoTo /D [532 0 R /XYZ 53.858 700.9 null] >> endobj 842 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 564.175 250.433 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 841 0 R /H /I >> endobj 843 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.766 564.175 525.886 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 841 0 R /H /I >> endobj 844 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 551.175 301.814 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 845 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.396 551.175 525.516 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 846 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 718.3 null] >> endobj 847 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 538.175 297.725 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 846 0 R /H /I >> endobj 848 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.424 538.175 525.544 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 846 0 R /H /I >> endobj 849 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 221.26 null] >> endobj 850 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 525.175 276.408 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 849 0 R /H /I >> endobj 851 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.58 525.175 525.7 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 849 0 R /H /I >> endobj 852 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 718.3 null] >> endobj 853 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 512.175 134.659 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 852 0 R /H /I >> endobj 854 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.446 512.175 526.566 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 852 0 R /H /I >> endobj 855 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 683.5 null] >> endobj 856 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 499.175 266.887 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 855 0 R /H /I >> endobj 857 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.648 499.175 525.768 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 855 0 R /H /I >> endobj 858 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 565.7 null] >> endobj 859 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 486.175 216.578 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 858 0 R /H /I >> endobj 860 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.01 486.175 526.13 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 858 0 R /H /I >> endobj 861 0 obj << /Type /Action /S /GoTo /D [597 0 R /XYZ 53.858 415.332 null] >> endobj 862 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 473.175 358.14 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 861 0 R /H /I >> endobj 863 0 obj << /Type /Annot /Subtype /Link /Rect [ 513.99 473.175 525.11 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 861 0 R /H /I >> endobj 864 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 460.175 268.27 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 625 0 R /H /I >> endobj 865 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.638 460.175 525.758 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 625 0 R /H /I >> endobj 866 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 447.175 333.21 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 636 0 R /H /I >> endobj 867 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.168 447.175 525.288 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 636 0 R /H /I >> endobj 868 0 obj << /Type /Action /S /GoTo /D [632 0 R /XYZ 87.874 288.649 null] >> endobj 869 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.858 434.175 321.787 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 868 0 R /H /I >> endobj 870 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.252 434.175 525.372 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 868 0 R /H /I >> endobj 871 0 obj << /Type /Action /S /GoTo /D [654 0 R /XYZ 87.874 356.92 null] >> endobj 872 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 421.175 281.96 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 871 0 R /H /I >> endobj 873 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.448 421.175 525.568 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 871 0 R /H /I >> endobj 874 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 402.175 227.034 411.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 671 0 R /H /I >> endobj 875 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.72 402.175 525.84 411.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 671 0 R /H /I >> endobj 876 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 673.1 null] >> endobj 877 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 389.175 221.075 398.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 876 0 R /H /I >> endobj 878 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.862 389.175 525.982 398.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 876 0 R /H /I >> endobj 879 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 380.997 null] >> endobj 880 0 obj << /Type /Annot /Subtype /Link /Rect [ 77.858 376.175 232.579 385.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 879 0 R /H /I >> endobj 881 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.784 376.175 525.904 385.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 879 0 R /H /I >> endobj 882 0 obj << /Type /Action /S /GoTo /D [700 0 R /XYZ 87.874 718.3 null] >> endobj 883 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 357.175 120.089 366.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 882 0 R /H /I >> endobj 884 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.406 357.175 526.526 366.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 882 0 R /H /I >> endobj 885 0 obj << /Type /Action /S /GoTo /D [709 0 R /XYZ 87.874 718.3 null] >> endobj 886 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 338.175 147.773 347.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 885 0 R /H /I >> endobj 887 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.228 338.175 526.348 347.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 885 0 R /H /I >> endobj 888 0 obj << /Type /Action /S /GoTo /D [809 0 R /XYZ 87.874 718.3 null] >> endobj 889 0 obj << /Type /Annot /Subtype /Link /Rect [ 53.858 319.175 79.978 328.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 888 0 R /H /I >> endobj 890 0 obj << /Type /Annot /Subtype /Link /Rect [ 515.664 319.175 526.784 328.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 888 0 R /H /I >> endobj 891 0 obj << /Length 892 0 R /Filter /FlateDecode >> stream xMw$G} -ED{#]guѱHj3_?y3%WueUzS_zU~Ѯn޿sdWvV75]-EMo]IyD+%Ӄ6*goWzuxU~};=oWx|wͫ?Loկ޼ŗgX޼;JcWT׫7\axۏo?՛7| O.pr5^Ŗ?_j2O'?1Rlw;s{y$ 9:H\PZ dPֆ,s^_BNqu/b$Vw"؉`'"8 N: "D0`V`+@ *l [ր`kDPA!J*4"hDОG456:H NQQjA5td2eK)R B,<R*F,KiR KA,Y*TdiҐ!ˎ,;r ˁ,ґ#KG,YB,K-R J,KRF,!KA,Y TdR!KC6v:s{:TX}}{ecy{}nn߭d7DL;>yXlc}*APmvR{EY d2eiX+lX̥-R\ KA,Y*TdiҐ!KCYvdّ@Ydґ#KG,YU.R\u%Ejb\n2WH,Y dR"KE, YȲ#ˎ,r ˁ,Y:td2e\"5U.R\"5U.P7b\F,Y dR"KC,-/nxAE5Mq[\ӗ^j*4oonx|뻻'd|:9'EhD^ FOO#ذQe'q8\XI<@h.A!J*4"hDЈ`'v"؉ "DЉ A @ B B @0/1"(DPA%J1Ղt^{Ɗ>Jz21nNJW'|?0r+/d!_Xg5M߰Akk:H6T;sԊA\gY: d2jb9_^Wb9X׍XF,Y TdR"KC, YvdّeGYd9@,Y: d2jb9X&:u#:; KA,Y*TdҐ,Or*dOalLsBhy=֢5'[Ά?˃s|ucѼ8O4xaQvT;قPق6T;kEz<[2 KA,Y*TdiҐ4hkԽPՊAj/T#KG,YU R\u%Ajbn2W1H,Y dR"KE, YȲ#ˎ,r ˁ,Y:td2e\ 5U R\ 5U P7bF,Y dR"KC,ydٍE\&e}֪UeCizW=NOx^8>'n5n[_JcWG.i>l=ƮVTRGA:@-PM,KR*F,KiRd)R"KE, Y4diȲ#ˎ,;r ˁ,Y:td2e ZbXj%ZVbXj#ڈ6d)R KE,Y*4d{+z~uM{-nLw1Jaǟ{~Zn-Zk8;*ZQ=H*ZPQSAmF Zf-VY+֊HkC!Ԛ'-DL#K~Zk_v_?C˓oۧ7l,o#6>qy2XnԿ>n= ϧX(||>r:3UgTS *JAR*JER4* JcT SLU2UcTvڙjg:`T:S L5j U-HU RՂT"UHU+RՆT!UmHUS*LU2UeTSͿLyG3}oh5{lyS_?yїɛnNœ5Wqnyn!G7d۹[S@7QY,$qQTD\#<H5O%yCy".ʙ0UaT*SUL՘1Ucvڙjg:3UgTS H5PTsʑj.ʙ0UaT*SUjL՘1Ucvڙ`Lՙ3UgTRͥ##\:"yEtrKG$oH5PT SLU2UeTفh[+/yn-rh&T6V ѲqB-~<>ۛ_~Z;lȶ7)]4)PY(Q>_- re@0UaT*SUL՘1Ucvڙjg:3UgTS HuZHuZ"ja#ja#ja3UaT*SUL՘1UcT;SL3TSLՙ3UgTS \- r\-|y^r0ȑryC gT SULU2Uc9;QJuNmʘX~f~bE {i~\x|x}x{|0}Ƨ<|5A$W؍N]7ۚ||"@

    Pn,w;SuL5j0`Tsr35W35#՜L LU0UaT*S5jL՘1T;SLu0TSuLՙ3`TL H5gj$H5gj(G9S#yC9SC9S*LU2UeTSJ9|IlLZD-oׇX>\fbkyϿ|zzӜm5iIw쪰\XY(In,we$W3UgT:S L5jnry"H57&yC7ʙ0UaT*SUL՘1Ucvڙ`:3UgTS |N(G7ʑjMTso3UaT SULU1՜tK'8̭R֜|3BW3< zp{Ǔg˃_/W/6NCiȳ\ޞw]Z} cW4mѶ@4ZY,((Zu\{cQ>*˕^X.,gTS Sa#՜ "՜ T TLU0UaT*SUjL՘1T;SLu0TSLՙ3UgTRͩ0ʑjNQTs*rSa7Sa3UaT SULU1Uc̹Dԭ3˜:V֤|Mørܲỳcal}~NRjlw}A(TwTki,7;ke9&(o6d7(D9S*LU2UeTS5jL3T;SLu0T:SuL5j0@ ,PT[E"V4AyC!֘0UaT*SUL՘1Ucvڙ`:3UgTS ƃ(G ʑjnoUnJo>(WO\XTT[A VjH5&yC!ռLU0UaT*S5jLRE{{cQ>*˕^X.,gTS ׃$H5E9RAIސj^r*LU0UeT*S5jL՘jgv:`Lՙ3`T(Gy=(ʑj^r׃!ռLU0UaT*SUjL5wIEμMRe85^Z.ƧOI'GG|/JZaw|[{9?%[-ts=5|Im I.,,wQ#H+˙2UeTS5jL3T;SLu0TSuLՙj0`T$ɑ<$9RG$G #H3UaT SULU1ռb æ|uNwo @r*rݍ羾_~pw{s'(Bmj˻w||WMh=6[tRY,(;Ʌ?˙1UcT;SL3TSLu0UgTS L5jnOr"ܞH5'D9R QT SLU2UcTSL3TSLu0UgT:S L5jnOr"ܞH5'$yC=!ʙ0UaT*SUL՘|:7N&9#"|lίcc,|I}|jI^ nL'ڍ#tc<*˕y ʅTA#ռhH5/$0UaT*SUL՘1Ucvڙjg:3UgTS H5/D9R͋I^j^4r E(gT SULU1UcXv<Pa\XY(ݰIn,wϻaλa"y7l#y7l7:Mr*LU0UeT*S5jL՘jgv:`Lՙ3`Tλaλaλaλa!y7l3UaT SULU1՜Y4C(MP{Y6r>yx>XN Oz?<ݾyj1o'zx./,O?8>7߯&'iE6>ޚe%38n5͛k|͏w+6c㨭;F+s@yEbr+6(GbCraT SULU1UcULjŏ wGcQrL5j0@br+6$H5WlPTsH5WlPT SLU2UcTSL3TSLu0UgT:S L5jؠ +R#\!yCbr*LU0UeT*S5+6K/_O^]/TwTPjE uЌrY y֊@kE"jmLUR]/ʅrm,7;ʭ\Y>Pޙjgv:`:SuL5j0`T[A VjHuޯH5Rm T SLU2UcTSL3TSLu0UgT:S L5j{H5NT(Gyu7^G9S*LU2UeTS5jL3T;SLu0TSuLՙj0`T U-HU RՂT"UHU+RՆT!UmL-)[[RlmIڒ%ekK֖-{x/_}fu?5RG=rO_.?L?px{8yn~<_]T+Dx'7mL)ǝ/2W+nk$wnk$7j ΛZQ=H݁ZPQλP,;Ȳ#ˁ,r KG,Y d2Ϙ'5IM,lyRQskyx!Z旫>:jȿLe#[wXȗA4>|x0QJzIQW@@mvRVTRyFyVm $FbqK{y$ Bb!1 "X !BW. c1_$5Pժ\KcQr+,w3T;SLu0TSuLՙ3`To(G+RPTs77ۿ S*LU2UeTS5ڙjg:`:SuL5j0@ʑjnrۿo$oH5C9S*LU0UeTS5jL3T;SLu0TSuLՙj0`TjAZjEZ6 jC֖-)[[RlmIڒ%ekK֖Ū=̯>PX"b-o޼y endstream endobj 892 0 obj 9205 endobj 893 0 obj [ 810 0 R 811 0 R 813 0 R 814 0 R 816 0 R 817 0 R 819 0 R 820 0 R 822 0 R 823 0 R 825 0 R 826 0 R 828 0 R 829 0 R 831 0 R 832 0 R 833 0 R 834 0 R 836 0 R 837 0 R 839 0 R 840 0 R 842 0 R 843 0 R 844 0 R 845 0 R 847 0 R 848 0 R 850 0 R 851 0 R 853 0 R 854 0 R 856 0 R 857 0 R 859 0 R 860 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 869 0 R 870 0 R 872 0 R 873 0 R 874 0 R 875 0 R 877 0 R 878 0 R 880 0 R 881 0 R 883 0 R 884 0 R 886 0 R 887 0 R 889 0 R 890 0 R ] endobj 894 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 893 0 R /Contents 891 0 R >> endobj 895 0 obj << /Type /Annot /Subtype /Link /Rect [ 123.108 707.175 134.228 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 798 0 R /H /I >> endobj 896 0 obj << /Type /Annot /Subtype /Link /Rect [ 162.898 694.175 174.018 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 897 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 449.025 null] >> endobj 898 0 obj << /Type /Annot /Subtype /Link /Rect [ 121.208 681.175 132.328 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 897 0 R /H /I >> endobj 899 0 obj << /Type /Annot /Subtype /Link /Rect [ 158.448 668.175 169.568 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 900 0 obj << /Type /Annot /Subtype /Link /Rect [ 123.428 655.175 134.548 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 901 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 53.858 569.625 null] >> endobj 902 0 obj << /Type /Annot /Subtype /Link /Rect [ 112.318 642.175 123.438 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 901 0 R /H /I >> endobj 903 0 obj << /Type /Annot /Subtype /Link /Rect [ 136.778 629.175 147.898 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 904 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 53.858 168.359 null] >> endobj 905 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.988 603.175 113.108 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 904 0 R /H /I >> endobj 906 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 71.858 81.323 null] >> endobj 907 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.988 549.623 113.108 558.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 906 0 R /H /I >> endobj 908 0 obj << /Type /Action /S /GoTo /D [79 0 R /XYZ 87.874 210.699 null] >> endobj 909 0 obj << /Type /Annot /Subtype /Link /Rect [ 88.308 523.623 93.868 532.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 910 0 obj << /Type /Annot /Subtype /Link /Rect [ 272.258 510.623 277.818 519.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 911 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 529.625 null] >> endobj 912 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 457.071 221.468 466.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 913 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 326.193 null] >> endobj 914 0 obj << /Type /Annot /Subtype /Link /Rect [ 123.668 431.071 129.228 440.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 913 0 R /H /I >> endobj 915 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 702.225 null] >> endobj 916 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 405.071 221.468 414.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 917 0 obj << /Type /Annot /Subtype /Link /Rect [ 143.668 379.071 154.788 388.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 753 0 R /H /I >> endobj 918 0 obj << /Type /Annot /Subtype /Link /Rect [ 150.678 366.071 161.798 375.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 755 0 R /H /I >> endobj 919 0 obj << /Type /Annot /Subtype /Link /Rect [ 108.988 340.071 120.108 349.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 757 0 R /H /I >> endobj 920 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.538 314.071 125.658 323.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 759 0 R /H /I >> endobj 921 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 87.874 286.723 null] >> endobj 922 0 obj << /Type /Annot /Subtype /Link /Rect [ 121.768 275.071 132.888 284.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 921 0 R /H /I >> endobj 923 0 obj << /Type /Annot /Subtype /Link /Rect [ 141.658 249.071 147.218 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 924 0 obj << /Type /Action /S /GoTo /D [85 0 R /XYZ 53.858 721.425 null] >> endobj 925 0 obj << /Type /Annot /Subtype /Link /Rect [ 135.108 210.071 146.228 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 926 0 obj << /Type /Annot /Subtype /Link /Rect [ 143.668 184.071 154.788 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 735 0 R /H /I >> endobj 927 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.378 171.071 202.498 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 719 0 R /H /I >> endobj 928 0 obj << /Type /Annot /Subtype /Link /Rect [ 199.718 158.071 210.838 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 721 0 R /H /I >> endobj 929 0 obj << /Type /Annot /Subtype /Link /Rect [ 194.148 145.071 205.268 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 723 0 R /H /I >> endobj 930 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.368 132.071 202.488 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 725 0 R /H /I >> endobj 931 0 obj << /Type /Annot /Subtype /Link /Rect [ 194.148 119.071 205.268 128.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 727 0 R /H /I >> endobj 932 0 obj << /Type /Annot /Subtype /Link /Rect [ 252.948 106.071 264.068 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 729 0 R /H /I >> endobj 933 0 obj << /Type /Annot /Subtype /Link /Rect [ 154.558 93.071 165.678 102.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 768 0 R /H /I >> endobj 934 0 obj << /Type /Annot /Subtype /Link /Rect [ 133.448 67.071 144.568 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 770 0 R /H /I >> endobj 935 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.802 681.175 407.922 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 936 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 87.874 463.483 null] >> endobj 937 0 obj << /Type /Annot /Subtype /Link /Rect [ 362.902 642.175 374.022 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 936 0 R /H /I >> endobj 938 0 obj << /Type /Annot /Subtype /Link /Rect [ 384.802 616.175 395.922 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 772 0 R /H /I >> endobj 939 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.812 603.175 462.932 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 774 0 R /H /I >> endobj 940 0 obj << /Type /Action /S /GoTo /D [141 0 R /XYZ 53.858 495.579 null] >> endobj 941 0 obj << /Type /Annot /Subtype /Link /Rect [ 424.472 590.175 435.592 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 940 0 R /H /I >> endobj 942 0 obj << /Type /Action /S /GoTo /D [654 0 R /XYZ 87.874 317.955 null] >> endobj 943 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 551.175 462.602 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 944 0 obj << /Type /Action /S /GoTo /D [686 0 R /XYZ 53.858 477.625 null] >> endobj 945 0 obj << /Type /Annot /Subtype /Link /Rect [ 472.382 512.175 483.502 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 944 0 R /H /I >> endobj 946 0 obj << /Type /Annot /Subtype /Link /Rect [ 394.012 473.175 405.132 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 768 0 R /H /I >> endobj 947 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 648.652 null] >> endobj 948 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 447.175 462.602 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 947 0 R /H /I >> endobj 949 0 obj << /Type /Action /S /GoTo /D [599 0 R /XYZ 87.874 556.825 null] >> endobj 950 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 421.175 462.602 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 949 0 R /H /I >> endobj 951 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 285.323 null] >> endobj 952 0 obj << /Type /Annot /Subtype /Link /Rect [ 352.572 395.175 363.692 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 951 0 R /H /I >> endobj 953 0 obj << /Type /Annot /Subtype /Link /Rect [ 370.002 382.175 375.562 391.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 954 0 obj << /Type /Annot /Subtype /Link /Rect [ 375.372 356.175 380.932 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 731 0 R /H /I >> endobj 955 0 obj << /Type /Annot /Subtype /Link /Rect [ 306.992 330.175 312.552 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 956 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 53.858 416.425 null] >> endobj 957 0 obj << /Type /Annot /Subtype /Link /Rect [ 460.162 304.175 465.722 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 956 0 R /H /I >> endobj 958 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.442 278.175 347.002 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 959 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 63.858 549.425 null] >> endobj 960 0 obj << /Type /Annot /Subtype /Link /Rect [ 365.902 265.175 371.462 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 959 0 R /H /I >> endobj 961 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 63.858 585.425 null] >> endobj 962 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.482 252.175 422.042 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 961 0 R /H /I >> endobj 963 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 63.858 477.425 null] >> endobj 964 0 obj << /Type /Annot /Subtype /Link /Rect [ 368.132 239.175 373.692 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 963 0 R /H /I >> endobj 965 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 63.858 513.425 null] >> endobj 966 0 obj << /Type /Annot /Subtype /Link /Rect [ 372.572 226.175 378.132 235.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 965 0 R /H /I >> endobj 967 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 183.323 null] >> endobj 968 0 obj << /Type /Annot /Subtype /Link /Rect [ 352.572 200.175 363.692 209.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 967 0 R /H /I >> endobj 969 0 obj << /Type /Action /S /GoTo /D [490 0 R /XYZ 87.874 294.455 null] >> endobj 970 0 obj << /Type /Annot /Subtype /Link /Rect [ 382.012 174.175 393.132 183.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 969 0 R /H /I >> endobj 971 0 obj << /Type /Action /S /GoTo /D [520 0 R /XYZ 53.858 376.974 null] >> endobj 972 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 148.175 462.602 157.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 973 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.802 109.175 407.922 118.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 784 0 R /H /I >> endobj 974 0 obj << /Length 975 0 R /Filter /FlateDecode >> stream xY[oX~8-(.魘lag;,K,&4C NdǛ>s?\u3I2auT~6.QJiv,D. ~ߗ2RTL# ǝϪYI?;e5خ~^]Jq}{liH$P+q]|h65G+l>K2_):Q}@hd9ZDiGyƠg $u.SD HId* xOB3<}c+5@ ߵld%iM8еq=ms!;G+ʎ|甍ZD?6C@,. Dx8YƦ<S3*]HCylw]۴c/}h] }" 3G ݄O&9+Qm@!Oi;rFLkfQc5x"F wAEa)ծkohiw)/R-J0\nj~ хbӋo\`(~>`5@ xȐ\t($ jh6UDn3ae5S6Uĺ*G,=ӞPQ3l{hz+PycPd ~F c 6gc,˝l7؍S&NᘏʏCtmۉ>:J]nN1U`],w[ +$-#{:e$y#ݺ'!#]]<<atHb0Ր}_x)F{^>";+b3u>9 GŲk %z ~sb4tS  8b<Ȳ8<$-e\T=<*l-4% ez'S &AG> sW"[r-MC .E&cxl'M/tŏLJb:_tM\G{Cd֡ܕ;v b I ] 5 "^{D$a:Ol 0r4 ȱy!@^m6e+ATS`oalz3`ƅF2M$}d,"9 4Uwⶀ/W E]}),c@E#x /)> endobj 978 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 694.175 200.804 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 755 0 R /H /I >> endobj 979 0 obj << /Type /Annot /Subtype /Link /Rect [ 239.054 681.175 244.614 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 741 0 R /H /I >> endobj 980 0 obj << /Type /Action /S /GoTo /D [47 0 R /XYZ 53.858 568.549 null] >> endobj 981 0 obj << /Type /Annot /Subtype /Link /Rect [ 227.374 668.175 232.934 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 980 0 R /H /I >> endobj 982 0 obj << /Type /Action /S /GoTo /D [597 0 R /XYZ 53.858 379.257 null] >> endobj 983 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 642.175 255.484 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 984 0 obj << /Type /Action /S /GoTo /D [532 0 R /XYZ 53.858 664.825 null] >> endobj 985 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 616.175 255.484 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 984 0 R /H /I >> endobj 986 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 448.485 null] >> endobj 987 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 590.175 255.484 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 986 0 R /H /I >> endobj 988 0 obj << /Type /Action /S /GoTo /D [482 0 R /XYZ 53.858 702.225 null] >> endobj 989 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.894 564.175 186.014 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 990 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 173.619 null] >> endobj 991 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.264 525.175 276.384 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 990 0 R /H /I >> endobj 992 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 596.353 null] >> endobj 993 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.684 499.175 163.244 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 992 0 R /H /I >> endobj 994 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 317.577 null] >> endobj 995 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.044 431.071 274.164 440.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 996 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 392.071 200.804 401.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 795 0 R /H /I >> endobj 997 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 105.874 684.425 null] >> endobj 998 0 obj << /Type /Annot /Subtype /Link /Rect [ 136.004 366.071 147.124 375.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 997 0 R /H /I >> endobj 999 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 636.361 null] >> endobj 1000 0 obj << /Type /Annot /Subtype /Link /Rect [ 202.124 340.071 213.244 349.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 999 0 R /H /I >> endobj 1001 0 obj << /Type /Annot /Subtype /Link /Rect [ 283.064 327.071 294.184 336.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 1002 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 552.195 null] >> endobj 1003 0 obj << /Type /Annot /Subtype /Link /Rect [ 295.834 314.071 306.954 323.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1002 0 R /H /I >> endobj 1004 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 546.097 null] >> endobj 1005 0 obj << /Type /Annot /Subtype /Link /Rect [ 284.694 301.071 295.814 310.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1006 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 243.513 null] >> endobj 1007 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.234 288.071 176.354 297.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1006 0 R /H /I >> endobj 1008 0 obj << /Type /Annot /Subtype /Link /Rect [ 261.924 275.071 273.044 284.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1009 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 488.423 null] >> endobj 1010 0 obj << /Type /Annot /Subtype /Link /Rect [ 175.224 262.071 186.344 271.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1009 0 R /H /I >> endobj 1011 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 684.025 null] >> endobj 1012 0 obj << /Type /Annot /Subtype /Link /Rect [ 225.824 249.071 236.944 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1011 0 R /H /I >> endobj 1013 0 obj << /Type /Annot /Subtype /Link /Rect [ 194.684 236.071 205.804 245.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 745 0 R /H /I >> endobj 1014 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 121.32 null] >> endobj 1015 0 obj << /Type /Annot /Subtype /Link /Rect [ 188.564 223.071 199.684 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1014 0 R /H /I >> endobj 1016 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 87.874 133.785 null] >> endobj 1017 0 obj << /Type /Annot /Subtype /Link /Rect [ 236.914 210.071 248.034 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1016 0 R /H /I >> endobj 1018 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 420.765 null] >> endobj 1019 0 obj << /Type /Annot /Subtype /Link /Rect [ 221.924 197.071 233.044 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1018 0 R /H /I >> endobj 1020 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 579.724 null] >> endobj 1021 0 obj << /Type /Annot /Subtype /Link /Rect [ 280.824 184.071 291.944 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1020 0 R /H /I >> endobj 1022 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 644.21 null] >> endobj 1023 0 obj << /Type /Annot /Subtype /Link /Rect [ 243.044 171.071 254.164 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1022 0 R /H /I >> endobj 1024 0 obj << /Type /Action /S /GoTo /D [680 0 R /XYZ 53.858 218.535 null] >> endobj 1025 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.534 158.071 274.654 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1024 0 R /H /I >> endobj 1026 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 343.221 null] >> endobj 1027 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.454 145.071 221.574 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1026 0 R /H /I >> endobj 1028 0 obj << /Type /Annot /Subtype /Link /Rect [ 245.294 132.071 256.414 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 733 0 R /H /I >> endobj 1029 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.254 119.071 221.374 128.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 737 0 R /H /I >> endobj 1030 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.234 106.071 171.354 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 944 0 R /H /I >> endobj 1031 0 obj << /Type /Annot /Subtype /Link /Rect [ 172.454 93.071 183.574 102.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 990 0 R /H /I >> endobj 1032 0 obj << /Type /Action /S /GoTo /D [686 0 R /XYZ 53.858 556.825 null] >> endobj 1033 0 obj << /Type /Annot /Subtype /Link /Rect [ 223.024 80.071 234.144 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1032 0 R /H /I >> endobj 1034 0 obj << /Type /Action /S /GoTo /D [686 0 R /XYZ 53.858 636.025 null] >> endobj 1035 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.694 67.071 240.814 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1034 0 R /H /I >> endobj 1036 0 obj << /Type /Action /S /GoTo /D [683 0 R /XYZ 87.874 264.92 null] >> endobj 1037 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.518 707.175 543.638 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1036 0 R /H /I >> endobj 1038 0 obj << /Type /Action /S /GoTo /D [686 0 R /XYZ 53.858 411.425 null] >> endobj 1039 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.958 694.175 478.078 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1038 0 R /H /I >> endobj 1040 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 583.1 null] >> endobj 1041 0 obj << /Type /Annot /Subtype /Link /Rect [ 518.838 668.175 529.958 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1040 0 R /H /I >> endobj 1042 0 obj << /Type /Annot /Subtype /Link /Rect [ 441.058 642.175 452.178 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 904 0 R /H /I >> endobj 1043 0 obj << /Type /Annot /Subtype /Link /Rect [ 371.028 629.175 382.148 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 906 0 R /H /I >> endobj 1044 0 obj << /Type /Annot /Subtype /Link /Rect [ 363.248 616.175 374.368 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 997 0 R /H /I >> endobj 1045 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 87.874 355.947 null] >> endobj 1046 0 obj << /Type /Annot /Subtype /Link /Rect [ 376.028 590.175 387.148 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1045 0 R /H /I >> endobj 1047 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 87.874 469.566 null] >> endobj 1048 0 obj << /Type /Annot /Subtype /Link /Rect [ 398.258 577.175 409.378 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1047 0 R /H /I >> endobj 1049 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 105.874 164.319 null] >> endobj 1050 0 obj << /Type /Annot /Subtype /Link /Rect [ 460.378 564.175 471.498 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1049 0 R /H /I >> endobj 1051 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 71.858 514.611 null] >> endobj 1052 0 obj << /Type /Annot /Subtype /Link /Rect [ 456.478 551.175 467.598 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1051 0 R /H /I >> endobj 1053 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 71.858 424.611 null] >> endobj 1054 0 obj << /Type /Annot /Subtype /Link /Rect [ 425.908 538.175 437.028 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1053 0 R /H /I >> endobj 1055 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 87.874 405.575 null] >> endobj 1056 0 obj << /Type /Annot /Subtype /Link /Rect [ 435.498 525.175 446.618 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1055 0 R /H /I >> endobj 1057 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 105.874 305.319 null] >> endobj 1058 0 obj << /Type /Annot /Subtype /Link /Rect [ 431.578 512.175 442.698 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1057 0 R /H /I >> endobj 1059 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 105.874 633.425 null] >> endobj 1060 0 obj << /Type /Annot /Subtype /Link /Rect [ 401.028 499.175 412.148 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1059 0 R /H /I >> endobj 1061 0 obj << /Type /Action /S /GoTo /D [252 0 R /XYZ 87.874 286.961 null] >> endobj 1062 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.028 486.175 407.148 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1061 0 R /H /I >> endobj 1063 0 obj << /Type /Action /S /GoTo /D [416 0 R /XYZ 105.874 228.319 null] >> endobj 1064 0 obj << /Type /Annot /Subtype /Link /Rect [ 422.158 473.175 433.278 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1063 0 R /H /I >> endobj 1065 0 obj << /Type /Action /S /GoTo /D [87 0 R /XYZ 71.858 721.425 null] >> endobj 1066 0 obj << /Type /Annot /Subtype /Link /Rect [ 388.238 460.175 399.358 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1065 0 R /H /I >> endobj 1067 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 635.1 null] >> endobj 1068 0 obj << /Type /Annot /Subtype /Link /Rect [ 424.618 447.175 435.738 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1067 0 R /H /I >> endobj 1069 0 obj << /Type /Annot /Subtype /Link /Rect [ 408.478 434.175 419.598 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1065 0 R /H /I >> endobj 1070 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.348 395.175 397.468 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 897 0 R /H /I >> endobj 1071 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 189.629 null] >> endobj 1072 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 369.175 496.618 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1071 0 R /H /I >> endobj 1073 0 obj << /Type /Annot /Subtype /Link /Rect [ 377.138 330.175 388.258 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1045 0 R /H /I >> endobj 1074 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 687.1 null] >> endobj 1075 0 obj << /Type /Annot /Subtype /Link /Rect [ 473.498 317.175 484.618 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1074 0 R /H /I >> endobj 1076 0 obj << /Type /Annot /Subtype /Link /Rect [ 422.708 304.175 433.828 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1077 0 obj << /Type /Annot /Subtype /Link /Rect [ 390.458 291.175 401.578 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 949 0 R /H /I >> endobj 1078 0 obj << /Type /Annot /Subtype /Link /Rect [ 461.608 278.175 472.728 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 969 0 R /H /I >> endobj 1079 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.008 252.175 352.128 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 1080 0 obj << /Type /Annot /Subtype /Link /Rect [ 498.838 239.175 509.958 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 986 0 R /H /I >> endobj 1081 0 obj << /Type /Action /S /GoTo /D [654 0 R /XYZ 87.874 254.665 null] >> endobj 1082 0 obj << /Type /Annot /Subtype /Link /Rect [ 449.388 226.175 460.508 235.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1081 0 R /H /I >> endobj 1083 0 obj << /Type /Action /S /GoTo /D [654 0 R /XYZ 87.874 178.375 null] >> endobj 1084 0 obj << /Type /Annot /Subtype /Link /Rect [ 420.478 213.175 431.598 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1083 0 R /H /I >> endobj 1085 0 obj << /Type /Annot /Subtype /Link /Rect [ 401.038 187.175 412.158 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 1086 0 obj << /Type /Action /S /GoTo /D [424 0 R /XYZ 53.858 591.508 null] >> endobj 1087 0 obj << /Type /Annot /Subtype /Link /Rect [ 511.638 174.175 522.758 183.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1086 0 R /H /I >> endobj 1088 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 264.364 null] >> endobj 1089 0 obj << /Type /Annot /Subtype /Link /Rect [ 407.708 161.175 418.828 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1088 0 R /H /I >> endobj 1090 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.418 148.175 515.538 157.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 1091 0 obj << /Type /Annot /Subtype /Link /Rect [ 441.048 135.175 452.168 144.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 984 0 R /H /I >> endobj 1092 0 obj << /Type /Action /S /GoTo /D [549 0 R /XYZ 53.858 185.185 null] >> endobj 1093 0 obj << /Type /Annot /Subtype /Link /Rect [ 457.158 122.175 468.278 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1092 0 R /H /I >> endobj 1094 0 obj << /Type /Action /S /GoTo /D [501 0 R /XYZ 53.858 592.025 null] >> endobj 1095 0 obj << /Type /Annot /Subtype /Link /Rect [ 431.038 109.175 442.158 118.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1094 0 R /H /I >> endobj 1096 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 53.858 585.234 null] >> endobj 1097 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.958 96.175 526.078 105.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1096 0 R /H /I >> endobj 1098 0 obj << /Type /Action /S /GoTo /D [599 0 R /XYZ 87.874 143.625 null] >> endobj 1099 0 obj << /Type /Annot /Subtype /Link /Rect [ 480.508 83.175 491.628 92.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1098 0 R /H /I >> endobj 1100 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 664.825 null] >> endobj 1101 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.408 70.175 515.528 79.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1102 0 obj << /Length 1103 0 R /Filter /FlateDecode >> stream xZn6} `,IIy,Iqqjv[ZvoUػy"ȸO]XX;IEY|?S"M41ȪW:P&@<7" ~^7E%<~1`>-~:Wh>$ZL=yz];1 $c16A;odLp8AY%fY=qB?6V1Zb;pSRF.vR*wVBh*qI-..A%h3Zd|ZT>oz-wCo|wzm6˦މ`*Je"u.p;KvS֓MZ/RVE*ڥ/!"MƋ[־wXyq{NP sʍ/ 2b| _B17wYO|+-=;&d˦ЂĦ˾x*):M)DUյ6QUYyq{g[FB 1LQ<_viѷjUD7l6@.:͉ xaVGutxW"INHF$ C=Foۦ`P/}^K$i&,I)ؗh2҄5ŀql䰝E7mS@R,jxW~6}դV_W'zMSq']ോ;,D_ H*0 8T`3FĽ$\SC]N7MefSY &'Ȑ a M mjWA}FB$ʠ.Q e6^ͫ~m &uT$ *kڀ'z2E7!W.Ԗ5\VZkCU~UU^Vxre36L¬&eeu#`ӊlAĶm6Ж0&JsepXii溩Us A;# bɎMٍ12dT9VB$b^VJ*@g V)`Mu^ XЫbj|/I?gSNy.LbBr1b -'/ 3Eca8sY0O>/nf%vA$rلw kS,iMI/^~pƓ,:!ƫId9 CjYb<4'Pq)F6 ɩ0-virhނXB^Ⴆass ÷}Ï^<06! ŧFTcAA*Vؕ>t v s8R_M} fhsh!)9YOpdS~a.bɈfFW_]eH ', Ɗ$Ⱦ Ɵ#YY۬9,6|zBYNe +^B2 1Du=Fݘ`;I8 Z) + i2q̠Xηg㠚lHV]?cXNX7Yu_V"oGqa֑BƓnjtTqeЪ}DJӐ{1Od')YH}e=2$> endobj 1106 0 obj << /Type /Action /S /GoTo /D [620 0 R /XYZ 53.858 401.576 null] >> endobj 1107 0 obj << /Type /Annot /Subtype /Link /Rect [ 175.328 707.175 186.448 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1106 0 R /H /I >> endobj 1108 0 obj << /Type /Action /S /GoTo /D [632 0 R /XYZ 87.874 252.574 null] >> endobj 1109 0 obj << /Type /Annot /Subtype /Link /Rect [ 65.858 681.175 76.978 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1108 0 R /H /I >> endobj 1110 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 53.858 81.316 null] >> endobj 1111 0 obj << /Type /Annot /Subtype /Link /Rect [ 178.118 668.175 189.238 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1110 0 R /H /I >> endobj 1112 0 obj << /Type /Annot /Subtype /Link /Rect [ 65.858 642.175 76.978 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1071 0 R /H /I >> endobj 1113 0 obj << /Type /Action /S /GoTo /D [434 0 R /XYZ 87.874 498.425 null] >> endobj 1114 0 obj << /Type /Annot /Subtype /Link /Rect [ 225.928 629.175 237.048 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1115 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 87.874 543.837 null] >> endobj 1116 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.218 616.175 155.338 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1115 0 R /H /I >> endobj 1117 0 obj << /Type /Action /S /GoTo /D [465 0 R /XYZ 53.858 560.825 null] >> endobj 1118 0 obj << /Type /Annot /Subtype /Link /Rect [ 160.898 616.175 172.018 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1117 0 R /H /I >> endobj 1119 0 obj << /Type /Action /S /GoTo /D [540 0 R /XYZ 87.874 365.485 null] >> endobj 1120 0 obj << /Type /Annot /Subtype /Link /Rect [ 103.088 590.175 114.208 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1119 0 R /H /I >> endobj 1121 0 obj << /Type /Action /S /GoTo /D [532 0 R /XYZ 53.858 367.51 null] >> endobj 1122 0 obj << /Type /Annot /Subtype /Link /Rect [ 253.708 577.175 264.828 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1123 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.998 564.175 203.118 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1124 0 obj << /Type /Annot /Subtype /Link /Rect [ 163.118 551.175 174.238 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 947 0 R /H /I >> endobj 1125 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 81.32 null] >> endobj 1126 0 obj << /Type /Annot /Subtype /Link /Rect [ 207.038 538.175 218.158 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1125 0 R /H /I >> endobj 1127 0 obj << /Type /Action /S /GoTo /D [576 0 R /XYZ 53.858 308.937 null] >> endobj 1128 0 obj << /Type /Annot /Subtype /Link /Rect [ 184.218 525.175 195.338 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1127 0 R /H /I >> endobj 1129 0 obj << /Type /Action /S /GoTo /D [618 0 R /XYZ 87.874 155.035 null] >> endobj 1130 0 obj << /Type /Annot /Subtype /Link /Rect [ 175.888 512.175 187.008 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1129 0 R /H /I >> endobj 1131 0 obj << /Type /Action /S /GoTo /D [632 0 R /XYZ 87.874 593.703 null] >> endobj 1132 0 obj << /Type /Annot /Subtype /Link /Rect [ 192.568 512.175 203.688 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1131 0 R /H /I >> endobj 1133 0 obj << /Type /Annot /Subtype /Link /Rect [ 65.858 486.175 76.978 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1134 0 obj << /Type /Annot /Subtype /Link /Rect [ 173.118 473.175 184.238 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 1135 0 obj << /Type /Action /S /GoTo /D [586 0 R /XYZ 87.874 154.32 null] >> endobj 1136 0 obj << /Type /Annot /Subtype /Link /Rect [ 137.558 460.175 148.678 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1135 0 R /H /I >> endobj 1137 0 obj << /Type /Action /S /GoTo /D [532 0 R /XYZ 53.858 315.988 null] >> endobj 1138 0 obj << /Type /Annot /Subtype /Link /Rect [ 149.218 447.175 160.338 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1137 0 R /H /I >> endobj 1139 0 obj << /Type /Annot /Subtype /Link /Rect [ 116.988 421.175 128.108 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1140 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.248 382.175 242.368 391.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1032 0 R /H /I >> endobj 1141 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.248 343.175 242.368 352.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1034 0 R /H /I >> endobj 1142 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 64.858 595.325 null] >> endobj 1143 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.438 317.175 122.558 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1142 0 R /H /I >> endobj 1144 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.028 278.175 240.148 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1002 0 R /H /I >> endobj 1145 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 239.175 166.788 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 770 0 R /H /I >> endobj 1146 0 obj << /Type /Action /S /GoTo /D [38 0 R /XYZ 53.858 699.625 null] >> endobj 1147 0 obj << /Type /Annot /Subtype /Link /Rect [ 224.258 184.071 235.918 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1146 0 R /H /I >> endobj 1148 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 158.071 221.468 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 1149 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 132.071 221.468 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 986 0 R /H /I >> endobj 1150 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 106.071 221.468 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1151 0 obj << /Type /Action /S /GoTo /D [118 0 R /XYZ 87.874 491.551 null] >> endobj 1152 0 obj << /Type /Annot /Subtype /Link /Rect [ 148.338 93.071 153.898 102.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1151 0 R /H /I >> endobj 1153 0 obj << /Type /Action /S /GoTo /D [63 0 R /XYZ 53.858 644.525 null] >> endobj 1154 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.988 80.071 123.108 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1153 0 R /H /I >> endobj 1155 0 obj << /Type /Action /S /GoTo /D [118 0 R /XYZ 87.874 374.303 null] >> endobj 1156 0 obj << /Type /Annot /Subtype /Link /Rect [ 146.428 67.071 151.988 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1155 0 R /H /I >> endobj 1157 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 105.874 658.425 null] >> endobj 1158 0 obj << /Type /Annot /Subtype /Link /Rect [ 362.902 681.175 374.022 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1157 0 R /H /I >> endobj 1159 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.802 642.175 407.922 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 1160 0 obj << /Type /Annot /Subtype /Link /Rect [ 352.332 603.175 363.452 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 901 0 R /H /I >> endobj 1161 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 64.858 286.853 null] >> endobj 1162 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.442 577.175 352.562 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1161 0 R /H /I >> endobj 1163 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 87.874 147.324 null] >> endobj 1164 0 obj << /Type /Annot /Subtype /Link /Rect [ 362.902 551.175 374.022 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1163 0 R /H /I >> endobj 1165 0 obj << /Type /Action /S /GoTo /D [85 0 R /XYZ 53.858 409.601 null] >> endobj 1166 0 obj << /Type /Annot /Subtype /Link /Rect [ 376.242 525.175 387.362 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1167 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 53.858 381.753 null] >> endobj 1168 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.442 499.175 352.562 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1167 0 R /H /I >> endobj 1169 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 53.858 430.272 null] >> endobj 1170 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.442 473.175 352.562 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1169 0 R /H /I >> endobj 1171 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 434.175 481.282 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1018 0 R /H /I >> endobj 1172 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 408.175 462.602 417.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1173 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 382.175 462.602 391.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 947 0 R /H /I >> endobj 1174 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 87.874 487.373 null] >> endobj 1175 0 obj << /Type /Annot /Subtype /Link /Rect [ 340.572 369.175 351.692 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1174 0 R /H /I >> endobj 1176 0 obj << /Type /Annot /Subtype /Link /Rect [ 335.332 356.175 346.452 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 951 0 R /H /I >> endobj 1177 0 obj << /Type /Annot /Subtype /Link /Rect [ 343.102 343.175 354.222 352.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 967 0 R /H /I >> endobj 1178 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 234.323 null] >> endobj 1179 0 obj << /Type /Annot /Subtype /Link /Rect [ 387.022 330.175 398.142 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1178 0 R /H /I >> endobj 1180 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 132.323 null] >> endobj 1181 0 obj << /Type /Annot /Subtype /Link /Rect [ 330.332 317.175 341.452 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1180 0 R /H /I >> endobj 1182 0 obj << /Type /Action /S /GoTo /D [85 0 R /XYZ 53.858 141.328 null] >> endobj 1183 0 obj << /Type /Annot /Subtype /Link /Rect [ 376.242 291.175 387.362 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1182 0 R /H /I >> endobj 1184 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 105.874 584.425 null] >> endobj 1185 0 obj << /Type /Annot /Subtype /Link /Rect [ 344.782 278.175 355.902 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1184 0 R /H /I >> endobj 1186 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 81.323 null] >> endobj 1187 0 obj << /Type /Annot /Subtype /Link /Rect [ 380.362 265.175 391.482 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1186 0 R /H /I >> endobj 1188 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 387.323 null] >> endobj 1189 0 obj << /Type /Annot /Subtype /Link /Rect [ 329.772 252.175 340.892 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1188 0 R /H /I >> endobj 1190 0 obj << /Type /Annot /Subtype /Link /Rect [ 346.452 252.175 357.572 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1188 0 R /H /I >> endobj 1191 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 105.874 336.323 null] >> endobj 1192 0 obj << /Type /Annot /Subtype /Link /Rect [ 332.552 239.175 343.672 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1191 0 R /H /I >> endobj 1193 0 obj << /Type /Annot /Subtype /Link /Rect [ 334.772 213.175 345.892 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1142 0 R /H /I >> endobj 1194 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 187.175 462.602 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1195 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 161.175 462.602 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1081 0 R /H /I >> endobj 1196 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 135.175 462.602 144.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1081 0 R /H /I >> endobj 1197 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 109.175 462.602 118.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1081 0 R /H /I >> endobj 1198 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 83.175 462.602 92.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1083 0 R /H /I >> endobj 1199 0 obj << /Length 1200 0 R /Filter /FlateDecode >> stream xZ[o~ׯ.|)"h"z(hj%/,*/_Q)!q;ug.u\E[y|MĪ+DFT(h oG& 7J픈y$;^H [i1ʈ|\/6,߃R,SKDZ+˝z.]|V DψgmQ89NؼLE#Sts\Nmf_SmSZ[6^0)ƒ]SiCS{'{8 T249-'Iܼyh΋ožm*u7oQ8ؔ2eo=g@PtZ0f*4lzQ5]Yl7`\"c͚ΙuPCﯻMJwo ]uՇĺmvVwwRQT ԴxanB&):TfOXD17ȿ3婮/{q[޷PV!T^M{-TguB8V!L4S&V(%AZ&ձ U0PQiM NOӐO8/ec9a.ݵ\7xݘCWn< \1rVo]7G^:M)‰3RKʛ%!5w9(#8;x8N1Nqt+jqW]82&e$ߣj/1j0aal&I!"Qg1 ] } 0H":+C0,>UXF "2ŦE:+t!Xy}ODǹ5&m۴E"RmDƁ?[y! ^iYj4?,e#MFS#?|qY)tqܿJŽ2?3q,? ĺbS1KaTq=nuٶM⾅D3ͭCx_<$LnI>a8Fɕce993CP7> kB6[Qn6ߔ# ]p\=/)/;\p`V8&1Ѩl(6(;|: =$$-l=x"jEoBw*Cenc~Q!rXIln'&WuW߉aLy8+u0,Mڰ7(yaxݝtSOϨQuŒLz8ձw nCxnrʔrXmt@т+ځ<RdҌs P:e2W;kڧ 2VFWnS{4{.a+a7Txٻz4d.)ORiK C\}YذC&M]<'Էls!>d~Iɳ~>W;妃kZnʍirkvg]o}|\0c3 q@d&xw2ڒ5fd җFc#S̆~BR]$sFI>NF^Otnim X1dYΰ3 DQ2re N/H\qdru.> endobj 1203 0 obj << /Type /Annot /Subtype /Link /Rect [ 145.454 675.455 156.574 684.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1178 0 R /H /I >> endobj 1204 0 obj << /Type /Action /S /GoTo /D [141 0 R /XYZ 53.858 721.425 null] >> endobj 1205 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 636.455 166.904 645.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1204 0 R /H /I >> endobj 1206 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.684 610.455 163.244 619.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 992 0 R /H /I >> endobj 1207 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.044 571.455 274.164 580.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1208 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.044 532.455 274.164 541.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1006 0 R /H /I >> endobj 1209 0 obj << /Type /Annot /Subtype /Link /Rect [ 169.584 488.735 180.704 497.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1174 0 R /H /I >> endobj 1210 0 obj << /Type /Action /S /GoTo /D [159 0 R /XYZ 53.858 702.225 null] >> endobj 1211 0 obj << /Type /Annot /Subtype /Link /Rect [ 204.924 462.735 216.044 471.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1210 0 R /H /I >> endobj 1212 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.254 449.735 221.374 458.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 936 0 R /H /I >> endobj 1213 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 436.735 166.904 445.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1157 0 R /H /I >> endobj 1214 0 obj << /Type /Action /S /GoTo /D [159 0 R /XYZ 71.858 598.225 null] >> endobj 1215 0 obj << /Type /Annot /Subtype /Link /Rect [ 143.554 423.735 154.674 432.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1214 0 R /H /I >> endobj 1216 0 obj << /Type /Action /S /GoTo /D [159 0 R /XYZ 71.858 159.225 null] >> endobj 1217 0 obj << /Type /Annot /Subtype /Link /Rect [ 166.894 410.735 178.014 419.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1216 0 R /H /I >> endobj 1218 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 87.874 187.698 null] >> endobj 1219 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.124 397.735 168.244 406.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1218 0 R /H /I >> endobj 1220 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 87.874 252.919 null] >> endobj 1221 0 obj << /Type /Annot /Subtype /Link /Rect [ 240.484 384.735 251.604 393.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1220 0 R /H /I >> endobj 1222 0 obj << /Type /Annot /Subtype /Link /Rect [ 230.244 371.735 241.364 380.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 921 0 R /H /I >> endobj 1223 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.114 358.735 155.234 367.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1204 0 R /H /I >> endobj 1224 0 obj << /Type /Annot /Subtype /Link /Rect [ 196.914 345.735 208.034 354.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1220 0 R /H /I >> endobj 1225 0 obj << /Type /Action /S /GoTo /D [165 0 R /XYZ 87.874 81.319 null] >> endobj 1226 0 obj << /Type /Annot /Subtype /Link /Rect [ 195.804 332.735 206.924 341.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1225 0 R /H /I >> endobj 1227 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.444 319.735 168.564 328.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1163 0 R /H /I >> endobj 1228 0 obj << /Type /Action /S /GoTo /D [141 0 R /XYZ 53.858 243.119 null] >> endobj 1229 0 obj << /Type /Annot /Subtype /Link /Rect [ 173.794 306.735 184.914 315.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1228 0 R /H /I >> endobj 1230 0 obj << /Type /Annot /Subtype /Link /Rect [ 183.484 293.735 194.604 302.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1067 0 R /H /I >> endobj 1231 0 obj << /Type /Annot /Subtype /Link /Rect [ 169.124 267.735 180.244 276.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 1232 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.894 241.735 186.014 250.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1233 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 66.638 549.425 null] >> endobj 1234 0 obj << /Type /Annot /Subtype /Link /Rect [ 201.014 215.735 206.574 224.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1233 0 R /H /I >> endobj 1235 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.684 176.735 180.244 185.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 956 0 R /H /I >> endobj 1236 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 120.015 255.484 129.265 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1092 0 R /H /I >> endobj 1237 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 94.015 255.484 103.265 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 984 0 R /H /I >> endobj 1238 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 68.015 255.484 77.265 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1094 0 R /H /I >> endobj 1239 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.028 694.175 427.148 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1240 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.178 655.175 515.298 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1016 0 R /H /I >> endobj 1241 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 616.175 496.618 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 1242 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.028 590.175 427.148 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1243 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.918 551.175 408.038 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1214 0 R /H /I >> endobj 1244 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 525.175 496.618 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1086 0 R /H /I >> endobj 1245 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.818 499.175 429.938 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 772 0 R /H /I >> endobj 1246 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 473.175 496.618 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1096 0 R /H /I >> endobj 1247 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 447.175 496.618 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1248 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.818 421.175 429.938 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 777 0 R /H /I >> endobj 1249 0 obj << /Type /Annot /Subtype /Link /Rect [ 353.008 395.175 364.128 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 779 0 R /H /I >> endobj 1250 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.348 356.175 397.468 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 1251 0 obj << /Type /Action /S /GoTo /D [79 0 R /XYZ 87.874 592.583 null] >> endobj 1252 0 obj << /Type /Annot /Subtype /Link /Rect [ 389.588 343.175 395.148 352.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1251 0 R /H /I >> endobj 1253 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 317.175 496.618 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1088 0 R /H /I >> endobj 1254 0 obj << /Type /Annot /Subtype /Link /Rect [ 401.588 291.175 407.148 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1251 0 R /H /I >> endobj 1255 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 147.125 null] >> endobj 1256 0 obj << /Type /Annot /Subtype /Link /Rect [ 471.618 278.175 477.178 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1257 0 obj << /Type /Annot /Subtype /Link /Rect [ 483.288 265.175 488.848 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 980 0 R /H /I >> endobj 1258 0 obj << /Type /Annot /Subtype /Link /Rect [ 428.828 252.175 434.388 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1259 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 619.425 null] >> endobj 1260 0 obj << /Type /Annot /Subtype /Link /Rect [ 442.738 239.175 448.298 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1259 0 R /H /I >> endobj 1261 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 392.325 null] >> endobj 1262 0 obj << /Type /Annot /Subtype /Link /Rect [ 432.718 226.175 438.278 235.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1263 0 obj << /Type /Annot /Subtype /Link /Rect [ 469.388 213.175 474.948 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1264 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 66.638 585.425 null] >> endobj 1265 0 obj << /Type /Annot /Subtype /Link /Rect [ 442.148 187.175 447.708 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1264 0 R /H /I >> endobj 1266 0 obj << /Type /Annot /Subtype /Link /Rect [ 369.028 161.175 374.588 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 1267 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.818 122.175 441.938 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 770 0 R /H /I >> endobj 1268 0 obj << /Type /Annot /Subtype /Link /Rect [ 460.498 96.175 466.058 105.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 913 0 R /H /I >> endobj 1269 0 obj << /Type /Annot /Subtype /Link /Rect [ 438.838 83.175 444.398 92.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 992 0 R /H /I >> endobj 1270 0 obj << /Type /Annot /Subtype /Link /Rect [ 441.618 70.175 447.178 79.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 992 0 R /H /I >> endobj 1271 0 obj << /Length 1272 0 R /Filter /FlateDecode >> stream xZ[o~_1 sьsЋ1ڇ8WkF/Gz%ĉzP !8i.$b[})&Q"֑U66R&GQ<GB\y$џyVگi/xZs+>=ߩMs J"9𦴌s@;|Lp*і HbjS7BX@/UW &0o.T |[V`Tp8N8S!T)-W=W1[p)Fʘ`>U"o~A;tc1ƪHE@ y2BX l5A'*@чm$t\T>ok_%x)6Rq|Yd9dTx1{0D;8g߉>;gP=2p$M̞jP>|1'Č/B0@0R0n}~_EމE{)䲀(Gg B!%'*ұ֦`i;DZ sESE9ӥ)tzאp#J]VagJسjR'9KifXsvS•w-u+u{Jcqzc8pIJ~WqS;:wp%ܗPd@ Kcz#d q(LJ%'77s͙Tu@%/1DY>uӳTNC+G|p7rN=u µ} ay 5p.΋]B^2"ѯqreL >:o}suZƦb7."K{+!c;g fR*R\jjoY$U*Fp Iy:':~{1ފ3t}Oe1 j~2mȜiV̼IM\ͰxilD :i#{蒂e-D{ *iI֝m\8M:B@X; 1(&Ÿ!7hz]BйT=#:@zYzqr B9p}t=p& |~wRAD2j<K߶8c?‘V% )\xJԄp”#i OiA2)fxf( M8Uf mN+Q }c3K1KfP|W$%W-S\U8a?3}t*V@TwKgƑ4Iu /v8ԗ PY8S5 Z2?#nC=M! endstream endobj 1272 0 obj 2101 endobj 1273 0 obj [ 1203 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1211 0 R 1212 0 R 1213 0 R 1215 0 R 1217 0 R 1219 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1226 0 R 1227 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1252 0 R 1253 0 R 1254 0 R 1256 0 R 1257 0 R 1258 0 R 1260 0 R 1262 0 R 1263 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R ] endobj 1274 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 1273 0 R /Contents 1271 0 R >> endobj 1275 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 108.321 null] >> endobj 1276 0 obj << /Type /Annot /Subtype /Link /Rect [ 180.338 707.175 185.898 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1275 0 R /H /I >> endobj 1277 0 obj << /Type /Action /S /GoTo /D [410 0 R /XYZ 87.874 687.1 null] >> endobj 1278 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.008 694.175 182.568 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1277 0 R /H /I >> endobj 1279 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.248 655.175 242.368 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 990 0 R /H /I >> endobj 1280 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.028 616.175 240.148 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1281 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 577.175 166.788 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 1282 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 524.14 221.468 533.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 1283 0 obj << /Type /Annot /Subtype /Link /Rect [ 184.468 511.14 190.028 520.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1284 0 obj << /Type /Annot /Subtype /Link /Rect [ 275.038 498.14 280.598 507.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 908 0 R /H /I >> endobj 1285 0 obj << /Type /Annot /Subtype /Link /Rect [ 196.138 485.14 201.698 494.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 980 0 R /H /I >> endobj 1286 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.988 459.14 113.108 468.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1049 0 R /H /I >> endobj 1287 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.988 433.14 113.108 442.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1051 0 R /H /I >> endobj 1288 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.198 394.14 122.318 403.39 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 1289 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.028 328.105 240.148 337.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1009 0 R /H /I >> endobj 1290 0 obj << /Type /Annot /Subtype /Link /Rect [ 123.668 302.105 129.228 311.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1275 0 R /H /I >> endobj 1291 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 263.105 166.788 272.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1292 0 obj << /Type /Action /S /GoTo /D [135 0 R /XYZ 105.874 648.425 null] >> endobj 1293 0 obj << /Type /Annot /Subtype /Link /Rect [ 96.428 237.105 107.548 246.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1292 0 R /H /I >> endobj 1294 0 obj << /Type /Annot /Subtype /Link /Rect [ 113.438 211.105 124.558 220.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 713 0 R /H /I >> endobj 1295 0 obj << /Type /Annot /Subtype /Link /Rect [ 115.098 198.105 126.218 207.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 715 0 R /H /I >> endobj 1296 0 obj << /Type /Annot /Subtype /Link /Rect [ 131.778 198.105 142.898 207.355 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 717 0 R /H /I >> endobj 1297 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.248 132.07 242.368 141.32 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1032 0 R /H /I >> endobj 1298 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.248 93.07 242.368 102.32 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1034 0 R /H /I >> endobj 1299 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.802 707.175 407.922 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 774 0 R /H /I >> endobj 1300 0 obj << /Type /Annot /Subtype /Link /Rect [ 343.122 681.175 354.242 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1053 0 R /H /I >> endobj 1301 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 655.175 462.602 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 1302 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 629.175 462.602 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 1303 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 603.175 462.602 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 984 0 R /H /I >> endobj 1304 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 577.175 462.602 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1092 0 R /H /I >> endobj 1305 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 551.175 462.602 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1094 0 R /H /I >> endobj 1306 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 525.175 462.602 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1096 0 R /H /I >> endobj 1307 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 499.175 462.602 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1098 0 R /H /I >> endobj 1308 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 473.175 462.602 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1309 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 447.175 462.602 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1106 0 R /H /I >> endobj 1310 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 421.175 462.602 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1108 0 R /H /I >> endobj 1311 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 395.175 462.602 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1110 0 R /H /I >> endobj 1312 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.802 356.175 407.922 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 757 0 R /H /I >> endobj 1313 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 330.175 462.602 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1071 0 R /H /I >> endobj 1314 0 obj << /Type /Annot /Subtype /Link /Rect [ 384.802 304.175 395.922 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 1315 0 obj << /Type /Annot /Subtype /Link /Rect [ 375.902 249.071 387.022 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1292 0 R /H /I >> endobj 1316 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 223.071 462.602 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1317 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 197.071 462.602 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1115 0 R /H /I >> endobj 1318 0 obj << /Type /Annot /Subtype /Link /Rect [ 468.162 197.071 479.282 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1117 0 R /H /I >> endobj 1319 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 171.071 462.602 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1320 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 145.071 462.602 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1115 0 R /H /I >> endobj 1321 0 obj << /Type /Annot /Subtype /Link /Rect [ 468.162 145.071 479.282 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1117 0 R /H /I >> endobj 1322 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 106.071 481.282 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1011 0 R /H /I >> endobj 1323 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 67.071 481.282 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 745 0 R /H /I >> endobj 1324 0 obj << /Length 1325 0 R /Filter /FlateDecode >> stream xZYo8~ >@![tnQ@E!:\INCɱ%8Ц3>rL0_oK,+g72uThL? TK&TjtP^{qp 㰀߽bΪgf_#Ʒ|>=׿FX %ǡ Dh=}:p &NzĽre ld']j/rV !$ђD N~,)2.KgrNp#YIJfeeݔiYVUM^]@89%VotI^ݤE`&obOYW]^Zfn۴ZII!7m$vǷQEQ k3 =ڶ]mOӦIpw6=m-FghS EDh3+<m=alۺmaK[u-+Gygr]t:@|$]þjGEs8|įX]RJ6[O;2m׶llچ4'laPY9-]yN_z:폴# fMT e:F&rMȫ>sf:~Ls#Uo'bz^eSыu^,"n4p6`]ؕŬ ݖqR)r`2w__{k"S99!A\Hih] UW,@qhA~) w$7`S"C7p`2eHB(4yA{4!TX. LbXwbdd.ED"UGT誇ډ.1.Op͢òkVպs 4")>:g2UVӲD4$ژ:K]B]]%nwלdZ{;ud>SAT@󑽾j%vUtv _6[7 t+ 9L_ Ea &MV"PU&bZ 4A{֠!Rlo{n~ #I=ֱD#IIV t-j"e "ͫ.ݛ 5jH#eV\UgС+Ӹ> %E,n[8Gi7f?ߐA[Pl~X!#`!HwC6NX.= lG+#QJw=_ۼ*|ФXwTK| 6Rjn{>6=bGlC,@$rpԃˀ XǾruHcgv1Ǔ/`XAUHVMi@`tk &y;&t14j]E}(;mkAFf}>Wϗl+S57m\;W$ǃI4;؎zu^pQeK_X] Z#RF]f?ˠX2K%}CcFVkEkQYvٕ;qS!#`)eQ_@ a\"m&R >F endstream endobj 1325 0 obj 1950 endobj 1326 0 obj [ 1276 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R ] endobj 1327 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 1326 0 R /Contents 1324 0 R >> endobj 1328 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.264 681.175 276.384 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1036 0 R /H /I >> endobj 1329 0 obj << /Type /Annot /Subtype /Link /Rect [ 303.054 613.071 314.174 622.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 1330 0 obj << /Type /Annot /Subtype /Link /Rect [ 185.454 600.071 196.574 609.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 751 0 R /H /I >> endobj 1331 0 obj << /Type /Annot /Subtype /Link /Rect [ 239.914 587.071 251.034 596.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 753 0 R /H /I >> endobj 1332 0 obj << /Type /Annot /Subtype /Link /Rect [ 184.694 574.071 195.814 583.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 755 0 R /H /I >> endobj 1333 0 obj << /Type /Annot /Subtype /Link /Rect [ 143.004 548.071 154.124 557.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 757 0 R /H /I >> endobj 1334 0 obj << /Type /Annot /Subtype /Link /Rect [ 148.554 522.071 159.674 531.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 759 0 R /H /I >> endobj 1335 0 obj << /Type /Annot /Subtype /Link /Rect [ 262.724 509.071 273.844 518.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 735 0 R /H /I >> endobj 1336 0 obj << /Type /Annot /Subtype /Link /Rect [ 225.394 496.071 236.514 505.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 719 0 R /H /I >> endobj 1337 0 obj << /Type /Annot /Subtype /Link /Rect [ 233.734 483.071 244.854 492.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 721 0 R /H /I >> endobj 1338 0 obj << /Type /Annot /Subtype /Link /Rect [ 228.164 470.071 239.284 479.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 723 0 R /H /I >> endobj 1339 0 obj << /Type /Annot /Subtype /Link /Rect [ 225.384 457.071 236.504 466.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 725 0 R /H /I >> endobj 1340 0 obj << /Type /Annot /Subtype /Link /Rect [ 228.164 444.071 239.284 453.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 727 0 R /H /I >> endobj 1341 0 obj << /Type /Annot /Subtype /Link /Rect [ 286.964 431.071 298.084 440.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 729 0 R /H /I >> endobj 1342 0 obj << /Type /Annot /Subtype /Link /Rect [ 188.574 418.071 199.694 427.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 768 0 R /H /I >> endobj 1343 0 obj << /Type /Annot /Subtype /Link /Rect [ 167.464 392.071 178.584 401.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 770 0 R /H /I >> endobj 1344 0 obj << /Type /Annot /Subtype /Link /Rect [ 275.504 379.071 286.624 388.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 772 0 R /H /I >> endobj 1345 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.694 366.071 255.814 375.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 774 0 R /H /I >> endobj 1346 0 obj << /Type /Annot /Subtype /Link /Rect [ 259.384 353.071 270.504 362.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 753 0 R /H /I >> endobj 1347 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.934 340.071 256.054 349.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 777 0 R /H /I >> endobj 1348 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 314.071 122.994 323.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 779 0 R /H /I >> endobj 1349 0 obj << /Type /Annot /Subtype /Link /Rect [ 233.254 301.071 244.374 310.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 1350 0 obj << /Type /Annot /Subtype /Link /Rect [ 284.384 288.071 295.504 297.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 1351 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 262.071 122.994 271.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 784 0 R /H /I >> endobj 1352 0 obj << /Type /Annot /Subtype /Link /Rect [ 150.784 249.071 161.904 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 1353 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.874 223.071 122.994 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 1354 0 obj << /Type /Annot /Subtype /Link /Rect [ 243.054 210.071 254.174 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1355 0 obj << /Type /Annot /Subtype /Link /Rect [ 248.624 197.071 259.744 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1356 0 obj << /Type /Annot /Subtype /Link /Rect [ 223.804 184.071 234.924 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 792 0 R /H /I >> endobj 1357 0 obj << /Type /Annot /Subtype /Link /Rect [ 256.374 171.071 267.494 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1358 0 obj << /Type /Annot /Subtype /Link /Rect [ 200.804 158.071 211.924 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 795 0 R /H /I >> endobj 1359 0 obj << /Type /Annot /Subtype /Link /Rect [ 276.374 145.071 287.494 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1360 0 obj << /Type /Action /S /GoTo /D [677 0 R /XYZ 53.858 339.045 null] >> endobj 1361 0 obj << /Type /Annot /Subtype /Link /Rect [ 134.334 119.071 139.894 128.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1360 0 R /H /I >> endobj 1362 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 80.071 200.804 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1363 0 obj << /Type /Annot /Subtype /Link /Rect [ 506.398 694.175 517.518 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 737 0 R /H /I >> endobj 1364 0 obj << /Type /Annot /Subtype /Link /Rect [ 498.528 652.071 504.088 661.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1365 0 obj << /Type /Annot /Subtype /Link /Rect [ 492.178 626.071 503.298 635.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 999 0 R /H /I >> endobj 1366 0 obj << /Type /Annot /Subtype /Link /Rect [ 524.198 613.071 535.318 622.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 1367 0 obj << /Type /Annot /Subtype /Link /Rect [ 536.968 600.071 548.088 609.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1002 0 R /H /I >> endobj 1368 0 obj << /Type /Annot /Subtype /Link /Rect [ 525.828 587.071 536.948 596.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1369 0 obj << /Type /Annot /Subtype /Link /Rect [ 406.368 574.071 417.488 583.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1006 0 R /H /I >> endobj 1370 0 obj << /Type /Annot /Subtype /Link /Rect [ 503.058 561.071 514.178 570.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1371 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.358 548.071 427.478 557.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1009 0 R /H /I >> endobj 1372 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.958 535.071 478.078 544.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1011 0 R /H /I >> endobj 1373 0 obj << /Type /Annot /Subtype /Link /Rect [ 435.818 522.071 446.938 531.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 745 0 R /H /I >> endobj 1374 0 obj << /Type /Annot /Subtype /Link /Rect [ 429.698 509.071 440.818 518.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1014 0 R /H /I >> endobj 1375 0 obj << /Type /Annot /Subtype /Link /Rect [ 478.048 496.071 489.168 505.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1016 0 R /H /I >> endobj 1376 0 obj << /Type /Annot /Subtype /Link /Rect [ 463.058 483.071 474.178 492.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1018 0 R /H /I >> endobj 1377 0 obj << /Type /Annot /Subtype /Link /Rect [ 521.958 470.071 533.078 479.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1020 0 R /H /I >> endobj 1378 0 obj << /Type /Annot /Subtype /Link /Rect [ 484.178 457.071 495.298 466.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1022 0 R /H /I >> endobj 1379 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.668 444.071 515.788 453.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1024 0 R /H /I >> endobj 1380 0 obj << /Type /Annot /Subtype /Link /Rect [ 398.818 418.071 404.378 427.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1277 0 R /H /I >> endobj 1381 0 obj << /Type /Annot /Subtype /Link /Rect [ 506.398 379.071 517.518 388.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1038 0 R /H /I >> endobj 1382 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 353.071 496.618 362.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1098 0 R /H /I >> endobj 1383 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.588 327.071 397.708 336.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1180 0 R /H /I >> endobj 1384 0 obj << /Type /Annot /Subtype /Link /Rect [ 419.918 301.071 431.038 310.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1167 0 R /H /I >> endobj 1385 0 obj << /Type /Action /S /GoTo /D [109 0 R /XYZ 53.858 520.406 null] >> endobj 1386 0 obj << /Type /Annot /Subtype /Link /Rect [ 407.138 288.071 418.258 297.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1385 0 R /H /I >> endobj 1387 0 obj << /Type /Annot /Subtype /Link /Rect [ 423.818 288.071 434.938 297.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1169 0 R /H /I >> endobj 1388 0 obj << /Type /Annot /Subtype /Link /Rect [ 426.048 275.071 437.168 284.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1161 0 R /H /I >> endobj 1389 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 249.071 496.618 258.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 1390 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 223.071 496.618 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1092 0 R /H /I >> endobj 1391 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.178 184.071 515.298 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1014 0 R /H /I >> endobj 1392 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.178 145.071 515.298 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1011 0 R /H /I >> endobj 1393 0 obj << /Type /Action /S /GoTo /D [85 0 R /XYZ 64.858 626.525 null] >> endobj 1394 0 obj << /Type /Annot /Subtype /Link /Rect [ 410.258 106.071 421.378 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1393 0 R /H /I >> endobj 1395 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.818 80.071 429.938 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 781 0 R /H /I >> endobj 1396 0 obj << /Length 1397 0 R /Filter /FlateDecode >> stream xZIsFW-v uh,9R2U3)k&(ФX$k,$FsH%-x}'%N}o5K␅'EzHO!Kt`?q{G>D\Ώ |6wu^6 _XQeVשZ]ןߵ:V9Lb15c)OdO׏h2ƹ8_CN2b)4.qǷ8qq6$'֖gp-gc \>BS!gx|2/, f5e鶭{}5MsִK;@P3j+S:2ȄӓC땩r8^n+= IOb(n<б?t/턳@ )tsV\#)wnV]gv 3zp*MxEYYPtctױJU_@E;~~U":'Y3նj失'pH1~ܕZF ]' SO B{?+^Q-+a+JӤ )ʡMS̾cǰa/24`Q‍YԴ2m gA '¹ٴ 5j7k;𡪫OALCWE牴`i(0M.aLm2Ht@۵zEKl}*wN=#j~[ASqHAH j(JD|a!1tTW˃9HyԻr  /@"nuC?هHy*[Tmɾ6ZSVxP%z G!' JN 1{^. &_L`n8| #p`pl/Cwl>TO0YEʆIBRU6n҃Q5Rۡ{2 > 57r~lq+T?j8FDmʍ7U֎C2rnK?Lߓ},˻PW!דB$s,a0ROvQ:5q)_y༷oa <FnAh=RkTHiT⦔솭Kyb2*EB܍”fau2Q͖] 2an%Cidbm]&,rXb :Kz+B&͒!I7et{6T۠WM$ ֨B|M1$Ib*c Pbhm: Ր""GCUU3xhG55l$KBqHi׮~q0vj<BNFsӤ D4AE3˶FA@b,*04Tu ̶-Uj|L+ijw4ՔKuD1F0$#oZ >#Z 6F#EӒ϶X19ˇq0n#2\z,AH.'&u:Zf%WPEU0c . i,[g*F׿Bt^T!e9A4uQ @Ю~UvgTyTz{+?2L 0XL4ÇnYjC/s2Ɓ귴*g )c29yAL"O`;~Ǿ$#Fzx̺+pU^G6qz'C;Ϥy$l| 5],"LTD҉E})*m1HI'өtc) DuW= S:q|y+灹km{lEhhF6anPdDe̥7#|H-$l> endobj 1400 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 707.175 166.788 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 784 0 R /H /I >> endobj 1401 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 681.175 166.788 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 786 0 R /H /I >> endobj 1402 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 655.175 166.788 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1403 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 629.175 166.788 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 789 0 R /H /I >> endobj 1404 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 603.175 221.468 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1115 0 R /H /I >> endobj 1405 0 obj << /Type /Annot /Subtype /Link /Rect [ 227.028 603.175 238.148 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1117 0 R /H /I >> endobj 1406 0 obj << /Type /Annot /Subtype /Link /Rect [ 143.668 549.623 154.788 558.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 792 0 R /H /I >> endobj 1407 0 obj << /Type /Annot /Subtype /Link /Rect [ 166.788 536.623 177.908 545.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 795 0 R /H /I >> endobj 1408 0 obj << /Type /Annot /Subtype /Link /Rect [ 242.358 523.623 253.478 532.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1409 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 497.623 166.788 506.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1410 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 471.623 221.468 480.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1411 0 obj << /Type /Annot /Subtype /Link /Rect [ 141.678 458.623 147.238 467.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1412 0 obj << /Type /Annot /Subtype /Link /Rect [ 207.798 445.623 213.358 454.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1413 0 obj << /Type /Action /S /GoTo /D [677 0 R /XYZ 53.858 454.735 null] >> endobj 1414 0 obj << /Type /Annot /Subtype /Link /Rect [ 213.368 432.623 218.928 441.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1413 0 R /H /I >> endobj 1415 0 obj << /Type /Action /S /GoTo /D [60 0 R /XYZ 87.874 303.677 null] >> endobj 1416 0 obj << /Type /Annot /Subtype /Link /Rect [ 100.318 406.623 105.878 415.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1417 0 obj << /Type /Annot /Subtype /Link /Rect [ 219.248 380.623 230.368 389.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1026 0 R /H /I >> endobj 1418 0 obj << /Type /Annot /Subtype /Link /Rect [ 211.278 367.623 222.398 376.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 733 0 R /H /I >> endobj 1419 0 obj << /Type /Annot /Subtype /Link /Rect [ 176.238 354.623 187.358 363.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 737 0 R /H /I >> endobj 1420 0 obj << /Type /Annot /Subtype /Link /Rect [ 126.218 341.623 137.338 350.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 944 0 R /H /I >> endobj 1421 0 obj << /Type /Annot /Subtype /Link /Rect [ 138.438 328.623 149.558 337.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 990 0 R /H /I >> endobj 1422 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.008 315.623 200.128 324.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1032 0 R /H /I >> endobj 1423 0 obj << /Type /Annot /Subtype /Link /Rect [ 195.678 302.623 206.798 311.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1034 0 R /H /I >> endobj 1424 0 obj << /Type /Annot /Subtype /Link /Rect [ 257.368 289.623 268.488 298.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1036 0 R /H /I >> endobj 1425 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.808 276.623 202.928 285.873 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1038 0 R /H /I >> endobj 1426 0 obj << /Type /Annot /Subtype /Link /Rect [ 147.558 223.071 158.678 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1427 0 obj << /Type /Annot /Subtype /Link /Rect [ 115.308 210.071 126.428 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 949 0 R /H /I >> endobj 1428 0 obj << /Type /Annot /Subtype /Link /Rect [ 186.458 197.071 197.578 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 969 0 R /H /I >> endobj 1429 0 obj << /Type /Annot /Subtype /Link /Rect [ 65.858 171.071 76.978 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 1430 0 obj << /Type /Annot /Subtype /Link /Rect [ 223.688 158.071 234.808 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 986 0 R /H /I >> endobj 1431 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.238 145.071 185.358 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1081 0 R /H /I >> endobj 1432 0 obj << /Type /Annot /Subtype /Link /Rect [ 145.328 132.071 156.448 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1083 0 R /H /I >> endobj 1433 0 obj << /Type /Annot /Subtype /Link /Rect [ 125.888 106.071 137.008 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 1434 0 obj << /Type /Annot /Subtype /Link /Rect [ 236.488 93.071 247.608 102.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1086 0 R /H /I >> endobj 1435 0 obj << /Type /Annot /Subtype /Link /Rect [ 132.558 80.071 143.678 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1088 0 R /H /I >> endobj 1436 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.268 67.071 240.388 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 1437 0 obj << /Type /Annot /Subtype /Link /Rect [ 407.032 707.175 418.152 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 984 0 R /H /I >> endobj 1438 0 obj << /Type /Annot /Subtype /Link /Rect [ 423.142 694.175 434.262 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1092 0 R /H /I >> endobj 1439 0 obj << /Type /Annot /Subtype /Link /Rect [ 397.022 681.175 408.142 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1094 0 R /H /I >> endobj 1440 0 obj << /Type /Annot /Subtype /Link /Rect [ 480.942 668.175 492.062 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1096 0 R /H /I >> endobj 1441 0 obj << /Type /Annot /Subtype /Link /Rect [ 446.492 655.175 457.612 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1098 0 R /H /I >> endobj 1442 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.392 642.175 481.512 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1443 0 obj << /Type /Annot /Subtype /Link /Rect [ 416.462 629.175 427.582 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1106 0 R /H /I >> endobj 1444 0 obj << /Type /Annot /Subtype /Link /Rect [ 306.992 603.175 318.112 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1108 0 R /H /I >> endobj 1445 0 obj << /Type /Annot /Subtype /Link /Rect [ 419.252 590.175 430.372 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1110 0 R /H /I >> endobj 1446 0 obj << /Type /Annot /Subtype /Link /Rect [ 306.992 564.175 318.112 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1071 0 R /H /I >> endobj 1447 0 obj << /Type /Annot /Subtype /Link /Rect [ 467.062 551.175 478.182 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1448 0 obj << /Type /Annot /Subtype /Link /Rect [ 385.352 538.175 396.472 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1115 0 R /H /I >> endobj 1449 0 obj << /Type /Annot /Subtype /Link /Rect [ 402.032 538.175 413.152 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1117 0 R /H /I >> endobj 1450 0 obj << /Type /Annot /Subtype /Link /Rect [ 344.222 512.175 355.342 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1119 0 R /H /I >> endobj 1451 0 obj << /Type /Annot /Subtype /Link /Rect [ 494.842 499.175 505.962 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1452 0 obj << /Type /Annot /Subtype /Link /Rect [ 433.132 486.175 444.252 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1453 0 obj << /Type /Annot /Subtype /Link /Rect [ 404.252 473.175 415.372 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 947 0 R /H /I >> endobj 1454 0 obj << /Type /Annot /Subtype /Link /Rect [ 448.172 460.175 459.292 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1125 0 R /H /I >> endobj 1455 0 obj << /Type /Annot /Subtype /Link /Rect [ 425.352 447.175 436.472 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1127 0 R /H /I >> endobj 1456 0 obj << /Type /Annot /Subtype /Link /Rect [ 417.022 434.175 428.142 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1129 0 R /H /I >> endobj 1457 0 obj << /Type /Annot /Subtype /Link /Rect [ 433.702 434.175 444.822 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1131 0 R /H /I >> endobj 1458 0 obj << /Type /Annot /Subtype /Link /Rect [ 306.992 408.175 318.112 417.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1459 0 obj << /Type /Annot /Subtype /Link /Rect [ 414.252 395.175 425.372 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 1460 0 obj << /Type /Annot /Subtype /Link /Rect [ 378.692 382.175 389.812 391.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1135 0 R /H /I >> endobj 1461 0 obj << /Type /Annot /Subtype /Link /Rect [ 390.352 369.175 401.472 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1137 0 R /H /I >> endobj 1462 0 obj << /Type /Annot /Subtype /Link /Rect [ 358.122 343.175 369.242 352.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1463 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 121.525 null] >> endobj 1464 0 obj << /Type /Annot /Subtype /Link /Rect [ 364.242 317.175 375.362 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1463 0 R /H /I >> endobj 1465 0 obj << /Type /Annot /Subtype /Link /Rect [ 379.022 304.175 390.142 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 1466 0 obj << /Type /Annot /Subtype /Link /Rect [ 414.602 291.175 425.722 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 1467 0 obj << /Type /Annot /Subtype /Link /Rect [ 404.032 278.175 415.152 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1468 0 obj << /Type /Annot /Subtype /Link /Rect [ 364.572 265.175 375.692 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1182 0 R /H /I >> endobj 1469 0 obj << /Type /Annot /Subtype /Link /Rect [ 355.122 252.175 366.242 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1393 0 R /H /I >> endobj 1470 0 obj << /Type /Action /S /GoTo /D [85 0 R /XYZ 53.858 286.063 null] >> endobj 1471 0 obj << /Type /Annot /Subtype /Link /Rect [ 399.582 239.175 410.702 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1470 0 R /H /I >> endobj 1472 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 424.325 null] >> endobj 1473 0 obj << /Type /Annot /Subtype /Link /Rect [ 395.582 226.175 406.702 235.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1472 0 R /H /I >> endobj 1474 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.722 213.175 402.282 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1259 0 R /H /I >> endobj 1475 0 obj << /Type /Action /S /GoTo /D [268 0 R /XYZ 87.874 466.883 null] >> endobj 1476 0 obj << /Type /Annot /Subtype /Link /Rect [ 362.012 187.175 373.132 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1475 0 R /H /I >> endobj 1477 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.452 161.175 347.012 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1413 0 R /H /I >> endobj 1478 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.452 135.175 347.012 144.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1479 0 obj << /Type /Annot /Subtype /Link /Rect [ 354.472 122.175 360.032 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1360 0 R /H /I >> endobj 1480 0 obj << /Type /Action /S /GoTo /D [60 0 R /XYZ 105.874 141.313 null] >> endobj 1481 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.452 96.175 347.012 105.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1480 0 R /H /I >> endobj 1482 0 obj << /Type /Annot /Subtype /Link /Rect [ 341.452 70.175 347.012 79.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1483 0 obj << /Length 1484 0 R /Filter /FlateDecode >> stream xZYoH~p>yl0;dZ6aTx"uPUټA"꺺OFi ?ªQ%yȕI0Wօ8S'6Ҹb=i@S/Ͽx1 j.~/n/~}V׫yECаڨz?K]k?y< L~21Bs kcS=MglLH,ȤG-@Ԝ pd=fn>M(:B$CoKʶ-TmWM]2F$XҶ,Z5m,wd%=0qso|NMWj~;YN滜dҖe,jel<.'8sS]E۶YU뽗ug Nr]Cz.[ն<ă/eg%)xuj\?Ia'r 뽟֏'2˓<sN/25`˧nZ |(lȪm6j4\#Yffm۴ѲE%ͽ0-l[U/OÚt-Lk[WRZ,]oox[:nbݫ!̲ě]UD)MݽA 90d$\1.p$xA)oh?_]}x m d *DC&l=lnbl;!omn"v qȺSrM^$NW-#aSd$nM}lVP< Z/>HV9Y 2 -]צqCv•MgǗGLf4${X”aTVYU-10xvƳSnapp1`,}āsADMɪn{#WpQ h9x⮬o.}D~mu'!`.[KSAi| a*OxC:ķp[c]p>c3 "q!C!gjtClV LάhfẈ?\Hܝ4J*腝d#m',vn54lͱ˦^ƙJ)m؄ifwƙ7XiI䃪3%.ؓ-bV*h];ka(ݶO,ykEŒq3ij71!ty!E,'5Jx ;]Uu`XrߒPO1^l`s[y:L!yNjsC Hks^Ș|x+p^{/uM`g+(3^֚9?5e_tua:V,1NS`;ؿ-Wj!Pf,uT9xcO\MCOUc7])i\DظNJaR&9,&1ȜdY쬂sE) }[.':͌^J!HW02!C6h6˒: >;d)44q\F(>;r0b 9[Sm u:W 4t aXD)Mi~U#ظ:4/pRi/f ]+hOw50 ZM*v> endobj 1487 0 obj << /Type /Action /S /GoTo /D [677 0 R /XYZ 71.858 597.393 null] >> endobj 1488 0 obj << /Type /Annot /Subtype /Link /Rect [ 134.334 694.175 139.894 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1487 0 R /H /I >> endobj 1489 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 655.175 255.484 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1119 0 R /H /I >> endobj 1490 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 629.175 255.484 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1491 0 obj << /Type /Annot /Subtype /Link /Rect [ 169.124 590.175 180.244 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1470 0 R /H /I >> endobj 1492 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.684 564.175 188.804 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 735 0 R /H /I >> endobj 1493 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.894 538.175 186.014 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1494 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.574 538.175 202.694 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 988 0 R /H /I >> endobj 1495 0 obj << /Type /Annot /Subtype /Link /Rect [ 136.004 512.175 147.124 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1055 0 R /H /I >> endobj 1496 0 obj << /Type /Annot /Subtype /Link /Rect [ 145.214 473.175 156.334 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 901 0 R /H /I >> endobj 1497 0 obj << /Type /Annot /Subtype /Link /Rect [ 134.324 447.175 145.444 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1161 0 R /H /I >> endobj 1498 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 421.175 166.904 430.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1220 0 R /H /I >> endobj 1499 0 obj << /Type /Annot /Subtype /Link /Rect [ 169.124 395.175 180.244 404.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1500 0 obj << /Type /Annot /Subtype /Link /Rect [ 136.004 369.175 147.124 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1057 0 R /H /I >> endobj 1501 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 343.175 255.484 352.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1108 0 R /H /I >> endobj 1502 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 317.175 255.484 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1106 0 R /H /I >> endobj 1503 0 obj << /Type /Annot /Subtype /Link /Rect [ 199.024 304.175 210.144 313.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 743 0 R /H /I >> endobj 1504 0 obj << /Type /Annot /Subtype /Link /Rect [ 240.484 278.175 251.604 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1220 0 R /H /I >> endobj 1505 0 obj << /Type /Annot /Subtype /Link /Rect [ 196.914 265.175 208.034 274.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1220 0 R /H /I >> endobj 1506 0 obj << /Type /Annot /Subtype /Link /Rect [ 179.584 252.175 185.144 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1507 0 obj << /Type /Annot /Subtype /Link /Rect [ 213.474 239.175 224.594 248.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1174 0 R /H /I >> endobj 1508 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.124 213.175 168.244 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1463 0 R /H /I >> endobj 1509 0 obj << /Type /Annot /Subtype /Link /Rect [ 171.904 200.175 183.024 209.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 1510 0 obj << /Type /Annot /Subtype /Link /Rect [ 207.484 187.175 218.604 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 1511 0 obj << /Type /Annot /Subtype /Link /Rect [ 196.914 174.175 208.034 183.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1512 0 obj << /Type /Annot /Subtype /Link /Rect [ 157.454 161.175 168.574 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1182 0 R /H /I >> endobj 1513 0 obj << /Type /Annot /Subtype /Link /Rect [ 148.004 148.175 159.124 157.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1393 0 R /H /I >> endobj 1514 0 obj << /Type /Annot /Subtype /Link /Rect [ 192.464 135.175 203.584 144.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1470 0 R /H /I >> endobj 1515 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.684 122.175 188.804 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1074 0 R /H /I >> endobj 1516 0 obj << /Type /Action /S /GoTo /D [60 0 R /XYZ 87.874 216.495 null] >> endobj 1517 0 obj << /Type /Annot /Subtype /Link /Rect [ 227.924 109.175 233.484 118.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1516 0 R /H /I >> endobj 1518 0 obj << /Type /Annot /Subtype /Link /Rect [ 185.684 96.175 196.804 105.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1472 0 R /H /I >> endobj 1519 0 obj << /Type /Annot /Subtype /Link /Rect [ 204.924 70.175 216.044 79.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1210 0 R /H /I >> endobj 1520 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.388 707.175 462.508 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 936 0 R /H /I >> endobj 1521 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.918 694.175 408.038 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1157 0 R /H /I >> endobj 1522 0 obj << /Type /Annot /Subtype /Link /Rect [ 384.688 681.175 395.808 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1214 0 R /H /I >> endobj 1523 0 obj << /Type /Annot /Subtype /Link /Rect [ 408.028 668.175 419.148 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1216 0 R /H /I >> endobj 1524 0 obj << /Type /Annot /Subtype /Link /Rect [ 471.378 642.175 482.498 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 921 0 R /H /I >> endobj 1525 0 obj << /Type /Annot /Subtype /Link /Rect [ 385.248 629.175 396.368 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1204 0 R /H /I >> endobj 1526 0 obj << /Type /Annot /Subtype /Link /Rect [ 436.938 616.175 448.058 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1225 0 R /H /I >> endobj 1527 0 obj << /Type /Annot /Subtype /Link /Rect [ 398.578 603.175 409.698 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1163 0 R /H /I >> endobj 1528 0 obj << /Type /Annot /Subtype /Link /Rect [ 457.388 590.175 462.948 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1529 0 obj << /Type /Annot /Subtype /Link /Rect [ 410.468 564.175 421.588 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1074 0 R /H /I >> endobj 1530 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 509.071 496.618 518.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 947 0 R /H /I >> endobj 1531 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.818 470.071 441.938 479.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 779 0 R /H /I >> endobj 1532 0 obj << /Type /Action /S /GoTo /D [236 0 R /XYZ 53.858 327.625 null] >> endobj 1533 0 obj << /Type /Annot /Subtype /Link /Rect [ 397.708 444.071 408.828 453.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1532 0 R /H /I >> endobj 1534 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 66.638 477.425 null] >> endobj 1535 0 obj << /Type /Annot /Subtype /Link /Rect [ 442.148 418.071 447.708 427.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1534 0 R /H /I >> endobj 1536 0 obj << /Type /Action /S /GoTo /D [57 0 R /XYZ 66.638 513.425 null] >> endobj 1537 0 obj << /Type /Annot /Subtype /Link /Rect [ 442.148 392.071 447.708 401.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1536 0 R /H /I >> endobj 1538 0 obj << /Type /Annot /Subtype /Link /Rect [ 403.818 366.071 409.378 375.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 956 0 R /H /I >> endobj 1539 0 obj << /Type /Annot /Subtype /Link /Rect [ 402.928 353.071 414.048 362.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1228 0 R /H /I >> endobj 1540 0 obj << /Type /Action /S /GoTo /D [149 0 R /XYZ 53.858 703.525 null] >> endobj 1541 0 obj << /Type /Annot /Subtype /Link /Rect [ 407.148 340.071 418.268 349.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1540 0 R /H /I >> endobj 1542 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 624.159 null] >> endobj 1543 0 obj << /Type /Annot /Subtype /Link /Rect [ 397.148 327.071 408.268 336.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1542 0 R /H /I >> endobj 1544 0 obj << /Type /Action /S /GoTo /D [259 0 R /XYZ 53.858 169.425 null] >> endobj 1545 0 obj << /Type /Annot /Subtype /Link /Rect [ 396.028 314.071 407.148 323.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1544 0 R /H /I >> endobj 1546 0 obj << /Type /Action /S /GoTo /D [151 0 R /XYZ 87.874 328.589 null] >> endobj 1547 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.478 301.071 441.598 310.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1546 0 R /H /I >> endobj 1548 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.588 275.071 397.708 284.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1184 0 R /H /I >> endobj 1549 0 obj << /Type /Annot /Subtype /Link /Rect [ 504.178 236.071 515.298 245.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1020 0 R /H /I >> endobj 1550 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 210.071 496.618 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1096 0 R /H /I >> endobj 1551 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 184.071 496.618 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1110 0 R /H /I >> endobj 1552 0 obj << /Type /Annot /Subtype /Link /Rect [ 502.178 184.071 513.298 193.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1110 0 R /H /I >> endobj 1553 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.818 145.071 441.938 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 774 0 R /H /I >> endobj 1554 0 obj << /Type /Annot /Subtype /Link /Rect [ 392.368 132.071 397.928 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1251 0 R /H /I >> endobj 1555 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.588 106.071 397.708 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1186 0 R /H /I >> endobj 1556 0 obj << /Type /Annot /Subtype /Link /Rect [ 485.498 80.071 496.618 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1125 0 R /H /I >> endobj 1557 0 obj << /Length 1558 0 R /Filter /FlateDecode >> stream xZKsFWѮyn*ڽ즬T $$`9_=GwSrE=/ׅݤyE[zxDgEnՙSWڸL+fVlυG:/O6⿋v!? O܉yutX~O#Wv>':I ,a.vȔ{dgߞ_|A9Εe=o1RorEeOVowۏ`Z)V(˼R*WwsNk*q?+?ߡ#,Ӂ뗢8T1-F+u J3 +Kpn"RR ?eBkڦ]U ࡩh}wM;uHR]5|~OZ~vm[Oqj/b7!%;[R]h}in:|\ Nt9M+)aAoK0RCBڂGBp}ZrB%Q!$ge}q:BZ#qqIV}_=n*.ʬ@'ayэ]7K>lVf0L,BkW{H[Lb)ä|ZK`Rbvyj!Mmg1]92=&ƾ> RA!%vS-84`/&"3 ET) xψ"*1h쩯QTQ`nj6_g+H@@ADm]l P1&um3tEkl *! ʊ!^@[b ZS:_4CR*SnѢJcj2!ך뜡f,3X*btcReXcz Sdg炒X WBޥmI]Hƶ 5ׅM*ە/7_'1 o Q!opNa&nߵl*:6/A=zM:Of ʓCRFki7wHa~^wW$c{=L95 Ec H.QKL1ո}=+˩1˗ lbD?Rr(Je^?XȮݗXTl=馘-olGBud8فh88 Zu p5<847hy3'A*cP<‹m_BLAmFm>q<-$BO6Hxuf)<<5Dh'Vؓql6@Nz4#J8 zW[j_%ђV=ظ+YiH5p}Dp9ӓcs1mh¿V(]d&- F-)q!!P>mQLBq bָ8~h:{i3T EA4<9}CA9fRi ؇F)ZF~iS5dKM[SFHzv$i2⑆'mJS+"0m t)h2v/p3{iEe puėзiu]}M3dꊭS$8 f&dG0;Q% 2\w>U{!䘣QY<8s5CuTΈ3Q0 bg\*)>UdsDR\& S &BƟͫa&Ѫcvf[7fxdCS9%$i 5x2,姶qS GPrw]O>[m’1Um P MEjN̐]B=/S8eIs?j̙K̘j6fBy 4t3 *tG>@axa: [e8Jz**_aIB SIs>1W^Mg,H~ҡq*J7/a^Ӹۊ*ϼsk8ש`Ho; {-J/7^WbQTKzM$FA 17 M2ǀ$6˓M endstream endobj 1558 0 obj 2139 endobj 1559 0 obj [ 1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R 1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1512 0 R 1513 0 R 1514 0 R 1515 0 R 1517 0 R 1518 0 R 1519 0 R 1520 0 R 1521 0 R 1522 0 R 1523 0 R 1524 0 R 1525 0 R 1526 0 R 1527 0 R 1528 0 R 1529 0 R 1530 0 R 1531 0 R 1533 0 R 1535 0 R 1537 0 R 1538 0 R 1539 0 R 1541 0 R 1543 0 R 1545 0 R 1547 0 R 1548 0 R 1549 0 R 1550 0 R 1551 0 R 1552 0 R 1553 0 R 1554 0 R 1555 0 R 1556 0 R ] endobj 1560 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 1559 0 R /Contents 1557 0 R >> endobj 1561 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.438 707.175 122.558 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1188 0 R /H /I >> endobj 1562 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 681.175 221.468 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1094 0 R /H /I >> endobj 1563 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 655.175 221.468 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 1564 0 obj << /Type /Annot /Subtype /Link /Rect [ 101.988 629.175 113.108 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1059 0 R /H /I >> endobj 1565 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 603.175 221.468 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1127 0 R /H /I >> endobj 1566 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 577.175 221.468 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1129 0 R /H /I >> endobj 1567 0 obj << /Type /Annot /Subtype /Link /Rect [ 227.028 577.175 238.148 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1131 0 R /H /I >> endobj 1568 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 538.175 166.788 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1569 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.668 499.175 166.788 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 749 0 R /H /I >> endobj 1570 0 obj << /Type /Annot /Subtype /Link /Rect [ 103.328 486.175 114.448 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1051 0 R /H /I >> endobj 1571 0 obj << /Type /Action /S /GoTo /D [465 0 R /XYZ 53.858 546.825 null] >> endobj 1572 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.008 486.175 131.128 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1571 0 R /H /I >> endobj 1573 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 460.175 221.468 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1574 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 434.175 221.468 443.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1113 0 R /H /I >> endobj 1575 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 408.175 221.468 417.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 911 0 R /H /I >> endobj 1576 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 382.175 221.468 391.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 971 0 R /H /I >> endobj 1577 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.348 356.175 221.468 365.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1135 0 R /H /I >> endobj 1578 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.028 317.175 240.148 326.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1016 0 R /H /I >> endobj 1579 0 obj << /Type /Annot /Subtype /Link /Rect [ 229.028 278.175 240.148 287.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1580 0 obj << /Type /Annot /Subtype /Link /Rect [ 111.438 223.071 122.558 232.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1191 0 R /H /I >> endobj 1581 0 obj << /Type /Annot /Subtype /Link /Rect [ 104.428 210.071 109.988 219.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 741 0 R /H /I >> endobj 1582 0 obj << /Type /Annot /Subtype /Link /Rect [ 99.428 197.071 104.988 206.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 980 0 R /H /I >> endobj 1583 0 obj << /Type /Annot /Subtype /Link /Rect [ 176.438 171.071 187.558 180.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1026 0 R /H /I >> endobj 1584 0 obj << /Type /Annot /Subtype /Link /Rect [ 211.278 158.071 222.398 167.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 733 0 R /H /I >> endobj 1585 0 obj << /Type /Annot /Subtype /Link /Rect [ 176.238 145.071 187.358 154.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 737 0 R /H /I >> endobj 1586 0 obj << /Type /Annot /Subtype /Link /Rect [ 126.218 132.071 137.338 141.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 944 0 R /H /I >> endobj 1587 0 obj << /Type /Annot /Subtype /Link /Rect [ 138.438 119.071 149.558 128.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 990 0 R /H /I >> endobj 1588 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.008 106.071 200.128 115.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1032 0 R /H /I >> endobj 1589 0 obj << /Type /Annot /Subtype /Link /Rect [ 195.678 93.071 206.798 102.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1034 0 R /H /I >> endobj 1590 0 obj << /Type /Annot /Subtype /Link /Rect [ 257.368 80.071 268.488 89.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1036 0 R /H /I >> endobj 1591 0 obj << /Type /Annot /Subtype /Link /Rect [ 191.808 67.071 202.928 76.321 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1038 0 R /H /I >> endobj 1592 0 obj << /Type /Action /S /GoTo /D [69 0 R /XYZ 87.874 687.1 null] >> endobj 1593 0 obj << /Type /Annot /Subtype /Link /Rect [ 472.822 707.175 483.942 716.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1592 0 R /H /I >> endobj 1594 0 obj << /Type /Annot /Subtype /Link /Rect [ 364.792 694.175 375.912 703.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 743 0 R /H /I >> endobj 1595 0 obj << /Type /Annot /Subtype /Link /Rect [ 363.692 681.175 374.812 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1040 0 R /H /I >> endobj 1596 0 obj << /Type /Annot /Subtype /Link /Rect [ 402.602 668.175 413.722 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1067 0 R /H /I >> endobj 1597 0 obj << /Type /Annot /Subtype /Link /Rect [ 404.802 655.175 415.922 664.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1472 0 R /H /I >> endobj 1598 0 obj << /Type /Annot /Subtype /Link /Rect [ 409.242 629.175 420.362 638.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 999 0 R /H /I >> endobj 1599 0 obj << /Type /Annot /Subtype /Link /Rect [ 490.182 616.175 501.302 625.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 1600 0 obj << /Type /Annot /Subtype /Link /Rect [ 502.952 603.175 514.072 612.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1002 0 R /H /I >> endobj 1601 0 obj << /Type /Annot /Subtype /Link /Rect [ 491.812 590.175 502.932 599.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1602 0 obj << /Type /Annot /Subtype /Link /Rect [ 372.352 577.175 383.472 586.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1006 0 R /H /I >> endobj 1603 0 obj << /Type /Annot /Subtype /Link /Rect [ 469.042 564.175 480.162 573.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1004 0 R /H /I >> endobj 1604 0 obj << /Type /Annot /Subtype /Link /Rect [ 382.342 551.175 393.462 560.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1009 0 R /H /I >> endobj 1605 0 obj << /Type /Annot /Subtype /Link /Rect [ 432.942 538.175 444.062 547.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1011 0 R /H /I >> endobj 1606 0 obj << /Type /Annot /Subtype /Link /Rect [ 401.802 525.175 412.922 534.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 745 0 R /H /I >> endobj 1607 0 obj << /Type /Annot /Subtype /Link /Rect [ 395.682 512.175 406.802 521.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1014 0 R /H /I >> endobj 1608 0 obj << /Type /Annot /Subtype /Link /Rect [ 444.032 499.175 455.152 508.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1016 0 R /H /I >> endobj 1609 0 obj << /Type /Annot /Subtype /Link /Rect [ 429.042 486.175 440.162 495.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1018 0 R /H /I >> endobj 1610 0 obj << /Type /Annot /Subtype /Link /Rect [ 487.942 473.175 499.062 482.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1020 0 R /H /I >> endobj 1611 0 obj << /Type /Annot /Subtype /Link /Rect [ 450.162 460.175 461.282 469.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1022 0 R /H /I >> endobj 1612 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.652 447.175 481.772 456.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1024 0 R /H /I >> endobj 1613 0 obj << /Type /Annot /Subtype /Link /Rect [ 352.332 408.175 363.452 417.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 803 0 R /H /I >> endobj 1614 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 369.175 481.282 378.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 1615 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 330.175 481.282 339.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1018 0 R /H /I >> endobj 1616 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 291.175 481.282 300.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1020 0 R /H /I >> endobj 1617 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 252.175 481.282 261.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1022 0 R /H /I >> endobj 1618 0 obj << /Type /Annot /Subtype /Link /Rect [ 470.162 213.175 481.282 222.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 994 0 R /H /I >> endobj 1619 0 obj << /Type /Annot /Subtype /Link /Rect [ 369.252 187.175 374.812 196.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1360 0 R /H /I >> endobj 1620 0 obj << /Type /Annot /Subtype /Link /Rect [ 430.922 174.175 436.482 183.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1621 0 obj << /Type /Annot /Subtype /Link /Rect [ 469.282 161.175 474.842 170.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1413 0 R /H /I >> endobj 1622 0 obj << /Type /Annot /Subtype /Link /Rect [ 331.452 148.175 337.012 157.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1623 0 obj << /Type /Annot /Subtype /Link /Rect [ 347.572 135.175 353.132 144.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1480 0 R /H /I >> endobj 1624 0 obj << /Type /Annot /Subtype /Link /Rect [ 345.902 122.175 351.462 131.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1415 0 R /H /I >> endobj 1625 0 obj << /Type /Annot /Subtype /Link /Rect [ 345.342 109.175 350.902 118.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1487 0 R /H /I >> endobj 1626 0 obj << /Type /Annot /Subtype /Link /Rect [ 468.942 96.175 480.062 105.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1074 0 R /H /I >> endobj 1627 0 obj << /Type /Annot /Subtype /Link /Rect [ 451.482 70.175 462.602 79.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 982 0 R /H /I >> endobj 1628 0 obj << /Length 1629 0 R /Filter /FlateDecode >> stream xZKo6W($ERRomm@wQl-ش#D$g;X挳:E83?B0_WWIwq)i$cXq3" ~E9"iq\ ~Y/<]sfgА,ZsX-MMx}=_`/><=|^P&3FuBK`aSoREB |د'nu*P,3zl#,wrĕBs3064(d-2VgH 2K=uA5=!P7I!w~ aON0&áu7g700[_ꦇ*v&%"7Lĉ }i֭4-NDWf`ղi:J<%ov7$$X*E筸}dA>~ͻ~ZZđx" Cgea66o_ygQ0J'%AnY-ClShh[`*wqx PI_0w6kDl825MM=fc=O)-$V>u_YfI1$Qi%Sb&w˻~pYC\cI 3;{`~ʛ4ڕV)tL;QZw!P Nf6v5č-;څ u Πya+:HMKƎ r0^g-g[ex8OxKr?JEa;lQ A7ynzC(R(D&dވ7a؏קFns(19 o㖕ZQ*m^{s!-7&S%G(`Dr_a]B-J@xƾ*!١aLMwCh6es Aqq0,@"f&;3b5ujXK9"/,*0)4ԐM>!Cl>w_M5:"2y I{εzvh糯!~[ wo`w/!oW ie1~AkVExQC'RLc*`>lha;]:A$E,B#XL ?Nk'.QIL|bDѹ.}*:d9:̈s5a\d-B#X%8w|mQRc*EgyqMhDk&L-$hCx끯R(B6< u}lI}&Y wa^ΝϥVw9'I2M-2ӄE/6RSB2( 79(,! OY )0 B|6}pz(1" endstream endobj 1629 0 obj 2196 endobj 1630 0 obj [ 1561 0 R 1562 0 R 1563 0 R 1564 0 R 1565 0 R 1566 0 R 1567 0 R 1568 0 R 1569 0 R 1570 0 R 1572 0 R 1573 0 R 1574 0 R 1575 0 R 1576 0 R 1577 0 R 1578 0 R 1579 0 R 1580 0 R 1581 0 R 1582 0 R 1583 0 R 1584 0 R 1585 0 R 1586 0 R 1587 0 R 1588 0 R 1589 0 R 1590 0 R 1591 0 R 1593 0 R 1594 0 R 1595 0 R 1596 0 R 1597 0 R 1598 0 R 1599 0 R 1600 0 R 1601 0 R 1602 0 R 1603 0 R 1604 0 R 1605 0 R 1606 0 R 1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R 1613 0 R 1614 0 R 1615 0 R 1616 0 R 1617 0 R 1618 0 R 1619 0 R 1620 0 R 1621 0 R 1622 0 R 1623 0 R 1624 0 R 1625 0 R 1626 0 R 1627 0 R ] endobj 1631 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 1630 0 R /Contents 1628 0 R >> endobj 1632 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 681.175 200.804 690.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 739 0 R /H /I >> endobj 1633 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 87.874 687.1 null] >> endobj 1634 0 obj << /Type /Annot /Subtype /Link /Rect [ 172.344 668.175 177.904 677.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1633 0 R /H /I >> endobj 1635 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 642.175 255.484 651.425 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1137 0 R /H /I >> endobj 1636 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.684 587.455 188.804 596.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 747 0 R /H /I >> endobj 1637 0 obj << /Type /Annot /Subtype /Link /Rect [ 263.044 548.455 274.164 557.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1024 0 R /H /I >> endobj 1638 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 509.455 166.904 518.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1225 0 R /H /I >> endobj 1639 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 470.455 166.904 479.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1163 0 R /H /I >> endobj 1640 0 obj << /Type /Annot /Subtype /Link /Rect [ 130.444 444.455 141.564 453.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1292 0 R /H /I >> endobj 1641 0 obj << /Type /Annot /Subtype /Link /Rect [ 147.454 418.455 158.574 427.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 713 0 R /H /I >> endobj 1642 0 obj << /Type /Annot /Subtype /Link /Rect [ 149.114 405.455 160.234 414.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 715 0 R /H /I >> endobj 1643 0 obj << /Type /Annot /Subtype /Link /Rect [ 165.794 405.455 176.914 414.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 717 0 R /H /I >> endobj 1644 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 366.455 200.804 375.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 779 0 R /H /I >> endobj 1645 0 obj << /Type /Annot /Subtype /Link /Rect [ 136.004 340.455 147.124 349.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1063 0 R /H /I >> endobj 1646 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 301.455 200.804 310.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 784 0 R /H /I >> endobj 1647 0 obj << /Type /Annot /Subtype /Link /Rect [ 189.684 262.455 200.804 271.705 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 759 0 R /H /I >> endobj 1648 0 obj << /Type /Annot /Subtype /Link /Rect [ 155.784 194.735 166.904 203.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1216 0 R /H /I >> endobj 1649 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 155.735 255.484 164.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1121 0 R /H /I >> endobj 1650 0 obj << /Type /Annot /Subtype /Link /Rect [ 177.904 142.735 189.024 151.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1065 0 R /H /I >> endobj 1651 0 obj << /Type /Annot /Subtype /Link /Rect [ 244.364 116.735 255.484 125.985 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1100 0 R /H /I >> endobj 1652 0 obj << /Length 1653 0 R /Filter /FlateDecode >> stream xX[o6~C&@*{u1%%w;"Y!@dS;:߹Va(*շA  jy21f ;+O8{8Y?}x@V _Wi}_ܭ~ml:9Ư>_ Z(?'Y&=c29GZP!WƠow㠇УQhFW^^7qhk3SI;c]dVBHNe /?&wn0Z'< 1EsyVfO2bs;Mdۣiȕ '@qpUKYvj< f&<9BȤ> ,= i5F -ȕb,d)׶_!c۾P5Z|x0S𥒝8nK3r! 5!0kr`[+ˋm_`/'Ql :6Buwnc9$ʓ| ?b:@@yPlR7ߐQD$D hR7ڧ2HN&o>=TbDdW[즎FM+*Hwe?vCdP(|7,X OY3M2ʽ漈A<,wI3? 1I,>⊤"hP'od$nG_ө.XuWZ4JZЉ殙pWl i9X~mݘ? &R50! Q2Ɛx\"n7gC c;6`l.8(KAiL$'-4n]nA\ /؛ȇpp?l"4?>`JB?Ik~8 40 ( gMFy{xD)% ls1umHv꺩>.}ޏXjo;ceO}𭛪ԶФ}"$Zcl=w3Ѓ}u]jCo/f{"e=K/# :e" endstream endobj 1653 0 obj 1172 endobj 1654 0 obj [ 1632 0 R 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R 1639 0 R 1640 0 R 1641 0 R 1642 0 R 1643 0 R 1644 0 R 1645 0 R 1646 0 R 1647 0 R 1648 0 R 1649 0 R 1650 0 R 1651 0 R ] endobj 1655 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Annots 1654 0 R /Contents 1652 0 R >> endobj 1656 0 obj << /Length 1657 0 R /Filter /FlateDecode >> stream xT0 `'uӮHwHl"1 &NEb!唆U=}u{Fko-:8H5퐲N !WƊ=1b9?4QM Xp  \n7H(|Y]S^G^5&w9QP?&^5̐a[|1dd{ ,"m *4(@xeŗ$ zVgݬ?Sz.sՎNi6O endstream endobj 1657 0 obj 261 endobj 1658 0 obj << /Resources 10 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 11 0 R /Contents 1656 0 R >> endobj 1659 0 obj << /Type /Action /S /GoTo /D [9 0 R /XYZ 87.874 718.3 null] >> endobj 1660 0 obj << /Title (SystemTap Beginners Guide) /Parent 1661 0 R /Next 1662 0 R /A 1659 0 R >> endobj 1663 0 obj << /Type /Action /S /GoTo /D [400 0 R /XYZ 87.874 718.3 null] >> endobj 1662 0 obj << /Title (Table of Contents) /Parent 1661 0 R /Prev 1660 0 R /Next 1664 0 R /A 1663 0 R >> endobj 1664 0 obj << /Title (Preface) /Parent 1661 0 R /Prev 1662 0 R /Next 1665 0 R /First 1666 0 R /Last 1667 0 R /Count -5 /A 269 0 R >> endobj 1666 0 obj << /Title /Parent 1664 0 R /Next 1667 0 R /First 1668 0 R /Last 1669 0 R /Count -3 /A 272 0 R >> endobj 1668 0 obj << /Title /Parent 1666 0 R /Next 1670 0 R /A 275 0 R >> endobj 1670 0 obj << /Title /Parent 1666 0 R /Prev 1668 0 R /Next 1669 0 R /A 278 0 R >> endobj 1669 0 obj << /Title /Parent 1666 0 R /Prev 1670 0 R /A 281 0 R >> endobj 1667 0 obj << /Title /Parent 1664 0 R /Prev 1666 0 R /A 284 0 R >> endobj 1665 0 obj << /Title /Parent 1661 0 R /Prev 1664 0 R /Next 1671 0 R /First 1672 0 R /Last 1673 0 R /Count -3 /A 288 0 R >> endobj 1672 0 obj << /Title /Parent 1665 0 R /Next 1674 0 R /A 291 0 R >> endobj 1674 0 obj << /Title /Parent 1665 0 R /Prev 1672 0 R /Next 1673 0 R /A 294 0 R >> endobj 1673 0 obj << /Title /Parent 1665 0 R /Prev 1674 0 R /A 297 0 R >> endobj 1671 0 obj << /Title /Parent 1661 0 R /Prev 1665 0 R /Next 1675 0 R /First 1676 0 R /Last 1677 0 R /Count -9 /A 299 0 R >> endobj 1676 0 obj << /Title /Parent 1671 0 R /Next 1678 0 R /First 1679 0 R /Last 1680 0 R /Count -3 /A 74 0 R >> endobj 1679 0 obj << /Title /Parent 1676 0 R /Next 1681 0 R /A 48 0 R >> endobj 1681 0 obj << /Title /Parent 1676 0 R /Prev 1679 0 R /Next 1680 0 R /A 51 0 R >> endobj 1680 0 obj << /Title /Parent 1676 0 R /Prev 1681 0 R /A 308 0 R >> endobj 1678 0 obj << /Title /Parent 1671 0 R /Prev 1676 0 R /Next 1677 0 R /A 122 0 R >> endobj 1677 0 obj << /Title /Parent 1671 0 R /Prev 1678 0 R /First 1682 0 R /Last 1682 0 R /Count -3 /A 313 0 R >> endobj 1682 0 obj << /Title /Parent 1677 0 R /First 1683 0 R /Last 1684 0 R /Count -2 /A 117 0 R >> endobj 1683 0 obj << /Title /Parent 1682 0 R /Next 1684 0 R /A 318 0 R >> endobj 1684 0 obj << /Title /Parent 1682 0 R /Prev 1683 0 R /A 321 0 R >> endobj 1675 0 obj << /Title /Parent 1661 0 R /Prev 1671 0 R /Next 1685 0 R /First 1686 0 R /Last 1687 0 R /Count -22 /A 80 0 R >> endobj 1686 0 obj << /Title /Parent 1675 0 R /Next 1688 0 R /A 72 0 R >> endobj 1688 0 obj << /Title /Parent 1675 0 R /Prev 1686 0 R /Next 1689 0 R /First 1690 0 R /Last 1691 0 R /Count -2 /A 328 0 R >> endobj 1690 0 obj << /Title /Parent 1688 0 R /Next 1691 0 R /A 241 0 R >> endobj 1691 0 obj << /Title /Parent 1688 0 R /Prev 1690 0 R /A 333 0 R >> endobj 1689 0 obj << /Title /Parent 1675 0 R /Prev 1688 0 R /Next 1692 0 R /First 1693 0 R /Last 1694 0 R /Count -7 /A 336 0 R >> endobj 1693 0 obj << /Title /Parent 1689 0 R /Next 1695 0 R /A 339 0 R >> endobj 1695 0 obj << /Title /Parent 1689 0 R /Prev 1693 0 R /Next 1696 0 R /First 1697 0 R /Last 1698 0 R /Count -3 /A 253 0 R >> endobj 1697 0 obj << /Title /Parent 1695 0 R /Next 1699 0 R /A 344 0 R >> endobj 1699 0 obj << /Title /Parent 1695 0 R /Prev 1697 0 R /Next 1698 0 R /A 347 0 R >> endobj 1698 0 obj << /Title /Parent 1695 0 R /Prev 1699 0 R /A 350 0 R >> endobj 1696 0 obj << /Title /Parent 1689 0 R /Prev 1695 0 R /Next 1694 0 R /A 353 0 R >> endobj 1694 0 obj << /Title /Parent 1689 0 R /Prev 1696 0 R /A 356 0 R >> endobj 1692 0 obj << /Title /Parent 1675 0 R /Prev 1689 0 R /Next 1700 0 R /A 360 0 R >> endobj 1700 0 obj << /Title /Parent 1675 0 R /Prev 1692 0 R /Next 1687 0 R /First 1701 0 R /Last 1702 0 R /Count -7 /A 363 0 R >> endobj 1701 0 obj << /Title /Parent 1700 0 R /Next 1703 0 R /A 178 0 R >> endobj 1703 0 obj << /Title /Parent 1700 0 R /Prev 1701 0 R /Next 1704 0 R /A 367 0 R >> endobj 1704 0 obj << /Title /Parent 1700 0 R /Prev 1703 0 R /Next 1705 0 R /A 370 0 R >> endobj 1705 0 obj << /Title /Parent 1700 0 R /Prev 1704 0 R /Next 1706 0 R /A 200 0 R >> endobj 1706 0 obj << /Title /Parent 1700 0 R /Prev 1705 0 R /Next 1707 0 R /A 213 0 R >> endobj 1707 0 obj << /Title /Parent 1700 0 R /Prev 1706 0 R /Next 1702 0 R /A 377 0 R >> endobj 1702 0 obj << /Title /Parent 1700 0 R /Prev 1707 0 R /A 380 0 R >> endobj 1687 0 obj << /Title /Parent 1675 0 R /Prev 1700 0 R /A 383 0 R >> endobj 1685 0 obj << /Title /Parent 1661 0 R /Prev 1675 0 R /Next 1708 0 R /First 1709 0 R /Last 1710 0 R /Count -3 /A 386 0 R >> endobj 1709 0 obj << /Title /Parent 1685 0 R /Next 1711 0 R /A 389 0 R >> endobj 1711 0 obj << /Title /Parent 1685 0 R /Prev 1709 0 R /Next 1710 0 R /A 260 0 R >> endobj 1710 0 obj << /Title /Parent 1685 0 R /Prev 1711 0 R /A 394 0 R >> endobj 1708 0 obj << /Title /Parent 1661 0 R /Prev 1685 0 R /Next 1712 0 R /First 1713 0 R /Last 1714 0 R /Count -22 /A 411 0 R >> endobj 1713 0 obj << /Title /Parent 1708 0 R /Next 1715 0 R /First 1716 0 R /Last 1717 0 R /Count -5 /A 812 0 R >> endobj 1716 0 obj << /Title /Parent 1713 0 R /Next 1718 0 R /A 815 0 R >> endobj 1718 0 obj << /Title /Parent 1713 0 R /Prev 1716 0 R /Next 1719 0 R /A 818 0 R >> endobj 1719 0 obj << /Title /Parent 1713 0 R /Prev 1718 0 R /Next 1720 0 R /A 821 0 R >> endobj 1720 0 obj << /Title /Parent 1713 0 R /Prev 1719 0 R /Next 1717 0 R /A 824 0 R >> endobj 1717 0 obj << /Title /Parent 1713 0 R /Prev 1720 0 R /A 827 0 R >> endobj 1715 0 obj << /Title /Parent 1708 0 R /Prev 1713 0 R /Next 1721 0 R /First 1722 0 R /Last 1723 0 R /Count -7 /A 830 0 R >> endobj 1722 0 obj << /Title /Parent 1715 0 R /Next 1724 0 R /A 507 0 R >> endobj 1724 0 obj << /Title /Parent 1715 0 R /Prev 1722 0 R /Next 1725 0 R /A 835 0 R >> endobj 1725 0 obj << /Title /Parent 1715 0 R /Prev 1724 0 R /Next 1726 0 R /A 838 0 R >> endobj 1726 0 obj << /Title /Parent 1715 0 R /Prev 1725 0 R /Next 1727 0 R /A 841 0 R >> endobj 1727 0 obj << /Title /Parent 1715 0 R /Prev 1726 0 R /Next 1728 0 R /A 551 0 R >> endobj 1728 0 obj << /Title /Parent 1715 0 R /Prev 1727 0 R /Next 1723 0 R /A 846 0 R >> endobj 1723 0 obj << /Title /Parent 1715 0 R /Prev 1728 0 R /A 849 0 R >> endobj 1721 0 obj << /Title /Parent 1708 0 R /Prev 1715 0 R /Next 1714 0 R /First 1729 0 R /Last 1730 0 R /Count -6 /A 852 0 R >> endobj 1729 0 obj << /Title /Parent 1721 0 R /Next 1731 0 R /A 855 0 R >> endobj 1731 0 obj << /Title /Parent 1721 0 R /Prev 1729 0 R /Next 1732 0 R /A 858 0 R >> endobj 1732 0 obj << /Title /Parent 1721 0 R /Prev 1731 0 R /Next 1733 0 R /A 861 0 R >> endobj 1733 0 obj << /Title /Parent 1721 0 R /Prev 1732 0 R /Next 1734 0 R /A 625 0 R >> endobj 1734 0 obj << /Title /Parent 1721 0 R /Prev 1733 0 R /Next 1730 0 R /A 636 0 R >> endobj 1730 0 obj << /Title /Parent 1721 0 R /Prev 1734 0 R /A 868 0 R >> endobj 1714 0 obj << /Title /Parent 1708 0 R /Prev 1721 0 R /A 871 0 R >> endobj 1712 0 obj << /Title /Parent 1661 0 R /Prev 1708 0 R /Next 1735 0 R /First 1736 0 R /Last 1737 0 R /Count -2 /A 671 0 R >> endobj 1736 0 obj << /Title /Parent 1712 0 R /Next 1737 0 R /A 876 0 R >> endobj 1737 0 obj << /Title /Parent 1712 0 R /Prev 1736 0 R /A 879 0 R >> endobj 1735 0 obj << /Title /Parent 1661 0 R /Prev 1712 0 R /Next 1738 0 R /A 882 0 R >> endobj 1738 0 obj << /Title /Parent 1661 0 R /Prev 1735 0 R /Next 1739 0 R /A 885 0 R >> endobj 1739 0 obj << /Title (Index) /Parent 1661 0 R /Prev 1738 0 R /A 888 0 R >> endobj 1740 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 1741 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 1742 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-BoldOblique /Encoding /WinAnsiEncoding >> endobj 1743 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding >> endobj 1744 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Symbol /ToUnicode 1745 0 R >> endobj 1745 0 obj << /Length 1746 0 R /Filter /FlateDecode >> stream x]Vn6+t#RE |HvN>OgX#>.fu5Y|N߷K~׮ۖky3+|=%w}뵾<. *ou;xnݧ_%_R߶R}#ԗ\^bu){\/; Dz'巌?YPC\<׻/}}{I-#_;6 [G'³^pT8). W (F7JQo~(F7JQo~[v?Cgv<2.x&NQ.qDžx 9'q̑8jX0-y$N =h6Ye-9$}BS\/U8Љ|Eܱ ~ztԓ$zztGúIpe4=A3zYZQ Ϭe-k%g_CV^y+o{m핷W^y+o{m핷W?(A7D;&;Ȃj,Ƃj,Ƃj,Ƃj,Ƃj,e#,rA `(O0DӘ raA'9b c$ưI.Xg:bm:"?b.L&[b־I~@YSf&ubd36 .C؟<'sp#(zK֣a%z<3!h?ŐkΕ<rCPO-c$7C[ȹ*u*u z9Ў7~XhhDo&ƅee8'#r cV<Xi(3 5p9ka|#^KFNǀfFdO=tBG?w^p8r$p8阑.3Rҙ 3Hg. dĞ!=bySOXI<_r'L=OhXG!laҊF+ObI ƀ61ϔ^mP#ԏzYJ endstream endobj 1746 0 obj 1047 endobj 1747 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 1748 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding >> endobj 1749 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 1750 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding >> endobj 1751 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 1752 0 obj << /Limits [(SystemTap_Beginners_Guide-Preface) (SystemTap_Beginners_Guide-Preface)] /Names [(SystemTap_Beginners_Guide-Preface) 269 0 R] >> endobj 1753 0 obj << /Limits [(appe-Publican-Revision_History) (appe-Publican-Revision_History)] /Names [(appe-Publican-Revision_History) 885 0 R] >> endobj 1754 0 obj << /Limits [(arrayoperators) (arrayoperators)] /Names [(arrayoperators) 363 0 R] >> endobj 1755 0 obj << /Limits [(arrayops-aggregates) (arrayops-aggregates)] /Names [(arrayops-aggregates) 380 0 R] >> endobj 1756 0 obj << /Limits [(arrayops-assignvalue) (arrayops-assignvalue)] /Names [(arrayops-assignvalue) 178 0 R] >> endobj 1757 0 obj << /Limits [(arrayops-conditionals) (arrayops-conditionals)] /Names [(arrayops-conditionals) 377 0 R] >> endobj 1758 0 obj << /Limits [(arrayops-deleting) (arrayops-deleting)] /Names [(arrayops-deleting) 213 0 R] >> endobj 1759 0 obj << /Limits [(arrayops-foreach) (arrayops-foreach)] /Names [(arrayops-foreach) 200 0 R] >> endobj 1760 0 obj << /Limits [(arrayops-increment) (arrayops-increment)] /Names [(arrayops-increment) 370 0 R] >> endobj 1761 0 obj << /Limits [(arrayops-readvalues) (arrayops-readvalues)] /Names [(arrayops-readvalues) 367 0 R] >> endobj 1762 0 obj << /Limits [(associativearrays) (associativearrays)] /Names [(associativearrays) 360 0 R] >> endobj 1763 0 obj << /Limits [(commandlineargssect) (commandlineargssect)] /Names [(commandlineargssect) 356 0 R] >> endobj 1764 0 obj << /Limits [(countcallssect) (countcallssect)] /Names [(countcallssect) 855 0 R] >> endobj 1765 0 obj << /Limits [(cross-compiling) (cross-compiling)] /Names [(cross-compiling) 122 0 R] >> endobj 1766 0 obj << /Limits [(disktop) (disktop)] /Names [(disktop) 507 0 R] >> endobj 1767 0 obj << /Limits [(dropwatchsect) (dropwatchsect)] /Names [(dropwatchsect) 827 0 R] >> endobj 1768 0 obj << /Limits [(errors) (errors)] /Names [(errors) 671 0 R] >> endobj 1769 0 obj << /Limits [(file-flight-recorder) (file-flight-recorder)] /Names [(file-flight-recorder) 321 0 R] >> endobj 1770 0 obj << /Limits [(flight-recorder) (flight-recorder)] /Names [(flight-recorder) 117 0 R] >> endobj 1771 0 obj << /Limits [(futexcontentionsect) (futexcontentionsect)] /Names [(futexcontentionsect) 871 0 R] >> endobj 1772 0 obj << /Limits [(goals) (goals)] /Names [(goals) 291 0 R] >> endobj 1773 0 obj << /Limits [(handlerconditionalstatements) (handlerconditionalstatements)] /Names [(handlerconditionalstatements) 353 0 R] >> endobj 1774 0 obj << /Limits [(idm139689841182816) (idm139689841182816)] /Names [(idm139689841182816) 278 0 R] >> endobj 1775 0 obj << /Limits [(idm139689843157584) (idm139689843157584)] /Names [(idm139689843157584) 272 0 R] >> endobj 1776 0 obj << /Limits [(idm139689843885536) (idm139689843885536)] /Names [(idm139689843885536) 284 0 R] >> endobj 1777 0 obj << /Limits [(idm139689843892992) (idm139689843892992)] /Names [(idm139689843892992) 281 0 R] >> endobj 1778 0 obj << /Limits [(idm139689847208768) (idm139689847208768)] /Names [(idm139689847208768) 275 0 R] >> endobj 1779 0 obj << /Limits [(idm139689856055504) (idm139689856055504)] /Names [(idm139689856055504) 888 0 R] >> endobj 1780 0 obj << /Limits [(idm139689856968736) (idm139689856968736)] /Names [(idm139689856968736) 1659 0 R] >> endobj 1781 0 obj << /Limits [(inodewatch2sect) (inodewatch2sect)] /Names [(inodewatch2sect) 846 0 R] >> endobj 1782 0 obj << /Limits [(inodewatchsect) (inodewatchsect)] /Names [(inodewatchsect) 551 0 R] >> endobj 1783 0 obj << /Limits [(install-kinfo) (install-kinfo)] /Names [(install-kinfo) 51 0 R] >> endobj 1784 0 obj << /Limits [(installproper) (installproper)] /Names [(installproper) 48 0 R] >> endobj 1785 0 obj << /Limits [(intro-systemtap-limitations) (intro-systemtap-limitations)] /Names [(intro-systemtap-limitations) 297 0 R] >> endobj 1786 0 obj << /Limits [(intro-systemtap-vs-others) (intro-systemtap-vs-others)] /Names [(intro-systemtap-vs-others) 294 0 R] >> endobj 1787 0 obj << /Limits [(introduction) (introduction)] /Names [(introduction) 288 0 R] >> endobj 1788 0 obj << /Limits [(ioblktimesect) (ioblktimesect)] /Names [(ioblktimesect) 849 0 R] >> endobj 1789 0 obj << /Limits [(iotimesect) (iotimesect)] /Names [(iotimesect) 835 0 R] >> endobj 1790 0 obj << /Limits [(mainsect-disk) (mainsect-disk)] /Names [(mainsect-disk) 830 0 R] >> endobj 1791 0 obj << /Limits [(mainsect-network) (mainsect-network)] /Names [(mainsect-network) 812 0 R] >> endobj 1792 0 obj << /Limits [(mainsect-profiling) (mainsect-profiling)] /Names [(mainsect-profiling) 852 0 R] >> endobj 1793 0 obj << /Limits [(memory-flight-recorder) (memory-flight-recorder)] /Names [(memory-flight-recorder) 318 0 R] >> endobj 1794 0 obj << /Limits [(nettopsect) (nettopsect)] /Names [(nettopsect) 815 0 R] >> endobj 1795 0 obj << /Limits [(paracallgraph) (paracallgraph)] /Names [(paracallgraph) 858 0 R] >> endobj 1796 0 obj << /Limits [(parsetype) (parsetype)] /Names [(parsetype) 876 0 R] >> endobj 1797 0 obj << /Limits [(references) (references)] /Names [(references) 882 0 R] >> endobj 1798 0 obj << /Limits [(runtimeerror) (runtimeerror)] /Names [(runtimeerror) 879 0 R] >> endobj 1799 0 obj << /Limits [(scriptconstructions) (scriptconstructions)] /Names [(scriptconstructions) 336 0 R] >> endobj 1800 0 obj << /Limits [(scripts) (scripts)] /Names [(scripts) 328 0 R] >> endobj 1801 0 obj << /Limits [(sockettracesect) (sockettracesect)] /Names [(sockettracesect) 818 0 R] >> endobj 1802 0 obj << /Limits [(syscallsbyprocpidsect) (syscallsbyprocpidsect)] /Names [(syscallsbyprocpidsect) 868 0 R] >> endobj 1803 0 obj << /Limits [(systemtapscript-events) (systemtapscript-events)] /Names [(systemtapscript-events) 241 0 R] >> endobj 1804 0 obj << /Limits [(systemtapscript-handler) (systemtapscript-handler)] /Names [(systemtapscript-handler) 333 0 R] >> endobj 1805 0 obj << /Limits [(targetavailable) (targetavailable)] /Names [(targetavailable) 350 0 R] >> endobj 1806 0 obj << /Limits [(targetprettyprinting) (targetprettyprinting)] /Names [(targetprettyprinting) 344 0 R] >> endobj 1807 0 obj << /Limits [(targetvariables) (targetvariables)] /Names [(targetvariables) 253 0 R] >> endobj 1808 0 obj << /Limits [(tcpconnectionssect) (tcpconnectionssect)] /Names [(tcpconnectionssect) 821 0 R] >> endobj 1809 0 obj << /Limits [(tcpdumplikesect) (tcpdumplikesect)] /Names [(tcpdumplikesect) 824 0 R] >> endobj 1810 0 obj << /Limits [(testing) (testing)] /Names [(testing) 308 0 R] >> endobj 1811 0 obj << /Limits [(threadtimessect) (threadtimessect)] /Names [(threadtimessect) 861 0 R] >> endobj 1812 0 obj << /Limits [(timeoutssect) (timeoutssect)] /Names [(timeoutssect) 625 0 R] >> endobj 1813 0 obj << /Limits [(topsyssect) (topsyssect)] /Names [(topsyssect) 636 0 R] >> endobj 1814 0 obj << /Limits [(traceio2sect) (traceio2sect)] /Names [(traceio2sect) 841 0 R] >> endobj 1815 0 obj << /Limits [(traceiosect) (traceiosect)] /Names [(traceiosect) 838 0 R] >> endobj 1816 0 obj << /Limits [(typecasting) (typecasting)] /Names [(typecasting) 347 0 R] >> endobj 1817 0 obj << /Limits [(uevents) (uevents)] /Names [(uevents) 389 0 R] >> endobj 1818 0 obj << /Limits [(understanding-architecture-tools) (understanding-architecture-tools)] /Names [(understanding-architecture-tools) 72 0 R] >> endobj 1819 0 obj << /Limits [(understanding-how-systemtap-works) (understanding-how-systemtap-works)] /Names [(understanding-how-systemtap-works) 80 0 R] >> endobj 1820 0 obj << /Limits [(understanding-tapsets) (understanding-tapsets)] /Names [(understanding-tapsets) 383 0 R] >> endobj 1821 0 obj << /Limits [(useful-systemtap-scripts) (useful-systemtap-scripts)] /Names [(useful-systemtap-scripts) 411 0 R] >> endobj 1822 0 obj << /Limits [(userspace-probing) (userspace-probing)] /Names [(userspace-probing) 386 0 R] >> endobj 1823 0 obj << /Limits [(using-setup) (using-setup)] /Names [(using-setup) 74 0 R] >> endobj 1824 0 obj << /Limits [(using-systemtap) (using-systemtap)] /Names [(using-systemtap) 299 0 R] >> endobj 1825 0 obj << /Limits [(using-usage) (using-usage)] /Names [(using-usage) 313 0 R] >> endobj 1826 0 obj << /Limits [(ustack) (ustack)] /Names [(ustack) 394 0 R] >> endobj 1827 0 obj << /Limits [(utargetvariable) (utargetvariable)] /Names [(utargetvariable) 260 0 R] >> endobj 1828 0 obj << /Limits [(variablesconstructs) (variablesconstructs)] /Names [(variablesconstructs) 339 0 R] >> endobj 1829 0 obj << /Limits [(SystemTap_Beginners_Guide-Preface) (variablesconstructs)] /Kids [1752 0 R 1753 0 R 1754 0 R 1755 0 R 1756 0 R 1757 0 R 1758 0 R 1759 0 R 1760 0 R 1761 0 R 1762 0 R 1763 0 R 1764 0 R 1765 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1773 0 R 1774 0 R 1775 0 R 1776 0 R 1777 0 R 1778 0 R 1779 0 R 1780 0 R 1781 0 R 1782 0 R 1783 0 R 1784 0 R 1785 0 R 1786 0 R 1787 0 R 1788 0 R 1789 0 R 1790 0 R 1791 0 R 1792 0 R 1793 0 R 1794 0 R 1795 0 R 1796 0 R 1797 0 R 1798 0 R 1799 0 R 1800 0 R 1801 0 R 1802 0 R 1803 0 R 1804 0 R 1805 0 R 1806 0 R 1807 0 R 1808 0 R 1809 0 R 1810 0 R 1811 0 R 1812 0 R 1813 0 R 1814 0 R 1815 0 R 1816 0 R 1817 0 R 1818 0 R 1819 0 R 1820 0 R 1821 0 R 1822 0 R 1823 0 R 1824 0 R 1825 0 R 1826 0 R 1827 0 R 1828 0 R] >> endobj 11 0 obj << /Type /Pages /Count 94 /Kids [9 0 R 19 0 R 400 0 R 894 0 R 26 0 R 29 0 R 32 0 R 38 0 R 410 0 R 41 0 R 44 0 R 47 0 R 79 0 R 57 0 R 60 0 R 677 0 R 118 0 R 63 0 R 69 0 R 85 0 R 416 0 R 87 0 R 97 0 R 109 0 R 116 0 R 129 0 R 135 0 R 141 0 R 265 0 R 149 0 R 151 0 R 159 0 R 165 0 R 483 0 R 174 0 R 187 0 R 195 0 R 207 0 R 219 0 R 225 0 R 227 0 R 236 0 R 252 0 R 259 0 R 268 0 R 403 0 R 405 0 R 424 0 R 434 0 R 450 0 R 457 0 R 465 0 R 472 0 R 482 0 R 490 0 R 501 0 R 514 0 R 520 0 R 530 0 R 532 0 R 540 0 R 549 0 R 570 0 R 576 0 R 586 0 R 597 0 R 599 0 R 611 0 R 618 0 R 620 0 R 632 0 R 644 0 R 654 0 R 660 0 R 670 0 R 680 0 R 683 0 R 686 0 R 700 0 R 703 0 R 709 0 R 712 0 R 809 0 R 977 0 R 1105 0 R 1202 0 R 1274 0 R 1327 0 R 1399 0 R 1486 0 R 1560 0 R 1631 0 R 1655 0 R 1658 0 R ] >> endobj 1830 0 obj << /Type /Catalog /Pages 11 0 R /Lang (en) /Metadata 5 0 R /PageLabels 1831 0 R /Outlines 1661 0 R /PageMode /UseOutlines /Names 1832 0 R >> endobj 10 0 obj << /Font << /F9 1740 0 R /F10 1741 0 R /F12 1742 0 R /F11 1743 0 R /F13 1744 0 R /F1 1747 0 R /F2 1748 0 R /F3 1749 0 R /F4 1750 0 R /F5 1751 0 R >> /ProcSet [/PDF /ImageB /ImageC /Text] /ColorSpace << /DefaultRGB 4 0 R >> >> endobj 1831 0 obj << /Nums [0 << /S /r >> 2 << /S /r /St 3 >> 3 << /S /r /St 4 >> 4 << /S /r /St 5 >> 8 << /S /D >> 9 << /S /D /St 2 >> 12 << /S /D /St 5 >> 13 << /S /D /St 6 >> 15 << /S /D /St 8 >> 16 << /S /D /St 9 >> 17 << /S /D /St 10 >> 19 << /S /D /St 12 >> 20 << /S /D /St 13 >> 21 << /S /D /St 14 >> 25 << /S /D /St 18 >> 28 << /S /D /St 21 >> 29 << /S /D /St 22 >> 33 << /S /D /St 26 >> 34 << /S /D /St 27 >> 44 << /S /D /St 37 >> 45 << /S /D /St 38 >> 47 << /S /D /St 40 >> 54 << /S /D /St 47 >> 75 << /S /D /St 68 >> 83 << /S /D /St 76 >>] >> endobj 1661 0 obj << /First 1660 0 R /Last 1739 0 R >> endobj 1832 0 obj << /Dests 1829 0 R >> endobj xref 0 1833 0000000000 65535 f 0000000015 00000 n 0000000257 00000 n 0000005358 00000 n 0000005378 00000 n 0000005411 00000 n 0000006497 00000 n 0000006516 00000 n 0000006868 00000 n 0000006887 00000 n 0000441183 00000 n 0000440210 00000 n 0000007079 00000 n 0000007143 00000 n 0000007281 00000 n 0000007343 00000 n 0000007481 00000 n 0000008613 00000 n 0000008634 00000 n 0000008668 00000 n 0000008879 00000 n 0000008959 00000 n 0000009099 00000 n 0000009235 00000 n 0000011303 00000 n 0000011324 00000 n 0000011358 00000 n 0000011569 00000 n 0000014246 00000 n 0000014267 00000 n 0000014461 00000 n 0000016467 00000 n 0000016488 00000 n 0000016682 00000 n 0000016751 00000 n 0000016891 00000 n 0000017802 00000 n 0000017822 00000 n 0000017849 00000 n 0000018060 00000 n 0000018635 00000 n 0000018655 00000 n 0000018849 00000 n 0000020783 00000 n 0000020804 00000 n 0000020998 00000 n 0000023430 00000 n 0000023451 00000 n 0000023645 00000 n 0000023725 00000 n 0000023865 00000 n 0000024004 00000 n 0000024084 00000 n 0000024224 00000 n 0000024363 00000 n 0000026943 00000 n 0000026964 00000 n 0000027012 00000 n 0000027223 00000 n 0000029532 00000 n 0000029553 00000 n 0000029747 00000 n 0000031473 00000 n 0000031494 00000 n 0000031688 00000 n 0000031828 00000 n 0000031968 00000 n 0000034122 00000 n 0000034143 00000 n 0000034177 00000 n 0000034388 00000 n 0000034468 00000 n 0000034607 00000 n 0000034687 00000 n 0000034827 00000 n 0000034907 00000 n 0000035046 00000 n 0000037527 00000 n 0000037548 00000 n 0000037589 00000 n 0000037800 00000 n 0000037880 00000 n 0000038020 00000 n 0000040166 00000 n 0000040187 00000 n 0000040214 00000 n 0000040425 00000 n 0000043502 00000 n 0000040507 00000 n 0000040647 00000 n 0000040787 00000 n 0000040926 00000 n 0000041006 00000 n 0000041146 00000 n 0000043433 00000 n 0000043454 00000 n 0000043713 00000 n 0000046008 00000 n 0000043793 00000 n 0000043933 00000 n 0000045958 00000 n 0000045980 00000 n 0000046220 00000 n 0000046303 00000 n 0000046444 00000 n 0000046586 00000 n 0000046727 00000 n 0000049221 00000 n 0000049243 00000 n 0000049288 00000 n 0000049502 00000 n 0000049586 00000 n 0000049727 00000 n 0000049868 00000 n 0000051455 00000 n 0000051477 00000 n 0000051514 00000 n 0000051728 00000 n 0000054776 00000 n 0000051810 00000 n 0000051894 00000 n 0000052036 00000 n 0000052178 00000 n 0000052261 00000 n 0000052403 00000 n 0000052544 00000 n 0000054701 00000 n 0000054723 00000 n 0000054990 00000 n 0000057486 00000 n 0000055074 00000 n 0000055215 00000 n 0000057435 00000 n 0000057457 00000 n 0000057700 00000 n 0000060395 00000 n 0000057782 00000 n 0000057924 00000 n 0000060344 00000 n 0000060366 00000 n 0000060609 00000 n 0000063618 00000 n 0000060691 00000 n 0000060832 00000 n 0000060974 00000 n 0000063559 00000 n 0000063581 00000 n 0000063832 00000 n 0000066487 00000 n 0000066509 00000 n 0000066705 00000 n 0000070225 00000 n 0000066789 00000 n 0000066873 00000 n 0000067015 00000 n 0000067157 00000 n 0000070166 00000 n 0000070188 00000 n 0000070439 00000 n 0000072908 00000 n 0000070521 00000 n 0000070662 00000 n 0000072857 00000 n 0000072879 00000 n 0000073122 00000 n 0000075680 00000 n 0000073206 00000 n 0000073347 00000 n 0000073488 00000 n 0000075621 00000 n 0000075643 00000 n 0000075894 00000 n 0000173519 00000 n 0000076035 00000 n 0000079519 00000 n 0000076119 00000 n 0000076261 00000 n 0000076403 00000 n 0000076544 00000 n 0000076626 00000 n 0000076768 00000 n 0000076852 00000 n 0000076993 00000 n 0000079428 00000 n 0000079450 00000 n 0000079733 00000 n 0000079875 00000 n 0000082885 00000 n 0000079958 00000 n 0000080099 00000 n 0000080241 00000 n 0000080383 00000 n 0000082810 00000 n 0000082832 00000 n 0000083099 00000 n 0000086532 00000 n 0000083181 00000 n 0000083321 00000 n 0000083463 00000 n 0000083605 00000 n 0000083747 00000 n 0000083831 00000 n 0000083973 00000 n 0000084114 00000 n 0000086441 00000 n 0000086463 00000 n 0000086746 00000 n 0000088086 00000 n 0000086828 00000 n 0000086969 00000 n 0000088036 00000 n 0000088057 00000 n 0000088300 00000 n 0000088441 00000 n 0000088525 00000 n 0000088667 00000 n 0000088808 00000 n 0000090851 00000 n 0000090873 00000 n 0000090918 00000 n 0000091132 00000 n 0000091216 00000 n 0000091358 00000 n 0000093501 00000 n 0000093523 00000 n 0000093552 00000 n 0000093766 00000 n 0000096580 00000 n 0000093848 00000 n 0000093989 00000 n 0000094131 00000 n 0000094273 00000 n 0000094415 00000 n 0000096505 00000 n 0000096527 00000 n 0000096794 00000 n 0000100072 00000 n 0000096876 00000 n 0000097017 00000 n 0000097159 00000 n 0000097300 00000 n 0000149789 00000 n 0000097442 00000 n 0000097584 00000 n 0000099989 00000 n 0000100011 00000 n 0000100286 00000 n 0000100368 00000 n 0000100510 00000 n 0000100651 00000 n 0000103111 00000 n 0000103133 00000 n 0000103170 00000 n 0000103384 00000 n 0000103468 00000 n 0000103610 00000 n 0000103750 00000 n 0000105765 00000 n 0000105787 00000 n 0000105824 00000 n 0000106038 00000 n 0000106120 00000 n 0000106260 00000 n 0000108840 00000 n 0000108862 00000 n 0000108891 00000 n 0000109105 00000 n 0000111486 00000 n 0000111508 00000 n 0000111704 00000 n 0000111785 00000 n 0000111926 00000 n 0000112068 00000 n 0000112149 00000 n 0000112289 00000 n 0000112431 00000 n 0000112514 00000 n 0000112655 00000 n 0000112797 00000 n 0000112879 00000 n 0000113021 00000 n 0000113163 00000 n 0000113246 00000 n 0000113387 00000 n 0000113527 00000 n 0000113608 00000 n 0000113750 00000 n 0000113890 00000 n 0000146732 00000 n 0000114031 00000 n 0000114173 00000 n 0000146814 00000 n 0000114315 00000 n 0000114457 00000 n 0000146896 00000 n 0000114599 00000 n 0000114741 00000 n 0000146979 00000 n 0000114883 00000 n 0000115025 00000 n 0000115106 00000 n 0000115247 00000 n 0000115389 00000 n 0000115530 00000 n 0000115671 00000 n 0000115812 00000 n 0000115953 00000 n 0000116094 00000 n 0000116235 00000 n 0000116317 00000 n 0000116459 00000 n 0000116599 00000 n 0000116741 00000 n 0000116883 00000 n 0000116966 00000 n 0000117108 00000 n 0000117250 00000 n 0000117392 00000 n 0000117534 00000 n 0000117618 00000 n 0000117760 00000 n 0000117902 00000 n 0000117983 00000 n 0000118125 00000 n 0000118267 00000 n 0000118406 00000 n 0000118547 00000 n 0000118688 00000 n 0000118829 00000 n 0000118910 00000 n 0000119052 00000 n 0000119194 00000 n 0000119336 00000 n 0000119478 00000 n 0000119561 00000 n 0000119703 00000 n 0000119845 00000 n 0000119929 00000 n 0000120071 00000 n 0000120211 00000 n 0000120295 00000 n 0000120437 00000 n 0000120579 00000 n 0000120721 00000 n 0000120863 00000 n 0000120945 00000 n 0000121087 00000 n 0000121229 00000 n 0000121313 00000 n 0000121455 00000 n 0000121597 00000 n 0000121681 00000 n 0000121823 00000 n 0000121965 00000 n 0000122047 00000 n 0000122189 00000 n 0000122331 00000 n 0000122415 00000 n 0000122557 00000 n 0000122699 00000 n 0000173437 00000 n 0000122841 00000 n 0000122983 00000 n 0000173601 00000 n 0000123125 00000 n 0000123267 00000 n 0000123409 00000 n 0000123549 00000 n 0000123633 00000 n 0000123775 00000 n 0000123917 00000 n 0000124001 00000 n 0000124143 00000 n 0000124285 00000 n 0000124427 00000 n 0000124567 00000 n 0000124709 00000 n 0000124851 00000 n 0000124935 00000 n 0000125077 00000 n 0000125219 00000 n 0000125303 00000 n 0000125444 00000 n 0000125586 00000 n 0000125668 00000 n 0000125810 00000 n 0000125952 00000 n 0000126034 00000 n 0000126175 00000 n 0000126317 00000 n 0000126401 00000 n 0000126543 00000 n 0000126685 00000 n 0000126825 00000 n 0000126965 00000 n 0000127047 00000 n 0000127187 00000 n 0000127327 00000 n 0000142350 00000 n 0000142373 00000 n 0000143146 00000 n 0000143360 00000 n 0000144355 00000 n 0000144376 00000 n 0000144572 00000 n 0000146518 00000 n 0000144656 00000 n 0000144798 00000 n 0000146467 00000 n 0000146489 00000 n 0000149575 00000 n 0000147063 00000 n 0000147145 00000 n 0000147287 00000 n 0000149524 00000 n 0000149546 00000 n 0000152946 00000 n 0000149873 00000 n 0000150014 00000 n 0000150156 00000 n 0000150297 00000 n 0000152879 00000 n 0000152901 00000 n 0000153160 00000 n 0000156217 00000 n 0000153244 00000 n 0000153384 00000 n 0000153524 00000 n 0000153666 00000 n 0000153808 00000 n 0000153950 00000 n 0000156134 00000 n 0000156156 00000 n 0000156431 00000 n 0000159335 00000 n 0000156513 00000 n 0000156654 00000 n 0000156796 00000 n 0000156938 00000 n 0000157079 00000 n 0000157221 00000 n 0000159252 00000 n 0000159274 00000 n 0000159549 00000 n 0000159633 00000 n 0000159774 00000 n 0000159916 00000 n 0000160056 00000 n 0000160197 00000 n 0000160339 00000 n 0000162880 00000 n 0000160423 00000 n 0000160562 00000 n 0000160704 00000 n 0000162781 00000 n 0000162803 00000 n 0000163094 00000 n 0000165589 00000 n 0000163176 00000 n 0000163318 00000 n 0000163460 00000 n 0000163602 00000 n 0000165522 00000 n 0000165544 00000 n 0000165803 00000 n 0000168294 00000 n 0000165885 00000 n 0000166026 00000 n 0000166166 00000 n 0000168235 00000 n 0000168257 00000 n 0000168508 00000 n 0000171410 00000 n 0000168590 00000 n 0000168732 00000 n 0000168873 00000 n 0000169015 00000 n 0000169156 00000 n 0000171335 00000 n 0000171357 00000 n 0000171624 00000 n 0000173219 00000 n 0000173241 00000 n 0000176334 00000 n 0000173683 00000 n 0000173765 00000 n 0000173906 00000 n 0000176283 00000 n 0000176305 00000 n 0000176548 00000 n 0000179705 00000 n 0000176632 00000 n 0000176771 00000 n 0000176911 00000 n 0000177050 00000 n 0000177192 00000 n 0000177332 00000 n 0000179622 00000 n 0000179644 00000 n 0000179919 00000 n 0000181853 00000 n 0000181875 00000 n 0000182071 00000 n 0000182153 00000 n 0000182292 00000 n 0000182432 00000 n 0000182573 00000 n 0000182715 00000 n 0000182797 00000 n 0000182939 00000 n 0000183080 00000 n 0000183222 00000 n 0000185349 00000 n 0000185371 00000 n 0000185448 00000 n 0000185662 00000 n 0000185745 00000 n 0000185886 00000 n 0000187949 00000 n 0000187971 00000 n 0000188000 00000 n 0000188214 00000 n 0000188298 00000 n 0000188439 00000 n 0000188581 00000 n 0000188723 00000 n 0000188864 00000 n 0000189006 00000 n 0000190973 00000 n 0000190995 00000 n 0000191056 00000 n 0000191270 00000 n 0000194128 00000 n 0000191352 00000 n 0000191491 00000 n 0000191633 00000 n 0000191775 00000 n 0000194061 00000 n 0000194083 00000 n 0000194342 00000 n 0000197321 00000 n 0000194426 00000 n 0000194508 00000 n 0000194649 00000 n 0000194791 00000 n 0000194933 00000 n 0000197254 00000 n 0000197276 00000 n 0000197535 00000 n 0000201796 00000 n 0000197619 00000 n 0000197758 00000 n 0000197840 00000 n 0000197980 00000 n 0000198062 00000 n 0000198202 00000 n 0000198342 00000 n 0000198480 00000 n 0000198622 00000 n 0000198764 00000 n 0000198906 00000 n 0000199047 00000 n 0000199189 00000 n 0000199331 00000 n 0000201665 00000 n 0000201687 00000 n 0000202010 00000 n 0000202093 00000 n 0000202234 00000 n 0000202376 00000 n 0000204875 00000 n 0000202458 00000 n 0000202598 00000 n 0000204808 00000 n 0000204830 00000 n 0000205089 00000 n 0000207890 00000 n 0000205173 00000 n 0000205257 00000 n 0000205396 00000 n 0000205538 00000 n 0000205680 00000 n 0000205822 00000 n 0000207815 00000 n 0000207837 00000 n 0000208104 00000 n 0000210030 00000 n 0000208186 00000 n 0000208327 00000 n 0000209979 00000 n 0000210001 00000 n 0000210244 00000 n 0000210385 00000 n 0000210527 00000 n 0000210669 00000 n 0000212792 00000 n 0000212814 00000 n 0000212859 00000 n 0000213073 00000 n 0000215875 00000 n 0000213155 00000 n 0000213239 00000 n 0000213380 00000 n 0000213521 00000 n 0000213663 00000 n 0000213804 00000 n 0000213946 00000 n 0000215792 00000 n 0000215814 00000 n 0000216089 00000 n 0000217383 00000 n 0000217405 00000 n 0000217601 00000 n 0000217683 00000 n 0000217822 00000 n 0000217964 00000 n 0000219606 00000 n 0000219628 00000 n 0000219665 00000 n 0000219879 00000 n 0000223252 00000 n 0000219963 00000 n 0000220105 00000 n 0000220188 00000 n 0000220330 00000 n 0000220471 00000 n 0000220553 00000 n 0000220695 00000 n 0000220836 00000 n 0000223169 00000 n 0000223191 00000 n 0000223466 00000 n 0000226599 00000 n 0000223550 00000 n 0000223691 00000 n 0000223833 00000 n 0000223975 00000 n 0000224057 00000 n 0000224199 00000 n 0000224341 00000 n 0000224482 00000 n 0000226508 00000 n 0000226530 00000 n 0000226813 00000 n 0000229623 00000 n 0000226897 00000 n 0000226981 00000 n 0000227122 00000 n 0000227264 00000 n 0000227405 00000 n 0000227547 00000 n 0000229548 00000 n 0000229570 00000 n 0000229837 00000 n 0000232114 00000 n 0000229920 00000 n 0000230062 00000 n 0000232063 00000 n 0000232085 00000 n 0000232328 00000 n 0000234852 00000 n 0000232410 00000 n 0000232551 00000 n 0000232692 00000 n 0000232834 00000 n 0000232976 00000 n 0000234777 00000 n 0000234799 00000 n 0000235066 00000 n 0000237436 00000 n 0000237458 00000 n 0000237654 00000 n 0000237736 00000 n 0000237878 00000 n 0000238018 00000 n 0000240462 00000 n 0000240484 00000 n 0000240521 00000 n 0000240735 00000 n 0000242774 00000 n 0000242796 00000 n 0000242992 00000 n 0000244831 00000 n 0000244853 00000 n 0000245049 00000 n 0000245985 00000 n 0000246006 00000 n 0000246202 00000 n 0000246286 00000 n 0000246428 00000 n 0000246508 00000 n 0000246650 00000 n 0000246729 00000 n 0000246871 00000 n 0000246950 00000 n 0000247092 00000 n 0000247234 00000 n 0000247376 00000 n 0000249527 00000 n 0000249549 00000 n 0000249618 00000 n 0000249832 00000 n 0000250171 00000 n 0000250192 00000 n 0000250388 00000 n 0000250529 00000 n 0000250670 00000 n 0000251329 00000 n 0000251350 00000 n 0000251387 00000 n 0000251601 00000 n 0000251941 00000 n 0000251962 00000 n 0000252158 00000 n 0000252242 00000 n 0000252384 00000 n 0000252467 00000 n 0000252609 00000 n 0000252693 00000 n 0000252835 00000 n 0000252919 00000 n 0000253061 00000 n 0000253146 00000 n 0000253288 00000 n 0000253373 00000 n 0000253515 00000 n 0000253600 00000 n 0000253742 00000 n 0000253827 00000 n 0000253969 00000 n 0000254053 00000 n 0000254195 00000 n 0000254278 00000 n 0000254420 00000 n 0000254504 00000 n 0000254646 00000 n 0000254730 00000 n 0000254872 00000 n 0000254956 00000 n 0000255098 00000 n 0000255181 00000 n 0000255323 00000 n 0000255406 00000 n 0000255548 00000 n 0000255631 00000 n 0000255773 00000 n 0000255856 00000 n 0000255998 00000 n 0000256082 00000 n 0000256222 00000 n 0000256306 00000 n 0000256446 00000 n 0000256530 00000 n 0000256672 00000 n 0000256756 00000 n 0000256898 00000 n 0000256982 00000 n 0000257124 00000 n 0000257208 00000 n 0000257350 00000 n 0000257434 00000 n 0000257576 00000 n 0000257718 00000 n 0000257860 00000 n 0000258002 00000 n 0000258144 00000 n 0000258286 00000 n 0000258428 00000 n 0000258570 00000 n 0000258654 00000 n 0000258796 00000 n 0000258880 00000 n 0000259022 00000 n 0000259106 00000 n 0000259248 00000 n 0000259332 00000 n 0000259474 00000 n 0000259616 00000 n 0000259700 00000 n 0000259842 00000 n 0000259926 00000 n 0000260068 00000 n 0000260152 00000 n 0000260294 00000 n 0000260436 00000 n 0000260520 00000 n 0000260662 00000 n 0000260746 00000 n 0000260888 00000 n 0000261030 00000 n 0000261114 00000 n 0000261256 00000 n 0000261398 00000 n 0000261482 00000 n 0000261624 00000 n 0000261766 00000 n 0000261850 00000 n 0000261992 00000 n 0000262134 00000 n 0000262218 00000 n 0000262360 00000 n 0000262502 00000 n 0000262644 00000 n 0000262786 00000 n 0000262870 00000 n 0000263012 00000 n 0000263152 00000 n 0000265272 00000 n 0000265294 00000 n 0000265755 00000 n 0000265969 00000 n 0000266110 00000 n 0000266252 00000 n 0000266334 00000 n 0000266475 00000 n 0000266617 00000 n 0000266701 00000 n 0000266843 00000 n 0000266985 00000 n 0000267067 00000 n 0000267209 00000 n 0000267349 00000 n 0000267431 00000 n 0000267573 00000 n 0000267715 00000 n 0000267799 00000 n 0000267941 00000 n 0000268081 00000 n 0000268163 00000 n 0000268305 00000 n 0000268447 00000 n 0000268529 00000 n 0000268670 00000 n 0000268812 00000 n 0000268954 00000 n 0000269096 00000 n 0000269178 00000 n 0000269320 00000 n 0000269462 00000 n 0000269546 00000 n 0000269688 00000 n 0000269830 00000 n 0000269912 00000 n 0000270054 00000 n 0000270196 00000 n 0000270338 00000 n 0000270480 00000 n 0000270562 00000 n 0000270704 00000 n 0000270846 00000 n 0000270929 00000 n 0000271071 00000 n 0000271210 00000 n 0000271292 00000 n 0000271433 00000 n 0000271575 00000 n 0000271657 00000 n 0000271799 00000 n 0000271941 00000 n 0000272023 00000 n 0000272165 00000 n 0000272305 00000 n 0000272389 00000 n 0000272530 00000 n 0000272670 00000 n 0000272811 00000 n 0000272953 00000 n 0000273094 00000 n 0000273236 00000 n 0000273320 00000 n 0000273462 00000 n 0000273604 00000 n 0000273687 00000 n 0000273827 00000 n 0000273969 00000 n 0000274110 00000 n 0000274250 00000 n 0000274332 00000 n 0000274473 00000 n 0000274615 00000 n 0000274699 00000 n 0000274840 00000 n 0000274982 00000 n 0000275064 00000 n 0000275205 00000 n 0000275347 00000 n 0000275429 00000 n 0000275570 00000 n 0000275712 00000 n 0000275794 00000 n 0000275934 00000 n 0000276076 00000 n 0000285359 00000 n 0000285381 00000 n 0000285866 00000 n 0000286080 00000 n 0000286222 00000 n 0000286364 00000 n 0000286448 00000 n 0000286590 00000 n 0000286732 00000 n 0000286874 00000 n 0000286958 00000 n 0000287100 00000 n 0000287242 00000 n 0000287325 00000 n 0000287467 00000 n 0000287549 00000 n 0000287691 00000 n 0000287774 00000 n 0000287914 00000 n 0000288056 00000 n 0000288140 00000 n 0000288282 00000 n 0000288366 00000 n 0000288508 00000 n 0000288592 00000 n 0000288734 00000 n 0000288876 00000 n 0000289018 00000 n 0000289160 00000 n 0000289302 00000 n 0000289386 00000 n 0000289528 00000 n 0000289670 00000 n 0000289753 00000 n 0000289895 00000 n 0000290037 00000 n 0000290179 00000 n 0000290321 00000 n 0000290463 00000 n 0000290605 00000 n 0000290747 00000 n 0000290889 00000 n 0000291030 00000 n 0000291170 00000 n 0000291312 00000 n 0000291396 00000 n 0000291538 00000 n 0000291680 00000 n 0000291822 00000 n 0000291906 00000 n 0000292048 00000 n 0000292132 00000 n 0000292274 00000 n 0000292358 00000 n 0000292500 00000 n 0000292642 00000 n 0000292726 00000 n 0000292868 00000 n 0000292952 00000 n 0000293094 00000 n 0000293179 00000 n 0000293321 00000 n 0000293463 00000 n 0000293605 00000 n 0000293747 00000 n 0000293830 00000 n 0000293972 00000 n 0000294114 00000 n 0000294197 00000 n 0000294339 00000 n 0000294422 00000 n 0000294564 00000 n 0000294647 00000 n 0000294789 00000 n 0000294872 00000 n 0000295014 00000 n 0000295099 00000 n 0000295241 00000 n 0000295325 00000 n 0000295467 00000 n 0000295551 00000 n 0000295693 00000 n 0000295835 00000 n 0000298010 00000 n 0000298032 00000 n 0000298485 00000 n 0000298699 00000 n 0000298841 00000 n 0000298983 00000 n 0000299066 00000 n 0000299208 00000 n 0000299292 00000 n 0000299434 00000 n 0000299518 00000 n 0000299660 00000 n 0000299744 00000 n 0000299886 00000 n 0000299970 00000 n 0000300112 00000 n 0000300196 00000 n 0000300338 00000 n 0000300422 00000 n 0000300564 00000 n 0000300648 00000 n 0000300790 00000 n 0000300932 00000 n 0000301016 00000 n 0000301158 00000 n 0000301242 00000 n 0000301385 00000 n 0000301528 00000 n 0000301613 00000 n 0000301757 00000 n 0000301842 00000 n 0000301986 00000 n 0000302071 00000 n 0000302215 00000 n 0000302359 00000 n 0000302444 00000 n 0000302588 00000 n 0000302673 00000 n 0000302817 00000 n 0000302960 00000 n 0000303044 00000 n 0000303188 00000 n 0000303273 00000 n 0000303417 00000 n 0000303502 00000 n 0000303646 00000 n 0000303731 00000 n 0000303875 00000 n 0000303959 00000 n 0000304103 00000 n 0000304188 00000 n 0000304332 00000 n 0000304417 00000 n 0000304561 00000 n 0000304704 00000 n 0000304847 00000 n 0000304990 00000 n 0000305132 00000 n 0000305217 00000 n 0000305359 00000 n 0000305444 00000 n 0000305586 00000 n 0000305670 00000 n 0000305814 00000 n 0000305899 00000 n 0000306043 00000 n 0000306125 00000 n 0000306269 00000 n 0000306412 00000 n 0000306555 00000 n 0000306698 00000 n 0000306783 00000 n 0000306927 00000 n 0000307012 00000 n 0000307156 00000 n 0000307242 00000 n 0000307386 00000 n 0000307470 00000 n 0000307614 00000 n 0000307698 00000 n 0000307842 00000 n 0000307927 00000 n 0000308071 00000 n 0000308157 00000 n 0000308301 00000 n 0000308386 00000 n 0000308530 00000 n 0000308615 00000 n 0000308759 00000 n 0000308845 00000 n 0000308989 00000 n 0000309073 00000 n 0000309217 00000 n 0000309299 00000 n 0000309443 00000 n 0000309587 00000 n 0000309730 00000 n 0000309815 00000 n 0000309959 00000 n 0000310103 00000 n 0000310186 00000 n 0000310330 00000 n 0000310473 00000 n 0000310616 00000 n 0000310759 00000 n 0000310902 00000 n 0000311045 00000 n 0000311130 00000 n 0000311274 00000 n 0000311359 00000 n 0000311503 00000 n 0000311646 00000 n 0000311731 00000 n 0000311875 00000 n 0000311960 00000 n 0000312104 00000 n 0000312247 00000 n 0000312390 00000 n 0000312475 00000 n 0000312619 00000 n 0000312704 00000 n 0000312848 00000 n 0000312933 00000 n 0000313076 00000 n 0000313161 00000 n 0000313303 00000 n 0000313388 00000 n 0000313530 00000 n 0000316124 00000 n 0000316147 00000 n 0000316823 00000 n 0000317040 00000 n 0000317125 00000 n 0000317269 00000 n 0000317354 00000 n 0000317496 00000 n 0000317580 00000 n 0000317724 00000 n 0000317866 00000 n 0000317951 00000 n 0000318095 00000 n 0000318180 00000 n 0000318324 00000 n 0000318409 00000 n 0000318553 00000 n 0000318638 00000 n 0000318782 00000 n 0000318866 00000 n 0000319010 00000 n 0000319153 00000 n 0000319296 00000 n 0000319379 00000 n 0000319523 00000 n 0000319608 00000 n 0000319752 00000 n 0000319837 00000 n 0000319981 00000 n 0000320066 00000 n 0000320210 00000 n 0000320352 00000 n 0000320495 00000 n 0000320579 00000 n 0000320723 00000 n 0000320808 00000 n 0000320952 00000 n 0000321096 00000 n 0000321240 00000 n 0000321384 00000 n 0000321469 00000 n 0000321613 00000 n 0000321757 00000 n 0000321900 00000 n 0000321984 00000 n 0000322128 00000 n 0000322271 00000 n 0000322414 00000 n 0000322558 00000 n 0000322643 00000 n 0000322786 00000 n 0000322870 00000 n 0000323012 00000 n 0000323097 00000 n 0000323239 00000 n 0000323325 00000 n 0000323469 00000 n 0000323612 00000 n 0000323755 00000 n 0000323840 00000 n 0000323984 00000 n 0000324069 00000 n 0000324213 00000 n 0000324297 00000 n 0000324441 00000 n 0000324526 00000 n 0000324670 00000 n 0000324755 00000 n 0000324899 00000 n 0000325043 00000 n 0000325186 00000 n 0000325329 00000 n 0000325414 00000 n 0000325558 00000 n 0000325701 00000 n 0000325844 00000 n 0000325930 00000 n 0000326074 00000 n 0000326160 00000 n 0000326304 00000 n 0000326388 00000 n 0000326532 00000 n 0000326618 00000 n 0000326762 00000 n 0000326847 00000 n 0000326991 00000 n 0000327077 00000 n 0000327221 00000 n 0000327365 00000 n 0000327451 00000 n 0000327595 00000 n 0000327739 00000 n 0000327883 00000 n 0000328027 00000 n 0000328171 00000 n 0000328315 00000 n 0000328457 00000 n 0000330685 00000 n 0000330708 00000 n 0000331270 00000 n 0000331487 00000 n 0000331631 00000 n 0000331716 00000 n 0000331860 00000 n 0000332003 00000 n 0000332147 00000 n 0000332291 00000 n 0000332435 00000 n 0000332520 00000 n 0000332664 00000 n 0000332807 00000 n 0000332951 00000 n 0000333036 00000 n 0000333180 00000 n 0000333265 00000 n 0000333409 00000 n 0000333493 00000 n 0000333637 00000 n 0000333722 00000 n 0000333866 00000 n 0000334009 00000 n 0000334153 00000 n 0000334297 00000 n 0000334381 00000 n 0000334525 00000 n 0000334669 00000 n 0000334754 00000 n 0000334898 00000 n 0000335042 00000 n 0000335185 00000 n 0000335328 00000 n 0000335412 00000 n 0000335556 00000 n 0000335699 00000 n 0000335843 00000 n 0000335985 00000 n 0000336127 00000 n 0000336270 00000 n 0000336414 00000 n 0000336557 00000 n 0000336700 00000 n 0000336844 00000 n 0000336988 00000 n 0000337131 00000 n 0000337275 00000 n 0000337418 00000 n 0000337561 00000 n 0000337704 00000 n 0000337847 00000 n 0000337931 00000 n 0000338075 00000 n 0000338219 00000 n 0000338363 00000 n 0000338447 00000 n 0000338591 00000 n 0000338734 00000 n 0000338878 00000 n 0000338962 00000 n 0000339106 00000 n 0000339190 00000 n 0000339334 00000 n 0000339478 00000 n 0000339562 00000 n 0000339706 00000 n 0000339849 00000 n 0000339992 00000 n 0000340134 00000 n 0000340275 00000 n 0000340416 00000 n 0000342597 00000 n 0000342620 00000 n 0000343128 00000 n 0000343345 00000 n 0000343430 00000 n 0000343574 00000 n 0000343657 00000 n 0000343801 00000 n 0000343944 00000 n 0000344088 00000 n 0000344231 00000 n 0000344372 00000 n 0000344514 00000 n 0000344655 00000 n 0000344796 00000 n 0000344938 00000 n 0000345080 00000 n 0000345221 00000 n 0000345365 00000 n 0000345509 00000 n 0000345652 00000 n 0000345738 00000 n 0000345881 00000 n 0000346024 00000 n 0000346167 00000 n 0000346310 00000 n 0000346452 00000 n 0000346593 00000 n 0000346736 00000 n 0000346880 00000 n 0000347023 00000 n 0000347166 00000 n 0000347309 00000 n 0000347453 00000 n 0000347597 00000 n 0000347741 00000 n 0000347885 00000 n 0000348029 00000 n 0000348173 00000 n 0000348317 00000 n 0000348461 00000 n 0000348604 00000 n 0000348748 00000 n 0000348891 00000 n 0000349035 00000 n 0000349179 00000 n 0000349323 00000 n 0000349467 00000 n 0000349611 00000 n 0000349755 00000 n 0000349899 00000 n 0000350043 00000 n 0000350184 00000 n 0000352214 00000 n 0000352237 00000 n 0000352673 00000 n 0000352890 00000 n 0000353034 00000 n 0000353177 00000 n 0000353320 00000 n 0000353463 00000 n 0000353606 00000 n 0000353749 00000 n 0000353892 00000 n 0000354035 00000 n 0000354178 00000 n 0000354321 00000 n 0000354464 00000 n 0000354607 00000 n 0000354750 00000 n 0000354893 00000 n 0000355036 00000 n 0000355179 00000 n 0000355322 00000 n 0000355465 00000 n 0000355608 00000 n 0000355751 00000 n 0000355894 00000 n 0000356037 00000 n 0000356180 00000 n 0000356323 00000 n 0000356466 00000 n 0000356609 00000 n 0000356752 00000 n 0000356895 00000 n 0000357038 00000 n 0000357181 00000 n 0000357324 00000 n 0000357467 00000 n 0000357552 00000 n 0000357696 00000 n 0000357837 00000 n 0000357980 00000 n 0000358124 00000 n 0000358267 00000 n 0000358410 00000 n 0000358554 00000 n 0000358698 00000 n 0000358842 00000 n 0000358986 00000 n 0000359130 00000 n 0000359274 00000 n 0000359417 00000 n 0000359561 00000 n 0000359705 00000 n 0000359849 00000 n 0000359993 00000 n 0000360137 00000 n 0000360281 00000 n 0000360425 00000 n 0000360569 00000 n 0000360713 00000 n 0000360857 00000 n 0000361001 00000 n 0000361086 00000 n 0000361230 00000 n 0000361374 00000 n 0000361518 00000 n 0000361661 00000 n 0000361805 00000 n 0000361949 00000 n 0000362093 00000 n 0000362177 00000 n 0000362321 00000 n 0000362462 00000 n 0000364852 00000 n 0000364875 00000 n 0000365482 00000 n 0000365699 00000 n 0000365842 00000 n 0000365985 00000 n 0000366128 00000 n 0000366271 00000 n 0000366415 00000 n 0000366559 00000 n 0000366702 00000 n 0000366845 00000 n 0000366988 00000 n 0000367131 00000 n 0000367275 00000 n 0000367419 00000 n 0000367563 00000 n 0000367648 00000 n 0000367792 00000 n 0000367876 00000 n 0000368020 00000 n 0000368164 00000 n 0000368307 00000 n 0000368450 00000 n 0000368593 00000 n 0000368736 00000 n 0000368880 00000 n 0000369024 00000 n 0000369168 00000 n 0000369312 00000 n 0000369455 00000 n 0000369598 00000 n 0000369741 00000 n 0000369882 00000 n 0000370025 00000 n 0000370169 00000 n 0000370313 00000 n 0000370456 00000 n 0000370599 00000 n 0000370741 00000 n 0000370882 00000 n 0000371025 00000 n 0000371169 00000 n 0000371313 00000 n 0000371457 00000 n 0000371601 00000 n 0000371745 00000 n 0000371889 00000 n 0000372033 00000 n 0000372177 00000 n 0000372321 00000 n 0000372465 00000 n 0000372609 00000 n 0000372753 00000 n 0000372897 00000 n 0000373041 00000 n 0000373184 00000 n 0000373327 00000 n 0000373471 00000 n 0000373615 00000 n 0000373759 00000 n 0000373903 00000 n 0000374047 00000 n 0000374190 00000 n 0000374334 00000 n 0000374478 00000 n 0000374622 00000 n 0000374706 00000 n 0000374850 00000 n 0000374993 00000 n 0000375136 00000 n 0000375280 00000 n 0000375424 00000 n 0000375568 00000 n 0000375652 00000 n 0000375796 00000 n 0000375880 00000 n 0000376024 00000 n 0000376168 00000 n 0000376253 00000 n 0000376397 00000 n 0000376541 00000 n 0000376685 00000 n 0000376829 00000 n 0000376914 00000 n 0000377057 00000 n 0000377199 00000 n 0000379754 00000 n 0000379777 00000 n 0000380483 00000 n 0000380700 00000 n 0000380785 00000 n 0000380929 00000 n 0000381073 00000 n 0000381217 00000 n 0000381361 00000 n 0000381504 00000 n 0000381647 00000 n 0000381790 00000 n 0000381934 00000 n 0000382077 00000 n 0000382221 00000 n 0000382365 00000 n 0000382509 00000 n 0000382653 00000 n 0000382797 00000 n 0000382941 00000 n 0000383084 00000 n 0000383228 00000 n 0000383372 00000 n 0000383516 00000 n 0000383660 00000 n 0000383804 00000 n 0000383947 00000 n 0000384090 00000 n 0000384234 00000 n 0000384378 00000 n 0000384522 00000 n 0000384666 00000 n 0000384810 00000 n 0000384894 00000 n 0000385038 00000 n 0000385181 00000 n 0000385323 00000 n 0000385466 00000 n 0000385610 00000 n 0000385754 00000 n 0000385898 00000 n 0000386041 00000 n 0000386185 00000 n 0000386329 00000 n 0000386473 00000 n 0000386617 00000 n 0000386761 00000 n 0000386904 00000 n 0000387047 00000 n 0000387132 00000 n 0000387276 00000 n 0000387360 00000 n 0000387504 00000 n 0000387588 00000 n 0000387732 00000 n 0000387875 00000 n 0000388019 00000 n 0000388104 00000 n 0000388248 00000 n 0000388333 00000 n 0000388477 00000 n 0000388562 00000 n 0000388706 00000 n 0000388791 00000 n 0000388935 00000 n 0000389079 00000 n 0000389223 00000 n 0000389367 00000 n 0000389511 00000 n 0000389655 00000 n 0000389798 00000 n 0000389942 00000 n 0000390086 00000 n 0000390228 00000 n 0000392447 00000 n 0000392470 00000 n 0000393041 00000 n 0000393258 00000 n 0000393402 00000 n 0000393546 00000 n 0000393689 00000 n 0000393833 00000 n 0000393977 00000 n 0000394121 00000 n 0000394265 00000 n 0000394408 00000 n 0000394551 00000 n 0000394695 00000 n 0000394780 00000 n 0000394924 00000 n 0000395067 00000 n 0000395211 00000 n 0000395354 00000 n 0000395497 00000 n 0000395641 00000 n 0000395785 00000 n 0000395929 00000 n 0000396073 00000 n 0000396216 00000 n 0000396358 00000 n 0000396502 00000 n 0000396645 00000 n 0000396788 00000 n 0000396931 00000 n 0000397074 00000 n 0000397218 00000 n 0000397361 00000 n 0000397503 00000 n 0000397645 00000 n 0000397727 00000 n 0000397871 00000 n 0000398014 00000 n 0000398158 00000 n 0000398302 00000 n 0000398446 00000 n 0000398589 00000 n 0000398732 00000 n 0000398876 00000 n 0000399020 00000 n 0000399164 00000 n 0000399308 00000 n 0000399452 00000 n 0000399596 00000 n 0000399739 00000 n 0000399883 00000 n 0000400027 00000 n 0000400171 00000 n 0000400315 00000 n 0000400459 00000 n 0000400603 00000 n 0000400746 00000 n 0000400889 00000 n 0000401033 00000 n 0000401177 00000 n 0000401321 00000 n 0000401464 00000 n 0000401608 00000 n 0000401752 00000 n 0000401896 00000 n 0000402040 00000 n 0000402184 00000 n 0000402328 00000 n 0000402472 00000 n 0000402615 00000 n 0000402756 00000 n 0000405032 00000 n 0000405055 00000 n 0000405662 00000 n 0000405879 00000 n 0000406022 00000 n 0000406104 00000 n 0000406248 00000 n 0000406392 00000 n 0000406535 00000 n 0000406679 00000 n 0000406823 00000 n 0000406967 00000 n 0000407111 00000 n 0000407254 00000 n 0000407397 00000 n 0000407540 00000 n 0000407683 00000 n 0000407827 00000 n 0000407970 00000 n 0000408113 00000 n 0000408257 00000 n 0000408401 00000 n 0000408545 00000 n 0000408689 00000 n 0000409941 00000 n 0000409964 00000 n 0000410157 00000 n 0000410374 00000 n 0000410715 00000 n 0000410737 00000 n 0000410935 00000 n 0000411016 00000 n 0000442005 00000 n 0000411205 00000 n 0000411122 00000 n 0000411319 00000 n 0000412430 00000 n 0000411466 00000 n 0000412266 00000 n 0000411686 00000 n 0000412090 00000 n 0000411882 00000 n 0000413254 00000 n 0000412666 00000 n 0000413054 00000 n 0000412846 00000 n 0000415683 00000 n 0000413502 00000 n 0000414755 00000 n 0000414451 00000 n 0000413737 00000 n 0000414279 00000 n 0000413928 00000 n 0000415003 00000 n 0000415263 00000 n 0000415483 00000 n 0000420950 00000 n 0000416003 00000 n 0000420818 00000 n 0000416154 00000 n 0000416718 00000 n 0000416386 00000 n 0000416518 00000 n 0000418514 00000 n 0000417018 00000 n 0000418314 00000 n 0000417166 00000 n 0000418098 00000 n 0000417402 00000 n 0000417830 00000 n 0000417650 00000 n 0000418706 00000 n 0000418986 00000 n 0000420562 00000 n 0000419214 00000 n 0000419446 00000 n 0000419694 00000 n 0000419982 00000 n 0000420282 00000 n 0000421862 00000 n 0000421210 00000 n 0000421650 00000 n 0000421382 00000 n 0000427567 00000 n 0000422147 00000 n 0000427311 00000 n 0000423583 00000 n 0000422323 00000 n 0000423303 00000 n 0000422503 00000 n 0000422819 00000 n 0000423087 00000 n 0000425555 00000 n 0000423763 00000 n 0000425311 00000 n 0000424015 00000 n 0000424323 00000 n 0000424527 00000 n 0000424759 00000 n 0000425035 00000 n 0000425755 00000 n 0000427043 00000 n 0000425979 00000 n 0000426179 00000 n 0000426495 00000 n 0000426747 00000 n 0000428291 00000 n 0000427875 00000 n 0000428079 00000 n 0000428475 00000 n 0000428687 00000 n 0000428772 00000 n 0000428878 00000 n 0000428992 00000 n 0000429110 00000 n 0000429221 00000 n 0000429319 00000 n 0000430446 00000 n 0000430469 00000 n 0000430577 00000 n 0000430693 00000 n 0000430806 00000 n 0000430926 00000 n 0000431036 00000 n 0000431195 00000 n 0000431345 00000 n 0000431447 00000 n 0000431564 00000 n 0000431684 00000 n 0000431807 00000 n 0000431918 00000 n 0000432026 00000 n 0000432140 00000 n 0000432257 00000 n 0000432368 00000 n 0000432485 00000 n 0000432587 00000 n 0000432692 00000 n 0000432773 00000 n 0000432872 00000 n 0000432950 00000 n 0000433070 00000 n 0000433175 00000 n 0000433292 00000 n 0000433367 00000 n 0000433511 00000 n 0000433625 00000 n 0000433739 00000 n 0000433853 00000 n 0000433967 00000 n 0000434081 00000 n 0000434195 00000 n 0000434310 00000 n 0000434415 00000 n 0000434517 00000 n 0000434615 00000 n 0000434713 00000 n 0000434854 00000 n 0000434989 00000 n 0000435085 00000 n 0000435184 00000 n 0000435274 00000 n 0000435373 00000 n 0000435481 00000 n 0000435595 00000 n 0000435721 00000 n 0000435811 00000 n 0000435910 00000 n 0000435997 00000 n 0000436087 00000 n 0000436183 00000 n 0000436300 00000 n 0000436381 00000 n 0000436486 00000 n 0000436609 00000 n 0000436735 00000 n 0000436864 00000 n 0000436969 00000 n 0000437089 00000 n 0000437194 00000 n 0000437308 00000 n 0000437413 00000 n 0000437494 00000 n 0000437599 00000 n 0000437695 00000 n 0000437785 00000 n 0000437881 00000 n 0000437974 00000 n 0000438067 00000 n 0000438148 00000 n 0000438303 00000 n 0000438461 00000 n 0000438584 00000 n 0000438716 00000 n 0000438827 00000 n 0000438919 00000 n 0000439024 00000 n 0000439117 00000 n 0000439195 00000 n 0000439300 00000 n 0000439417 00000 n 0000441008 00000 n 0000441451 00000 n 0000442061 00000 n trailer << /Root 1830 0 R /Info 1 0 R /ID [<1A565511B77D825757479EF939A84457> <1A565511B77D825757479EF939A84457>] /Size 1833 >> startxref 442101 %%EOF systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/SystemTap_Beginners_Guide.xml000066400000000000000000000027351305163227500277430ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Tips_Tricks.xml000066400000000000000000000012121305163227500251240ustar00rootroot00000000000000 Tips and Tricks - This chapter covers miscellaneous tips/tricks - This is a tentative section, and will only be included if content can be provided - add use of exit() here - add "basic constructs" here; that is, using if/else, while loops, for loops, examples; if done, consider moving up to before Useful_SystemTap_Scripts.xm, after Understanding_How_SystemTap_Works.xml systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml000066400000000000000000000200141305163227500315070ustar00rootroot00000000000000 Understanding How SystemTap Works Short summary; probes, handlers, events Understanding How SystemTap Works SystemTap allows users to write and reuse simple scripts to deeply examine the activities of a running Linux system. These scripts can be designed to extract data, filter it, and summarize it quickly (and safely), enabling the diagnosis of complex performance (or even functional) problems. Understanding How SystemTap Works events and handlers events and handlers handlers and events The essential idea behind a SystemTap script is to name events, and to give them handlers. When SystemTap runs the script, SystemTap monitors for the event; once the event occurs, the Linux kernel then runs the handler as a quick sub-routine, then resumes. Understanding How SystemTap Works event types event types Understanding How SystemTap Works There are several kind of events; entering/exiting a function, timer expiration, session termination, etc. A handler is a series of script language statements that specify the work to be done whenever the event occurs. This work normally includes extracting data from the event context, storing them into internal variables, and printing results.

    Architecture ** add diagram, describe architecture, enumerate common tools ** architecture diagram must be simpler, if at all included ** add design advantages? e.g. "building kmods on-the-fly allows safer execution of script etc etc" Understanding How SystemTap Works architecture architecture of SystemTap SystemTap architecture A SystemTap session begins when you run a SystemTap script. This session occurs in the following fashion: SystemTap Session Understanding How SystemTap Works SystemTap sessions SystemTap sessions sessions, SystemTap First, SystemTap checks the script against the existing tapset library (normally in /usr/share/systemtap/tapset/ for any tapsets used. SystemTap will then substitute any located tapsets with their corresponding definitions in the tapset library. SystemTap then translates the script to C, running the system C compiler to create a kernel module from it. The tools that perform this step are contained in the systemtap package (refer to for more information). SystemTap loads the module, then enables all the probes (events and handlers) in the script. The staprun in the systemtap-runtime package (refer to for more information) provides this functionality. As the events occur, their corresponding handlers are executed. Once the SystemTap session is terminated, the probes are disabled, and the kernel module is unloaded. This sequence is driven from a single command-line program: stap. This program is SystemTap's main front-end tool. For more information about stap, refer to man stap (once SystemTap is properly installed on your machine).
    Tapsets Tapsets definition of definition, significance, difference with stap scripts (previous section), library of tapsets in system: location Tapsets are scripts that form a library of pre-written probes and functions to be used in SystemTap scripts. When a user runs a SystemTap script, SystemTap checks the script's probe events and handlers against the tapset library; SystemTap then loads the corresponding probes and functions before translating the script to C (refer to for information on what transpires in a SystemTap session). Like SystemTap scripts, tapsets use the file name extension .stp. The standard library of tapsets is located in /usr/share/systemtap/tapset/ by default. However, unlike SystemTap scripts, tapsets are not meant for direct execution; rather, they constitute the library from which other scripts can pull definitions. The tapset library is an abstraction layer designed to make it easier for users to define events and functions. Tapsets provide useful aliases for functions that users may want to specify as an event; knowing the proper alias to use is, for the most part, easier than remembering specific kernel functions that might vary between kernel versions. Several handlers and functions in and are defined in tapsets. For example, thread_indent() is defined in indent.stp. any other details to be included? i dont want to dwell too long here, though, since IMHO tapset development is beyond the scope of this "beginner's guide"
    systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Advanced_Scripts.xml000066400000000000000000000030041305163227500274260ustar00rootroot00000000000000 Useful SystemTap Scripts This chapter contains several advanced applications of SystemTap. The scripts enumerated herein combine SystemTap scripts with other tools in order to address some complex administrative tasks. All of these scripts are available at the following link: http://sourceware.org/systemtap/wiki/WarStories?action=fullsearch&context=180&value=traceio2&titlesearch=Titles Due to the relative length of the scripts discussed in this chapter, the full version of each script is documented in . this chapter will feature the following scripts: http://sourceware.org/systemtap/wiki/WSPSTimeouts?highlight=((WarStories)) http://sourceware.org/systemtap/wiki/WSPfiles?highlight=((WarStories)) http://sourceware.org/systemtap/wiki/WSPSTimeouts?highlight=%28%28WarStories%29%29 WAIT http://sourceware.org/systemtap/wiki/WSPanicOnOom?highlight=((WarStories)) http://sourceware.org/systemtap/wiki/WSPfiles?highlight=((WarStories)) systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Disk.xml000066400000000000000000000110271305163227500265350ustar00rootroot00000000000000
    Real-Time Graphing of Disk and CPU Utilization http://sourceware.org/systemtap/examples/subsystem-index.html Graphing Disk and CPU Utilization - http://sourceware.org/systemtap/examples/general/graphs.stp This section describes how you can graph disk and CPU utilization in real-time, that is, in samples of 1 second each. disk-usage-graph.stp #! stap # disk I/O stats probe begin { qnames["ioblock"] ++; qsq_start ("ioblock") } probe ioblock.request { qs_wait ("ioblock") qs_run("ioblock") } probe ioblock.end { qs_done ("ioblock") } # CPU utilization probe begin { qnames["cpu"] ++; qsq_start ("cpu") } probe scheduler.cpu_on { if (!idle) {qs_wait ("cpu") qs_run ("cpu") }} probe scheduler.cpu_off { if (!idle) qs_done ("cpu") } # ------------------------------------------------------------------------ # utilization history tracking global N probe begin { N = 50 } global qnames, util, histidx function qsq_util_reset(q) { u=qsq_utilization (q, 100) qsq_start (q) return u } probe timer.ms(100) { # collect utilization percentages frequently histidx = (histidx + 1) % N # into circular buffer foreach (q in qnames) util[histidx,q] = qsq_util_reset(q) } # ------------------------------------------------------------------------ # general gnuplot graphical report generation probe timer.ms(1000) { # emit gnuplot command to display recent history printf ("set yrange [0:100]\n") printf ("plot ") foreach (q in qnames+) { if (++nq >= 2) printf (", ") printf ("'-' title \"%s\" with lines", q) } printf ("\n") foreach (q in qnames+) { for (i = (histidx + 1) % N; i != histidx; i = (i + 1) % N) printf("%d\n", util[i,q]) printf ("e\n") } printf ("pause 1\n") } outputs raw statistics on both CPU and disk usage per second. I/O usage is tracked through the events ioblock.request and ioblock.request.end, which track each request (and request completion) for a generic block I/O. CPU usage is tracked through scheduler.cpu_on and scheduler.cpu_off, which are activated whenever a process begins (and ends) a command execution on a CPU.
    gnuplot Running by itself hardly presents any data that is useful, as in . Raw disk-usage-graph.stp Output [...] 62 5 3 4 6 4 4 5 5 3 6 5 e pause 1 However, refining the output of through gnuplot presents us with a more useful result. gnuplot is a lightweight, command-line driven plotting program that helps you display data in a graphical format. By piping output to gnuplot (as in stap disk-usage-gr http://sourceware.org/systemtap/examples/subsystem-index.html Graphing Disk and CPU Utilization - http://sourceware.org/systemtap/examples/general/graphs.stp aph.stp | gnuplot), we get a graphical output similar to the following:
    Graphical Output Sample Sample output
presents a cleaner, more useful graphical output. This graph can show you the level of utilization for both I/O and CPU, in real time. question: does this script also capture stap process? that is, does the graph also include CPU utilization by systemtap while the script is running? systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-IO.xml000066400000000000000000000014571305163227500261600ustar00rootroot00000000000000
I/O Subsystem http://sourceware.org/systemtap/examples/subsystem-index.html Tally Reschedule Reason During AIO io_submit Call - http://sourceware.org/systemtap/examples/io/io_submit.stp Periodically Print I/O Activity by Process Name - http://sourceware.org/systemtap/examples/io/iotop.stp Track Cumulative I/O Activity by Process Name - http://sourceware.org/systemtap/examples/io/traceio.stp Watch I/O Activity on a Particular Device http://sourceware.org/systemtap/examples/io/traceio2.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Kernel.xml000066400000000000000000000014151305163227500270630ustar00rootroot00000000000000
Kernel http://sourceware.org/systemtap/examples/subsystem-index.html Tracing Calls for Sections of Code - http://sourceware.org/systemtap/examples/general/para-callgraph.stp Profile kernel functions - http://sourceware.org/systemtap/examples/process/pf2.stp Count Times Functions Called - http://sourceware.org/systemtap/examples/profiling/functioncallcount.stp Profile kernel functions - http://sourceware.org/systemtap/examples/profiling/thread-times.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Network.xml000066400000000000000000000011001305163227500272630ustar00rootroot00000000000000
Network http://sourceware.org/systemtap/examples/subsystem-index.html Periodic Listing of Processes Using Network Interfaces - http://sourceware.org/systemtap/examples/network/nettop.stp Trace Functions called in Network Socket Code - http://sourceware.org/systemtap/examples/network/socket-trace.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Others.xml000066400000000000000000000013331305163227500271060ustar00rootroot00000000000000
Other Useful Scripts http://sourceware.org/systemtap/examples/subsystem-index.html SCHEDULER - Generating Backtraces of Threads Waiting for IO Operations - http://sourceware.org/systemtap/examples/process/sleepingBeauties.stp LOCKING - System-Wide Futex Contention - http://sourceware.org/systemtap/examples/process/futexes.stp CPU - Graphing Disk and CPU Utilization - http://sourceware.org/systemtap/examples/general/graphs.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Signals.xml000066400000000000000000000014101305163227500272360ustar00rootroot00000000000000
Signals http://sourceware.org/systemtap/examples/subsystem-index.html Signal Counts by Process ID - http://sourceware.org/systemtap/examples/process/sig_by_pid.stp Signal Counts by Process Name - http://sourceware.org/systemtap/examples/process/sig_by_proc.stp Track SIGKILL Signals - http://sourceware.org/systemtap/examples/process/sigkill.stp System-Wide Count of Syscalls by PID - http://sourceware.org/systemtap/examples/process/syscalls_by_pid.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-Syscalls.xml000066400000000000000000000016701305163227500274430ustar00rootroot00000000000000
System Calls http://sourceware.org/systemtap/examples/subsystem-index.html Trace Time Spent in Read and Write for Files - http://sourceware.org/systemtap/examples/io/iotime.stp Trace Time Spent in nanosleep Syscalls - http://sourceware.org/systemtap/examples/process/sleeptime.stp System-Wide Count of Syscalls by PID - http://sourceware.org/systemtap/examples/process/syscalls_by_pid.stp System-Wide Count of Syscalls by Executable - http://sourceware.org/systemtap/examples/process/syscalls_by_proc.stp Trace Time Spent in wait4 Syscalls - http://sourceware.org/systemtap/examples/process/wait4time.stp
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml000066400000000000000000000163121305163227500273220ustar00rootroot00000000000000
Summarizing Disk Read/Write Traffic script examples summarizing disk I/O traffic examples of SystemTap scripts summarizing disk I/O traffic summarizing disk I/O traffic script examples NO ENTRY IN WAR STORIES: Summarize Disk Read/Write Traffic http://sourceware.org/systemtap/examples/io/disktop.stp disk I/O traffic, summarizing script examples I/O traffic, summarizing script examples heaviest disk reads/writes, identifying script examples summarizing disk I/O traffic script examples identifying heaviest disk reads/writes script examples This section describes how to identify which processes are performing the heaviest disk reads/writes to the system. disktop.stp outputs the top ten processes responsible for the heaviest reads/writes to disk. displays a sample output for this script, and includes the following data per listed process: UID — user ID. A user ID of 0 refers to the root user. PID — the ID of the listed process. PPID — the process ID of the listed process's parent process. CMD — the name of the listed process. DEVICE — which storage device the listed process is reading from or writing to. T — the type of action performed by the listed process; W refers to write, while R refers to read. BYTES — the amount of data read to or written from disk. script examples ctime(), example of usage examples of SystemTap scripts ctime(), example of usage ctime(), example of usage script examples The time and date in the output of is returned by the functions ctime() and gettimeofday_s(). ctime() derives calendar time in terms of seconds passed since the Unix epoch (January 1, 1970). gettimeofday_s() counts the actual number of seconds since Unix epoch, which gives a fairly accurate human-readable timestamp for the output. local variables sample usage $return variables (local) sample usage $return $return sample usage local variables In this script, the $return is a local variable that stores the actual number of bytes each process reads or writes from the virtual file system. $return can only be used in return probes (for example, vfs.read.return and vfs.read.return). <xref linkend="scriptdisktop"/> Sample Output [...] Mon Sep 29 03:38:28 2008 , Average: 19Kb/sec, Read: 7Kb, Write: 89Kb UID PID PPID CMD DEVICE T BYTES 0 26319 26294 firefox sda5 W 90229 0 2758 2757 pam_timestamp_c sda5 R 8064 0 2885 1 cupsd sda5 W 1678 Mon Sep 29 03:38:38 2008 , Average: 1Kb/sec, Read: 7Kb, Write: 1Kb UID PID PPID CMD DEVICE T BYTES 0 2758 2757 pam_timestamp_c sda5 R 8064 0 2885 1 cupsd sda5 W 1678
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-dropwatch.xml000066400000000000000000000102421305163227500276340ustar00rootroot00000000000000
Monitoring Network Packets Drops in Kernel script examples network profiling examples of SystemTap scripts network profiling network profiling examples of SystemTap scripts profiling the network examples of SystemTap scripts network traffic, monitoring examples of SystemTap scripts tracepoint The network stack in Linux can discard packets for various reasons. Some Linux kernels include a tracepoint, kernel.trace("kfree_skb"), which easily tracks where packets are discarded. uses kernel.trace("kfree_skb") to trace packet discards; the script summarizes which locations discard packets every five-second interval. dropwatch.stp The kernel.trace("kfree_skb") traces which places in the kernel drop network packets. The kernel.trace("kfree_skb") has two arguments: a pointer to the buffer being freed ($skb) and the location in kernel code the buffer is being freed ($location). The script provides the function containing $location where possible. The information to map $location back to the function is not in the instrumentation by default. On SystemTap 1.4 the --all-modules option will include the required mapping information and the following command can be used to run the script: stap --all-modules dropwatch.stp On older versions of SystemTap you can use the following command to emulate the --all-modules option: stap -dkernel \ `cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \ dropwatch.stp Running the dropwatch.stp script 15 seconds would result in output similar in . The output lists the number of misses for each tracepoint location with either the function name or the address. <xref linkend="dropwatch"/> Sample Output Monitoring for dropped packets 1762 packets dropped at unix_stream_recvmsg 4 packets dropped at tun_do_read 2 packets dropped at nf_hook_slow 467 packets dropped at unix_stream_recvmsg 20 packets dropped at nf_hook_slow 6 packets dropped at tun_do_read 446 packets dropped at unix_stream_recvmsg 4 packets dropped at tun_do_read 4 packets dropped at nf_hook_slow Stopping dropped packet monitor When the script is being compiled on one machine and run on another the --all-modules and /proc/modules directory are not available; the symname function will just print out the raw address. To make the raw address of packet drops more meaningful, refer to the /boot/System.map-`uname -r` file. This file lists the starting addresses for each function, allowing you to map the addresses in the output of to a specific function name. Given the following snippet of the /boot/System.map-`uname -r` file, the address 0xffffffff8149a8ed maps to the function unix_stream_recvmsg: [...] ffffffff8149a420 t unix_dgram_poll ffffffff8149a5e0 t unix_stream_recvmsg ffffffff8149ad00 t unix_find_other [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-functioncalls.xml000066400000000000000000000065351305163227500305170ustar00rootroot00000000000000
Counting Function Calls Made script examples tallying function calls examples of SystemTap scripts tallying function calls tallying function calls examples of SystemTap scripts counting function calls examples of SystemTap scripts function calls, tallying examples of SystemTap scripts WAR STORY: Function call count http://sourceware.org/systemtap/wiki/WSFunctionCallCount?highlight=((WarStories)) no script in examples This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on the use of wildcards, you can also use this script to target multiple kernel functions. functioncallcount.stp takes the targeted kernel function as an argument. The argument supports wildcards, which enables you to target multiple kernel functions up to a certain extent. script examples timer.ms(), sample usage examples of SystemTap scripts timer.ms(), sample usage timer.ms(), sample usage examples of SystemTap scripts The output of contains the name of the function called and how many times it was called during the sample time (in alphabetical order). contains an excerpt from the output of stap functioncallcount.stp "*@mm/*.c": <xref linkend="countcalls"/> Sample Output [...] __vma_link 97 __vma_link_file 66 __vma_link_list 97 __vma_link_rb 97 __xchg 103 add_page_to_active_list 102 add_page_to_inactive_list 19 add_to_page_cache 19 add_to_page_cache_lru 7 all_vm_events 6 alloc_pages_node 4630 alloc_slabmgmt 67 anon_vma_alloc 62 anon_vma_free 62 anon_vma_lock 66 anon_vma_prepare 98 anon_vma_unlink 97 anon_vma_unlock 66 arch_get_unmapped_area_topdown 94 arch_get_unmapped_exec_area 3 arch_unmap_area_topdown 97 atomic_add 2 atomic_add_negative 97 atomic_dec_and_test 5153 atomic_inc 470 atomic_inc_and_test 1 [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-futexes.xml000066400000000000000000000117151305163227500273320ustar00rootroot00000000000000
Identifying Contended User-Space Locks script examples identifying contended user-space locks (futex contentions) examples of SystemTap scripts identifying contended user-space locks (futex contentions) identifying contended user-space locks (futex contentions) examples of SystemTap scripts contended user-space locks (futex contentions), identifying examples of SystemTap scripts WAR STORY: Futex contention http://sourceware.org/systemtap/wiki/WSFutexContention?highlight=((WarStories)) This section describes how to identify contended user-space locks throughout the system within a specific time period. The ability to identify contended user-space locks can help you investigate poor program performance that you suspect may be caused by futex contentions. futex contentions, identifying examples of SystemTap scripts futex contention, definition examples of SystemTap scripts script examples futex (lock) contentions examples of SystemTap scripts futex (lock) contentions futex (lock) contentions examples of SystemTap scripts Simply put, futex contention occurs when multiple processes are trying to access the same lock variable at the same time. This can result in a poor performance because the lock serializes execution; one process obtains the lock while the other processes must wait for the lock variable to become available again. script examples futex system call examples of SystemTap scripts futex system call futex system call examples of SystemTap scripts The script probes the futex system call to show lock contention. futexes.stp needs to be manually stopped; upon exit, it prints the following information: Name and ID of the process responsible for a contention The location of the contested lock variable How many times the lock variable was contended Average time of contention throughout the probe contains an excerpt from the output of upon exiting the script (after approximately 20 seconds). <xref linkend="futexcontention"/> Sample Output [...] automount[2825] lock 0x00bc7784 contended 18 times, 999931 avg us synergyc[3686] lock 0x0861e96c contended 192 times, 101991 avg us synergyc[3758] lock 0x08d98744 contended 192 times, 101990 avg us synergyc[3938] lock 0x0982a8b4 contended 192 times, 101997 avg us [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml000066400000000000000000000122531305163227500277720ustar00rootroot00000000000000
Monitoring Reads and Writes to a File script examples monitoring reads and writes to a file examples of SystemTap scripts monitoring reads and writes to a file monitoring reads and writes to a file examples of SystemTap scripts file reads/writes, monitoring examples of SystemTap scripts reads/writes to a file, monitoring examples of SystemTap scripts writes/reads to a file, monitoring examples of SystemTap scripts WAR STORY: monitoring inode activity http://sourceware.org/systemtap/wiki/WSFileMonitor?highlight=((WarStories)) no script in examples This section describes how to monitor reads from and writes to a file in real time. inodewatch.stp need to add references to sources/man pages that explain how "dev_nr = $file->f_dentry->d_inode->i_sb->s_dev" and "($1 << 20 | $2)". takes the following information about the file as arguments on the command line: script examples file device number (integer format) examples of SystemTap scripts file device number (integer format) file device number (integer format) examples of SystemTap scripts device number of a file (integer format) examples of SystemTap scripts The file's major device number. The file's minor device number. The file's inode number. script examples stat -c, determining file device number (integer format) examples of SystemTap scripts stat -c, determining file device number (integer format) stat -c, determining file device number (integer format) examples of SystemTap scripts To get this information, use stat -c '%D %i' filename, where filename is an absolute path. For instance: to monitor /etc/crontab, run stat -c '%D %i' /etc/crontab first. This gives the following output: 805 1078319 script examples inode number examples of SystemTap scripts inode number inode number examples of SystemTap scripts 805 is the base-16 (hexadecimal) device number. The lower two digits are the minor device number and the upper digits are the major number. 1078319 is the inode number. To start monitoring /etc/crontab, run stap inodewatch.stp 0x8 0x05 1078319 (The 0x prefixes indicate base-16 values. The output of this command contains the name and ID of any process performing a read/write, the function it is performing (that is, vfs_read or vfs_write), the device number (in hex format), and the inode number. contains the output of stap inodewatch.stp 0x8 0x05 1078319 (when cat /etc/crontab is executed while the script is running) : <xref linkend="inodewatch"/> Sample Output cat(16437) vfs_read 0x800005/1078319 cat(16437) vfs_read 0x800005/1078319
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch2.xml000066400000000000000000000057141305163227500300600ustar00rootroot00000000000000
Monitoring Changes to File Attributes script examples monitoring changes to file attributes examples of SystemTap scripts monitoring changes to file attributes monitoring changes to file attributes examples of SystemTap scripts changes to file attributes, monitoring examples of SystemTap scripts file attributes, monitoring changes to examples of SystemTap scripts WAR STORY: monitoring more inode activity http://sourceware.org/systemtap/wiki/WSFileMonitor2?highlight=((WarStories)) no script in examples This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time. inodewatch2.stp Like from , takes the targeted file's device number (in integer format) and inode number as arguments. For more information on how to retrieve this information, refer to . The output for is similar to that of , except that also contains the attribute changes to the monitored file, as well as the ID of the user responsible (uid()). shows the output of while monitoring /home/joe/bigfile when user joe executes chmod 777 /home/joe/bigfile and chmod 666 /home/joe/bigfile. <xref linkend="inodewatch2"/> Sample Output chmod(17448) inode_setattr 0x800005/6011835 100777 500 chmod(17449) inode_setattr 0x800005/6011835 100666 500
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-ioblktime.xml000066400000000000000000000066531305163227500276330ustar00rootroot00000000000000
Periodically Print I/O Block Time script examples monitoring I/O block time examples of SystemTap scripts monitoring I/O block time monitoring I/O block time examples of SystemTap scripts I/O block time, monitoring examples of SystemTap scripts printing I/O block time (periodically) examples of SystemTap scripts This section describes how to track the amount of time each block I/O requests spends waiting for completion. This is useful in determining whether there are too many outstanding block I/O operations at any given time. ioblktime.stp computes the average waiting time for block I/O per device, and prints a list every 10 seconds. As always, you can revise this refresh rate by editing the specified value in probe timer.s(10), end {. In some cases, there can be too many outstanding block I/O operations, at which point the script can exceed the default number of MAXMAPENTRIES. MAXMAPENTRIES is the maximum number of rows in an array if the array size is not specified explicitly when declared. If the script exceeds the default MAXMAPENTRIES value of 2048, run the script again with the stap option -DMAXMAPENTRIES=10000. <xref linkend="ioblktime"/> Sample Output device rw total (us) count avg (us) sda W 9659 6 1609 dm-0 W 20278 6 3379 dm-0 R 20524 5 4104 sda R 19277 5 3855 displays the device name, operations performed (rw), total wait time of all operations (total(us)), number of operations (count), and average wait time for all those operations (avg (us)). The times tallied by the script are in microseconds.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml000066400000000000000000000123231305163227500271310ustar00rootroot00000000000000
Tracking I/O Time For Each File Read or Write script examples monitoring I/O time examples of SystemTap scripts monitoring I/O time monitoring I/O time examples of SystemTap scripts I/O time, monitoring examples of SystemTap scripts time of I/O examples of SystemTap scripts This section describes how to monitor the amount of time it takes for each process to read from or write to any file. This is useful to determine what files are slow to load on a given system. iotime.stp tracks each time a system call opens, closes, reads from, and writes to a file. For each file any system call accesses, counts the number of microseconds it takes for any reads or writes to finish and tracks the amount of data (in bytes) read from or written to the file. local variables sample usage $count variables (local) sample usage $count $count sample usage local variables also uses the local variable $count to track the amount of data (in bytes) that any system call attempts to read or write. Note that $return (as used in from ) stores the actual amount of data read/written. $count can only be used on probes that track data reads or writes (that is, syscall.read and syscall.write). <xref linkend="iotime"/> Sample Output [...] 825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 [...] 117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 [...] 3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 3973744 2886 (sendmail) iotime /proc/loadavg time: 11 [...] prints out the following data: A timestamp, in microseconds. Process ID and process name. An access or iotime flag. The file accessed. If a process was able to read or write any data, a pair of access and iotime lines should appear together. The access line's timestamp refers to the time that a given process started accessing a file; at the end of the line, it will show the amount of data read/written (in bytes). The iotime line will show the amount of time (in microseconds) that the process took in order to perform the read or write. If an access line is not followed by an iotime line, it means that the process did not read or write any data.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotop.xml000066400000000000000000000070011305163227500267720ustar00rootroot00000000000000
Periodically Print I/O Activity script examples monitoring I/O activity examples of SystemTap scripts monitoring I/O activity monitoring I/O activity examples of SystemTap scripts I/O activity, monitoring examples of SystemTap scripts printing I/O activity (periodically) examples of SystemTap scripts This section describes how to monitor I/O activity on the system. iotop.stp prints out the top ten executables generating I/O traffic every 5-second interval, in descending order. Its output contains the process name and the amount of data read or written by the process, in KB. For example: <xref linkend="iotop"/> Sample Output [...] Process KB Read KB Written Xorg 50287 0 staprun 3328 0 multiload-apple 3039 23 sshd 208 1 floaters 14 62 NetworkManager 15 0 gnome-vfs-daemo 8 0 cupsd 3 3 sendmail 4 0 mixer_applet2 3 0 Process KB Read KB Written Xorg 51886 0 staprun 3328 0 multiload-apple 3039 23 sshd 1344 4 snmpd 90 0 floaters 15 66 NetworkManager 23 0 irqbalance 16 0 pam_timestamp_c 9 0 sendmail 4 0 displays top I/O writes and reads within a random 10-second interval. Note that also detects I/O resulting from SystemTap activity — displays reads done by staprun.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-kernelprofiling.xml000066400000000000000000000101741305163227500310370ustar00rootroot00000000000000
Kernel Profiling WAR STORY: Kernel Profiling http://sourceware.org/systemtap/wiki/WSKernelProfile?highlight=((WarStories)) http://sourceware.org/systemtap/examples/process/pf2.stp In , you can revise the wildcards used in the probe to target all kernel functions. This can be useful if you are interested in indentifying what the kernel is performing over a specific time period. However, doing so can cause considerable stress on the machine. In addition, this does not provide any indication of whether a specific function is being called too often during small time increments. This section describes how to profile the kernel properly. does this by providing a list of the top ten kernel functions called within a specific time period, and how many times each function was called during that time. kernelprof.stp #! /usr/bin/env stap global profile, pcount probe timer.profile { pcount <<< 1 fn = probefunc () if (fn != "") profile[fn] <<< 1 } probe timer.ms(5000) { printf ("\n--- %d samples recorded:\n", @count(pcount)) foreach (f in profile- limit 10) { printf ("%-30s\t%6d\n", f, @count(profile[f])) } delete profile delete pcount } records and outputs kernel functions called every 5 seconds. You can change this setting by editing probe timer.ms(5000) accordingly. contains an excerpt of the output over a 20-second period: <xref linkend="kernelprof"/> Sample Output [...] --- 10002 samples recorded: sys_recvfrom 1 memmove 1 __copy_from_user_ll 17 __copy_to_user_ll 15 mwait_idle 5868 link_path_walk 1 kfree 1 fget_light 1 audit_syscall_exit 1 __d_lookup 1 --- 10002 samples recorded: sysfs_read_file 1 free_poll_entry 1 syscall_exit_work 1 profile_hit 1 do_page_fault 2 _read_lock 3 kmap_atomic 4 strncpy_from_user 1 find_vma_prepare 1 __copy_from_user_ll 12 --- 10000 samples recorded: system_call 4 unix_stream_sendmsg 1 __d_path 1 do_page_fault 2 kmap_atomic 1 find_vma 1 __copy_to_user_ll 16 __copy_from_user_ll 10 mwait_idle 5759 memcpy_fromiovec 1 --- 10004 samples recorded: syscall_exit 1 __d_path 1 fput 2 do_page_fault 4 strncpy_from_user 1 may_open 1 ide_outb 1 ide_outsw 1 __copy_to_user_ll 11 __copy_from_user_ll 14 [...] allows you to identify interesting kernel-specific performance facts about the system, such as kernel-intensive workloads and idle times (in this case, mwait_idle. Note that does not count user-space functions, although it counts all kernel functions as part of the sample (even if the script cannot identify from which specific kernel function a call originated.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml000066400000000000000000000141321305163227500271540ustar00rootroot00000000000000
Network Profiling script examples network profiling examples of SystemTap scripts network profiling network profiling examples of SystemTap scripts WAR STORY: Top network users by PID http://sourceware.org/systemtap/wiki/WSNetTop?highlight=((WarStories)) probably http://sourceware.org/systemtap/examples/network/nettop.stp profiling the network examples of SystemTap scripts network traffic, monitoring examples of SystemTap scripts This section describes how to profile network activity. provides a glimpse into how much network traffic each process is generating on a machine. nettop.stp script examples if/else conditionals, alternative syntax examples of SystemTap scripts if/else conditionals, alternative syntax if/else conditionals, alternative syntax examples of SystemTap scripts Note that function print_activity() uses the following expressions: n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0 n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0 These expressions are if/else conditionals. The first statement is a more concise way of writing the following psuedo code: if n_recv != 0 then @sum(ifrecv[pid, dev, exec, uid])/1024 else 0 tracks which processes are generating network traffic on the system, and provides the following information about each process: PID — the ID of the listed process. UID — user ID. A user ID of 0 refers to the root user. DEV — which ethernet device the process used to send / receive data (for example, eth0, eth1) XMIT_PK — number of packets transmitted by the process RECV_PK — number of packets received by the process XMIT_KB — amount of data sent by the process, in kilobytes RECV_KB — amount of data received by the service, in kilobytes provides network profile sampling every 5 seconds. You can change this setting by editing probe timer.ms(5000) accordingly. contains an excerpt of the output from over a 20-second period: <xref linkend="nettop"/> Sample Output [...] PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 0 0 eth0 0 5 0 0 swapper 11178 0 eth0 2 0 0 0 synergyc PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 2886 4 eth0 79 0 5 0 cups-polld 11362 0 eth0 0 61 0 5 firefox 0 0 eth0 3 32 0 3 swapper 2886 4 lo 4 4 0 0 cups-polld 11178 0 eth0 3 0 0 0 synergyc PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 0 0 eth0 0 6 0 0 swapper 2886 4 lo 2 2 0 0 cups-polld 11178 0 eth0 3 0 0 0 synergyc 3611 0 eth0 0 1 0 0 Xorg PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 0 0 eth0 3 42 0 2 swapper 11178 0 eth0 43 1 3 0 synergyc 11362 0 eth0 0 7 0 0 firefox 3897 0 eth0 0 1 0 0 multiload-apple [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-paracallgraph.xml000066400000000000000000000122421305163227500304440ustar00rootroot00000000000000
Call Graph Tracing script examples call graph tracing examples of SystemTap scripts call graph tracing call graph tracing examples of SystemTap scripts incoming/outgoing function calls, tracing examples of SystemTap scripts function calls (incoming/outgoing), tracing examples of SystemTap scripts tracing incoming/outgoing function calls examples of SystemTap scripts tracing call graph examples of SystemTap scripts WAR STORY: Call graph tracing http://sourceware.org/systemtap/wiki/WSCallGraph?highlight=((WarStories)) script: http://sourceware.org/systemtap/examples/general/para-callgraph.stp This section describes how to trace incoming and outgoing function calls. para-callgraph.stp script examples multiple command-line arguments, example of examples of SystemTap scripts multiple command-line arguments, example of multiple command-line arguments, example of examples of SystemTap scripts example of multiple command-line arguments examples of SystemTap scripts takes two command-line arguments: script examples trigger function examples of SystemTap scripts trigger function trigger function examples of SystemTap scripts The function/s whose entry/exit call you'd like to trace ($1). A second optional trigger function ($2), which enables or disables tracing on a per-thread basis. Tracing in each thread will continue as long as the trigger function has not exited yet. please verify previous if correct; i'm particularly interested in finding out how to better describe "trigger function" script examples thread_indent(), sample usage examples of SystemTap scripts thread_indent(), sample usage thread_indent(), sample usage examples of SystemTap scripts uses thread_indent(); as such, its output contains the timestamp, process name, and thread ID of $1 (that is, the probe function you are tracing). For more information about thread_indent(), refer to its entry in . The following example contains an excerpt from the output for stap para-callgraph.stp 'kernel.function("*@fs/*.c")' 'kernel.function("sys_read")': <xref linkend="scriptcallgraph"/> Sample Output [...] 267 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5 269 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5 0 gnome-terminal(2921):->fput file=0xffff880111eebbc0 2 gnome-terminal(2921):<-fput 0 gnome-terminal(2921):->fget_light fd=0x3 fput_needed=0xffff88010544df54 3 gnome-terminal(2921):<-fget_light return=0xffff8801116ce980 0 gnome-terminal(2921):->vfs_read file=0xffff8801116ce980 buf=0xc86504 count=0x1000 pos=0xffff88010544df48 4 gnome-terminal(2921): ->rw_verify_area read_write=0x0 file=0xffff8801116ce980 ppos=0xffff88010544df48 count=0x1000 7 gnome-terminal(2921): <-rw_verify_area return=0x1000 12 gnome-terminal(2921): ->do_sync_read filp=0xffff8801116ce980 buf=0xc86504 len=0x1000 ppos=0xffff88010544df48 15 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5 18 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5 0 gnome-terminal(2921):->fput file=0xffff8801116ce980
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml000066400000000000000000000104611305163227500301530ustar00rootroot00000000000000
Tracing Functions Called in Network Socket Code script examples tracing functions called in network socket code examples of SystemTap scripts tracing functions called in network socket code tracing functions called in network socket code examples of SystemTap scripts network socket code, tracing functions called in examples of SystemTap scripts functions called in network socket code, tracing examples of SystemTap scripts http://sourceware.org/systemtap/examples/network/socket-trace.stp script examples net/socket.c, tracing functions from examples of SystemTap scripts net/socket.c, tracing functions from net/socket.c, tracing functions from examples of SystemTap scripts This section describes how to trace functions called from the kernel's net/socket.c file. This task helps you identify, in finer detail, how each process interacts with the network at the kernel level. socket-trace.stp is identical to , which was earlier used in to illustrate how thread_indent() works. <xref linkend="sockettrace"/> Sample Output [...] 0 Xorg(3611): -> sock_poll 3 Xorg(3611): <- sock_poll 0 Xorg(3611): -> sock_poll 3 Xorg(3611): <- sock_poll 0 gnome-terminal(11106): -> sock_poll 5 gnome-terminal(11106): <- sock_poll 0 scim-bridge(3883): -> sock_poll 3 scim-bridge(3883): <- sock_poll 0 scim-bridge(3883): -> sys_socketcall 4 scim-bridge(3883): -> sys_recv 8 scim-bridge(3883): -> sys_recvfrom 12 scim-bridge(3883):-> sock_from_file 16 scim-bridge(3883):<- sock_from_file 20 scim-bridge(3883):-> sock_recvmsg 24 scim-bridge(3883):<- sock_recvmsg 28 scim-bridge(3883): <- sys_recvfrom 31 scim-bridge(3883): <- sys_recv 35 scim-bridge(3883): <- sys_socketcall [...] contains a 3-second excerpt of the output for . For more information about the output of this script as provided by thread_indent(), refer to .
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-syscallsbyprocpid.xml000066400000000000000000000073241305163227500314210ustar00rootroot00000000000000
Tracking System Call Volume Per Process script examples monitoring system calls (volume per process) examples of SystemTap scripts monitoring system calls (volume per process) monitoring system calls (volume per process) examples of SystemTap scripts system calls volume (per process), monitoring examples of SystemTap scripts uses systemtap/testsuite/systemtap.examples/process/syscalls_by_p*.stp This section illustrates how to determine which processes are performing the highest volume of system calls. In previous sections, we've described how to monitor the top system calls used by the system over time (). We've also described how to identify which applications use a specific set of "polling suspect" system calls the most (). Monitoring the volume of system calls made by each process provides more data in investigating your system for polling processes and other resource hogs. syscalls_by_proc.stp lists the top 20 processes performing the highest number of system calls. It also lists how many system calls each process performed during the time period. Refer to for a sample output. <xref linkend="topsys"/> Sample Output Collecting data... Type Ctrl-C to exit and display results #SysCalls Process Name 1577 multiload-apple 692 synergyc 408 pcscd 376 mixer_applet2 299 gnome-terminal 293 Xorg 206 scim-panel-gtk 95 gnome-power-man 90 artsd 85 dhcdbd 84 scim-bridge 78 gnome-screensav 66 scim-launcher [...] To display the process IDs instead of the process names, use the following script instead. syscalls_by_pid.stp As indicated in the output, you need to manually exit the script in order to display the results. You can add a timed expiration to either script by simply adding a timer.s() probe; for example, to instruct the script to expire after 5 seconds, add the following probe to the script: probe timer.s(5) { exit() }
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-tcp_connections.xml000066400000000000000000000051661305163227500310420ustar00rootroot00000000000000
Monitoring Incoming TCP Connections script examples monitoring incoming TCP connections examples of SystemTap scripts monitoring incoming TCP connections monitoring incoming TCP connections examples of SystemTap scripts TCP connections (incoming), monitoring examples of SystemTap scripts incoming TCP connections, monitoring examples of SystemTap scripts This section illustrates how to monitor incoming TCP connections. This task is useful in identifying any unauthorized, suspicious, or otherwise unwanted network access requests in real time. tcp_connections.stp While is running, it will print out the following information about any incoming TCP connections accepted by the system in real time: Current UID CMD - the command accepting the connection PID of the command Port used by the connection IP address from which the TCP connection originated <xref linkend="tcpconnections"/> Sample Output UID CMD PID PORT IP_SOURCE 0 sshd 3165 22 10.64.0.227 0 sshd 3165 22 10.64.0.227
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-tcpdumplike.xml000066400000000000000000000075611305163227500301740ustar00rootroot00000000000000
Monitoring TCP Packets script examples monitoring TCP packets examples of SystemTap scripts monitoring TCP packets monitoring TCP packets examples of SystemTap scripts TCP packets, monitoring examples of SystemTap scripts TCP packets, monitoring examples of SystemTap scripts This section illustrates how to monitor TCP packets received by the system. This is useful in analyzing network traffic generated by applications running on the system. tcpdumplike.stp While is running, it will print out the following information about any received TCP packets in real time: Source and destination IP address (saddr, daddr, respectively) Source and destination ports (sport, dport, respectively) Packet flags To determine the flags used by the packet, uses the following functions: urg - urgent ack - acknowledgement psh - push rst - reset syn - synchronize fin - finished The aforementioned functions return 1 or 0 to specify whether the packet uses the corresponding flag. <xref linkend="tcpdumplike"/> Sample Output ----------------------------------------------------------------- Source IP Dest IP SPort DPort U A P R S F ----------------------------------------------------------------- 209.85.229.147 10.0.2.15 80 20373 0 1 1 0 0 0 92.122.126.240 10.0.2.15 80 53214 0 1 0 0 1 0 92.122.126.240 10.0.2.15 80 53214 0 1 0 0 0 0 209.85.229.118 10.0.2.15 80 63433 0 1 0 0 1 0 209.85.229.118 10.0.2.15 80 63433 0 1 0 0 0 0 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 209.85.229.118 10.0.2.15 80 63433 0 1 1 0 0 0 [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-threadtimes.xml000066400000000000000000000056671305163227500301710ustar00rootroot00000000000000
Determining Time Spent in Kernel and User Space script examples determining time spent in kernel and user space examples of SystemTap scripts determining time spent in kernel and user space determining time spent in kernel and user space examples of SystemTap scripts time spent in kernel/user space, determining examples of SystemTap scripts kernel and user space, determining time spent in examples of SystemTap scripts user and kernel space, determining time spent in examples of SystemTap scripts http://sourceware.org/systemtap/examples/profiling/thread-times.stp This section illustrates how to determine the amount of time any given thread is spending in either kernel or user-space. thread-times.stp script examples CPU ticks examples of SystemTap scripts CPU ticks CPU ticks examples of SystemTap scripts lists the top 20 processes currently taking up CPU time within a 5-second sample, along with the total number of CPU ticks made during the sample. The output of this script also notes the percentage of CPU time each process used, as well as whether that time was spent in kernel space or user space. contains a 5-second sample of the output for : <xref linkend="threadtimes"/> Sample Output tid %user %kernel (of 20002 ticks) 0 0.00% 87.88% 32169 5.24% 0.03% 9815 3.33% 0.36% 9859 0.95% 0.00% 3611 0.56% 0.12% 9861 0.62% 0.01% 11106 0.37% 0.02% 32167 0.08% 0.08% 3897 0.01% 0.08% 3800 0.03% 0.00% 2886 0.02% 0.00% 3243 0.00% 0.01% 3862 0.01% 0.00% 3782 0.00% 0.00% 21767 0.00% 0.00% 2522 0.00% 0.00% 3883 0.00% 0.00% 3775 0.00% 0.00% 3943 0.00% 0.00% 3873 0.00% 0.00%
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-timeout.xml000066400000000000000000000110161305163227500273270ustar00rootroot00000000000000
Monitoring Polling Applications script examples monitoring polling applications examples of SystemTap scripts monitoring polling applications monitoring polling applications examples of SystemTap scripts polling applications, monitoring examples of SystemTap scripts uses systemtap/testsuite/systemtap.examples/profiling/timeout.stp This section describes how to identify and monitor which applications are polling. Doing so allows you to track unnecessary or excessive polling, which can help you pinpoint areas for improvement in terms of CPU usage and power savings. timeout.stp tracks how many times each of the following system calls completed due to time expiring rather than due to an actual event occurring: poll select epoll itimer futex nanosleep signal script examples timer.s(), sample usage examples of SystemTap scripts timer.s(), sample usage timer.s(), sample usage examples of SystemTap scripts <xref linkend="timeouts"/> Sample Output uid | poll select epoll itimer futex nanosle signal| process 28937 | 148793 0 0 4727 37288 0 0| firefox 22945 | 0 56949 0 1 0 0 0| scim-bridge 0 | 0 0 0 36414 0 0 0| swapper 4275 | 23140 0 0 1 0 0 0| mixer_applet2 4191 | 0 14405 0 0 0 0 0| scim-launcher 22941 | 7908 1 0 62 0 0 0| gnome-terminal 4261 | 0 0 0 2 0 7622 0| escd 3695 | 0 0 0 0 0 7622 0| gdm-binary 3483 | 0 7206 0 0 0 0 0| dhcdbd 4189 | 6916 0 0 2 0 0 0| scim-panel-gtk 1863 | 5767 0 0 0 0 0 0| iscsid 2562 | 0 2881 0 1 0 1438 0| pcscd 4257 | 4255 0 0 1 0 0 0| gnome-power-man 4278 | 3876 0 0 60 0 0 0| multiload-apple 4083 | 0 1331 0 1728 0 0 0| Xorg 3921 | 1603 0 0 0 0 0 0| gam_server 4248 | 1591 0 0 0 0 0 0| nm-applet 3165 | 0 1441 0 0 0 0 0| xterm 29548 | 0 1440 0 0 0 0 0| httpd 1862 | 0 0 0 0 0 1438 0| iscsid You can increase the sample time by editing the second probe (timer.s(1)). The output of contains the name and UID of the top 20 polling applications, along with how many times each application performed each polling system call (over time). contains an excerpt of the script. In this particular example firefox is doing an excessive amount of polling due to a plugin module.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-topsys.xml000066400000000000000000000073321305163227500272100ustar00rootroot00000000000000
Tracking Most Frequently Used System Calls script examples monitoring system calls examples of SystemTap scripts monitoring system calls monitoring system calls examples of SystemTap scripts system calls, monitoring examples of SystemTap scripts from helps you identify which applications are polling by examining a small subset of system calls ( poll, select, epoll, itimer, futex, nanosleep, and signal). However, in some systems, an excessive number of system calls outside that small subset might be responsible for time spent in the kernel. If you suspect that an application is using system calls excessively, you need to identify the most frequently used system calls on the system. To do this, use . topsys.stp lists the top 20 system calls used by the system per 5-second interval. It also lists how many times each system call was used during that period. Refer to for a sample output. script examples timer.s(), sample usage examples of SystemTap scripts timer.s(), sample usage timer.s(), sample usage examples of SystemTap scripts <xref linkend="topsys"/> Sample Output -------------------------------------------------------------- SYSCALL COUNT gettimeofday 1857 read 1821 ioctl 1568 poll 1033 close 638 open 503 select 455 write 391 writev 335 futex 303 recvmsg 251 socket 137 clock_gettime 124 rt_sigprocmask 121 sendto 120 setitimer 106 stat 90 time 81 sigreturn 72 fstat 66 --------------------------------------------------------------
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml000066400000000000000000000114771305163227500273020ustar00rootroot00000000000000
Track Cumulative IO script examples tracking cumulative I/O examples of SystemTap scripts tracking cumulative I/O tracking cumulative I/O examples of SystemTap scripts cumulative I/O, tracking examples of SystemTap scripts monitoring cumulative I/O examples of SystemTap scripts printing I/O activity (cumulative) examples of SystemTap scripts This section describes how to track the cumulative amount of I/O to the system. traceio.stp prints the top ten executables generating I/O traffic over time. In addition, it also tracks the cumulative amount of I/O reads and writes done by those ten executables. This information is tracked and printed out in 1-second intervals, and in descending order. local variables sample usage $return variables (local) sample usage $return $return sample usage local variables Note that also uses the local variable $return, which is also used by from . <xref linkend="traceio"/> Sample Output [...] Xorg r: 583401 KiB w: 0 KiB floaters r: 96 KiB w: 7130 KiB multiload-apple r: 538 KiB w: 537 KiB sshd r: 71 KiB w: 72 KiB pam_timestamp_c r: 138 KiB w: 0 KiB staprun r: 51 KiB w: 51 KiB snmpd r: 46 KiB w: 0 KiB pcscd r: 28 KiB w: 0 KiB irqbalance r: 27 KiB w: 4 KiB cupsd r: 4 KiB w: 18 KiB Xorg r: 588140 KiB w: 0 KiB floaters r: 97 KiB w: 7143 KiB multiload-apple r: 543 KiB w: 542 KiB sshd r: 72 KiB w: 72 KiB pam_timestamp_c r: 138 KiB w: 0 KiB staprun r: 51 KiB w: 51 KiB snmpd r: 46 KiB w: 0 KiB pcscd r: 28 KiB w: 0 KiB irqbalance r: 27 KiB w: 4 KiB cupsd r: 4 KiB w: 18 KiB
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml000066400000000000000000000126671305163227500273660ustar00rootroot00000000000000
I/O Monitoring (By Device) script examples monitoring device I/O examples of SystemTap scripts monitoring device I/O monitoring device I/O examples of SystemTap scripts I/O monitoring (by device) examples of SystemTap scripts device I/O, monitoring examples of SystemTap scripts example from http://sourceware.org/systemtap/examples/io/traceio2.stp, but error WAR STORY: http://sourceware.org/systemtap/wiki/WSDeviceMonitor?highlight=((WarStories)), but script errored was able to correct script through http://sourceware.org/systemtap/wiki/WSFileMonitor?highlight=((WarStories)) This section describes how to monitor I/O activity on a specific device. traceio2.stp script examples stat -c, determining whole device number examples of SystemTap scripts stat -c, determining whole device number stat -c, determining whole device number examples of SystemTap scripts script examples whole device number (usage as a command-line argument) examples of SystemTap scripts whole device number (usage as a command-line argument) whole device number (usage as a command-line argument) examples of SystemTap scripts takes 1 argument: the whole device number. To get this number, use stat -c "0x%D" directory, where directory is located in the device to be monitored. script examples usrdev2kerndev() examples of SystemTap scripts usrdev2kerndev() usrdev2kerndev() examples of SystemTap scripts The usrdev2kerndev() function converts the whole device number into the format understood by the kernel. The output produced by usrdev2kerndev() is used in conjunction with the MKDEV(), MINOR(), and MAJOR() functions to determine the major and minor numbers of a specific device. The output of includes the name and ID of any process performing a read/write, the function it is performing (that is, vfs_read or vfs_write), and the kernel device number. The following example is an excerpt from the full output of stap traceio2.stp 0x805, where 0x805 is the whole device number of /home. /home resides in /dev/sda5, which is the device we wish to monitor. <xref linkend="traceio2"/> Sample Output [...] synergyc(3722) vfs_read 0x800005 synergyc(3722) vfs_read 0x800005 cupsd(2889) vfs_write 0x800005 cupsd(2889) vfs_write 0x800005 cupsd(2889) vfs_write 0x800005 [...]
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Useful_SystemTap_Scripts.xml000066400000000000000000000111411305163227500276530ustar00rootroot00000000000000 Useful SystemTap Scripts SystemTap scripts useful examples examples of SystemTap scripts useful examples of SystemTap scripts systemtap-testsuite package sample scripts This chapter enumerates several SystemTap scripts you can use to monitor and investigate different subsystems. All of these scripts are available at /usr/share/systemtap/testsuite/systemtap.examples/ once you install the systemtap-testsuite RPM. short intro, reference to online source (http://sourceware.org/systemtap/examples/subsystem-index.html); "always updated" short description of gnuplot (?) for better GUI of results case studies and more info on some scripts here - http://sourceware.org/systemtap/wiki/WarStories
Network The following sections showcase scripts that trace network-related functions and build a profile of network activity.
Disk The following sections showcase scripts that monitor disk and I/O activity.
Profiling The following sections showcase scripts that profile kernel activity by monitoring function calls.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Userspace_probing.xml000066400000000000000000000274631305163227500263600ustar00rootroot00000000000000 User-space Probing SystemTap initially focused on kernel-space probing. Because there are many instances where user-space probing can help diagnose a problem, SystemTap 0.6 added support to allow probing user-space processes. SystemTap can probe the entry into and return from a function in user-space processes, probe predefined markers in user-space code, and monitor user-process events. SystemTap requires the uprobes module to perform user-space probing. If your Linux kernel is version 3.5 or higher, it already includes uprobes. To verify that the current kernel supports uprobes natively, run the following command: grep CONFIG_UPROBES /boot/config-`uname -r` If uprobes is integrated, the output of this command is as follows: CONFIG_UPROBES=y If you are running a kernel prior to version 3.5, SystemTap automatically builds the uprobes module. However, you also need the utrace kernel extensions required by the SystemTap user-space probing to track various user-space events. More details about the utrace infrastructure are available at . To determine whether the currently running Linux kernel provides the needed utrace support, type the following at a shell prompt: grep CONFIG_UTRACE /boot/config-`uname -r` If the Linux kernel supports user-space probing, the command produces the following output: CONFIG_UTRACE=y
User-Space Events Events user-space All user-space event probes begin with process. You can limit the process events to a specific running process by specifying the process ID. You can also limit the process events to monitor a particular executable by specifying the path to the executable (PATH). SystemTap makes use of the PATH environment variable, which allows you to use both the name used on the command-line to start the executable and the absolute path to the executable. Several of the user-space probe events limit their scope to a particular executable name (PATH), because SystemTap must use debug information to statically analyze where to place the probes. But for many user-space probe events, the process ID and executable name are optional. Any process event in the list below that include process ID or the path to the executable must include those arguments. The process ID and path to the executable are optional for the process events that do not list them: process("PATH").function("function") The entry to the user-space function function for the executable PATH. This event is the user-space analogue of the kernel.function("function") event. It allows wildcards for the function function and .return suffix. process("PATH").statement("statement") The earliest instruction in the code for statement. This is the user-space analogue of kernel.statement("statement"). process("PATH").mark("marker") The static probe point marker defined in PATH. You can use wildcards for marker to specify multiple marks with a single probe. The static probe points may also have numbered arguments ($1, $2, and so on) available to the probe. A variety of user-space packages such as Java include these static probe points. Most packages that provide static probe points also provide aliases for the raw user-space mark events. Below is one such alias for the x86_64 Java hotspot JVM: probe hotspot.gc_begin = process("/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so").mark("gc__begin") process.begin A user-space process is created. You can limit this to a particular process ID or a full path to the executable. process.thread.begin A user-space thread is created. You can limit this to a particular process ID or a full path to the executable. process.end A user-space process dies. You can limit this to a particular process ID or a full path to the executable. process.thread.end A user-space thread is destroyed. You can limit this to a particular process ID or a full path to the executable. process.syscall A user-space process makes a system call. The system call number is available in the $syscall context variable, and the fist six arguments are available in $arg1 through $arg6. The .return suffix places the probe at the return from the system call. For syscall.return, the return value is available through the $return context variable. You can limit this to a particular process ID or a full path to the executable.
Accessing User-Space Target Variables target variables user-space You can access user-space target variables in the same manner as described in . In Linux, however, there are separate address spaces for the user and kernel code. When using the -> operator, SystemTap accesses the appropriate address space. For pointers to base types such as integers and strings, there are a number of functions listed below to access user-space data. The first argument for each functions is the pointer to the data item. user_char(address) Obtains the character at address for the current user process. user_short(address) Obtains the short integer at address for the current user process. user_int(address) Obtains the integer at address for the current user process. user_long(address) Obtains the long integer at address for the current user process. user_string(address) Obtains the string at address for the current user process. user_string_n(address, n) Obtains the string at address for the current user process and limits the string to n bytes.
User-Space Stack Backtraces Stack backtrace user-space The probe point (pp) function indicates which particular event triggered the SystemTap event handler. A probe on the entry into a function would list the function name. However, in many cases the same probe point event may be triggered by many different modules in the program; this is particularly true for functions in shared libraries. A SystemTap backtrace of the user-space stack can provide additional context on how the probe point event is triggered. The user-space stack backtrace generation is complicated by the compiler producing code optimized to eliminate stack frame pointers. However, the compiler also includes information in the debug information section to allow debugging tools to produce stack backtraces. SystemTap user-space stack backtrace mechanism makes use of that debug information to walk the stack to generate stack traces for 32-bit and 64-bit x86 processors; other processor architectures do not yet support the use of debug information to unwind the user-space stack. To ensure that the needed debug information is used to produce the user-space stack backtraces, use the option for executables and for shared libraries. For example, you can use the user-space backtrack functions to see how the xmalloc function is being called by the ls command. With the debuginfo for the ls command installed, the following SystemTap command provides a backtrace each time the xmalloc function is called: stap -d /bin/ls --ldd \ -e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \ -c "ls /" When executed, this command produces output similar to the following: bin dev lib media net proc sbin sys var boot etc lib64 misc op_session profilerc selinux tmp cgroup home lost+found mnt opt root srv usr 0x4116c0 : xmalloc+0x0/0x20 [/bin/ls] 0x4116fc : xmemdup+0x1c/0x40 [/bin/ls] 0x40e68b : clone_quoting_options+0x3b/0x50 [/bin/ls] 0x4087e4 : main+0x3b4/0x1900 [/bin/ls] 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so] 0x402799 : _start+0x29/0x2c [/bin/ls] 0x4116c0 : xmalloc+0x0/0x20 [/bin/ls] 0x4116fc : xmemdup+0x1c/0x40 [/bin/ls] 0x40e68b : clone_quoting_options+0x3b/0x50 [/bin/ls] 0x40884a : main+0x41a/0x1900 [/bin/ls] 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so] ... For more details on the functions available for user-space stack backtraces, refer to ucontext-symbols.stp and ucontext-unwind.stp tapsets. You can also find the description of the functions in the aforementioned tapsets in the SystemTap Tapset Reference Manual.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/Using_SystemTap.xml000066400000000000000000000317141305163227500257760ustar00rootroot00000000000000 Using SystemTap short intro, contents of chapter Using SystemTap This chapter documents how to install SystemTap in the system and explains how to use the stap utility to run SystemTap scripts.
Running SystemTap Scripts - basic commands (e.g. stap), useful options per command (e.g. stap -vv), tool references (man pages, related kernel-doc), references within book (i.e. errors chapter) - running systemtap scripts Usage running SystemTap scripts running SystemTap scripts Usage Usage stap stap Usage Usage staprun staprun Usage SystemTap is distributed with a number of command line tools that allow you to monitor the activities of the system. The stap command reads probing instructions from a SystemTap script, translates these instructions into C code, builds a kernel module, and loads it into the running Linux kernel. The staprun command runs SystemTap instrumentation, that is, a kernel module built from SystemTap scripts during a cross-instrumentation. SystemTap scripts, how to run Running stap and staprun requires elevated privileges to the system. Because not all users can be granted root access just to run SystemTap, you can allow a non-privileged user to run SystemTap instrumentation on their machine by adding them to one of the following user groups: stapdev Usage stapdev stapdev Usage Members of this group can use the stap command to run SystemTap scripts, or staprun to run SystemTap instrumentation modules. Running the stap command involves compiling SystemTap scripts into kernel modules and loading them into the kernel. This operation requires elevated privileges to the system, which are granted to stapdev members. Unfortunately, such privileges also grant effective root access to stapdev members. As a consequence, only grant stapdev group membership to users whom you can trust with root access. stapusr Usage stapusr stapusr Usage Members of this group can only use the staprun command to run SystemTap instrumentation modules. In addition, they can only run modules from the /lib/modules/kernel_version/systemtap/ directory. Note that this directory must be owned only by the root user, and must only be writable by the root user. The stap command reads a SystemTap script either from a file, or from standard input. To tell stap to read a SystemTap script from a file, specify the file name on the command line: stap file_name Usage standard input, running scripts from standard input, running scripts from Usage running scripts from standard input To instruct stap to read a SystemTap script from standard input, use the switch instead of the file name. Note that any command-line options you wish to use must be inserted before the switch. For example, to make the output of the stap command more verbose, type: echo "probe timer.s(1) {exit()}" | stap -v - Below is a list of commonly used stap options: Usage options, stap options, stap Usage stap options -v Makes the output of the SystemTap session more verbose. You can repeat this option multiple times to provide more details on the script's execution, for example: stap -vvv script.stp This option is particularly useful if you encounter any errors in running the script. For more information about common SystemTap script errors, refer to . -o file_name Sends the standard output to a file named file_name. -S size,count Limits the maximum size of output files to size megabytes and the maximum number of stored files to count. This option implements logrotate operations for SystemTap and the resulting file names have a sequence number suffix. -x process_id Sets the SystemTap handler function target() to the specified process ID. For more information about target(), refer to . -c 'command' Sets the SystemTap handler function target() to the specified command and runs the SystemTap instrumentation for the duration of this command. For more information about target(), refer to . -e 'script' Uses script rather than a file as input for the SystemTap translator. -F Uses SystemTap's flight recorder mode and makes the script a background process. For more information about flight recorder mode, refer to . any other useful options worth noting here for beginners? For more information about the stap command, refer to the stap1 man page. For more information about the staprun command and cross-instrumentation, refer to or the staprun8 man page.
SystemTap Flight Recorder Mode flight recorder mode SystemTap's flight recorder mode allows you to run a SystemTap script for long periods of time and just focus on recent output. The flight recorder mode limits the amount of output generated. There are two variations of the flight recorder mode: in-memory and file mode. In both cases, the SystemTap script runs as a background process.
In-memory Flight Recorder flight recorder mode in-memory mode When flight recorder mode is used without a file name, SystemTap uses a buffer in kernel memory to store the output of the script. Once the SystemTap instrumentation module is loaded and the probes start running, the instrumentation detaches and is put in the background. When the interesting event occurs, you can reattach to the instrumentation to see the recent output in the memory buffer and any continuing output. To run a SystemTap script by using the flight recorder in-memory mode, run the stap command with the command line option: stap -F iotime.stp Once the script starts, stap prints a message similar to the following to provide you with the command to reconnect to the running script: Disconnecting from systemtap module. To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556" When the interesting event occurs, run the following command to connect to the currently running script, output the recent data in the memory buffer, and get continuing output: staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556 By default, the kernel buffer is 1MB in size. You can increase this value by using the option with the size in megabytes (rounded up to the next power over 2) for the buffer. For example, on the SystemTap command line would specify 2MB for the buffer.
File Flight Recorder flight recorder mode file mode The flight recorder mode can also store data to files. You can control the number and size of the files kept by using the option followed by two numerical arguments separated by a comma: the first argument is the maximum size in megabytes for the each output file, the second argument is the number of recent files to keep. To specify the file name, use the option followed by the name. SystemTap automatically adds a number suffix to the file name to indicate the order of the files. The following command starts SystemTap in file flight recorder mode with the output going to files named /tmp/iotime.log.[0-9]+, each file 1MB or smaller, and keeping latest two files: stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp The command prints the process ID to standard output. Sending a SIGTERM to the process terminates the SystemTap script and stops the data collection. For example, if the previous command listed 7590 as the process ID, the following command would stop the SystemTap script: kill -s SIGTERM 7590 In this example, only the most recent two files generated by the script are kept: SystemTap automatically removes older files. As a result, the ls -sh /tmp/pfaults.log.* command lists two files: 1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6 To examine the latest data, read the file with the highest number, in this case /tmp/pfaults.log.6.
systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/000077500000000000000000000000001305163227500234565ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/cast_example.stp000066400000000000000000000001571305163227500266560ustar00rootroot00000000000000function task_state:long (task:long) { return @cast(task, "task_struct", "kernel")->state } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/defined_example.stp000066400000000000000000000004341305163227500273200ustar00rootroot00000000000000probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?, kernel.function("handle_mm_fault@mm/memory.c") ? { name = "pagefault" write_access = (@defined($flags) ? $flags & FAULT_FLAG_WRITE : $write_access) address = $address } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/fedoradebugurl.sh000077500000000000000000000005151305163227500270100ustar00rootroot00000000000000#! /bin/bash echo -n "Enter nvr of kernel-debuginfo (e.g. 2.6.25-14.fc9.x86_64) " ; \ read NVR; \ BASE=`uname -m` ; \ NVR=`echo $NVR | sed s/.$BASE//` ; \ VERSION=`echo $NVR | awk -F- '{print $1}'` ; \ RELEASE=`echo $NVR | awk -F- '{print $2}'` ; \ echo "http://kojipkgs.fedoraproject.org/\ packages/kernel/$VERSION/$RELEASE/$BASE/" systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/perror.stp000066400000000000000000000000371305163227500255170ustar00rootroot00000000000000probe vfs.read probe vfs.write systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/rhelchannels.sh000077500000000000000000000010401305163227500264560ustar00rootroot00000000000000#! /bin/bash pkg=`rpm -q --whatprovides "redhat-release"` releasever=`rpm -q --qf "%{version}" $pkg` variant=`echo $releasever | tr -d "[:digit:]" | tr "[:upper:]" "[:lower:]" ` if test -z "$variant"; then echo "No Red Hat Enterprise Linux variant (workstation/client/server) found." exit 1 fi version=`echo $releasever | tr -cd "[:digit:]"` base=`uname -i` echo "rhel-$base-$variant-$version" echo "rhel-$base-$variant-$version-debuginfo" echo "rhel-$base-$variant-optional-$version-debuginfo" echo "rhel-$base-$variant-optional-$version" systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/rheldebugurl.sh000077500000000000000000000003211305163227500264750ustar00rootroot00000000000000#! /bin/bash pkg=`rpm -q --whatprovides "redhat-release"` releasever=`rpm -q --qf "%{version}" $pkg` base=`uname -m` echo "ftp://ftp.redhat.com/pub/redhat/linux/\ enterprise/$releasever/en/os/$base/Debuginfo" systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/extras/werror.stp000066400000000000000000000000401305163227500255200ustar00rootroot00000000000000probe begin { printf("x") = 1 } systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/images/000077500000000000000000000000001305163227500234155ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/images/gnuplotsample.png000077500000000000000000000201361305163227500270220ustar00rootroot00000000000000PNG  IHDR/(?Zj9Rp,T0vӖ@8X|,-:m}w_q)Y[@=϶bG??=U+ret'jW|Wb>x^DϏ2.a7x_K IE[33흉4J*OVϾ^]}aj^Ze2cK*53[^[I^`C>ǻvEXbB1Bs;( _>smU_S(#?yo}{bpݖ(Gyh}cj9xq5qqՙƏw?戈­<_c?O;ŎxW ^;1q,v]zVڛKqڦ(DǷlzω~+rh`]Gi[`׶2^.X~NQaU!yk*Oo?gS{ĚU08Q񙣱MqR|Ǣʸ3wXuם1ykbx썋>1v)q=?3O_.ſ#l^{ŧF̖w?3GǮw5ψgLįwC8DXِ3al6vFӇ㦏aZc#(Dsz&Y""";C#;bpxc|s +]Q>c黷џq] Y' q+N[M7~qݟ}=ν Ҧ8[_Ŋ WgC}{|3q}\1߽q]/+Ц37Yᐫ`l0lfQ [~ϝlzKF#]X,E(cx !~qXl^76Gqh =|~t\~Ʌ1yc<qlÉV#~hMص=btgLĖnG7"޹kKēOXx幨=9^yں""b~ȑ,5~Z-\|w>qQ??ﷴ`\tSK.q,GY0Bt|[C</ kO}`8qL kFk㵙r bqu i;^駝6EY\/m<=퉁_u?\=3D9" Q,ΝAX_5# @vUS0Y5n<߯T>v'/nk=Gab1sO\g<5n'̪8gkGFDՋ>G1x;p~/M[t߁xGc7/z*> _}ol*m[mϝ~š(->8=Q\j\V4RnzJM/"ED?}iӫ-wmPsxb?s?}XٵW/y-~ŕgxybpp0~qPu4k};?ϼgGuWqI|;~=u7K.Wc?&>{b"V,ڿg'㪷oyyQ(_Սq|/Vm0 '?q8ct_vYِ3#xg?v k̅fg˯{OplƸ-7f{LP oUFy]1u᱋<;cO1>3GFapexqxط2k/O_DqyiW;?wgLY\?؁'bQj1t뢸vSsqm7Ǒ쫇"b{թSlȑv[jf>8 b[ ].V@N7lGt_;QّQ(Ć~#G;}l #Q.GXgF#p=]ry& +q{˳[X1ç]6Gg"ʅ1vSV+]O8zhCSQ\Ŋi: ][I^Љ5QXLoX"b`u[Ea~V †m1uG7!V]+5^;T}8}׿bzȤ]sG/ES,ݰW3w|ݷTMO04W;}uߛ5 xe(k?c+`ގkOcD7-'X2;(Z4#H~0ƺq2͢pjb|} c%}:}cX Y>F! [`rVO}W6,A5nLpJ:#1PIEqFcF͜Mzэw %`$د;"FR=S}G.?Ȃ8u lr*1GѸQ',zH`dA *< pt]@0fR_ԍ,a[@0rh#XH p `@0F#,7@02J;`IF#Iֿ`@0 rr"`@0 Dq 059[,"#H7 Ʈ-rjǃpjb|_u V>h$ !Fk0TaeT]ݜ@%,`RRu79n]T;poŴ-B3)znTI5ωEcm$.st@@iR&nx@0 F#(nx@0""`@0w@\ `@0  a~߹#`w=@0'#U~1S<@0 F nx@0 !K@q4S9HMOLj<_VD#`r1$`Ré<洖uxV_jC^u`l:OE {ij$6Ӷ* ͨ#˲͹9X{tuV>'rAҹ X;FFHF#X:@0 -#S1ŝ~`@0B4:EFF#FX.1R#G`@0 @0R5z{@F;P (#]0eLX]a]D F.FF#\FЎҘG 2`@0)aHFԤFȉq@0 C`@0 !+F ""'cG#uNݍ:Gx1951.A $Vb1"D#@ރ:lXn\0ާ`\û(1 F2R טК\(@sU@f$QuYQ0t 1 F#|cbq46Һ!yiɒDhi,&Ubs~`T@0vh3r]΃q[~;D:,LUdbȷnIYDF,h;(#݌E@³]0ژ軤-B#@?$z^iWQ,8Ob^[rրRnJ؁gDZF92ix#Ɣx{#qsO` `>Mhe$p7=4nZU`>WӸ| E;f<@콳m{di;59 Iiv{ rJ@$}OAέw#=y 2߶:*hTBZ Z^P򶿭nLig\D+ =7ĐEFv_[woj/F!1 dQgHwbp2g)v{~SA0f2{A_,v*Mōɖ]ؼ}xN\x7{`p 7ۉ_QGȳf](`lC3)|-^L؀<`RF̀ιT0BnLuG 'n1(31 H F ׌. F(`%~-@04A^F# QǹYLϣ3{ftNы4?[{Lz:d::۾5x:}}!tp50/k?#6֧dcVaw~<گڗmRӚ֧XLԟ캷,oY[Y;޽uhv_.NIg:Y|D#cVyy]:La\.Gwӓ{&ŏ54'F#`@0 @0 F#@ Vݖmo`B\.[ 4/IENDB`systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/images/icon.svg000066400000000000000000003301271305163227500250740ustar00rootroot00000000000000 image/svg+xml id="path2858" /> systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/xsl/000077500000000000000000000000001305163227500227565ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/xsl/defaults.xsl000066400000000000000000000173461305163227500253300ustar00rootroot00000000000000 figure after example before equation before table before procedure before qanda 0 0 CONFIDENTIAL maybe ansi 0 1 _ _ No DocBook localization exists for " " or " ". Using default " ". systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/xsl/html.xsl000066400000000000000000000254241305163227500244610ustar00rootroot00000000000000


The following annotations are from this essay. You are seeing them here because your browser doesn’t support the user-interface techniques used to make them appear as ‘popups’ on modern browsers.

title

  • SystemTap Beginners Guide


systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/xsl/pdf.xsl000066400000000000000000003430401305163227500242630ustar00rootroot00000000000000 ]> left left 0 - - true italic #0066cc start wrap \ wrap \ #f5f5f5 black 6pt 6pt 6pt pt 1pt solid #aaaaaa 0em 0em 0em 0em 0em 0em 0pt always 0.8em 1em 1.2em 0.8em 1em 1.2em true wrap false preserve preserve start justify start Common_Content/images/ 0em 0em 0em 0em 3em 13pt #eeeeec bold true always #8e9f00 #d08e13 #9e0000 #dddddd 0em 0em #eeeeec 1pt solid #aaaaaa 1pt solid #aaaaaa 1pt solid #aaaaaa 1.5em 1em 1em 0em 0em always black white 0pt 0pt 0em set toc book toc,qandadiv article toc chapter nop qandadiv nop qandaset nop sect1 nop sect2 nop sect3 nop sect4 nop sect5 nop section nop part nop 3 Common_Content/images/ 10pt 1 0.1pt 0.1pt 0.1pt 1em 1em 1em 0.1em 0.1em 0.1em 1em 1em 1em 1em 1em 1em 5pt 0.5em 0.5em 0.5em 0.5pt dashed black always 4pt 4pt 2pt 2pt bold 25pt normal 16pt 0.6pt 0.6pt black black white white white white 1 1 1 15mm 9mm 11mm 8mm 5mm 15mm 19mm 31mm 0pt 0pt 0pt 4pc 0pc #336699 white bold pt false bold always 0.8em 1.0em 1.2em 3pt solid #aaaaaa auto 0em 0.8em 0em 1.5em 2em 2em 2em 0.5em 1em 2em 0.5em 1em 2em auto normal pt 0.1pt 0.1pt 0.1pt normal pt 1em 0.5em 2em 0.1pt 0.1pt 0.1pt pt pt pt pt pt pt bold always 1.8em 2.0em 2.2em 0.1em 0.1em 0.1em left body-start() 0.1em 0.1em 0.1em 1em 0.8em 1.2em bold 12pt center always false black center left white pt 24pt bold left 1em 1em 24pt bold center bold white KacstBook, IPAPGothic,Sazanami Gothic, Baekmuk Batang, ZYSong18030,AR PL UMing CN, Lohit Assamese,Lohit Bengali, Lohit Bengali, Lohit Tamil, Lohit Punjabi, Lohit Hindi, Lohit Devanagari,Lohit Marathi,Lohit Hindi, Lohit Gujarati, AR PL ShanHeiSun Uni,AR PL UMing TW, Lohit Kannada, Meera,Lohit Malayalam, Lohit Oriya, Lohit Telugu, LKLUG, KacstFarsi, David CLM, Garuda, Liberation Sans,sans-serif KacstScreen, IPAGothic,Sazanami Gothic, Baekmuk Batang, ZYSong18030,AR PL UMing CN, Lohit Assamese,Lohit Bengali, Lohit Bengali, Lohit Tamil, Lohit Punjabi, Lohit Hindi, Lohit Devanagari,Lohit Marathi,Lohit Hindi, Lohit Gujarati, AR PL ShanHeiSun Uni,AR PL UMing TW, Lohit Kannada, Meera,Lohit Malayalam, Lohit Oriya, Lohit Telugu, LKLUG, KacstFarsi, Miriam Mono CLM, Garuda, Liberation Mono,monospace no-wrap 0.5pt solid black 0.5pt solid black pt 66.66% normal normal 0.25em 48pt black normal normal 0pt black rule 1in 0 : 6pt 6pt 8pt bold left 18pt 18pt 24pt bold left   right fo:wrapper , , , , always always 0 0 0 0 1 0 0 1.0 1.0 auto auto auto auto auto % scale-to-fit auto auto % scale-to-fit auto before center after auto #0000ff #007f00 #5C3566 #ff00ff #FF00FF #0000ff #00007f #ff0000 #00007f #007f00 #5C3566 #002F5D #ffa500 #b03060 #96b9ff #9b30ff #5C3566 #0000ff #0000ff #000000 < > italic #ff00ff , lot front front back back back index back body -draft -draft . Error: CALS tables must specify the number of columns. fixed No adjustColumnWidths function available. always Don't know how to do callouts with Unexpected verbatim environment: 1 No numberLines function available. 1em -3em 4em 0em 0em 0em 0em 2em systemtap-3.1/doc/SystemTap_Beginners_Guide/en-US/xsl/xhtml-common.xsl000066400000000000000000002754631305163227500261510ustar00rootroot00000000000000 Common_Content/images/ Common_Content/css/default.css Common_Content/css/print.css 0 set toc book toc article nop chapter toc qandadiv toc qandaset toc sect1 nop sect2 nop sect3 nop sect4 nop sect5 nop section toc part toc Note Warning Important Note

before
0 1
<xsl:copy-of select="$title"/> not publican /../chrome.css /../db4.css /..///css/brand.css /../print.cssprint toc_embeded desktop
formalpara

0 0 0 1 0 1.0 1.0 1.0 px px px px 0 0 middle {$alt} Warning: imagemaps not supported on scaled images 0 middle
Sample output of when piped through gnuplot
height: px
background-color:
calspair , , , Warning: only calspair or otherunits='imagemap' supported in imageobjectco Error: CALS tables must specify the number of columns. lt-4-cols gt-4-cols gt-8-cols lt-7-rows gt-7-rows gt-14-rows 100% 100% No convertLength function available. No adjustColumnWidths function available.
No insertCallouts function is available.

{$conum} Don't know how to generate Unicode callouts when $callout.unicode.start.character is ( ) ( ) Unexpected verbatim environment: 1 No numberLines function available. #ftn. [ ]
systemtap-3.1/doc/SystemTap_Beginners_Guide/testsuite000077700000000000000000000000001305163227500255722../../testsuiteustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Tapset_Reference/000077500000000000000000000000001305163227500214065ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Tapset_Reference/.gitignore000066400000000000000000000000461305163227500233760ustar00rootroot00000000000000/docproc stamp-* tapsets/ tapsets.xml systemtap-3.1/doc/SystemTap_Tapset_Reference/Makefile.am000066400000000000000000000036001305163227500234410ustar00rootroot00000000000000# Makefile.am --- automake input file for systemtap tapset reference manual ## process this file with automake to produce Makefile.in DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3 HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets if XMLTO_STRINGPARAM XMLTOHTMLPARAMS=--stringparam use.id.as.filename=1 -m $(abs_srcdir)/generate-toc.xml endif if BUILD_REFDOCS # The tapset documents are now pre generated in the source tree if BUILD_HTMLDOCS noinst_PROGRAMS = docproc SRCTREE=$(abs_top_srcdir)/ DOCPROC=$(abs_builddir)/docproc endif all: stamp-htmldocs tapsets.xml: docproc $(shell find $(SRCTREE)/tapset -name '*.stp') if BUILD_HTMLDOCS sed -e '/^!Syscalls/{r $(abs_srcdir)/syscalls.xmlpart' -e 'd}' $(abs_srcdir)/tapsets.tmpl > tapsets.tmpl.new SRCTREE=$(SRCTREE) $(DOCPROC) doc tapsets.tmpl.new > tapsets.xml.new python $(srcdir)/overload.py tapsets.xml.new > tapsets.xml.new1 xsltproc $(srcdir)/sort-tapsets.xslt tapsets.xml.new1 > tapsets.xml.new2 rm tapsets.xml.new tapsets.xml.new1 tapsets.tmpl.new if test -s tapsets.xml && cmp tapsets.xml.new2 tapsets.xml >/dev/null ; then \ echo tapsets.xml unchanged; \ rm tapsets.xml.new2; \ else \ mv tapsets.xml.new2 tapsets.xml; \ fi endif stamp-htmldocs: tapsets.xml if BUILD_HTMLDOCS xmlto $(XMLTOHTMLPARAMS) html -o tapsets tapsets.xml touch stamp-htmldocs endif #FIXME need to figure out where to install things appropriately #installmandocs: mandocs install-data-hook: $(MKDIR_P) $(DOC_INSTALL_DIR) cp $(abs_srcdir)/tapsets.pdf $(DOC_INSTALL_DIR) $(MKDIR_P) $(MAN_INSTALL_DIR) cp -R $(abs_srcdir)/man3/* $(MAN_INSTALL_DIR) cp -R $(abs_srcdir)/man_pages/* $(MAN_INSTALL_DIR) # manpager output if BUILD_HTMLDOCS $(MKDIR_P) $(HTML_INSTALL_DIR) $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR) endif endif CLEANFILES=stamp-* tapsets.pdf tapsets.xml clean-local: rm -rf tapsets systemtap-3.1/doc/SystemTap_Tapset_Reference/Makefile.in000066400000000000000000000474401305163227500234640ustar00rootroot00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am --- automake input file for systemtap tapset reference manual VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@noinst_PROGRAMS = \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ docproc$(EXEEXT) subdir = doc/SystemTap_Tapset_Reference ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) docproc_SOURCES = docproc.c docproc_OBJECTS = docproc.$(OBJEXT) docproc_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = docproc.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATE = @DATE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DYNINST_CXXFLAGS = @DYNINST_CXXFLAGS@ DYNINST_LDFLAGS = @DYNINST_LDFLAGS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_NLS = @ENABLE_NLS@ EXEEXT = @EXEEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ JAVADIR = @JAVADIR@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PIECFLAGS = @PIECFLAGS@ PIECXXFLAGS = @PIECXXFLAGS@ PIELDFLAGS = @PIELDFLAGS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON3 = @PYTHON3@ PYTHON3_CONFIG = @PYTHON3_CONFIG@ PYTHON3_CPPFLAGS = @PYTHON3_CPPFLAGS@ PYTHON3_EXEC_PREFIX = @PYTHON3_EXEC_PREFIX@ PYTHON3_PLATFORM = @PYTHON3_PLATFORM@ PYTHON3_PREFIX = @PYTHON3_PREFIX@ PYTHON3_VERSION = @PYTHON3_VERSION@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_UNKNOWN = @PYTHON_UNKNOWN@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STAP_EXTRA_VERSION = @STAP_EXTRA_VERSION@ STAP_PREFIX = @STAP_PREFIX@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ avahi_CFLAGS = @avahi_CFLAGS@ avahi_LIBS = @avahi_LIBS@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutbindir = @dracutbindir@ dracutstap = @dracutstap@ dvidir = @dvidir@ elfutils_abs_srcdir = @elfutils_abs_srcdir@ exec_prefix = @exec_prefix@ have_dvips = @have_dvips@ have_fop = @have_fop@ have_jar = @have_jar@ have_javac = @have_javac@ have_latex = @have_latex@ have_ps2pdf = @have_ps2pdf@ have_xmlto = @have_xmlto@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jsonc_CFLAGS = @jsonc_CFLAGS@ jsonc_LIBS = @jsonc_LIBS@ libdir = @libdir@ libexecdir = @libexecdir@ libvirt_CFLAGS = @libvirt_CFLAGS@ libvirt_LIBS = @libvirt_LIBS@ libxml2_CFLAGS = @libxml2_CFLAGS@ libxml2_LIBS = @libxml2_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ ncurses_CFLAGS = @ncurses_CFLAGS@ ncurses_LIBS = @ncurses_LIBS@ nss_CFLAGS = @nss_CFLAGS@ nss_LIBS = @nss_LIBS@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ preferred_python = @preferred_python@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py3execdir = @py3execdir@ pyexecdir = @pyexecdir@ python3dir = @python3dir@ pythondir = @pythondir@ sbindir = @sbindir@ selinux_CFLAGS = @selinux_CFLAGS@ selinux_LIBS = @selinux_LIBS@ sharedstatedir = @sharedstatedir@ sqlite3_LIBS = @sqlite3_LIBS@ srcdir = @srcdir@ stap_LIBS = @stap_LIBS@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ staprun_LIBS = @staprun_LIBS@ subdirs = @subdirs@ support_section_question = @support_section_question@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3 HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets @XMLTO_STRINGPARAM_TRUE@XMLTOHTMLPARAMS = --stringparam use.id.as.filename=1 -m $(abs_srcdir)/generate-toc.xml @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@SRCTREE = $(abs_top_srcdir)/ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@DOCPROC = $(abs_builddir)/docproc CLEANFILES = stamp-* tapsets.pdf tapsets.xml all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/SystemTap_Tapset_Reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/SystemTap_Tapset_Reference/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) docproc$(EXEEXT): $(docproc_OBJECTS) $(docproc_DEPENDENCIES) $(EXTRA_docproc_DEPENDENCIES) @rm -f docproc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(docproc_OBJECTS) $(docproc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/docproc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @BUILD_REFDOCS_FALSE@install-data-hook: clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-data-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-hook install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile @BUILD_REFDOCS_TRUE@all: stamp-htmldocs @BUILD_REFDOCS_TRUE@tapsets.xml: docproc $(shell find $(SRCTREE)/tapset -name '*.stp') @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ sed -e '/^!Syscalls/{r $(abs_srcdir)/syscalls.xmlpart' -e 'd}' $(abs_srcdir)/tapsets.tmpl > tapsets.tmpl.new @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ SRCTREE=$(SRCTREE) $(DOCPROC) doc tapsets.tmpl.new > tapsets.xml.new @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ python $(srcdir)/overload.py tapsets.xml.new > tapsets.xml.new1 @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ xsltproc $(srcdir)/sort-tapsets.xslt tapsets.xml.new1 > tapsets.xml.new2 @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ rm tapsets.xml.new tapsets.xml.new1 tapsets.tmpl.new @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ if test -s tapsets.xml && cmp tapsets.xml.new2 tapsets.xml >/dev/null ; then \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ echo tapsets.xml unchanged; \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ rm tapsets.xml.new2; \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ else \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ mv tapsets.xml.new2 tapsets.xml; \ @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ fi @BUILD_REFDOCS_TRUE@stamp-htmldocs: tapsets.xml @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ xmlto $(XMLTOHTMLPARAMS) html -o tapsets tapsets.xml @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ touch stamp-htmldocs #FIXME need to figure out where to install things appropriately #installmandocs: mandocs @BUILD_REFDOCS_TRUE@install-data-hook: @BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ cp $(abs_srcdir)/tapsets.pdf $(DOC_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(MAN_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ cp -R $(abs_srcdir)/man3/* $(MAN_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ cp -R $(abs_srcdir)/man_pages/* $(MAN_INSTALL_DIR) # manpager output @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(HTML_INSTALL_DIR) @BUILD_HTMLDOCS_TRUE@@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR) clean-local: rm -rf tapsets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: systemtap-3.1/doc/SystemTap_Tapset_Reference/docproc.c000066400000000000000000000262621305163227500232130ustar00rootroot00000000000000/* * docproc is a simple preprocessor for the template files * used as placeholders for the kernel internal documentation. * docproc is used for documentation-frontend and * dependency-generator. * The two usages have in common that they require * some knowledge of the .tmpl syntax, therefore they * are kept together. * * documentation-frontend * Scans the template file and call kernel-doc for * all occurrences of ![EIF]file * Beforehand each referenced file is scanned for * any symbols that are exported via these macros: * EXPORT_SYMBOL(), EXPORT_SYMBOL_GPL(), & * EXPORT_SYMBOL_GPL_FUTURE() * This is used to create proper -function and * -nofunction arguments in calls to kernel-doc. * Usage: docproc doc file.tmpl * * dependency-generator: * Scans the template file and list all files * referenced in a format recognized by make. * Usage: docproc depend file.tmpl * Writes dependency information to stdout * in the following format: * file.tmpl src.c src2.c * The filenames are obtained from the following constructs: * !Efilename * !Ifilename * !Dfilename * !Ffilename * !Pfilename * */ #include #include #include #include #include #include #include #include /* exitstatus is used to keep track of any failing calls to kernel-doc, * but execution continues. */ int exitstatus = 0; typedef void DFL(char *); DFL *defaultline; typedef void FILEONLY(char * file); FILEONLY *internalfunctions; FILEONLY *externalfunctions; FILEONLY *symbolsonly; typedef void FILELINE(char * file, char * line); FILELINE * singlefunctions; FILELINE * entity_system; FILELINE * docsection; #define MAXLINESZ 2048 #define MAXFILES 250 #define KERNELDOCPATH "scripts/" #define KERNELDOC "kernel-doc" #define DOCBOOK "-docbook" #define FUNCTION "-function" #define NOFUNCTION "-nofunction" #define NODOCSECTIONS "-no-doc-sections" char *srctree; void usage (void) { fprintf(stderr, "Usage: docproc {doc|depend} file\n"); fprintf(stderr, "Input is read from file.tmpl. Output is sent to stdout\n"); fprintf(stderr, "doc: frontend when generating kernel documentation\n"); fprintf(stderr, "depend: generate list of files referenced within file\n"); fprintf(stderr, "Environment variable SRCTREE: absolute path to kernel source tree.\n"); } /* * Execute kernel-doc with parameters given in svec */ void exec_kernel_doc(char **svec) { pid_t pid; int ret; char real_filename[PATH_MAX + 1]; /* Make sure output generated so far are flushed */ fflush(stdout); switch (pid=fork()) { case -1: perror("fork"); exit(1); case 0: memset(real_filename, 0, sizeof(real_filename)); strncat(real_filename, srctree, PATH_MAX); strncat(real_filename, KERNELDOCPATH KERNELDOC, PATH_MAX - strlen(real_filename)); execvp(real_filename, svec); fprintf(stderr, "exec "); perror(real_filename); exit(1); default: waitpid(pid, &ret ,0); } if (WIFEXITED(ret)) exitstatus |= WEXITSTATUS(ret); else exitstatus = 0xff; } /* Types used to create list of all exported symbols in a number of files */ struct symbols { char *name; }; struct symfile { char *filename; struct symbols *symbollist; int symbolcnt; }; struct symfile symfilelist[MAXFILES]; int symfilecnt = 0; void add_new_symbol(struct symfile *sym, char * symname) { sym->symbollist = realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *)); sym->symbollist[sym->symbolcnt++].name = strdup(symname); } /* Add a filename to the list */ struct symfile * add_new_file(char * filename) { symfilelist[symfilecnt++].filename = strdup(filename); return &symfilelist[symfilecnt - 1]; } /* Check if file already are present in the list */ struct symfile * filename_exist(char * filename) { int i; for (i=0; i < symfilecnt; i++) if (strcmp(symfilelist[i].filename, filename) == 0) return &symfilelist[i]; return NULL; } /* * List all files referenced within the template file. * Files are separated by tabs. */ void adddep(char * file) { printf("\t%s", file); } void adddep2(char * file, char * line) { line = line; adddep(file); } void noaction(char * line) { line = line; } void noaction2(char * file, char * line) { file = file; line = line; } /* Echo the line without further action */ void printline(char * line) { printf("%s", line); } /* * Find all symbols in filename that are exported with EXPORT_SYMBOL & * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly). * All symbols located are stored in symfilelist. */ void find_export_symbols(char * filename) { FILE * fp; struct symfile *sym; char line[MAXLINESZ]; if (filename_exist(filename) == NULL) { char real_filename[PATH_MAX + 1]; memset(real_filename, 0, sizeof(real_filename)); strncat(real_filename, srctree, PATH_MAX); strncat(real_filename, filename, PATH_MAX - strlen(real_filename)); sym = add_new_file(filename); fp = fopen(real_filename, "r"); if (fp == NULL) { fprintf(stderr, "docproc: "); perror(real_filename); exit(1); } while (fgets(line, MAXLINESZ, fp)) { char *p; char *e; if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) || ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) { /* Skip EXPORT_SYMBOL{_GPL} */ while (isalnum(*p) || *p == '_') p++; /* Remove parentheses & additional whitespace */ while (isspace(*p)) p++; if (*p != '(') continue; /* Syntax error? */ else p++; while (isspace(*p)) p++; e = p; while (isalnum(*e) || *e == '_') e++; *e = '\0'; add_new_symbol(sym, p); } } fclose(fp); } } /* * Document all external or internal functions in a file. * Call kernel-doc with following parameters: * kernel-doc -docbook -nofunction function_name1 filename * Function names are obtained from all the src files * by find_export_symbols. * intfunc uses -nofunction * extfunc uses -function */ void docfunctions(char * filename, char * type) { int i,j; int symcnt = 0; int idx = 0; char **vec; for (i=0; i <= symfilecnt; i++) symcnt += symfilelist[i].symbolcnt; vec = malloc((2 + 2 * symcnt + 3) * sizeof(char *)); if (vec == NULL) { perror("docproc: "); exit(1); } vec[idx++] = KERNELDOC; vec[idx++] = DOCBOOK; vec[idx++] = NODOCSECTIONS; for (i=0; i < symfilecnt; i++) { struct symfile * sym = &symfilelist[i]; for (j=0; j < sym->symbolcnt; j++) { vec[idx++] = type; vec[idx++] = sym->symbollist[j].name; } } vec[idx++] = filename; vec[idx] = NULL; printf("\n", filename); exec_kernel_doc(vec); fflush(stdout); free(vec); } void intfunc(char * filename) { docfunctions(filename, NOFUNCTION); } void extfunc(char * filename) { docfunctions(filename, FUNCTION); } /* * Document specific function(s) in a file. * Call kernel-doc with the following parameters: * kernel-doc -docbook -function function1 [-function function2] */ void singfunc(char * filename, char * line) { char *vec[200]; /* Enough for specific functions */ int i, idx = 0; int startofsym = 1; vec[idx++] = KERNELDOC; vec[idx++] = DOCBOOK; /* Split line up in individual parameters preceded by FUNCTION */ for (i=0; line[i]; i++) { if (isspace(line[i])) { line[i] = '\0'; startofsym = 1; continue; } if (startofsym) { startofsym = 0; vec[idx++] = FUNCTION; vec[idx++] = &line[i]; } } vec[idx++] = filename; vec[idx] = NULL; exec_kernel_doc(vec); } /* * Insert specific documentation section from a file. * Call kernel-doc with the following parameters: * kernel-doc -docbook -function "doc section" filename */ void docsect(char *filename, char *line) { char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ char *s; for (s = line; *s; s++) if (*s == '\n') *s = '\0'; vec[0] = KERNELDOC; vec[1] = DOCBOOK; vec[2] = FUNCTION; vec[3] = line; vec[4] = filename; vec[5] = NULL; exec_kernel_doc(vec); } /* * Parse file, calling action specific functions for: * 1) Lines containing !E * 2) Lines containing !I * 3) Lines containing !D * 4) Lines containing !F * 5) Lines containing !P * 6) Default lines - lines not matching the above */ void parse_file(FILE *infile) { char line[MAXLINESZ]; char * s; while (fgets(line, MAXLINESZ, infile)) { if (line[0] == '!') { s = line + 2; switch (line[1]) { case 'E': while (*s && !isspace(*s)) s++; *s = '\0'; externalfunctions(line+2); break; case 'I': while (*s && !isspace(*s)) s++; *s = '\0'; internalfunctions(line+2); break; case 'D': while (*s && !isspace(*s)) s++; *s = '\0'; symbolsonly(line+2); break; case 'F': /* filename */ while (*s && !isspace(*s)) s++; *s++ = '\0'; /* function names */ while (isspace(*s)) s++; singlefunctions(line +2, s); break; case 'P': /* filename */ while (*s && !isspace(*s)) s++; *s++ = '\0'; /* DOC: section name */ while (isspace(*s)) s++; docsection(line + 2, s); break; default: defaultline(line); } } else { defaultline(line); } } fflush(stdout); } int main(int argc, char *argv[]) { FILE * infile; srctree = getenv("SRCTREE"); if (!srctree) srctree = getcwd(NULL, 0); if (argc != 3) { usage(); exit(1); } /* Open file, exit on error */ infile = fopen(argv[2], "r"); if (infile == NULL) { fprintf(stderr, "docproc: "); perror(argv[2]); exit(2); } if (strcmp("doc", argv[1]) == 0) { /* Need to do this in two passes. * First pass is used to collect all symbols exported * in the various files; * Second pass generate the documentation. * This is required because some functions are declared * and exported in different files :-(( */ /* Collect symbols */ defaultline = noaction; internalfunctions = find_export_symbols; externalfunctions = find_export_symbols; symbolsonly = find_export_symbols; singlefunctions = noaction2; docsection = noaction2; parse_file(infile); /* Rewind to start from beginning of file again */ fseek(infile, 0, SEEK_SET); defaultline = printline; internalfunctions = intfunc; externalfunctions = extfunc; symbolsonly = printline; singlefunctions = singfunc; docsection = docsect; parse_file(infile); } else if (strcmp("depend", argv[1]) == 0) { /* Create first part of dependency chain * file.tmpl */ printf("%s\t", argv[2]); defaultline = noaction; internalfunctions = adddep; externalfunctions = adddep; symbolsonly = adddep; singlefunctions = adddep2; docsection = adddep2; parse_file(infile); printf("\n"); } else { fprintf(stderr, "Unknown option: %s\n", argv[1]); exit(1); } fclose(infile); fflush(stdout); return exitstatus; } systemtap-3.1/doc/SystemTap_Tapset_Reference/dummy-tapsets.xml000066400000000000000000000025731305163227500247530ustar00rootroot00000000000000 SystemTap Tapset Reference Manual 2008-2013 Red Hat, Inc. and others SystemTap Hackers Introduction SystemTap provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system. This assists diagnosis of a performance or functional problem. SystemTap eliminates the need for the developer to go through the tedious and disruptive instrument, recompile, install, and reboot sequence that may be otherwise required to collect data. SystemTap provides a simple command line interface and scripting language for writing instrumentation for a live running kernel. The instrumentation makes extensive use of the probe points and functions provided in the tapset library. This document describes the various probe points and functions. systemtap-3.1/doc/SystemTap_Tapset_Reference/generate-toc.xml000066400000000000000000000010111305163227500244760ustar00rootroot00000000000000 appendix toc,title article/appendix nop article nop,title book toc,title,figure,table,example,equation chapter nop,title part nop,title preface toc,title qandadiv toc qandaset toc reference nop,title sect1 toc sect2 toc sect3 toc sect4 toc sect5 toc section toc set toc,title systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/000077500000000000000000000000001305163227500222445ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::-.3stap000066400000000000000000000000531305163227500253040ustar00rootroot00000000000000.SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::HZ.3stap000066400000000000000000000027711305163227500255020ustar00rootroot00000000000000'\" t .\" Title: function::HZ .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::HZ" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::HZ \- Kernel HZ .SH "SYNOPSIS" .sp .nf HZ:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the value of the kernel HZ macro, which corresponds to the rate of increase of the jiffies value\&. .SH SEE ALSO\n .IR tapset::timestamp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::MAJOR.3stap000066400000000000000000000027221305163227500260250ustar00rootroot00000000000000'\" t .\" Title: function::MAJOR .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Device Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MAJOR" "3stap" "March 2016" "SystemTap Tapset Reference" "Device Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::MAJOR \- Extract major device number from a kernel device number (kdev_t) .SH "SYNOPSIS" .sp .nf MAJOR:long(dev:long) .fi .SH "ARGUMENTS" .PP \fIdev\fR .RS 4 Kernel device number to query\&. .RE .SH SEE ALSO\n .IR tapset::dev (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::MINOR.3stap000066400000000000000000000027221305163227500260410ustar00rootroot00000000000000'\" t .\" Title: function::MINOR .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Device Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MINOR" "3stap" "March 2016" "SystemTap Tapset Reference" "Device Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::MINOR \- Extract minor device number from a kernel device number (kdev_t) .SH "SYNOPSIS" .sp .nf MINOR:long(dev:long) .fi .SH "ARGUMENTS" .PP \fIdev\fR .RS 4 Kernel device number to query\&. .RE .SH SEE ALSO\n .IR tapset::dev (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::MKDEF.3stap000066400000000000000000000000501305163227500257730ustar00rootroot00000000000000.SH SEE ALSO\n .IR tapset::dev (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::MKDEV.3stap000066400000000000000000000027711305163227500260270ustar00rootroot00000000000000'\" t .\" Title: function::MKDEV .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Device Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MKDEV" "3stap" "March 2016" "SystemTap Tapset Reference" "Device Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::MKDEV \- Creates a value that can be compared to a kernel device number (kdev_t) .SH "SYNOPSIS" .sp .nf MKDEV:long(major:long,minor:long) .fi .SH "ARGUMENTS" .PP \fImajor\fR .RS 4 Intended major device number\&. .RE .PP \fIminor\fR .RS 4 Intended minor device number\&. .RE systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::addr.3stap000066400000000000000000000032311305163227500260630ustar00rootroot00000000000000'\" t .\" Title: function::addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ADDR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::addr \- Address of the current probe point\&. .SH "SYNOPSIS" .sp .nf addr:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the instruction pointer from the current probe\*(Aqs register state\&. Not all probe types have registers though, in which case zero is returned\&. The returned address is suitable for use with functions like \fBsymname\fR and \fBsymdata\fR\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::addr_to_node.3stap000066400000000000000000000031771305163227500276030ustar00rootroot00000000000000'\" t .\" Title: function::addr_to_node .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ADDR_TO_NO" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::addr_to_node \- Returns which node a given address belongs to within a NUMA system .SH "SYNOPSIS" .sp .nf addr_to_node:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the address of the faulting memory access .RE .SH "DESCRIPTION" .PP This function accepts an address, and returns the node that the given address belongs to in a NUMA system\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_clear_screen.3stap000066400000000000000000000031761305163227500306200ustar00rootroot00000000000000'\" t .\" Title: function::ansi_clear_screen .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CLEAR" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_clear_screen \- Move cursor to top left and clear screen\&. .SH "SYNOPSIS" .sp .nf ansi_clear_screen() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code for moving cursor to top left and then the ansi code for clearing the screen from the cursor position to the end\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_cursor_hide.3stap000066400000000000000000000030101305163227500304640ustar00rootroot00000000000000'\" t .\" Title: function::ansi_cursor_hide .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CURSO" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_cursor_hide \- Hides the cursor\&. .SH "SYNOPSIS" .sp .nf ansi_cursor_hide() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code for hiding the cursor\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_cursor_move.3stap000066400000000000000000000033311305163227500305270ustar00rootroot00000000000000'\" t .\" Title: function::ansi_cursor_move .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CURSO" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_cursor_move \- Move cursor to new coordinates\&. .SH "SYNOPSIS" .sp .nf ansi_cursor_move(x:long,y:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Row to move the cursor to\&. .RE .PP \fIy\fR .RS 4 Colomn to move the cursor to\&. .RE .SH "DESCRIPTION" .PP Sends ansi code for positioning the cursor at row x and column y\&. Coordinates start at one, (1,1) is the top\-left corner\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_cursor_restore.3stap000066400000000000000000000031551305163227500312500ustar00rootroot00000000000000'\" t .\" Title: function::ansi_cursor_restore .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CURSO" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_cursor_restore \- Restores a previously saved cursor position\&. .SH "SYNOPSIS" .sp .nf ansi_cursor_restore() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code for restoring the current cursor position previously saved with \fBansi_cursor_save\fR\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_cursor_save.3stap000066400000000000000000000030421305163227500305160ustar00rootroot00000000000000'\" t .\" Title: function::ansi_cursor_save .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CURSO" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_cursor_save \- Saves the cursor position\&. .SH "SYNOPSIS" .sp .nf ansi_cursor_save() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code for saving the current cursor position\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_cursor_show.3stap000066400000000000000000000030111305163227500305340ustar00rootroot00000000000000'\" t .\" Title: function::ansi_cursor_show .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_CURSO" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_cursor_show \- Shows the cursor\&. .SH "SYNOPSIS" .sp .nf ansi_cursor_show() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code for showing the cursor\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_new_line.3stap000066400000000000000000000027711305163227500277730ustar00rootroot00000000000000'\" t .\" Title: function::ansi_new_line .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_NEW_L" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_new_line \- Move cursor to new line\&. .SH "SYNOPSIS" .sp .nf ansi_new_line() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code new line\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_reset_color.3stap000066400000000000000000000031141305163227500305030ustar00rootroot00000000000000'\" t .\" Title: function::ansi_reset_color .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_RESET" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_reset_color \- Resets Select Graphic Rendition mode\&. .SH "SYNOPSIS" .sp .nf ansi_reset_color() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Sends ansi code to reset foreground, background and color attribute to default values\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ansi_set_color.3stap000066400000000000000000000052531305163227500301620ustar00rootroot00000000000000'\" t .\" Title: function::ansi_set_color .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ANSI_SET_C" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ansi_set_color \- Set the ansi Select Graphic Rendition mode\&. .SH "SYNOPSIS" .sp .nf 1) ansi_set_color(fg:long) .fi .sp .nf 2) ansi_set_color(fg:long,bg:long) .fi .sp .nf 3) ansi_set_color(fg:long,bg:long,attr:long) .fi .SH "ARGUMENTS" .PP \fIfg\fR .RS 4 Foreground color to set\&. .RE .PP \fIbg\fR .RS 4 Background color to set\&. .RE .PP \fIattr\fR .RS 4 Color attribute to set\&. .RE .SH "DESCRIPTION" .PP 1) Sends ansi code for Select Graphic Rendition mode for the given foreground color\&. Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37)\&. .PP 2) Sends ansi code for Select Graphic Rendition mode for the given foreground color, Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37) and the given background color, Black (40), Red (41), Green (42), Yellow (43), Blue (44), Magenta (45), Cyan (46), White (47)\&. .PP 3) Sends ansi code for Select Graphic Rendition mode for the given foreground color, Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37), the given background color, Black (40), Red (41), Green (42), Yellow (43), Blue (44), Magenta (45), Cyan (46), White (47) and the color attribute All attributes off (0), Intensity Bold (1), Underline Single (4), Blink Slow (5), Blink Rapid (6), Image Negative (7)\&. .SH SEE ALSO\n .IR tapset::ansi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::asmlinkage.3stap000066400000000000000000000031001305163227500272570ustar00rootroot00000000000000'\" t .\" Title: function::asmlinkage .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ASMLINKAGE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::asmlinkage \- Mark function as declared asmlinkage .SH "SYNOPSIS" .sp .nf asmlinkage() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Call this function before accessing arguments using the *_arg functions if the probed kernel function was declared asmlinkage in the source\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::assert.3stap000066400000000000000000000037151305163227500264610ustar00rootroot00000000000000'\" t .\" Title: function::assert .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ASSERT" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::assert \- evaluate assertion .SH "SYNOPSIS" .sp .nf 1) assert(expression:long) .fi .sp .nf 2) assert(expression:long,msg:string) .fi .SH "ARGUMENTS" .PP \fIexpression\fR .RS 4 The expression to evaluate .RE .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP 1) This function checks the expression and aborts the current running probe if expression evaluates to zero\&. Uses\fBerror\fR and may be caught by try{} catch{}\&. A default message will be displayed\&. .PP 2) This function checks the expression and aborts the current running probe if expression evaluates to zero\&. Uses\fBerror\fR and may be caught by try{} catch{}\&. The specified message will be displayed\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::atomic_long_read.3stap000066400000000000000000000033071305163227500304430ustar00rootroot00000000000000'\" t .\" Title: function::atomic_long_read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ATOMIC_LON" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::atomic_long_read \- Retrieves an atomic long variable from kernel memory .SH "SYNOPSIS" .sp .nf atomic_long_read:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 pointer to atomic long variable .RE .SH "DESCRIPTION" .PP Safely perform the read of an atomic long variable\&. This will be a NOP on kernels that do not have ATOMIC_LONG_INIT set on the kernel config\&. .SH SEE ALSO\n .IR tapset::atomic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::atomic_read.3stap000066400000000000000000000031151305163227500274210ustar00rootroot00000000000000'\" t .\" Title: function::atomic_read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ATOMIC_REA" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::atomic_read \- Retrieves an atomic variable from kernel memory .SH "SYNOPSIS" .sp .nf atomic_read:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 pointer to atomic variable .RE .SH "DESCRIPTION" .PP Safely perform the read of an atomic variable\&. .SH SEE ALSO\n .IR tapset::atomic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::backtrace.3stap000066400000000000000000000032171305163227500270740ustar00rootroot00000000000000'\" t .\" Title: function::backtrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::BACKTRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::backtrace \- Hex backtrace of current kernel stack .SH "SYNOPSIS" .sp .nf backtrace:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns a string of hex addresses that are a backtrace of the kernel stack\&. Output may be truncated as per maximum string length (MAXSTRINGLEN)\&. See \fBubacktrace\fR for user\-space backtrace\&. .SH SEE ALSO\n .IR tapset::context-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::bytes_to_string.3stap000066400000000000000000000040151305163227500303700ustar00rootroot00000000000000'\" t .\" Title: function::bytes_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::BYTES_TO_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::bytes_to_string \- Human readable string for given bytes .SH "SYNOPSIS" .sp .nf bytes_to_string:string(bytes:long) .fi .SH "ARGUMENTS" .PP \fIbytes\fR .RS 4 Number of bytes to translate\&. .RE .SH "DESCRIPTION" .PP Returns a string representing the number of bytes (up to 1024 bytes), the number of kilobytes (when less than 1024K) postfixed by \*(AqK\*(Aq, the number of megabytes (when less than 1024M) postfixed by \*(AqM\*(Aq or the number of gigabytes postfixed by \*(AqG\*(Aq\&. If representing K, M or G, and the number is amount is less than 100, it includes a \*(Aq\&.\*(Aq plus the remainer\&. The returned string will be 5 characters wide (padding with whitespace at the front) unless negative or representing more than 9999G bytes\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::caller.3stap000066400000000000000000000031451305163227500264170ustar00rootroot00000000000000'\" t .\" Title: function::caller .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CALLER" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::caller \- Return name and address of calling function .SH "SYNOPSIS" .sp .nf caller:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the address and name of the calling function\&. This is equivalent to calling: sprintf("\fBs\fR 0x\fBx\fR", symname(\fBcaller_addr\fR), \fBcaller_addr\fR) .SH SEE ALSO\n .IR tapset::context-caller (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::caller_addr.3stap000066400000000000000000000027541305163227500274160ustar00rootroot00000000000000'\" t .\" Title: function::caller_addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CALLER_ADD" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::caller_addr \- Return caller address .SH "SYNOPSIS" .sp .nf caller_addr:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the address of the calling function\&. .SH SEE ALSO\n .IR tapset::context-caller (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::callers.3stap000066400000000000000000000033561305163227500266060ustar00rootroot00000000000000'\" t .\" Title: function::callers .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CALLERS" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::callers \- Return first n elements of kernel stack backtrace .SH "SYNOPSIS" .sp .nf callers:string(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 number of levels to descend in the stack (not counting the top level)\&. If n is \-1, print the entire stack\&. .RE .SH "DESCRIPTION" .PP This function returns a string of the first n hex addresses from the backtrace of the kernel stack\&. Output may be truncated as per maximum string length (MAXSTRINGLEN)\&. .SH SEE ALSO\n .IR tapset::context-caller (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cmdline_arg.3stap000066400000000000000000000033241305163227500274200ustar00rootroot00000000000000'\" t .\" Title: function::cmdline_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CMDLINE_AR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cmdline_arg \- Fetch a command line argument .SH "SYNOPSIS" .sp .nf cmdline_arg:string(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 Argument to get (zero is the program itself) .RE .SH "DESCRIPTION" .PP Returns argument the requested argument from the current process or the empty string when there are not that many arguments or there is a problem retrieving the argument\&. Argument zero is traditionally the command itself\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cmdline_args.3stap000066400000000000000000000040771305163227500276110ustar00rootroot00000000000000'\" t .\" Title: function::cmdline_args .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CMDLINE_AR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cmdline_args \- Fetch command line arguments from current process .SH "SYNOPSIS" .sp .nf cmdline_args:string(n:long,m:long,delim:string) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 First argument to get (zero is normally the program itself) .RE .PP \fIm\fR .RS 4 Last argument to get (or minus one for all arguments after n) .RE .PP \fIdelim\fR .RS 4 String to use to separate arguments when more than one\&. .RE .SH "DESCRIPTION" .PP Returns arguments from the current process starting with argument number n, up to argument m\&. If there are less than n arguments, or the arguments cannot be retrieved from the current process, the empty string is returned\&. If m is smaller than n then all arguments starting from argument n are returned\&. Argument zero is traditionally the command itself\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cmdline_str.3stap000066400000000000000000000031231305163227500274540ustar00rootroot00000000000000'\" t .\" Title: function::cmdline_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CMDLINE_ST" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cmdline_str \- Fetch all command line arguments from current process .SH "SYNOPSIS" .sp .nf cmdline_str:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns all arguments from the current process delimited by spaces\&. Returns the empty string when the arguments cannot be retrieved\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::commit.3stap000066400000000000000000000031361305163227500264450ustar00rootroot00000000000000'\" t .\" Title: function::commit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Speculation .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::COMMIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Speculation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::commit \- Write out all output related to a speculation buffer .SH "SYNOPSIS" .sp .nf commit(id:long) .fi .SH "ARGUMENTS" .PP \fIid\fR .RS 4 of the buffer to store the information in .RE .SH "DESCRIPTION" .PP Output all the output for \fIid\fR in the order that it was entered into the speculative buffer by \fBspeculative\fR\&. .SH SEE ALSO\n .IR tapset::speculative (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpu.3stap000066400000000000000000000027021305163227500257420ustar00rootroot00000000000000'\" t .\" Title: function::cpu .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPU" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpu \- Returns the current cpu number .SH "SYNOPSIS" .sp .nf cpu:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the current cpu number\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpu_clock_ms.3stap000066400000000000000000000033301305163227500276120ustar00rootroot00000000000000'\" t .\" Title: function::cpu_clock_ms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPU_CLOCK_" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpu_clock_ms \- Number of milliseconds on the given cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf cpu_clock_ms:long(cpu:long) .fi .SH "ARGUMENTS" .PP \fIcpu\fR .RS 4 Which processor\*(Aqs clock to read .RE .SH "DESCRIPTION" .PP This function returns the number of milliseconds on the given cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpu_clock_ns.3stap000066400000000000000000000033261305163227500276200ustar00rootroot00000000000000'\" t .\" Title: function::cpu_clock_ns .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPU_CLOCK_" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpu_clock_ns \- Number of nanoseconds on the given cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf cpu_clock_ns:long(cpu:long) .fi .SH "ARGUMENTS" .PP \fIcpu\fR .RS 4 Which processor\*(Aqs clock to read .RE .SH "DESCRIPTION" .PP This function returns the number of nanoseconds on the given cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpu_clock_s.3stap000066400000000000000000000033131305163227500274360ustar00rootroot00000000000000'\" t .\" Title: function::cpu_clock_s .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPU_CLOCK_" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpu_clock_s \- Number of seconds on the given cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf cpu_clock_s:long(cpu:long) .fi .SH "ARGUMENTS" .PP \fIcpu\fR .RS 4 Which processor\*(Aqs clock to read .RE .SH "DESCRIPTION" .PP This function returns the number of seconds on the given cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpu_clock_us.3stap000066400000000000000000000033301305163227500276220ustar00rootroot00000000000000'\" t .\" Title: function::cpu_clock_us .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPU_CLOCK_" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpu_clock_us \- Number of microseconds on the given cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf cpu_clock_us:long(cpu:long) .fi .SH "ARGUMENTS" .PP \fIcpu\fR .RS 4 Which processor\*(Aqs clock to read .RE .SH "DESCRIPTION" .PP This function returns the number of microseconds on the given cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cpuid.3stap000066400000000000000000000030121305163227500262520ustar00rootroot00000000000000'\" t .\" Title: function::cpuid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPUID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cpuid \- Returns the current cpu number .SH "SYNOPSIS" .sp .nf cpuid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the current cpu number\&. Deprecated in SystemTap 1\&.4 and removed in SystemTap 1\&.5\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cputime_to_msecs.3stap000066400000000000000000000027741305163227500305260ustar00rootroot00000000000000'\" t .\" Title: function::cputime_to_msecs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPUTIME_TO" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cputime_to_msecs \- Translates the given cputime into milliseconds .SH "SYNOPSIS" .sp .nf cputime_to_msecs:long(cputime:long) .fi .SH "ARGUMENTS" .PP \fIcputime\fR .RS 4 Time to convert to milliseconds\&. .RE .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cputime_to_string.3stap000066400000000000000000000031071305163227500307110ustar00rootroot00000000000000'\" t .\" Title: function::cputime_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPUTIME_TO" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cputime_to_string \- Human readable string for given cputime .SH "SYNOPSIS" .sp .nf cputime_to_string:string(cputime:long) .fi .SH "ARGUMENTS" .PP \fIcputime\fR .RS 4 Time to translate\&. .RE .SH "DESCRIPTION" .PP Equivalent to calling: msec_to_string (cputime_to_msecs (cputime)\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::cputime_to_usecs.3stap000066400000000000000000000027741305163227500305360ustar00rootroot00000000000000'\" t .\" Title: function::cputime_to_usecs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CPUTIME_TO" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::cputime_to_usecs \- Translates the given cputime into microseconds .SH "SYNOPSIS" .sp .nf cputime_to_usecs:long(cputime:long) .fi .SH "ARGUMENTS" .PP \fIcputime\fR .RS 4 Time to convert to microseconds\&. .RE .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ctime.3stap000066400000000000000000000060101305163227500262500ustar00rootroot00000000000000'\" t .\" Title: function::ctime .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Time utility functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::CTIME" "3stap" "March 2016" "SystemTap Tapset Reference" "Time utility functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ctime \- Convert seconds since epoch into human readable date/time string .SH "SYNOPSIS" .sp .nf 1) ctime:string(epochsecs:long) .fi .sp .nf 2) ctime:string() .fi .SH "ARGUMENTS" .PP \fIepochsecs\fR .RS 4 Number of seconds since epoch (as returned by \fBgettimeofday_s\fR) .RE .SH "DESCRIPTION" .PP 1) Takes an argument of seconds since the epoch as returned by\fBgettimeofday_s\fR\&. Returns a string of the form .PP 2) \(lqWed Jun 30 21:49:08 1993\(rq .PP The string will always be exactly 24 characters\&. If the time would be unreasonable far in the past (before what can be represented with a 32 bit offset in seconds from the epoch) an error will occur (which can be avoided with try/catch)\&. If the time would be unreasonable far in the future, an error will also occur\&. .PP Note that the epoch (zero) corresponds to .PP \(lqThu Jan 1 00:00:00 1970\(rq .PP The earliest full date given by ctime, corresponding to epochsecs \-2147483648 is \(lqFri Dec 13 20:45:52 1901\(rq\&. The latest full date given by ctime, corresponding to epochsecs 2147483647 is \(lqTue Jan 19 03:14:07 2038\(rq\&. .PP The abbreviations for the days of the week are \(oqSun\(cq, \(oqMon\(cq, \(oqTue\(cq, \(oqWed\(cq, \(oqThu\(cq, \(oqFri\(cq, and \(oqSat\(cq\&. The abbreviations for the months are \(oqJan\(cq, \(oqFeb\(cq, \(oqMar\(cq, \(oqApr\(cq, \(oqMay\(cq, \(oqJun\(cq, \(oqJul\(cq, \(oqAug\(cq, \(oqSep\(cq, \(oqOct\(cq, \(oqNov\(cq, and \(oqDec\(cq\&. .PP Note that the real C library \fBctime\fR function puts a newline (\*(Aq\en\*(Aq) character at the end of the string that this function does not\&. Also note that since the kernel has no concept of timezones, the returned time is always in GMT\&. .PP Without an argument, does the same as ctime(\fBgettimeofday_s\fR)\&. .SH SEE ALSO\n .IR tapset::ctime (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::d_name.3stap000066400000000000000000000027451305163227500264050ustar00rootroot00000000000000'\" t .\" Title: function::d_name .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::D_NAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::d_name \- get the dirent name .SH "SYNOPSIS" .sp .nf d_name:string(dentry:long) .fi .SH "ARGUMENTS" .PP \fIdentry\fR .RS 4 Pointer to dentry\&. .RE .SH "DESCRIPTION" .PP .PP Returns the dirent name (path basename)\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::d_path.3stap000066400000000000000000000030261305163227500264120ustar00rootroot00000000000000'\" t .\" Title: function::d_path .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::D_PATH" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::d_path \- get the full nameidata path .SH "SYNOPSIS" .sp .nf d_path:string(nd:long) .fi .SH "ARGUMENTS" .PP \fInd\fR .RS 4 Pointer to nameidata\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full dirent name (full path to the root), like the kernel d_path function\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::delete_stopwatch.3stap000066400000000000000000000030141305163227500305060ustar00rootroot00000000000000'\" t .\" Title: function::delete_stopwatch .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::DELETE_STO" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::delete_stopwatch \- Remove an existing stopwatch .SH "SYNOPSIS" .sp .nf delete_stopwatch(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 the stopwatch name .RE .SH "DESCRIPTION" .PP Remove stopwatch \fIname\fR\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::discard.3stap000066400000000000000000000027221305163227500265660ustar00rootroot00000000000000'\" t .\" Title: function::discard .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Speculation .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::DISCARD" "3stap" "March 2016" "SystemTap Tapset Reference" "Speculation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::discard \- Discard all output related to a speculation buffer .SH "SYNOPSIS" .sp .nf discard(id:long) .fi .SH "ARGUMENTS" .PP \fIid\fR .RS 4 of the buffer to store the information in .RE .SH SEE ALSO\n .IR tapset::speculative (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::egid.3stap000066400000000000000000000027411305163227500260660ustar00rootroot00000000000000'\" t .\" Title: function::egid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::EGID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::egid \- Returns the effective gid of a target process .SH "SYNOPSIS" .sp .nf egid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the effective gid of a target process .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::env_var.3stap000066400000000000000000000032211305163227500266100ustar00rootroot00000000000000'\" t .\" Title: function::env_var .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ENV_VAR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::env_var \- Fetch environment variable from current process .SH "SYNOPSIS" .sp .nf env_var:string(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 Name of the environment variable to fetch .RE .SH "DESCRIPTION" .PP Returns the contents of the specified environment value for the current process\&. If the variable isn\*(Aqt set an empty string is returned\&. .SH SEE ALSO\n .IR tapset::context-envvar (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::errno_str.3stap000066400000000000000000000032041305163227500271660ustar00rootroot00000000000000'\" t .\" Title: function::errno_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Errno Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ERRNO_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "Errno Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::errno_str \- Symbolic string associated with error code .SH "SYNOPSIS" .sp .nf errno_str:string(err:long) .fi .SH "ARGUMENTS" .PP \fIerr\fR .RS 4 The error number received .RE .SH "DESCRIPTION" .PP This function returns the symbolic string associated with the giver error code, such as ENOENT for the number 2, or E#3333 for an out\-of\-range value such as 3333\&. .SH SEE ALSO\n .IR tapset::errno (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::error.3stap000066400000000000000000000032251305163227500263050ustar00rootroot00000000000000'\" t .\" Title: function::error .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ERROR" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::error \- Send an error message .SH "SYNOPSIS" .sp .nf error(msg:string) .fi .SH "ARGUMENTS" .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP An implicit end\-of\-line is added\&. staprun prepends the string \(lqERROR:\(rq\&. Sending an error message aborts the currently running probe\&. Depending on the MAXERRORS parameter, it may trigger an \fBexit\fR\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::euid.3stap000066400000000000000000000027331305163227500261050ustar00rootroot00000000000000'\" t .\" Title: function::euid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::EUID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::euid \- Return the effective uid of a target process .SH "SYNOPSIS" .sp .nf euid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the effective user ID of the target process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::execname.3stap000066400000000000000000000030161305163227500267370ustar00rootroot00000000000000'\" t .\" Title: function::execname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::EXECNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::execname \- Returns the execname of a target process (or group of processes) .SH "SYNOPSIS" .sp .nf execname:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the execname of a target process (or group of processes)\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::exit.3stap000066400000000000000000000031041305163227500261210ustar00rootroot00000000000000'\" t .\" Title: function::exit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::EXIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::exit \- Start shutting down probing script\&. .SH "SYNOPSIS" .sp .nf exit() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This only enqueues a request to start shutting down the script\&. New probes will not fire (except \(lqend\(rq probes), but all currently running ones may complete their work\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::fastcall.3stap000066400000000000000000000030641305163227500267460ustar00rootroot00000000000000'\" t .\" Title: function::fastcall .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FASTCALL" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::fastcall \- Mark function as declared fastcall .SH "SYNOPSIS" .sp .nf fastcall() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Call this function before accessing arguments using the *_arg functions if the probed kernel function was declared fastcall in the source\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::format_ipaddr.3stap000066400000000000000000000030631305163227500277670ustar00rootroot00000000000000'\" t .\" Title: function::format_ipaddr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FORMAT_IPA" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::format_ipaddr \- Returns a string representation for an IP address .SH "SYNOPSIS" .sp .nf format_ipaddr:string(addr:long,family:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the IP address .RE .PP \fIfamily\fR .RS 4 the IP address family (either AF_INET or AF_INET6) .RE .SH SEE ALSO\n .IR tapset::ip (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ftrace.3stap000066400000000000000000000032171305163227500264210ustar00rootroot00000000000000'\" t .\" Title: function::ftrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FTRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ftrace \- Send a message to the ftrace ring\-buffer .SH "SYNOPSIS" .sp .nf ftrace(msg:string) .fi .SH "ARGUMENTS" .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP If the ftrace ring\-buffer is configured & available, see /debugfs/tracing/trace for the message\&. Otherwise, the message may be quietly dropped\&. An implicit end\-of\-line is added\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::fullpath_struct_file.3stap000066400000000000000000000032021305163227500313710ustar00rootroot00000000000000'\" t .\" Title: function::fullpath_struct_file .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FULLPATH_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::fullpath_struct_file \- get the full path .SH "SYNOPSIS" .sp .nf fullpath_struct_file:string(task:long,file:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer\&. .RE .PP \fIfile\fR .RS 4 Pointer to \(lqstruct file\(rq\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full dirent name (full path to the root), like the kernel d_path function\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::fullpath_struct_nameidata.3stap000066400000000000000000000032011305163227500323740ustar00rootroot00000000000000'\" t .\" Title: function::fullpath_struct_nameidata .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FULLPATH_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::fullpath_struct_nameidata \- get the full nameidata path .SH "SYNOPSIS" .sp .nf fullpath_struct_nameidata(nd:) .fi .SH "ARGUMENTS" .PP \fInd\fR .RS 4 Pointer to \(lqstruct nameidata\(rq\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full dirent name (full path to the root), like the kernel (and systemtap\-tapset) d_path function, with a \(lq/\(rq\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::fullpath_struct_path.3stap000066400000000000000000000031101305163227500314040ustar00rootroot00000000000000'\" t .\" Title: function::fullpath_struct_path .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::FULLPATH_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::fullpath_struct_path \- get the full path .SH "SYNOPSIS" .sp .nf fullpath_struct_path:string(path:long) .fi .SH "ARGUMENTS" .PP \fIpath\fR .RS 4 Pointer to \(lqstruct path\(rq\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full dirent name (full path to the root), like the kernel d_path function\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::get_cycles.3stap000066400000000000000000000033161305163227500272760ustar00rootroot00000000000000'\" t .\" Title: function::get_cycles .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GET_CYCLES" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::get_cycles \- Processor cycle count .SH "SYNOPSIS" .sp .nf get_cycles:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the processor cycle counter value if available, else it returns zero\&. The cycle counter is free running and unsynchronized on each processor\&. Thus, the order of events cannot determined by comparing the results of the get_cycles function on different processors\&. .SH SEE ALSO\n .IR tapset::timestamp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::get_loadavg_index.3stap000066400000000000000000000036261305163227500306240ustar00rootroot00000000000000'\" t .\" Title: function::get_loadavg_index .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GET_LOADAV" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::get_loadavg_index \- Get the load average for a specified interval .SH "SYNOPSIS" .sp .nf get_loadavg_index:long(indx:long) .fi .SH "ARGUMENTS" .PP \fIindx\fR .RS 4 The load average interval to capture\&. .RE .SH "DESCRIPTION" .PP This function returns the load average at a specified interval\&. The three load average values 1, 5 and 15 minute average corresponds to indexes 0, 1 and 2 of the avenrun array \- see linux/sched\&.h\&. Please note that the truncated\-integer portion of the load average is returned\&. If the specified index is out\-of\-bounds, then an error message and exception is thrown\&. .SH SEE ALSO\n .IR tapset::loadavg (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::get_sa_flags.3stap000066400000000000000000000027301305163227500275720ustar00rootroot00000000000000'\" t .\" Title: function::get_sa_flags .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GET_SA_FLA" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::get_sa_flags \- Returns the numeric value of sa_flags .SH "SYNOPSIS" .sp .nf get_sa_flags:long(act:long) .fi .SH "ARGUMENTS" .PP \fIact\fR .RS 4 address of the sigaction to query\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::get_sa_handler.3stap000066400000000000000000000027401305163227500301140ustar00rootroot00000000000000'\" t .\" Title: function::get_sa_handler .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GET_SA_HAN" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::get_sa_handler \- Returns the numeric value of sa_handler .SH "SYNOPSIS" .sp .nf get_sa_handler:long(act:long) .fi .SH "ARGUMENTS" .PP \fIact\fR .RS 4 address of the sigaction to query\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::gettimeofday_ms.3stap000066400000000000000000000030321305163227500303300ustar00rootroot00000000000000'\" t .\" Title: function::gettimeofday_ms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GETTIMEOFD" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::gettimeofday_ms \- Number of milliseconds since UNIX epoch .SH "SYNOPSIS" .sp .nf gettimeofday_ms:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of milliseconds since the UNIX epoch\&. .SH SEE ALSO\n .IR tapset::timestamp_gtod (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::gettimeofday_ns.3stap000066400000000000000000000030301305163227500303270ustar00rootroot00000000000000'\" t .\" Title: function::gettimeofday_ns .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GETTIMEOFD" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::gettimeofday_ns \- Number of nanoseconds since UNIX epoch .SH "SYNOPSIS" .sp .nf gettimeofday_ns:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of nanoseconds since the UNIX epoch\&. .SH SEE ALSO\n .IR tapset::timestamp_gtod (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::gettimeofday_s.3stap000066400000000000000000000030151305163227500301540ustar00rootroot00000000000000'\" t .\" Title: function::gettimeofday_s .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GETTIMEOFD" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::gettimeofday_s \- Number of seconds since UNIX epoch .SH "SYNOPSIS" .sp .nf gettimeofday_s:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of seconds since the UNIX epoch\&. .SH SEE ALSO\n .IR tapset::timestamp_gtod (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::gettimeofday_us.3stap000066400000000000000000000030321305163227500303400ustar00rootroot00000000000000'\" t .\" Title: function::gettimeofday_us .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GETTIMEOFD" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::gettimeofday_us \- Number of microseconds since UNIX epoch .SH "SYNOPSIS" .sp .nf gettimeofday_us:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of microseconds since the UNIX epoch\&. .SH SEE ALSO\n .IR tapset::timestamp_gtod (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::gid.3stap000066400000000000000000000027261305163227500257240ustar00rootroot00000000000000'\" t .\" Title: function::gid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::GID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::gid \- Returns the group ID of a target process .SH "SYNOPSIS" .sp .nf gid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the group ID of a target process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::htonl.3stap000066400000000000000000000026661305163227500263100ustar00rootroot00000000000000'\" t .\" Title: function::htonl .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::HTONL" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::htonl \- Convert 32\-bit long from host to network order .SH "SYNOPSIS" .sp .nf htonl:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::htonll.3stap000066400000000000000000000026771305163227500264660ustar00rootroot00000000000000'\" t .\" Title: function::htonll .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::HTONLL" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::htonll \- Convert 64\-bit long long from host to network order .SH "SYNOPSIS" .sp .nf htonll:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::htons.3stap000066400000000000000000000026671305163227500263200ustar00rootroot00000000000000'\" t .\" Title: function::htons .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::HTONS" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::htons \- Convert 16\-bit short from host to network order .SH "SYNOPSIS" .sp .nf htons:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::indent.3stap000066400000000000000000000034141305163227500264350ustar00rootroot00000000000000'\" t .\" Title: function::indent .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INDENT" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::indent \- returns an amount of space to indent .SH "SYNOPSIS" .sp .nf indent:string(delta:long) .fi .SH "ARGUMENTS" .PP \fIdelta\fR .RS 4 the amount of space added/removed for each call .RE .SH "DESCRIPTION" .PP This function returns a string with appropriate indentation\&. Call it with a small positive or matching negative delta\&. Unlike the thread_indent function, the indent does not track individual indent values on a per thread basis\&. .SH SEE ALSO\n .IR tapset::indent (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::indent_depth.3stap000066400000000000000000000034721305163227500276250ustar00rootroot00000000000000'\" t .\" Title: function::indent_depth .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INDENT_DEP" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::indent_depth \- returns the global nested\-depth .SH "SYNOPSIS" .sp .nf indent_depth:long(delta:long) .fi .SH "ARGUMENTS" .PP \fIdelta\fR .RS 4 the amount of depth added/removed for each call .RE .SH "DESCRIPTION" .PP This function returns a number for appropriate indentation, similar to \fBindent\fR\&. Call it with a small positive or matching negative delta\&. Unlike the thread_indent_depth function, the indent does not track individual indent values on a per thread basis\&. .SH SEE ALSO\n .IR tapset::indent (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::inet_get_ip_source.3stap000066400000000000000000000027701305163227500310260ustar00rootroot00000000000000'\" t .\" Title: function::inet_get_ip_source .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INET_GET_I" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::inet_get_ip_source \- Provide IP source address string for a kernel socket .SH "SYNOPSIS" .sp .nf inet_get_ip_source:string(sock:long) .fi .SH "ARGUMENTS" .PP \fIsock\fR .RS 4 pointer to the kernel socket .RE .SH SEE ALSO\n .IR tapset::inet_sock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::inet_get_local_port.3stap000066400000000000000000000027621305163227500311750ustar00rootroot00000000000000'\" t .\" Title: function::inet_get_local_port .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INET_GET_L" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::inet_get_local_port \- Provide local port number for a kernel socket .SH "SYNOPSIS" .sp .nf inet_get_local_port:long(sock:long) .fi .SH "ARGUMENTS" .PP \fIsock\fR .RS 4 pointer to the kernel socket .RE .SH SEE ALSO\n .IR tapset::inet_sock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::inode_name.3stap000066400000000000000000000030111305163227500272430ustar00rootroot00000000000000'\" t .\" Title: function::inode_name .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INODE_NAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::inode_name \- get the inode name .SH "SYNOPSIS" .sp .nf inode_name:string(inode:long) .fi .SH "ARGUMENTS" .PP \fIinode\fR .RS 4 Pointer to inode\&. .RE .SH "DESCRIPTION" .PP .PP Returns the first path basename associated with the given inode\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::inode_path.3stap000066400000000000000000000030051305163227500272620ustar00rootroot00000000000000'\" t .\" Title: function::inode_path .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INODE_PATH" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::inode_path \- get the path to an inode .SH "SYNOPSIS" .sp .nf inode_path:string(inode:long) .fi .SH "ARGUMENTS" .PP \fIinode\fR .RS 4 Pointer to inode\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full path associated with the given inode\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::int_arg.3stap000066400000000000000000000031051305163227500265740ustar00rootroot00000000000000'\" t .\" Title: function::int_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::INT_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::int_arg \- Return function argument as signed int .SH "SYNOPSIS" .sp .nf int_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as a signed int (i\&.e\&., a 32\-bit integer sign\-extended to 64 bits)\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ip_ntop.3stap000066400000000000000000000027421305163227500266270ustar00rootroot00000000000000'\" t .\" Title: function::ip_ntop .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IP_NTOP" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ip_ntop \- Returns a string representation for an IPv4 address .SH "SYNOPSIS" .sp .nf ip_ntop:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the IPv4 address represented as an integer .RE .SH SEE ALSO\n .IR tapset::ip (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_filter_key.3stap000066400000000000000000000037451305163227500305000ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_filter_key .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_FILT" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_filter_key \- Default filter function for ipmib\&.* probes .SH "SYNOPSIS" .sp .nf ipmib_filter_key:long(skb:long,op:long,SourceIsLocal:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff .RE .PP \fIop\fR .RS 4 value to be counted if \fIskb\fR passes the filter .RE .PP \fISourceIsLocal\fR .RS 4 1 is local operation and 0 is non\-local operation .RE .SH "DESCRIPTION" .PP This function is a default filter function\&. The user can replace this function with their own\&. The user\-supplied filter function returns an index key based on the values in \fIskb\fR\&. A return value of 0 means this particular \fIskb\fR should be not be counted\&. .SH SEE ALSO\n .IR tapset::ipmib-filter-default (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_get_proto.3stap000066400000000000000000000030371305163227500303370ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_get_proto .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_GET_" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_get_proto \- Get the protocol value .SH "SYNOPSIS" .sp .nf ipmib_get_proto:long(skb:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to a struct sk_buff .RE .SH "DESCRIPTION" .PP Returns the protocol value from \fIskb\fR\&. .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_local_addr.3stap000066400000000000000000000031771305163227500304260ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_local_addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_LOCA" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_local_addr \- Get the local ip address .SH "SYNOPSIS" .sp .nf ipmib_local_addr:long(skb:long,SourceIsLocal:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to a struct sk_buff .RE .PP \fISourceIsLocal\fR .RS 4 flag to indicate whether local operation .RE .SH "DESCRIPTION" .PP Returns the local ip address \fIskb\fR\&. .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_remote_addr.3stap000066400000000000000000000032111305163227500306140ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_remote_addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_REMO" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_remote_addr \- Get the remote ip address .SH "SYNOPSIS" .sp .nf ipmib_remote_addr:long(skb:long,SourceIsLocal:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to a struct sk_buff .RE .PP \fISourceIsLocal\fR .RS 4 flag to indicate whether local operation .RE .SH "DESCRIPTION" .PP Returns the remote ip address from \fIskb\fR\&. .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_tcp_local_port.3stap000066400000000000000000000032141305163227500313360ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_tcp_local_port .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_TCP_" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_tcp_local_port \- Get the local tcp port .SH "SYNOPSIS" .sp .nf ipmib_tcp_local_port:long(skb:long,SourceIsLocal:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to a struct sk_buff .RE .PP \fISourceIsLocal\fR .RS 4 flag to indicate whether local operation .RE .SH "DESCRIPTION" .PP Returns the local tcp port from \fIskb\fR\&. .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ipmib_tcp_remote_port.3stap000066400000000000000000000032211305163227500315350ustar00rootroot00000000000000'\" t .\" Title: function::ipmib_tcp_remote_port .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IPMIB_TCP_" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ipmib_tcp_remote_port \- Get the remote tcp port .SH "SYNOPSIS" .sp .nf ipmib_tcp_remote_port:long(skb:long,SourceIsLocal:long) .fi .SH "ARGUMENTS" .PP \fIskb\fR .RS 4 pointer to a struct sk_buff .RE .PP \fISourceIsLocal\fR .RS 4 flag to indicate whether local operation .RE .SH "DESCRIPTION" .PP Returns the remote tcp port from \fIskb\fR\&. .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::is_myproc.3stap000066400000000000000000000030751305163227500271630ustar00rootroot00000000000000'\" t .\" Title: function::is_myproc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IS_MYPROC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::is_myproc \- Determines if the current probe point has occurred in the user\*(Aqs own process .SH "SYNOPSIS" .sp .nf is_myproc:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns 1 if the current probe point has occurred in the user\*(Aqs own process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::is_return.3stap000066400000000000000000000030201305163227500271570ustar00rootroot00000000000000'\" t .\" Title: function::is_return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IS_RETURN" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::is_return \- Whether the current probe context is a return probe .SH "SYNOPSIS" .sp .nf is_return:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns 1 if the current probe context is a return probe, returns 0 otherwise\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::is_sig_blocked.3stap000066400000000000000000000030721305163227500301140ustar00rootroot00000000000000'\" t .\" Title: function::is_sig_blocked .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::IS_SIG_BLO" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::is_sig_blocked \- Returns 1 if the signal is currently blocked, or 0 if it is not .SH "SYNOPSIS" .sp .nf is_sig_blocked:long(task:long,sig:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 address of the task_struct to query\&. .RE .PP \fIsig\fR .RS 4 the signal number to test\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::isdigit.3stap000066400000000000000000000031341305163227500266070ustar00rootroot00000000000000'\" t .\" Title: function::isdigit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ISDIGIT" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::isdigit \- Checks for a digit .SH "SYNOPSIS" .sp .nf isdigit:long(str:string) .fi .SH "ARGUMENTS" .PP \fIstr\fR .RS 4 string to check .RE .SH "DESCRIPTION" .PP Checks for a digit (0 through 9) as the first character of a string\&. Returns non\-zero if true, and a zero if false\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::isinstr.3stap000066400000000000000000000032171305163227500266500ustar00rootroot00000000000000'\" t .\" Title: function::isinstr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ISINSTR" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::isinstr \- Returns whether a string is a substring of another string .SH "SYNOPSIS" .sp .nf isinstr:long(s1:string,s2:string) .fi .SH "ARGUMENTS" .PP \fIs1\fR .RS 4 string to search in .RE .PP \fIs2\fR .RS 4 substring to find .RE .SH "DESCRIPTION" .PP This function returns 1 if string \fIs1\fR contains \fIs2\fR, otherwise zero\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::jiffies.3stap000066400000000000000000000031411305163227500265700ustar00rootroot00000000000000'\" t .\" Title: function::jiffies .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JIFFIES" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::jiffies \- Kernel jiffies count .SH "SYNOPSIS" .sp .nf jiffies:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the value of the kernel jiffies variable\&. This value is incremented periodically by timer interrupts, and may wrap around a 32\-bit or 64\-bit boundary\&. See \fBHZ\fR\&. .SH SEE ALSO\n .IR tapset::timestamp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_add_array.3stap000066400000000000000000000033461305163227500301370ustar00rootroot00000000000000'\" t .\" Title: function::json_add_array .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_ADD_A" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_add_array \- Add an array .SH "SYNOPSIS" .sp .nf json_add_array:long(name:string,description:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 The name of the array\&. .RE .PP \fIdescription\fR .RS 4 Array description\&. An empty string can be used\&. .RE .SH "DESCRIPTION" .PP This function adds a array, setting up everything needed\&. Arrays contain other metrics, added with \fBjson_add_array_numeric_metric\fR or \fBjson_add_array_string_metric\fR\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_add_array_numeric_metric.3stap000066400000000000000000000036771305163227500332330ustar00rootroot00000000000000'\" t .\" Title: function::json_add_array_numeric_metric .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_ADD_A" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_add_array_numeric_metric \- Add a numeric metric to an array .SH "SYNOPSIS" .sp .nf json_add_array_numeric_metric:long(array_name:string,metric_name:string,metric_description:string,metric_units:string) .fi .SH "ARGUMENTS" .PP \fIarray_name\fR .RS 4 The name of the array the numeric metric should be added to\&. .RE .PP \fImetric_name\fR .RS 4 The name of the numeric metric\&. .RE .PP \fImetric_description\fR .RS 4 Metric description\&. An empty string can be used\&. .RE .PP \fImetric_units\fR .RS 4 Metic units\&. An empty string can be used\&. .RE .SH "DESCRIPTION" .PP This function adds a numeric metric to an array, setting up everything needed\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_add_array_string_metric.3stap000066400000000000000000000035251305163227500330670ustar00rootroot00000000000000'\" t .\" Title: function::json_add_array_string_metric .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_ADD_A" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_add_array_string_metric \- Add a string metric to an array .SH "SYNOPSIS" .sp .nf json_add_array_string_metric:long(array_name:string,metric_name:string,metric_description:string) .fi .SH "ARGUMENTS" .PP \fIarray_name\fR .RS 4 The name of the array the string metric should be added to\&. .RE .PP \fImetric_name\fR .RS 4 The name of the string metric\&. .RE .PP \fImetric_description\fR .RS 4 Metric description\&. An empty string can be used\&. .RE .SH "DESCRIPTION" .PP This function adds a string metric to an array, setting up everything needed\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_add_numeric_metric.3stap000066400000000000000000000033731305163227500320260ustar00rootroot00000000000000'\" t .\" Title: function::json_add_numeric_metric .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_ADD_N" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_add_numeric_metric \- Add a numeric metric .SH "SYNOPSIS" .sp .nf json_add_numeric_metric:long(name:string,description:string,units:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 The name of the numeric metric\&. .RE .PP \fIdescription\fR .RS 4 Metric description\&. An empty string can be used\&. .RE .PP \fIunits\fR .RS 4 Metic units\&. An empty string can be used\&. .RE .SH "DESCRIPTION" .PP This function adds a numeric metric, setting up everything needed\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_add_string_metric.3stap000066400000000000000000000032401305163227500316630ustar00rootroot00000000000000'\" t .\" Title: function::json_add_string_metric .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_ADD_S" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_add_string_metric \- Add a string metric .SH "SYNOPSIS" .sp .nf json_add_string_metric:long(name:string,description:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 The name of the string metric\&. .RE .PP \fIdescription\fR .RS 4 Metric description\&. An empty string can be used\&. .RE .SH "DESCRIPTION" .PP This function adds a string metric, setting up everything needed\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::json_set_prefix.3stap000066400000000000000000000032371305163227500303600ustar00rootroot00000000000000'\" t .\" Title: function::json_set_prefix .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::JSON_SET_P" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::json_set_prefix \- Set the metric prefix\&. .SH "SYNOPSIS" .sp .nf json_set_prefix:long(prefix:string) .fi .SH "ARGUMENTS" .PP \fIprefix\fR .RS 4 The prefix name to be used\&. .RE .SH "DESCRIPTION" .PP This function sets the \(lqprefix\(rq, which is the name of the base of the metric hierarchy\&. Calling this function is optional, by default the name of the systemtap module is used\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_char.3stap000066400000000000000000000032551305163227500274340ustar00rootroot00000000000000'\" t .\" Title: function::kernel_char .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_CHA" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_char \- Retrieves a char value stored in kernel memory .SH "SYNOPSIS" .sp .nf kernel_char:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the char from .RE .SH "DESCRIPTION" .PP Returns the char value from a given kernel memory address\&. Reports an error when reading from the given address fails\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_int.3stap000066400000000000000000000032501305163227500273040ustar00rootroot00000000000000'\" t .\" Title: function::kernel_int .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_INT" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_int \- Retrieves an int value stored in kernel memory .SH "SYNOPSIS" .sp .nf kernel_int:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the int from .RE .SH "DESCRIPTION" .PP Returns the int value from a given kernel memory address\&. Reports an error when reading from the given address fails\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_long.3stap000066400000000000000000000032551305163227500274560ustar00rootroot00000000000000'\" t .\" Title: function::kernel_long .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_LON" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_long \- Retrieves a long value stored in kernel memory .SH "SYNOPSIS" .sp .nf kernel_long:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the long from .RE .SH "DESCRIPTION" .PP Returns the long value from a given kernel memory address\&. Reports an error when reading from the given address fails\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_pointer.3stap000066400000000000000000000032771305163227500302030ustar00rootroot00000000000000'\" t .\" Title: function::kernel_pointer .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_POI" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_pointer \- Retrieves a pointer value stored in kernel memory .SH "SYNOPSIS" .sp .nf kernel_pointer:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the pointer from .RE .SH "DESCRIPTION" .PP Returns the pointer value from a given kernel memory address\&. Reports an error when reading from the given address fails\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_short.3stap000066400000000000000000000032631305163227500276550ustar00rootroot00000000000000'\" t .\" Title: function::kernel_short .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_SHO" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_short \- Retrieves a short value stored in kernel memory .SH "SYNOPSIS" .sp .nf kernel_short:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the short from .RE .SH "DESCRIPTION" .PP Returns the short value from a given kernel memory address\&. Reports an error when reading from the given address fails\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string.3stap000066400000000000000000000037411305163227500300250ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string \- Retrieves string from kernel memory .SH "SYNOPSIS" .sp .nf 1) kernel_string:string(addr:long) .fi .sp .nf 2) kernel_string:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 The error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) This function returns the null terminated C string from a given kernel memory address\&. Reports an error on string copy fault\&. .PP 2) This function returns the null terminated C string from a given kernel memory address\&. Reports the given error message on string copy fault\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_n.3stap000066400000000000000000000034341305163227500303410ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_n .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_n \- Retrieves string of given length from kernel memory .SH "SYNOPSIS" .sp .nf kernel_string_n:string(addr:long,n:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .PP \fIn\fR .RS 4 The maximum length of the string (if not null terminated) .RE .SH "DESCRIPTION" .PP Returns the C string of a maximum given length from a given kernel memory address\&. Reports an error on string copy fault\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_quoted.3stap000066400000000000000000000037411305163227500314060ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_quoted .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_quoted \- Retrieves and quotes string from kernel memory .SH "SYNOPSIS" .sp .nf kernel_string_quoted:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the kernel memory address to retrieve the string from .RE .SH "DESCRIPTION" .PP Returns the null terminated C string from a given kernel memory address where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. Note that the string will be surrounded by double quotes\&. If the kernel memory data is not accessible at the given address, the address itself is returned as a string, without double quotes\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_quoted_utf16.3stap000066400000000000000000000033141305163227500324270ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_quoted_utf16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_quoted_utf16 \- Quote given kernel UTF\-16 string\&. .SH "SYNOPSIS" .sp .nf kernel_string_quoted_utf16:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .SH "DESCRIPTION" .PP This function combines quoting as per \fIstring_quoted\fR and UTF\-16 decoding as per \fIkernel_string_utf16\fR\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_quoted_utf32.3stap000066400000000000000000000033141305163227500324250ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_quoted_utf32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_quoted_utf32 \- Quote given UTF\-32 kernel string\&. .SH "SYNOPSIS" .sp .nf kernel_string_quoted_utf32:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .SH "DESCRIPTION" .PP This function combines quoting as per \fIstring_quoted\fR and UTF\-32 decoding as per \fIkernel_string_utf32\fR\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_utf16.3stap000066400000000000000000000041571305163227500310540ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_utf16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_utf16 \- Retrieves UTF\-16 string from kernel memory .SH "SYNOPSIS" .sp .nf 1) kernel_string_utf16:string(addr:long) .fi .sp .nf 2) kernel_string_utf16:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 The error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) This function returns a null terminated UTF\-8 string converted from the UTF\-16 string at a given kernel memory address\&. Reports an error on string copy fault or conversion error\&. .PP 2) This function returns a null terminated UTF\-8 string converted from the UTF\-16 string at a given kernel memory address\&. Reports the given error message on string copy fault or conversion error\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::kernel_string_utf32.3stap000066400000000000000000000041571305163227500310520ustar00rootroot00000000000000'\" t .\" Title: function::kernel_string_utf32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::KERNEL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::kernel_string_utf32 \- Retrieves UTF\-32 string from kernel memory .SH "SYNOPSIS" .sp .nf 1) kernel_string_utf32:string(addr:long) .fi .sp .nf 2) kernel_string_utf32:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 The error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) This function returns a null terminated UTF\-8 string converted from the UTF\-32 string at a given kernel memory address\&. Reports an error on string copy fault or conversion error\&. .PP 2) This function returns a null terminated UTF\-8 string converted from the UTF\-32 string at a given kernel memory address\&. Reports the given error message on string copy fault or conversion error\&. .SH SEE ALSO\n .IR tapset::conversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::linuxmib_filter_key.3stap000066400000000000000000000036041305163227500312210ustar00rootroot00000000000000'\" t .\" Title: function::linuxmib_filter_key .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LINUXMIB_F" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::linuxmib_filter_key \- Default filter function for linuxmib\&.* probes .SH "SYNOPSIS" .sp .nf linuxmib_filter_key:long(sk:long,op:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to the struct sock .RE .PP \fIop\fR .RS 4 value to be counted if \fIsk\fR passes the filter .RE .SH "DESCRIPTION" .PP This function is a default filter function\&. The user can replace this function with their own\&. The user\-supplied filter function returns an index key based on the values in \fIsk\fR\&. A return value of 0 means this particular \fIsk\fR should be not be counted\&. .SH SEE ALSO\n .IR tapset::linuxmib-filter-default (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::local_clock_ms.3stap000066400000000000000000000032431305163227500301200ustar00rootroot00000000000000'\" t .\" Title: function::local_clock_ms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LOCAL_CLOC" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::local_clock_ms \- Number of milliseconds on the local cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf local_clock_ms:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of milliseconds on the local cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::local_clock_ns.3stap000066400000000000000000000032411305163227500301170ustar00rootroot00000000000000'\" t .\" Title: function::local_clock_ns .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LOCAL_CLOC" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::local_clock_ns \- Number of nanoseconds on the local cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf local_clock_ns:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of nanoseconds on the local cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::local_clock_s.3stap000066400000000000000000000032261305163227500277440ustar00rootroot00000000000000'\" t .\" Title: function::local_clock_s .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LOCAL_CLOC" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::local_clock_s \- Number of seconds on the local cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf local_clock_s:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of seconds on the local cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::local_clock_us.3stap000066400000000000000000000032431305163227500301300ustar00rootroot00000000000000'\" t .\" Title: function::local_clock_us .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LOCAL_CLOC" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::local_clock_us \- Number of microseconds on the local cpu\*(Aqs clock .SH "SYNOPSIS" .sp .nf local_clock_us:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the number of microseconds on the local cpu\*(Aqs clock\&. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy)\&. .SH SEE ALSO\n .IR tapset::timestamp_monotonic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::log.3stap000066400000000000000000000033461305163227500257410ustar00rootroot00000000000000'\" t .\" Title: function::log .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LOG" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::log \- Send a line to the common trace buffer .SH "SYNOPSIS" .sp .nf log(msg:string) .fi .SH "ARGUMENTS" .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP This function logs data\&. log sends the message immediately to staprun and to the bulk transport (relayfs) if it is being used\&. If the last character given is not a newline, then one is added\&. This function is not as efficient as printf and should be used only for urgent messages\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::long_arg.3stap000066400000000000000000000031471305163227500267470ustar00rootroot00000000000000'\" t .\" Title: function::long_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LONG_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::long_arg \- Return function argument as signed long .SH "SYNOPSIS" .sp .nf long_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as a signed long\&. On architectures where a long is 32 bits, the value is sign\-extended to 64 bits\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::longlong_arg.3stap000066400000000000000000000030451305163227500276240ustar00rootroot00000000000000'\" t .\" Title: function::longlong_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::LONGLONG_A" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::longlong_arg \- Return function argument as 64\-bit value .SH "SYNOPSIS" .sp .nf longlong_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as a 64\-bit value\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::mdelay.3stap000066400000000000000000000030451305163227500264270ustar00rootroot00000000000000'\" t .\" Title: function::mdelay .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Guru tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MDELAY" "3stap" "March 2016" "SystemTap Tapset Reference" "Guru tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::mdelay \- millisecond delay .SH "SYNOPSIS" .sp .nf mdelay(ms:long) .fi .SH "ARGUMENTS" .PP \fIms\fR .RS 4 Number of milliseconds to delay\&. .RE .SH "DESCRIPTION" .PP This function inserts a multi\-millisecond busy\-delay into a probe handler\&. It requires guru mode\&. .SH SEE ALSO\n .IR tapset::guru-delay (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::mem_page_size.3stap000066400000000000000000000026531305163227500277640ustar00rootroot00000000000000'\" t .\" Title: function::mem_page_size .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MEM_PAGE_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::mem_page_size \- Number of bytes in a page for this architecture .SH "SYNOPSIS" .sp .nf mem_page_size:long() .fi .SH "ARGUMENTS" .PP None .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::modname.3stap000066400000000000000000000033521305163227500265750ustar00rootroot00000000000000'\" t .\" Title: function::modname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MODNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::modname \- Return the kernel module name loaded at the address .SH "SYNOPSIS" .sp .nf modname:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to map to a kernel module name .RE .SH "DESCRIPTION" .PP Returns the module name associated with the given address if known\&. If not known it will raise an error\&. If the address was not in a kernel module, but in the kernel itself, then the string \(lqkernel\(rq will be returned\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::module_name.3stap000066400000000000000000000031141305163227500274360ustar00rootroot00000000000000'\" t .\" Title: function::module_name .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MODULE_NAM" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::module_name \- The module name of the current script .SH "SYNOPSIS" .sp .nf module_name:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the name of the stap module\&. Either generated randomly (stap_[0\-9a\-f]+_[0\-9a\-f]+) or set by stap \-m \&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::module_size.3stap000066400000000000000000000030041305163227500274660ustar00rootroot00000000000000'\" t .\" Title: function::module_size .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MODULE_SIZ" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::module_size \- The module size of the current script .SH "SYNOPSIS" .sp .nf module_size:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the sizes of various sections of the stap module\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::msecs_to_string.3stap000066400000000000000000000033531305163227500303600ustar00rootroot00000000000000'\" t .\" Title: function::msecs_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::MSECS_TO_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::msecs_to_string \- Human readable string for given milliseconds .SH "SYNOPSIS" .sp .nf msecs_to_string:string(msecs:long) .fi .SH "ARGUMENTS" .PP \fImsecs\fR .RS 4 Number of milliseconds to translate\&. .RE .SH "DESCRIPTION" .PP Returns a string representing the number of milliseconds as a human readable string consisting of \(lqXmY\&.ZZZs\(rq, where X is the number of minutes, Y is the number of seconds and ZZZ is the number of milliseconds\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::nfsderror.3stap000066400000000000000000000030711305163227500271570ustar00rootroot00000000000000'\" t .\" Title: function::nfsderror .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NFSDERROR" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::nfsderror \- Convert nfsd error number into string .SH "SYNOPSIS" .sp .nf nfsderror:string(err:long) .fi .SH "ARGUMENTS" .PP \fIerr\fR .RS 4 errnum .RE .SH "DESCRIPTION" .PP This function returns a string for the error number passed into the function\&. .SH SEE ALSO\n .IR tapset::nfsderrno (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_egid.3stap000066400000000000000000000031311305163227500265600ustar00rootroot00000000000000'\" t .\" Title: function::ns_egid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_EGID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_egid \- Returns the effective gid of a target process as seen in a user namespace .SH "SYNOPSIS" .sp .nf ns_egid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the effective gid of a target process as seen in the target user namespace if provided, or the stap process namespace .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_euid.3stap000066400000000000000000000031461305163227500266040ustar00rootroot00000000000000'\" t .\" Title: function::ns_euid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_EUID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_euid \- Returns the effective user ID of a target process as seen in a user namespace .SH "SYNOPSIS" .sp .nf ns_euid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the effective user ID of the target process as seen in the target user namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_gid.3stap000066400000000000000000000031161305163227500264160ustar00rootroot00000000000000'\" t .\" Title: function::ns_gid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_GID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_gid \- Returns the group ID of a target process as seen in a user namespace .SH "SYNOPSIS" .sp .nf ns_gid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the group ID of a target process as seen in the target user namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_pgrp.3stap000066400000000000000000000031461305163227500266260ustar00rootroot00000000000000'\" t .\" Title: function::ns_pgrp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_PGRP" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_pgrp \- Returns the process group ID of the current process as seen in a pid namespace .SH "SYNOPSIS" .sp .nf ns_pgrp:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the process group ID of the current process as seen in the target pid namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_pid.3stap000066400000000000000000000030251305163227500264260ustar00rootroot00000000000000'\" t .\" Title: function::ns_pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_PID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_pid \- Returns the ID of a target process as seen in a pid namespace .SH "SYNOPSIS" .sp .nf ns_pid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the ID of a target process as seen in the target pid namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_ppid.3stap000066400000000000000000000031771305163227500266160ustar00rootroot00000000000000'\" t .\" Title: function::ns_ppid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_PPID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_ppid \- Returns the process ID of a target process\*(Aqs parent process as seen in a pid namespace .SH "SYNOPSIS" .sp .nf ns_ppid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function return the process ID of the target process\*(Aqs parent process as seen in the target pid namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_sid.3stap000066400000000000000000000032711305163227500264340ustar00rootroot00000000000000'\" t .\" Title: function::ns_sid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_SID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_sid \- Returns the session ID of the current process as seen in a pid namespace .SH "SYNOPSIS" .sp .nf ns_sid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP The namespace\-aware session ID of a process is the process group ID of the session leader as seen in the target pid namespace if provided, or the stap process namespace\&. Session ID is stored in the signal_struct since Kernel 2\&.6\&.0\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_tid.3stap000066400000000000000000000031161305163227500264330ustar00rootroot00000000000000'\" t .\" Title: function::ns_tid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_TID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_tid \- Returns the thread ID of a target process as seen in a pid namespace .SH "SYNOPSIS" .sp .nf ns_tid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the thread ID of a target process as seen in the target pid namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ns_uid.3stap000066400000000000000000000031161305163227500264340ustar00rootroot00000000000000'\" t .\" Title: function::ns_uid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NS_UID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ns_uid \- Returns the user ID of a target process as seen in a user namespace .SH "SYNOPSIS" .sp .nf ns_uid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the user ID of the target process as seen in the target user namespace if provided, or the stap process namespace\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::nsecs_to_string.3stap000066400000000000000000000033601305163227500303570ustar00rootroot00000000000000'\" t .\" Title: function::nsecs_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NSECS_TO_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::nsecs_to_string \- Human readable string for given nanoseconds .SH "SYNOPSIS" .sp .nf nsecs_to_string:string(nsecs:long) .fi .SH "ARGUMENTS" .PP \fInsecs\fR .RS 4 Number of nanoseconds to translate\&. .RE .SH "DESCRIPTION" .PP Returns a string representing the number of nanoseconds as a human readable string consisting of \(lqXmY\&.ZZZZZZs\(rq, where X is the number of minutes, Y is the number of seconds and ZZZZZZZZZ is the number of nanoseconds\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ntohl.3stap000066400000000000000000000026661305163227500263100ustar00rootroot00000000000000'\" t .\" Title: function::ntohl .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NTOHL" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ntohl \- Convert 32\-bit long from network to host order .SH "SYNOPSIS" .sp .nf ntohl:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ntohll.3stap000066400000000000000000000026771305163227500264660ustar00rootroot00000000000000'\" t .\" Title: function::ntohll .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NTOHLL" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ntohll \- Convert 64\-bit long long from network to host order .SH "SYNOPSIS" .sp .nf ntohll:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ntohs.3stap000066400000000000000000000026671305163227500263200ustar00rootroot00000000000000'\" t .\" Title: function::ntohs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::NTOHS" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ntohs \- Convert 16\-bit short from network to host order .SH "SYNOPSIS" .sp .nf ntohs:long(x:long) .fi .SH "ARGUMENTS" .PP \fIx\fR .RS 4 Value to convert .RE .SH SEE ALSO\n .IR tapset::inet (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pages_to_string.3stap000066400000000000000000000031571305163227500303470ustar00rootroot00000000000000'\" t .\" Title: function::pages_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PAGES_TO_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pages_to_string \- Turns pages into a human readable string .SH "SYNOPSIS" .sp .nf pages_to_string:string(pages:long) .fi .SH "ARGUMENTS" .PP \fIpages\fR .RS 4 Number of pages to translate\&. .RE .SH "DESCRIPTION" .PP Multiplies pages by \fBpage_size\fR to get the number of bytes and returns the result of \fBbytes_to_string\fR\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::panic.3stap000066400000000000000000000031111305163227500262400ustar00rootroot00000000000000'\" t .\" Title: function::panic .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Guru tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PANIC" "3stap" "March 2016" "SystemTap Tapset Reference" "Guru tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::panic \- trigger a panic .SH "SYNOPSIS" .sp .nf panic(msg:string) .fi .SH "ARGUMENTS" .PP \fImsg\fR .RS 4 message to pass to kernel\*(Aqs \fBpanic\fR function .RE .SH "DESCRIPTION" .PP This function triggers an immediate panic of the running kernel with a user\-specified panic message\&. It requires guru mode\&. .SH SEE ALSO\n .IR tapset::panic (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pexecname.3stap000066400000000000000000000030321305163227500271150ustar00rootroot00000000000000'\" t .\" Title: function::pexecname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PEXECNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pexecname \- Returns the execname of a target process\*(Aqs parent process .SH "SYNOPSIS" .sp .nf pexecname:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the execname of a target process\*(Aqs parent procces\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pgrp.3stap000066400000000000000000000027601305163227500261270ustar00rootroot00000000000000'\" t .\" Title: function::pgrp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PGRP" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pgrp \- Returns the process group ID of the current process .SH "SYNOPSIS" .sp .nf pgrp:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the process group ID of the current process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pid.3stap000066400000000000000000000027121305163227500257300ustar00rootroot00000000000000'\" t .\" Title: function::pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pid \- Returns the ID of a target process .SH "SYNOPSIS" .sp .nf pid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the ID of a target process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pid2execname.3stap000066400000000000000000000030221305163227500275130ustar00rootroot00000000000000'\" t .\" Title: function::pid2execname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PID2EXECNA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pid2execname \- The name of the given process identifier .SH "SYNOPSIS" .sp .nf pid2execname:string(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 process identifier .RE .SH "DESCRIPTION" .PP Return the name of the given process id\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pid2task.3stap000066400000000000000000000030201305163227500266660ustar00rootroot00000000000000'\" t .\" Title: function::pid2task .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PID2TASK" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pid2task \- The task_struct of the given process identifier .SH "SYNOPSIS" .sp .nf pid2task:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 process identifier .RE .SH "DESCRIPTION" .PP Return the task struct of the given process id\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pn.3stap000066400000000000000000000030771305163227500255760ustar00rootroot00000000000000'\" t .\" Title: function::pn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PN" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pn \- Returns the active probe name .SH "SYNOPSIS" .sp .nf pn:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the script\-level probe point associated with a currently running probe handler, including wild\-card expansion effects\&. Context: The current probe point\&. .SH SEE ALSO\n .IR tapset::pn (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pnlabel.3stap000066400000000000000000000032461305163227500265740ustar00rootroot00000000000000'\" t .\" Title: function::pnlabel .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PNLABEL" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pnlabel \- Returns the label name parsed from the probe name .SH "SYNOPSIS" .sp .nf pnlabel:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This returns the label name as parsed from the script\-level probe point\&. This function will only work if called directly from the body of a \*(Aq\&.label\*(Aq probe point (i\&.e\&. no aliases)\&. .SH "CONTEXT" .PP The current probe point\&. .SH SEE ALSO\n .IR tapset::pn (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pointer_arg.3stap000066400000000000000000000031231305163227500274620ustar00rootroot00000000000000'\" t .\" Title: function::pointer_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::POINTER_AR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pointer_arg \- Return function argument as pointer value .SH "SYNOPSIS" .sp .nf pointer_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the unsigned value of argument n, same as ulong_arg\&. Can be used with any type of pointer\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pp.3stap000066400000000000000000000031211305163227500255660ustar00rootroot00000000000000'\" t .\" Title: function::pp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PP" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pp \- Returns the active probe point .SH "SYNOPSIS" .sp .nf pp:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the fully\-resolved probe point associated with a currently running probe handler, including alias and wild\-card expansion effects\&. Context: The current probe point\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ppfunc.3stap000066400000000000000000000030651305163227500264510ustar00rootroot00000000000000'\" t .\" Title: function::ppfunc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PPFUNC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ppfunc \- Returns the function name parsed from \fBpp\fR .SH "SYNOPSIS" .sp .nf ppfunc:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This returns the function name from the current \fBpp\fR\&. Not all \fBpp\fR have functions in them, in which case "" is returned\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ppid.3stap000066400000000000000000000030111305163227500261010ustar00rootroot00000000000000'\" t .\" Title: function::ppid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PPID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ppid \- Returns the process ID of a target process\*(Aqs parent process .SH "SYNOPSIS" .sp .nf ppid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function return the process ID of the target process\*(Aqs parent process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_backtrace.3stap000066400000000000000000000032121305163227500303030ustar00rootroot00000000000000'\" t .\" Title: function::print_backtrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_BACK" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_backtrace \- Print kernel stack back trace .SH "SYNOPSIS" .sp .nf print_backtrace() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function is equivalent to print_stack(\fBbacktrace\fR), except that deeper stack nesting may be supported\&. See print_ubacktrace for user\-space backtrace\&. The function does not return a value\&. .SH SEE ALSO\n .IR tapset::context-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_regs.3stap000066400000000000000000000030121305163227500273220ustar00rootroot00000000000000'\" t .\" Title: function::print_regs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_REGS" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_regs \- Print a register dump .SH "SYNOPSIS" .sp .nf print_regs() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function prints a register dump\&. Does nothing if no registers are available for the probe point\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_stack.3stap000066400000000000000000000036311305163227500274760ustar00rootroot00000000000000'\" t .\" Title: function::print_stack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_STAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_stack \- Print out kernel stack from string .SH "SYNOPSIS" .sp .nf print_stack(stk:string) .fi .SH "ARGUMENTS" .PP \fIstk\fR .RS 4 String with list of hexadecimal addresses .RE .SH "DESCRIPTION" .PP This function performs a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to \fBbacktrace\fR\&. .PP Print one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function\&. Return nothing\&. .SH "NOTE" .PP it is recommended to use \fBprint_syms\fR instead of this function\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_syms.3stap000066400000000000000000000036241305163227500273660ustar00rootroot00000000000000'\" t .\" Title: function::print_syms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_SYMS" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_syms \- Print out kernel stack from string .SH "SYNOPSIS" .sp .nf print_syms(callers:string) .fi .SH "ARGUMENTS" .PP \fIcallers\fR .RS 4 String with list of hexadecimal (kernel) addresses .RE .SH "DESCRIPTION" .PP This function performs a symbolic lookup of the addresses in the given string, which are assumed to be the result of prior calls to \fBstack\fR, \fBcallers\fR, and similar functions\&. .PP Prints one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function, as obtained by \fBsymdata\fR\&. Returns nothing\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_ubacktrace.3stap000066400000000000000000000035471305163227500305030ustar00rootroot00000000000000'\" t .\" Title: function::print_ubacktrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_UBAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_ubacktrace \- Print stack back trace for current user\-space task\&. .SH "SYNOPSIS" .sp .nf print_ubacktrace() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Equivalent to print_ustack(\fBubacktrace\fR), except that deeper stack nesting may be supported\&. Returns nothing\&. See \fBprint_backtrace\fR for kernel backtrace\&. .SH "NOTE" .PP To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with \-d /path/to/exe\-or\-so and/or add \-\-ldd to load all needed unwind data\&. .SH SEE ALSO\n .IR tapset::ucontext-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_ubacktrace_brief.3stap000066400000000000000000000034701305163227500316450ustar00rootroot00000000000000'\" t .\" Title: function::print_ubacktrace_brief .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_UBAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_ubacktrace_brief \- Print stack back trace for current user\-space task\&. .SH "SYNOPSIS" .sp .nf print_ubacktrace_brief() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Equivalent to \fBprint_ubacktrace\fR, but output for each symbol is shorter (just name and offset, or just the hex address of no symbol could be found)\&. .SH "NOTE" .PP To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with \-d /path/to/exe\-or\-so and/or add \-\-ldd to load all needed unwind data\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_ustack.3stap000066400000000000000000000037161305163227500276670ustar00rootroot00000000000000'\" t .\" Title: function::print_ustack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_USTA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_ustack \- Print out stack for the current task from string\&. .SH "SYNOPSIS" .sp .nf print_ustack(stk:string) .fi .SH "ARGUMENTS" .PP \fIstk\fR .RS 4 String with list of hexadecimal addresses for the current task\&. .RE .SH "DESCRIPTION" .PP Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to \fBubacktrace\fR for the current task\&. .PP Print one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function\&. Return nothing\&. .SH "NOTE" .PP it is recommended to use \fBprint_usyms\fR instead of this function\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::print_usyms.3stap000066400000000000000000000036271305163227500275560ustar00rootroot00000000000000'\" t .\" Title: function::print_usyms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINT_USYM" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::print_usyms \- Print out user stack from string .SH "SYNOPSIS" .sp .nf print_usyms(callers:string) .fi .SH "ARGUMENTS" .PP \fIcallers\fR .RS 4 String with list of hexadecimal (user) addresses .RE .SH "DESCRIPTION" .PP This function performs a symbolic lookup of the addresses in the given string, which are assumed to be the result of prior calls to \fBustack\fR, \fBucallers\fR, and similar functions\&. .PP Prints one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function, as obtained by \fBusymdata\fR\&. Returns nothing\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::printk.3stap000066400000000000000000000034401305163227500264620ustar00rootroot00000000000000'\" t .\" Title: function::printk .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PRINTK" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::printk \- Send a message to the kernel trace buffer .SH "SYNOPSIS" .sp .nf printk(level:long,msg:string) .fi .SH "ARGUMENTS" .PP \fIlevel\fR .RS 4 an integer for the severity level (0=KERN_EMERG \&.\&.\&. 7=KERN_DEBUG) .RE .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP Print a line of text to the kernel dmesg/console with the given severity\&. An implicit end\-of\-line is added\&. This function may not be safely called from all kernel probe contexts, so is restricted to guru mode only\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::probe_type.3stap000066400000000000000000000036731305163227500273330ustar00rootroot00000000000000'\" t .\" Title: function::probe_type .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROBE_TYPE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::probe_type \- The low level probe handler type of the current probe\&. .SH "SYNOPSIS" .sp .nf probe_type:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns a short string describing the low level probe handler type for the current probe point\&. This is for informational purposes only\&. Depending on the low level probe handler different context functions can or cannot provide information about the current event (for example some probe handlers only trigger in user space and have no associated kernel context)\&. High\-level probes might map to the same or different low\-level probes (depending on systemtap version and/or kernel used)\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::probefunc.3stap000066400000000000000000000037511305163227500271430ustar00rootroot00000000000000'\" t .\" Title: function::probefunc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROBEFUNC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::probefunc \- Return the probe point\*(Aqs function name, if known .SH "SYNOPSIS" .sp .nf probefunc:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the name of the function being probed based on the current address, as computed by symname(\fBaddr\fR) or usymname(\fBuaddr\fR) depending on probe context (whether the probe is a user probe or a kernel probe)\&. .SH "PLEASE NOTE" .PP this function\*(Aqs behaviour differs between SystemTap 2\&.0 and earlier versions\&. Prior to 2\&.0, \fBprobefunc\fR obtained the function name from the probe point string as returned by \fBpp\fR, and used the current address as a fallback\&. .PP Consider using \fBppfunc\fR instead\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::probemod.3stap000066400000000000000000000030351305163227500267620ustar00rootroot00000000000000'\" t .\" Title: function::probemod .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROBEMOD" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::probemod \- Return the probe point\*(Aqs kernel module name .SH "SYNOPSIS" .sp .nf probemod:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the name of the kernel module containing the probe point, if known\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_data.3stap000066400000000000000000000035251305163227500277510ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_data .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_D" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_data \- Program data size (data + stack) in pages .SH "SYNOPSIS" .sp .nf 1) proc_mem_data:long() .fi .sp .nf 2) proc_mem_data:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns the current process data size (data + stack) in pages, or zero when there is no current process or the number of pages couldn\*(Aqt be retrieved\&. .PP 2) Returns the given process data size (data + stack) in pages, or zero when the process doesn\*(Aqt exist or the number of pages couldn\*(Aqt be retrieved\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_rss.3stap000066400000000000000000000035121305163227500276430ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_rss .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_R" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_rss \- Program resident set size in pages .SH "SYNOPSIS" .sp .nf 1) proc_mem_rss:long() .fi .sp .nf 2) proc_mem_rss:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns the resident set size in pages of the current process, or zero when there is no current process or the number of pages couldn\*(Aqt be retrieved\&. .PP 2) Returns the resident set size in pages of the given process, or zero when the process doesn\*(Aqt exist or the number of pages couldn\*(Aqt be retrieved\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_shr.3stap000066400000000000000000000035451305163227500276360ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_shr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_shr \- Program shared pages (from shared mappings) .SH "SYNOPSIS" .sp .nf 1) proc_mem_shr:long() .fi .sp .nf 2) proc_mem_shr:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns the shared pages (from shared mappings) of the current process, or zero when there is no current process or the number of pages couldn\*(Aqt be retrieved\&. .PP 2) Returns the shared pages (from shared mappings) of the given process, or zero when the process doesn\*(Aqt exist or the number of pages couldn\*(Aqt be retrieved\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_size.3stap000066400000000000000000000035471305163227500300160ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_size .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_size \- Total program virtual memory size in pages .SH "SYNOPSIS" .sp .nf 1) proc_mem_size:long() .fi .sp .nf 2) proc_mem_size:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns the total virtual memory size in pages of the current process, or zero when there is no current process or the number of pages couldn\*(Aqt be retrieved\&. .PP 2) Returns the total virtual memory size in pages of the given process, or zero when that process doesn\*(Aqt exist or the number of pages couldn\*(Aqt be retrieved\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_string.3stap000066400000000000000000000036551305163227500303520ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_string \- Human readable string of process memory usage .SH "SYNOPSIS" .sp .nf 1) proc_mem_string:string() .fi .sp .nf 2) proc_mem_string:string(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns a human readable string showing the size, rss, shr, txt and data of the memory used by the current process\&. For example\(lqsize: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k\(rq\&. .PP 2) Returns a human readable string showing the size, rss, shr, txt and data of the memory used by the given process\&. For example\(lqsize: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k\(rq\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::proc_mem_txt.3stap000066400000000000000000000034711305163227500276570ustar00rootroot00000000000000'\" t .\" Title: function::proc_mem_txt .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PROC_MEM_T" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::proc_mem_txt \- Program text (code) size in pages .SH "SYNOPSIS" .sp .nf 1) proc_mem_txt:long() .fi .sp .nf 2) proc_mem_txt:long(pid:long) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of process to examine .RE .SH "DESCRIPTION" .PP 1) Returns the current process text (code) size in pages, or zero when there is no current process or the number of pages couldn\*(Aqt be retrieved\&. .PP 2) Returns the given process text (code) size in pages, or zero when the process doesn\*(Aqt exist or the number of pages couldn\*(Aqt be retrieved\&. .SH SEE ALSO\n .IR tapset::proc_mem (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::pstrace.3stap000066400000000000000000000032031305163227500266110ustar00rootroot00000000000000'\" t .\" Title: function::pstrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::PSTRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::pstrace \- Chain of processes and pids back to init(1) .SH "SYNOPSIS" .sp .nf pstrace:string(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 Pointer to task struct of process .RE .SH "DESCRIPTION" .PP This function returns a string listing execname and pid for each process starting from \fItask\fR back to the process ancestor that init(1) spawned\&. .SH SEE ALSO\n .IR tapset::pstrace (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qs_done.3stap000066400000000000000000000031331305163227500266020ustar00rootroot00000000000000'\" t .\" Title: function::qs_done .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QS_DONE" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qs_done \- Function to record finishing request .SH "SYNOPSIS" .sp .nf qs_done(qname:string) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 the name of the service that finished .RE .SH "DESCRIPTION" .PP This function records that a request originally from the given queue has completed being serviced\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qs_run.3stap000066400000000000000000000032241305163227500264620ustar00rootroot00000000000000'\" t .\" Title: function::qs_run .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QS_RUN" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qs_run \- Function to record being moved from wait queue to being serviced .SH "SYNOPSIS" .sp .nf qs_run(qname:string) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 the name of the service being moved and started .RE .SH "DESCRIPTION" .PP This function records that the previous enqueued request was removed from the given wait queue and is now being serviced\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qs_wait.3stap000066400000000000000000000031121305163227500266160ustar00rootroot00000000000000'\" t .\" Title: function::qs_wait .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QS_WAIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qs_wait \- Function to record enqueue requests .SH "SYNOPSIS" .sp .nf qs_wait(qname:string) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 the name of the queue requesting enqueue .RE .SH "DESCRIPTION" .PP This function records that a new request was enqueued for the given queue name\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_blocked.3stap000066400000000000000000000033021305163227500274370ustar00rootroot00000000000000'\" t .\" Title: function::qsq_blocked .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_BLOCKE" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_blocked \- Returns the time request was on the wait queue .SH "SYNOPSIS" .sp .nf qsq_blocked:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the fraction of elapsed time during which one or more requests were on the wait queue\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_print.3stap000066400000000000000000000035301305163227500271730ustar00rootroot00000000000000'\" t .\" Title: function::qsq_print .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_PRINT" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_print \- Prints a line of statistics for the given queue .SH "SYNOPSIS" .sp .nf qsq_print(qname:string) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .SH "DESCRIPTION" .PP This function prints a line containing the following .SH "STATISTICS FOR THE GIVEN QUEUE" .PP the queue name, the average rate of requests per second, the average wait queue length, the average time on the wait queue, the average time to service a request, the percentage of time the wait queue was used, and the percentage of time request was being serviced\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_service_time.3stap000066400000000000000000000033251305163227500305170ustar00rootroot00000000000000'\" t .\" Title: function::qsq_service_time .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_SERVIC" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_service_time \- Amount of time per request service .SH "SYNOPSIS" .sp .nf qsq_service_time:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the average time in microseconds required to service a request once it is removed from the wait queue\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_start.3stap000066400000000000000000000032771305163227500272040ustar00rootroot00000000000000'\" t .\" Title: function::qsq_start .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_START" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_start \- Function to reset the stats for a queue .SH "SYNOPSIS" .sp .nf qsq_start(qname:string) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 the name of the service that finished .RE .SH "DESCRIPTION" .PP This function resets the statistics counters for the given queue, and restarts tracking from the moment the function was called\&. This function is also used to create initialize a queue\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_throughput.3stap000066400000000000000000000032441305163227500302520ustar00rootroot00000000000000'\" t .\" Title: function::qsq_throughput .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_THROUG" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_throughput \- Number of requests served per unit time .SH "SYNOPSIS" .sp .nf qsq_throughput:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the average number or requests served per microsecond\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_utilization.3stap000066400000000000000000000033141305163227500304120ustar00rootroot00000000000000'\" t .\" Title: function::qsq_utilization .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_UTILIZ" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_utilization \- Fraction of time that any request was being serviced .SH "SYNOPSIS" .sp .nf qsq_utilization:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the average time in microseconds that at least one request was being serviced\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_wait_queue_length.3stap000066400000000000000000000032221305163227500315460ustar00rootroot00000000000000'\" t .\" Title: function::qsq_wait_queue_length .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_WAIT_Q" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_wait_queue_length \- length of wait queue .SH "SYNOPSIS" .sp .nf qsq_wait_queue_length:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the average length of the wait queue .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::qsq_wait_time.3stap000066400000000000000000000033351305163227500300240ustar00rootroot00000000000000'\" t .\" Title: function::qsq_wait_time .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Queue Statistics Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::QSQ_WAIT_T" "3stap" "March 2016" "SystemTap Tapset Reference" "Queue Statistics Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::qsq_wait_time \- Amount of time in queue + service per request .SH "SYNOPSIS" .sp .nf qsq_wait_time:long(qname:string,scale:long) .fi .SH "ARGUMENTS" .PP \fIqname\fR .RS 4 queue name .RE .PP \fIscale\fR .RS 4 scale variable to take account for interval fraction .RE .SH "DESCRIPTION" .PP This function returns the average time in microseconds that it took for a request to be serviced (\fBqs_wait\fR to \fBqa_done\fR)\&. .SH SEE ALSO\n .IR tapset::queue_stats (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::raise.3stap000066400000000000000000000031761305163227500262640ustar00rootroot00000000000000'\" t .\" Title: function::raise .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Guru tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RAISE" "3stap" "March 2016" "SystemTap Tapset Reference" "Guru tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::raise \- raise a signal in the current thread .SH "SYNOPSIS" .sp .nf raise(signo:long) .fi .SH "ARGUMENTS" .PP \fIsigno\fR .RS 4 signal number .RE .SH "DESCRIPTION" .PP This function calls the kernel send_sig routine on the current thread, with the given raw unchecked signal number\&. It may raise an error if \fBsend_sig\fR failed\&. It requires guru mode\&. .SH SEE ALSO\n .IR tapset::guru-signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::randint.3stap000066400000000000000000000027531305163227500266200ustar00rootroot00000000000000'\" t .\" Title: function::randint .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Random functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RANDINT" "3stap" "March 2016" "SystemTap Tapset Reference" "Random functions Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::randint \- Return a random number between [0,n) .SH "SYNOPSIS" .sp .nf randint:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 Number past upper limit of range, not larger than 2**20\&. .RE .SH SEE ALSO\n .IR tapset::random (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::read_stopwatch_ms.3stap000066400000000000000000000031731305163227500306640ustar00rootroot00000000000000'\" t .\" Title: function::read_stopwatch_ms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::READ_STOPW" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::read_stopwatch_ms \- Reads the time in milliseconds for a stopwatch .SH "SYNOPSIS" .sp .nf read_stopwatch_ms:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 stopwatch name .RE .SH "DESCRIPTION" .PP Returns time in milliseconds for stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::read_stopwatch_ns.3stap000066400000000000000000000031711305163227500306630ustar00rootroot00000000000000'\" t .\" Title: function::read_stopwatch_ns .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::READ_STOPW" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::read_stopwatch_ns \- Reads the time in nanoseconds for a stopwatch .SH "SYNOPSIS" .sp .nf read_stopwatch_ns:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 stopwatch name .RE .SH "DESCRIPTION" .PP Returns time in nanoseconds for stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::read_stopwatch_s.3stap000066400000000000000000000031561305163227500305100ustar00rootroot00000000000000'\" t .\" Title: function::read_stopwatch_s .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::READ_STOPW" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::read_stopwatch_s \- Reads the time in seconds for a stopwatch .SH "SYNOPSIS" .sp .nf read_stopwatch_s:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 stopwatch name .RE .SH "DESCRIPTION" .PP Returns time in seconds for stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::read_stopwatch_us.3stap000066400000000000000000000031731305163227500306740ustar00rootroot00000000000000'\" t .\" Title: function::read_stopwatch_us .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::READ_STOPW" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::read_stopwatch_us \- Reads the time in microseconds for a stopwatch .SH "SYNOPSIS" .sp .nf read_stopwatch_us:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 stopwatch name .RE .SH "DESCRIPTION" .PP Returns time in microseconds for stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::real_mount.3stap000066400000000000000000000031071305163227500273200ustar00rootroot00000000000000'\" t .\" Title: function::real_mount .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REAL_MOUNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::real_mount \- get the \*(Aqstruct mount\*(Aq pointer .SH "SYNOPSIS" .sp .nf real_mount:long(vfsmnt:long) .fi .SH "ARGUMENTS" .PP \fIvfsmnt\fR .RS 4 Pointer to \*(Aqstruct vfsmount\*(Aq .RE .SH "DESCRIPTION" .PP .PP Returns the \*(Aqstruct mount\*(Aq pointer value for a \*(Aqstruct vfsmount\*(Aq pointer\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::register.3stap000066400000000000000000000052271305163227500270040ustar00rootroot00000000000000'\" t .\" Title: function::register .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REGISTER" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::register \- Return the signed value of the named CPU register .SH "SYNOPSIS" .sp .nf register:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 Name of the register to return .RE .SH "DESCRIPTION" .PP Return the value of the named CPU register, as it was saved when the current probe point was hit\&. If the register is 32 bits, it is sign\-extended to 64 bits\&. .PP For the i386 architecture, the following names are recognized\&. (name1/name2 indicates that name1 and name2 are alternative names for the same register\&.) eax/ax, ebp/bp, ebx/bx, ecx/cx, edi/di, edx/dx, eflags/flags, eip/ip, esi/si, esp/sp, orig_eax/orig_ax, xcs/cs, xds/ds, xes/es, xfs/fs, xss/ss\&. .PP For the x86_64 architecture, the following names are recognized: 64\-bit registers: r8, r9, r10, r11, r12, r13, r14, r15, rax/ax, rbp/bp, rbx/bx, rcx/cx, rdi/di, rdx/dx, rip/ip, rsi/si, rsp/sp; 32\-bit registers: eax, ebp, ebx, ecx, edx, edi, edx, eip, esi, esp, flags/eflags, orig_eax; segment registers: xcs/cs, xss/ss\&. .PP For powerpc, the following names are recognized: r0, r1, \&.\&.\&. r31, nip, msr, orig_gpr3, ctr, link, xer, ccr, softe, trap, dar, dsisr, result\&. .PP For s390x, the following names are recognized: r0, r1, \&.\&.\&. r15, args, psw\&.mask, psw\&.addr, orig_gpr2, ilc, trap\&. .PP For AArch64, the following names are recognized: x0, x1, \&.\&.\&. x30, fp, lr, sp, pc, and orig_x0\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::registers_valid.3stap000066400000000000000000000032671305163227500303500ustar00rootroot00000000000000'\" t .\" Title: function::registers_valid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REGISTERS_" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::registers_valid \- Determines validity of \fBregister\fR and \fBu_register\fR in current context .SH "SYNOPSIS" .sp .nf registers_valid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns 1 if \fBregister\fR and \fBu_register\fR can be used in the current context, or 0 otherwise\&. For example, \fBregisters_valid\fR returns 0 when called from a begin or end probe\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::regparm.3stap000066400000000000000000000035651305163227500266200ustar00rootroot00000000000000'\" t .\" Title: function::regparm .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REGPARM" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::regparm \- Specify regparm value used to compile function .SH "SYNOPSIS" .sp .nf regparm(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 original regparm value .RE .SH "DESCRIPTION" .PP Call this function with argument n before accessing function arguments using the *_arg function is the function was build with the gcc \-mregparm=n option\&. .PP (The i386 kernel is built with \e\-mregparm=3, so systemtap considers regparm(3) the default for kernel functions on that architecture\&.) Only valid on i386 and x86_64 (when probing 32bit applications)\&. Produces an error on other architectures\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::remote_id.3stap000066400000000000000000000035111305163227500271210ustar00rootroot00000000000000'\" t .\" Title: function::remote_id .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REMOTE_ID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::remote_id \- The index of this instance in a remote execution\&. .SH "SYNOPSIS" .sp .nf remote_id:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns a number 0\&.\&.N, which is the unique index of this particular script execution from a swarm of \(lqstap \-\-remote A \-\-remote B \&.\&.\&.\(rq runs, and is the same number \(lqstap \-\-remote\-prefix\(rq would print\&. The function returns \-1 if the script was not launched with \(lqstap \-\-remote\(rq, or if the remote staprun/stapsh are older than version 1\&.7\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::remote_uri.3stap000066400000000000000000000033261305163227500273300ustar00rootroot00000000000000'\" t .\" Title: function::remote_uri .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REMOTE_URI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::remote_uri \- The name of this instance in a remote execution\&. .SH "SYNOPSIS" .sp .nf remote_uri:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the remote host used to invoke this particular script execution from a swarm of \(lqstap \-\-remote\(rq runs\&. It may not be unique among the swarm\&. The function returns an empty string if the script was not launched with \(lqstap \-\-remote\(rq\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::return_str.3stap000066400000000000000000000034011305163227500273570ustar00rootroot00000000000000'\" t .\" Title: function::return_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Errno Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RETURN_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "Errno Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::return_str \- Formats the return value as a string .SH "SYNOPSIS" .sp .nf return_str:string(format:long,ret:long) .fi .SH "ARGUMENTS" .PP \fIformat\fR .RS 4 Variable to determine return type base value .RE .PP \fIret\fR .RS 4 Return value (typically \fB$return\fR) .RE .SH "DESCRIPTION" .PP This function is used by the syscall tapset, and returns a string\&. Set format equal to 1 for a decimal, 2 for hex, 3 for octal\&. .PP Note that this function is preferred over \fBreturnstr\fR\&. .SH SEE ALSO\n .IR tapset::errno (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::returnstr.3stap000066400000000000000000000034361305163227500272300ustar00rootroot00000000000000'\" t .\" Title: function::returnstr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Errno Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RETURNSTR" "3stap" "March 2016" "SystemTap Tapset Reference" "Errno Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::returnstr \- Formats the return value as a string .SH "SYNOPSIS" .sp .nf returnstr:string(format:long) .fi .SH "ARGUMENTS" .PP \fIformat\fR .RS 4 Variable to determine return type base value .RE .SH "DESCRIPTION" .PP This function is used by the nd_syscall tapset, and returns a string\&. Set format equal to 1 for a decimal, 2 for hex, 3 for octal\&. .PP Note that this function should only be used in dwarfless probes (i\&.e\&. \*(Aqkprobe\&.function(\(lqfoo\(rq)\*(Aq)\&. Other probes should use \fBreturn_str\fR\&. .SH SEE ALSO\n .IR tapset::errno (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::returnval.3stap000066400000000000000000000032631305163227500272000ustar00rootroot00000000000000'\" t .\" Title: function::returnval .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Errno Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RETURNVAL" "3stap" "March 2016" "SystemTap Tapset Reference" "Errno Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::returnval \- Possible return value of probed function .SH "SYNOPSIS" .sp .nf returnval:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Return the value of the register in which function values are typically returned\&. Can be used in probes where \fB$return\fR isn\*(Aqt available\&. This is only a guess of the actual return value and can be totally wrong\&. Normally only used in dwarfless probes\&. .SH SEE ALSO\n .IR tapset::errno (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::reverse_path_walk.3stap000066400000000000000000000030331305163227500306560ustar00rootroot00000000000000'\" t .\" Title: function::reverse_path_walk .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::REVERSE_PA" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::reverse_path_walk \- get the full dirent path .SH "SYNOPSIS" .sp .nf reverse_path_walk:string(dentry:long) .fi .SH "ARGUMENTS" .PP \fIdentry\fR .RS 4 Pointer to dentry\&. .RE .SH "DESCRIPTION" .PP .PP Returns the path name (partial path to mount point)\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::rlimit_from_str.3stap000066400000000000000000000032331305163227500303660ustar00rootroot00000000000000'\" t .\" Title: function::rlimit_from_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: RLIMIT Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::RLIMIT_FRO" "3stap" "March 2016" "SystemTap Tapset Reference" "RLIMIT Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::rlimit_from_str \- Symbolic string associated with resource limit code .SH "SYNOPSIS" .sp .nf rlimit_from_str:long(lim_str:string) .fi .SH "ARGUMENTS" .PP \fIlim_str\fR .RS 4 The string representation of limit .RE .SH "DESCRIPTION" .PP This function returns the number associated with the given string, such as 0 for the string RLIMIT_CPU, or \-1 for an out\-of\-range value\&. .SH SEE ALSO\n .IR tapset::rlimit (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::s32_arg.3stap000066400000000000000000000030471305163227500264160ustar00rootroot00000000000000'\" t .\" Title: function::s32_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::S32_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::s32_arg \- Return function argument as signed 32\-bit value .SH "SYNOPSIS" .sp .nf s32_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the signed 32\-bit value of argument n, same as int_arg\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::s64_arg.3stap000066400000000000000000000030541305163227500264210ustar00rootroot00000000000000'\" t .\" Title: function::s64_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::S64_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::s64_arg \- Return function argument as signed 64\-bit value .SH "SYNOPSIS" .sp .nf s64_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the signed 64\-bit value of argument n, same as longlong_arg\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sa_flags_str.3stap000066400000000000000000000027601305163227500276260ustar00rootroot00000000000000'\" t .\" Title: function::sa_flags_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SA_FLAGS_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sa_flags_str \- Returns the string representation of sa_flags .SH "SYNOPSIS" .sp .nf sa_flags_str:string(sa_flags:long) .fi .SH "ARGUMENTS" .PP \fIsa_flags\fR .RS 4 the set of flags to convert to string\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sa_handler.3stap000066400000000000000000000000531305163227500272500ustar00rootroot00000000000000.SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sa_handler_str.3stap000066400000000000000000000031441305163227500301440ustar00rootroot00000000000000'\" t .\" Title: function::sa_handler_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SA_HANDLER" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sa_handler_str \- Returns the string representation of an sa_handler .SH "SYNOPSIS" .sp .nf sa_handler_str(handler:) .fi .SH "ARGUMENTS" .PP \fIhandler\fR .RS 4 the sa_handler to convert to string\&. .RE .SH "DESCRIPTION" .PP Returns the string representation of an sa_handler\&. If it is not SIG_DFL, SIG_IGN or SIG_ERR, it will return the address of the handler\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_char.3stap000066400000000000000000000034121305163227500303020ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_char .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_char \- Writes a char value to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_char(addr:long,val:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the char to .RE .PP \fIval\fR .RS 4 The char which is to be written .RE .SH "DESCRIPTION" .PP Writes the char value to a given kernel memory address\&. Reports an error when writing to the given address fails\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_int.3stap000066400000000000000000000034041305163227500301600ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_int .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_int \- Writes an int value to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_int(addr:long,val:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the int to .RE .PP \fIval\fR .RS 4 The int which is to be written .RE .SH "DESCRIPTION" .PP Writes the int value to a given kernel memory address\&. Reports an error when writing to the given address fails\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_long.3stap000066400000000000000000000034121305163227500303240ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_long .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_long \- Writes a long value to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_long(addr:long,val:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the long to .RE .PP \fIval\fR .RS 4 The long which is to be written .RE .SH "DESCRIPTION" .PP Writes the long value to a given kernel memory address\&. Reports an error when writing to the given address fails\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_pointer.3stap000066400000000000000000000034421305163227500310500ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_pointer .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_pointer \- Writes a pointer value to kernel memory\&. .SH "SYNOPSIS" .sp .nf set_kernel_pointer(addr:long,val:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the pointer to .RE .PP \fIval\fR .RS 4 The pointer which is to be written .RE .SH "DESCRIPTION" .PP Writes the pointer value to a given kernel memory address\&. Reports an error when writing to the given address fails\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_short.3stap000066400000000000000000000034211305163227500305240ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_short .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_short \- Writes a short value to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_short(addr:long,val:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the short to .RE .PP \fIval\fR .RS 4 The short which is to be written .RE .SH "DESCRIPTION" .PP Writes the short value to a given kernel memory address\&. Reports an error when writing to the given address fails\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_string.3stap000066400000000000000000000034011305163227500306710ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_string \- Writes a string to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_string(addr:long,val:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the string to .RE .PP \fIval\fR .RS 4 The string which is to be written .RE .SH "DESCRIPTION" .PP Writes the given string to a given kernel memory address\&. Reports an error on string copy fault\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::set_kernel_string_n.3stap000066400000000000000000000035621305163227500312160ustar00rootroot00000000000000'\" t .\" Title: function::set_kernel_string_n .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data writing functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SET_KERNEL" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data writing functi" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::set_kernel_string_n \- Writes a string of given length to kernel memory .SH "SYNOPSIS" .sp .nf set_kernel_string_n(addr:long,n:long,val:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The kernel address to write the string to .RE .PP \fIn\fR .RS 4 The maximum length of the string .RE .PP \fIval\fR .RS 4 The string which is to be written .RE .SH "DESCRIPTION" .PP Writes the given string up to a maximum given length to a given kernel memory address\&. Reports an error on string copy fault\&. Requires the use of guru mode (\-g)\&. .SH SEE ALSO\n .IR tapset::conversions-guru (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sid.3stap000066400000000000000000000030621305163227500257320ustar00rootroot00000000000000'\" t .\" Title: function::sid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sid \- Returns the session ID of the current process .SH "SYNOPSIS" .sp .nf sid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP The session ID of a process is the process group ID of the session leader\&. Session ID is stored in the signal_struct since Kernel 2\&.6\&.0\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::signal_str.3stap000066400000000000000000000027351305163227500273260ustar00rootroot00000000000000'\" t .\" Title: function::signal_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SIGNAL_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::signal_str \- Returns the string representation of a signal number .SH "SYNOPSIS" .sp .nf signal_str(num:) .fi .SH "ARGUMENTS" .PP \fInum\fR .RS 4 the signal number to convert to string\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sigset_mask_str.3stap000066400000000000000000000027531305163227500303620ustar00rootroot00000000000000'\" t .\" Title: function::sigset_mask_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SIGSET_MAS" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sigset_mask_str \- Returns the string representation of a sigset .SH "SYNOPSIS" .sp .nf sigset_mask_str:string(mask:long) .fi .SH "ARGUMENTS" .PP \fImask\fR .RS 4 the sigset to convert to string\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_fam_num2str.3stap000066400000000000000000000027621305163227500304350ustar00rootroot00000000000000'\" t .\" Title: function::sock_fam_num2str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_FAM_N" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_fam_num2str \- Given a protocol family number, return a string representation .SH "SYNOPSIS" .sp .nf sock_fam_num2str:string(family:long) .fi .SH "ARGUMENTS" .PP \fIfamily\fR .RS 4 The family number .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_fam_str2num.3stap000066400000000000000000000030101305163227500304200ustar00rootroot00000000000000'\" t .\" Title: function::sock_fam_str2num .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_FAM_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_fam_str2num \- Given a protocol family name (string), return the corresponding protocol family number .SH "SYNOPSIS" .sp .nf sock_fam_str2num:long(family:string) .fi .SH "ARGUMENTS" .PP \fIfamily\fR .RS 4 The family name .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_prot_num2str.3stap000066400000000000000000000027561305163227500306610ustar00rootroot00000000000000'\" t .\" Title: function::sock_prot_num2str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_PROT_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_prot_num2str \- Given a protocol number, return a string representation .SH "SYNOPSIS" .sp .nf sock_prot_num2str:string(proto:long) .fi .SH "ARGUMENTS" .PP \fIproto\fR .RS 4 The protocol number .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_prot_str2num.3stap000066400000000000000000000027751305163227500306620ustar00rootroot00000000000000'\" t .\" Title: function::sock_prot_str2num .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_PROT_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_prot_str2num \- Given a protocol name (string), return the corresponding protocol number .SH "SYNOPSIS" .sp .nf sock_prot_str2num:long(proto:string) .fi .SH "ARGUMENTS" .PP \fIproto\fR .RS 4 The protocol name .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_state_num2str.3stap000066400000000000000000000027621305163227500310120ustar00rootroot00000000000000'\" t .\" Title: function::sock_state_num2str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_STATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_state_num2str \- Given a socket state number, return a string representation .SH "SYNOPSIS" .sp .nf sock_state_num2str:string(state:long) .fi .SH "ARGUMENTS" .PP \fIstate\fR .RS 4 The state number .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sock_state_str2num.3stap000066400000000000000000000027671305163227500310170ustar00rootroot00000000000000'\" t .\" Title: function::sock_state_str2num .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SOCK_STATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sock_state_str2num \- Given a socket state string, return the corresponding state number .SH "SYNOPSIS" .sp .nf sock_state_str2num:long(state:string) .fi .SH "ARGUMENTS" .PP \fIstate\fR .RS 4 The state name .RE .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::speculate.3stap000066400000000000000000000031431305163227500271400ustar00rootroot00000000000000'\" t .\" Title: function::speculate .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Speculation .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPECULATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Speculation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::speculate \- Store a string for possible output later .SH "SYNOPSIS" .sp .nf speculate(id:long,output:string) .fi .SH "ARGUMENTS" .PP \fIid\fR .RS 4 buffer id to store the information in .RE .PP \fIoutput\fR .RS 4 string to write out when commit occurs .RE .SH "DESCRIPTION" .PP Add a string to the speculative buffer for id\&. .SH SEE ALSO\n .IR tapset::speculative (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::speculation.3stap000066400000000000000000000033131305163227500275000ustar00rootroot00000000000000'\" t .\" Title: function::speculation .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Speculation .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPECULATIO" "3stap" "March 2016" "SystemTap Tapset Reference" "Speculation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::speculation \- Allocate a new id for speculative output .SH "SYNOPSIS" .sp .nf speculation:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP The \fBspeculation\fR function is called when a new speculation buffer is needed\&. It returns an id for the speculative output\&. There can be multiple threads being speculated on concurrently\&. This id is used by other speculation functions to keep the threads separate\&. .SH SEE ALSO\n .IR tapset::speculative (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_backtrace.3stap000066400000000000000000000041411305163227500304700ustar00rootroot00000000000000'\" t .\" Title: function::sprint_backtrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_BAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_backtrace \- Return stack back trace as string .SH "SYNOPSIS" .sp .nf sprint_backtrace:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Returns a simple (kernel) backtrace\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found)\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use \fBprint_backtrace\fR\&. Equivalent to sprint_stack(\fBbacktrace\fR), but more efficient (no need to translate between hex strings and final backtrace string)\&. .SH SEE ALSO\n .IR tapset::context-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_loadavg.3stap000066400000000000000000000030741305163227500301720ustar00rootroot00000000000000'\" t .\" Title: function::sprint_loadavg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_LOA" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_loadavg \- Report a pretty\-printed load average .SH "SYNOPSIS" .sp .nf sprint_loadavg:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the a string with three decimal numbers in the usual format for 1\-, 5\- and 15\-minute load averages\&. .SH SEE ALSO\n .IR tapset::loadavg (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_stack.3stap000066400000000000000000000044121305163227500276570ustar00rootroot00000000000000'\" t .\" Title: function::sprint_stack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_STA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_stack \- Return stack for kernel addresses from string .SH "SYNOPSIS" .sp .nf sprint_stack:string(stk:string) .fi .SH "ARGUMENTS" .PP \fIstk\fR .RS 4 String with list of hexadecimal (kernel) addresses .RE .SH "DESCRIPTION" .PP Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to \fBbacktrace\fR\&. .PP Returns a simple backtrace from the given hex string\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found)\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use print_stack\&. .SH "NOTE" .PP it is recommended to use \fBsprint_syms\fR instead of this function\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_syms.3stap000066400000000000000000000043731305163227500275530ustar00rootroot00000000000000'\" t .\" Title: function::sprint_syms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_SYM" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_syms \- Return stack for kernel addresses from string .SH "SYNOPSIS" .sp .nf sprint_syms(callers:string) .fi .SH "ARGUMENTS" .PP \fIcallers\fR .RS 4 String with list of hexadecimal (kernel) addresses .RE .SH "DESCRIPTION" .PP Perform a symbolic lookup of the addresses in the given string, which are assumed to be the result of a prior calls to \fBstack\fR, \fBcallers\fR, and similar functions\&. .PP Returns a simple backtrace from the given hex string\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found), as obtained from \fBsymdata\fR\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use \fBprint_syms\fR\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_ubacktrace.3stap000066400000000000000000000045641305163227500306660ustar00rootroot00000000000000'\" t .\" Title: function::sprint_ubacktrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_UBA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_ubacktrace \- Return stack back trace for current user\-space task as string\&. .SH "SYNOPSIS" .sp .nf sprint_ubacktrace:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Returns a simple backtrace for the current task\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found)\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use \fBprint_ubacktrace\fR\&. Equivalent to sprint_ustack(\fBubacktrace\fR), but more efficient (no need to translate between hex strings and final backtrace string)\&. .SH "NOTE" .PP To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with \-d /path/to/exe\-or\-so and/or add \-\-ldd to load all needed unwind data\&. .SH SEE ALSO\n .IR tapset::ucontext-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_ustack.3stap000066400000000000000000000044701305163227500300500ustar00rootroot00000000000000'\" t .\" Title: function::sprint_ustack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_UST" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_ustack \- Return stack for the current task from string\&. .SH "SYNOPSIS" .sp .nf sprint_ustack:string(stk:string) .fi .SH "ARGUMENTS" .PP \fIstk\fR .RS 4 String with list of hexadecimal addresses for the current task\&. .RE .SH "DESCRIPTION" .PP Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to \fBubacktrace\fR for the current task\&. .PP Returns a simple backtrace from the given hex string\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found)\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use print_ustack\&. .SH "NOTE" .PP it is recommended to use \fBsprint_usyms\fR instead of this function\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::sprint_usyms.3stap000066400000000000000000000043771305163227500277440ustar00rootroot00000000000000'\" t .\" Title: function::sprint_usyms .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SPRINT_USY" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::sprint_usyms \- Return stack for user addresses from string .SH "SYNOPSIS" .sp .nf sprint_usyms(callers:string) .fi .SH "ARGUMENTS" .PP \fIcallers\fR .RS 4 String with list of hexadecimal (user) addresses .RE .SH "DESCRIPTION" .PP Perform a symbolic lookup of the addresses in the given string, which are assumed to be the result of a prior calls to \fBustack\fR, \fBucallers\fR, and similar functions\&. .PP Returns a simple backtrace from the given hex string\&. One line per address\&. Includes the symbol name (or hex address if symbol couldn\*(Aqt be resolved) and module name (if found), as obtained from \fBusymdata\fR\&. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets)\&. Returns the backtrace as string (each line terminated by a newline character)\&. Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use \fBprint_usyms\fR\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stack.3stap000066400000000000000000000034051305163227500262610ustar00rootroot00000000000000'\" t .\" Title: function::stack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STACK" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stack \- Return address at given depth of kernel stack backtrace .SH "SYNOPSIS" .sp .nf stack:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 number of levels to descend in the stack\&. .RE .SH "DESCRIPTION" .PP Performs a simple (kernel) backtrace, and returns the element at the specified position\&. The results of the backtrace itself are cached, so that the backtrace computation is performed at most once no matter how many times \fBstack\fR is called, or in what order\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stack_size.3stap000066400000000000000000000027511305163227500273160ustar00rootroot00000000000000'\" t .\" Title: function::stack_size .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STACK_SIZE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stack_size \- Return the size of the kernel stack .SH "SYNOPSIS" .sp .nf stack_size:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the size of the kernel stack\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stack_unused.3stap000066400000000000000000000030431305163227500276420ustar00rootroot00000000000000'\" t .\" Title: function::stack_unused .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STACK_UNUS" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stack_unused \- Returns the amount of kernel stack currently available .SH "SYNOPSIS" .sp .nf stack_unused:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function determines how many bytes are currently available in the kernel stack\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stack_used.3stap000066400000000000000000000030111305163227500272720ustar00rootroot00000000000000'\" t .\" Title: function::stack_used .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STACK_USED" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stack_used \- Returns the amount of kernel stack used .SH "SYNOPSIS" .sp .nf stack_used:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function determines how many bytes are currently used in the kernel stack\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::start_stopwatch.3stap000066400000000000000000000030741305163227500304070ustar00rootroot00000000000000'\" t .\" Title: function::start_stopwatch .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::START_STOP" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::start_stopwatch \- Start a stopwatch .SH "SYNOPSIS" .sp .nf start_stopwatch(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 the stopwatch name .RE .SH "DESCRIPTION" .PP Start stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stop_stopwatch.3stap000066400000000000000000000030671305163227500302410ustar00rootroot00000000000000'\" t .\" Title: function::stop_stopwatch .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Timestamp Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STOP_STOPW" "3stap" "March 2016" "SystemTap Tapset Reference" "Timestamp Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stop_stopwatch \- Stop a stopwatch .SH "SYNOPSIS" .sp .nf stop_stopwatch(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 the stopwatch name .RE .SH "DESCRIPTION" .PP Stop stopwatch \fIname\fR\&. Creates stopwatch \fIname\fR if it does not currently exist\&. .SH SEE ALSO\n .IR tapset::stopwatch (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stp_pid.3stap000066400000000000000000000031251305163227500266150ustar00rootroot00000000000000'\" t .\" Title: function::stp_pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STP_PID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stp_pid \- The process id of the stapio process .SH "SYNOPSIS" .sp .nf stp_pid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the process id of the stapio process that launched this script\&. There could be other SystemTap scripts and stapio processes running on the system\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::str_replace.3stap000066400000000000000000000034451305163227500274630ustar00rootroot00000000000000'\" t .\" Title: function::str_replace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STR_REPLAC" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::str_replace \- str_replace Replaces all instances of a substring with another .SH "SYNOPSIS" .sp .nf str_replace:string(prnt_str:string,srch_str:string,rplc_str:string) .fi .SH "ARGUMENTS" .PP \fIprnt_str\fR .RS 4 the string to search and replace in .RE .PP \fIsrch_str\fR .RS 4 the substring which is used to search in \fIprnt_str\fR string .RE .PP \fIrplc_str\fR .RS 4 the substring which is used to replace \fIsrch_str\fR .RE .SH "DESCRIPTION" .PP This function returns the given string with substrings replaced\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::string_quoted.3stap000066400000000000000000000034351305163227500300460ustar00rootroot00000000000000'\" t .\" Title: function::string_quoted .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STRING_QUO" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::string_quoted \- Quotes a given string .SH "SYNOPSIS" .sp .nf string_quoted:string(str:string) .fi .SH "ARGUMENTS" .PP \fIstr\fR .RS 4 The kernel address to retrieve the string from .RE .SH "DESCRIPTION" .PP Returns the quoted string version of the given string, with characters where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. Note that the string will be surrounded by double quotes\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::stringat.3stap000066400000000000000000000034541305163227500270130ustar00rootroot00000000000000'\" t .\" Title: function::stringat .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STRINGAT" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::stringat \- Returns the char at a given position in the string .SH "SYNOPSIS" .sp .nf stringat:long(str:string,pos:long) .fi .SH "ARGUMENTS" .PP \fIstr\fR .RS 4 the string to fetch the character from .RE .PP \fIpos\fR .RS 4 the position to get the character from (first character is 0) .RE .SH "DESCRIPTION" .PP This function returns the character at a given position in the string or zero if the string doesn\*(Aqt have as many characters\&. Reports an error if pos is out of bounds\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::strlen.3stap000066400000000000000000000030721305163227500264630ustar00rootroot00000000000000'\" t .\" Title: function::strlen .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STRLEN" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::strlen \- Returns the length of a string .SH "SYNOPSIS" .sp .nf strlen:long(s:string) .fi .SH "ARGUMENTS" .PP \fIs\fR .RS 4 the string .RE .SH "DESCRIPTION" .PP This function returns the length of the string, which can be zero up to MAXSTRINGLEN\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::strtol.3stap000066400000000000000000000033611305163227500265040ustar00rootroot00000000000000'\" t .\" Title: function::strtol .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::STRTOL" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::strtol \- strtol \- Convert a string to a long .SH "SYNOPSIS" .sp .nf strtol:long(str:string,base:long) .fi .SH "ARGUMENTS" .PP \fIstr\fR .RS 4 string to convert .RE .PP \fIbase\fR .RS 4 the base to use .RE .SH "DESCRIPTION" .PP This function converts the string representation of a number to an integer\&. The \fIbase\fR parameter indicates the number base to assume for the string (eg\&. 16 for hex, 8 for octal, 2 for binary)\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::substr.3stap000066400000000000000000000035621305163227500265020ustar00rootroot00000000000000'\" t .\" Title: function::substr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SUBSTR" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::substr \- Returns a substring .SH "SYNOPSIS" .sp .nf substr:string(str:string,start:long,length:long) .fi .SH "ARGUMENTS" .PP \fIstr\fR .RS 4 the string to take a substring from .RE .PP \fIstart\fR .RS 4 starting position of the extracted string (first character is 0) .RE .PP \fIlength\fR .RS 4 length of string to return .RE .SH "DESCRIPTION" .PP Returns the substring of the given string at the given start position with the given length (or smaller if the length of the original string is less than start + length, or length is bigger than MAXSTRINGLEN)\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::switch_file.3stap000066400000000000000000000031131305163227500274500ustar00rootroot00000000000000'\" t .\" Title: function::switch_file .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Output file switching Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SWITCH_FIL" "3stap" "March 2016" "SystemTap Tapset Reference" "Output file switching Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::switch_file \- switch to the next output file .SH "SYNOPSIS" .sp .nf switch_file() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function sends a signal to the stapio process, commanding it to rotate to the next output file when output is sent to file(s)\&. .SH SEE ALSO\n .IR tapset::switchfile (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::symdata.3stap000066400000000000000000000036331305163227500266210ustar00rootroot00000000000000'\" t .\" Title: function::symdata .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYMDATA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::symdata \- Return the kernel symbol and module offset for the address .SH "SYNOPSIS" .sp .nf symdata:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate .RE .SH "DESCRIPTION" .PP Returns the (function) symbol name associated with the given address if known, the offset from the start and size of the symbol, plus module name (between brackets)\&. If symbol is unknown, but module is known, the offset inside the module, plus the size of the module is added\&. If any element is not known it will be omitted and if the symbol name is unknown it will return the hex string for the given address\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::symfile.3stap000066400000000000000000000031241305163227500266220ustar00rootroot00000000000000'\" t .\" Title: function::symfile .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYMFILE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::symfile \- Return the file name of a given address\&. .SH "SYNOPSIS" .sp .nf symfile:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the file name of the given address, if known\&. If the file name cannot be found, the hex string representation of the address will be returned\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::symfileline.3stap000066400000000000000000000033271305163227500274770ustar00rootroot00000000000000'\" t .\" Title: function::symfileline .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYMFILELIN" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::symfileline \- Return the file name and line number of an address\&. .SH "SYNOPSIS" .sp .nf symfileline:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the file name and the (approximate) line number of the given address, if known\&. If the file name or the line number cannot be found, the hex string representation of the address will be returned\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::symline.3stap000066400000000000000000000031431305163227500266330ustar00rootroot00000000000000'\" t .\" Title: function::symline .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYMLINE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::symline \- Return the line number of an address\&. .SH "SYNOPSIS" .sp .nf symline:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the (approximate) line number of the given address, if known\&. If the line number cannot be found, the hex string representation of the address will be returned\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::symname.3stap000066400000000000000000000032201305163227500266200ustar00rootroot00000000000000'\" t .\" Title: function::symname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYMNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::symname \- Return the kernel symbol associated with the given address .SH "SYNOPSIS" .sp .nf symname:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate .RE .SH "DESCRIPTION" .PP Returns the (function) symbol name associated with the given address if known\&. If not known it will return the hex string representation of addr\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::system.3stap000066400000000000000000000032751305163227500265050ustar00rootroot00000000000000'\" t .\" Title: function::system .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Shell command functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::SYSTEM" "3stap" "March 2016" "SystemTap Tapset Reference" "Shell command functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::system \- Issue a command to the system .SH "SYNOPSIS" .sp .nf system(cmd:string) .fi .SH "ARGUMENTS" .PP \fIcmd\fR .RS 4 the command to issue to the system .RE .SH "DESCRIPTION" .PP This function runs a command on the system\&. The command is started in the background some time after the current probe completes\&. The command is run with the same UID as the user running the stap or staprun command\&. .SH SEE ALSO\n .IR tapset::system (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::target.3stap000066400000000000000000000034511305163227500264430ustar00rootroot00000000000000'\" t .\" Title: function::target .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TARGET" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::target \- Return the process ID of the target process .SH "SYNOPSIS" .sp .nf target:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the process ID of the target process\&. This is useful in conjunction with the \-x PID or \-c CMD command\-line options to stap\&. An example of its use is to create scripts that filter on a specific process\&. .PP \-x \fBtarget\fR returns the pid specified by \-x .PP \-c \fBtarget\fR returns the pid for the executed command specified by \-c .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::target_set_pid.3stap000066400000000000000000000032351305163227500301520ustar00rootroot00000000000000'\" t .\" Title: function::target_set_pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TARGET_SET" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::target_set_pid \- Does pid descend from target process? .SH "SYNOPSIS" .sp .nf target_set_pid(pid:) .fi .SH "ARGUMENTS" .PP \fIpid\fR .RS 4 The pid of the process to query .RE .SH "DESCRIPTION" .PP This function returns whether the given process\-id is within the \(lqtarget set\(rq, that is whether it is a descendant of the top\-level \fBtarget\fR process\&. .SH SEE ALSO\n .IR tapset::target_set (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::target_set_report.3stap000066400000000000000000000030511305163227500307050ustar00rootroot00000000000000'\" t .\" Title: function::target_set_report .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TARGET_SET" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::target_set_report \- Print a report about the target set .SH "SYNOPSIS" .sp .nf target_set_report() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function prints a report about the processes in the target set, and their ancestry\&. .SH SEE ALSO\n .IR tapset::target_set (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ancestry.3stap000066400000000000000000000033331305163227500300260ustar00rootroot00000000000000'\" t .\" Title: function::task_ancestry .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_ANCES" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ancestry \- The ancestry of the given task .SH "SYNOPSIS" .sp .nf task_ancestry:string(task:long,with_time:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .PP \fIwith_time\fR .RS 4 set to 1 to also print the start time of processes (given as a delta from boot time) .RE .SH "DESCRIPTION" .PP Return the ancestry of the given task in the form of \(lqgrandparent_process=>parent_process=>process\(rq\&. .SH SEE ALSO\n .IR tapset::task_ancestry (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_backtrace.3stap000066400000000000000000000032671305163227500301230ustar00rootroot00000000000000'\" t .\" Title: function::task_backtrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_BACKT" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_backtrace \- Hex backtrace of an arbitrary task .SH "SYNOPSIS" .sp .nf task_backtrace:string(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 pointer to task_struct .RE .SH "DESCRIPTION" .PP This function returns a string of hex addresses that are a backtrace of the stack of a particular task Output may be truncated as per maximum string length\&. Deprecated in SystemTap 1\&.6\&. .SH SEE ALSO\n .IR tapset::context-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_cpu.3stap000066400000000000000000000030151305163227500267620ustar00rootroot00000000000000'\" t .\" Title: function::task_cpu .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_CPU" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_cpu \- The scheduled cpu of the task .SH "SYNOPSIS" .sp .nf task_cpu:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the scheduled cpu for the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_current.3stap000066400000000000000000000031541305163227500276610ustar00rootroot00000000000000'\" t .\" Title: function::task_current .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_CURRE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_current \- The current task_struct of the current task .SH "SYNOPSIS" .sp .nf task_current:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the task_struct representing the current process\&. This address can be passed to the various task_*() functions to extract more task\-specific data\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_cwd_path.3stap000066400000000000000000000027151305163227500277720ustar00rootroot00000000000000'\" t .\" Title: function::task_cwd_path .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_CWD_P" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_cwd_path \- get the path struct pointer for a task\*(Aqs current working directory .SH "SYNOPSIS" .sp .nf task_cwd_path:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer\&. .RE systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_dentry_path.3stap000066400000000000000000000032541305163227500305210ustar00rootroot00000000000000'\" t .\" Title: function::task_dentry_path .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Directory-entry (dentry) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_DENTR" "3stap" "March 2016" "SystemTap Tapset Reference" "Directory-entry (dentry) Tapse" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_dentry_path \- get the full dentry path .SH "SYNOPSIS" .sp .nf task_dentry_path:string(task:long,dentry:long,vfsmnt:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer\&. .RE .PP \fIdentry\fR .RS 4 direntry pointer\&. .RE .PP \fIvfsmnt\fR .RS 4 vfsmnt pointer\&. .RE .SH "DESCRIPTION" .PP .PP Returns the full dirent name (full path to the root), like the kernel d_path function\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_egid.3stap000066400000000000000000000030421305163227500271030ustar00rootroot00000000000000'\" t .\" Title: function::task_egid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_EGID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_egid \- The effective group identifier of the task .SH "SYNOPSIS" .sp .nf task_egid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the effective group id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_euid.3stap000066400000000000000000000030401305163227500271170ustar00rootroot00000000000000'\" t .\" Title: function::task_euid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_EUID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_euid \- The effective user identifier of the task .SH "SYNOPSIS" .sp .nf task_euid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the effective user id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_exe_file.3stap000066400000000000000000000027031305163227500277560ustar00rootroot00000000000000'\" t .\" Title: function::task_exe_file .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_EXE_F" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_exe_file \- get the file struct pointer for a task\*(Aqs executable file .SH "SYNOPSIS" .sp .nf task_exe_file:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer\&. .RE systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_execname.3stap000066400000000000000000000027761305163227500277750ustar00rootroot00000000000000'\" t .\" Title: function::task_execname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_EXECN" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_execname \- The name of the task .SH "SYNOPSIS" .sp .nf task_execname:string(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP Return the name of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_fd_lookup.3stap000066400000000000000000000031041305163227500301540ustar00rootroot00000000000000'\" t .\" Title: function::task_fd_lookup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_FD_LO" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_fd_lookup \- get the file struct for a task\*(Aqs fd .SH "SYNOPSIS" .sp .nf task_fd_lookup:long(task:long,fd:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer\&. .RE .PP \fIfd\fR .RS 4 file descriptor number\&. .RE .SH "DESCRIPTION" .PP Returns the file struct pointer for a task\*(Aqs file descriptor\&. systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_gid.3stap000066400000000000000000000030121305163227500267330ustar00rootroot00000000000000'\" t .\" Title: function::task_gid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_GID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_gid \- The group identifier of the task .SH "SYNOPSIS" .sp .nf task_gid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the group id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_max_file_handles.3stap000066400000000000000000000031241305163227500314560ustar00rootroot00000000000000'\" t .\" Title: function::task_max_file_handles .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_MAX_F" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_max_file_handles \- The max number of open files for the task .SH "SYNOPSIS" .sp .nf task_max_file_handles:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the maximum number of file handlers for the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_nice.3stap000066400000000000000000000030121305163227500271060ustar00rootroot00000000000000'\" t .\" Title: function::task_nice .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NICE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_nice \- The nice value of the task .SH "SYNOPSIS" .sp .nf task_nice:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the nice value of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_egid.3stap000066400000000000000000000030541305163227500276060ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_egid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_EG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_egid \- The effective group identifier of the task .SH "SYNOPSIS" .sp .nf task_ns_egid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the effective group id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_euid.3stap000066400000000000000000000030521305163227500276220ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_euid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_EU" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_euid \- The effective user identifier of the task .SH "SYNOPSIS" .sp .nf task_ns_euid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the effective user id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_gid.3stap000066400000000000000000000031231305163227500274360ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_gid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_GI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_gid \- The group identifier of the task as seen in a namespace .SH "SYNOPSIS" .sp .nf task_ns_gid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the group id of the given task as seen in in the given user namespace\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_pid.3stap000066400000000000000000000031011305163227500274430ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_PI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_pid \- The process identifier of the task .SH "SYNOPSIS" .sp .nf task_ns_pid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the process id of the given task based on the specified pid namespace\&.\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_tid.3stap000066400000000000000000000031131305163227500274520ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_tid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_TI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_tid \- The thread identifier of the task as seen in a namespace .SH "SYNOPSIS" .sp .nf task_ns_tid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the thread id of the given task as seen in the pid namespace\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_ns_uid.3stap000066400000000000000000000030231305163227500274530ustar00rootroot00000000000000'\" t .\" Title: function::task_ns_uid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_NS_UI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_ns_uid \- The user identifier of the task .SH "SYNOPSIS" .sp .nf task_ns_uid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the user id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_open_file_handles.3stap000066400000000000000000000031171305163227500316340ustar00rootroot00000000000000'\" t .\" Title: function::task_open_file_handles .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_OPEN_" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_open_file_handles \- The number of open files of the task .SH "SYNOPSIS" .sp .nf task_open_file_handles:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the number of open file handlers for the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_parent.3stap000066400000000000000000000032051305163227500274650ustar00rootroot00000000000000'\" t .\" Title: function::task_parent .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_PAREN" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_parent \- The task_struct of the parent task .SH "SYNOPSIS" .sp .nf task_parent:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the parent task_struct of the given task\&. This address can be passed to the various task_*() functions to extract more task\-specific data\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_pid.3stap000066400000000000000000000030161305163227500267500ustar00rootroot00000000000000'\" t .\" Title: function::task_pid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_PID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_pid \- The process identifier of the task .SH "SYNOPSIS" .sp .nf task_pid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the process id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_prio.3stap000066400000000000000000000030221305163227500271420ustar00rootroot00000000000000'\" t .\" Title: function::task_prio .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_PRIO" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_prio \- The priority value of the task .SH "SYNOPSIS" .sp .nf task_prio:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the priority value of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_start_time.3stap000066400000000000000000000031311305163227500303450ustar00rootroot00000000000000'\" t .\" Title: function::task_start_time .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_START" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_start_time \- Start time of the given task .SH "SYNOPSIS" .sp .nf task_start_time:long(tid:long) .fi .SH "ARGUMENTS" .PP \fItid\fR .RS 4 Thread id of the given task .RE .SH "DESCRIPTION" .PP Returns the start time of the given task in nanoseconds since boot time or 0 if the task does not exist\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_state.3stap000066400000000000000000000032111305163227500273110ustar00rootroot00000000000000'\" t .\" Title: function::task_state .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_STATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_state \- The state of the task .SH "SYNOPSIS" .sp .nf task_state:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP Return the state of the given task, one of: TASK_RUNNING (0), TASK_INTERRUPTIBLE (1), TASK_UNINTERRUPTIBLE (2), TASK_STOPPED (4), TASK_TRACED (8), EXIT_ZOMBIE (16), or EXIT_DEAD (32)\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_stime.3stap000066400000000000000000000036251305163227500273230ustar00rootroot00000000000000'\" t .\" Title: function::task_stime .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_STIME" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_stime \- System time of the task .SH "SYNOPSIS" .sp .nf 1) task_stime:long() .fi .sp .nf 2) task_stime:long(tid:long) .fi .SH "ARGUMENTS" .PP \fItid\fR .RS 4 Thread id of the given task .RE .SH "DESCRIPTION" .PP 1) Returns the system time of the current task in cputime\&. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task\&. .PP 2) Returns the system time of the given task in cputime, or zero if the task doesn\*(Aqt exist\&. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_tid.3stap000066400000000000000000000030141305163227500267520ustar00rootroot00000000000000'\" t .\" Title: function::task_tid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_TID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_tid \- The thread identifier of the task .SH "SYNOPSIS" .sp .nf task_tid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the thread id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_time_string.3stap000066400000000000000000000031551305163227500305240ustar00rootroot00000000000000'\" t .\" Title: function::task_time_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_TIME_" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_time_string \- Human readable string of task time usage .SH "SYNOPSIS" .sp .nf task_time_string:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns a human readable string showing the user and system time the current task has used up to now\&. For example \(lqusr: 0m12\&.908s, sys: 1m6\&.851s\(rq\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_time_string_tid.3stap000066400000000000000000000032521305163227500313620ustar00rootroot00000000000000'\" t .\" Title: function::task_time_string_tid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_TIME_" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_time_string_tid \- Human readable string of task time usage .SH "SYNOPSIS" .sp .nf task_time_string_tid:string(tid:long) .fi .SH "ARGUMENTS" .PP \fItid\fR .RS 4 Thread id of the given task .RE .SH "DESCRIPTION" .PP Returns a human readable string showing the user and system time the given task has used up to now\&. For example \(lqusr: 0m12\&.908s, sys: 1m6\&.851s\(rq\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_uid.3stap000066400000000000000000000030101305163227500267470ustar00rootroot00000000000000'\" t .\" Title: function::task_uid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_UID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_uid \- The user identifier of the task .SH "SYNOPSIS" .sp .nf task_uid:long(task:long) .fi .SH "ARGUMENTS" .PP \fItask\fR .RS 4 task_struct pointer .RE .SH "DESCRIPTION" .PP This function returns the user id of the given task\&. .SH SEE ALSO\n .IR tapset::task (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::task_utime.3stap000066400000000000000000000036171305163227500273260ustar00rootroot00000000000000'\" t .\" Title: function::task_utime .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TASK_UTIME" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::task_utime \- User time of the task .SH "SYNOPSIS" .sp .nf 1) task_utime:long() .fi .sp .nf 2) task_utime:long(tid:long) .fi .SH "ARGUMENTS" .PP \fItid\fR .RS 4 Thread id of the given task .RE .SH "DESCRIPTION" .PP 1) Returns the user time of the current task in cputime\&. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task\&. .PP 2) Returns the user time of the given task in cputime, or zero if the task doesn\*(Aqt exist\&. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_filter_key.3stap000066400000000000000000000036111305163227500306460ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_filter_key .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_FIL" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_filter_key \- Default filter function for tcpmib\&.* probes .SH "SYNOPSIS" .sp .nf tcpmib_filter_key:long(sk:long,op:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be counted if \fIsk\fR passes the filter .RE .SH "DESCRIPTION" .PP This function is a default filter function\&. The user can replace this function with their own\&. The user\-supplied filter function returns an index key based on the values in \fIsk\fR\&. A return value of 0 means this particular \fIsk\fR should be not be counted\&. .SH SEE ALSO\n .IR tapset::tcpmib-filter-default (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_get_state.3stap000066400000000000000000000030361305163227500304710ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_get_state .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_GET" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_get_state \- Get a socket\*(Aqs state .SH "SYNOPSIS" .sp .nf tcpmib_get_state:long(sk:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to a struct sock .RE .SH "DESCRIPTION" .PP Returns the sk_state from a struct sock\&. .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_local_addr.3stap000066400000000000000000000030641305163227500305770ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_local_addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_LOC" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_local_addr \- Get the source address .SH "SYNOPSIS" .sp .nf tcpmib_local_addr:long(sk:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to a struct inet_sock .RE .SH "DESCRIPTION" .PP Returns the saddr from a struct inet_sock in host order\&. .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_local_port.3stap000066400000000000000000000030601305163227500306450ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_local_port .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_LOC" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_local_port \- Get the local port .SH "SYNOPSIS" .sp .nf tcpmib_local_port:long(sk:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to a struct inet_sock .RE .SH "DESCRIPTION" .PP Returns the sport from a struct inet_sock in host order\&. .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_remote_addr.3stap000066400000000000000000000030671305163227500310030ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_remote_addr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_REM" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_remote_addr \- Get the remote address .SH "SYNOPSIS" .sp .nf tcpmib_remote_addr:long(sk:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to a struct inet_sock .RE .SH "DESCRIPTION" .PP Returns the daddr from a struct inet_sock in host order\&. .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tcpmib_remote_port.3stap000066400000000000000000000030641305163227500310520ustar00rootroot00000000000000'\" t .\" Title: function::tcpmib_remote_port .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TCPMIB_REM" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tcpmib_remote_port \- Get the remote port .SH "SYNOPSIS" .sp .nf tcpmib_remote_port:long(sk:long) .fi .SH "ARGUMENTS" .PP \fIsk\fR .RS 4 pointer to a struct inet_sock .RE .SH "DESCRIPTION" .PP Returns the dport from a struct inet_sock in host order\&. .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::text_str.3stap000066400000000000000000000032601305163227500270270ustar00rootroot00000000000000'\" t .\" Title: function::text_str .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TEXT_STR" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::text_str \- Escape any non\-printable chars in a string .SH "SYNOPSIS" .sp .nf text_str:string(input:string) .fi .SH "ARGUMENTS" .PP \fIinput\fR .RS 4 the string to escape .RE .SH "DESCRIPTION" .PP This function accepts a string argument, and any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::text_strn.3stap000066400000000000000000000036761305163227500272200ustar00rootroot00000000000000'\" t .\" Title: function::text_strn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TEXT_STRN" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::text_strn \- Escape any non\-printable chars in a string .SH "SYNOPSIS" .sp .nf text_strn:string(input:string,len:long,quoted:long) .fi .SH "ARGUMENTS" .PP \fIinput\fR .RS 4 the string to escape .RE .PP \fIlen\fR .RS 4 maximum length of string to return (0 implies MAXSTRINGLEN) .RE .PP \fIquoted\fR .RS 4 put double quotes around the string\&. If input string is truncated it will have \(lq\&.\&.\&.\(rq after the second quote .RE .SH "DESCRIPTION" .PP This function accepts a string of designated length, and any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. .SH SEE ALSO\n .IR tapset::string (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::thread_indent.3stap000066400000000000000000000037071305163227500277710ustar00rootroot00000000000000'\" t .\" Title: function::thread_indent .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::THREAD_IND" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::thread_indent \- returns an amount of space with the current task information .SH "SYNOPSIS" .sp .nf thread_indent:string(delta:long) .fi .SH "ARGUMENTS" .PP \fIdelta\fR .RS 4 the amount of space added/removed for each call .RE .SH "DESCRIPTION" .PP This function returns a string with appropriate indentation for a thread\&. Call it with a small positive or matching negative delta\&. If this is the real outermost, initial level of indentation, then the function resets the relative timestamp base to zero\&. The timestamp is as per provided by the __indent_timestamp function, which by default measures microseconds\&. .SH SEE ALSO\n .IR tapset::indent (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::thread_indent_depth.3stap000066400000000000000000000037411305163227500311530ustar00rootroot00000000000000'\" t .\" Title: function::thread_indent_depth .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Utility functions for using ansi control chars in logs .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::THREAD_IND" "3stap" "March 2016" "SystemTap Tapset Reference" "Utility functions for using an" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::thread_indent_depth \- returns the nested\-depth of the current task .SH "SYNOPSIS" .sp .nf thread_indent_depth:long(delta:long) .fi .SH "ARGUMENTS" .PP \fIdelta\fR .RS 4 the amount of depth added/removed for each call .RE .SH "DESCRIPTION" .PP This function returns an integer equal to the nested function\-call depth starting from the outermost initial level\&. This function is useful for saving space (consumed by whitespace) in traces with long nested function calls\&. Use this function in a similar fashion to \fBthread_indent\fR, i\&.e\&., in call\-probe, use thread_indent_depth(1) and in return\-probe, use thread_indent_depth(\-1) .SH SEE ALSO\n .IR tapset::indent (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tid.3stap000066400000000000000000000027321305163227500257360ustar00rootroot00000000000000'\" t .\" Title: function::tid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tid \- Returns the thread ID of a target process .SH "SYNOPSIS" .sp .nf tid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the thread ID of the target process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tokenize.3stap000066400000000000000000000046441305163227500270120ustar00rootroot00000000000000'\" t .\" Title: function::tokenize .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: A collection of standard string functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TOKENIZE" "3stap" "March 2016" "SystemTap Tapset Reference" "A collection of standard strin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tokenize \- Return the next non\-empty token in a string .SH "SYNOPSIS" .sp .nf 1) tokenize:string(delim:string) .fi .sp .nf 2) tokenize:string(input:string,delim:string) .fi .SH "ARGUMENTS" .PP \fIdelim\fR .RS 4 set of characters that delimit the tokens .RE .PP \fIinput\fR .RS 4 string to tokenize\&. If empty, returns the next non\-empty token in the string passed in the previous call to \fBtokenize\fR\&. .RE .SH "DESCRIPTION" .PP 1) This function returns the next token in the string passed in the previous call to tokenize\&. If no delimiter is found, the entire remaining input string is * returned\&. It returns empty when no more tokens are available\&. .PP 2) This function returns the next non\-empty token in the given input string, where the tokens are delimited by characters in the delim string\&. If the input string is non\-empty, it returns the first token\&. If the input string is empty, it returns the next token in the string passed in the previous call to tokenize\&. If no delimiter is found, the entire remaining input string is returned\&. It returns empty when no more tokens are available\&. .SH SEE ALSO\n .IR tapset::tokenize (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tz_ctime.3stap000066400000000000000000000036251305163227500267760ustar00rootroot00000000000000'\" t .\" Title: function::tz_ctime .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Time utility functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TZ_CTIME" "3stap" "March 2016" "SystemTap Tapset Reference" "Time utility functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tz_ctime \- Convert seconds since epoch into human readable date/time string, with local time zone .SH "SYNOPSIS" .sp .nf tz_ctime(epochsecs:) .fi .SH "ARGUMENTS" .PP \fIepochsecs\fR .RS 4 number of seconds since epoch (as returned by \fBgettimeofday_s\fR) .RE .SH "DESCRIPTION" .PP Takes an argument of seconds since the epoch as returned by \fBgettimeofday_s\fR\&. Returns a string of the same form as \fBctime\fR, but offsets the epoch time for the local time zone, and appends the name of the local time zone\&. The string length may vary\&. The time zone information is passed by staprun at script startup only\&. .SH SEE ALSO\n .IR tapset::tzinfo (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tz_gmtoff.3stap000066400000000000000000000030261305163227500271520ustar00rootroot00000000000000'\" t .\" Title: function::tz_gmtoff .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Time utility functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TZ_GMTOFF" "3stap" "March 2016" "SystemTap Tapset Reference" "Time utility functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tz_gmtoff \- Return local time zone offset .SH "SYNOPSIS" .sp .nf tz_gmtoff() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the local time zone offset (seconds west of UTC), as passed by staprun at script startup only\&. .SH SEE ALSO\n .IR tapset::tzinfo (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::tz_name.3stap000066400000000000000000000027641305163227500266200ustar00rootroot00000000000000'\" t .\" Title: function::tz_name .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Time utility functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::TZ_NAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Time utility functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::tz_name \- Return local time zone name .SH "SYNOPSIS" .sp .nf tz_name() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the local time zone name, as passed by staprun at script startup only\&. .SH SEE ALSO\n .IR tapset::tzinfo (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::u32_arg.3stap000066400000000000000000000030541305163227500264160ustar00rootroot00000000000000'\" t .\" Title: function::u32_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::U32_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::u32_arg \- Return function argument as unsigned 32\-bit value .SH "SYNOPSIS" .sp .nf u32_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the unsigned 32\-bit value of argument n, same as uint_arg\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::u64_arg.3stap000066400000000000000000000030611305163227500264210ustar00rootroot00000000000000'\" t .\" Title: function::u64_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::U64_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::u64_arg \- Return function argument as unsigned 64\-bit value .SH "SYNOPSIS" .sp .nf u64_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the unsigned 64\-bit value of argument n, same as ulonglong_arg\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::u_register.3stap000066400000000000000000000031471305163227500273270ustar00rootroot00000000000000'\" t .\" Title: function::u_register .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::U_REGISTER" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::u_register \- Return the unsigned value of the named CPU register .SH "SYNOPSIS" .sp .nf u_register:long(name:string) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 Name of the register to return .RE .SH "DESCRIPTION" .PP Same as register(name), except that if the register is 32 bits wide, it is zero\-extended to 64 bits\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::uaddr.3stap000066400000000000000000000034211305163227500262510ustar00rootroot00000000000000'\" t .\" Title: function::uaddr .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UADDR" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::uaddr \- User space address of current running task .SH "SYNOPSIS" .sp .nf uaddr:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP Returns the address in userspace that the current task was at when the probe occurred\&. When the current running task isn\*(Aqt a user space thread, or the address cannot be found, zero is returned\&. Can be used to see where the current task is combined with \fBusymname\fR or \fBusymdata\fR\&. Often the task will be in the VDSO where it entered the kernel\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ubacktrace.3stap000066400000000000000000000036771305163227500272730ustar00rootroot00000000000000'\" t .\" Title: function::ubacktrace .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UBACKTRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ubacktrace \- Hex backtrace of current user\-space task stack\&. .SH "SYNOPSIS" .sp .nf ubacktrace:string() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Return a string of hex addresses that are a backtrace of the stack of the current task\&. Output may be truncated as per maximum string length\&. Returns empty string when current probe point cannot determine user backtrace\&. See \fBbacktrace\fR for kernel traceback\&. .SH "NOTE" .PP To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with \-d /path/to/exe\-or\-so and/or add \-\-ldd to load all needed unwind data\&. .SH SEE ALSO\n .IR tapset::ucontext-unwind (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ucallers.3stap000066400000000000000000000037101305163227500267650ustar00rootroot00000000000000'\" t .\" Title: function::ucallers .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UCALLERS" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ucallers \- Return first n elements of user stack backtrace .SH "SYNOPSIS" .sp .nf ucallers:string(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 number of levels to descend in the stack (not counting the top level)\&. If n is \-1, print the entire stack\&. .RE .SH "DESCRIPTION" .PP This function returns a string of the first n hex addresses from the backtrace of the user stack\&. Output may be truncated as per maximum string length (MAXSTRINGLEN)\&. .SH "NOTE" .PP To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with \-d /path/to/exe\-or\-so and/or add \-\-ldd to load all needed unwind data\&. .SH SEE ALSO\n .IR tapset::ucontext (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::udelay.3stap000066400000000000000000000030451305163227500264370ustar00rootroot00000000000000'\" t .\" Title: function::udelay .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Guru tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UDELAY" "3stap" "March 2016" "SystemTap Tapset Reference" "Guru tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::udelay \- microsecond delay .SH "SYNOPSIS" .sp .nf udelay(us:long) .fi .SH "ARGUMENTS" .PP \fIus\fR .RS 4 Number of microseconds to delay\&. .RE .SH "DESCRIPTION" .PP This function inserts a multi\-microsecond busy\-delay into a probe handler\&. It requires guru mode\&. .SH SEE ALSO\n .IR tapset::guru-delay (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::uid.3stap000066400000000000000000000027261305163227500257420ustar00rootroot00000000000000'\" t .\" Title: function::uid .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UID" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::uid \- Returns the user ID of a target process .SH "SYNOPSIS" .sp .nf uid:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP This function returns the user ID of the target process\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::uint_arg.3stap000066400000000000000000000031161305163227500267630ustar00rootroot00000000000000'\" t .\" Title: function::uint_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UINT_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::uint_arg \- Return function argument as unsigned int .SH "SYNOPSIS" .sp .nf uint_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as an unsigned int (i\&.e\&., a 32\-bit integer zero\-extended to 64 bits)\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ulong_arg.3stap000066400000000000000000000031601305163227500271270ustar00rootroot00000000000000'\" t .\" Title: function::ulong_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ULONG_ARG" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ulong_arg \- Return function argument as unsigned long .SH "SYNOPSIS" .sp .nf ulong_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as an unsigned long\&. On architectures where a long is 32 bits, the value is zero\-extended to 64 bits\&. .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ulonglong_arg.3stap000066400000000000000000000031021305163227500300030ustar00rootroot00000000000000'\" t .\" Title: function::ulonglong_arg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::ULONGLONG_" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ulonglong_arg \- Return function argument as 64\-bit value .SH "SYNOPSIS" .sp .nf ulonglong_arg:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 index of argument to return .RE .SH "DESCRIPTION" .PP Return the value of argument n as a 64\-bit value\&. (Same as longlong_arg\&.) .SH SEE ALSO\n .IR tapset::registers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::umodname.3stap000066400000000000000000000033131305163227500267570ustar00rootroot00000000000000'\" t .\" Title: function::umodname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::UMODNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::umodname \- Returns the (short) name of the user module\&. .SH "SYNOPSIS" .sp .nf umodname:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 User\-space address .RE .SH "DESCRIPTION" .PP Returns the short name of the user space module for the current task that that the given address is part of\&. Reports an error when the address isn\*(Aqt in a (mapped in) module, or the module cannot be found for some reason\&. .SH SEE ALSO\n .IR tapset::ucontext (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usecs_to_string.3stap000066400000000000000000000033611305163227500303670ustar00rootroot00000000000000'\" t .\" Title: function::usecs_to_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Task Time Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USECS_TO_S" "3stap" "March 2016" "SystemTap Tapset Reference" "Task Time Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usecs_to_string \- Human readable string for given microseconds .SH "SYNOPSIS" .sp .nf usecs_to_string:string(usecs:long) .fi .SH "ARGUMENTS" .PP \fIusecs\fR .RS 4 Number of microseconds to translate\&. .RE .SH "DESCRIPTION" .PP Returns a string representing the number of microseconds as a human readable string consisting of \(lqXmY\&.ZZZZZZs\(rq, where X is the number of minutes, Y is the number of seconds and ZZZZZZ is the number of microseconds\&. .SH SEE ALSO\n .IR tapset::task_time (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_char.3stap000066400000000000000000000032361305163227500271310ustar00rootroot00000000000000'\" t .\" Title: function::user_char .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_CHAR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_char \- Retrieves a char value stored in user space .SH "SYNOPSIS" .sp .nf user_char:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the char from .RE .SH "DESCRIPTION" .PP Returns the char value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_char_warn.3stap000066400000000000000000000033101305163227500301510ustar00rootroot00000000000000'\" t .\" Title: function::user_char_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_CHAR_" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_char_warn \- Retrieves a char value stored in user space .SH "SYNOPSIS" .sp .nf user_char_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the char from .RE .SH "DESCRIPTION" .PP Returns the char value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int.3stap000066400000000000000000000032301305163227500270000ustar00rootroot00000000000000'\" t .\" Title: function::user_int .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int \- Retrieves an int value stored in user space .SH "SYNOPSIS" .sp .nf user_int:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the int from .RE .SH "DESCRIPTION" .PP Returns the int value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int16.3stap000066400000000000000000000033031305163227500271500ustar00rootroot00000000000000'\" t .\" Title: function::user_int16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT16" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int16 \- Retrieves a 16\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_int16:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the 16\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the 16\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int32.3stap000066400000000000000000000033031305163227500271460ustar00rootroot00000000000000'\" t .\" Title: function::user_int32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT32" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int32 \- Retrieves a 32\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_int32:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the 32\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the 32\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int64.3stap000066400000000000000000000033031305163227500271530ustar00rootroot00000000000000'\" t .\" Title: function::user_int64 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT64" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int64 \- Retrieves a 64\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_int64:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the 64\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the 64\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int8.3stap000066400000000000000000000032741305163227500271000ustar00rootroot00000000000000'\" t .\" Title: function::user_int8 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT8" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int8 \- Retrieves a 8\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_int8:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the 8\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the 8\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_int_warn.3stap000066400000000000000000000033031305163227500300300ustar00rootroot00000000000000'\" t .\" Title: function::user_int_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_INT_W" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_int_warn \- Retrieves an int value stored in user space .SH "SYNOPSIS" .sp .nf user_int_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the int from .RE .SH "DESCRIPTION" .PP Returns the int value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_long.3stap000066400000000000000000000034761305163227500271610ustar00rootroot00000000000000'\" t .\" Title: function::user_long .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_LONG" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_long \- Retrieves a long value stored in user space .SH "SYNOPSIS" .sp .nf user_long:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the long from .RE .SH "DESCRIPTION" .PP Returns the long value from a given user space address\&. Returns zero when user space data is not accessible\&. Note that the size of the long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks)\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_long_warn.3stap000066400000000000000000000035501305163227500302010ustar00rootroot00000000000000'\" t .\" Title: function::user_long_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_LONG_" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_long_warn \- Retrieves a long value stored in user space .SH "SYNOPSIS" .sp .nf user_long_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the long from .RE .SH "DESCRIPTION" .PP Returns the long value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. Note that the size of the long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks)\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_mode.3stap000066400000000000000000000027641305163227500271450ustar00rootroot00000000000000'\" t .\" Title: function::user_mode .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_MODE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_mode \- Determines if probe point occurs in user\-mode .SH "SYNOPSIS" .sp .nf user_mode:long() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP .PP Return 1 if the probe point occurred in user\-mode\&. .SH SEE ALSO\n .IR tapset::context (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_short.3stap000066400000000000000000000032451305163227500273530ustar00rootroot00000000000000'\" t .\" Title: function::user_short .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_SHORT" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_short \- Retrieves a short value stored in user space .SH "SYNOPSIS" .sp .nf user_short:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the short from .RE .SH "DESCRIPTION" .PP Returns the short value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_short_warn.3stap000066400000000000000000000033161305163227500304010ustar00rootroot00000000000000'\" t .\" Title: function::user_short_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_SHORT" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_short_warn \- Retrieves a short value stored in user space .SH "SYNOPSIS" .sp .nf user_short_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the short from .RE .SH "DESCRIPTION" .PP Returns the short value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string.3stap000066400000000000000000000040151305163227500275160ustar00rootroot00000000000000'\" t .\" Title: function::user_string .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string \- Retrieves string from user space .SH "SYNOPSIS" .sp .nf 1) user_string:string(addr:long) .fi .sp .nf 2) user_string:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 the error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) Returns the null terminated C string from a given user space memory address\&. Reports an error on the rare cases when userspace data is not accessible\&. .PP 2) Returns the null terminated C string from a given user space memory address\&. Reports the given error message on the rare cases when userspace data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_n.3stap000066400000000000000000000042721305163227500300400ustar00rootroot00000000000000'\" t .\" Title: function::user_string_n .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_n \- Retrieves string of given length from user space .SH "SYNOPSIS" .sp .nf 1) user_string_n:string(addr:long,n:long) .fi .sp .nf 2) user_string_n:string(addr:long,n:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .PP \fIn\fR .RS 4 the maximum length of the string (if not null terminated) .RE .PP \fIerr_msg\fR .RS 4 the error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) Returns the C string of a maximum given length from a given user space address\&. Reports an error on the rare cases when userspace data is not accessible at the given address\&. .PP 2) Returns the C string of a maximum given length from a given user space address\&. Returns the given error message string on the rare cases when userspace data is not accessible at the given address\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_n_quoted.3stap000066400000000000000000000054051305163227500314200ustar00rootroot00000000000000'\" t .\" Title: function::user_string_n_quoted .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_n_quoted \- Retrieves and quotes string from user space .SH "SYNOPSIS" .sp .nf 1) user_string_n_quoted:string(addr:long,n:long) .fi .sp .nf 2) user_string_n_quoted:string(addr:long,inlen:long,outlen:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .PP \fIn\fR .RS 4 the maximum length of the string (if not null terminated) .RE .PP \fIinlen\fR .RS 4 the maximum length of the string to read (if not null terminated) .RE .PP \fIoutlen\fR .RS 4 the maximum length of the output string .RE .SH "DESCRIPTION" .PP 1) Returns up to n characters of a C string from the given user space memory address where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. Note that the string will be surrounded by double quotes\&. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes\&. .PP 2) Reads up to inlen characters of a C string from the given user space memory address, and returns up to outlen characters, where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. Note that the string will be surrounded by double quotes\&. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_n_warn.3stap000066400000000000000000000043771305163227500310750ustar00rootroot00000000000000'\" t .\" Title: function::user_string_n_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_n_warn \- Retrieves string from user space .SH "SYNOPSIS" .sp .nf 1) user_string_n_warn:string(addr:long,n:long) .fi .sp .nf 2) user_string_n_warn:string(addr:long,n:long,warn_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .PP \fIn\fR .RS 4 the maximum length of the string (if not null terminated) .RE .PP \fIwarn_msg\fR .RS 4 the warning message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) Returns up to n characters of a C string from a given user space memory address\&. Reports\(lq\(rq on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure\&. .PP 2) Returns up to n characters of a C string from a given user space memory address\&. Reports the given warning message on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_quoted.3stap000066400000000000000000000037461305163227500311110ustar00rootroot00000000000000'\" t .\" Title: function::user_string_quoted .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_quoted \- Retrieves and quotes string from user space .SH "SYNOPSIS" .sp .nf user_string_quoted:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .SH "DESCRIPTION" .PP Returns the null terminated C string from a given user space memory address where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string\&. Note that the string will be surrounded by double quotes\&. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_quoted_utf16.3stap000066400000000000000000000033011305163227500321210ustar00rootroot00000000000000'\" t .\" Title: function::user_string_quoted_utf16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_quoted_utf16 \- Quote given user UTF\-16 string\&. .SH "SYNOPSIS" .sp .nf user_string_quoted_utf16:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The user address to retrieve the string from .RE .SH "DESCRIPTION" .PP This function combines quoting as per \fIstring_quoted\fR and UTF\-16 decoding as per \fIuser_string_utf16\fR\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_quoted_utf32.3stap000066400000000000000000000033011305163227500321170ustar00rootroot00000000000000'\" t .\" Title: function::user_string_quoted_utf32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_quoted_utf32 \- Quote given user UTF\-32 string\&. .SH "SYNOPSIS" .sp .nf user_string_quoted_utf32:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The user address to retrieve the string from .RE .SH "DESCRIPTION" .PP This function combines quoting as per \fIstring_quoted\fR and UTF\-32 decoding as per \fIuser_string_utf32\fR\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_utf16.3stap000066400000000000000000000041401305163227500305420ustar00rootroot00000000000000'\" t .\" Title: function::user_string_utf16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_utf16 \- Retrieves UTF\-16 string from user memory .SH "SYNOPSIS" .sp .nf 1) user_string_utf16:string(addr:long) .fi .sp .nf 2) user_string_utf16:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The user address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 The error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) This function returns a null terminated UTF\-8 string converted from the UTF\-16 string at a given user memory address\&. Reports an error on string copy fault or conversion error\&. .PP 2) This function returns a null terminated UTF\-8 string converted from the UTF\-16 string at a given user memory address\&. Reports the given error message on string copy fault or conversion error\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_utf32.3stap000066400000000000000000000041401305163227500305400ustar00rootroot00000000000000'\" t .\" Title: function::user_string_utf32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_utf32 \- Retrieves UTF\-32 string from user memory .SH "SYNOPSIS" .sp .nf 1) user_string_utf32:string(addr:long) .fi .sp .nf 2) user_string_utf32:string(addr:long,err_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The user address to retrieve the string from .RE .PP \fIerr_msg\fR .RS 4 The error message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) This function returns a null terminated UTF\-8 string converted from the UTF\-32 string at a given user memory address\&. Reports an error on string copy fault or conversion error\&. .PP 2) This function returns a null terminated UTF\-8 string converted from the UTF\-32 string at a given user memory address\&. Reports the given error message on string copy fault or conversion error\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_string_warn.3stap000066400000000000000000000042031305163227500305440ustar00rootroot00000000000000'\" t .\" Title: function::user_string_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_STRIN" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_string_warn \- Retrieves string from user space .SH "SYNOPSIS" .sp .nf 1) user_string_warn:string(addr:long) .fi .sp .nf 2) user_string_warn:string(addr:long,warn_msg:string) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the string from .RE .PP \fIwarn_msg\fR .RS 4 the warning message to return when data isn\*(Aqt available .RE .SH "DESCRIPTION" .PP 1) Returns the null terminated C string from a given user space memory address\&. Reports "" on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure\&. .PP 2) Returns the null terminated C string from a given user space memory address\&. Reports the given warning message on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_uint16.3stap000066400000000000000000000033421305163227500273400ustar00rootroot00000000000000'\" t .\" Title: function::user_uint16 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_UINT1" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_uint16 \- Retrieves an unsigned 16\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_uint16:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned 16\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the unsigned 16\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_uint32.3stap000066400000000000000000000033421305163227500273360ustar00rootroot00000000000000'\" t .\" Title: function::user_uint32 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_UINT3" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_uint32 \- Retrieves an unsigned 32\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_uint32:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned 32\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the unsigned 32\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_uint64.3stap000066400000000000000000000033421305163227500273430ustar00rootroot00000000000000'\" t .\" Title: function::user_uint64 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_UINT6" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_uint64 \- Retrieves an unsigned 64\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_uint64:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned 64\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the unsigned 64\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_uint8.3stap000066400000000000000000000033341305163227500272620ustar00rootroot00000000000000'\" t .\" Title: function::user_uint8 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_UINT8" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_uint8 \- Retrieves an unsigned 8\-bit integer value stored in user space .SH "SYNOPSIS" .sp .nf user_uint8:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned 8\-bit integer from .RE .SH "DESCRIPTION" .PP Returns the unsigned 8\-bit integer value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_ulong.3stap000066400000000000000000000035471305163227500273450ustar00rootroot00000000000000'\" t .\" Title: function::user_ulong .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_ULONG" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_ulong \- Retrieves an unsigned long value stored in user space .SH "SYNOPSIS" .sp .nf user_ulong:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned long from .RE .SH "DESCRIPTION" .PP Returns the unsigned long value from a given user space address\&. Returns zero when user space data is not accessible\&. Note that the size of the unsigned long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks)\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_ulong_warn.3stap000066400000000000000000000036201305163227500303640ustar00rootroot00000000000000'\" t .\" Title: function::user_ulong_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_ULONG" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_ulong_warn \- Retrieves an unsigned long value stored in user space .SH "SYNOPSIS" .sp .nf user_ulong_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned long from .RE .SH "DESCRIPTION" .PP Returns the unsigned long value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. Note that the size of the unsigned long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks)\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_ushort.3stap000066400000000000000000000033041305163227500275340ustar00rootroot00000000000000'\" t .\" Title: function::user_ushort .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_USHOR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_ushort \- Retrieves an unsigned short value stored in user space .SH "SYNOPSIS" .sp .nf user_ushort:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned short from .RE .SH "DESCRIPTION" .PP Returns the unsigned short value from a given user space address\&. Returns zero when user space data is not accessible\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::user_ushort_warn.3stap000066400000000000000000000033551305163227500305710ustar00rootroot00000000000000'\" t .\" Title: function::user_ushort_warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: String and data retrieving functions Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USER_USHOR" "3stap" "March 2016" "SystemTap Tapset Reference" "String and data retrieving fun" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::user_ushort_warn \- Retrieves an unsigned short value stored in user space .SH "SYNOPSIS" .sp .nf user_ushort_warn:long(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 the user space address to retrieve the unsigned short from .RE .SH "DESCRIPTION" .PP Returns the unsigned short value from a given user space address\&. Returns zero when user space and warns (but does not abort) about the failure\&. .SH SEE ALSO\n .IR tapset::uconversions (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usrdev2kerndev.3stap000066400000000000000000000027771305163227500301400ustar00rootroot00000000000000'\" t .\" Title: function::usrdev2kerndev .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Device Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USRDEV2KER" "3stap" "March 2016" "SystemTap Tapset Reference" "Device Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usrdev2kerndev \- Converts a user\-space device number into the format used in the kernel .SH "SYNOPSIS" .sp .nf usrdev2kerndev:long(dev:long) .fi .SH "ARGUMENTS" .PP \fIdev\fR .RS 4 Device number in user\-space format\&. .RE .SH SEE ALSO\n .IR tapset::dev (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::ustack.3stap000066400000000000000000000034151305163227500264470ustar00rootroot00000000000000'\" t .\" Title: function::ustack .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USTACK" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::ustack \- Return address at given depth of user stack backtrace .SH "SYNOPSIS" .sp .nf ustack:long(n:long) .fi .SH "ARGUMENTS" .PP \fIn\fR .RS 4 number of levels to descend in the stack\&. .RE .SH "DESCRIPTION" .PP Performs a simple (user space) backtrace, and returns the element at the specified position\&. The results of the backtrace itself are cached, so that the backtrace computation is performed at most once no matter how many times \fBustack\fR is called, or in what order\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usymdata.3stap000066400000000000000000000036711305163227500270100ustar00rootroot00000000000000'\" t .\" Title: function::usymdata .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USYMDATA" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usymdata \- Return the symbol and module offset of an address\&. .SH "SYNOPSIS" .sp .nf usymdata:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the (function) symbol name associated with the given address in the current task if known, the offset from the start and the size of the symbol, plus the module name (between brackets)\&. If symbol is unknown, but module is known, the offset inside the module, plus the size of the module is added\&. If any element is not known it will be omitted and if the symbol name is unknown it will return the hex string for the given address\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usymfile.3stap000066400000000000000000000033011305163227500270040ustar00rootroot00000000000000'\" t .\" Title: function::usymfile .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USYMFILE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usymfile \- Return the file name of a given address\&. .SH "SYNOPSIS" .sp .nf usymfile:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the file name of the given address, if known\&. If the file name cannot be found, the hex string representation of the address will be returned\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usymfileline.3stap000066400000000000000000000033331305163227500276610ustar00rootroot00000000000000'\" t .\" Title: function::usymfileline .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USYMFILELI" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usymfileline \- Return the file name and line number of an address\&. .SH "SYNOPSIS" .sp .nf usymfileline:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the file name and the (approximate) line number of the given address, if known\&. If the file name or the line number cannot be found, the hex string representation of the address will be returned\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usymline.3stap000066400000000000000000000033201305163227500270150ustar00rootroot00000000000000'\" t .\" Title: function::usymline .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USYMLINE" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usymline \- Return the line number of an address\&. .SH "SYNOPSIS" .sp .nf usymline:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the (approximate) line number of the given address, if known\&. If the line number cannot be found, the hex string representation of the address will be returned\&. .SH SEE ALSO\n .IR tapset::context-symbols (3stap) .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::usymname.3stap000066400000000000000000000032241305163227500270110ustar00rootroot00000000000000'\" t .\" Title: function::usymname .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Context Functions .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::USYMNAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Context Functions" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::usymname \- Return the symbol of an address in the current task\&. .SH "SYNOPSIS" .sp .nf usymname:string(addr:long) .fi .SH "ARGUMENTS" .PP \fIaddr\fR .RS 4 The address to translate\&. .RE .SH "DESCRIPTION" .PP Returns the (function) symbol name associated with the given address if known\&. If not known it will return the hex string representation of addr\&. .SH SEE ALSO\n .IR tapset::ucontext-symbols (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::vm_fault_contains.3stap000066400000000000000000000031271305163227500306700ustar00rootroot00000000000000'\" t .\" Title: function::vm_fault_contains .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::VM_FAULT_C" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::vm_fault_contains \- Test return value for page fault reason .SH "SYNOPSIS" .sp .nf vm_fault_contains:long(value:long,test:long) .fi .SH "ARGUMENTS" .PP \fIvalue\fR .RS 4 the fault_type returned by vm\&.page_fault\&.return .RE .PP \fItest\fR .RS 4 the type of fault to test for (VM_FAULT_OOM or similar) .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/function::warn.3stap000066400000000000000000000032121305163227500261170ustar00rootroot00000000000000'\" t .\" Title: function::warn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Logging Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "FUNCTION::WARN" "3stap" "March 2016" "SystemTap Tapset Reference" "Logging Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" function::warn \- Send a line to the warning stream .SH "SYNOPSIS" .sp .nf warn(msg:string) .fi .SH "ARGUMENTS" .PP \fImsg\fR .RS 4 The formatted message string .RE .SH "DESCRIPTION" .PP This function sends a warning message immediately to staprun\&. It is also sent over the bulk transport (relayfs) if it is being used\&. If the last characater is not a newline, the one is added\&. .SH SEE ALSO\n .IR tapset::logging (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_array_numeric_value.3stap000066400000000000000000000040611305163227500331340ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_array_numeric_value .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_A" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_array_numeric_value \- Output a numeric value for metric in an array\&. .SH "SYNOPSIS" .sp .nf @json_output_array_numeric_value(array_name,array_index,metric_name,value) .fi .SH "ARGUMENTS" .PP \fIarray_name\fR .RS 4 The name of the array\&. .RE .PP \fIarray_index\fR .RS 4 The array index (as a string) indicating where to store the numeric value\&. .RE .PP \fImetric_name\fR .RS 4 The name of the numeric metric\&. .RE .PP \fIvalue\fR .RS 4 The numeric value to output\&. .RE .SH "DESCRIPTION" .PP The json_output_array_numeric_value macro is designed to be called from the \*(Aqjson_data\*(Aq probe in the user\*(Aqs script to output a metric\*(Aqs numeric value that is in an array\&. This metric should have been added with \fBjson_add_array_numeric_metric\fR\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_array_string_value.3stap000066400000000000000000000040471305163227500330040ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_array_string_value .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_A" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_array_string_value \- Output a string value for metric in an array\&. .SH "SYNOPSIS" .sp .nf @json_output_array_string_value(array_name,array_index,metric_name,value) .fi .SH "ARGUMENTS" .PP \fIarray_name\fR .RS 4 The name of the array\&. .RE .PP \fIarray_index\fR .RS 4 The array index (as a string) indicating where to store the string value\&. .RE .PP \fImetric_name\fR .RS 4 The name of the string metric\&. .RE .PP \fIvalue\fR .RS 4 The string value to output\&. .RE .SH "DESCRIPTION" .PP The json_output_array_string_value macro is designed to be called from the \*(Aqjson_data\*(Aq probe in the user\*(Aqs script to output a metric\*(Aqs string value that is in an array\&. This metric should have been added with \fBjson_add_array_string_metric\fR\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_data_end.3stap000066400000000000000000000031131305163227500306340ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_data_end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_D" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_data_end \- End the json output\&. .SH "SYNOPSIS" .sp .nf @json_output_data_end() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP The json_output_data_end macro is designed to be called from the \*(Aqjson_data\*(Aq probe from the user\*(Aqs script\&. It marks the end of the JSON output\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_data_start.3stap000066400000000000000000000031271305163227500312300ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_data_start .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_D" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_data_start \- Start the json output\&. .SH "SYNOPSIS" .sp .nf @json_output_data_start() .fi .SH "ARGUMENTS" .PP None .SH "DESCRIPTION" .PP The json_output_data_start macro is designed to be called from the \*(Aqjson_data\*(Aq probe from the user\*(Aqs script\&. It marks the start of the JSON output\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_numeric_value.3stap000066400000000000000000000034361305163227500317430ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_numeric_value .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_N" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_numeric_value \- Output a numeric value\&. .SH "SYNOPSIS" .sp .nf @json_output_numeric_value(name,value) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 The name of the numeric metric\&. .RE .PP \fIvalue\fR .RS 4 The numeric value to output\&. .RE .SH "DESCRIPTION" .PP The json_output_numeric_value macro is designed to be called from the \*(Aqjson_data\*(Aq probe in the user\*(Aqs script to output a metric\*(Aqs numeric value\&. This metric should have been added with \fBjson_add_numeric_metric\fR\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/macro::json_output_string_value.3stap000066400000000000000000000034251305163227500316050ustar00rootroot00000000000000'\" t .\" Title: macro::json_output_string_value .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "MACRO::JSON_OUTPUT_S" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" macro::json_output_string_value \- Output a string value\&. .SH "SYNOPSIS" .sp .nf @json_output_string_value(name,value) .fi .SH "ARGUMENTS" .PP \fIname\fR .RS 4 The name of the string metric\&. .RE .PP \fIvalue\fR .RS 4 The string value to output\&. .RE .SH "DESCRIPTION" .PP The json_output_string_value macro is designed to be called from the \*(Aqjson_data\*(Aq probe in the user\*(Aqs script to output a metric\*(Aqs string value\&. This metric should have been added with \fBjson_add_string_metric\fR\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioblock.end.3stap000066400000000000000000000052111305163227500266220ustar00rootroot00000000000000'\" t .\" Title: probe::ioblock.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOBLOCK\&.END" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioblock.end \- Fires whenever a block I/O transfer is complete\&. .SH "SYNOPSIS" .sp .nf ioblock\&.end .fi .SH "VALUES" .PP \fIdevname\fR .RS 4 block device name .RE .PP \fIphys_segments\fR .RS 4 number of segments in this bio after physical address coalescing is performed\&. .RE .PP \fIerror\fR .RS 4 0 on success .RE .PP \fIsector\fR .RS 4 beginning sector for the entire bio .RE .PP \fIvcnt\fR .RS 4 bio vector count which represents number of array element (page, offset, length) which makes up this I/O request .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIflags\fR .RS 4 see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out\-out\-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn\*(Aqt own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported .RE .PP \fIsize\fR .RS 4 total size in bytes .RE .PP \fIrw\fR .RS 4 binary trace for read/write request .RE .PP \fIidx\fR .RS 4 offset into the bio vector array .RE .PP \fIino\fR .RS 4 i\-node number of the mapped file .RE .PP \fIbytes_done\fR .RS 4 number of bytes transferred .RE .PP \fIhw_segments\fR .RS 4 number of segments after physical and DMA remapping hardware coalescing is performed .RE .SH "CONTEXT" .PP The process signals the transfer is done\&. .SH SEE ALSO\n .IR tapset::ioblock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioblock.request.3stap000066400000000000000000000055021305163227500275470ustar00rootroot00000000000000'\" t .\" Title: probe::ioblock.request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOBLOCK\&.REQ" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioblock.request \- Fires whenever making a generic block I/O request\&. .SH "SYNOPSIS" .sp .nf ioblock\&.request .fi .SH "VALUES" .PP \fIphys_segments\fR .RS 4 number of segments in this bio after physical address coalescing is performed .RE .PP \fIbdev_contains\fR .RS 4 points to the device object which contains the partition (when bio structure represents a partition) .RE .PP \fIdevname\fR .RS 4 block device name .RE .PP \fIsize\fR .RS 4 total size in bytes .RE .PP \fIflags\fR .RS 4 see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out\-out\-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn\*(Aqt own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported .RE .PP \fIsector\fR .RS 4 beginning sector for the entire bio .RE .PP \fIp_start_sect\fR .RS 4 points to the start sector of the partition structure of the device .RE .PP \fIvcnt\fR .RS 4 bio vector count which represents number of array element (page, offset, length) which make up this I/O request .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIrw\fR .RS 4 binary trace for read/write request .RE .PP \fIidx\fR .RS 4 offset into the bio vector array .RE .PP \fIino\fR .RS 4 i\-node number of the mapped file .RE .PP \fIbdev\fR .RS 4 target block device .RE .PP \fIhw_segments\fR .RS 4 number of segments after physical and DMA remapping hardware coalescing is performed .RE .SH "CONTEXT" .PP The process makes block I/O request .SH SEE ALSO\n .IR tapset::ioblock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioblock_trace.bounce.3stap000066400000000000000000000056331305163227500305150ustar00rootroot00000000000000'\" t .\" Title: probe::ioblock_trace.bounce .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOBLOCK_TRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioblock_trace.bounce \- Fires whenever a buffer bounce is needed for at least one page of a block IO request\&. .SH "SYNOPSIS" .sp .nf ioblock_trace\&.bounce .fi .SH "VALUES" .PP \fIrw\fR .RS 4 binary trace for read/write request .RE .PP \fIidx\fR .RS 4 offset into the bio vector array \fIphys_segments\fR \- number of segments in this bio after physical address coalescing is performed\&. .RE .PP \fIino\fR .RS 4 i\-node number of the mapped file .RE .PP \fIq\fR .RS 4 request queue on which this bio was queued\&. .RE .PP \fIbdev\fR .RS 4 target block device .RE .PP \fIbytes_done\fR .RS 4 number of bytes transferred .RE .PP \fIbdev_contains\fR .RS 4 points to the device object which contains the partition (when bio structure represents a partition) .RE .PP \fIdevname\fR .RS 4 device for which a buffer bounce was needed\&. .RE .PP \fIsize\fR .RS 4 total size in bytes .RE .PP \fIflags\fR .RS 4 see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out\-out\-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn\*(Aqt own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported .RE .PP \fIsector\fR .RS 4 beginning sector for the entire bio .RE .PP \fIp_start_sect\fR .RS 4 points to the start sector of the partition structure of the device .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIvcnt\fR .RS 4 bio vector count which represents number of array element (page, offset, length) which makes up this I/O request .RE .SH "CONTEXT" .PP The process creating a block IO request\&. .SH SEE ALSO\n .IR tapset::ioblock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioblock_trace.end.3stap000066400000000000000000000055211305163227500300040ustar00rootroot00000000000000'\" t .\" Title: probe::ioblock_trace.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOBLOCK_TRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioblock_trace.end \- Fires whenever a block I/O transfer is complete\&. .SH "SYNOPSIS" .sp .nf ioblock_trace\&.end .fi .SH "VALUES" .PP \fIbdev_contains\fR .RS 4 points to the device object which contains the partition (when bio structure represents a partition) .RE .PP \fIdevname\fR .RS 4 block device name .RE .PP \fIflags\fR .RS 4 see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out\-out\-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn\*(Aqt own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported .RE .PP \fIsize\fR .RS 4 total size in bytes .RE .PP \fIsector\fR .RS 4 beginning sector for the entire bio .RE .PP \fIp_start_sect\fR .RS 4 points to the start sector of the partition structure of the device .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIvcnt\fR .RS 4 bio vector count which represents number of array element (page, offset, length) which makes up this I/O request .RE .PP \fIrw\fR .RS 4 binary trace for read/write request .RE .PP \fIidx\fR .RS 4 offset into the bio vector array \fIphys_segments\fR \- number of segments in this bio after physical address coalescing is performed\&. .RE .PP \fIino\fR .RS 4 i\-node number of the mapped file .RE .PP \fIq\fR .RS 4 request queue on which this bio was queued\&. .RE .PP \fIbdev\fR .RS 4 target block device .RE .PP \fIbytes_done\fR .RS 4 number of bytes transferred .RE .SH "CONTEXT" .PP The process signals the transfer is done\&. .SH SEE ALSO\n .IR tapset::ioblock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioblock_trace.request.3stap000066400000000000000000000055431305163227500307320ustar00rootroot00000000000000'\" t .\" Title: probe::ioblock_trace.request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOBLOCK_TRACE" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioblock_trace.request \- Fires just as a generic block I/O request is created for a bio\&. .SH "SYNOPSIS" .sp .nf ioblock_trace\&.request .fi .SH "VALUES" .PP \fIbdev\fR .RS 4 target block device .RE .PP \fIbytes_done\fR .RS 4 number of bytes transferred .RE .PP \fIino\fR .RS 4 i\-node number of the mapped file .RE .PP \fIidx\fR .RS 4 offset into the bio vector array \fIphys_segments\fR \- number of segments in this bio after physical address coalescing is performed\&. .RE .PP \fIrw\fR .RS 4 binary trace for read/write request .RE .PP \fIq\fR .RS 4 request queue on which this bio was queued\&. .RE .PP \fIflags\fR .RS 4 see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out\-out\-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn\*(Aqt own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported .RE .PP \fIsize\fR .RS 4 total size in bytes .RE .PP \fIp_start_sect\fR .RS 4 points to the start sector of the partition structure of the device .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIvcnt\fR .RS 4 bio vector count which represents number of array element (page, offset, length) which make up this I/O request .RE .PP \fIsector\fR .RS 4 beginning sector for the entire bio .RE .PP \fIdevname\fR .RS 4 block device name .RE .PP \fIbdev_contains\fR .RS 4 points to the device object which contains the partition (when bio structure represents a partition) .RE .SH "CONTEXT" .PP The process makes block I/O request .SH SEE ALSO\n .IR tapset::ioblock (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_add_request.3stap000066400000000000000000000035041305163227500321110ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_add_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_add_request \- probe to indicate request is added to the request queue\&. .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_add_request .fi .SH "VALUES" .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIq\fR .RS 4 Pointer to request queue\&. .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIrq\fR .RS 4 Address of request\&. .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_add_request.kp.3stap000066400000000000000000000036201305163227500325210ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_add_request.kp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_add_request.kp \- kprobe based probe to indicate that a request was added to the request queue .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_add_request\&.kp .fi .SH "VALUES" .PP \fIq\fR .RS 4 pointer to request queue .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled .RE .PP \fIrq_flags\fR .RS 4 Request flags .RE .PP \fIdisk_major\fR .RS 4 Disk major number of the request .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of the request .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIrq\fR .RS 4 Address of the request .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_add_request.tp.3stap000066400000000000000000000036231305163227500325350ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_add_request.tp .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_add_request.tp \- tracepoint based probe to indicate a request is added to the request queue\&. .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_add_request\&.tp .fi .SH "VALUES" .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIq\fR .RS 4 Pointer to request queue\&. .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIrq\fR .RS 4 Address of request\&. .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_completed_request.3stap000066400000000000000000000034751305163227500333440ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_completed_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_completed_request \- Fires when a request is completed .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_completed_request .fi .SH "VALUES" .PP \fIrq\fR .RS 4 Address of the request .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of the request .RE .PP \fIdisk_major\fR .RS 4 Disk major number of the request .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled .RE .PP \fIrq_flags\fR .RS 4 Request flags .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_next_request.3stap000066400000000000000000000031541305163227500323400ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_next_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_next_request \- Fires when a request is retrieved from the request queue .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_next_request .fi .SH "VALUES" .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler.elv_next_request.return.3stap000066400000000000000000000034141305163227500336550ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler.elv_next_request.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler.elv_next_request.return \- Fires when a request retrieval issues a return signal .SH "SYNOPSIS" .sp .nf ioscheduler\&.elv_next_request\&.return .fi .SH "VALUES" .PP \fIrq_flags\fR .RS 4 Request flags .RE .PP \fIdisk_major\fR .RS 4 Disk major number of the request .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of the request .RE .PP \fIrq\fR .RS 4 Address of the request .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.elv_abort_request.3stap000066400000000000000000000035031305163227500336450ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.elv_abort_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.elv_abort_request \- Fires when a request is aborted\&. .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.elv_abort_request .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIrq\fR .RS 4 Address of request\&. .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) probe::ioscheduler_trace.elv_completed_request.3stap000066400000000000000000000035471305163227500344430ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Tapset_Reference/man3'\" t .\" Title: probe::ioscheduler_trace.elv_completed_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.elv_completed_request \- Fires when a request is .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.elv_completed_request .fi .SH "VALUES" .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIrq\fR .RS 4 Address of request\&. .RE .SH "DESCRIPTION" .PP completed\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.elv_issue_request.3stap000066400000000000000000000035331305163227500336710ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.elv_issue_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.elv_issue_request \- Fires when a request is .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.elv_issue_request .fi .SH "VALUES" .PP \fIrq\fR .RS 4 Address of request\&. .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .SH "DESCRIPTION" .PP scheduled\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.elv_requeue_request.3stap000066400000000000000000000036341305163227500342160ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.elv_requeue_request .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.elv_requeue_request \- Fires when a request is .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.elv_requeue_request .fi .SH "VALUES" .PP \fIelevator_name\fR .RS 4 The type of I/O elevator currently enabled\&. .RE .PP \fIrq_flags\fR .RS 4 Request flags\&. .RE .PP \fIdisk_major\fR .RS 4 Disk major no of request\&. .RE .PP \fIdisk_minor\fR .RS 4 Disk minor number of request\&. .RE .PP \fIrq\fR .RS 4 Address of request\&. .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH "DESCRIPTION" .PP put back on the queue, when the hardware cannot accept more requests\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.plug.3stap000066400000000000000000000031741305163227500310730ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.plug .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.plug \- Fires when a request queue is plugged; .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.plug .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIrq_queue\fR .RS 4 request queue .RE .SH "DESCRIPTION" .PP ie, requests in the queue cannot be serviced by block driver\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.unplug_io.3stap000066400000000000000000000033361305163227500321250ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.unplug_io .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.unplug_io \- Fires when a request queue is unplugged; .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.unplug_io .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIrq_queue\fR .RS 4 request queue .RE .SH "DESCRIPTION" .PP Either, when number of pending requests in the queue exceeds threshold or, upon expiration of timer that was activated when queue was plugged\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ioscheduler_trace.unplug_timer.3stap000066400000000000000000000031601305163227500326310ustar00rootroot00000000000000'\" t .\" Title: probe::ioscheduler_trace.unplug_timer .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: IO Scheduler and block IO Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IOSCHEDULER_T" "3stap" "March 2016" "SystemTap Tapset Reference" "IO Scheduler and block IO Taps" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ioscheduler_trace.unplug_timer \- Fires when unplug timer associated .SH "SYNOPSIS" .sp .nf ioscheduler_trace\&.unplug_timer .fi .SH "VALUES" .PP \fIrq_queue\fR .RS 4 request queue .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH "DESCRIPTION" .PP with a request queue expires\&. .SH SEE ALSO\n .IR tapset::ioscheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.ForwDatagrams.3stap000066400000000000000000000034501305163227500302760ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.ForwDatagrams .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.FORWD" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.ForwDatagrams \- Count forwarded packet .SH "SYNOPSIS" .sp .nf ipmib\&.ForwDatagrams .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIForwDatagrams\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_OUTFORWDATAGRAMS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.FragFails.3stap000066400000000000000000000034431305163227500273750ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.FragFails .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.FRAGF" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.FragFails \- Count datagram fragmented unsuccessfully .SH "SYNOPSIS" .sp .nf ipmib\&.FragFails .fi .SH "VALUES" .PP \fIop\fR .RS 4 Value to be added to the counter (default value of 1) .RE .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIFragFails\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_FRAGFAILS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.FragOKs.3stap000066400000000000000000000034271305163227500270350ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.FragOKs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.FRAGO" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.FragOKs \- Count datagram fragmented successfully .SH "SYNOPSIS" .sp .nf ipmib\&.FragOKs .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIFragOKs\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_FRAGOKS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.InAddrErrors.3stap000066400000000000000000000034721305163227500300770ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.InAddrErrors .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.INADD" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.InAddrErrors \- Count arriving packets with an incorrect address .SH "SYNOPSIS" .sp .nf ipmib\&.InAddrErrors .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIInAddrErrors\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_INADDRERRORS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.InDiscards.3stap000066400000000000000000000034351305163227500275630ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.InDiscards .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.INDIS" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.InDiscards \- Count discarded inbound packets .SH "SYNOPSIS" .sp .nf ipmib\&.InDiscards .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIInDiscards\fR (equivalent to SNMP\*(Aqs MIB STATS_MIB_INDISCARDS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.InNoRoutes.3stap000066400000000000000000000034601305163227500276030ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.InNoRoutes .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.INNOR" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.InNoRoutes \- Count an arriving packet with no matching socket .SH "SYNOPSIS" .sp .nf ipmib\&.InNoRoutes .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIInNoRoutes\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_INNOROUTES) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.InReceives.3stap000066400000000000000000000034301305163227500275670ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.InReceives .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.INREC" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.InReceives \- Count an arriving packet .SH "SYNOPSIS" .sp .nf ipmib\&.InReceives .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIInReceives\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_INRECEIVES) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.InUnknownProtos.3stap000066400000000000000000000035051305163227500306730ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.InUnknownProtos .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.INUNK" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.InUnknownProtos \- Count arriving packets with an unbound proto .SH "SYNOPSIS" .sp .nf ipmib\&.InUnknownProtos .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIInUnknownProtos\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_INUNKNOWNPROTOS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.OutRequests.3stap000066400000000000000000000034451305163227500300440ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.OutRequests .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.OUTRE" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.OutRequests \- Count a request to send a packet .SH "SYNOPSIS" .sp .nf ipmib\&.OutRequests .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIOutRequests\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_OUTREQUESTS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.ReasmReqds.3stap000066400000000000000000000034641305163227500276100ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.ReasmReqds .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.REASM" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.ReasmReqds \- Count number of packet fragments reassembly requests .SH "SYNOPSIS" .sp .nf ipmib\&.ReasmReqds .fi .SH "VALUES" .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIReasmReqds\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_REASMREQDS) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::ipmib.ReasmTimeout.3stap000066400000000000000000000034431305163227500301550ustar00rootroot00000000000000'\" t .\" Title: probe::ipmib.ReasmTimeout .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IPMIB\&.REASM" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::ipmib.ReasmTimeout \- Count Reassembly Timeouts .SH "SYNOPSIS" .sp .nf ipmib\&.ReasmTimeout .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIskb\fR .RS 4 pointer to the struct sk_buff being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBipmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIReasmTimeout\fR (equivalent to SNMP\*(Aqs MIB IPSTATS_MIB_REASMTIMEOUT) .SH SEE ALSO\n .IR tapset::ipmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::irq_handler.entry.3stap000066400000000000000000000042101305163227500300610ustar00rootroot00000000000000'\" t .\" Title: probe::irq_handler.entry .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IRQ_HANDLER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::irq_handler.entry \- Execution of interrupt handler starting .SH "SYNOPSIS" .sp .nf irq_handler\&.entry .fi .SH "VALUES" .PP \fIflags\fR .RS 4 Flags for IRQ handler .RE .PP \fIdev_id\fR .RS 4 Cookie to identify device .RE .PP \fIthread_flags\fR .RS 4 Flags related to thread .RE .PP \fIdir\fR .RS 4 pointer to the proc/irq/NN/name entry .RE .PP \fIhandler\fR .RS 4 interrupt handler function .RE .PP \fIaction\fR .RS 4 struct irqaction* for this interrupt num .RE .PP \fIthread_fn\fR .RS 4 interrupt handler function for threaded interrupts .RE .PP \fInext_irqaction\fR .RS 4 pointer to next irqaction for shared interrupts .RE .PP \fIdev_name\fR .RS 4 name of device .RE .PP \fIflags_str\fR .RS 4 symbolic string representation of IRQ flags .RE .PP \fIirq\fR .RS 4 irq number .RE .PP \fIthread\fR .RS 4 thread pointer for threaded interrupts .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::irq_handler.exit.3stap000066400000000000000000000042731305163227500277020ustar00rootroot00000000000000'\" t .\" Title: probe::irq_handler.exit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::IRQ_HANDLER\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::irq_handler.exit \- Execution of interrupt handler completed .SH "SYNOPSIS" .sp .nf irq_handler\&.exit .fi .SH "VALUES" .PP \fIthread\fR .RS 4 thread pointer for threaded interrupts .RE .PP \fIflags_str\fR .RS 4 symbolic string representation of IRQ flags .RE .PP \fIret\fR .RS 4 return value of the handler .RE .PP \fIirq\fR .RS 4 interrupt number .RE .PP \fIdev_name\fR .RS 4 name of device .RE .PP \fInext_irqaction\fR .RS 4 pointer to next irqaction for shared interrupts .RE .PP \fIthread_fn\fR .RS 4 interrupt handler function for threaded interrupts .RE .PP \fIhandler\fR .RS 4 interrupt handler function that was executed .RE .PP \fIaction\fR .RS 4 struct irqaction* .RE .PP \fIdir\fR .RS 4 pointer to the proc/irq/NN/name entry .RE .PP \fIthread_flags\fR .RS 4 Flags related to thread .RE .PP \fIdev_id\fR .RS 4 Cookie to identify device .RE .PP \fIflags\fR .RS 4 flags for IRQ handler .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::json_data.3stap000066400000000000000000000036201305163227500263770ustar00rootroot00000000000000'\" t .\" Title: probe::json_data .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: JSON Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::JSON_DATA" "3stap" "March 2016" "SystemTap Tapset Reference" "JSON Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::json_data \- Fires whenever JSON data is wanted by a reader\&. .SH "SYNOPSIS" .sp .nf json_data .fi .SH "VALUES" .PP None .SH "CONTEXT" .PP This probe fires when the JSON data is about to be read\&. This probe must gather up data and then call the following macros to output the data in JSON format\&. First, @\fBjson_output_data_start\fR must be called\&. That call is followed by one or more of the following (one call for each data item): @\fBjson_output_string_value\fR, @\fBjson_output_numeric_value\fR, @\fBjson_output_array_string_value\fR, and @\fBjson_output_array_numeric_value\fR\&. Finally @\fBjson_output_data_end\fR must be called\&. .SH SEE ALSO\n .IR tapset::json (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.create.3stap000066400000000000000000000034131305163227500275300ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.CR" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.create \- Fires whenever a new process or thread is successfully created .SH "SYNOPSIS" .sp .nf kprocess\&.create .fi .SH "VALUES" .PP \fInew_pid\fR .RS 4 The PID of the newly created process .RE .PP \fInew_tid\fR .RS 4 The TID of the newly created task .RE .SH "CONTEXT" .PP Parent of the created process\&. .SH "DESCRIPTION" .PP Fires whenever a new process is successfully created, either as a result of fork (or one of its syscall variants), or a new kernel thread\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.exec.3stap000066400000000000000000000037231305163227500272150ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.exec .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.EX" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.exec \- Attempt to exec to a new program .SH "SYNOPSIS" .sp .nf kprocess\&.exec .fi .SH "VALUES" .PP \fIargs\fR .RS 4 The arguments to pass to the new executable, including the 0th arg (SystemTap v2\&.5+) .RE .PP \fIname\fR .RS 4 Name of the system call (\(lqexecve\(rq) (SystemTap v2\&.5+) .RE .PP \fIargstr\fR .RS 4 A string containing the filename followed by the arguments to pass, excluding 0th arg (SystemTap v2\&.5+) .RE .PP \fIfilename\fR .RS 4 The path to the new executable .RE .SH "CONTEXT" .PP The caller of exec\&. .SH "DESCRIPTION" .PP Fires whenever a process attempts to exec to a new program\&. Aliased to the syscall\&.execve probe in SystemTap v2\&.5+\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.exec_complete.3stap000066400000000000000000000037471305163227500311130ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.exec_complete .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.EX" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.exec_complete \- Return from exec to a new program .SH "SYNOPSIS" .sp .nf kprocess\&.exec_complete .fi .SH "VALUES" .PP \fIretstr\fR .RS 4 A string representation of errno (SystemTap v2\&.5+) .RE .PP \fIname\fR .RS 4 Name of the system call (\(lqexecve\(rq) (SystemTap v2\&.5+) .RE .PP \fIerrno\fR .RS 4 The error number resulting from the exec .RE .PP \fIsuccess\fR .RS 4 A boolean indicating whether the exec was successful .RE .SH "CONTEXT" .PP On success, the context of the new executable\&. On failure, remains in the context of the caller\&. .SH "DESCRIPTION" .PP Fires at the completion of an exec call\&. Aliased to the syscall\&.execve\&.return probe in SystemTap v2\&.5+\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.exit.3stap000066400000000000000000000032511305163227500272360ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.exit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.EX" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.exit \- Exit from process .SH "SYNOPSIS" .sp .nf kprocess\&.exit .fi .SH "VALUES" .PP \fIcode\fR .RS 4 The exit code of the process .RE .SH "CONTEXT" .PP The process which is terminating\&. .SH "DESCRIPTION" .PP Fires when a process terminates\&. This will always be followed by a kprocess\&.release, though the latter may be delayed if the process waits in a zombie state\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.release.3stap000066400000000000000000000037651305163227500277170ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.release .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.RE" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.release \- Process released .SH "SYNOPSIS" .sp .nf kprocess\&.release .fi .SH "VALUES" .PP \fItask\fR .RS 4 A task handle to the process being released .RE .PP \fIpid\fR .RS 4 Same as \fIreleased_pid\fR for compatibility (deprecated) .RE .PP \fIreleased_pid\fR .RS 4 PID of the process being released .RE .PP \fIreleased_tid\fR .RS 4 TID of the task being released .RE .SH "CONTEXT" .PP The context of the parent, if it wanted notification of this process\*(Aq termination, else the context of the process itself\&. .SH "DESCRIPTION" .PP Fires when a process is released from the kernel\&. This always follows a kprocess\&.exit, though it may be delayed somewhat if the process waits in a zombie state\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::kprocess.start.3stap000066400000000000000000000030161305163227500274210ustar00rootroot00000000000000'\" t .\" Title: probe::kprocess.start .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Kernel Process Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::KPROCESS\&.ST" "3stap" "March 2016" "SystemTap Tapset Reference" "Kernel Process Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::kprocess.start \- Starting new process .SH "SYNOPSIS" .sp .nf kprocess\&.start .fi .SH "VALUES" .PP None .SH "CONTEXT" .PP Newly created process\&. .SH "DESCRIPTION" .PP Fires immediately before a new process begins execution\&. .SH SEE ALSO\n .IR tapset::kprocess (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::linuxmib.DelayedACKs.3stap000066400000000000000000000034431305163227500303370ustar00rootroot00000000000000'\" t .\" Title: probe::linuxmib.DelayedACKs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::LINUXMIB\&.DE" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::linuxmib.DelayedACKs \- Count of delayed acks .SH "SYNOPSIS" .sp .nf linuxmib\&.DelayedACKs .fi .SH "VALUES" .PP \fIop\fR .RS 4 Value to be added to the counter (default value of 1) .RE .PP \fIsk\fR .RS 4 Pointer to the struct sock being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBlinuxmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIDelayedACKs\fR (equivalent to SNMP\*(Aqs MIB LINUX_MIB_DELAYEDACKS) .SH SEE ALSO\n .IR tapset::linuxmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::linuxmib.ListenDrops.3stap000066400000000000000000000034731305163227500305370ustar00rootroot00000000000000'\" t .\" Title: probe::linuxmib.ListenDrops .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::LINUXMIB\&.LI" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::linuxmib.ListenDrops \- Count of times conn request that were dropped .SH "SYNOPSIS" .sp .nf linuxmib\&.ListenDrops .fi .SH "VALUES" .PP \fIsk\fR .RS 4 Pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 Value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBlinuxmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIListenDrops\fR (equivalent to SNMP\*(Aqs MIB LINUX_MIB_LISTENDROPS) .SH SEE ALSO\n .IR tapset::linuxmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::linuxmib.ListenOverflows.3stap000066400000000000000000000035121305163227500314300ustar00rootroot00000000000000'\" t .\" Title: probe::linuxmib.ListenOverflows .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::LINUXMIB\&.LI" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::linuxmib.ListenOverflows \- Count of times a listen queue overflowed .SH "SYNOPSIS" .sp .nf linuxmib\&.ListenOverflows .fi .SH "VALUES" .PP \fIop\fR .RS 4 Value to be added to the counter (default value of 1) .RE .PP \fIsk\fR .RS 4 Pointer to the struct sock being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBlinuxmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIListenOverflows\fR (equivalent to SNMP\*(Aqs MIB LINUX_MIB_LISTENOVERFLOWS) .SH SEE ALSO\n .IR tapset::linuxmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::linuxmib.TCPMemoryPressures.3stap000066400000000000000000000035301305163227500320160ustar00rootroot00000000000000'\" t .\" Title: probe::linuxmib.TCPMemoryPressures .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::LINUXMIB\&.TC" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::linuxmib.TCPMemoryPressures \- Count of times memory pressure was used .SH "SYNOPSIS" .sp .nf linuxmib\&.TCPMemoryPressures .fi .SH "VALUES" .PP \fIop\fR .RS 4 Value to be added to the counter (default value of 1) .RE .PP \fIsk\fR .RS 4 Pointer to the struct sock being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBlinuxmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fITCPMemoryPressures\fR (equivalent to SNMP\*(Aqs MIB LINUX_MIB_TCPMEMORYPRESSURES) .SH SEE ALSO\n .IR tapset::linuxmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.change_mac.3stap000066400000000000000000000031751305163227500277730ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.change_mac .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.CHAN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.change_mac \- Called when the netdev_name has the MAC changed .SH "SYNOPSIS" .sp .nf netdev\&.change_mac .fi .SH "VALUES" .PP \fIold_mac\fR .RS 4 The current MAC address .RE .PP \fImac_len\fR .RS 4 The MAC length .RE .PP \fIdev_name\fR .RS 4 The device that will have the MAC changed .RE .PP \fInew_mac\fR .RS 4 The new MAC address .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.change_mtu.3stap000066400000000000000000000030701305163227500300320ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.change_mtu .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.CHAN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.change_mtu \- Called when the netdev MTU is changed .SH "SYNOPSIS" .sp .nf netdev\&.change_mtu .fi .SH "VALUES" .PP \fInew_mtu\fR .RS 4 The new MTU .RE .PP \fIdev_name\fR .RS 4 The device that will have the MTU changed .RE .PP \fIold_mtu\fR .RS 4 The current MTU .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.change_rx_flag.3stap000066400000000000000000000030271305163227500306510ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.change_rx_flag .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.CHAN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.change_rx_flag \- Called when the device RX flag will be changed .SH "SYNOPSIS" .sp .nf netdev\&.change_rx_flag .fi .SH "VALUES" .PP \fIflags\fR .RS 4 The new flags .RE .PP \fIdev_name\fR .RS 4 The device that will be changed .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.close.3stap000066400000000000000000000027141305163227500270310ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.close .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.CLOS" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.close \- Called when the device is closed .SH "SYNOPSIS" .sp .nf netdev\&.close .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device that is going to be closed .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.get_stats.3stap000066400000000000000000000027631305163227500277250ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.get_stats .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.GET_" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.get_stats \- Called when someone asks the device statistics .SH "SYNOPSIS" .sp .nf netdev\&.get_stats .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device that is going to provide the statistics .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.hard_transmit.3stap000066400000000000000000000032661305163227500305660ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.hard_transmit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.HARD" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.hard_transmit \- Called when the devices is going to TX (hard) .SH "SYNOPSIS" .sp .nf netdev\&.hard_transmit .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device scheduled to transmit .RE .PP \fIlength\fR .RS 4 The length of the transmit buffer\&. .RE .PP \fItruesize\fR .RS 4 The size of the data to be transmitted\&. .RE .PP \fIprotocol\fR .RS 4 The protocol used in the transmission .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.ioctl.3stap000066400000000000000000000030041305163227500270270ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.ioctl .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.IOCT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.ioctl \- Called when the device suffers an IOCTL .SH "SYNOPSIS" .sp .nf netdev\&.ioctl .fi .SH "VALUES" .PP \fIarg\fR .RS 4 The IOCTL argument (usually the netdev interface) .RE .PP \fIcmd\fR .RS 4 The IOCTL request .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.open.3stap000066400000000000000000000027111305163227500266620ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.open .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.OPEN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.open \- Called when the device is opened .SH "SYNOPSIS" .sp .nf netdev\&.open .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device that is going to be opened .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.receive.3stap000066400000000000000000000031341305163227500273430ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.receive .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.RECE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.receive \- Data received from network device\&. .SH "SYNOPSIS" .sp .nf netdev\&.receive .fi .SH "VALUES" .PP \fIprotocol\fR .RS 4 Protocol of received packet\&. .RE .PP \fIlength\fR .RS 4 The length of the receiving buffer\&. .RE .PP \fIdev_name\fR .RS 4 The name of the device\&. e\&.g: eth0, ath1\&. .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.register.3stap000066400000000000000000000027351305163227500275530ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.register .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.REGI" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.register \- Called when the device is registered .SH "SYNOPSIS" .sp .nf netdev\&.register .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device that is going to be registered .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.rx.3stap000066400000000000000000000027761305163227500263650ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.rx .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.RX" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.rx \- Called when the device is going to receive a packet .SH "SYNOPSIS" .sp .nf netdev\&.rx .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device received the packet .RE .PP \fIprotocol\fR .RS 4 The packet protocol .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.set_promiscuity.3stap000066400000000000000000000033251305163227500311650ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.set_promiscuity .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.SET_" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.set_promiscuity \- Called when the device enters/leaves promiscuity .SH "SYNOPSIS" .sp .nf netdev\&.set_promiscuity .fi .SH "VALUES" .PP \fIinc\fR .RS 4 Count the number of promiscuity openers .RE .PP \fIdev_name\fR .RS 4 The device that is entering/leaving promiscuity mode .RE .PP \fIenable\fR .RS 4 If the device is entering promiscuity mode .RE .PP \fIdisable\fR .RS 4 If the device is leaving promiscuity mode .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.transmit.3stap000066400000000000000000000033121305163227500275600ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.transmit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.TRAN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.transmit \- Network device transmitting buffer .SH "SYNOPSIS" .sp .nf netdev\&.transmit .fi .SH "VALUES" .PP \fIprotocol\fR .RS 4 The protocol of this packet(defined in include/linux/if_ether\&.h)\&. .RE .PP \fItruesize\fR .RS 4 The size of the data to be transmitted\&. .RE .PP \fIdev_name\fR .RS 4 The name of the device\&. e\&.g: eth0, ath1\&. .RE .PP \fIlength\fR .RS 4 The length of the transmit buffer\&. .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netdev.unregister.3stap000066400000000000000000000027551305163227500301200ustar00rootroot00000000000000'\" t .\" Title: probe::netdev.unregister .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETDEV\&.UNRE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netdev.unregister \- Called when the device is being unregistered .SH "SYNOPSIS" .sp .nf netdev\&.unregister .fi .SH "VALUES" .PP \fIdev_name\fR .RS 4 The device that is going to be unregistered .RE .SH SEE ALSO\n .IR tapset::networking (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.arp.forward.3stap000066400000000000000000000061441305163227500306610ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.arp.forward .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.A" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.arp.forward \- \- Called for each ARP packet to be forwarded .SH "SYNOPSIS" .sp .nf netfilter\&.arp\&.forward .fi .SH "VALUES" .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIar_hln\fR .RS 4 Length of hardware address .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIar_data\fR .RS 4 Address of ARP packet data region (after the header) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIar_sip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source IP address .RE .PP \fIarphdr\fR .RS 4 Address of ARP header .RE .PP \fIar_op\fR .RS 4 ARP opcode (command) .RE .PP \fIar_tip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target IP address .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqarp\(rq .RE .PP \fIar_tha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address .RE .PP \fIar_pro\fR .RS 4 Format of protocol address .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIar_sha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address .RE .PP \fIar_pln\fR .RS 4 Length of protocol address .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIar_hrd\fR .RS 4 Format of hardware address .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.arp.in.3stap000066400000000000000000000061161305163227500276220ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.arp.in .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.A" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.arp.in \- \- Called for each incoming ARP packet .SH "SYNOPSIS" .sp .nf netfilter\&.arp\&.in .fi .SH "VALUES" .PP \fIar_hrd\fR .RS 4 Format of hardware address .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIar_pro\fR .RS 4 Format of protocol address .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIar_tha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqarp\(rq .RE .PP \fIar_sha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIar_pln\fR .RS 4 Length of protocol address .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIar_tip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target IP address .RE .PP \fIar_hln\fR .RS 4 Length of hardware address .RE .PP \fIar_data\fR .RS 4 Address of ARP packet data region (after the header) .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIarphdr\fR .RS 4 Address of ARP header .RE .PP \fIar_op\fR .RS 4 ARP opcode (command) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIar_sip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source IP address .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.arp.out.3stap000066400000000000000000000061211305163227500300170ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.arp.out .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.A" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.arp.out \- \- Called for each outgoing ARP packet .SH "SYNOPSIS" .sp .nf netfilter\&.arp\&.out .fi .SH "VALUES" .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIar_tip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target IP address .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIar_data\fR .RS 4 Address of ARP packet data region (after the header) .RE .PP \fIar_hln\fR .RS 4 Length of hardware address .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fIar_op\fR .RS 4 ARP opcode (command) .RE .PP \fIarphdr\fR .RS 4 Address of ARP header .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIar_sip\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source IP address .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIar_hrd\fR .RS 4 Format of hardware address .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIar_pro\fR .RS 4 Format of protocol address .RE .PP \fIar_tha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqarp\(rq .RE .PP \fIar_pln\fR .RS 4 Length of protocol address .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIar_sha\fR .RS 4 Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.bridge.forward.3stap000066400000000000000000000065461305163227500313410ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.bridge.forward .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.bridge.forward \- Called on an incoming bridging packet destined for some other computer .SH "SYNOPSIS" .sp .nf netfilter\&.bridge\&.forward .fi .SH "VALUES" .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIbr_rmac\fR .RS 4 Root bridge MAC address .RE .PP \fIprotocol\fR .RS 4 Packet protocol .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIbr_poid\fR .RS 4 Port identifier .RE .PP \fIbr_type\fR .RS 4 BPDU type .RE .PP \fIbrhdr\fR .RS 4 Address of bridge header .RE .PP \fIbr_prid\fR .RS 4 Protocol identifier .RE .PP \fIbr_msg\fR .RS 4 Message age in 1/256 secs .RE .PP \fIbr_vid\fR .RS 4 Protocol version identifier .RE .PP \fIbr_fd\fR .RS 4 Forward delay in 1/256 secs .RE .PP \fIbr_mac\fR .RS 4 Bridge MAC address .RE .PP \fIbr_flags\fR .RS 4 BPDU flags .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIbr_htime\fR .RS 4 Hello time in 1/256 secs .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqbridge\(rq .RE .PP \fIllcproto_stp\fR .RS 4 Constant used to signify Bridge Spanning Tree Protocol packet .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIbr_cost\fR .RS 4 Total cost from transmitting bridge to root .RE .PP \fIllcpdu\fR .RS 4 Address of LLC Protocol Data Unit .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIbr_bid\fR .RS 4 Identity of bridge .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIbr_max\fR .RS 4 Max age in 1/256 secs .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIbr_rid\fR .RS 4 Identity of root bridge .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.bridge.local_in.3stap000066400000000000000000000065361305163227500314540ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.bridge.local_in .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.bridge.local_in \- Called on a bridging packet destined for the local computer .SH "SYNOPSIS" .sp .nf netfilter\&.bridge\&.local_in .fi .SH "VALUES" .PP \fIbr_poid\fR .RS 4 Port identifier .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIbr_type\fR .RS 4 BPDU type .RE .PP \fIprotocol\fR .RS 4 Packet protocol .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fIbr_rmac\fR .RS 4 Root bridge MAC address .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIbr_flags\fR .RS 4 BPDU flags .RE .PP \fIbr_msg\fR .RS 4 Message age in 1/256 secs .RE .PP \fIbr_mac\fR .RS 4 Bridge MAC address .RE .PP \fIbr_fd\fR .RS 4 Forward delay in 1/256 secs .RE .PP \fIbr_vid\fR .RS 4 Protocol version identifier .RE .PP \fIbrhdr\fR .RS 4 Address of bridge header .RE .PP \fIbr_prid\fR .RS 4 Protocol identifier .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIbr_cost\fR .RS 4 Total cost from transmitting bridge to root .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqbridge\(rq .RE .PP \fIllcproto_stp\fR .RS 4 Constant used to signify Bridge Spanning Tree Protocol packet .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIbr_htime\fR .RS 4 Hello time in 1/256 secs .RE .PP \fIbr_rid\fR .RS 4 Identity of root bridge .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIbr_bid\fR .RS 4 Identity of bridge .RE .PP \fIbr_max\fR .RS 4 Max age in 1/256 secs .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIllcpdu\fR .RS 4 Address of LLC Protocol Data Unit .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.bridge.local_out.3stap000066400000000000000000000065351305163227500316540ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.bridge.local_out .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.bridge.local_out \- Called on a bridging packet coming from a local process .SH "SYNOPSIS" .sp .nf netfilter\&.bridge\&.local_out .fi .SH "VALUES" .PP \fIbr_htime\fR .RS 4 Hello time in 1/256 secs .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIllcproto_stp\fR .RS 4 Constant used to signify Bridge Spanning Tree Protocol packet .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqbridge\(rq .RE .PP \fIbr_cost\fR .RS 4 Total cost from transmitting bridge to root .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIllcpdu\fR .RS 4 Address of LLC Protocol Data Unit .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIbr_max\fR .RS 4 Max age in 1/256 secs .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIbr_bid\fR .RS 4 Identity of bridge .RE .PP \fIbr_rid\fR .RS 4 Identity of root bridge .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIbr_rmac\fR .RS 4 Root bridge MAC address .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fIprotocol\fR .RS 4 Packet protocol .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIbr_type\fR .RS 4 BPDU type .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIbr_poid\fR .RS 4 Port identifier .RE .PP \fIbr_prid\fR .RS 4 Protocol identifier .RE .PP \fIbrhdr\fR .RS 4 Address of bridge header .RE .PP \fIbr_fd\fR .RS 4 Forward delay in 1/256 secs .RE .PP \fIbr_vid\fR .RS 4 Protocol version identifier .RE .PP \fIbr_mac\fR .RS 4 Bridge MAC address .RE .PP \fIbr_msg\fR .RS 4 Message age in 1/256 secs .RE .PP \fIbr_flags\fR .RS 4 BPDU flags .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.bridge.post_routing.3stap000066400000000000000000000065371305163227500324310ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.bridge.post_routing .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.bridge.post_routing \- \- Called before a bridging packet hits the wire .SH "SYNOPSIS" .sp .nf netfilter\&.bridge\&.post_routing .fi .SH "VALUES" .PP \fIbr_rmac\fR .RS 4 Root bridge MAC address .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIbr_type\fR .RS 4 BPDU type .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIbr_poid\fR .RS 4 Port identifier .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIprotocol\fR .RS 4 Packet protocol .RE .PP \fIbr_fd\fR .RS 4 Forward delay in 1/256 secs .RE .PP \fIbr_mac\fR .RS 4 Bridge MAC address .RE .PP \fIbr_vid\fR .RS 4 Protocol version identifier .RE .PP \fIbr_msg\fR .RS 4 Message age in 1/256 secs .RE .PP \fIbr_prid\fR .RS 4 Protocol identifier .RE .PP \fIbrhdr\fR .RS 4 Address of bridge header .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIbr_flags\fR .RS 4 BPDU flags .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIbr_htime\fR .RS 4 Hello time in 1/256 secs .RE .PP \fIbr_cost\fR .RS 4 Total cost from transmitting bridge to root .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIllcproto_stp\fR .RS 4 Constant used to signify Bridge Spanning Tree Protocol packet .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqbridge\(rq .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIllcpdu\fR .RS 4 Address of LLC Protocol Data Unit .RE .PP \fIbr_rid\fR .RS 4 Identity of root bridge .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIbr_max\fR .RS 4 Max age in 1/256 secs .RE .PP \fIbr_bid\fR .RS 4 Identity of bridge .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.bridge.pre_routing.3stap000066400000000000000000000065301305163227500322230ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.bridge.pre_routing .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.bridge.pre_routing \- \- Called before a bridging packet is routed .SH "SYNOPSIS" .sp .nf netfilter\&.bridge\&.pre_routing .fi .SH "VALUES" .PP \fIbr_rid\fR .RS 4 Identity of root bridge .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIbr_bid\fR .RS 4 Identity of bridge .RE .PP \fIbr_max\fR .RS 4 Max age in 1/256 secs .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIllcpdu\fR .RS 4 Address of LLC Protocol Data Unit .RE .PP \fIbr_cost\fR .RS 4 Total cost from transmitting bridge to root .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIllcproto_stp\fR .RS 4 Constant used to signify Bridge Spanning Tree Protocol packet .RE .PP \fIpf\fR .RS 4 Protocol family \-\- always \(lqbridge\(rq .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIbr_htime\fR .RS 4 Hello time in 1/256 secs .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIbr_flags\fR .RS 4 BPDU flags .RE .PP \fIbr_fd\fR .RS 4 Forward delay in 1/256 secs .RE .PP \fIbr_vid\fR .RS 4 Protocol version identifier .RE .PP \fIbr_mac\fR .RS 4 Bridge MAC address .RE .PP \fIbr_msg\fR .RS 4 Message age in 1/256 secs .RE .PP \fIbr_prid\fR .RS 4 Protocol identifier .RE .PP \fIbrhdr\fR .RS 4 Address of bridge header .RE .PP \fIbr_type\fR .RS 4 BPDU type .RE .PP \fIbr_poid\fR .RS 4 Port identifier .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIprotocol\fR .RS 4 Packet protocol .RE .PP \fIbr_rmac\fR .RS 4 Root bridge MAC address .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.ip.forward.3stap000066400000000000000000000066511305163227500305120ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.ip.forward .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.ip.forward \- Called on an incoming IP packet addressed to some other computer .SH "SYNOPSIS" .sp .nf netfilter\&.ip\&.forward .fi .SH "VALUES" .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver (ipv4 only) .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIurg\fR .RS 4 TCP URG flag (if protocol is TCP; ipv4 only) .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIipproto_tcp\fR .RS 4 Constant used to signify that the packet protocol is TCP .RE .PP \fIrst\fR .RS 4 TCP RST flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIsyn\fR .RS 4 TCP SYN flag (if protocol is TCP; ipv4 only) .RE .PP \fIpf\fR .RS 4 Protocol family \-\- either \(lqipv4\(rq or \(lqipv6\(rq .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIpsh\fR .RS 4 TCP PSH flag (if protocol is TCP; ipv4 only) .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIsport\fR .RS 4 TCP or UDP source port (ipv4 only) .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIfin\fR .RS 4 TCP FIN flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIack\fR .RS 4 TCP ACK flag (if protocol is TCP; ipv4 only) .RE .PP \fIdport\fR .RS 4 TCP or UDP destination port (ipv4 only) .RE .PP \fIipproto_udp\fR .RS 4 Constant used to signify that the packet protocol is UDP .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIiphdr\fR .RS 4 Address of IP header .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.ip.local_in.3stap000066400000000000000000000066531305163227500306300ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.ip.local_in .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.ip.local_in \- Called on an incoming IP packet addressed to the local computer .SH "SYNOPSIS" .sp .nf netfilter\&.ip\&.local_in .fi .SH "VALUES" .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIiphdr\fR .RS 4 Address of IP header .RE .PP \fIipproto_udp\fR .RS 4 Constant used to signify that the packet protocol is UDP .RE .PP \fIdport\fR .RS 4 TCP or UDP destination port (ipv4 only) .RE .PP \fIack\fR .RS 4 TCP ACK flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIsport\fR .RS 4 TCP or UDP source port (ipv4 only) .RE .PP \fIfin\fR .RS 4 TCP FIN flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIpsh\fR .RS 4 TCP PSH flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIpf\fR .RS 4 Protocol family \-\- either \(lqipv4\(rq or \(lqipv6\(rq .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIrst\fR .RS 4 TCP RST flag (if protocol is TCP; ipv4 only) .RE .PP \fIsyn\fR .RS 4 TCP SYN flag (if protocol is TCP; ipv4 only) .RE .PP \fIipproto_tcp\fR .RS 4 Constant used to signify that the packet protocol is TCP .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIurg\fR .RS 4 TCP URG flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver (ipv4 only) .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.ip.local_out.3stap000066400000000000000000000066161305163227500310300ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.ip.local_out .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.ip.local_out \- Called on an outgoing IP packet .SH "SYNOPSIS" .sp .nf netfilter\&.ip\&.local_out .fi .SH "VALUES" .PP \fIpf\fR .RS 4 Protocol family \-\- either \(lqipv4\(rq or \(lqipv6\(rq .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIpsh\fR .RS 4 TCP PSH flag (if protocol is TCP; ipv4 only) .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIsport\fR .RS 4 TCP or UDP source port (ipv4 only) .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIfin\fR .RS 4 TCP FIN flag (if protocol is TCP; ipv4 only) .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIack\fR .RS 4 TCP ACK flag (if protocol is TCP; ipv4 only) .RE .PP \fIdport\fR .RS 4 TCP or UDP destination port (ipv4 only) .RE .PP \fIiphdr\fR .RS 4 Address of IP header .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIipproto_udp\fR .RS 4 Constant used to signify that the packet protocol is UDP .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver (ipv4 only) .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIurg\fR .RS 4 TCP URG flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIipproto_tcp\fR .RS 4 Constant used to signify that the packet protocol is TCP .RE .PP \fIrst\fR .RS 4 TCP RST flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIsyn\fR .RS 4 TCP SYN flag (if protocol is TCP; ipv4 only) .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.ip.post_routing.3stap000066400000000000000000000066731305163227500316060ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.ip.post_routing .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.ip.post_routing \- Called immediately before an outgoing IP packet leaves the computer .SH "SYNOPSIS" .sp .nf netfilter\&.ip\&.post_routing .fi .SH "VALUES" .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver (ipv4 only) .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fIurg\fR .RS 4 TCP URG flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIrst\fR .RS 4 TCP RST flag (if protocol is TCP; ipv4 only) .RE .PP \fIsyn\fR .RS 4 TCP SYN flag (if protocol is TCP; ipv4 only) .RE .PP \fIipproto_tcp\fR .RS 4 Constant used to signify that the packet protocol is TCP .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIpf\fR .RS 4 Protocol family \-\- either \(lqipv4\(rq or \(lqipv6\(rq .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIpsh\fR .RS 4 TCP PSH flag (if protocol is TCP; ipv4 only) .RE .PP \fIack\fR .RS 4 TCP ACK flag (if protocol is TCP; ipv4 only) .RE .PP \fIsport\fR .RS 4 TCP or UDP source port (ipv4 only) .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .PP \fIfin\fR .RS 4 TCP FIN flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIiphdr\fR .RS 4 Address of IP header .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIipproto_udp\fR .RS 4 Constant used to signify that the packet protocol is UDP .RE .PP \fIdport\fR .RS 4 TCP or UDP destination port (ipv4 only) .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::netfilter.ip.pre_routing.3stap000066400000000000000000000066331305163227500314030ustar00rootroot00000000000000'\" t .\" Title: probe::netfilter.ip.pre_routing .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NETFILTER\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::netfilter.ip.pre_routing \- Called before an IP packet is routed .SH "SYNOPSIS" .sp .nf netfilter\&.ip\&.pre_routing .fi .SH "VALUES" .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIurg\fR .RS 4 TCP URG flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_drop\fR .RS 4 Constant used to signify a \*(Aqdrop\*(Aq verdict .RE .PP \fIindev_name\fR .RS 4 Name of network device packet was received on (if known) .RE .PP \fInf_stolen\fR .RS 4 Constant used to signify a \*(Aqstolen\*(Aq verdict .RE .PP \fIlength\fR .RS 4 The length of the packet buffer contents, in bytes .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fInf_repeat\fR .RS 4 Constant used to signify a \*(Aqrepeat\*(Aq verdict .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver (ipv4 only) .RE .PP \fIsyn\fR .RS 4 TCP SYN flag (if protocol is TCP; ipv4 only) .RE .PP \fIrst\fR .RS 4 TCP RST flag (if protocol is TCP; ipv4 only) .RE .PP \fInf_queue\fR .RS 4 Constant used to signify a \*(Aqqueue\*(Aq verdict .RE .PP \fIipproto_tcp\fR .RS 4 Constant used to signify that the packet protocol is TCP .RE .PP \fIindev\fR .RS 4 Address of net_device representing input device, 0 if unknown .RE .PP \fIpsh\fR .RS 4 TCP PSH flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev_name\fR .RS 4 Name of network device packet will be routed to (if known) .RE .PP \fIpf\fR .RS 4 Protocol family \- either \*(Aqipv4\*(Aq or \*(Aqipv6\*(Aq .RE .PP \fInf_accept\fR .RS 4 Constant used to signify an \*(Aqaccept\*(Aq verdict .RE .PP \fIipproto_udp\fR .RS 4 Constant used to signify that the packet protocol is UDP .RE .PP \fIiphdr\fR .RS 4 Address of IP header .RE .PP \fIdport\fR .RS 4 TCP or UDP destination port (ipv4 only) .RE .PP \fIack\fR .RS 4 TCP ACK flag (if protocol is TCP; ipv4 only) .RE .PP \fIfin\fR .RS 4 TCP FIN flag (if protocol is TCP; ipv4 only) .RE .PP \fIoutdev\fR .RS 4 Address of net_device representing output device, 0 if unknown .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 TCP or UDP source port (ipv4 only) .RE .PP \fInf_stop\fR .RS 4 Constant used to signify a \*(Aqstop\*(Aq verdict .RE .SH SEE ALSO\n .IR tapset::netfilter (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.readpage.3stap000066400000000000000000000040471305163227500275540ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.readpage .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.readpage \- NFS client synchronously reading a page .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.readpage .fi .SH "VALUES" .PP \fIsb_flag\fR .RS 4 super block flags .RE .PP \fIrsize\fR .RS 4 read size (in bytes) .RE .PP \fIsize\fR .RS 4 number of pages to be read in this execution .RE .PP \fIpage_index\fR .RS 4 offset within mapping, can used a page identifier and position identifier in the page frame .RE .PP \fIfile\fR .RS 4 file argument .RE .PP \fIi_size\fR .RS 4 file length in bytes .RE .PP \fI__page\fR .RS 4 the address of page .RE .PP \fIi_flag\fR .RS 4 file flags .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIino\fR .RS 4 inode number .RE .SH "DESCRIPTION" .PP Read the page over, only fires when a previous async read operation failed .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.readpages.3stap000066400000000000000000000035501305163227500277350ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.readpages .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.readpages \- NFS client reading multiple pages .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.readpages .fi .SH "VALUES" .PP \fIrpages\fR .RS 4 read size (in pages) .RE .PP \fIrsize\fR .RS 4 read size (in bytes) .RE .PP \fIsize\fR .RS 4 number of pages attempted to read in this execution .RE .PP \fIfile\fR .RS 4 filp argument .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fInr_pages\fR .RS 4 number of pages attempted to read in this execution .RE .PP \fIino\fR .RS 4 inode number .RE .SH "DESCRIPTION" .PP Fires when in readahead way, read several pages once .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.release_page.3stap000066400000000000000000000034151305163227500304160ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.release_page .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.release_page \- NFS client releasing page .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.release_page .fi .SH "VALUES" .PP \fIsize\fR .RS 4 release pages .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIpage_index\fR .RS 4 offset within mapping, can used a page identifier and position identifier in the page frame .RE .PP \fI__page\fR .RS 4 the address of page .RE .SH "DESCRIPTION" .PP Fires when do a release operation on NFS\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.set_page_dirty.3stap000066400000000000000000000033161305163227500310040ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.set_page_dirty .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.S" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.set_page_dirty \- NFS client marking page as dirty .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.set_page_dirty .fi .SH "VALUES" .PP \fI__page\fR .RS 4 the address of page .RE .PP \fIpage_flag\fR .RS 4 page flags .RE .SH "DESCRIPTION" .PP This probe attaches to the generic __set_page_dirty_nobuffers function\&. Thus, this probe is going to fire on many other file systems in addition to the NFS client\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.write_begin.3stap000066400000000000000000000042211305163227500302740ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.write_begin .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.write_begin \- NFS client begin to write data .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.write_begin .fi .SH "VALUES" .PP \fIoffset\fR .RS 4 start address of this write operation .RE .PP \fIsize\fR .RS 4 write bytes .RE .PP \fI__page\fR .RS 4 the address of page .RE .PP \fIpage_index\fR .RS 4 offset within mapping, can used a page identifier and position identifier in the page frame .RE .PP \fIto\fR .RS 4 end address of this write operation .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIdev\fR .RS 4 device identifier .RE .SH "DESCRIPTION" .PP Occurs when write operation occurs on nfs\&. It prepare a page for writing, look for a request corresponding to the page\&. If there is one, and it belongs to another file, it flush it out before it tries to copy anything into the page\&. Also do the same if it finds a request from an existing dropped page .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.write_end.3stap000066400000000000000000000041351305163227500277620ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.write_end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.write_end \- NFS client complete writing data .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.write_end .fi .SH "VALUES" .PP \fIoffset\fR .RS 4 start address of this write operation .RE .PP \fIsize\fR .RS 4 write bytes .RE .PP \fIsb_flag\fR .RS 4 super block flags .RE .PP \fIto\fR .RS 4 end address of this write operation .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIi_flag\fR .RS 4 file flags .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fI__page\fR .RS 4 the address of page .RE .PP \fIi_size\fR .RS 4 file length in bytes .RE .PP \fIpage_index\fR .RS 4 offset within mapping, can used a page identifier and position identifier in the page frame .RE .SH "DESCRIPTION" .PP Fires when do a write operation on nfs, often after prepare_write .PP Update and possibly write a cached page of an NFS file\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.writepage.3stap000066400000000000000000000044321305163227500277710ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.writepage .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.writepage \- NFS client writing a mapped page to the NFS server .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.writepage .fi .SH "VALUES" .PP \fIfor_reclaim\fR .RS 4 a flag of writeback_control, indicates if it\*(Aqs invoked from the page allocator .RE .PP \fIpage_index\fR .RS 4 offset within mapping, can used a page identifier and position identifier in the page frame .RE .PP \fI__page\fR .RS 4 the address of page .RE .PP \fIi_size\fR .RS 4 file length in bytes .RE .PP \fIfor_kupdate\fR .RS 4 a flag of writeback_control, indicates if it\*(Aqs a kupdate writeback .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIi_flag\fR .RS 4 file flags .RE .PP \fIwsize\fR .RS 4 write size .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIsb_flag\fR .RS 4 super block flags .RE .PP \fIsize\fR .RS 4 number of pages to be written in this execution .RE .PP \fIi_state\fR .RS 4 inode state flags .RE .SH "DESCRIPTION" .PP The priority of wb is decided by the flags \fIfor_reclaim\fR and \fIfor_kupdate\fR\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.aop.writepages.3stap000066400000000000000000000041341305163227500301530ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.aop.writepages .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.AOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.aop.writepages \- NFS client writing several dirty pages to the NFS server .SH "SYNOPSIS" .sp .nf nfs\&.aop\&.writepages .fi .SH "VALUES" .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIwpages\fR .RS 4 write size (in pages) .RE .PP \fIwsize\fR .RS 4 write size .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIfor_reclaim\fR .RS 4 a flag of writeback_control, indicates if it\*(Aqs invoked from the page allocator .RE .PP \fInr_to_write\fR .RS 4 number of pages attempted to be written in this execution .RE .PP \fIfor_kupdate\fR .RS 4 a flag of writeback_control, indicates if it\*(Aqs a kupdate writeback .RE .PP \fIsize\fR .RS 4 number of pages attempted to be written in this execution .RE .SH "DESCRIPTION" .PP The priority of wb is decided by the flags \fIfor_reclaim\fR and \fIfor_kupdate\fR\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.aio_read.3stap000066400000000000000000000040401305163227500275450ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.aio_read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.A" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.aio_read \- NFS client aio_read file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.aio_read .fi .SH "VALUES" .PP \fIcache_valid\fR .RS 4 cache related bit mask flag .RE .PP \fIattrtimeo\fR .RS 4 how long the cached information is assumed to be valid\&. We need to revalidate the cached attrs for this inode if jiffies \- read_cache_jiffies > attrtimeo\&. .RE .PP \fIbuf\fR .RS 4 the address of buf in user space .RE .PP \fIcache_time\fR .RS 4 when we started read\-caching this inode .RE .PP \fIparent_name\fR .RS 4 parent dir name .RE .PP \fIpos\fR .RS 4 current position of file .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIfile_name\fR .RS 4 file name .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.aio_write.3stap000066400000000000000000000033341305163227500277710ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.aio_write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.A" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.aio_write \- NFS client aio_write file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.aio_write .fi .SH "VALUES" .PP \fIino\fR .RS 4 inode number .RE .PP \fIparent_name\fR .RS 4 parent dir name .RE .PP \fIpos\fR .RS 4 offset of the file .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIfile_name\fR .RS 4 file name .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIbuf\fR .RS 4 the address of buf in user space .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.check_flags.3stap000066400000000000000000000027241305163227500302420ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.check_flags .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.C" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.check_flags \- NFS client checking flag operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.check_flags .fi .SH "VALUES" .PP \fIflag\fR .RS 4 file flag .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.flush.3stap000066400000000000000000000030761305163227500271330ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.flush .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.F" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.flush \- NFS client flush file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.flush .fi .SH "VALUES" .PP \fIndirty\fR .RS 4 number of dirty page .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fImode\fR .RS 4 file mode .RE .PP \fIino\fR .RS 4 inode number .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.fsync.3stap000066400000000000000000000030271305163227500271300ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.fsync .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.F" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.fsync \- NFS client fsync operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.fsync .fi .SH "VALUES" .PP \fIndirty\fR .RS 4 number of dirty pages .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIdev\fR .RS 4 device identifier .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.llseek.3stap000066400000000000000000000033011305163227500272600ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.llseek .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.L" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.llseek \- NFS client llseek operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.llseek .fi .SH "VALUES" .PP \fIwhence_str\fR .RS 4 symbolic string representation of the position to seek from .RE .PP \fIoffset\fR .RS 4 the offset of the file will be repositioned .RE .PP \fIwhence\fR .RS 4 the position to seek from .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIdev\fR .RS 4 device identifier .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.lock.3stap000066400000000000000000000034111305163227500267330ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.lock .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.L" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.lock \- NFS client file lock operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.lock .fi .SH "VALUES" .PP \fIfl_flag\fR .RS 4 lock flags .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIi_mode\fR .RS 4 file type and access rights .RE .PP \fIfl_type\fR .RS 4 lock type .RE .PP \fIfl_start\fR .RS 4 starting offset of locked region .RE .PP \fIfl_end\fR .RS 4 ending offset of locked region .RE .PP \fIcmd\fR .RS 4 cmd arguments .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.mmap.3stap000066400000000000000000000041331305163227500267370ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.mmap .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.M" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.mmap \- NFS client mmap operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.mmap .fi .SH "VALUES" .PP \fIfile_name\fR .RS 4 file name .RE .PP \fIvm_end\fR .RS 4 the first byte after end address within vm_mm .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIparent_name\fR .RS 4 parent dir name .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIvm_flag\fR .RS 4 vm flags .RE .PP \fIcache_time\fR .RS 4 when we started read\-caching this inode .RE .PP \fIbuf\fR .RS 4 the address of buf in user space .RE .PP \fIvm_start\fR .RS 4 start address within vm_mm .RE .PP \fIattrtimeo\fR .RS 4 how long the cached information is assumed to be valid\&. We need to revalidate the cached attrs for this inode if jiffies \- read_cache_jiffies > attrtimeo\&. .RE .PP \fIcache_valid\fR .RS 4 cache related bit mask flag .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.open.3stap000066400000000000000000000031421305163227500267450ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.open .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.O" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.open \- NFS client file open operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.open .fi .SH "VALUES" .PP \fIi_size\fR .RS 4 file length in bytes .RE .PP \fIfile_name\fR .RS 4 file name .RE .PP \fIflag\fR .RS 4 file flag .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIino\fR .RS 4 inode number .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.read.3stap000066400000000000000000000031541305163227500267220ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.read \- NFS client read operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.read .fi .SH "VALUES" .PP \fIdevname\fR .RS 4 block device name .RE .SH "DESCRIPTION" .PP SystemTap uses the vfs\&.do_sync_read probe to implement this probe and as a result will get operations other than the NFS client read operations\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.read_iter.3stap000066400000000000000000000037531305163227500277520ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.read_iter .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.read_iter \- NFS client read_iter file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.read_iter .fi .SH "VALUES" .PP \fIcache_time\fR .RS 4 when we started read\-caching this inode .RE .PP \fIattrtimeo\fR .RS 4 how long the cached information is assumed to be valid\&. We need to revalidate the cached attrs for this inode if jiffies \- read_cache_jiffies > attrtimeo\&. .RE .PP \fIcache_valid\fR .RS 4 cache related bit mask flag .RE .PP \fIfile_name\fR .RS 4 file name .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIparent_name\fR .RS 4 parent dir name .RE .PP \fIpos\fR .RS 4 current position of file .RE .PP \fIdev\fR .RS 4 device identifier .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.release.3stap000066400000000000000000000030261305163227500274250ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.release .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.R" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.release \- NFS client release page operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.release .fi .SH "VALUES" .PP \fIino\fR .RS 4 inode number .RE .PP \fImode\fR .RS 4 file mode .RE .PP \fIdev\fR .RS 4 device identifier .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.sendfile.3stap000066400000000000000000000036141305163227500276010ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.sendfile .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.S" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.sendfile \- NFS client send file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.sendfile .fi .SH "VALUES" .PP \fIattrtimeo\fR .RS 4 how long the cached information is assumed to be valid\&. We need to revalidate the cached attrs for this inode if jiffies \- read_cache_jiffies > attrtimeo\&. .RE .PP \fIcache_valid\fR .RS 4 cache related bit mask flag .RE .PP \fIcache_time\fR .RS 4 when we started read\-caching this inode .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIppos\fR .RS 4 current position of file .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.write.3stap000066400000000000000000000031621305163227500271400ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.write \- NFS client write operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.write .fi .SH "VALUES" .PP \fIdevname\fR .RS 4 block device name .RE .SH "DESCRIPTION" .PP SystemTap uses the vfs\&.do_sync_write probe to implement this probe and as a result will get operations other than the NFS client write operations\&. .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.fop.write_iter.3stap000066400000000000000000000032471305163227500301670ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.fop.write_iter .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.FOP\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.fop.write_iter \- NFS client write_iter file operation .SH "SYNOPSIS" .sp .nf nfs\&.fop\&.write_iter .fi .SH "VALUES" .PP \fIdev\fR .RS 4 device identifier .RE .PP \fIparent_name\fR .RS 4 parent dir name .RE .PP \fIpos\fR .RS 4 offset of the file .RE .PP \fIino\fR .RS 4 inode number .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIfile_name\fR .RS 4 file name .RE .SH SEE ALSO\n .IR tapset::nfs (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.commit.3stap000066400000000000000000000043631305163227500274610ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.commit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.commit \- NFS client committing data on server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.commit .fi .SH "VALUES" .PP \fIsize\fR .RS 4 read bytes in this execution .RE .PP \fIbitmask1\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIoffset\fR .RS 4 the file offset .RE .PP \fIbitmask0\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .SH "DESCRIPTION" .PP All the nfs\&.proc\&.commit kernel functions were removed in kernel commit 200baa in December 2006, so these probes do not exist on Linux 2\&.6\&.21 and newer kernels\&. .PP Fires when client writes the buffered data to disk\&. The buffered data is asynchronously written by client earlier\&. The commit function works in sync way\&. This probe point does not exist in NFSv2\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.commit_done.3stap000066400000000000000000000037221305163227500304640ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.commit_done .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.commit_done \- NFS client response to a commit RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.commit_done .fi .SH "VALUES" .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIcount\fR .RS 4 number of bytes committed .RE .PP \fItimestamp\fR .RS 4 V4 timestamp, which is used for lease renewal .RE .PP \fIstatus\fR .RS 4 result of last operation .RE .PP \fIvalid\fR .RS 4 fattr\->valid, indicates which fields are valid .RE .SH "DESCRIPTION" .PP Fires when a reply to a commit RPC task is received or some commit operation error occur (timeout or socket shutdown)\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.commit_setup.3stap000066400000000000000000000041021305163227500306700ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.commit_setup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.commit_setup \- NFS client setting up a commit RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.commit_setup .fi .SH "VALUES" .PP \fIsize\fR .RS 4 bytes in this commit .RE .PP \fIcount\fR .RS 4 bytes in this commit .RE .PP \fIbitmask1\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIoffset\fR .RS 4 the file offset .RE .PP \fIbitmask0\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .SH "DESCRIPTION" .PP The commit_setup function is used to setup a commit RPC task\&. Is is not doing the actual commit operation\&. It does not exist in NFSv2\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.create.3stap000066400000000000000000000034551305163227500274350ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.create \- NFS client creating file on server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.create .fi .SH "VALUES" .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIversion\fR .RS 4 NFS version (the function is used for all NFS version) .RE .PP \fIfilelen\fR .RS 4 length of file name .RE .PP \fIflag\fR .RS 4 indicates create mode (only for NFSv3 and NFSv4) .RE .PP \fIfh\fR .RS 4 file handle of parent dir .RE .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.handle_exception.3stap000066400000000000000000000031321305163227500314730ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.handle_exception .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.handle_exception \- NFS client handling an NFSv4 exception .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.handle_exception .fi .SH "VALUES" .PP \fIerrorcode\fR .RS 4 indicates the type of error .RE .SH "DESCRIPTION" .PP This is the error handling routine for processes for NFSv4\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.lookup.3stap000066400000000000000000000036211305163227500274760ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.lookup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.lookup \- NFS client opens/searches a file on server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.lookup .fi .SH "VALUES" .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIfilename\fR .RS 4 the name of file which client opens/searches on server .RE .PP \fIname_len\fR .RS 4 the length of file name .RE .PP \fIbitmask1\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIbitmask0\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.open.3stap000066400000000000000000000034331305163227500271270ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.open .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.open \- NFS client allocates file read/write context information .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.open .fi .SH "VALUES" .PP \fImode\fR .RS 4 file mode .RE .PP \fIflag\fR .RS 4 file flag .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIversion\fR .RS 4 NFS version (the function is used for all NFS version) .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .SH "DESCRIPTION" .PP Allocate file read/write context information .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.read.3stap000066400000000000000000000036471305163227500271100ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.read \- NFS client synchronously reads file from server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.read .fi .SH "VALUES" .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIoffset\fR .RS 4 the file offset .RE .PP \fIflags\fR .RS 4 used to set task\->tk_flags in rpc_init_task function .RE .PP \fIcount\fR .RS 4 read bytes in this execution .RE .SH "DESCRIPTION" .PP All the nfs\&.proc\&.read kernel functions were removed in kernel commit 8e0969 in December 2006, so these probes do not exist on Linux 2\&.6\&.21 and newer kernels\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.read_done.3stap000066400000000000000000000035561305163227500301140ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.read_done .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.read_done \- NFS client response to a read RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.read_done .fi .SH "VALUES" .PP \fIstatus\fR .RS 4 result of last operation .RE .PP \fItimestamp\fR .RS 4 V4 timestamp, which is used for lease renewal .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIcount\fR .RS 4 number of bytes read .RE .SH "DESCRIPTION" .PP Fires when a reply to a read RPC task is received or some read error occurs (timeout or socket shutdown)\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.read_setup.3stap000066400000000000000000000035261305163227500303240ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.read_setup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.read_setup \- NFS client setting up a read RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.read_setup .fi .SH "VALUES" .PP \fIoffset\fR .RS 4 the file offset .RE .PP \fIsize\fR .RS 4 read bytes in this execution .RE .PP \fIcount\fR .RS 4 read bytes in this execution .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIversion\fR .RS 4 NFS version .RE .SH "DESCRIPTION" .PP The read_setup function is used to setup a read RPC task\&. It is not doing the actual read operation\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.release.3stap000066400000000000000000000034421305163227500276060ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.release .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.release \- NFS client releases file read/write context information .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.release .fi .SH "VALUES" .PP \fIflag\fR .RS 4 file flag .RE .PP \fImode\fR .RS 4 file mode .RE .PP \fIversion\fR .RS 4 NFS version (the function is used for all NFS version) .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .SH "DESCRIPTION" .PP Release file read/write context information .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.remove.3stap000066400000000000000000000033441305163227500274640ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.remove .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.remove \- NFS client removes a file on server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.remove .fi .SH "VALUES" .PP \fIfh\fR .RS 4 file handle of parent dir .RE .PP \fIfilelen\fR .RS 4 length of file name .RE .PP \fIversion\fR .RS 4 NFS version (the function is used for all NFS version) .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.rename.3stap000066400000000000000000000036241305163227500274370ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.rename .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.rename \- NFS client renames a file on server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.rename .fi .SH "VALUES" .PP \fIversion\fR .RS 4 NFS version (the function is used for all NFS version) .RE .PP \fInew_fh\fR .RS 4 file handle of new parent dir .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIold_fh\fR .RS 4 file handle of old parent dir .RE .PP \fIold_name\fR .RS 4 old file name .RE .PP \fIold_filelen\fR .RS 4 length of old file name .RE .PP \fInew_name\fR .RS 4 new file name .RE .PP \fInew_filelen\fR .RS 4 length of new file name .RE .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.rename_done.3stap000066400000000000000000000036751305163227500304520ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.rename_done .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.rename_done \- NFS client response to a rename RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.rename_done .fi .SH "VALUES" .PP \fIold_fh\fR .RS 4 file handle of old parent dir .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fInew_fh\fR .RS 4 file handle of new parent dir .RE .PP \fIversion\fR .RS 4 NFS version .RE .PP \fItimestamp\fR .RS 4 V4 timestamp, which is used for lease renewal .RE .PP \fIstatus\fR .RS 4 result of last operation .RE .SH "DESCRIPTION" .PP Fires when a reply to a rename RPC task is received or some rename error occurs (timeout or socket shutdown)\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.rename_setup.3stap000066400000000000000000000033751305163227500306620ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.rename_setup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.rename_setup \- NFS client setting up a rename RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.rename_setup .fi .SH "VALUES" .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIfh\fR .RS 4 file handle of parent dir .RE .SH "DESCRIPTION" .PP The rename_setup function is used to setup a rename RPC task\&. Is is not doing the actual rename operation\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.write.3stap000066400000000000000000000041711305163227500273200ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.write \- NFS client synchronously writes file to server .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.write .fi .SH "VALUES" .PP \fIoffset\fR .RS 4 the file offset .RE .PP \fIbitmask0\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIsize\fR .RS 4 read bytes in this execution .RE .PP \fIflags\fR .RS 4 used to set task\->tk_flags in rpc_init_task function .RE .PP \fIbitmask1\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .SH "DESCRIPTION" .PP All the nfs\&.proc\&.write kernel functions were removed in kernel commit 200baa in December 2006, so these probes do not exist on Linux 2\&.6\&.21 and newer kernels\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.write_done.3stap000066400000000000000000000037011305163227500303230ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.write_done .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.write_done \- NFS client response to a write RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.write_done .fi .SH "VALUES" .PP \fItimestamp\fR .RS 4 V4 timestamp, which is used for lease renewal .RE .PP \fIstatus\fR .RS 4 result of last operation .RE .PP \fIvalid\fR .RS 4 fattr\->valid, indicates which fields are valid .RE .PP \fIcount\fR .RS 4 number of bytes written .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIversion\fR .RS 4 NFS version .RE .SH "DESCRIPTION" .PP Fires when a reply to a write RPC task is received or some write error occurs (timeout or socket shutdown)\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfs.proc.write_setup.3stap000066400000000000000000000043511305163227500305400ustar00rootroot00000000000000'\" t .\" Title: probe::nfs.proc.write_setup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFS\&.PROC\&." "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfs.proc.write_setup \- NFS client setting up a write RPC task .SH "SYNOPSIS" .sp .nf nfs\&.proc\&.write_setup .fi .SH "VALUES" .PP \fIversion\fR .RS 4 NFS version .RE .PP \fIserver_ip\fR .RS 4 IP address of server .RE .PP \fIprot\fR .RS 4 transfer protocol .RE .PP \fIbitmask1\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIcount\fR .RS 4 bytes written in this execution .RE .PP \fIsize\fR .RS 4 bytes written in this execution .RE .PP \fIhow\fR .RS 4 used to set args\&.stable\&. The stable value could be: NFS_UNSTABLE,NFS_DATA_SYNC,NFS_FILE_SYNC (in nfs\&.proc3\&.write_setup and nfs\&.proc4\&.write_setup) .RE .PP \fIbitmask0\fR .RS 4 V4 bitmask representing the set of attributes supported on this filesystem .RE .PP \fIoffset\fR .RS 4 the file offset .RE .SH "DESCRIPTION" .PP The write_setup function is used to setup a write RPC task\&. It is not doing the actual write operation\&. .SH SEE ALSO\n .IR tapset::nfs_proc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.close.3stap000066400000000000000000000030251305163227500264720ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.close .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.CLOSE" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.close \- NFS server closing a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.close .fi .SH "VALUES" .PP \fIfilename\fR .RS 4 file name .RE .SH "DESCRIPTION" .PP This probe point does not exist in kernels starting with 4\&.2\&. .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.commit.3stap000066400000000000000000000034011305163227500266530ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.commit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.COMMIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.commit \- NFS server committing all pending writes to stable storage .SH "SYNOPSIS" .sp .nf nfsd\&.commit .fi .SH "VALUES" .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIoffset\fR .RS 4 the offset of file .RE .PP \fIflag\fR .RS 4 indicates whether this execution is a sync operation .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIsize\fR .RS 4 read bytes .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.create.3stap000066400000000000000000000036371305163227500266410ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.CREATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.create \- NFS server creating a file(regular,dir,device,fifo) for client .SH "SYNOPSIS" .sp .nf nfsd\&.create .fi .SH "VALUES" .PP \fIfilelen\fR .RS 4 the length of file name .RE .PP \fItype\fR .RS 4 file type(regular,dir,device,fifo \&.\&.\&.) .RE .PP \fIiap_valid\fR .RS 4 Attribute flags .RE .PP \fIiap_mode\fR .RS 4 file access mode .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .SH "DESCRIPTION" .PP Sometimes nfsd will call nfsd_create_v3 instead of this this probe point\&. .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.createv3.3stap000066400000000000000000000043571305163227500271120ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.createv3 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.CREATE" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.createv3 \- NFS server creating a regular file or set file attributes for client .SH "SYNOPSIS" .sp .nf nfsd\&.createv3 .fi .SH "VALUES" .PP \fIfilelen\fR .RS 4 the length of file name .RE .PP \fIiap_valid\fR .RS 4 Attribute flags .RE .PP \fIiap_mode\fR .RS 4 file access mode .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIverifier\fR .RS 4 file attributes (atime,mtime,mode)\&. It\*(Aqs used to reset file attributes for CREATE_EXCLUSIVE .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fItruncp\fR .RS 4 trunp arguments, indicates if the file shouldbe truncate .RE .PP \fIcreatemode\fR .RS 4 create mode \&.The possible values could be: NFS3_CREATE_EXCLUSIVE, NFS3_CREATE_UNCHECKED, or NFS3_CREATE_GUARDED .RE .SH "DESCRIPTION" .PP This probepoints is only called by nfsd3_proc_create and nfsd4_open when op_claim_type is NFS4_OPEN_CLAIM_NULL\&. .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.dispatch.3stap000066400000000000000000000032551305163227500271710ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.dispatch .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.DISPAT" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.dispatch \- NFS server receives an operation from client .SH "SYNOPSIS" .sp .nf nfsd\&.dispatch .fi .SH "VALUES" .PP \fIproc\fR .RS 4 procedure number .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIxid\fR .RS 4 transmission id .RE .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIprog\fR .RS 4 program number .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.lookup.3stap000066400000000000000000000032441305163227500267010ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.lookup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.LOOKUP" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.lookup \- NFS server opening or searching file for a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.lookup .fi .SH "VALUES" .PP \fIfilename\fR .RS 4 file name .RE .PP \fIfilelen\fR .RS 4 the length of file name .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle of parent dir(the first part is the length of the file handle) .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.open.3stap000066400000000000000000000032651305163227500263340ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.open .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.OPEN" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.open \- NFS server opening a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.open .fi .SH "VALUES" .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIaccess\fR .RS 4 indicates the type of open (read/write/commit/readdir\&.\&.\&.) .RE .PP \fItype\fR .RS 4 type of file (regular file or dir) .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.commit.3stap000066400000000000000000000035621305163227500276250ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.commit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.commit \- NFS server performing a commit operation for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.commit .fi .SH "VALUES" .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIoffset\fR .RS 4 the offset of file .RE .PP \fIsize\fR .RS 4 read bytes .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.create.3stap000066400000000000000000000035041305163227500275740ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.create \- NFS server creating a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.create .fi .SH "VALUES" .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIfilelen\fR .RS 4 length of file name .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.lookup.3stap000066400000000000000000000035461305163227500276500ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.lookup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.lookup \- NFS server opening or searching for a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.lookup .fi .SH "VALUES" .PP \fIfilename\fR .RS 4 file name .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .PP \fIfilelen\fR .RS 4 the length of file name .RE .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle of parent dir (the first part is the length of the file handle) .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.read.3stap000066400000000000000000000037461305163227500272540ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.read \- NFS server reading file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.read .fi .SH "VALUES" .PP \fIvec\fR .RS 4 struct kvec, includes buf address in kernel address and length of each buffer .RE .PP \fIsize\fR .RS 4 read bytes .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIvlen\fR .RS 4 read blocks .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .PP \fIoffset\fR .RS 4 the offset of file .RE .PP \fIversion\fR .RS 4 nfs version .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.remove.3stap000066400000000000000000000035041305163227500276260ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.remove .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.remove \- NFS server removing a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.remove .fi .SH "VALUES" .PP \fIproto\fR .RS 4 transfer protocol .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIfilelen\fR .RS 4 length of file name .RE .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.rename.3stap000066400000000000000000000035321305163227500276010ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.rename .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.rename \- NFS Server renaming a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.rename .fi .SH "VALUES" .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIfilename\fR .RS 4 old file name .RE .PP \fItfh\fR .RS 4 file handler of new path .RE .PP \fItlen\fR .RS 4 length of new file name .RE .PP \fItname\fR .RS 4 new file name .RE .PP \fIflen\fR .RS 4 length of old file name .RE .PP \fIfh\fR .RS 4 file handler of old path .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.proc.write.3stap000066400000000000000000000040321305163227500274600ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.proc.write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.PROC\&" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.proc.write \- NFS server writing data to file for client .SH "SYNOPSIS" .sp .nf nfsd\&.proc\&.write .fi .SH "VALUES" .PP \fIgid\fR .RS 4 requester\*(Aqs group id .RE .PP \fIvlen\fR .RS 4 read blocks .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIversion\fR .RS 4 nfs version .RE .PP \fIoffset\fR .RS 4 the offset of file .RE .PP \fIvec\fR .RS 4 struct kvec, includes buf address in kernel address and length of each buffer .RE .PP \fIproto\fR .RS 4 transfer protocol .RE .PP \fIstable\fR .RS 4 argp\->stable .RE .PP \fIuid\fR .RS 4 requester\*(Aqs user id .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIsize\fR .RS 4 read bytes .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.read.3stap000066400000000000000000000035731305163227500263100ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.read \- NFS server reading data from a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.read .fi .SH "VALUES" .PP \fIoffset\fR .RS 4 the offset of file .RE .PP \fIfile\fR .RS 4 argument file, indicates if the file has been opened\&. .RE .PP \fIvlen\fR .RS 4 read blocks .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIsize\fR .RS 4 read bytes .RE .PP \fIvec\fR .RS 4 struct kvec, includes buf address in kernel address and length of each buffer .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.rename.3stap000066400000000000000000000033501305163227500266350ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.rename .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.RENAME" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.rename \- NFS server renaming a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.rename .fi .SH "VALUES" .PP \fItfh\fR .RS 4 file handler of new path .RE .PP \fItlen\fR .RS 4 length of new file name .RE .PP \fIfilename\fR .RS 4 old file name .RE .PP \fIflen\fR .RS 4 length of old file name .RE .PP \fItname\fR .RS 4 new file name .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handler of old path .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.unlink.3stap000066400000000000000000000033021305163227500266630ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.unlink .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.UNLINK" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.unlink \- NFS server removing a file or a directory for client .SH "SYNOPSIS" .sp .nf nfsd\&.unlink .fi .SH "VALUES" .PP \fIfilelen\fR .RS 4 the length of file name .RE .PP \fItype\fR .RS 4 file type (file or dir) .RE .PP \fIfilename\fR .RS 4 file name .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::nfsd.write.3stap000066400000000000000000000035751305163227500265310ustar00rootroot00000000000000'\" t .\" Title: probe::nfsd.write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Network File Storage Tapsets .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::NFSD\&.WRITE" "3stap" "March 2016" "SystemTap Tapset Reference" "Network File Storage Tapsets" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::nfsd.write \- NFS server writing data to a file for client .SH "SYNOPSIS" .sp .nf nfsd\&.write .fi .SH "VALUES" .PP \fIvec\fR .RS 4 struct kvec, includes buf address in kernel address and length of each buffer .RE .PP \fIcount\fR .RS 4 read bytes .RE .PP \fIsize\fR .RS 4 read bytes .RE .PP \fIclient_ip\fR .RS 4 the ip address of client .RE .PP \fIvlen\fR .RS 4 read blocks .RE .PP \fIfh\fR .RS 4 file handle (the first part is the length of the file handle) .RE .PP \fIfile\fR .RS 4 argument file, indicates if the file has been opened\&. .RE .PP \fIoffset\fR .RS 4 the offset of file .RE .SH SEE ALSO\n .IR tapset::nfsd (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.balance.3stap000066400000000000000000000027761305163227500300120ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.balance .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.B" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.balance \- A cpu attempting to find more work\&. .SH "SYNOPSIS" .sp .nf scheduler\&.balance .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .SH "CONTEXT" .PP The cpu looking for more work\&. .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.cpu_off.3stap000066400000000000000000000033301305163227500300310ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.cpu_off .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.C" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.cpu_off \- Process is about to stop running on a cpu .SH "SYNOPSIS" .sp .nf scheduler\&.cpu_off .fi .SH "VALUES" .PP \fItask_prev\fR .RS 4 the process leaving the cpu (same as current) .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fItask_next\fR .RS 4 the process replacing current .RE .PP \fIidle\fR .RS 4 boolean indicating whether current is the idle process .RE .SH "CONTEXT" .PP The process leaving the cpu\&. .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.cpu_on.3stap000066400000000000000000000032311305163227500276730ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.cpu_on .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.C" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.cpu_on \- Process is beginning execution on a cpu .SH "SYNOPSIS" .sp .nf scheduler\&.cpu_on .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fItask_prev\fR .RS 4 the process that was previously running on this cpu .RE .PP \fIidle\fR .RS 4 \- boolean indicating whether current is the idle process .RE .SH "CONTEXT" .PP The resuming process\&. .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.ctxswitch.3stap000066400000000000000000000042751305163227500304410ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.ctxswitch .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.C" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.ctxswitch \- A context switch is occurring\&. .SH "SYNOPSIS" .sp .nf scheduler\&.ctxswitch .fi .SH "VALUES" .PP \fIprevtsk_state\fR .RS 4 the state of the process to be switched out .RE .PP \fIprev_tid\fR .RS 4 The TID of the process to be switched out .RE .PP \fInext_task_name\fR .RS 4 The name of the process to be switched in .RE .PP \fInext_pid\fR .RS 4 The PID of the process to be switched in .RE .PP \fInexttsk_state\fR .RS 4 the state of the process to be switched in .RE .PP \fIprev_pid\fR .RS 4 The PID of the process to be switched out .RE .PP \fIprev_priority\fR .RS 4 The priority of the process to be switched out .RE .PP \fIprev_task_name\fR .RS 4 The name of the process to be switched out .RE .PP \fInext_tid\fR .RS 4 The TID of the process to be switched in .RE .PP \fInext_priority\fR .RS 4 The priority of the process to be switched in .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.kthread_stop.3stap000066400000000000000000000030611305163227500311000ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.kthread_stop .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.K" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.kthread_stop \- A thread created by kthread_create is being stopped .SH "SYNOPSIS" .sp .nf scheduler\&.kthread_stop .fi .SH "VALUES" .PP \fIthread_priority\fR .RS 4 priority of the thread .RE .PP \fIthread_pid\fR .RS 4 PID of the thread being stopped .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.kthread_stop.return.3stap000066400000000000000000000031021305163227500324120ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.kthread_stop.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.K" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.kthread_stop.return \- A kthread is stopped and gets the return value .SH "SYNOPSIS" .sp .nf scheduler\&.kthread_stop\&.return .fi .SH "VALUES" .PP \fIreturn_value\fR .RS 4 return value after stopping the thread .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.migrate.3stap000066400000000000000000000033211305163227500300400ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.migrate .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.M" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.migrate \- Task migrating across cpus .SH "SYNOPSIS" .sp .nf scheduler\&.migrate .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIpid\fR .RS 4 PID of the task being migrated .RE .PP \fItask\fR .RS 4 the process that is being migrated .RE .PP \fIcpu_from\fR .RS 4 the original cpu .RE .PP \fIpriority\fR .RS 4 priority of the task being migrated .RE .PP \fIcpu_to\fR .RS 4 the destination cpu .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.process_exit.3stap000066400000000000000000000030641305163227500311230ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.process_exit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.P" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.process_exit \- Process exiting .SH "SYNOPSIS" .sp .nf scheduler\&.process_exit .fi .SH "VALUES" .PP \fIpriority\fR .RS 4 priority of the process exiting .RE .PP \fIpid\fR .RS 4 PID of the process exiting .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.process_fork.3stap000066400000000000000000000030631305163227500311120ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.process_fork .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.P" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.process_fork \- Process forked .SH "SYNOPSIS" .sp .nf scheduler\&.process_fork .fi .SH "VALUES" .PP \fIparent_pid\fR .RS 4 PID of the parent process .RE .PP \fIchild_pid\fR .RS 4 PID of the child process .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.process_free.3stap000066400000000000000000000031411305163227500310670ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.process_free .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.P" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.process_free \- Scheduler freeing a data structure for a process .SH "SYNOPSIS" .sp .nf scheduler\&.process_free .fi .SH "VALUES" .PP \fIpriority\fR .RS 4 priority of the process getting freed .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIpid\fR .RS 4 PID of the process getting freed .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.process_wait.3stap000066400000000000000000000030371305163227500311160ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.process_wait .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.P" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.process_wait \- Scheduler starting to wait on a process .SH "SYNOPSIS" .sp .nf scheduler\&.process_wait .fi .SH "VALUES" .PP \fIpid\fR .RS 4 PID of the process scheduler is waiting on .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.signal_send.3stap000066400000000000000000000030541305163227500307010ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.signal_send .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.S" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.signal_send \- Sending a signal .SH "SYNOPSIS" .sp .nf scheduler\&.signal_send .fi .SH "VALUES" .PP \fIpid\fR .RS 4 pid of the process sending signal .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIsignal_number\fR .RS 4 signal number .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.tick.3stap000066400000000000000000000031641305163227500273470ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.tick .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.T" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.tick \- Schedulers internal tick, a processes timeslice accounting is updated .SH "SYNOPSIS" .sp .nf scheduler\&.tick .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIidle\fR .RS 4 boolean indicating whether current is the idle process .RE .SH "CONTEXT" .PP The process whose accounting will be updated\&. .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.wait_task.3stap000066400000000000000000000031351305163227500304010ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.wait_task .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.wait_task \- Waiting on a task to unschedule (become inactive) .SH "SYNOPSIS" .sp .nf scheduler\&.wait_task .fi .SH "VALUES" .PP \fItask_priority\fR .RS 4 priority of the task .RE .PP \fItask_pid\fR .RS 4 PID of the task the scheduler is waiting on .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.wakeup.3stap000066400000000000000000000033551305163227500277130ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.wakeup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.wakeup \- Task is woken up .SH "SYNOPSIS" .sp .nf scheduler\&.wakeup .fi .SH "VALUES" .PP \fItask_priority\fR .RS 4 priority of the task being woken up .RE .PP \fItask_cpu\fR .RS 4 cpu of the task being woken up .RE .PP \fItask_pid\fR .RS 4 PID of the task being woken up .RE .PP \fItask_state\fR .RS 4 state of the task being woken up .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fItask_tid\fR .RS 4 tid of the task being woken up .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scheduler.wakeup_new.3stap000066400000000000000000000033771305163227500305700ustar00rootroot00000000000000'\" t .\" Title: probe::scheduler.wakeup_new .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Scheduler Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCHEDULER\&.W" "3stap" "March 2016" "SystemTap Tapset Reference" "Scheduler Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scheduler.wakeup_new \- Newly created task is woken up for the first time .SH "SYNOPSIS" .sp .nf scheduler\&.wakeup_new .fi .SH "VALUES" .PP \fItask_priority\fR .RS 4 priority of the new task .RE .PP \fItask_cpu\fR .RS 4 cpu of the task woken up .RE .PP \fItask_pid\fR .RS 4 PID of the new task woken up .RE .PP \fItask_state\fR .RS 4 state of the task woken up .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fItask_tid\fR .RS 4 TID of the new task woken up .RE .SH SEE ALSO\n .IR tapset::scheduler (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.iocompleted.3stap000066400000000000000000000040421305163227500277000ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.iocompleted .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.IOCOMP" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.iocompleted \- SCSI mid\-layer running the completion processing for block device I/O requests .SH "SYNOPSIS" .sp .nf scsi\&.iocompleted .fi .SH "VALUES" .PP \fIreq_addr\fR .RS 4 The current struct request pointer, as a number .RE .PP \fIgoodbytes\fR .RS 4 The bytes completed .RE .PP \fIdevice_state_str\fR .RS 4 The current state of the device, as a string .RE .PP \fIhost_no\fR .RS 4 The host number .RE .PP \fIchannel\fR .RS 4 The channel number .RE .PP \fIdev_id\fR .RS 4 The scsi device id .RE .PP \fIdata_direction\fR .RS 4 The data_direction specifies whether this command is from/to the device .RE .PP \fIdata_direction_str\fR .RS 4 Data direction, as a string .RE .PP \fIdevice_state\fR .RS 4 The current state of the device .RE .PP \fIlun\fR .RS 4 The lun number .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.iodispatching.3stap000066400000000000000000000042411305163227500302220ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.iodispatching .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.IODISP" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.iodispatching \- SCSI mid\-layer dispatched low\-level SCSI command .SH "SYNOPSIS" .sp .nf scsi\&.iodispatching .fi .SH "VALUES" .PP \fIdev_id\fR .RS 4 The scsi device id .RE .PP \fIdata_direction\fR .RS 4 The data_direction specifies whether this command is from/to the device 0 (DMA_BIDIRECTIONAL), 1 (DMA_TO_DEVICE), 2 (DMA_FROM_DEVICE), 3 (DMA_NONE) .RE .PP \fIhost_no\fR .RS 4 The host number .RE .PP \fIrequest_buffer\fR .RS 4 The request buffer address .RE .PP \fIchannel\fR .RS 4 The channel number .RE .PP \fIdevice_state_str\fR .RS 4 The current state of the device, as a string .RE .PP \fIreq_addr\fR .RS 4 The current struct request pointer, as a number .RE .PP \fIrequest_bufflen\fR .RS 4 The request buffer length .RE .PP \fIlun\fR .RS 4 The lun number .RE .PP \fIdevice_state\fR .RS 4 The current state of the device .RE .PP \fIdata_direction_str\fR .RS 4 Data direction, as a string .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.iodone.3stap000066400000000000000000000040621305163227500266530ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.iodone .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.IODONE" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.iodone \- SCSI command completed by low level driver and enqueued into the done queue\&. .SH "SYNOPSIS" .sp .nf scsi\&.iodone .fi .SH "VALUES" .PP \fIhost_no\fR .RS 4 The host number .RE .PP \fIchannel\fR .RS 4 The channel number .RE .PP \fIdev_id\fR .RS 4 The scsi device id .RE .PP \fIscsi_timer_pending\fR .RS 4 1 if a timer is pending on this request .RE .PP \fIdata_direction\fR .RS 4 The data_direction specifies whether this command is from/to the device\&. .RE .PP \fIreq_addr\fR .RS 4 The current struct request pointer, as a number .RE .PP \fIdevice_state_str\fR .RS 4 The current state of the device, as a string .RE .PP \fIdata_direction_str\fR .RS 4 Data direction, as a string .RE .PP \fIlun\fR .RS 4 The lun number .RE .PP \fIdevice_state\fR .RS 4 The current state of the device .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.ioentry.3stap000066400000000000000000000034011305163227500270630ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.ioentry .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.IOENTR" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.ioentry \- Prepares a SCSI mid\-layer request .SH "SYNOPSIS" .sp .nf scsi\&.ioentry .fi .SH "VALUES" .PP \fIdisk_major\fR .RS 4 The major number of the disk (\-1 if no information) .RE .PP \fIdevice_state_str\fR .RS 4 The current state of the device, as a string .RE .PP \fIdevice_state\fR .RS 4 The current state of the device .RE .PP \fIdisk_minor\fR .RS 4 The minor number of the disk (\-1 if no information) .RE .PP \fIreq_addr\fR .RS 4 The current struct request pointer, as a number .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.ioexecute.3stap000066400000000000000000000041701305163227500273700ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.ioexecute .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.IOEXEC" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.ioexecute \- Create mid\-layer SCSI request and wait for the result .SH "SYNOPSIS" .sp .nf scsi\&.ioexecute .fi .SH "VALUES" .PP \fIrequest_bufflen\fR .RS 4 The data buffer buffer length .RE .PP \fIretries\fR .RS 4 Number of times to retry request .RE .PP \fItimeout\fR .RS 4 Request timeout in seconds .RE .PP \fIdata_direction_str\fR .RS 4 Data direction, as a string .RE .PP \fIdevice_state\fR .RS 4 The current state of the device .RE .PP \fIlun\fR .RS 4 The lun number .RE .PP \fIrequest_buffer\fR .RS 4 The data buffer address .RE .PP \fIhost_no\fR .RS 4 The host number .RE .PP \fIchannel\fR .RS 4 The channel number .RE .PP \fIdev_id\fR .RS 4 The scsi device id .RE .PP \fIdata_direction\fR .RS 4 The data_direction specifies whether this command is from/to the device\&. .RE .PP \fIdevice_state_str\fR .RS 4 The current state of the device, as a string .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::scsi.set_state.3stap000066400000000000000000000034651305163227500273770ustar00rootroot00000000000000'\" t .\" Title: probe::scsi.set_state .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SCSI Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SCSI\&.SET_ST" "3stap" "March 2016" "SystemTap Tapset Reference" "SCSI Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::scsi.set_state \- Order SCSI device state change .SH "SYNOPSIS" .sp .nf scsi\&.set_state .fi .SH "VALUES" .PP \fIold_state\fR .RS 4 The current state of the device .RE .PP \fIlun\fR .RS 4 The lun number .RE .PP \fIchannel\fR .RS 4 The channel number .RE .PP \fIhost_no\fR .RS 4 The host number .RE .PP \fIstate_str\fR .RS 4 The new state of the device, as a string .RE .PP \fIstate\fR .RS 4 The new state of the device .RE .PP \fIold_state_str\fR .RS 4 The current state of the device, as a string .RE .PP \fIdev_id\fR .RS 4 The scsi device id .RE .SH SEE ALSO\n .IR tapset::scsi (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.check_ignored.3stap000066400000000000000000000032301305163227500304720ustar00rootroot00000000000000'\" t .\" Title: probe::signal.check_ignored .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.CHEC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.check_ignored \- Checking to see signal is ignored .SH "SYNOPSIS" .sp .nf signal\&.check_ignored .fi .SH "VALUES" .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsig\fR .RS 4 The number of the signal .RE .PP \fIpid_name\fR .RS 4 Name of the process receiving the signal .RE .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the signal .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.check_ignored.return.3stap000066400000000000000000000030311305163227500320070ustar00rootroot00000000000000'\" t .\" Title: probe::signal.check_ignored.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.CHEC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.check_ignored.return \- Check to see signal is ignored completed .SH "SYNOPSIS" .sp .nf signal\&.check_ignored\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 Return value as a string .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.checkperm.3stap000066400000000000000000000035661305163227500276630ustar00rootroot00000000000000'\" t .\" Title: probe::signal.checkperm .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.CHEC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.checkperm \- Check being performed on a sent signal .SH "SYNOPSIS" .sp .nf signal\&.checkperm .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fItask\fR .RS 4 A task handle to the signal recipient .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsig\fR .RS 4 The number of the signal .RE .PP \fIsinfo\fR .RS 4 The address of the siginfo structure .RE .PP \fIsi_code\fR .RS 4 Indicates the signal type .RE .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the signal .RE .PP \fIpid_name\fR .RS 4 Name of the process receiving the signal .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.checkperm.return.3stap000066400000000000000000000030171305163227500311700ustar00rootroot00000000000000'\" t .\" Title: probe::signal.checkperm.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.CHEC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.checkperm.return \- Check performed on a sent signal completed .SH "SYNOPSIS" .sp .nf signal\&.checkperm\&.return .fi .SH "VALUES" .PP \fIretstr\fR .RS 4 Return value as a string .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.do_action.3stap000066400000000000000000000035711305163227500276550ustar00rootroot00000000000000'\" t .\" Title: probe::signal.do_action .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.DO_A" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.do_action \- Examining or changing a signal action .SH "SYNOPSIS" .sp .nf signal\&.do_action .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsigact_addr\fR .RS 4 The address of the new sigaction struct associated with the signal .RE .PP \fIsa_handler\fR .RS 4 The new handler of the signal .RE .PP \fIsig\fR .RS 4 The signal to be examined/changed .RE .PP \fIsa_mask\fR .RS 4 The new mask of the signal .RE .PP \fIoldsigact_addr\fR .RS 4 The address of the old sigaction struct associated with the signal .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.do_action.return.3stap000066400000000000000000000030241305163227500311640ustar00rootroot00000000000000'\" t .\" Title: probe::signal.do_action.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.DO_A" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.do_action.return \- Examining or changing a signal action completed .SH "SYNOPSIS" .sp .nf signal\&.do_action\&.return .fi .SH "VALUES" .PP \fIretstr\fR .RS 4 Return value as a string .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.flush.3stap000066400000000000000000000033071305163227500270340ustar00rootroot00000000000000'\" t .\" Title: probe::signal.flush .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.FLUS" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.flush \- Flushing all pending signals for a task .SH "SYNOPSIS" .sp .nf signal\&.flush .fi .SH "VALUES" .PP \fIpid_name\fR .RS 4 The name of the process associated with the task performing the flush .RE .PP \fIsig_pid\fR .RS 4 The PID of the process associated with the task performing the flush .RE .PP \fItask\fR .RS 4 The task handler of the process performing the flush .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.force_segv.3stap000066400000000000000000000032661305163227500300410ustar00rootroot00000000000000'\" t .\" Title: probe::signal.force_segv .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.FORC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.force_segv \- Forcing send of SIGSEGV .SH "SYNOPSIS" .sp .nf signal\&.force_segv .fi .SH "VALUES" .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the signal .RE .PP \fIpid_name\fR .RS 4 Name of the process receiving the signal .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsig\fR .RS 4 The number of the signal .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.force_segv.return.3stap000066400000000000000000000030101305163227500313420ustar00rootroot00000000000000'\" t .\" Title: probe::signal.force_segv.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.FORC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.force_segv.return \- Forcing send of SIGSEGV complete .SH "SYNOPSIS" .sp .nf signal\&.force_segv\&.return .fi .SH "VALUES" .PP \fIretstr\fR .RS 4 Return value as a string .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.handle.3stap000066400000000000000000000041201305163227500271400ustar00rootroot00000000000000'\" t .\" Title: probe::signal.handle .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.HAND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.handle \- Signal handler being invoked .SH "SYNOPSIS" .sp .nf signal\&.handle .fi .SH "VALUES" .PP \fIsinfo\fR .RS 4 The address of the siginfo table .RE .PP \fIka_addr\fR .RS 4 The address of the k_sigaction table associated with the signal .RE .PP \fIsig_code\fR .RS 4 The si_code value of the siginfo signal .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIregs\fR .RS 4 The address of the kernel\-mode stack area (deprecated in SystemTap 2\&.1) .RE .PP \fIsig_mode\fR .RS 4 Indicates whether the signal was a user\-mode or kernel\-mode signal .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsig\fR .RS 4 The signal number that invoked the signal handler .RE .PP \fIoldset_addr\fR .RS 4 The address of the bitmask array of blocked signals (deprecated in SystemTap 2\&.1) .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.handle.return.3stap000066400000000000000000000030651305163227500304650ustar00rootroot00000000000000'\" t .\" Title: probe::signal.handle.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.HAND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.handle.return \- Signal handler invocation completed .SH "SYNOPSIS" .sp .nf signal\&.handle\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 Return value as a string .RE .SH "DESCRIPTION" .PP (deprecated in SystemTap 2\&.1) .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.pending.3stap000066400000000000000000000034041305163227500273350ustar00rootroot00000000000000'\" t .\" Title: probe::signal.pending .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.PEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.pending \- Examining pending signal .SH "SYNOPSIS" .sp .nf signal\&.pending .fi .SH "VALUES" .PP \fIsigset_size\fR .RS 4 The size of the user\-space signal set .RE .PP \fIsigset_add\fR .RS 4 The address of the user\-space signal set (sigset_t) .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH "DESCRIPTION" .PP This probe is used to examine a set of signals pending for delivery to a specific thread\&. This normally occurs when the do_sigpending kernel function is executed\&. .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.pending.return.3stap000066400000000000000000000030061305163227500306510ustar00rootroot00000000000000'\" t .\" Title: probe::signal.pending.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.PEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.pending.return \- Examination of pending signal completed .SH "SYNOPSIS" .sp .nf signal\&.pending\&.return .fi .SH "VALUES" .PP \fIretstr\fR .RS 4 Return value as a string .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.procmask.3stap000066400000000000000000000036131305163227500275320ustar00rootroot00000000000000'\" t .\" Title: probe::signal.procmask .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.PROC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.procmask \- Examining or changing blocked signals .SH "SYNOPSIS" .sp .nf signal\&.procmask .fi .SH "VALUES" .PP \fIsigset_addr\fR .RS 4 The address of the signal set (sigset_t) to be implemented .RE .PP \fIsigset\fR .RS 4 The actual value to be set for sigset_t (correct?) .RE .PP \fIoldsigset_addr\fR .RS 4 The old address of the signal set (sigset_t) .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIhow\fR .RS 4 Indicates how to change the blocked signals; possible values are SIG_BLOCK=0 (for blocking signals), SIG_UNBLOCK=1 (for unblocking signals), and SIG_SETMASK=2 for setting the signal mask\&. .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.procmask.return.3stap000066400000000000000000000030211305163227500310410ustar00rootroot00000000000000'\" t .\" Title: probe::signal.procmask.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.PROC" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.procmask.return \- Examining or changing blocked signals completed .SH "SYNOPSIS" .sp .nf signal\&.procmask\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 Return value as a string .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.send.3stap000066400000000000000000000041541305163227500266450ustar00rootroot00000000000000'\" t .\" Title: probe::signal.send .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.send \- Signal being sent to a process .SH "SYNOPSIS" .sp .nf signal\&.send .fi .SH "VALUES" .PP \fIsig\fR .RS 4 The number of the signal .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIname\fR .RS 4 The name of the function used to send out the signal .RE .PP \fItask\fR .RS 4 A task handle to the signal recipient .RE .PP \fIshared\fR .RS 4 Indicates whether the signal is shared by the thread group .RE .PP \fIpid_name\fR .RS 4 The name of the signal recipient .RE .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the signal .RE .PP \fIsi_code\fR .RS 4 Indicates the signal type .RE .PP \fIsinfo\fR .RS 4 The address of siginfo struct .RE .PP \fIsend2queue\fR .RS 4 Indicates whether the signal is sent to an existing sigqueue (deprecated in SystemTap 2\&.1) .RE .SH "CONTEXT" .PP The signal\*(Aqs sender\&. .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.send.return.3stap000066400000000000000000000055731305163227500301710ustar00rootroot00000000000000'\" t .\" Title: probe::signal.send.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.send.return \- Signal being sent to a process completed (deprecated in SystemTap 2\&.1) .SH "SYNOPSIS" .sp .nf signal\&.send\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 The name of the function used to send out the signal .RE .PP \fIretstr\fR .RS 4 The return value to either __group_send_sig_info, specific_send_sig_info, or send_sigqueue .RE .PP \fIshared\fR .RS 4 Indicates whether the sent signal is shared by the thread group\&. .RE .PP \fIsend2queue\fR .RS 4 Indicates whether the sent signal was sent to an existing sigqueue .RE .SH "CONTEXT" .PP The signal\*(Aqs sender\&. (correct?) .SH "DESCRIPTION" .PP Possible __group_send_sig_info and specific_send_sig_info return values are as follows; .PP 0 \-\- The signal is successfully sent to a process, which means that, (1) the signal was ignored by the receiving process, (2) this is a non\-RT signal and the system already has one queued, and (3) the signal was successfully added to the sigqueue of the receiving process\&. .PP \-EAGAIN \-\- The sigqueue of the receiving process is overflowing, the signal was RT, and the signal was sent by a user using something other than \fBkill\fR\&. .PP Possible send_group_sigqueue and send_sigqueue return values are as follows; .PP 0 \-\- The signal was either successfully added into the sigqueue of the receiving process, or a SI_TIMER entry is already queued (in which case, the overrun count will be simply incremented)\&. .PP 1 \-\- The signal was ignored by the receiving process\&. .PP \-1 \-\- (send_sigqueue only) The task was marked exiting, allowing * posix_timer_event to redirect it to the group leader\&. .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.send_sig_queue.3stap000066400000000000000000000034251305163227500307130ustar00rootroot00000000000000'\" t .\" Title: probe::signal.send_sig_queue .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.send_sig_queue \- Queuing a signal to a process .SH "SYNOPSIS" .sp .nf signal\&.send_sig_queue .fi .SH "VALUES" .PP \fIsig_pid\fR .RS 4 The PID of the process to which the signal is queued .RE .PP \fIpid_name\fR .RS 4 Name of the process to which the signal is queued .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIsigqueue_addr\fR .RS 4 The address of the signal queue .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIsig\fR .RS 4 The queued signal .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.send_sig_queue.return.3stap000066400000000000000000000030331305163227500322240ustar00rootroot00000000000000'\" t .\" Title: probe::signal.send_sig_queue.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.send_sig_queue.return \- Queuing a signal to a process completed .SH "SYNOPSIS" .sp .nf signal\&.send_sig_queue\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 Return value as a string .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.sys_tgkill.3stap000066400000000000000000000040541305163227500300770ustar00rootroot00000000000000'\" t .\" Title: probe::signal.sys_tgkill .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYS_" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.sys_tgkill \- Sending kill signal to a thread group .SH "SYNOPSIS" .sp .nf signal\&.sys_tgkill .fi .SH "VALUES" .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fItask\fR .RS 4 A task handle to the signal recipient .RE .PP \fItgid\fR .RS 4 The thread group ID of the thread receiving the kill signal .RE .PP \fIsig\fR .RS 4 The specific kill signal sent to the process .RE .PP \fIpid_name\fR .RS 4 The name of the signal recipient .RE .PP \fIsig_pid\fR .RS 4 The PID of the thread receiving the kill signal .RE .SH "DESCRIPTION" .PP The tgkill call is similar to tkill, except that it also allows the caller to specify the thread group ID of the thread to be signalled\&. This protects against TID reuse\&. .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.sys_tgkill.return.3stap000066400000000000000000000030601305163227500314110ustar00rootroot00000000000000'\" t .\" Title: probe::signal.sys_tgkill.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYS_" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.sys_tgkill.return \- Sending kill signal to a thread group completed .SH "SYNOPSIS" .sp .nf signal\&.sys_tgkill\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 The return value to either __group_send_sig_info, .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.sys_tkill.3stap000066400000000000000000000037411305163227500277320ustar00rootroot00000000000000'\" t .\" Title: probe::signal.sys_tkill .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYS_" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.sys_tkill \- Sending a kill signal to a thread .SH "SYNOPSIS" .sp .nf signal\&.sys_tkill .fi .SH "VALUES" .PP \fIsig\fR .RS 4 The specific signal sent to the process .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fItask\fR .RS 4 A task handle to the signal recipient .RE .PP \fIpid_name\fR .RS 4 The name of the signal recipient .RE .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the kill signal .RE .SH "DESCRIPTION" .PP The tkill call is analogous to kill(2), except that it also allows a process within a specific thread group to be targeted\&. Such processes are targeted through their unique thread IDs (TID)\&. .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.syskill.3stap000066400000000000000000000033741305163227500274110ustar00rootroot00000000000000'\" t .\" Title: probe::signal.syskill .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYSK" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.syskill \- Sending kill signal to a process .SH "SYNOPSIS" .sp .nf signal\&.syskill .fi .SH "VALUES" .PP \fIsig\fR .RS 4 The specific signal sent to the process .RE .PP \fIsig_name\fR .RS 4 A string representation of the signal .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fItask\fR .RS 4 A task handle to the signal recipient .RE .PP \fIsig_pid\fR .RS 4 The PID of the process receiving the signal .RE .PP \fIpid_name\fR .RS 4 The name of the signal recipient .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.syskill.return.3stap000066400000000000000000000026401305163227500307220ustar00rootroot00000000000000'\" t .\" Title: probe::signal.syskill.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYSK" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.syskill.return \- Sending kill signal completed .SH "SYNOPSIS" .sp .nf signal\&.syskill\&.return .fi .SH "VALUES" .PP None .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.systkill.return.3stap000066400000000000000000000030441305163227500311050ustar00rootroot00000000000000'\" t .\" Title: probe::signal.systkill.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.SYST" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.systkill.return \- Sending kill signal to a thread completed .SH "SYNOPSIS" .sp .nf signal\&.systkill\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIretstr\fR .RS 4 The return value to either __group_send_sig_info, .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::signal.wakeup.3stap000066400000000000000000000034521305163227500272100ustar00rootroot00000000000000'\" t .\" Title: probe::signal.wakeup .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Signal Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SIGNAL\&.WAKE" "3stap" "March 2016" "SystemTap Tapset Reference" "Signal Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::signal.wakeup \- Sleeping process being wakened for signal .SH "SYNOPSIS" .sp .nf signal\&.wakeup .fi .SH "VALUES" .PP \fIstate_mask\fR .RS 4 A string representation indicating the mask of task states to wake\&. Possible values are TASK_INTERRUPTIBLE, TASK_STOPPED, TASK_TRACED, TASK_WAKEKILL, and TASK_INTERRUPTIBLE\&. .RE .PP \fIsig_pid\fR .RS 4 The PID of the process to wake .RE .PP \fIpid_name\fR .RS 4 Name of the process to wake .RE .PP \fIresume\fR .RS 4 Indicates whether to wake up a task in a STOPPED or TRACED state .RE .SH SEE ALSO\n .IR tapset::signal (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.aio_read.3stap000066400000000000000000000035461305163227500274760ustar00rootroot00000000000000'\" t .\" Title: probe::socket.aio_read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.AIO_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.aio_read \- Receiving message via \fBsock_aio_read\fR .SH "SYNOPSIS" .sp .nf socket\&.aio_read .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of receiving a message on a socket via the \fBsock_aio_read\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.aio_read.return.3stap000066400000000000000000000040011305163227500307770ustar00rootroot00000000000000'\" t .\" Title: probe::socket.aio_read.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.AIO_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.aio_read.return \- Conclusion of message received via \fBsock_aio_read\fR .SH "SYNOPSIS" .sp .nf socket\&.aio_read\&.return .fi .SH "VALUES" .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of receiving a message on a socket via the \fBsock_aio_read\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.aio_write.3stap000066400000000000000000000035441305163227500277130ustar00rootroot00000000000000'\" t .\" Title: probe::socket.aio_write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.AIO_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.aio_write \- Message send via \fBsock_aio_write\fR .SH "SYNOPSIS" .sp .nf socket\&.aio_write .fi .SH "VALUES" .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of sending a message on a socket via the \fBsock_aio_write\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.aio_write.return.3stap000066400000000000000000000040001305163227500312150ustar00rootroot00000000000000'\" t .\" Title: probe::socket.aio_write.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.AIO_" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.aio_write.return \- Conclusion of message send via \fBsock_aio_write\fR .SH "SYNOPSIS" .sp .nf socket\&.aio_write\&.return .fi .SH "VALUES" .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of sending a message on a socket via the \fBsock_aio_write\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.close.3stap000066400000000000000000000033661305163227500270400ustar00rootroot00000000000000'\" t .\" Title: probe::socket.close .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.CLOS" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.close \- Close a socket .SH "SYNOPSIS" .sp .nf socket\&.close .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .SH "CONTEXT" .PP The requester (user process or kernel) .SH "DESCRIPTION" .PP Fires at the beginning of closing a socket\&. .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.close.return.3stap000066400000000000000000000030721305163227500303500ustar00rootroot00000000000000'\" t .\" Title: probe::socket.close.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.CLOS" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.close.return \- Return from closing a socket .SH "SYNOPSIS" .sp .nf socket\&.close\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .SH "CONTEXT" .PP The requester (user process or kernel) .SH "DESCRIPTION" .PP Fires at the conclusion of closing a socket\&. .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.create.3stap000066400000000000000000000034031305163227500271660ustar00rootroot00000000000000'\" t .\" Title: probe::socket.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.CREA" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.create \- Creation of a socket .SH "SYNOPSIS" .sp .nf socket\&.create .fi .SH "VALUES" .PP \fIrequester\fR .RS 4 Requested by user process or the kernel (1 = kernel, 0 = user) .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .SH "CONTEXT" .PP The requester (see requester variable) .SH "DESCRIPTION" .PP Fires at the beginning of creating a socket\&. .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.create.return.3stap000066400000000000000000000036501305163227500305100ustar00rootroot00000000000000'\" t .\" Title: probe::socket.create.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.CREA" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.create.return \- Return from Creation of a socket .SH "SYNOPSIS" .sp .nf socket\&.create\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIerr\fR .RS 4 Error code if success == 0 .RE .PP \fIrequester\fR .RS 4 Requested by user process or the kernel (1 = kernel, 0 = user) .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was socket creation successful? (1 = yes, 0 = no) .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fItype\fR .RS 4 Socket type value .RE .SH "CONTEXT" .PP The requester (user process or kernel) .SH "DESCRIPTION" .PP Fires at the conclusion of creating a socket\&. .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.read_iter.3stap000066400000000000000000000035531305163227500276670ustar00rootroot00000000000000'\" t .\" Title: probe::socket.read_iter .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.read_iter \- Receiving message via \fBsock_read_iter\fR .SH "SYNOPSIS" .sp .nf socket\&.read_iter .fi .SH "VALUES" .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of receiving a message on a socket via the \fBsock_read_iter\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.read_iter.return.3stap000066400000000000000000000040061305163227500311770ustar00rootroot00000000000000'\" t .\" Title: probe::socket.read_iter.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.read_iter.return \- Conclusion of message received via \fBsock_read_iter\fR .SH "SYNOPSIS" .sp .nf socket\&.read_iter\&.return .fi .SH "VALUES" .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of receiving a message on a socket via the \fBsock_read_iter\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.readv.3stap000066400000000000000000000035311305163227500270260ustar00rootroot00000000000000'\" t .\" Title: probe::socket.readv .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.readv \- Receiving a message via \fBsock_readv\fR .SH "SYNOPSIS" .sp .nf socket\&.readv .fi .SH "VALUES" .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of receiving a message on a socket via the \fBsock_readv\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.readv.return.3stap000066400000000000000000000037651305163227500303550ustar00rootroot00000000000000'\" t .\" Title: probe::socket.readv.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.readv.return \- Conclusion of receiving a message via \fBsock_readv\fR .SH "SYNOPSIS" .sp .nf socket\&.readv\&.return .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of receiving a message on a socket via the \fBsock_readv\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.receive.3stap000066400000000000000000000035241305163227500273510ustar00rootroot00000000000000'\" t .\" Title: probe::socket.receive .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.RECE" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.receive \- Message received on a socket\&. .SH "SYNOPSIS" .sp .nf socket\&.receive .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was send successful? (1 = yes, 0 = no) .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .SH "CONTEXT" .PP The message receiver .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.recvmsg.3stap000066400000000000000000000035361305163227500274000ustar00rootroot00000000000000'\" t .\" Title: probe::socket.recvmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.RECV" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.recvmsg \- Message being received on socket .SH "SYNOPSIS" .sp .nf socket\&.recvmsg .fi .SH "VALUES" .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the beginning of receiving a message on a socket via the \fBsock_recvmsg\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.recvmsg.return.3stap000066400000000000000000000037661305163227500307230ustar00rootroot00000000000000'\" t .\" Title: probe::socket.recvmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.RECV" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.recvmsg.return \- Return from Message being received on socket .SH "SYNOPSIS" .sp .nf socket\&.recvmsg\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of receiving a message on a socket via the \fBsock_recvmsg\fR function\&. .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.send.3stap000066400000000000000000000035011305163227500266530ustar00rootroot00000000000000'\" t .\" Title: probe::socket.send .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.send \- Message sent on a socket\&. .SH "SYNOPSIS" .sp .nf socket\&.send .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was send successful? (1 = yes, 0 = no) .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Size of message sent (in bytes) or error code if success = 0 .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.sendmsg.3stap000066400000000000000000000035451305163227500273720ustar00rootroot00000000000000'\" t .\" Title: probe::socket.sendmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.sendmsg \- Message is currently being sent on a socket\&. .SH "SYNOPSIS" .sp .nf socket\&.sendmsg .fi .SH "VALUES" .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of sending a message on a socket via the \fBsock_sendmsg\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.sendmsg.return.3stap000066400000000000000000000037331305163227500307070ustar00rootroot00000000000000'\" t .\" Title: probe::socket.sendmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.SEND" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.sendmsg.return \- Return from socket\&.sendmsg\&. .SH "SYNOPSIS" .sp .nf socket\&.sendmsg\&.return .fi .SH "VALUES" .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIsize\fR .RS 4 Size of message sent (in bytes) or error code if success = 0 .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was send successful? (1 = yes, 0 = no) .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .SH "CONTEXT" .PP The message sender\&. .SH "DESCRIPTION" .PP Fires at the conclusion of sending a message on a socket via the \fBsock_sendmsg\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.write_iter.3stap000066400000000000000000000035511305163227500301040ustar00rootroot00000000000000'\" t .\" Title: probe::socket.write_iter .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.WRIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.write_iter \- Message send via \fBsock_write_iter\fR .SH "SYNOPSIS" .sp .nf socket\&.write_iter .fi .SH "VALUES" .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of sending a message on a socket via the \fBsock_write_iter\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.write_iter.return.3stap000066400000000000000000000040051305163227500314150ustar00rootroot00000000000000'\" t .\" Title: probe::socket.write_iter.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.WRIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.write_iter.return \- Conclusion of message send via \fBsock_write_iter\fR .SH "SYNOPSIS" .sp .nf socket\&.write_iter\&.return .fi .SH "VALUES" .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIsuccess\fR .RS 4 Was receive successful? (1 = yes, 0 = no) .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIsize\fR .RS 4 Size of message received (in bytes) or error code if success = 0 .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of sending a message on a socket via the \fBsock_write_iter\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.writev.3stap000066400000000000000000000035271305163227500272520ustar00rootroot00000000000000'\" t .\" Title: probe::socket.writev .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.WRIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.writev \- Message sent via \fBsocket_writev\fR .SH "SYNOPSIS" .sp .nf socket\&.writev .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIsize\fR .RS 4 Message size in bytes .RE .SH "CONTEXT" .PP The message sender .SH "DESCRIPTION" .PP Fires at the beginning of sending a message on a socket via the \fBsock_writev\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::socket.writev.return.3stap000066400000000000000000000037541305163227500305720ustar00rootroot00000000000000'\" t .\" Title: probe::socket.writev.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Socket Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOCKET\&.WRIT" "3stap" "March 2016" "SystemTap Tapset Reference" "Socket Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::socket.writev.return \- Conclusion of message sent via \fBsocket_writev\fR .SH "SYNOPSIS" .sp .nf socket\&.writev\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIstate\fR .RS 4 Socket state value .RE .PP \fIfamily\fR .RS 4 Protocol family value .RE .PP \fIsuccess\fR .RS 4 Was send successful? (1 = yes, 0 = no) .RE .PP \fItype\fR .RS 4 Socket type value .RE .PP \fIflags\fR .RS 4 Socket flags value .RE .PP \fIprotocol\fR .RS 4 Protocol value .RE .PP \fIsize\fR .RS 4 Size of message sent (in bytes) or error code if success = 0 .RE .SH "CONTEXT" .PP The message receiver\&. .SH "DESCRIPTION" .PP Fires at the conclusion of sending a message on a socket via the \fBsock_writev\fR function .SH SEE ALSO\n .IR tapset::socket (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::softirq.entry.3stap000066400000000000000000000032461305163227500272700ustar00rootroot00000000000000'\" t .\" Title: probe::softirq.entry .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOFTIRQ\&.ENT" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::softirq.entry \- Execution of handler for a pending softirq starting .SH "SYNOPSIS" .sp .nf softirq\&.entry .fi .SH "VALUES" .PP \fIvec_nr\fR .RS 4 softirq vector number .RE .PP \fIaction\fR .RS 4 pointer to softirq handler just about to execute .RE .PP \fIvec\fR .RS 4 softirq_action vector .RE .PP \fIh\fR .RS 4 struct softirq_action* for current pending softirq .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::softirq.exit.3stap000066400000000000000000000032511305163227500270740ustar00rootroot00000000000000'\" t .\" Title: probe::softirq.exit .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SOFTIRQ\&.EXI" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::softirq.exit \- Execution of handler for a pending softirq completed .SH "SYNOPSIS" .sp .nf softirq\&.exit .fi .SH "VALUES" .PP \fIvec_nr\fR .RS 4 softirq vector number .RE .PP \fIaction\fR .RS 4 pointer to softirq handler that just finished execution .RE .PP \fIh\fR .RS 4 struct softirq_action* for just executed softirq .RE .PP \fIvec\fR .RS 4 softirq_action vector .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.cache_add_mod.3stap000066400000000000000000000033731305163227500301220ustar00rootroot00000000000000'\" t .\" Title: probe::stap.cache_add_mod .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.CACHE_" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.cache_add_mod \- Adding kernel instrumentation module to cache .SH "SYNOPSIS" .sp .nf stap\&.cache_add_mod .fi .SH "VALUES" .PP \fIsource_path\fR .RS 4 the path the \&.ko file is coming from (incl filename) .RE .PP \fIdest_path\fR .RS 4 the path the \&.ko file is going to (incl filename) .RE .SH "DESCRIPTION" .PP Fires just before the file is actually moved\&. Note: if moving fails, cache_add_src and cache_add_nss will not fire\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.cache_add_nss.3stap000066400000000000000000000034551305163227500301470ustar00rootroot00000000000000'\" t .\" Title: probe::stap.cache_add_nss .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.CACHE_" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.cache_add_nss \- Add NSS (Network Security Services) information to cache .SH "SYNOPSIS" .sp .nf stap\&.cache_add_nss .fi .SH "VALUES" .PP \fIsource_path\fR .RS 4 the path the \&.sgn file is coming from (incl filename) .RE .PP \fIdest_path\fR .RS 4 the path the \&.sgn file is coming from (incl filename) .RE .SH "DESCRIPTION" .PP Fires just before the file is actually moved\&. Note: stap must compiled with NSS support; if moving the kernel module fails, this probe will not fire\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.cache_add_src.3stap000066400000000000000000000033531305163227500301300ustar00rootroot00000000000000'\" t .\" Title: probe::stap.cache_add_src .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.CACHE_" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.cache_add_src \- Adding C code translation to cache .SH "SYNOPSIS" .sp .nf stap\&.cache_add_src .fi .SH "VALUES" .PP \fIdest_path\fR .RS 4 the path the \&.c file is going to (incl filename) .RE .PP \fIsource_path\fR .RS 4 the path the \&.c file is coming from (incl filename) .RE .SH "DESCRIPTION" .PP Fires just before the file is actually moved\&. Note: if moving the kernel module fails, this probe will not fire\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.cache_clean.3stap000066400000000000000000000031121305163227500276040ustar00rootroot00000000000000'\" t .\" Title: probe::stap.cache_clean .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.CACHE_" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.cache_clean \- Removing file from stap cache .SH "SYNOPSIS" .sp .nf stap\&.cache_clean .fi .SH "VALUES" .PP \fIpath\fR .RS 4 the path to the \&.ko/\&.c file being removed .RE .SH "DESCRIPTION" .PP Fires just before the call to unlink the module/source file\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.cache_get.3stap000066400000000000000000000032301305163227500273020ustar00rootroot00000000000000'\" t .\" Title: probe::stap.cache_get .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.CACHE_" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.cache_get \- Found item in stap cache .SH "SYNOPSIS" .sp .nf stap\&.cache_get .fi .SH "VALUES" .PP \fIsource_path\fR .RS 4 the path of the \&.c source file .RE .PP \fImodule_path\fR .RS 4 the path of the \&.ko kernel module file .RE .SH "DESCRIPTION" .PP Fires just before the return of get_from_cache, when the cache grab is successful\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass0.3stap000066400000000000000000000031021305163227500264240ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass0 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS0" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass0 \- Starting stap pass0 (parsing command line arguments) .SH "SYNOPSIS" .sp .nf stap\&.pass0 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass0 fires after command line arguments have been parsed\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass0.end.3stap000066400000000000000000000031331305163227500271750ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass0.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS0\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass0.end \- Finished stap pass0 (parsing command line arguments) .SH "SYNOPSIS" .sp .nf stap\&.pass0\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass0\&.end fires just before the \fBgettimeofday\fR call for pass1\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass1.end.3stap000066400000000000000000000031171305163227500272000ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass1.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS1\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass1.end \- Finished stap pass1 (parsing scripts) .SH "SYNOPSIS" .sp .nf stap\&.pass1\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass1\&.end fires just before the jump to cleanup if s\&.last_pass = 1\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass1a.3stap000066400000000000000000000031321305163227500265710ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass1a .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS1A" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass1a \- Starting stap pass1 (parsing user script) .SH "SYNOPSIS" .sp .nf stap\&.pass1a .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass1a fires just after the call to \fBgettimeofday\fR, before the user script is parsed\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass1b.3stap000066400000000000000000000030751305163227500266000ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass1b .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS1B" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass1b \- Starting stap pass1 (parsing library scripts) .SH "SYNOPSIS" .sp .nf stap\&.pass1b .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass1b fires just before the library scripts are parsed\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass2.3stap000066400000000000000000000031221305163227500264300ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass2 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS2" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass2 \- Starting stap pass2 (elaboration) .SH "SYNOPSIS" .sp .nf stap\&.pass2 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass2 fires just after the call to \fBgettimeofday\fR, just before the call to semantic_pass\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass2.end.3stap000066400000000000000000000031101305163227500271720ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass2.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS2\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass2.end \- Finished stap pass2 (elaboration) .SH "SYNOPSIS" .sp .nf stap\&.pass2\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass2\&.end fires just before the jump to cleanup if s\&.last_pass = 2 .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass3.3stap000066400000000000000000000031301305163227500264300ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass3 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS3" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass3 \- Starting stap pass3 (translation to C) .SH "SYNOPSIS" .sp .nf stap\&.pass3 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass3 fires just after the call to \fBgettimeofday\fR, just before the call to translate_pass\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass3.end.3stap000066400000000000000000000031151305163227500272000ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass3.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS3\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass3.end \- Finished stap pass3 (translation to C) .SH "SYNOPSIS" .sp .nf stap\&.pass3\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass3\&.end fires just before the jump to cleanup if s\&.last_pass = 3 .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass4.3stap000066400000000000000000000031471305163227500264410ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass4 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS4" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass4 \- Starting stap pass4 (compile C code into kernel module) .SH "SYNOPSIS" .sp .nf stap\&.pass4 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass4 fires just after the call to \fBgettimeofday\fR, just before the call to compile_pass\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass4.end.3stap000066400000000000000000000031361305163227500272040ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass4.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS4\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass4.end \- Finished stap pass4 (compile C code into kernel module) .SH "SYNOPSIS" .sp .nf stap\&.pass4\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass4\&.end fires just before the jump to cleanup if s\&.last_pass = 4 .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass5.3stap000066400000000000000000000031351305163227500264370ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass5 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS5" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass5 \- Starting stap pass5 (running the instrumentation) .SH "SYNOPSIS" .sp .nf stap\&.pass5 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass5 fires just after the call to \fBgettimeofday\fR, just before the call to run_pass\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass5.end.3stap000066400000000000000000000031011305163227500271750ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass5.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS5\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass5.end \- Finished stap pass5 (running the instrumentation) .SH "SYNOPSIS" .sp .nf stap\&.pass5\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass5\&.end fires just before the cleanup label .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass6.3stap000066400000000000000000000031011305163227500264310ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass6 .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS6" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass6 \- Starting stap pass6 (cleanup) .SH "SYNOPSIS" .sp .nf stap\&.pass6 .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass6 fires just after the cleanup label, essentially the same spot as pass5\&.end .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.pass6.end.3stap000066400000000000000000000030601305163227500272020ustar00rootroot00000000000000'\" t .\" Title: probe::stap.pass6.end .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.PASS6\" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.pass6.end \- Finished stap pass6 (cleanup) .SH "SYNOPSIS" .sp .nf stap\&.pass6\&.end .fi .SH "VALUES" .PP \fIsession\fR .RS 4 the systemtap_session variable s .RE .SH "DESCRIPTION" .PP pass6\&.end fires just before main\*(Aqs return\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.system.3stap000066400000000000000000000030771305163227500267350ustar00rootroot00000000000000'\" t .\" Title: probe::stap.system .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.SYSTEM" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.system \- Starting a command from stap .SH "SYNOPSIS" .sp .nf stap\&.system .fi .SH "VALUES" .PP \fIcommand\fR .RS 4 the command string to be run by posix_spawn (as sh \-c ) .RE .SH "DESCRIPTION" .PP Fires at the entry of the stap_system command\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.system.return.3stap000066400000000000000000000032261305163227500302470ustar00rootroot00000000000000'\" t .\" Title: probe::stap.system.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.SYSTEM" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.system.return \- Finished a command from stap .SH "SYNOPSIS" .sp .nf stap\&.system\&.return .fi .SH "VALUES" .PP \fIret\fR .RS 4 a return code associated with running waitpid on the spawned process; a non\-zero value indicates error .RE .SH "DESCRIPTION" .PP Fires just before the return of the stap_system function, after waitpid\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stap.system.spawn.3stap000066400000000000000000000031411305163227500300540ustar00rootroot00000000000000'\" t .\" Title: probe::stap.system.spawn .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAP\&.SYSTEM" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stap.system.spawn \- stap spawned new process .SH "SYNOPSIS" .sp .nf stap\&.system\&.spawn .fi .SH "VALUES" .PP \fIpid\fR .RS 4 the pid of the spawned process .RE .PP \fIret\fR .RS 4 the return value from posix_spawn .RE .SH "DESCRIPTION" .PP Fires just after the call to posix_spawn\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::stapio.receive_control_message.3stap000066400000000000000000000034541305163227500326260ustar00rootroot00000000000000'\" t .\" Title: probe::stapio.receive_control_message .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAPIO\&.RECE" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::stapio.receive_control_message \- Received a control message .SH "SYNOPSIS" .sp .nf stapio\&.receive_control_message .fi .SH "VALUES" .PP \fItype\fR .RS 4 type of message being send; defined in runtime/transport/transport_msgs\&.h .RE .PP \fIdata\fR .RS 4 a ptr to a binary blob of data sent as the control message .RE .PP \fIlen\fR .RS 4 the length (in bytes) of the data blob .RE .SH "DESCRIPTION" .PP Fires just after a message was received and before it\*(Aqs processed\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::staprun.insert_module.3stap000066400000000000000000000031521305163227500310010ustar00rootroot00000000000000'\" t .\" Title: probe::staprun.insert_module .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAPRUN\&.INS" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::staprun.insert_module \- Inserting SystemTap instrumentation module .SH "SYNOPSIS" .sp .nf staprun\&.insert_module .fi .SH "VALUES" .PP \fIpath\fR .RS 4 the full path to the \&.ko kernel module about to be inserted .RE .SH "DESCRIPTION" .PP Fires just before the call to insert the module\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::staprun.remove_module.3stap000066400000000000000000000031541305163227500307740ustar00rootroot00000000000000'\" t .\" Title: probe::staprun.remove_module .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAPRUN\&.REM" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::staprun.remove_module \- Removing SystemTap instrumentation module .SH "SYNOPSIS" .sp .nf staprun\&.remove_module .fi .SH "VALUES" .PP \fIname\fR .RS 4 the stap module name to be removed (without the \&.ko extension) .RE .SH "DESCRIPTION" .PP Fires just before the call to remove the module\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::staprun.send_control_message.3stap000066400000000000000000000034231305163227500323260ustar00rootroot00000000000000'\" t .\" Title: probe::staprun.send_control_message .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SystemTap Translator Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::STAPRUN\&.SEN" "3stap" "March 2016" "SystemTap Tapset Reference" "SystemTap Translator Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::staprun.send_control_message \- Sending a control message .SH "SYNOPSIS" .sp .nf staprun\&.send_control_message .fi .SH "VALUES" .PP \fIdata\fR .RS 4 a ptr to a binary blob of data sent as the control message .RE .PP \fIlen\fR .RS 4 the length (in bytes) of the data blob .RE .PP \fItype\fR .RS 4 type of message being send; defined in runtime/transport/transport_msgs\&.h .RE .SH "DESCRIPTION" .PP Fires at the beginning of the send_request function\&. .SH SEE ALSO\n .IR tapset::stap_staticmarkers (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.bind_new_program.3stap000066400000000000000000000035231305163227500322230ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.bind_new_program .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.bind_new_program \- Bind a new RPC program to an existing client .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.bind_new_program .fi .SH "VALUES" .PP \fIold_progname\fR .RS 4 the name of old RPC program .RE .PP \fIprogname\fR .RS 4 the name of new RPC program .RE .PP \fIold_vers\fR .RS 4 the version of old RPC program .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIprog\fR .RS 4 the number of new RPC program .RE .PP \fIvers\fR .RS 4 the version of new RPC program .RE .PP \fIold_prog\fR .RS 4 the number of old RPC program .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.call_async.3stap000066400000000000000000000037231305163227500310210ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.call_async .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.call_async \- Make an asynchronous RPC call .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.call_async .fi .SH "VALUES" .PP \fIxid\fR .RS 4 current transmission id .RE .PP \fIproc\fR .RS 4 the procedure number in this RPC call .RE .PP \fIflags\fR .RS 4 flags .RE .PP \fIvers\fR .RS 4 the RPC program version number .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .PP \fIprocname\fR .RS 4 the procedure name in this RPC call .RE .PP \fIport\fR .RS 4 the port number .RE .PP \fIdead\fR .RS 4 whether this client is abandoned .RE .PP \fIprogname\fR .RS 4 the RPC program name .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.call_sync.3stap000066400000000000000000000037161305163227500306620ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.call_sync .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.call_sync \- Make a synchronous RPC call .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.call_sync .fi .SH "VALUES" .PP \fIxid\fR .RS 4 current transmission id .RE .PP \fIproc\fR .RS 4 the procedure number in this RPC call .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .PP \fIflags\fR .RS 4 flags .RE .PP \fIvers\fR .RS 4 the RPC program version number .RE .PP \fIprocname\fR .RS 4 the procedure name in this RPC call .RE .PP \fIdead\fR .RS 4 whether this client is abandoned .RE .PP \fIprogname\fR .RS 4 the RPC program name .RE .PP \fIport\fR .RS 4 the port number .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.clone_client.3stap000066400000000000000000000034101305163227500313400ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.clone_client .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.clone_client \- Clone an RPC client structure .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.clone_client .fi .SH "VALUES" .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .PP \fIprogname\fR .RS 4 the RPC program name .RE .PP \fIauthflavor\fR .RS 4 the authentication flavor .RE .PP \fIport\fR .RS 4 the port number .RE .PP \fIvers\fR .RS 4 the RPC program version number .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.create_client.3stap000066400000000000000000000034021305163227500315040ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.create_client .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.create_client \- Create an RPC client .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.create_client .fi .SH "VALUES" .PP \fIauthflavor\fR .RS 4 the authentication flavor .RE .PP \fIvers\fR .RS 4 the RPC program version number .RE .PP \fIport\fR .RS 4 the port number .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIprogname\fR .RS 4 the RPC program name .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.restart_call.3stap000066400000000000000000000034021305163227500313620ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.restart_call .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.restart_call \- Restart an asynchronous RPC call .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.restart_call .fi .SH "VALUES" .PP \fItk_pid\fR .RS 4 the debugging aid of task .RE .PP \fItk_runstate\fR .RS 4 the task run status .RE .PP \fItk_priority\fR .RS 4 the task priority .RE .PP \fItk_flags\fR .RS 4 the task flags .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIxid\fR .RS 4 the transmission id .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.clnt.shutdown_client.3stap000066400000000000000000000045321305163227500321210ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.clnt.shutdown_client .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.CLNT" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.clnt.shutdown_client \- Shutdown an RPC client .SH "SYNOPSIS" .sp .nf sunrpc\&.clnt\&.shutdown_client .fi .SH "VALUES" .PP \fIom_ntrans\fR .RS 4 the count of RPC transmissions .RE .PP \fIprog\fR .RS 4 the RPC program number .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .PP \fIservername\fR .RS 4 the server machine name .RE .PP \fIvers\fR .RS 4 the RPC program version number .RE .PP \fIauthflavor\fR .RS 4 the authentication flavor .RE .PP \fIom_rtt\fR .RS 4 the RPC RTT jiffies .RE .PP \fItasks\fR .RS 4 the number of references .RE .PP \fIom_queue\fR .RS 4 the jiffies queued for xmit .RE .PP \fIom_execute\fR .RS 4 the RPC execution jiffies .RE .PP \fIom_bytes_sent\fR .RS 4 the count of bytes out .RE .PP \fIclones\fR .RS 4 the number of clones .RE .PP \fIom_bytes_recv\fR .RS 4 the count of bytes in .RE .PP \fIrpccnt\fR .RS 4 the count of RPC calls .RE .PP \fIprogname\fR .RS 4 the RPC program name .RE .PP \fIport\fR .RS 4 the port number .RE .PP \fInetreconn\fR .RS 4 the count of reconnections .RE .PP \fIom_ops\fR .RS 4 the count of operations .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.sched.delay.3stap000066400000000000000000000034131305163227500301310ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.sched.delay .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SCHE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.sched.delay \- Delay an RPC task .SH "SYNOPSIS" .sp .nf sunrpc\&.sched\&.delay .fi .SH "VALUES" .PP \fIvers\fR .RS 4 the program version in the RPC call .RE .PP \fIprot\fR .RS 4 the IP protocol in the RPC call .RE .PP \fIprog\fR .RS 4 the program number in the RPC call .RE .PP \fIxid\fR .RS 4 the transmission id in the RPC call .RE .PP \fItk_pid\fR .RS 4 the debugging id of the task .RE .PP \fIdelay\fR .RS 4 the time delayed .RE .PP \fItk_flags\fR .RS 4 the flags of the task .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.sched.execute.3stap000066400000000000000000000033641305163227500305020ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.sched.execute .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SCHE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.sched.execute \- Execute the RPC `scheduler\*(Aq .SH "SYNOPSIS" .sp .nf sunrpc\&.sched\&.execute .fi .SH "VALUES" .PP \fItk_pid\fR .RS 4 the debugging id of the task .RE .PP \fItk_flags\fR .RS 4 the flags of the task .RE .PP \fIprog\fR .RS 4 the program number in the RPC call .RE .PP \fIprot\fR .RS 4 the IP protocol in the RPC call .RE .PP \fIvers\fR .RS 4 the program version in the RPC call .RE .PP \fIxid\fR .RS 4 the transmission id in the RPC call .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.sched.new_task.3stap000066400000000000000000000033101305163227500306420ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.sched.new_task .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SCHE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.sched.new_task \- Create new task for the specified client .SH "SYNOPSIS" .sp .nf sunrpc\&.sched\&.new_task .fi .SH "VALUES" .PP \fIvers\fR .RS 4 the program version in the RPC call .RE .PP \fIprog\fR .RS 4 the program number in the RPC call .RE .PP \fIprot\fR .RS 4 the IP protocol in the RPC call .RE .PP \fIxid\fR .RS 4 the transmission id in the RPC call .RE .PP \fItk_flags\fR .RS 4 the flags of the task .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.sched.release_task.3stap000066400000000000000000000036051305163227500315000ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.sched.release_task .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SCHE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.sched.release_task \- Release all resources associated with a task .SH "SYNOPSIS" .sp .nf sunrpc\&.sched\&.release_task .fi .SH "VALUES" .PP \fIxid\fR .RS 4 the transmission id in the RPC call .RE .PP \fIvers\fR .RS 4 the program version in the RPC call .RE .PP \fIprog\fR .RS 4 the program number in the RPC call .RE .PP \fIprot\fR .RS 4 the IP protocol in the RPC call .RE .PP \fItk_flags\fR .RS 4 the flags of the task .RE .SH "DESCRIPTION" .PP \fBrpc_release_task\fR function might not be found for a particular kernel\&. So, if we can\*(Aqt find it, just return \*(Aq\-1\*(Aq for everything\&. .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.authorise.3stap000066400000000000000000000000501305163227500305350ustar00rootroot00000000000000.SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.create.3stap000066400000000000000000000031321305163227500300010ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.create \- Create an RPC service .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.create .fi .SH "VALUES" .PP \fIprog\fR .RS 4 the number of the program .RE .PP \fIbufsize\fR .RS 4 the buffer size .RE .PP \fIprogname\fR .RS 4 the name of the program .RE .PP \fIpg_nvers\fR .RS 4 the number of supported versions .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.destroy.3stap000066400000000000000000000037131305163227500302340ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.destroy .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.destroy \- Destroy an RPC service .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.destroy .fi .SH "VALUES" .PP \fIsv_prog\fR .RS 4 the number of the program .RE .PP \fIsv_nrthreads\fR .RS 4 the number of concurrent threads .RE .PP \fIrpcbadfmt\fR .RS 4 the count of requests dropped for bad formats .RE .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fInettcpconn\fR .RS 4 the count of accepted TCP connections .RE .PP \fInetcnt\fR .RS 4 the count of received RPC requests .RE .PP \fIrpccnt\fR .RS 4 the count of valid RPC requests .RE .PP \fIrpcbadauth\fR .RS 4 the count of requests drooped for authentication failure .RE .PP \fIsv_progname\fR .RS 4 the name of the program .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.drop.3stap000066400000000000000000000034471305163227500275130ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.drop .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.drop \- Drop RPC request .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.drop .fi .SH "VALUES" .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fIrq_xid\fR .RS 4 the transmission id in the request .RE .PP \fIrq_vers\fR .RS 4 the program version in the request .RE .PP \fIrq_prog\fR .RS 4 the program number in the request .RE .PP \fIpeer_ip\fR .RS 4 the peer address where the request is from .RE .PP \fIrq_proc\fR .RS 4 the procedure number in the request .RE .PP \fIrq_prot\fR .RS 4 the IP protocol of the request .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.process.3stap000066400000000000000000000036561305163227500302270ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.process .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.process \- Process an RPC request .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.process .fi .SH "VALUES" .PP \fIsv_prog\fR .RS 4 the number of the program .RE .PP \fIrq_prog\fR .RS 4 the program number in the request .RE .PP \fIsv_nrthreads\fR .RS 4 the number of concurrent threads .RE .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fIrq_vers\fR .RS 4 the program version in the request .RE .PP \fIrq_xid\fR .RS 4 the transmission id in the request .RE .PP \fIrq_proc\fR .RS 4 the procedure number in the request .RE .PP \fIrq_prot\fR .RS 4 the IP protocol of the request .RE .PP \fIpeer_ip\fR .RS 4 the peer address where the request is from .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.recv.3stap000066400000000000000000000031731305163227500275020ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.recv .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.recv \- Listen for the next RPC request on any socket .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.recv .fi .SH "VALUES" .PP \fItimeout\fR .RS 4 the timeout of waiting for data .RE .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fIsv_prog\fR .RS 4 the number of the program .RE .PP \fIsv_nrthreads\fR .RS 4 the number of concurrent threads .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.register.3stap000066400000000000000000000033651305163227500303720ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.register .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.register \- Register an RPC service with the local portmapper .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.register .fi .SH "VALUES" .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fIport\fR .RS 4 the port number .RE .PP \fIprogname\fR .RS 4 the name of the program .RE .PP \fIprog\fR .RS 4 the number of the program .RE .PP \fIprot\fR .RS 4 the IP protocol number .RE .SH "DESCRIPTION" .PP If \fIproto\fR and \fIport\fR are both 0, then unregister a service\&. .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::sunrpc.svc.send.3stap000066400000000000000000000034611305163227500274740ustar00rootroot00000000000000'\" t .\" Title: probe::sunrpc.svc.send .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::SUNRPC\&.SVC\" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::sunrpc.svc.send \- Return reply to RPC client .SH "SYNOPSIS" .sp .nf sunrpc\&.svc\&.send .fi .SH "VALUES" .PP \fIrq_prog\fR .RS 4 the program number in the request .RE .PP \fIsv_name\fR .RS 4 the service name .RE .PP \fIrq_vers\fR .RS 4 the program version in the request .RE .PP \fIrq_xid\fR .RS 4 the transmission id in the request .RE .PP \fIrq_prot\fR .RS 4 the IP protocol of the request .RE .PP \fIrq_proc\fR .RS 4 the procedure number in the request .RE .PP \fIpeer_ip\fR .RS 4 the peer address where the request is from .RE .SH SEE ALSO\n .IR tapset::rpc (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.disconnect.3stap000066400000000000000000000035271305163227500273610ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.disconnect .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.DISCONN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.disconnect \- TCP socket disconnection .SH "SYNOPSIS" .sp .nf tcp\&.disconnect .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 TCP source port .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIsock\fR .RS 4 Network socket .RE .PP \fIdport\fR .RS 4 TCP destination port .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIflags\fR .RS 4 TCP flags (e\&.g\&. FIN, etc) .RE .SH "CONTEXT" .PP The process which disconnects tcp .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.disconnect.return.3stap000066400000000000000000000030611305163227500306700ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.disconnect.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.DISCONN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.disconnect.return \- TCP socket disconnection complete .SH "SYNOPSIS" .sp .nf tcp\&.disconnect\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIret\fR .RS 4 Error code (0: no error) .RE .SH "CONTEXT" .PP The process which disconnects tcp .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.receive.3stap000066400000000000000000000040161305163227500266440ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.receive .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.RECEIVE" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.receive \- Called when a TCP packet is received .SH "SYNOPSIS" .sp .nf tcp\&.receive .fi .SH "VALUES" .PP \fIurg\fR .RS 4 TCP URG flag .RE .PP \fIsyn\fR .RS 4 TCP SYN flag .RE .PP \fIprotocol\fR .RS 4 Packet protocol from driver .RE .PP \fIdport\fR .RS 4 TCP destination port .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIack\fR .RS 4 TCP ACK flag .RE .PP \fIrst\fR .RS 4 TCP RST flag .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 TCP source port .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIiphdr\fR .RS 4 IP header address .RE .PP \fIpsh\fR .RS 4 TCP PSH flag .RE .PP \fIfin\fR .RS 4 TCP FIN flag .RE .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.recvmsg.3stap000066400000000000000000000035221305163227500266710ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.recvmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.RECVMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.recvmsg \- Receiving TCP message .SH "SYNOPSIS" .sp .nf tcp\&.recvmsg .fi .SH "VALUES" .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 TCP source port .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIdport\fR .RS 4 TCP destination port .RE .PP \fIsize\fR .RS 4 Number of bytes to be received .RE .PP \fIsock\fR .RS 4 Network socket .RE .SH "CONTEXT" .PP The process which receives a tcp message .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.recvmsg.return.3stap000066400000000000000000000035521305163227500302120ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.recvmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.RECVMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.recvmsg.return \- Receiving TCP message complete .SH "SYNOPSIS" .sp .nf tcp\&.recvmsg\&.return .fi .SH "VALUES" .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 TCP source port .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIsize\fR .RS 4 Number of bytes received or error code if an error occurred\&. .RE .PP \fIdport\fR .RS 4 TCP destination port .RE .SH "CONTEXT" .PP The process which receives a tcp message .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.sendmsg.3stap000066400000000000000000000031361305163227500266640ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.sendmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.SENDMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.sendmsg \- Sending a tcp message .SH "SYNOPSIS" .sp .nf tcp\&.sendmsg .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsize\fR .RS 4 Number of bytes to send .RE .PP \fIsock\fR .RS 4 Network socket .RE .PP \fIname\fR .RS 4 Name of this probe .RE .SH "CONTEXT" .PP The process which sends a tcp message .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.sendmsg.return.3stap000066400000000000000000000031111305163227500301730ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.sendmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.SENDMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.sendmsg.return \- Sending TCP message is done .SH "SYNOPSIS" .sp .nf tcp\&.sendmsg\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIsize\fR .RS 4 Number of bytes sent or error code if an error occurred\&. .RE .SH "CONTEXT" .PP The process which sends a tcp message .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.setsockopt.3stap000066400000000000000000000035571305163227500274310ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.setsockopt .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.SETSOCK" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.setsockopt \- Call to \fBsetsockopt\fR .SH "SYNOPSIS" .sp .nf tcp\&.setsockopt .fi .SH "VALUES" .PP \fIoptlen\fR .RS 4 Used to access values for \fBsetsockopt\fR .RE .PP \fIoptstr\fR .RS 4 Resolves optname to a human\-readable format .RE .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIsock\fR .RS 4 Network socket .RE .PP \fIlevel\fR .RS 4 The level at which the socket options will be manipulated .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIoptname\fR .RS 4 TCP socket options (e\&.g\&. TCP_NODELAY, TCP_MAXSEG, etc) .RE .SH "CONTEXT" .PP The process which calls setsockopt .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcp.setsockopt.return.3stap000066400000000000000000000030551305163227500307400ustar00rootroot00000000000000'\" t .\" Title: probe::tcp.setsockopt.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCP\&.SETSOCK" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcp.setsockopt.return \- Return from \fBsetsockopt\fR .SH "SYNOPSIS" .sp .nf tcp\&.setsockopt\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 Name of this probe .RE .PP \fIret\fR .RS 4 Error code (0: no error) .RE .SH "CONTEXT" .PP The process which calls setsockopt .SH SEE ALSO\n .IR tapset::tcp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.ActiveOpens.3stap000066400000000000000000000034451305163227500301370ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.ActiveOpens .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.ACTI" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.ActiveOpens \- Count an active opening of a socket .SH "SYNOPSIS" .sp .nf tcpmib\&.ActiveOpens .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIActiveOpens\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_ACTIVEOPENS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.AttemptFails.3stap000066400000000000000000000034561305163227500303160ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.AttemptFails .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.ATTE" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.AttemptFails \- Count a failed attempt to open a socket .SH "SYNOPSIS" .sp .nf tcpmib\&.AttemptFails .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIAttemptFails\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_ATTEMPTFAILS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.CurrEstab.3stap000066400000000000000000000034301305163227500276030ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.CurrEstab .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.CURR" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.CurrEstab \- Update the count of open sockets .SH "SYNOPSIS" .sp .nf tcpmib\&.CurrEstab .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fICurrEstab\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_CURRESTAB) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.EstabResets.3stap000066400000000000000000000034351305163227500301420ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.EstabResets .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.ESTA" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.EstabResets \- Count the reset of a socket .SH "SYNOPSIS" .sp .nf tcpmib\&.EstabResets .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIEstabResets\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_ESTABRESETS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.InSegs.3stap000066400000000000000000000034551305163227500271100ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.InSegs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.INSE" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.InSegs \- Count an incoming tcp segment .SH "SYNOPSIS" .sp .nf tcpmib\&.InSegs .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR (or \fBipmib_filter_key\fR for tcp v4)\&. If the packet passes the filter is is counted in the global \fIInSegs\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_INSEGS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.OutRsts.3stap000066400000000000000000000034211305163227500273340ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.OutRsts .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.OUTR" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.OutRsts \- Count the sending of a reset packet .SH "SYNOPSIS" .sp .nf tcpmib\&.OutRsts .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIOutRsts\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_OUTRSTS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.OutSegs.3stap000066400000000000000000000034201305163227500273010ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.OutSegs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.OUTS" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.OutSegs \- Count the sending of a TCP segment .SH "SYNOPSIS" .sp .nf tcpmib\&.OutSegs .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIOutSegs\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_OUTSEGS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.PassiveOpens.3stap000066400000000000000000000034551305163227500303370ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.PassiveOpens .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.PASS" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.PassiveOpens \- Count the passive creation of a socket .SH "SYNOPSIS" .sp .nf tcpmib\&.PassiveOpens .fi .SH "VALUES" .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIPassiveOpens\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_PASSIVEOPENS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tcpmib.RetransSegs.3stap000066400000000000000000000034531305163227500301560ustar00rootroot00000000000000'\" t .\" Title: probe::tcpmib.RetransSegs .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: SNMP Information Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TCPMIB\&.RETR" "3stap" "March 2016" "SystemTap Tapset Reference" "SNMP Information Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tcpmib.RetransSegs \- Count the retransmission of a TCP segment .SH "SYNOPSIS" .sp .nf tcpmib\&.RetransSegs .fi .SH "VALUES" .PP \fIsk\fR .RS 4 pointer to the struct sock being acted on .RE .PP \fIop\fR .RS 4 value to be added to the counter (default value of 1) .RE .SH "DESCRIPTION" .PP The packet pointed to by \fIskb\fR is filtered by the function \fBtcpmib_filter_key\fR\&. If the packet passes the filter is is counted in the global \fIRetransSegs\fR (equivalent to SNMP\*(Aqs MIB TCP_MIB_RETRANSSEGS) .SH SEE ALSO\n .IR tapset::tcpmib (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.init.3stap000066400000000000000000000027721305163227500262260ustar00rootroot00000000000000'\" t .\" Title: probe::tty.init .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.INIT" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.init \- Called when a tty is being initalized .SH "SYNOPSIS" .sp .nf tty\&.init .fi .SH "VALUES" .PP \fIdriver_name\fR .RS 4 the driver name .RE .PP \fIname\fR .RS 4 the driver \&.dev_name name .RE .PP \fImodule\fR .RS 4 the module name .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.ioctl.3stap000066400000000000000000000027561305163227500263770ustar00rootroot00000000000000'\" t .\" Title: probe::tty.ioctl .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.IOCTL" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.ioctl \- called when a ioctl is request to the tty .SH "SYNOPSIS" .sp .nf tty\&.ioctl .fi .SH "VALUES" .PP \fIname\fR .RS 4 the file name .RE .PP \fIarg\fR .RS 4 the ioctl argument .RE .PP \fIcmd\fR .RS 4 the ioctl command .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.open.3stap000066400000000000000000000031701305163227500262150ustar00rootroot00000000000000'\" t .\" Title: probe::tty.open .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.OPEN" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.open \- Called when a tty is opened .SH "SYNOPSIS" .sp .nf tty\&.open .fi .SH "VALUES" .PP \fIinode_flags\fR .RS 4 the inode flags .RE .PP \fIfile_flags\fR .RS 4 the file flags .RE .PP \fIfile_name\fR .RS 4 the file name .RE .PP \fIfile_mode\fR .RS 4 the file mode .RE .PP \fIinode_number\fR .RS 4 the inode number .RE .PP \fIinode_state\fR .RS 4 the inode state .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.poll.3stap000066400000000000000000000027151305163227500262260ustar00rootroot00000000000000'\" t .\" Title: probe::tty.poll .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.POLL" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.poll \- Called when a tty device is being polled .SH "SYNOPSIS" .sp .nf tty\&.poll .fi .SH "VALUES" .PP \fIwait_key\fR .RS 4 the wait queue key .RE .PP \fIfile_name\fR .RS 4 the tty file name .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.read.3stap000066400000000000000000000031311305163227500261640ustar00rootroot00000000000000'\" t .\" Title: probe::tty.read .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.READ" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.read \- called when a tty line will be read .SH "SYNOPSIS" .sp .nf tty\&.read .fi .SH "VALUES" .PP \fIbuffer\fR .RS 4 the buffer that will receive the characters .RE .PP \fIdriver_name\fR .RS 4 the driver name .RE .PP \fIfile_name\fR .RS 4 the file name related to the tty .RE .PP \fInr\fR .RS 4 The amount of characters to be read .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.receive.3stap000066400000000000000000000032731305163227500267020ustar00rootroot00000000000000'\" t .\" Title: probe::tty.receive .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.RECEIVE" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.receive \- called when a tty receives a message .SH "SYNOPSIS" .sp .nf tty\&.receive .fi .SH "VALUES" .PP \fIindex\fR .RS 4 The tty Index .RE .PP \fIcount\fR .RS 4 The amount of characters received .RE .PP \fIcp\fR .RS 4 the buffer that was received .RE .PP \fIname\fR .RS 4 the name of the module file .RE .PP \fIdriver_name\fR .RS 4 the driver name .RE .PP \fIid\fR .RS 4 the tty id .RE .PP \fIfp\fR .RS 4 The flag buffer .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.register.3stap000066400000000000000000000030741305163227500271030ustar00rootroot00000000000000'\" t .\" Title: probe::tty.register .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.REGISTE" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.register \- Called when a tty device is registered .SH "SYNOPSIS" .sp .nf tty\&.register .fi .SH "VALUES" .PP \fIindex\fR .RS 4 the tty index requested .RE .PP \fImodule\fR .RS 4 the module name .RE .PP \fIname\fR .RS 4 the driver \&.dev_name name .RE .PP \fIdriver_name\fR .RS 4 the driver name .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.release.3stap000066400000000000000000000032061305163227500266740ustar00rootroot00000000000000'\" t .\" Title: probe::tty.release .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.RELEASE" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.release \- Called when the tty is closed .SH "SYNOPSIS" .sp .nf tty\&.release .fi .SH "VALUES" .PP \fIinode_flags\fR .RS 4 the inode flags .RE .PP \fIfile_mode\fR .RS 4 the file mode .RE .PP \fIfile_name\fR .RS 4 the file name .RE .PP \fIinode_number\fR .RS 4 the inode number .RE .PP \fIfile_flags\fR .RS 4 the file flags .RE .PP \fIinode_state\fR .RS 4 the inode state .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.resize.3stap000066400000000000000000000034241305163227500265570ustar00rootroot00000000000000'\" t .\" Title: probe::tty.resize .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.RESIZE" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.resize \- Called when a terminal resize happens .SH "SYNOPSIS" .sp .nf tty\&.resize .fi .SH "VALUES" .PP \fIold_row\fR .RS 4 the old row value .RE .PP \fIold_xpixel\fR .RS 4 the old xpixel .RE .PP \fIname\fR .RS 4 the tty name .RE .PP \fIold_ypixel\fR .RS 4 the old ypixel .RE .PP \fInew_col\fR .RS 4 the new col value .RE .PP \fIold_col\fR .RS 4 the old col value .RE .PP \fInew_ypixel\fR .RS 4 the new ypixel value .RE .PP \fInew_row\fR .RS 4 the new row value .RE .PP \fInew_xpixel\fR .RS 4 the new xpixel value .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.unregister.3stap000066400000000000000000000031121305163227500274370ustar00rootroot00000000000000'\" t .\" Title: probe::tty.unregister .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.UNREGIS" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.unregister \- Called when a tty device is being unregistered .SH "SYNOPSIS" .sp .nf tty\&.unregister .fi .SH "VALUES" .PP \fIname\fR .RS 4 the driver \&.dev_name name .RE .PP \fIdriver_name\fR .RS 4 the driver name .RE .PP \fImodule\fR .RS 4 the module name .RE .PP \fIindex\fR .RS 4 the tty index requested .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::tty.write.3stap000066400000000000000000000030701305163227500264050ustar00rootroot00000000000000'\" t .\" Title: probe::tty.write .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: TTY Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::TTY\&.WRITE" "3stap" "March 2016" "SystemTap Tapset Reference" "TTY Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::tty.write \- write to the tty line .SH "SYNOPSIS" .sp .nf tty\&.write .fi .SH "VALUES" .PP \fIbuffer\fR .RS 4 the buffer that will be written .RE .PP \fIfile_name\fR .RS 4 the file name related to the tty .RE .PP \fIdriver_name\fR .RS 4 the driver name .RE .PP \fInr\fR .RS 4 The amount of characters .RE .SH SEE ALSO\n .IR tapset::tty (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.disconnect.3stap000066400000000000000000000036251305163227500273620ustar00rootroot00000000000000'\" t .\" Title: probe::udp.disconnect .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.DISCONN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.disconnect \- Fires when a process requests for a UDP disconnection .SH "SYNOPSIS" .sp .nf udp\&.disconnect .fi .SH "VALUES" .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsock\fR .RS 4 Network socket used by the process .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIsport\fR .RS 4 UDP source port .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIdport\fR .RS 4 UDP destination port .RE .PP \fIflags\fR .RS 4 Flags (e\&.g\&. FIN, etc) .RE .SH "CONTEXT" .PP The process which requests a UDP disconnection .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.disconnect.return.3stap000066400000000000000000000035371305163227500307020ustar00rootroot00000000000000'\" t .\" Title: probe::udp.disconnect.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.DISCONN" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.disconnect.return \- UDP has been disconnected successfully .SH "SYNOPSIS" .sp .nf udp\&.disconnect\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIdport\fR .RS 4 UDP destination port .RE .PP \fIret\fR .RS 4 Error code (0: no error) .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsport\fR .RS 4 UDP source port .RE .SH "CONTEXT" .PP The process which requested a UDP disconnection .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.recvmsg.3stap000066400000000000000000000036061305163227500266760ustar00rootroot00000000000000'\" t .\" Title: probe::udp.recvmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.RECVMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.recvmsg \- Fires whenever a UDP message is received .SH "SYNOPSIS" .sp .nf udp\&.recvmsg .fi .SH "VALUES" .PP \fIdport\fR .RS 4 UDP destination port .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIsize\fR .RS 4 Number of bytes received by the process .RE .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIsport\fR .RS 4 UDP source port .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIsock\fR .RS 4 Network socket used by the process .RE .SH "CONTEXT" .PP The process which received a UDP message .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.recvmsg.return.3stap000066400000000000000000000036011305163227500302070ustar00rootroot00000000000000'\" t .\" Title: probe::udp.recvmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.RECVMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.recvmsg.return \- Fires whenever an attempt to receive a UDP message received is completed .SH "SYNOPSIS" .sp .nf udp\&.recvmsg\&.return .fi .SH "VALUES" .PP \fIdport\fR .RS 4 UDP destination port .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIsize\fR .RS 4 Number of bytes received by the process .RE .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIsport\fR .RS 4 UDP source port .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .SH "CONTEXT" .PP The process which received a UDP message .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.sendmsg.3stap000066400000000000000000000036021305163227500266640ustar00rootroot00000000000000'\" t .\" Title: probe::udp.sendmsg .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.SENDMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.sendmsg \- Fires whenever a process sends a UDP message .SH "SYNOPSIS" .sp .nf udp\&.sendmsg .fi .SH "VALUES" .PP \fIsize\fR .RS 4 Number of bytes sent by the process .RE .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIdaddr\fR .RS 4 A string representing the destination IP address .RE .PP \fIdport\fR .RS 4 UDP destination port .RE .PP \fIfamily\fR .RS 4 IP address family .RE .PP \fIsock\fR .RS 4 Network socket used by the process .RE .PP \fIsaddr\fR .RS 4 A string representing the source IP address .RE .PP \fIsport\fR .RS 4 UDP source port .RE .SH "CONTEXT" .PP The process which sent a UDP message .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::udp.sendmsg.return.3stap000066400000000000000000000031261305163227500302030ustar00rootroot00000000000000'\" t .\" Title: probe::udp.sendmsg.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Networking Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::UDP\&.SENDMSG" "3stap" "March 2016" "SystemTap Tapset Reference" "Networking Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::udp.sendmsg.return \- Fires whenever an attempt to send a UDP message is completed .SH "SYNOPSIS" .sp .nf udp\&.sendmsg\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 The name of this probe .RE .PP \fIsize\fR .RS 4 Number of bytes sent by the process .RE .SH "CONTEXT" .PP The process which sent a UDP message .SH SEE ALSO\n .IR tapset::udp (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.brk.3stap000066400000000000000000000031231305163227500256320ustar00rootroot00000000000000'\" t .\" Title: probe::vm.brk .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.BRK" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.brk \- Fires when a brk is requested (i\&.e\&. the heap will be resized) .SH "SYNOPSIS" .sp .nf vm\&.brk .fi .SH "VALUES" .PP \fIlength\fR .RS 4 the length of the memory segment .RE .PP \fIaddress\fR .RS 4 the requested address .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH "CONTEXT" .PP The process calling brk\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kfree.3stap000066400000000000000000000032111305163227500261460ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kfree .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KFREE" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kfree \- Fires when kfree is requested .SH "SYNOPSIS" .sp .nf vm\&.kfree .fi .SH "VALUES" .PP \fIptr\fR .RS 4 pointer to the kmemory allocated which is returned by kmalloc .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIcall_site\fR .RS 4 address of the function calling this kmemory function .RE .PP \fIcaller_function\fR .RS 4 name of the caller function\&. .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kmalloc.3stap000066400000000000000000000035061305163227500265030ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kmalloc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KMALLOC" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kmalloc \- Fires when kmalloc is requested .SH "SYNOPSIS" .sp .nf vm\&.kmalloc .fi .SH "VALUES" .PP \fIbytes_req\fR .RS 4 requested Bytes .RE .PP \fIgfp_flags\fR .RS 4 type of kmemory to allocate .RE .PP \fIbytes_alloc\fR .RS 4 allocated Bytes .RE .PP \fIcaller_function\fR .RS 4 name of the caller function .RE .PP \fIcall_site\fR .RS 4 address of the kmemory function .RE .PP \fIgfp_flag_name\fR .RS 4 type of kmemory to allocate (in String format) .RE .PP \fIptr\fR .RS 4 pointer to the kmemory allocated .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kmalloc_node.3stap000066400000000000000000000035601305163227500275100ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kmalloc_node .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KMALLOC_" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kmalloc_node \- Fires when kmalloc_node is requested .SH "SYNOPSIS" .sp .nf vm\&.kmalloc_node .fi .SH "VALUES" .PP \fIbytes_req\fR .RS 4 requested Bytes .RE .PP \fIgfp_flags\fR .RS 4 type of kmemory to allocate .RE .PP \fIbytes_alloc\fR .RS 4 allocated Bytes .RE .PP \fIcaller_function\fR .RS 4 name of the caller function .RE .PP \fIcall_site\fR .RS 4 address of the function calling this kmemory function .RE .PP \fIgfp_flag_name\fR .RS 4 type of kmemory to allocate(in string format) .RE .PP \fIptr\fR .RS 4 pointer to the kmemory allocated .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kmem_cache_alloc.3stap000066400000000000000000000036061305163227500303100ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kmem_cache_alloc .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KMEM_CAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kmem_cache_alloc \- Fires when kmem_cache_alloc is requested .SH "SYNOPSIS" .sp .nf vm\&.kmem_cache_alloc .fi .SH "VALUES" .PP \fIbytes_alloc\fR .RS 4 allocated Bytes .RE .PP \fIcaller_function\fR .RS 4 name of the caller function\&. .RE .PP \fIgfp_flags\fR .RS 4 type of kmemory to allocate .RE .PP \fIbytes_req\fR .RS 4 requested Bytes .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIptr\fR .RS 4 pointer to the kmemory allocated .RE .PP \fIgfp_flag_name\fR .RS 4 type of kmemory to allocate(in string format) .RE .PP \fIcall_site\fR .RS 4 address of the function calling this kmemory function\&. .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kmem_cache_alloc_node.3stap000066400000000000000000000036241305163227500313150ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kmem_cache_alloc_node .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KMEM_CAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kmem_cache_alloc_node \- Fires when kmem_cache_alloc_node is requested .SH "SYNOPSIS" .sp .nf vm\&.kmem_cache_alloc_node .fi .SH "VALUES" .PP \fIptr\fR .RS 4 pointer to the kmemory allocated .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIcall_site\fR .RS 4 address of the function calling this kmemory function .RE .PP \fIgfp_flag_name\fR .RS 4 type of kmemory to allocate(in string format) .RE .PP \fIgfp_flags\fR .RS 4 type of kmemory to allocate .RE .PP \fIcaller_function\fR .RS 4 name of the caller function .RE .PP \fIbytes_alloc\fR .RS 4 allocated Bytes .RE .PP \fIbytes_req\fR .RS 4 requested Bytes .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.kmem_cache_free.3stap000066400000000000000000000032671305163227500301420ustar00rootroot00000000000000'\" t .\" Title: probe::vm.kmem_cache_free .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.KMEM_CAC" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.kmem_cache_free \- Fires when kmem_cache_free is requested .SH "SYNOPSIS" .sp .nf vm\&.kmem_cache_free .fi .SH "VALUES" .PP \fIcall_site\fR .RS 4 Address of the function calling this kmemory function .RE .PP \fIptr\fR .RS 4 Pointer to the kmemory allocated which is returned by kmem_cache .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIcaller_function\fR .RS 4 Name of the caller function\&. .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.mmap.3stap000066400000000000000000000030661305163227500260140ustar00rootroot00000000000000'\" t .\" Title: probe::vm.mmap .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.MMAP" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.mmap \- Fires when an mmap is requested .SH "SYNOPSIS" .sp .nf vm\&.mmap .fi .SH "VALUES" .PP \fIaddress\fR .RS 4 the requested address .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIlength\fR .RS 4 the length of the memory segment .RE .SH "CONTEXT" .PP The process calling mmap\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.munmap.3stap000066400000000000000000000031021305163227500263460ustar00rootroot00000000000000'\" t .\" Title: probe::vm.munmap .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.MUNMAP" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.munmap \- Fires when an munmap is requested .SH "SYNOPSIS" .sp .nf vm\&.munmap .fi .SH "VALUES" .PP \fIaddress\fR .RS 4 the requested address .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIlength\fR .RS 4 the length of the memory segment .RE .SH "CONTEXT" .PP The process calling munmap\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.oom_kill.3stap000066400000000000000000000031371305163227500266660ustar00rootroot00000000000000'\" t .\" Title: probe::vm.oom_kill .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.OOM_KILL" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.oom_kill \- Fires when a thread is selected for termination by the OOM killer .SH "SYNOPSIS" .sp .nf vm\&.oom_kill .fi .SH "VALUES" .PP \fItask\fR .RS 4 the task being killed .RE .PP \fIname\fR .RS 4 name of the probe point .RE .SH "CONTEXT" .PP The process that tried to consume excessive memory, and thus triggered the OOM\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.pagefault.3stap000066400000000000000000000033411305163227500270260ustar00rootroot00000000000000'\" t .\" Title: probe::vm.pagefault .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.PAGEFAUL" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.pagefault \- Records that a page fault occurred .SH "SYNOPSIS" .sp .nf vm\&.pagefault .fi .SH "VALUES" .PP \fIwrite_access\fR .RS 4 indicates whether this was a write or read access; 1 indicates a write, while 0 indicates a read .RE .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIaddress\fR .RS 4 the address of the faulting memory access; i\&.e\&. the address that caused the page fault .RE .SH "CONTEXT" .PP The process which triggered the fault .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.pagefault.return.3stap000066400000000000000000000033021305163227500303410ustar00rootroot00000000000000'\" t .\" Title: probe::vm.pagefault.return .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.PAGEFAUL" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.pagefault.return \- Indicates what type of fault occurred .SH "SYNOPSIS" .sp .nf vm\&.pagefault\&.return .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIfault_type\fR .RS 4 returns either 0 (VM_FAULT_OOM) for out of memory faults, 2 (VM_FAULT_MINOR) for minor faults, 3 (VM_FAULT_MAJOR) for major faults, or 1 (VM_FAULT_SIGBUS) if the fault was neither OOM, minor fault, nor major fault\&. .RE .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.write_shared.3stap000066400000000000000000000033321305163227500275360ustar00rootroot00000000000000'\" t .\" Title: probe::vm.write_shared .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.WRITE_SH" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.write_shared \- Attempts at writing to a shared page .SH "SYNOPSIS" .sp .nf vm\&.write_shared .fi .SH "VALUES" .PP \fIname\fR .RS 4 name of the probe point .RE .PP \fIaddress\fR .RS 4 the address of the shared write .RE .SH "CONTEXT" .PP The context is the process attempting the write\&. .SH "DESCRIPTION" .PP Fires when a process attempts to write to a shared page\&. If a copy is necessary, this will be followed by a vm\&.write_shared_copy\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::vm.write_shared_copy.3stap000066400000000000000000000034441305163227500305740ustar00rootroot00000000000000'\" t .\" Title: probe::vm.write_shared_copy .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Memory Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::VM\&.WRITE_SH" "3stap" "March 2016" "SystemTap Tapset Reference" "Memory Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::vm.write_shared_copy \- Page copy for shared page write .SH "SYNOPSIS" .sp .nf vm\&.write_shared_copy .fi .SH "VALUES" .PP \fIaddress\fR .RS 4 The address of the shared write .RE .PP \fIname\fR .RS 4 Name of the probe point .RE .PP \fIzero\fR .RS 4 boolean indicating whether it is a zero page (can do a clear instead of a copy) .RE .SH "CONTEXT" .PP The process attempting the write\&. .SH "DESCRIPTION" .PP Fires when a write to a shared page requires a page copy\&. This is always preceded by a vm\&.write_shared\&. .SH SEE ALSO\n .IR tapset::memory (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::workqueue.create.3stap000066400000000000000000000030451305163227500277270ustar00rootroot00000000000000'\" t .\" Title: probe::workqueue.create .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::WORKQUEUE\&.C" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::workqueue.create \- Creating a new workqueue .SH "SYNOPSIS" .sp .nf workqueue\&.create .fi .SH "VALUES" .PP \fIwq_thread\fR .RS 4 task_struct of the workqueue thread .RE .PP \fIcpu\fR .RS 4 cpu for which the worker thread is created .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::workqueue.destroy.3stap000066400000000000000000000027411305163227500301570ustar00rootroot00000000000000'\" t .\" Title: probe::workqueue.destroy .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::WORKQUEUE\&.D" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::workqueue.destroy \- Destroying workqueue .SH "SYNOPSIS" .sp .nf workqueue\&.destroy .fi .SH "VALUES" .PP \fIwq_thread\fR .RS 4 task_struct of the workqueue thread .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::workqueue.execute.3stap000066400000000000000000000031231305163227500301230ustar00rootroot00000000000000'\" t .\" Title: probe::workqueue.execute .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::WORKQUEUE\&.E" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::workqueue.execute \- Executing deferred work .SH "SYNOPSIS" .sp .nf workqueue\&.execute .fi .SH "VALUES" .PP \fIwork_func\fR .RS 4 pointer to handler function .RE .PP \fIwq_thread\fR .RS 4 task_struct of the workqueue thread .RE .PP \fIwork\fR .RS 4 work_struct* being executed .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man3/probe::workqueue.insert.3stap000066400000000000000000000031221305163227500277640ustar00rootroot00000000000000'\" t .\" Title: probe::workqueue.insert .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: March 2016 .\" Manual: Interrupt Request (IRQ) Tapset .\" Source: SystemTap Tapset Reference .\" Language: English .\" .TH "PROBE::WORKQUEUE\&.I" "3stap" "March 2016" "SystemTap Tapset Reference" "Interrupt Request (IRQ) Tapset" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" probe::workqueue.insert \- Queuing work on a workqueue .SH "SYNOPSIS" .sp .nf workqueue\&.insert .fi .SH "VALUES" .PP \fIwork\fR .RS 4 work_struct* being queued .RE .PP \fIwq_thread\fR .RS 4 task_struct of the workqueue thread .RE .PP \fIwork_func\fR .RS 4 pointer to handler function .RE .SH SEE ALSO\n .IR tapset::irq (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/000077500000000000000000000000001305163227500233405ustar00rootroot00000000000000systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ansi.3stap000066400000000000000000000036751305163227500266660ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::ANSI 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ansi \- systemtap ansi tapset .SH DESCRIPTION .TP .P .TP .B ansi_clear_screen Move cursor to top left and clear screen. .IP See .IR function::ansi_clear_screen (3stap) for details. .P .TP .B ansi_set_color Set the ansi Select Graphic Rendition mode. .IP See .IR function::ansi_set_color (3stap) for details. .P .TP .B ansi_set_color Set the ansi Select Graphic Rendition mode. .IP See .IR function::ansi_set_color (3stap) for details. .P .TP .B ansi_set_color Set the ansi Select Graphic Rendition mode. .IP See .IR function::ansi_set_color (3stap) for details. .P .TP .B ansi_reset_color Resets Select Graphic Rendition mode. .IP See .IR function::ansi_reset_color (3stap) for details. .P .TP .B ansi_new_line Move cursor to new line. .IP See .IR function::ansi_new_line (3stap) for details. .P .TP .B ansi_cursor_move Move cursor to new coordinates. .IP See .IR function::ansi_cursor_move (3stap) for details. .P .TP .B ansi_cursor_hide Hides the cursor. .IP See .IR function::ansi_cursor_hide (3stap) for details. .P .TP .B ansi_cursor_save Saves the cursor position. .IP See .IR function::ansi_cursor_save (3stap) for details. .P .TP .B ansi_cursor_restore Restores a previously saved cursor position. .IP See .IR function::ansi_cursor_restore (3stap) for details. .P .TP .B ansi_cursor_show Shows the cursor. .IP See .IR function::ansi_cursor_show (3stap) for details. .SH SEE ALSO .BR .IR \%function::ansi_clear_screen (3stap), .BR .IR \%function::ansi_set_color (3stap), .BR .IR \%function::ansi_reset_color (3stap), .BR .IR \%function::ansi_new_line (3stap), .BR .IR \%function::ansi_cursor_move (3stap), .BR .IR \%function::ansi_cursor_hide (3stap), .BR .IR \%function::ansi_cursor_save (3stap), .BR .IR \%function::ansi_cursor_restore (3stap), .BR .IR \%function::ansi_cursor_show (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::atomic.3stap000066400000000000000000000010771305163227500272020ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::ATOMIC 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::atomic \- systemtap atomic tapset .SH DESCRIPTION .TP .P .TP .B atomic_read Retrieves an atomic variable from kernel memory .IP See .IR function::atomic_read (3stap) for details. .P .TP .B atomic_long_read Retrieves an atomic long variable from kernel memory .IP See .IR function::atomic_long_read (3stap) for details. .SH SEE ALSO .BR .IR \%function::atomic_read (3stap), .BR .IR \%function::atomic_long_read (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::context-caller.3stap000066400000000000000000000014111305163227500306420ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONTEXT-CALLER 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::context-caller \- systemtap context-caller tapset .SH DESCRIPTION Provides caller and caller_addr function for context for kernel and user space. .TP .P .TP .B callers Return first n elements of kernel stack backtrace .IP See .IR function::callers (3stap) for details. .P .TP .B caller Return name and address of calling function .IP See .IR function::caller (3stap) for details. .P .TP .B caller_addr Return caller address .IP See .IR function::caller_addr (3stap) for details. .SH SEE ALSO .BR .IR \%function::callers (3stap), .BR .IR \%function::caller (3stap), .BR .IR \%function::caller_addr (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::context-envvar.3stap000066400000000000000000000011541305163227500307050ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONTEXT-ENVVAR 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::context-envvar \- systemtap context-envvar tapset .SH DESCRIPTION Context functions provide additional information about where an event occurred. These functions can provide information such as a backtrace to where the event occurred and the current register values for the processor. .TP .P .TP .B env_var Fetch environment variable from current process .IP See .IR function::env_var (3stap) for details. .SH SEE ALSO .BR .IR \%function::env_var (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::context-symbols.3stap000066400000000000000000000050061305163227500310740ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONTEXT-SYMBOLS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::context-symbols \- systemtap context-symbols tapset .SH DESCRIPTION Context functions provide additional information about where an event occurred. These functions can provide information such as a backtrace to where the event occurred and the current register values for the processor. .TP .P .TP .B stack Return address at given depth of kernel stack backtrace .IP See .IR function::stack (3stap) for details. .P .TP .B print_stack Print out kernel stack from string .IP See .IR function::print_stack (3stap) for details. .P .TP .B sprint_stack Return stack for kernel addresses from string .IP See .IR function::sprint_stack (3stap) for details. .P .TP .B probefunc Return the probe point's function name, if known .IP See .IR function::probefunc (3stap) for details. .P .TP .B probemod Return the probe point's kernel module name .IP See .IR function::probemod (3stap) for details. .P .TP .B modname Return the kernel module name loaded at the address .IP See .IR function::modname (3stap) for details. .P .TP .B symname Return the kernel symbol associated with the given address .IP See .IR function::symname (3stap) for details. .P .TP .B symdata Return the kernel symbol and module offset for the address .IP See .IR function::symdata (3stap) for details. .P .TP .B print_syms Print out kernel stack from string .IP See .IR function::print_syms (3stap) for details. .P .TP .B sprint_syms Return stack for kernel addresses from string .IP See .IR function::sprint_syms (3stap) for details. .P .TP .B symfileline Return the file name and line number of an address. .IP See .IR function::symfileline (3stap) for details. .P .TP .B usymfile Return the file name of a given address. .IP See .IR function::usymfile (3stap) for details. .P .TP .B usymline Return the line number of an address. .IP See .IR function::usymline (3stap) for details. .SH SEE ALSO .BR .IR \%function::stack (3stap), .BR .IR \%function::print_stack (3stap), .BR .IR \%function::sprint_stack (3stap), .BR .IR \%function::probefunc (3stap), .BR .IR \%function::probemod (3stap), .BR .IR \%function::modname (3stap), .BR .IR \%function::symname (3stap), .BR .IR \%function::symdata (3stap), .BR .IR \%function::print_syms (3stap), .BR .IR \%function::sprint_syms (3stap), .BR .IR \%function::symfileline (3stap), .BR .IR \%function::usymfile (3stap), .BR .IR \%function::usymline (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::context-unwind.3stap000066400000000000000000000021341305163227500307070ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONTEXT-UNWIND 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::context-unwind \- systemtap context-unwind tapset .SH DESCRIPTION Context functions provide additional information about where an event occurred. These functions can provide information such as a backtrace to where the event occurred and the current register values for the processor. .TP .P .TP .B print_backtrace Print kernel stack back trace .IP See .IR function::print_backtrace (3stap) for details. .P .TP .B sprint_backtrace Return stack back trace as string .IP See .IR function::sprint_backtrace (3stap) for details. .P .TP .B backtrace Hex backtrace of current kernel stack .IP See .IR function::backtrace (3stap) for details. .P .TP .B task_backtrace Hex backtrace of an arbitrary task .IP See .IR function::task_backtrace (3stap) for details. .SH SEE ALSO .BR .IR \%function::print_backtrace (3stap), .BR .IR \%function::sprint_backtrace (3stap), .BR .IR \%function::backtrace (3stap), .BR .IR \%function::task_backtrace (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::context.3stap000066400000000000000000000165141305163227500274140ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONTEXT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::context \- systemtap context tapset .SH DESCRIPTION Context functions provide additional information about where an event occurred. These functions can provide information such as a backtrace to where the event occurred and the current register values for the processor. .TP .P .TP .B print_regs Print a register dump .IP See .IR function::print_regs (3stap) for details. .P .TP .B pp Returns the active probe point .IP See .IR function::pp (3stap) for details. .P .TP .B ppfunc Returns the function name parsed from pp() .IP See .IR function::ppfunc (3stap) for details. .P .TP .B probe_type The low level probe handler type of the current probe. .IP See .IR function::probe_type (3stap) for details. .P .TP .B execname Returns the execname of a target process (or group of processes) .IP See .IR function::execname (3stap) for details. .P .TP .B pid Returns the ID of a target process .IP See .IR function::pid (3stap) for details. .P .TP .B ns_pid Returns the ID of a target process as seen in a pid namespace .IP See .IR function::ns_pid (3stap) for details. .P .TP .B tid Returns the thread ID of a target process .IP See .IR function::tid (3stap) for details. .P .TP .B ns_tid Returns the thread ID of a target process as seen in a pid namespace .IP See .IR function::ns_tid (3stap) for details. .P .TP .B ppid Returns the process ID of a target process's parent process .IP See .IR function::ppid (3stap) for details. .P .TP .B ns_ppid Returns the process ID of a target process's parent process as seen in a pid namespace .IP See .IR function::ns_ppid (3stap) for details. .P .TP .B pgrp Returns the process group ID of the current process .IP See .IR function::pgrp (3stap) for details. .P .TP .B ns_pgrp Returns the process group ID of the current process as seen in a pid namespace .IP See .IR function::ns_pgrp (3stap) for details. .P .TP .B sid Returns the session ID of the current process .IP See .IR function::sid (3stap) for details. .P .TP .B ns_sid Returns the session ID of the current process as seen in a pid namespace .IP See .IR function::ns_sid (3stap) for details. .P .TP .B pexecname Returns the execname of a target process's parent process .IP See .IR function::pexecname (3stap) for details. .P .TP .B gid Returns the group ID of a target process .IP See .IR function::gid (3stap) for details. .P .TP .B ns_gid Returns the group ID of a target process as seen in a user namespace .IP See .IR function::ns_gid (3stap) for details. .P .TP .B egid Returns the effective gid of a target process .IP See .IR function::egid (3stap) for details. .P .TP .B ns_egid Returns the effective gid of a target process as seen in a user namespace .IP See .IR function::ns_egid (3stap) for details. .P .TP .B uid Returns the user ID of a target process .IP See .IR function::uid (3stap) for details. .P .TP .B ns_uid Returns the user ID of a target process as seen in a user namespace .IP See .IR function::ns_uid (3stap) for details. .P .TP .B euid Return the effective uid of a target process .IP See .IR function::euid (3stap) for details. .P .TP .B ns_euid Returns the effective user ID of a target process as seen in a user namespace .IP See .IR function::ns_euid (3stap) for details. .P .TP .B is_myproc Determines if the current probe point has occurred in the user's own process .IP See .IR function::is_myproc (3stap) for details. .P .TP .B cpuid Returns the current cpu number .IP See .IR function::cpuid (3stap) for details. .P .TP .B cpu Returns the current cpu number .IP See .IR function::cpu (3stap) for details. .P .TP .B registers_valid Determines validity of register() and u_register() in current context .IP See .IR function::registers_valid (3stap) for details. .P .TP .B user_mode Determines if probe point occurs in user-mode .IP See .IR function::user_mode (3stap) for details. .P .TP .B is_return Whether the current probe context is a return probe .IP See .IR function::is_return (3stap) for details. .P .TP .B target Return the process ID of the target process .IP See .IR function::target (3stap) for details. .P .TP .B module_name The module name of the current script .IP See .IR function::module_name (3stap) for details. .P .TP .B module_size The module size of the current script .IP See .IR function::module_size (3stap) for details. .P .TP .B stp_pid The process id of the stapio process .IP See .IR function::stp_pid (3stap) for details. .P .TP .B remote_id The index of this instance in a remote execution. .IP See .IR function::remote_id (3stap) for details. .P .TP .B remote_uri The name of this instance in a remote execution. .IP See .IR function::remote_uri (3stap) for details. .P .TP .B stack_size Return the size of the kernel stack .IP See .IR function::stack_size (3stap) for details. .P .TP .B stack_used Returns the amount of kernel stack used .IP See .IR function::stack_used (3stap) for details. .P .TP .B stack_unused Returns the amount of kernel stack currently available .IP See .IR function::stack_unused (3stap) for details. .P .TP .B addr Address of the current probe point. .IP See .IR function::addr (3stap) for details. .P .TP .B uaddr User space address of current running task .IP See .IR function::uaddr (3stap) for details. .P .TP .B cmdline_args Fetch command line arguments from current process .IP See .IR function::cmdline_args (3stap) for details. .P .TP .B cmdline_arg Fetch a command line argument .IP See .IR function::cmdline_arg (3stap) for details. .P .TP .B cmdline_str Fetch all command line arguments from current process .IP See .IR function::cmdline_str (3stap) for details. .SH SEE ALSO .BR .IR \%function::print_regs (3stap), .BR .IR \%function::pp (3stap), .BR .IR \%function::ppfunc (3stap), .BR .IR \%function::probe_type (3stap), .BR .IR \%function::execname (3stap), .BR .IR \%function::pid (3stap), .BR .IR \%function::ns_pid (3stap), .BR .IR \%function::tid (3stap), .BR .IR \%function::ns_tid (3stap), .BR .IR \%function::ppid (3stap), .BR .IR \%function::ns_ppid (3stap), .BR .IR \%function::pgrp (3stap), .BR .IR \%function::ns_pgrp (3stap), .BR .IR \%function::sid (3stap), .BR .IR \%function::ns_sid (3stap), .BR .IR \%function::pexecname (3stap), .BR .IR \%function::gid (3stap), .BR .IR \%function::ns_gid (3stap), .BR .IR \%function::egid (3stap), .BR .IR \%function::ns_egid (3stap), .BR .IR \%function::uid (3stap), .BR .IR \%function::ns_uid (3stap), .BR .IR \%function::euid (3stap), .BR .IR \%function::ns_euid (3stap), .BR .IR \%function::is_myproc (3stap), .BR .IR \%function::cpuid (3stap), .BR .IR \%function::cpu (3stap), .BR .IR \%function::registers_valid (3stap), .BR .IR \%function::user_mode (3stap), .BR .IR \%function::is_return (3stap), .BR .IR \%function::target (3stap), .BR .IR \%function::module_name (3stap), .BR .IR \%function::module_size (3stap), .BR .IR \%function::stp_pid (3stap), .BR .IR \%function::remote_id (3stap), .BR .IR \%function::remote_uri (3stap), .BR .IR \%function::stack_size (3stap), .BR .IR \%function::stack_used (3stap), .BR .IR \%function::stack_unused (3stap), .BR .IR \%function::addr (3stap), .BR .IR \%function::uaddr (3stap), .BR .IR \%function::cmdline_args (3stap), .BR .IR \%function::cmdline_arg (3stap), .BR .IR \%function::cmdline_str (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::conversions-guru.3stap000066400000000000000000000027051305163227500312550ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONVERSIONS-GURU 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::conversions-guru \- systemtap conversions-guru tapset .SH DESCRIPTION .TP .P .TP .B set_kernel_string Writes a string to kernel memory .IP See .IR function::set_kernel_string (3stap) for details. .P .TP .B set_kernel_string_n Writes a string of given length to kernel memory .IP See .IR function::set_kernel_string_n (3stap) for details. .P .TP .B set_kernel_long Writes a long value to kernel memory .IP See .IR function::set_kernel_long (3stap) for details. .P .TP .B set_kernel_int Writes an int value to kernel memory .IP See .IR function::set_kernel_int (3stap) for details. .P .TP .B set_kernel_short Writes a short value to kernel memory .IP See .IR function::set_kernel_short (3stap) for details. .P .TP .B set_kernel_char Writes a char value to kernel memory .IP See .IR function::set_kernel_char (3stap) for details. .P .TP .B set_kernel_pointer Writes a pointer value to kernel memory. .IP See .IR function::set_kernel_pointer (3stap) for details. .SH SEE ALSO .BR .IR \%function::set_kernel_string (3stap), .BR .IR \%function::set_kernel_string_n (3stap), .BR .IR \%function::set_kernel_long (3stap), .BR .IR \%function::set_kernel_int (3stap), .BR .IR \%function::set_kernel_short (3stap), .BR .IR \%function::set_kernel_char (3stap), .BR .IR \%function::set_kernel_pointer (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::conversions.3stap000066400000000000000000000055141305163227500302760ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CONVERSIONS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::conversions \- systemtap conversions tapset .SH DESCRIPTION .TP .P .TP .B kernel_string Retrieves string from kernel memory .IP See .IR function::kernel_string (3stap) for details. .P .TP .B kernel_string Retrieves string from kernel memory with alternative error string .IP See .IR function::kernel_string (3stap) for details. .P .TP .B kernel_string_quoted Retrieves and quotes string from kernel memory .IP See .IR function::kernel_string_quoted (3stap) for details. .P .TP .B kernel_string_n Retrieves string of given length from kernel memory .IP See .IR function::kernel_string_n (3stap) for details. .P .TP .B kernel_string_utf32 Retrieves UTF-32 string from kernel memory .IP See .IR function::kernel_string_utf32 (3stap) for details. .P .TP .B kernel_string_utf32 Retrieves UTF-32 string from kernel memory with alternative error string .IP See .IR function::kernel_string_utf32 (3stap) for details. .P .TP .B kernel_string_quoted_utf32 Quote given UTF-32 kernel string. .IP See .IR function::kernel_string_quoted_utf32 (3stap) for details. .P .TP .B kernel_string_utf16 Retrieves UTF-16 string from kernel memory .IP See .IR function::kernel_string_utf16 (3stap) for details. .P .TP .B kernel_string_utf16 Retrieves UTF-16 string from kernel memory with alternative error string .IP See .IR function::kernel_string_utf16 (3stap) for details. .P .TP .B kernel_string_quoted_utf16 Quote given kernel UTF-16 string. .IP See .IR function::kernel_string_quoted_utf16 (3stap) for details. .P .TP .B kernel_long Retrieves a long value stored in kernel memory .IP See .IR function::kernel_long (3stap) for details. .P .TP .B kernel_int Retrieves an int value stored in kernel memory .IP See .IR function::kernel_int (3stap) for details. .P .TP .B kernel_short Retrieves a short value stored in kernel memory .IP See .IR function::kernel_short (3stap) for details. .P .TP .B kernel_char Retrieves a char value stored in kernel memory .IP See .IR function::kernel_char (3stap) for details. .P .TP .B kernel_pointer Retrieves a pointer value stored in kernel memory .IP See .IR function::kernel_pointer (3stap) for details. .SH SEE ALSO .BR .IR \%function::kernel_string (3stap), .BR .IR \%function::kernel_string_quoted (3stap), .BR .IR \%function::kernel_string_n (3stap), .BR .IR \%function::kernel_string_utf32 (3stap), .BR .IR \%function::kernel_string_quoted_utf32 (3stap), .BR .IR \%function::kernel_string_utf16 (3stap), .BR .IR \%function::kernel_string_quoted_utf16 (3stap), .BR .IR \%function::kernel_long (3stap), .BR .IR \%function::kernel_int (3stap), .BR .IR \%function::kernel_short (3stap), .BR .IR \%function::kernel_char (3stap), .BR .IR \%function::kernel_pointer (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ctime.3stap000066400000000000000000000010031305163227500270140ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::CTIME 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ctime \- systemtap ctime tapset .SH DESCRIPTION .TP .P .TP .B ctime Convert seconds since epoch into human readable date/time string .IP See .IR function::ctime (3stap) for details. .P .TP .B ctime Convert seconds since epoch into human readable date/time string .IP See .IR function::ctime (3stap) for details. .SH SEE ALSO .BR .IR \%function::ctime (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::dentry.3stap000066400000000000000000000003311305163227500272230ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::DENTRY 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::dentry \- systemtap dentry tapset .SH DESCRIPTION .TP .SH SEE ALSO .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::dev.3stap000066400000000000000000000016301305163227500264770ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::DEV 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::dev \- systemtap dev tapset .SH DESCRIPTION .TP .P .TP .B MAJOR Extract major device number from a kernel device number (kdev_t) .IP See .IR function::MAJOR (3stap) for details. .P .TP .B MINOR Extract minor device number from a kernel device number (kdev_t) .IP See .IR function::MINOR (3stap) for details. .P .TP .B MKDEF Creates a value that can be compared to a kernel device number (kdev_t) .IP See .IR function::MKDEF (3stap) for details. .P .TP .B usrdev2kerndev Converts a user-space device number into the format used in the kernel .IP See .IR function::usrdev2kerndev (3stap) for details. .SH SEE ALSO .BR .IR \%function::MAJOR (3stap), .BR .IR \%function::MINOR (3stap), .BR .IR \%function::MKDEF (3stap), .BR .IR \%function::usrdev2kerndev (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::errno.3stap000066400000000000000000000015031305163227500270450ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::ERRNO 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::errno \- systemtap errno tapset .SH DESCRIPTION .TP .P .TP .B errno_str Symbolic string associated with error code .IP See .IR function::errno_str (3stap) for details. .P .TP .B returnval Possible return value of probed function .IP See .IR function::returnval (3stap) for details. .P .TP .B returnstr Formats the return value as a string .IP See .IR function::returnstr (3stap) for details. .P .TP .B return_str Formats the return value as a string .IP See .IR function::return_str (3stap) for details. .SH SEE ALSO .BR .IR \%function::errno_str (3stap), .BR .IR \%function::returnval (3stap), .BR .IR \%function::returnstr (3stap), .BR .IR \%function::return_str (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::guru-delay.3stap000066400000000000000000000013431305163227500300000ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::GURU-DELAY 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::guru-delay \- systemtap guru-delay tapset .SH DESCRIPTION Functions in the guru-delay tapset allow a probe handler to insert deliberate delays. This is sometimes useful as a fault-injection aid. Due to its likelihood of interference with the kernel, guru mode is required, and overload-prevention is suppressed. .TP .P .TP .B mdelay millisecond delay .IP See .IR function::mdelay (3stap) for details. .P .TP .B udelay microsecond delay .IP See .IR function::udelay (3stap) for details. .SH SEE ALSO .BR .IR \%function::mdelay (3stap), .BR .IR \%function::udelay (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::guru-signal.3stap000066400000000000000000000010641305163227500301570ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::GURU-SIGNAL 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::guru-signal \- systemtap guru-signal tapset .SH DESCRIPTION Functions in the guru-signal tapset allow a probe handler to queue a user-space signals. Such operations may only be safe from some kinds of probe points, therefore are guru-mode only. .TP .P .TP .B raise raise a signal in the current thread .IP See .IR function::raise (3stap) for details. .SH SEE ALSO .BR .IR \%function::raise (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::indent.3stap000066400000000000000000000015761305163227500272130ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::INDENT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::indent \- systemtap indent tapset .SH DESCRIPTION .TP .P .TP .B thread_indent returns an amount of space with the current task information .IP See .IR function::thread_indent (3stap) for details. .P .TP .B thread_indent_depth returns the nested-depth of the current task .IP See .IR function::thread_indent_depth (3stap) for details. .P .TP .B indent returns an amount of space to indent .IP See .IR function::indent (3stap) for details. .P .TP .B indent_depth returns the global nested-depth .IP See .IR function::indent_depth (3stap) for details. .SH SEE ALSO .BR .IR \%function::thread_indent (3stap), .BR .IR \%function::thread_indent_depth (3stap), .BR .IR \%function::indent (3stap), .BR .IR \%function::indent_depth (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::inet.3stap000066400000000000000000000021511305163227500266570ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::INET 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::inet \- systemtap inet tapset .SH DESCRIPTION .TP .P .TP .B htonll Convert 64-bit long long from host to network order .IP See .IR function::htonll (3stap) for details. .P .TP .B htonl Convert 32-bit long from host to network order .IP See .IR function::htonl (3stap) for details. .P .TP .B htons Convert 16-bit short from host to network order .IP See .IR function::htons (3stap) for details. .P .TP .B ntohll Convert 64-bit long long from network to host order .IP See .IR function::ntohll (3stap) for details. .P .TP .B ntohl Convert 32-bit long from network to host order .IP See .IR function::ntohl (3stap) for details. .P .TP .B ntohs Convert 16-bit short from network to host order .IP See .IR function::ntohs (3stap) for details. .SH SEE ALSO .BR .IR \%function::htonll (3stap), .BR .IR \%function::htonl (3stap), .BR .IR \%function::htons (3stap), .BR .IR \%function::ntohll (3stap), .BR .IR \%function::ntohl (3stap), .BR .IR \%function::ntohs (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::inet_sock.3stap000066400000000000000000000011441305163227500276770ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::INET_SOCK 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::inet_sock \- systemtap inet_sock tapset .SH DESCRIPTION .TP .P .TP .B inet_get_local_port Provide local port number for a kernel socket .IP See .IR function::inet_get_local_port (3stap) for details. .P .TP .B inet_get_ip_source Provide IP source address string for a kernel socket .IP See .IR function::inet_get_ip_source (3stap) for details. .SH SEE ALSO .BR .IR \%function::inet_get_local_port (3stap), .BR .IR \%function::inet_get_ip_source (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ioblock.3stap000066400000000000000000000022421305163227500273430ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IOBLOCK 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ioblock \- systemtap ioblock tapset .SH DESCRIPTION .TP .P .TP .B ioblock.request Fires whenever making a generic block I/O request. .IP See .IR probe::ioblock.request (3stap) for details. .P .TP .B ioblock.end Fires whenever a block I/O transfer is complete. .IP See .IR probe::ioblock.end (3stap) for details. .P .TP .B ioblock_trace.bounce Fires whenever a buffer bounce is needed for at least one page of a block IO request. .IP See .IR probe::ioblock_trace.bounce (3stap) for details. .P .TP .B ioblock_trace.request Fires just as a generic block I/O request is created for a bio. .IP See .IR probe::ioblock_trace.request (3stap) for details. .P .TP .B ioblock_trace.end Fires whenever a block I/O transfer is complete. .IP See .IR probe::ioblock_trace.end (3stap) for details. .SH SEE ALSO .BR .IR \%probe::ioblock.request (3stap), .BR .IR \%probe::ioblock.end (3stap), .BR .IR \%probe::ioblock_trace.bounce (3stap), .BR .IR \%probe::ioblock_trace.request (3stap), .BR .IR \%probe::ioblock_trace.end (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ioscheduler.3stap000066400000000000000000000061601305163227500302320ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IOSCHEDULER 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ioscheduler \- systemtap ioscheduler tapset .SH DESCRIPTION This family of probe points is used to probe IO scheduler activities. .TP .P .TP .B ioscheduler.elv_next_request Fires when a request is retrieved from the request queue .IP See .IR probe::ioscheduler.elv_next_request (3stap) for details. .P .TP .B ioscheduler.elv_next_request.return Fires when a request retrieval issues a return signal .IP See .IR probe::ioscheduler.elv_next_request.return (3stap) for details. .P .TP .B ioscheduler.elv_completed_request Fires when a request is completed .IP See .IR probe::ioscheduler.elv_completed_request (3stap) for details. .P .TP .B ioscheduler.elv_add_request.kp kprobe based probe to indicate that a request was added to the request queue .IP See .IR probe::ioscheduler.elv_add_request.kp (3stap) for details. .P .TP .B ioscheduler.elv_add_request.tp tracepoint based probe to indicate a request is added to the request queue. .IP See .IR probe::ioscheduler.elv_add_request.tp (3stap) for details. .P .TP .B ioscheduler.elv_add_request probe to indicate request is added to the request queue. .IP See .IR probe::ioscheduler.elv_add_request (3stap) for details. .P .TP .B ioscheduler_trace.elv_completed_request Fires when a request is .IP See .IR probe::ioscheduler_trace.elv_completed_request (3stap) for details. .P .TP .B ioscheduler_trace.elv_issue_request Fires when a request is .IP See .IR probe::ioscheduler_trace.elv_issue_request (3stap) for details. .P .TP .B ioscheduler_trace.elv_requeue_request Fires when a request is .IP See .IR probe::ioscheduler_trace.elv_requeue_request (3stap) for details. .P .TP .B ioscheduler_trace.elv_abort_request Fires when a request is aborted. .IP See .IR probe::ioscheduler_trace.elv_abort_request (3stap) for details. .P .TP .B ioscheduler_trace.plug Fires when a request queue is plugged; .IP See .IR probe::ioscheduler_trace.plug (3stap) for details. .P .TP .B ioscheduler_trace.unplug_io Fires when a request queue is unplugged; .IP See .IR probe::ioscheduler_trace.unplug_io (3stap) for details. .P .TP .B ioscheduler_trace.unplug_timer Fires when unplug timer associated .IP See .IR probe::ioscheduler_trace.unplug_timer (3stap) for details. .SH SEE ALSO .BR .IR \%probe::ioscheduler.elv_next_request (3stap), .BR .IR \%probe::ioscheduler.elv_next_request.return (3stap), .BR .IR \%probe::ioscheduler.elv_completed_request (3stap), .BR .IR \%probe::ioscheduler.elv_add_request.kp (3stap), .BR .IR \%probe::ioscheduler.elv_add_request.tp (3stap), .BR .IR \%probe::ioscheduler.elv_add_request (3stap), .BR .IR \%probe::ioscheduler_trace.elv_completed_request (3stap), .BR .IR \%probe::ioscheduler_trace.elv_issue_request (3stap), .BR .IR \%probe::ioscheduler_trace.elv_requeue_request (3stap), .BR .IR \%probe::ioscheduler_trace.elv_abort_request (3stap), .BR .IR \%probe::ioscheduler_trace.plug (3stap), .BR .IR \%probe::ioscheduler_trace.unplug_io (3stap), .BR .IR \%probe::ioscheduler_trace.unplug_timer (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ip.3stap000066400000000000000000000010371305163227500263320ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IP 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ip \- systemtap ip tapset .SH DESCRIPTION .TP .P .TP .B format_ipaddr Returns a string representation for an IP address .IP See .IR function::format_ipaddr (3stap) for details. .P .TP .B ip_ntop Returns a string representation for an IPv4 address .IP See .IR function::ip_ntop (3stap) for details. .SH SEE ALSO .BR .IR \%function::format_ipaddr (3stap), .BR .IR \%function::ip_ntop (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ipmib-filter-default.3stap000066400000000000000000000006661305163227500317360ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IPMIB-FILTER-DEFAULT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ipmib-filter-default \- systemtap ipmib-filter-default tapset .SH DESCRIPTION .TP .P .TP .B ipmib_filter_key Default filter function for ipmib.* probes .IP See .IR function::ipmib_filter_key (3stap) for details. .SH SEE ALSO .BR .IR \%function::ipmib_filter_key (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ipmib.3stap000066400000000000000000000055551305163227500270330ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IPMIB 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ipmib \- systemtap ipmib tapset .SH DESCRIPTION .TP .P .TP .B ipmib_remote_addr Get the remote ip address .IP See .IR function::ipmib_remote_addr (3stap) for details. .P .TP .B ipmib_local_addr Get the local ip address .IP See .IR function::ipmib_local_addr (3stap) for details. .P .TP .B ipmib_tcp_remote_port Get the remote tcp port .IP See .IR function::ipmib_tcp_remote_port (3stap) for details. .P .TP .B ipmib_tcp_local_port Get the local tcp port .IP See .IR function::ipmib_tcp_local_port (3stap) for details. .P .TP .B ipmib_get_proto Get the protocol value .IP See .IR function::ipmib_get_proto (3stap) for details. .P .TP .B ipmib.InReceives Count an arriving packet .IP See .IR probe::ipmib.InReceives (3stap) for details. .P .TP .B ipmib.InNoRoutes Count an arriving packet with no matching socket .IP See .IR probe::ipmib.InNoRoutes (3stap) for details. .P .TP .B ipmib.InAddrErrors Count arriving packets with an incorrect address .IP See .IR probe::ipmib.InAddrErrors (3stap) for details. .P .TP .B ipmib.InUnknownProtos Count arriving packets with an unbound proto .IP See .IR probe::ipmib.InUnknownProtos (3stap) for details. .P .TP .B ipmib.InDiscards Count discarded inbound packets .IP See .IR probe::ipmib.InDiscards (3stap) for details. .P .TP .B ipmib.ForwDatagrams Count forwarded packet .IP See .IR probe::ipmib.ForwDatagrams (3stap) for details. .P .TP .B ipmib.OutRequests Count a request to send a packet .IP See .IR probe::ipmib.OutRequests (3stap) for details. .P .TP .B ipmib.ReasmTimeout Count Reassembly Timeouts .IP See .IR probe::ipmib.ReasmTimeout (3stap) for details. .P .TP .B ipmib.ReasmReqds Count number of packet fragments reassembly requests .IP See .IR probe::ipmib.ReasmReqds (3stap) for details. .P .TP .B ipmib.FragOKs Count datagram fragmented successfully .IP See .IR probe::ipmib.FragOKs (3stap) for details. .P .TP .B ipmib.FragFails Count datagram fragmented unsuccessfully .IP See .IR probe::ipmib.FragFails (3stap) for details. .SH SEE ALSO .BR .IR \%function::ipmib_remote_addr (3stap), .BR .IR \%function::ipmib_local_addr (3stap), .BR .IR \%function::ipmib_tcp_remote_port (3stap), .BR .IR \%function::ipmib_tcp_local_port (3stap), .BR .IR \%function::ipmib_get_proto (3stap), .BR .IR \%probe::ipmib.InReceives (3stap), .BR .IR \%probe::ipmib.InNoRoutes (3stap), .BR .IR \%probe::ipmib.InAddrErrors (3stap), .BR .IR \%probe::ipmib.InUnknownProtos (3stap), .BR .IR \%probe::ipmib.InDiscards (3stap), .BR .IR \%probe::ipmib.ForwDatagrams (3stap), .BR .IR \%probe::ipmib.OutRequests (3stap), .BR .IR \%probe::ipmib.ReasmTimeout (3stap), .BR .IR \%probe::ipmib.ReasmReqds (3stap), .BR .IR \%probe::ipmib.FragOKs (3stap), .BR .IR \%probe::ipmib.FragFails (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::irq.3stap000066400000000000000000000027701305163227500265220ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::IRQ 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::irq \- systemtap irq tapset .SH DESCRIPTION .TP .P .TP .B workqueue.create Creating a new workqueue .IP See .IR probe::workqueue.create (3stap) for details. .P .TP .B workqueue.insert Queuing work on a workqueue .IP See .IR probe::workqueue.insert (3stap) for details. .P .TP .B workqueue.execute Executing deferred work .IP See .IR probe::workqueue.execute (3stap) for details. .P .TP .B workqueue.destroy Destroying workqueue .IP See .IR probe::workqueue.destroy (3stap) for details. .P .TP .B irq_handler.entry Execution of interrupt handler starting .IP See .IR probe::irq_handler.entry (3stap) for details. .P .TP .B irq_handler.exit Execution of interrupt handler completed .IP See .IR probe::irq_handler.exit (3stap) for details. .P .TP .B softirq.entry Execution of handler for a pending softirq starting .IP See .IR probe::softirq.entry (3stap) for details. .P .TP .B softirq.exit Execution of handler for a pending softirq completed .IP See .IR probe::softirq.exit (3stap) for details. .SH SEE ALSO .BR .IR \%probe::workqueue.create (3stap), .BR .IR \%probe::workqueue.insert (3stap), .BR .IR \%probe::workqueue.execute (3stap), .BR .IR \%probe::workqueue.destroy (3stap), .BR .IR \%probe::irq_handler.entry (3stap), .BR .IR \%probe::irq_handler.exit (3stap), .BR .IR \%probe::softirq.entry (3stap), .BR .IR \%probe::softirq.exit (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::json.3stap000066400000000000000000000055241305163227500267000ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::JSON 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::json \- systemtap json tapset .SH DESCRIPTION The JSON tapset provides probes, functions, and macros to generate a JSON metadata and data file. The JSON metadata file is located in /proc/systemtap/MODULE/metadata.json. The JSON data file is located in /proc/systemtap/MODULE/data.json. The JSON data file is updated with current data every time the file is read. .TP .P .TP .B json_set_prefix Set the metric prefix. .IP See .IR function::json_set_prefix (3stap) for details. .P .TP .B json_add_numeric_metric Add a numeric metric .IP See .IR function::json_add_numeric_metric (3stap) for details. .P .TP .B json_add_string_metric Add a string metric .IP See .IR function::json_add_string_metric (3stap) for details. .P .TP .B json_add_array Add an array .IP See .IR function::json_add_array (3stap) for details. .P .TP .B json_add_array_numeric_metric Add a numeric metric to an array .IP See .IR function::json_add_array_numeric_metric (3stap) for details. .P .TP .B json_add_array_string_metric Add a string metric to an array .IP See .IR function::json_add_array_string_metric (3stap) for details. .P .TP .B json_data Fires whenever JSON data is wanted by a reader. .IP See .IR probe::json_data (3stap) for details. .P .TP .B @json_output_data_start Start the json output. .IP See .IR macro::json_output_data_start (3stap) for details. .P .TP .B @json_output_string_value Output a string value. .IP See .IR macro::json_output_string_value (3stap) for details. .P .TP .B @json_output_numeric_value Output a numeric value. .IP See .IR macro::json_output_numeric_value (3stap) for details. .P .TP .B @json_output_array_string_value Output a string value for metric in an array. .IP See .IR macro::json_output_array_string_value (3stap) for details. .P .TP .B @json_output_array_numeric_value Output a numeric value for metric in an array. .IP See .IR macro::json_output_array_numeric_value (3stap) for details. .P .TP .B @json_output_data_end End the json output. .IP See .IR macro::json_output_data_end (3stap) for details. .SH SEE ALSO .BR .IR \%function::json_set_prefix (3stap), .BR .IR \%function::json_add_numeric_metric (3stap), .BR .IR \%function::json_add_string_metric (3stap), .BR .IR \%function::json_add_array (3stap), .BR .IR \%function::json_add_array_numeric_metric (3stap), .BR .IR \%function::json_add_array_string_metric (3stap), .BR .IR \%probe::json_data (3stap), .BR .IR \%macro::json_output_data_start (3stap), .BR .IR \%macro::json_output_string_value (3stap), .BR .IR \%macro::json_output_numeric_value (3stap), .BR .IR \%macro::json_output_array_string_value (3stap), .BR .IR \%macro::json_output_array_numeric_value (3stap), .BR .IR \%macro::json_output_data_end (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::kprocess.3stap000066400000000000000000000023571305163227500275610ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::KPROCESS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::kprocess \- systemtap kprocess tapset .SH DESCRIPTION This family of probe points is used to probe process-related activities. .TP .P .TP .B kprocess.create Fires whenever a new process or thread is successfully created .IP See .IR probe::kprocess.create (3stap) for details. .P .TP .B kprocess.start Starting new process .IP See .IR probe::kprocess.start (3stap) for details. .P .TP .B kprocess.exec Attempt to exec to a new program .IP See .IR probe::kprocess.exec (3stap) for details. .P .TP .B kprocess.exec_complete Return from exec to a new program .IP See .IR probe::kprocess.exec_complete (3stap) for details. .P .TP .B kprocess.exit Exit from process .IP See .IR probe::kprocess.exit (3stap) for details. .P .TP .B kprocess.release Process released .IP See .IR probe::kprocess.release (3stap) for details. .SH SEE ALSO .BR .IR \%probe::kprocess.create (3stap), .BR .IR \%probe::kprocess.start (3stap), .BR .IR \%probe::kprocess.exec (3stap), .BR .IR \%probe::kprocess.exec_complete (3stap), .BR .IR \%probe::kprocess.exit (3stap), .BR .IR \%probe::kprocess.release (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::linuxmib-filter-default.3stap000066400000000000000000000007131305163227500324560ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::LINUXMIB-FILTER-DEFAULT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::linuxmib-filter-default \- systemtap linuxmib-filter-default tapset .SH DESCRIPTION .TP .P .TP .B linuxmib_filter_key Default filter function for linuxmib.* probes .IP See .IR function::linuxmib_filter_key (3stap) for details. .SH SEE ALSO .BR .IR \%function::linuxmib_filter_key (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::linuxmib.3stap000066400000000000000000000017211305163227500275510ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::LINUXMIB 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::linuxmib \- systemtap linuxmib tapset .SH DESCRIPTION .TP .P .TP .B linuxmib.DelayedACKs Count of delayed acks .IP See .IR probe::linuxmib.DelayedACKs (3stap) for details. .P .TP .B linuxmib.ListenOverflows Count of times a listen queue overflowed .IP See .IR probe::linuxmib.ListenOverflows (3stap) for details. .P .TP .B linuxmib.ListenDrops Count of times conn request that were dropped .IP See .IR probe::linuxmib.ListenDrops (3stap) for details. .P .TP .B linuxmib.TCPMemoryPressures Count of times memory pressure was used .IP See .IR probe::linuxmib.TCPMemoryPressures (3stap) for details. .SH SEE ALSO .BR .IR \%probe::linuxmib.DelayedACKs (3stap), .BR .IR \%probe::linuxmib.ListenOverflows (3stap), .BR .IR \%probe::linuxmib.ListenDrops (3stap), .BR .IR \%probe::linuxmib.TCPMemoryPressures (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::loadavg.3stap000066400000000000000000000012231305163227500273340ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::LOADAVG 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::loadavg \- systemtap loadavg tapset .SH DESCRIPTION Functions in the loadavg tapset allow a probe handler to capture the load average. .TP .P .TP .B get_loadavg_index Get the load average for a specified interval .IP See .IR function::get_loadavg_index (3stap) for details. .P .TP .B sprint_loadavg Report a pretty-printed load average .IP See .IR function::sprint_loadavg (3stap) for details. .SH SEE ALSO .BR .IR \%function::get_loadavg_index (3stap), .BR .IR \%function::sprint_loadavg (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::logging.3stap000066400000000000000000000023541305163227500273530ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::LOGGING 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::logging \- systemtap logging tapset .SH DESCRIPTION .TP .P .TP .B log Send a line to the common trace buffer .IP See .IR function::log (3stap) for details. .P .TP .B warn Send a line to the warning stream .IP See .IR function::warn (3stap) for details. .P .TP .B exit Start shutting down probing script. .IP See .IR function::exit (3stap) for details. .P .TP .B error Send an error message .IP See .IR function::error (3stap) for details. .P .TP .B assert evaluate assertion .IP See .IR function::assert (3stap) for details. .P .TP .B assert evaluate assertion .IP See .IR function::assert (3stap) for details. .P .TP .B ftrace Send a message to the ftrace ring-buffer .IP See .IR function::ftrace (3stap) for details. .P .TP .B printk Send a message to the kernel trace buffer .IP See .IR function::printk (3stap) for details. .SH SEE ALSO .BR .IR \%function::log (3stap), .BR .IR \%function::warn (3stap), .BR .IR \%function::exit (3stap), .BR .IR \%function::error (3stap), .BR .IR \%function::assert (3stap), .BR .IR \%function::ftrace (3stap), .BR .IR \%function::printk (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::memory.3stap000066400000000000000000000056221305163227500272360ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::MEMORY 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::memory \- systemtap memory tapset .SH DESCRIPTION This family of probe points is used to probe memory-related events. .TP .P .TP .B vm_fault_contains Test return value for page fault reason .IP See .IR function::vm_fault_contains (3stap) for details. .P .TP .B vm.pagefault Records that a page fault occurred .IP See .IR probe::vm.pagefault (3stap) for details. .P .TP .B vm.pagefault.return Indicates what type of fault occurred .IP See .IR probe::vm.pagefault.return (3stap) for details. .P .TP .B addr_to_node Returns which node a given address belongs to within a NUMA system .IP See .IR function::addr_to_node (3stap) for details. .P .TP .B vm.write_shared Attempts at writing to a shared page .IP See .IR probe::vm.write_shared (3stap) for details. .P .TP .B vm.write_shared_copy Page copy for shared page write .IP See .IR probe::vm.write_shared_copy (3stap) for details. .P .TP .B vm.mmap Fires when an mmap is requested .IP See .IR probe::vm.mmap (3stap) for details. .P .TP .B vm.munmap Fires when an munmap is requested .IP See .IR probe::vm.munmap (3stap) for details. .P .TP .B vm.brk Fires when a brk is requested (i.e. the heap will be resized) .IP See .IR probe::vm.brk (3stap) for details. .P .TP .B vm.oom_kill Fires when a thread is selected for termination by the OOM killer .IP See .IR probe::vm.oom_kill (3stap) for details. .P .TP .B vm.kmalloc Fires when kmalloc is requested .IP See .IR probe::vm.kmalloc (3stap) for details. .P .TP .B vm.kmem_cache_alloc Fires when kmem_cache_alloc is requested .IP See .IR probe::vm.kmem_cache_alloc (3stap) for details. .P .TP .B vm.kmalloc_node Fires when kmalloc_node is requested .IP See .IR probe::vm.kmalloc_node (3stap) for details. .P .TP .B vm.kmem_cache_alloc_node Fires when kmem_cache_alloc_node is requested .IP See .IR probe::vm.kmem_cache_alloc_node (3stap) for details. .P .TP .B vm.kfree Fires when kfree is requested .IP See .IR probe::vm.kfree (3stap) for details. .P .TP .B vm.kmem_cache_free Fires when kmem_cache_free is requested .IP See .IR probe::vm.kmem_cache_free (3stap) for details. .SH SEE ALSO .BR .IR \%function::vm_fault_contains (3stap), .BR .IR \%function::addr_to_node (3stap), .BR .IR \%probe::vm.pagefault (3stap), .BR .IR \%probe::vm.pagefault.return (3stap), .BR .IR \%probe::vm.write_shared (3stap), .BR .IR \%probe::vm.write_shared_copy (3stap), .BR .IR \%probe::vm.mmap (3stap), .BR .IR \%probe::vm.munmap (3stap), .BR .IR \%probe::vm.brk (3stap), .BR .IR \%probe::vm.oom_kill (3stap), .BR .IR \%probe::vm.kmalloc (3stap), .BR .IR \%probe::vm.kmem_cache_alloc (3stap), .BR .IR \%probe::vm.kmalloc_node (3stap), .BR .IR \%probe::vm.kmem_cache_alloc_node (3stap), .BR .IR \%probe::vm.kfree (3stap), .BR .IR \%probe::vm.kmem_cache_free (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::netfilter.3stap000066400000000000000000000041461305163227500277220ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NETFILTER 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::netfilter \- systemtap netfilter tapset .SH DESCRIPTION .TP .P .TP .B netfilter.ip.pre_routing Called before an IP packet is routed .IP See .IR probe::netfilter.ip.pre_routing (3stap) for details. .P .TP .B netfilter.ip.local_in Called on an incoming IP packet addressed to the local computer .IP See .IR probe::netfilter.ip.local_in (3stap) for details. .P .TP .B netfilter.ip.forward Called on an incoming IP packet addressed to some other computer .IP See .IR probe::netfilter.ip.forward (3stap) for details. .P .TP .B netfilter.ip.local_out Called on an outgoing IP packet .IP See .IR probe::netfilter.ip.local_out (3stap) for details. .P .TP .B netfilter.ip.post_routing Called immediately before an outgoing IP packet leaves the computer .IP See .IR probe::netfilter.ip.post_routing (3stap) for details. .P .TP .B netfilter.bridge.local_in Called on a bridging packet destined for the local computer .IP See .IR probe::netfilter.bridge.local_in (3stap) for details. .P .TP .B netfilter.bridge.forward Called on an incoming bridging packet destined for some other computer .IP See .IR probe::netfilter.bridge.forward (3stap) for details. .P .TP .B netfilter.bridge.local_out Called on a bridging packet coming from a local process .IP See .IR probe::netfilter.bridge.local_out (3stap) for details. .SH SEE ALSO .BR .IR \%probe::netfilter.ip.pre_routing (3stap), .BR .IR \%probe::netfilter.ip.local_in (3stap), .BR .IR \%probe::netfilter.ip.forward (3stap), .BR .IR \%probe::netfilter.ip.local_out (3stap), .BR .IR \%probe::netfilter.ip.post_routing (3stap), .BR .IR \%probe::netfilter.arp.in (3stap), .BR .IR \%probe::netfilter.arp.out (3stap), .BR .IR \%probe::netfilter.arp.forward (3stap), .BR .IR \%probe::netfilter.bridge.pre_routing (3stap), .BR .IR \%probe::netfilter.bridge.local_in (3stap), .BR .IR \%probe::netfilter.bridge.forward (3stap), .BR .IR \%probe::netfilter.bridge.local_out (3stap), .BR .IR \%probe::netfilter.bridge.post_routing (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::networking.3stap000066400000000000000000000052351305163227500301150ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NETWORKING 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::networking \- systemtap networking tapset .SH DESCRIPTION This family of probe points is used to probe the activities of the network device. .TP .P .TP .B netdev.receive Data received from network device. .IP See .IR probe::netdev.receive (3stap) for details. .P .TP .B netdev.transmit Network device transmitting buffer .IP See .IR probe::netdev.transmit (3stap) for details. .P .TP .B netdev.change_mtu Called when the netdev MTU is changed .IP See .IR probe::netdev.change_mtu (3stap) for details. .P .TP .B netdev.open Called when the device is opened .IP See .IR probe::netdev.open (3stap) for details. .P .TP .B netdev.close Called when the device is closed .IP See .IR probe::netdev.close (3stap) for details. .P .TP .B netdev.hard_transmit Called when the devices is going to TX (hard) .IP See .IR probe::netdev.hard_transmit (3stap) for details. .P .TP .B netdev.rx Called when the device is going to receive a packet .IP See .IR probe::netdev.rx (3stap) for details. .P .TP .B netdev.change_rx_flag Called when the device RX flag will be changed .IP See .IR probe::netdev.change_rx_flag (3stap) for details. .P .TP .B netdev.set_promiscuity Called when the device enters/leaves promiscuity .IP See .IR probe::netdev.set_promiscuity (3stap) for details. .P .TP .B netdev.ioctl Called when the device suffers an IOCTL .IP See .IR probe::netdev.ioctl (3stap) for details. .P .TP .B netdev.register Called when the device is registered .IP See .IR probe::netdev.register (3stap) for details. .P .TP .B netdev.unregister Called when the device is being unregistered .IP See .IR probe::netdev.unregister (3stap) for details. .P .TP .B netdev.get_stats Called when someone asks the device statistics .IP See .IR probe::netdev.get_stats (3stap) for details. .P .TP .B netdev.change_mac Called when the netdev_name has the MAC changed .IP See .IR probe::netdev.change_mac (3stap) for details. .SH SEE ALSO .BR .IR \%probe::netdev.receive (3stap), .BR .IR \%probe::netdev.transmit (3stap), .BR .IR \%probe::netdev.change_mtu (3stap), .BR .IR \%probe::netdev.open (3stap), .BR .IR \%probe::netdev.close (3stap), .BR .IR \%probe::netdev.hard_transmit (3stap), .BR .IR \%probe::netdev.rx (3stap), .BR .IR \%probe::netdev.change_rx_flag (3stap), .BR .IR \%probe::netdev.set_promiscuity (3stap), .BR .IR \%probe::netdev.ioctl (3stap), .BR .IR \%probe::netdev.register (3stap), .BR .IR \%probe::netdev.unregister (3stap), .BR .IR \%probe::netdev.get_stats (3stap), .BR .IR \%probe::netdev.change_mac (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::nfs.3stap000066400000000000000000000076251305163227500265210ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NFS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::nfs \- systemtap nfs tapset .SH DESCRIPTION .TP .P .TP .B nfs.fop.llseek NFS client llseek operation .IP See .IR probe::nfs.fop.llseek (3stap) for details. .P .TP .B nfs.fop.read NFS client read operation .IP See .IR probe::nfs.fop.read (3stap) for details. .P .TP .B nfs.fop.write NFS client write operation .IP See .IR probe::nfs.fop.write (3stap) for details. .P .TP .B nfs.fop.aio_read NFS client aio_read file operation .IP See .IR probe::nfs.fop.aio_read (3stap) for details. .P .TP .B nfs.fop.read_iter NFS client read_iter file operation .IP See .IR probe::nfs.fop.read_iter (3stap) for details. .P .TP .B nfs.fop.aio_write NFS client aio_write file operation .IP See .IR probe::nfs.fop.aio_write (3stap) for details. .P .TP .B nfs.fop.write_iter NFS client write_iter file operation .IP See .IR probe::nfs.fop.write_iter (3stap) for details. .P .TP .B nfs.fop.mmap NFS client mmap operation .IP See .IR probe::nfs.fop.mmap (3stap) for details. .P .TP .B nfs.fop.open NFS client file open operation .IP See .IR probe::nfs.fop.open (3stap) for details. .P .TP .B nfs.fop.flush NFS client flush file operation .IP See .IR probe::nfs.fop.flush (3stap) for details. .P .TP .B nfs.fop.release NFS client release page operation .IP See .IR probe::nfs.fop.release (3stap) for details. .P .TP .B nfs.fop.fsync NFS client fsync operation .IP See .IR probe::nfs.fop.fsync (3stap) for details. .P .TP .B nfs.fop.lock NFS client file lock operation .IP See .IR probe::nfs.fop.lock (3stap) for details. .P .TP .B nfs.fop.sendfile NFS client send file operation .IP See .IR probe::nfs.fop.sendfile (3stap) for details. .P .TP .B nfs.fop.check_flags NFS client checking flag operation .IP See .IR probe::nfs.fop.check_flags (3stap) for details. .P .TP .B nfs.aop.readpage NFS client synchronously reading a page .IP See .IR probe::nfs.aop.readpage (3stap) for details. .P .TP .B nfs.aop.readpages NFS client reading multiple pages .IP See .IR probe::nfs.aop.readpages (3stap) for details. .P .TP .B nfs.aop.set_page_dirty NFS client marking page as dirty .IP See .IR probe::nfs.aop.set_page_dirty (3stap) for details. .P .TP .B nfs.aop.writepage NFS client writing a mapped page to the NFS server .IP See .IR probe::nfs.aop.writepage (3stap) for details. .P .TP .B nfs.aop.writepages NFS client writing several dirty pages to the NFS server .IP See .IR probe::nfs.aop.writepages (3stap) for details. .P .TP .B nfs.aop.write_begin NFS client begin to write data .IP See .IR probe::nfs.aop.write_begin (3stap) for details. .P .TP .B nfs.aop.write_end NFS client complete writing data .IP See .IR probe::nfs.aop.write_end (3stap) for details. .P .TP .B nfs.aop.release_page NFS client releasing page .IP See .IR probe::nfs.aop.release_page (3stap) for details. .SH SEE ALSO .BR .IR \%probe::nfs.fop.llseek (3stap), .BR .IR \%probe::nfs.fop.read (3stap), .BR .IR \%probe::nfs.fop.write (3stap), .BR .IR \%probe::nfs.fop.aio_read (3stap), .BR .IR \%probe::nfs.fop.read_iter (3stap), .BR .IR \%probe::nfs.fop.aio_write (3stap), .BR .IR \%probe::nfs.fop.write_iter (3stap), .BR .IR \%probe::nfs.fop.mmap (3stap), .BR .IR \%probe::nfs.fop.open (3stap), .BR .IR \%probe::nfs.fop.flush (3stap), .BR .IR \%probe::nfs.fop.release (3stap), .BR .IR \%probe::nfs.fop.fsync (3stap), .BR .IR \%probe::nfs.fop.lock (3stap), .BR .IR \%probe::nfs.fop.sendfile (3stap), .BR .IR \%probe::nfs.fop.check_flags (3stap), .BR .IR \%probe::nfs.aop.readpage (3stap), .BR .IR \%probe::nfs.aop.readpages (3stap), .BR .IR \%probe::nfs.aop.set_page_dirty (3stap), .BR .IR \%probe::nfs.aop.writepage (3stap), .BR .IR \%probe::nfs.aop.writepages (3stap), .BR .IR \%probe::nfs.aop.write_begin (3stap), .BR .IR \%probe::nfs.aop.write_end (3stap), .BR .IR \%probe::nfs.aop.release_page (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::nfs_proc.3stap000066400000000000000000000065241305163227500275410ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NFS_PROC 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::nfs_proc \- systemtap nfs_proc tapset .SH DESCRIPTION .TP .P .TP .B nfs.proc.lookup NFS client opens/searches a file on server .IP See .IR probe::nfs.proc.lookup (3stap) for details. .P .TP .B nfs.proc.read NFS client synchronously reads file from server .IP See .IR probe::nfs.proc.read (3stap) for details. .P .TP .B nfs.proc.write NFS client synchronously writes file to server .IP See .IR probe::nfs.proc.write (3stap) for details. .P .TP .B nfs.proc.commit NFS client committing data on server .IP See .IR probe::nfs.proc.commit (3stap) for details. .P .TP .B nfs.proc.read_setup NFS client setting up a read RPC task .IP See .IR probe::nfs.proc.read_setup (3stap) for details. .P .TP .B nfs.proc.read_done NFS client response to a read RPC task .IP See .IR probe::nfs.proc.read_done (3stap) for details. .P .TP .B nfs.proc.write_setup NFS client setting up a write RPC task .IP See .IR probe::nfs.proc.write_setup (3stap) for details. .P .TP .B nfs.proc.write_done NFS client response to a write RPC task .IP See .IR probe::nfs.proc.write_done (3stap) for details. .P .TP .B nfs.proc.commit_setup NFS client setting up a commit RPC task .IP See .IR probe::nfs.proc.commit_setup (3stap) for details. .P .TP .B nfs.proc.commit_done NFS client response to a commit RPC task .IP See .IR probe::nfs.proc.commit_done (3stap) for details. .P .TP .B nfs.proc.rename_setup NFS client setting up a rename RPC task .IP See .IR probe::nfs.proc.rename_setup (3stap) for details. .P .TP .B nfs.proc.rename_done NFS client response to a rename RPC task .IP See .IR probe::nfs.proc.rename_done (3stap) for details. .P .TP .B nfs.proc.open NFS client allocates file read/write context information .IP See .IR probe::nfs.proc.open (3stap) for details. .P .TP .B nfs.proc.release NFS client releases file read/write context information .IP See .IR probe::nfs.proc.release (3stap) for details. .P .TP .B nfs.proc.handle_exception NFS client handling an NFSv4 exception .IP See .IR probe::nfs.proc.handle_exception (3stap) for details. .P .TP .B nfs.proc.create NFS client creating file on server .IP See .IR probe::nfs.proc.create (3stap) for details. .P .TP .B nfs.proc.remove NFS client removes a file on server .IP See .IR probe::nfs.proc.remove (3stap) for details. .P .TP .B nfs.proc.rename NFS client renames a file on server .IP See .IR probe::nfs.proc.rename (3stap) for details. .SH SEE ALSO .BR .IR \%probe::nfs.proc.lookup (3stap), .BR .IR \%probe::nfs.proc.read (3stap), .BR .IR \%probe::nfs.proc.write (3stap), .BR .IR \%probe::nfs.proc.commit (3stap), .BR .IR \%probe::nfs.proc.read_setup (3stap), .BR .IR \%probe::nfs.proc.read_done (3stap), .BR .IR \%probe::nfs.proc.write_setup (3stap), .BR .IR \%probe::nfs.proc.write_done (3stap), .BR .IR \%probe::nfs.proc.commit_setup (3stap), .BR .IR \%probe::nfs.proc.commit_done (3stap), .BR .IR \%probe::nfs.proc.rename_setup (3stap), .BR .IR \%probe::nfs.proc.rename_done (3stap), .BR .IR \%probe::nfs.proc.open (3stap), .BR .IR \%probe::nfs.proc.release (3stap), .BR .IR \%probe::nfs.proc.handle_exception (3stap), .BR .IR \%probe::nfs.proc.create (3stap), .BR .IR \%probe::nfs.proc.remove (3stap), .BR .IR \%probe::nfs.proc.rename (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::nfsd.3stap000066400000000000000000000060641305163227500266610ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NFSD 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::nfsd \- systemtap nfsd tapset .SH DESCRIPTION .TP .P .TP .B nfsd.dispatch NFS server receives an operation from client .IP See .IR probe::nfsd.dispatch (3stap) for details. .P .TP .B nfsd.proc.lookup NFS server opening or searching for a file for client .IP See .IR probe::nfsd.proc.lookup (3stap) for details. .P .TP .B nfsd.proc.read NFS server reading file for client .IP See .IR probe::nfsd.proc.read (3stap) for details. .P .TP .B nfsd.proc.write NFS server writing data to file for client .IP See .IR probe::nfsd.proc.write (3stap) for details. .P .TP .B nfsd.proc.commit NFS server performing a commit operation for client .IP See .IR probe::nfsd.proc.commit (3stap) for details. .P .TP .B nfsd.proc.create NFS server creating a file for client .IP See .IR probe::nfsd.proc.create (3stap) for details. .P .TP .B nfsd.proc.remove NFS server removing a file for client .IP See .IR probe::nfsd.proc.remove (3stap) for details. .P .TP .B nfsd.proc.rename NFS Server renaming a file for client .IP See .IR probe::nfsd.proc.rename (3stap) for details. .P .TP .B nfsd.open NFS server opening a file for client .IP See .IR probe::nfsd.open (3stap) for details. .P .TP .B nfsd.close NFS server closing a file for client .IP See .IR probe::nfsd.close (3stap) for details. .P .TP .B nfsd.read NFS server reading data from a file for client .IP See .IR probe::nfsd.read (3stap) for details. .P .TP .B nfsd.write NFS server writing data to a file for client .IP See .IR probe::nfsd.write (3stap) for details. .P .TP .B nfsd.commit NFS server committing all pending writes to stable storage .IP See .IR probe::nfsd.commit (3stap) for details. .P .TP .B nfsd.lookup NFS server opening or searching file for a file for client .IP See .IR probe::nfsd.lookup (3stap) for details. .P .TP .B nfsd.create NFS server creating a file(regular,dir,device,fifo) for client .IP See .IR probe::nfsd.create (3stap) for details. .P .TP .B nfsd.createv3 NFS server creating a regular file or set file attributes for client .IP See .IR probe::nfsd.createv3 (3stap) for details. .P .TP .B nfsd.unlink NFS server removing a file or a directory for client .IP See .IR probe::nfsd.unlink (3stap) for details. .SH SEE ALSO .BR .IR \%probe::nfsd.dispatch (3stap), .BR .IR \%probe::nfsd.proc.lookup (3stap), .BR .IR \%probe::nfsd.proc.read (3stap), .BR .IR \%probe::nfsd.proc.write (3stap), .BR .IR \%probe::nfsd.proc.commit (3stap), .BR .IR \%probe::nfsd.proc.create (3stap), .BR .IR \%probe::nfsd.proc.remove (3stap), .BR .IR \%probe::nfsd.proc.rename (3stap), .BR .IR \%probe::nfsd.open (3stap), .BR .IR \%probe::nfsd.close (3stap), .BR .IR \%probe::nfsd.read (3stap), .BR .IR \%probe::nfsd.write (3stap), .BR .IR \%probe::nfsd.commit (3stap), .BR .IR \%probe::nfsd.lookup (3stap), .BR .IR \%probe::nfsd.create (3stap), .BR .IR \%probe::nfsd.createv3 (3stap), .BR .IR \%probe::nfsd.unlink (3stap), .BR .IR \%probe::nfsd.rename (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::nfsderrno.3stap000066400000000000000000000005731305163227500277260ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::NFSDERRNO 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::nfsderrno \- systemtap nfsderrno tapset .SH DESCRIPTION .TP .P .TP .B nfsderror Convert nfsd error number into string .IP See .IR function::nfsderror (3stap) for details. .SH SEE ALSO .BR .IR \%function::nfsderror (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::panic.3stap000066400000000000000000000013021305163227500270070ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::PANIC 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::panic \- systemtap panic tapset .SH DESCRIPTION Functions in the panic tapset allow a probe handler to invoke the system panic routine with a user-specified message. This may be used with a crash dump collection facility such as kexec/kdump in order to capture data for post-mortem debugging. Due to the fact that this will bring the system to an immediate halt the functions in this tapset require guru mode. .TP .P .TP .B panic trigger a panic .IP See .IR function::panic (3stap) for details. .SH SEE ALSO .BR .IR \%function::panic (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::pn.3stap000066400000000000000000000007501305163227500263400ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::PN 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::pn \- systemtap pn tapset .SH DESCRIPTION .TP .P .TP .B pn Returns the active probe name .IP See .IR function::pn (3stap) for details. .P .TP .B pnlabel Returns the label name parsed from the probe name .IP See .IR function::pnlabel (3stap) for details. .SH SEE ALSO .BR .IR \%function::pn (3stap), .BR .IR \%function::pnlabel (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::proc_mem.3stap000066400000000000000000000055071305163227500275310ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::PROC_MEM 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::proc_mem \- systemtap proc_mem tapset .SH DESCRIPTION Process memory query and utility functions provide information about the memory usage of the current application. These functions provide information about the full size, resident, shared, code and data used by the current process. And provide utility functions to query the page size of the current architecture and create human readable string representations of bytes and pages used. .TP .P .TP .B proc_mem_size Total program virtual memory size in pages .IP See .IR function::proc_mem_size (3stap) for details. .P .TP .B proc_mem_size Total program virtual memory size in pages .IP See .IR function::proc_mem_size (3stap) for details. .P .TP .B proc_mem_rss Program resident set size in pages .IP See .IR function::proc_mem_rss (3stap) for details. .P .TP .B proc_mem_rss Program resident set size in pages .IP See .IR function::proc_mem_rss (3stap) for details. .P .TP .B proc_mem_shr Program shared pages (from shared mappings) .IP See .IR function::proc_mem_shr (3stap) for details. .P .TP .B proc_mem_shr Program shared pages (from shared mappings) .IP See .IR function::proc_mem_shr (3stap) for details. .P .TP .B proc_mem_txt Program text (code) size in pages .IP See .IR function::proc_mem_txt (3stap) for details. .P .TP .B proc_mem_txt Program text (code) size in pages .IP See .IR function::proc_mem_txt (3stap) for details. .P .TP .B proc_mem_data Program data size (data + stack) in pages .IP See .IR function::proc_mem_data (3stap) for details. .P .TP .B proc_mem_data Program data size (data + stack) in pages .IP See .IR function::proc_mem_data (3stap) for details. .P .TP .B mem_page_size Number of bytes in a page for this architecture .IP See .IR function::mem_page_size (3stap) for details. .P .TP .B bytes_to_string Human readable string for given bytes .IP See .IR function::bytes_to_string (3stap) for details. .P .TP .B pages_to_string Turns pages into a human readable string .IP See .IR function::pages_to_string (3stap) for details. .P .TP .B proc_mem_string Human readable string of process memory usage .IP See .IR function::proc_mem_string (3stap) for details. .P .TP .B proc_mem_string Human readable string of process memory usage .IP See .IR function::proc_mem_string (3stap) for details. .SH SEE ALSO .BR .IR \%function::proc_mem_size (3stap), .BR .IR \%function::proc_mem_rss (3stap), .BR .IR \%function::proc_mem_shr (3stap), .BR .IR \%function::proc_mem_txt (3stap), .BR .IR \%function::proc_mem_data (3stap), .BR .IR \%function::mem_page_size (3stap), .BR .IR \%function::bytes_to_string (3stap), .BR .IR \%function::pages_to_string (3stap), .BR .IR \%function::proc_mem_string (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::pstrace.3stap000066400000000000000000000005651305163227500273700ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::PSTRACE 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::pstrace \- systemtap pstrace tapset .SH DESCRIPTION .TP .P .TP .B pstrace Chain of processes and pids back to init(1) .IP See .IR function::pstrace (3stap) for details. .SH SEE ALSO .BR .IR \%function::pstrace (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::queue_stats.3stap000066400000000000000000000040121305163227500302600ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::QUEUE_STATS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::queue_stats \- systemtap queue_stats tapset .SH DESCRIPTION .TP .P .TP .B qs_wait Function to record enqueue requests .IP See .IR function::qs_wait (3stap) for details. .P .TP .B qs_run Function to record being moved from wait queue to being serviced .IP See .IR function::qs_run (3stap) for details. .P .TP .B qs_done Function to record finishing request .IP See .IR function::qs_done (3stap) for details. .P .TP .B qsq_start Function to reset the stats for a queue .IP See .IR function::qsq_start (3stap) for details. .P .TP .B qsq_utilization Fraction of time that any request was being serviced .IP See .IR function::qsq_utilization (3stap) for details. .P .TP .B qsq_blocked Returns the time reqest was on the wait queue .IP See .IR function::qsq_blocked (3stap) for details. .P .TP .B qsq_wait_queue_length length of wait queue .IP See .IR function::qsq_wait_queue_length (3stap) for details. .P .TP .B qsq_service_time Amount of time per request service .IP See .IR function::qsq_service_time (3stap) for details. .P .TP .B qsq_wait_time Amount of time in queue + service per request .IP See .IR function::qsq_wait_time (3stap) for details. .P .TP .B qsq_throughput Number of requests served per unit time .IP See .IR function::qsq_throughput (3stap) for details. .P .TP .B qsq_print Prints a line of statistics for the given queue .IP See .IR function::qsq_print (3stap) for details. .SH SEE ALSO .BR .IR \%function::qs_wait (3stap), .BR .IR \%function::qs_run (3stap), .BR .IR \%function::qs_done (3stap), .BR .IR \%function::qsq_start (3stap), .BR .IR \%function::qsq_utilization (3stap), .BR .IR \%function::qsq_blocked (3stap), .BR .IR \%function::qsq_wait_queue_length (3stap), .BR .IR \%function::qsq_service_time (3stap), .BR .IR \%function::qsq_wait_time (3stap), .BR .IR \%function::qsq_throughput (3stap), .BR .IR \%function::qsq_print (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::random.3stap000066400000000000000000000005531305163227500272040ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::RANDOM 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::random \- systemtap random tapset .SH DESCRIPTION .TP .P .TP .B randint Return a random number between [0,n) .IP See .IR function::randint (3stap) for details. .SH SEE ALSO .BR .IR \%function::randint (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::registers.3stap000066400000000000000000000053021305163227500277300ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::REGISTERS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::registers \- systemtap registers tapset .SH DESCRIPTION .TP .P .TP .B register Return the signed value of the named CPU register .IP See .IR function::register (3stap) for details. .P .TP .B u_register Return the unsigned value of the named CPU register .IP See .IR function::u_register (3stap) for details. .P .TP .B int_arg Return function argument as signed int .IP See .IR function::int_arg (3stap) for details. .P .TP .B uint_arg Return function argument as unsigned int .IP See .IR function::uint_arg (3stap) for details. .P .TP .B long_arg Return function argument as signed long .IP See .IR function::long_arg (3stap) for details. .P .TP .B ulong_arg Return function argument as unsigned long .IP See .IR function::ulong_arg (3stap) for details. .P .TP .B longlong_arg Return function argument as 64-bit value .IP See .IR function::longlong_arg (3stap) for details. .P .TP .B ulonglong_arg Return function argument as 64-bit value .IP See .IR function::ulonglong_arg (3stap) for details. .P .TP .B pointer_arg Return function argument as pointer value .IP See .IR function::pointer_arg (3stap) for details. .P .TP .B s32_arg Return function argument as signed 32-bit value .IP See .IR function::s32_arg (3stap) for details. .P .TP .B u32_arg Return function argument as unsigned 32-bit value .IP See .IR function::u32_arg (3stap) for details. .P .TP .B s64_arg Return function argument as signed 64-bit value .IP See .IR function::s64_arg (3stap) for details. .P .TP .B u64_arg Return function argument as unsigned 64-bit value .IP See .IR function::u64_arg (3stap) for details. .P .TP .B asmlinkage Mark function as declared asmlinkage .IP See .IR function::asmlinkage (3stap) for details. .P .TP .B fastcall Mark function as declared fastcall .IP See .IR function::fastcall (3stap) for details. .P .TP .B regparm Specify regparm value used to compile function .IP See .IR function::regparm (3stap) for details. .SH SEE ALSO .BR .IR \%function::register (3stap), .BR .IR \%function::u_register (3stap), .BR .IR \%function::int_arg (3stap), .BR .IR \%function::uint_arg (3stap), .BR .IR \%function::long_arg (3stap), .BR .IR \%function::ulong_arg (3stap), .BR .IR \%function::longlong_arg (3stap), .BR .IR \%function::ulonglong_arg (3stap), .BR .IR \%function::pointer_arg (3stap), .BR .IR \%function::s32_arg (3stap), .BR .IR \%function::u32_arg (3stap), .BR .IR \%function::s64_arg (3stap), .BR .IR \%function::u64_arg (3stap), .BR .IR \%function::asmlinkage (3stap), .BR .IR \%function::fastcall (3stap), .BR .IR \%function::regparm (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::rlimit.3stap000066400000000000000000000006221305163227500272210ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::RLIMIT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::rlimit \- systemtap rlimit tapset .SH DESCRIPTION .TP .P .TP .B rlimit_from_str Symbolic string associated with resource limit code .IP See .IR function::rlimit_from_str (3stap) for details. .SH SEE ALSO .BR .IR \%function::rlimit_from_str (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::rpc.3stap000066400000000000000000000067351305163227500265200ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::RPC 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::rpc \- systemtap rpc tapset .SH DESCRIPTION .TP .P .TP .B sunrpc.clnt.create_client Create an RPC client .IP See .IR probe::sunrpc.clnt.create_client (3stap) for details. .P .TP .B sunrpc.clnt.clone_client Clone an RPC client structure .IP See .IR probe::sunrpc.clnt.clone_client (3stap) for details. .P .TP .B sunrpc.clnt.shutdown_client Shutdown an RPC client .IP See .IR probe::sunrpc.clnt.shutdown_client (3stap) for details. .P .TP .B sunrpc.clnt.bind_new_program Bind a new RPC program to an existing client .IP See .IR probe::sunrpc.clnt.bind_new_program (3stap) for details. .P .TP .B sunrpc.clnt.call_sync Make a synchronous RPC call .IP See .IR probe::sunrpc.clnt.call_sync (3stap) for details. .P .TP .B sunrpc.clnt.call_async Make an asynchronous RPC call .IP See .IR probe::sunrpc.clnt.call_async (3stap) for details. .P .TP .B sunrpc.clnt.restart_call Restart an asynchronous RPC call .IP See .IR probe::sunrpc.clnt.restart_call (3stap) for details. .P .TP .B sunrpc.svc.register Register an RPC service with the local portmapper .IP See .IR probe::sunrpc.svc.register (3stap) for details. .P .TP .B sunrpc.svc.create Create an RPC service .IP See .IR probe::sunrpc.svc.create (3stap) for details. .P .TP .B sunrpc.svc.destroy Destroy an RPC service .IP See .IR probe::sunrpc.svc.destroy (3stap) for details. .P .TP .B sunrpc.svc.process Process an RPC request .IP See .IR probe::sunrpc.svc.process (3stap) for details. .P .TP .B sunrpc.svc.authorise An RPC request is to be authorised .IP See .IR probe::sunrpc.svc.authorise (3stap) for details. .P .TP .B sunrpc.svc.recv Listen for the next RPC request on any socket .IP See .IR probe::sunrpc.svc.recv (3stap) for details. .P .TP .B sunrpc.svc.send Return reply to RPC client .IP See .IR probe::sunrpc.svc.send (3stap) for details. .P .TP .B sunrpc.svc.drop Drop RPC request .IP See .IR probe::sunrpc.svc.drop (3stap) for details. .P .TP .B sunrpc.sched.new_task Create new task for the specified client .IP See .IR probe::sunrpc.sched.new_task (3stap) for details. .P .TP .B sunrpc.sched.release_task Release all resources associated with a task .IP See .IR probe::sunrpc.sched.release_task (3stap) for details. .P .TP .B sunrpc.sched.execute Execute the RPC `scheduler' .IP See .IR probe::sunrpc.sched.execute (3stap) for details. .P .TP .B sunrpc.sched.delay Delay an RPC task .IP See .IR probe::sunrpc.sched.delay (3stap) for details. .SH SEE ALSO .BR .IR \%probe::sunrpc.clnt.create_client (3stap), .BR .IR \%probe::sunrpc.clnt.clone_client (3stap), .BR .IR \%probe::sunrpc.clnt.shutdown_client (3stap), .BR .IR \%probe::sunrpc.clnt.bind_new_program (3stap), .BR .IR \%probe::sunrpc.clnt.call_sync (3stap), .BR .IR \%probe::sunrpc.clnt.call_async (3stap), .BR .IR \%probe::sunrpc.clnt.restart_call (3stap), .BR .IR \%probe::sunrpc.svc.register (3stap), .BR .IR \%probe::sunrpc.svc.create (3stap), .BR .IR \%probe::sunrpc.svc.destroy (3stap), .BR .IR \%probe::sunrpc.svc.process (3stap), .BR .IR \%probe::sunrpc.svc.authorise (3stap), .BR .IR \%probe::sunrpc.svc.recv (3stap), .BR .IR \%probe::sunrpc.svc.send (3stap), .BR .IR \%probe::sunrpc.svc.drop (3stap), .BR .IR \%probe::sunrpc.sched.new_task (3stap), .BR .IR \%probe::sunrpc.sched.release_task (3stap), .BR .IR \%probe::sunrpc.sched.execute (3stap), .BR .IR \%probe::sunrpc.sched.delay (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::scheduler.3stap000066400000000000000000000060321305163227500277000ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SCHEDULER 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::scheduler \- systemtap scheduler tapset .SH DESCRIPTION .TP .P .TP .B scheduler.cpu_off Process is about to stop running on a cpu .IP See .IR probe::scheduler.cpu_off (3stap) for details. .P .TP .B scheduler.cpu_on Process is beginning execution on a cpu .IP See .IR probe::scheduler.cpu_on (3stap) for details. .P .TP .B scheduler.tick Schedulers internal tick, a processes timeslice accounting is updated .IP See .IR probe::scheduler.tick (3stap) for details. .P .TP .B scheduler.balance A cpu attempting to find more work. .IP See .IR probe::scheduler.balance (3stap) for details. .P .TP .B scheduler.ctxswitch A context switch is occuring. .IP See .IR probe::scheduler.ctxswitch (3stap) for details. .P .TP .B scheduler.kthread_stop A thread created by kthread_create is being stopped .IP See .IR probe::scheduler.kthread_stop (3stap) for details. .P .TP .B scheduler.kthread_stop.return A kthread is stopped and gets the return value .IP See .IR probe::scheduler.kthread_stop.return (3stap) for details. .P .TP .B scheduler.wait_task Waiting on a task to unschedule (become inactive) .IP See .IR probe::scheduler.wait_task (3stap) for details. .P .TP .B scheduler.wakeup Task is woken up .IP See .IR probe::scheduler.wakeup (3stap) for details. .P .TP .B scheduler.wakeup_new Newly created task is woken up for the first time .IP See .IR probe::scheduler.wakeup_new (3stap) for details. .P .TP .B scheduler.migrate Task migrating across cpus .IP See .IR probe::scheduler.migrate (3stap) for details. .P .TP .B scheduler.process_free Scheduler freeing a data structure for a process .IP See .IR probe::scheduler.process_free (3stap) for details. .P .TP .B scheduler.process_exit Process exiting .IP See .IR probe::scheduler.process_exit (3stap) for details. .P .TP .B scheduler.process_wait Scheduler starting to wait on a process .IP See .IR probe::scheduler.process_wait (3stap) for details. .P .TP .B scheduler.process_fork Process forked .IP See .IR probe::scheduler.process_fork (3stap) for details. .P .TP .B scheduler.signal_send Sending a signal .IP See .IR probe::scheduler.signal_send (3stap) for details. .SH SEE ALSO .BR .IR \%probe::scheduler.cpu_off (3stap), .BR .IR \%probe::scheduler.cpu_on (3stap), .BR .IR \%probe::scheduler.tick (3stap), .BR .IR \%probe::scheduler.balance (3stap), .BR .IR \%probe::scheduler.ctxswitch (3stap), .BR .IR \%probe::scheduler.kthread_stop (3stap), .BR .IR \%probe::scheduler.kthread_stop.return (3stap), .BR .IR \%probe::scheduler.wait_task (3stap), .BR .IR \%probe::scheduler.wakeup (3stap), .BR .IR \%probe::scheduler.wakeup_new (3stap), .BR .IR \%probe::scheduler.migrate (3stap), .BR .IR \%probe::scheduler.process_free (3stap), .BR .IR \%probe::scheduler.process_exit (3stap), .BR .IR \%probe::scheduler.process_wait (3stap), .BR .IR \%probe::scheduler.process_fork (3stap), .BR .IR \%probe::scheduler.signal_send (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::scsi.3stap000066400000000000000000000025111305163227500266610ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SCSI 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::scsi \- systemtap scsi tapset .SH DESCRIPTION This family of probe points is used to probe SCSI activities. .TP .P .TP .B scsi.ioentry Prepares a SCSI mid-layer request .IP See .IR probe::scsi.ioentry (3stap) for details. .P .TP .B scsi.iodispatching SCSI mid-layer dispatched low-level SCSI command .IP See .IR probe::scsi.iodispatching (3stap) for details. .P .TP .B scsi.iodone SCSI command completed by low level driver and enqueued into the done queue. .IP See .IR probe::scsi.iodone (3stap) for details. .P .TP .B scsi.iocompleted SCSI mid-layer running the completion processing for block device I/O requests .IP See .IR probe::scsi.iocompleted (3stap) for details. .P .TP .B scsi.ioexecute Create mid-layer SCSI request and wait for the result .IP See .IR probe::scsi.ioexecute (3stap) for details. .P .TP .B scsi.set_state Order SCSI device state change .IP See .IR probe::scsi.set_state (3stap) for details. .SH SEE ALSO .BR .IR \%probe::scsi.ioentry (3stap), .BR .IR \%probe::scsi.iodispatching (3stap), .BR .IR \%probe::scsi.iodone (3stap), .BR .IR \%probe::scsi.iocompleted (3stap), .BR .IR \%probe::scsi.ioexecute (3stap), .BR .IR \%probe::scsi.set_state (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::signal.3stap000066400000000000000000000143551305163227500272060ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SIGNAL 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::signal \- systemtap signal tapset .SH DESCRIPTION This family of probe points is used to probe signal activities. Since there are so many signals sent to processes at any given point, it is advisable to filter the information according to the requirements. For example, filter only for a particular signal (if sig==2) or for a particular process (if pid_name==stap). .TP .P .TP .B signal.send Signal being sent to a process .IP See .IR probe::signal.send (3stap) for details. .P .TP .B signal.send.return Signal being sent to a process completed (deprecated in SystemTap 2.1) .IP See .IR probe::signal.send.return (3stap) for details. .P .TP .B signal.checkperm Check being performed on a sent signal .IP See .IR probe::signal.checkperm (3stap) for details. .P .TP .B signal.checkperm.return Check performed on a sent signal completed .IP See .IR probe::signal.checkperm.return (3stap) for details. .P .TP .B signal.wakeup Sleeping process being wakened for signal .IP See .IR probe::signal.wakeup (3stap) for details. .P .TP .B signal.check_ignored Checking to see signal is ignored .IP See .IR probe::signal.check_ignored (3stap) for details. .P .TP .B signal.check_ignored.return Check to see signal is ignored completed .IP See .IR probe::signal.check_ignored.return (3stap) for details. .P .TP .B signal.force_segv Forcing send of SIGSEGV .IP See .IR probe::signal.force_segv (3stap) for details. .P .TP .B signal.force_segv.return Forcing send of SIGSEGV complete .IP See .IR probe::signal.force_segv.return (3stap) for details. .P .TP .B signal.syskill Sending kill signal to a process .IP See .IR probe::signal.syskill (3stap) for details. .P .TP .B signal.syskill.return Sending kill signal completed .IP See .IR probe::signal.syskill.return (3stap) for details. .P .TP .B signal.sys_tkill Sending a kill signal to a thread .IP See .IR probe::signal.sys_tkill (3stap) for details. .P .TP .B signal.systkill.return Sending kill signal to a thread completed .IP See .IR probe::signal.systkill.return (3stap) for details. .P .TP .B signal.sys_tgkill Sending kill signal to a thread group .IP See .IR probe::signal.sys_tgkill (3stap) for details. .P .TP .B signal.sys_tgkill.return Sending kill signal to a thread group completed .IP See .IR probe::signal.sys_tgkill.return (3stap) for details. .P .TP .B signal.send_sig_queue Queuing a signal to a process .IP See .IR probe::signal.send_sig_queue (3stap) for details. .P .TP .B signal.send_sig_queue.return Queuing a signal to a process completed .IP See .IR probe::signal.send_sig_queue.return (3stap) for details. .P .TP .B signal.pending Examining pending signal .IP See .IR probe::signal.pending (3stap) for details. .P .TP .B signal.pending.return Examination of pending signal completed .IP See .IR probe::signal.pending.return (3stap) for details. .P .TP .B signal.handle Signal handler being invoked .IP See .IR probe::signal.handle (3stap) for details. .P .TP .B signal.handle.return Signal handler invocation completed .IP See .IR probe::signal.handle.return (3stap) for details. .P .TP .B signal.do_action Examining or changing a signal action .IP See .IR probe::signal.do_action (3stap) for details. .P .TP .B signal.do_action.return Examining or changing a signal action completed .IP See .IR probe::signal.do_action.return (3stap) for details. .P .TP .B signal.procmask Examining or changing blocked signals .IP See .IR probe::signal.procmask (3stap) for details. .P .TP .B signal.procmask.return Examining or changing blocked signals completed .IP See .IR probe::signal.procmask.return (3stap) for details. .P .TP .B signal.flush Flushing all pending signals for a task .IP See .IR probe::signal.flush (3stap) for details. .P .TP .B get_sa_flags Returns the numeric value of sa_flags .IP See .IR function::get_sa_flags (3stap) for details. .P .TP .B get_sa_handler Returns the numeric value of sa_handler .IP See .IR function::get_sa_handler (3stap) for details. .P .TP .B sigset_mask_str Returns the string representation of a sigset .IP See .IR function::sigset_mask_str (3stap) for details. .P .TP .B is_sig_blocked Returns 1 if the signal is currently blocked, or 0 if it is not .IP See .IR function::is_sig_blocked (3stap) for details. .P .TP .B sa_flags_str Returns the string representation of sa_flags .IP See .IR function::sa_flags_str (3stap) for details. .P .TP .B sa_handler Returns the string representation of an sa_handler .IP See .IR function::sa_handler (3stap) for details. .P .TP .B signal_str Returns the string representation of a signal number .IP See .IR function::signal_str (3stap) for details. .SH SEE ALSO .BR .IR \%function::get_sa_flags (3stap), .BR .IR \%function::get_sa_handler (3stap), .BR .IR \%function::sigset_mask_str (3stap), .BR .IR \%function::is_sig_blocked (3stap), .BR .IR \%function::sa_flags_str (3stap), .BR .IR \%function::sa_handler (3stap), .BR .IR \%function::signal_str (3stap), .BR .IR \%probe::signal.send (3stap), .BR .IR \%probe::signal.send.return (3stap), .BR .IR \%probe::signal.checkperm (3stap), .BR .IR \%probe::signal.checkperm.return (3stap), .BR .IR \%probe::signal.wakeup (3stap), .BR .IR \%probe::signal.check_ignored (3stap), .BR .IR \%probe::signal.check_ignored.return (3stap), .BR .IR \%probe::signal.force_segv (3stap), .BR .IR \%probe::signal.force_segv.return (3stap), .BR .IR \%probe::signal.syskill (3stap), .BR .IR \%probe::signal.syskill.return (3stap), .BR .IR \%probe::signal.sys_tkill (3stap), .BR .IR \%probe::signal.systkill.return (3stap), .BR .IR \%probe::signal.sys_tgkill (3stap), .BR .IR \%probe::signal.sys_tgkill.return (3stap), .BR .IR \%probe::signal.send_sig_queue (3stap), .BR .IR \%probe::signal.send_sig_queue.return (3stap), .BR .IR \%probe::signal.pending (3stap), .BR .IR \%probe::signal.pending.return (3stap), .BR .IR \%probe::signal.handle (3stap), .BR .IR \%probe::signal.handle.return (3stap), .BR .IR \%probe::signal.do_action (3stap), .BR .IR \%probe::signal.do_action.return (3stap), .BR .IR \%probe::signal.procmask (3stap), .BR .IR \%probe::signal.procmask.return (3stap), .BR .IR \%probe::signal.flush (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::socket.3stap000066400000000000000000000122721305163227500272150ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SOCKET 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::socket \- systemtap socket tapset .SH DESCRIPTION This family of probe points is used to probe socket activities. .TP .P .TP .B socket.send Message sent on a socket. .IP See .IR probe::socket.send (3stap) for details. .P .TP .B socket.receive Message received on a socket. .IP See .IR probe::socket.receive (3stap) for details. .P .TP .B socket.sendmsg Message is currently being sent on a socket. .IP See .IR probe::socket.sendmsg (3stap) for details. .P .TP .B socket.sendmsg.return Return from socket.sendmsg. .IP See .IR probe::socket.sendmsg.return (3stap) for details. .P .TP .B socket.recvmsg Message being received on socket .IP See .IR probe::socket.recvmsg (3stap) for details. .P .TP .B socket.recvmsg.return Return from Message being received on socket .IP See .IR probe::socket.recvmsg.return (3stap) for details. .P .TP .B socket.aio_write Message send via sock_aio_write() .IP See .IR probe::socket.aio_write (3stap) for details. .P .TP .B socket.aio_write.return Conclusion of message send via sock_aio_write() .IP See .IR probe::socket.aio_write.return (3stap) for details. .P .TP .B socket.aio_read Receiving message via sock_aio_read() .IP See .IR probe::socket.aio_read (3stap) for details. .P .TP .B socket.aio_read.return Conclusion of message received via sock_aio_read() .IP See .IR probe::socket.aio_read.return (3stap) for details. .P .TP .B socket.write_iter Message send via sock_write_iter() .IP See .IR probe::socket.write_iter (3stap) for details. .P .TP .B socket.write_iter.return Conclusion of message send via sock_write_iter() .IP See .IR probe::socket.write_iter.return (3stap) for details. .P .TP .B socket.read_iter Receiving message via sock_read_iter() .IP See .IR probe::socket.read_iter (3stap) for details. .P .TP .B socket.read_iter.return Conclusion of message received via sock_read_iter() .IP See .IR probe::socket.read_iter.return (3stap) for details. .P .TP .B socket.writev Message sent via socket_writev() .IP See .IR probe::socket.writev (3stap) for details. .P .TP .B socket.writev.return Conclusion of message sent via socket_writev() .IP See .IR probe::socket.writev.return (3stap) for details. .P .TP .B socket.readv Receiving a message via sock_readv() .IP See .IR probe::socket.readv (3stap) for details. .P .TP .B socket.readv.return Conclusion of receiving a message via sock_readv() .IP See .IR probe::socket.readv.return (3stap) for details. .P .TP .B socket.create Creation of a socket .IP See .IR probe::socket.create (3stap) for details. .P .TP .B socket.create.return Return from Creation of a socket .IP See .IR probe::socket.create.return (3stap) for details. .P .TP .B socket.close Close a socket .IP See .IR probe::socket.close (3stap) for details. .P .TP .B socket.close.return Return from closing a socket .IP See .IR probe::socket.close.return (3stap) for details. .P .TP .B sock_prot_num2str Given a protocol number, return a string representation .IP See .IR function::sock_prot_num2str (3stap) for details. .P .TP .B sock_prot_str2num Given a protocol name (string), return the corresponding protocol number .IP See .IR function::sock_prot_str2num (3stap) for details. .P .TP .B sock_fam_num2str Given a protocol family number, return a string representation .IP See .IR function::sock_fam_num2str (3stap) for details. .P .TP .B sock_fam_str2num Given a protocol family name (string), return the corresponding protocol family number .IP See .IR function::sock_fam_str2num (3stap) for details. .P .TP .B sock_state_num2str Given a socket state number, return a string representation .IP See .IR function::sock_state_num2str (3stap) for details. .P .TP .B sock_state_str2num Given a socket state string, return the corresponding state number .IP See .IR function::sock_state_str2num (3stap) for details. .SH SEE ALSO .BR .IR \%function::sock_prot_num2str (3stap), .BR .IR \%function::sock_prot_str2num (3stap), .BR .IR \%function::sock_fam_num2str (3stap), .BR .IR \%function::sock_fam_str2num (3stap), .BR .IR \%function::sock_state_num2str (3stap), .BR .IR \%function::sock_state_str2num (3stap), .BR .IR \%probe::socket.send (3stap), .BR .IR \%probe::socket.receive (3stap), .BR .IR \%probe::socket.sendmsg (3stap), .BR .IR \%probe::socket.sendmsg.return (3stap), .BR .IR \%probe::socket.recvmsg (3stap), .BR .IR \%probe::socket.recvmsg.return (3stap), .BR .IR \%probe::socket.aio_write (3stap), .BR .IR \%probe::socket.aio_write.return (3stap), .BR .IR \%probe::socket.aio_read (3stap), .BR .IR \%probe::socket.aio_read.return (3stap), .BR .IR \%probe::socket.write_iter (3stap), .BR .IR \%probe::socket.write_iter.return (3stap), .BR .IR \%probe::socket.read_iter (3stap), .BR .IR \%probe::socket.read_iter.return (3stap), .BR .IR \%probe::socket.writev (3stap), .BR .IR \%probe::socket.writev.return (3stap), .BR .IR \%probe::socket.readv (3stap), .BR .IR \%probe::socket.readv.return (3stap), .BR .IR \%probe::socket.create (3stap), .BR .IR \%probe::socket.create.return (3stap), .BR .IR \%probe::socket.close (3stap), .BR .IR \%probe::socket.close.return (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::speculative.3stap000066400000000000000000000015451305163227500302520ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SPECULATIVE 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::speculative \- systemtap speculative tapset .SH DESCRIPTION .TP .P .TP .B speculation Allocate a new id for speculative output .IP See .IR function::speculation (3stap) for details. .P .TP .B speculate Store a string for possible output later .IP See .IR function::speculate (3stap) for details. .P .TP .B discard Discard all output related to a speculation buffer .IP See .IR function::discard (3stap) for details. .P .TP .B commit Write out all output related to a speculation buffer .IP See .IR function::commit (3stap) for details. .SH SEE ALSO .BR .IR \%function::speculation (3stap), .BR .IR \%function::speculate (3stap), .BR .IR \%function::discard (3stap), .BR .IR \%function::commit (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::stap_staticmarkers.3stap000066400000000000000000000112641305163227500316300ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::STAP_STATICMARKERS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::stap_staticmarkers \- systemtap stap_staticmarkers tapset .SH DESCRIPTION .TP .P .TP .B stap.pass0 Starting stap pass0 (parsing command line arguments) .IP See .IR probe::stap.pass0 (3stap) for details. .P .TP .B stap.pass0.end Finished stap pass0 (parsing command line arguments) .IP See .IR probe::stap.pass0.end (3stap) for details. .P .TP .B stap.pass1a Starting stap pass1 (parsing user script) .IP See .IR probe::stap.pass1a (3stap) for details. .P .TP .B stap.pass1b Starting stap pass1 (parsing library scripts) .IP See .IR probe::stap.pass1b (3stap) for details. .P .TP .B stap.pass1.end Finished stap pass1 (parsing scripts) .IP See .IR probe::stap.pass1.end (3stap) for details. .P .TP .B stap.pass2 Starting stap pass2 (elaboration) .IP See .IR probe::stap.pass2 (3stap) for details. .P .TP .B stap.pass2.end Finished stap pass2 (elaboration) .IP See .IR probe::stap.pass2.end (3stap) for details. .P .TP .B stap.pass3 Starting stap pass3 (translation to C) .IP See .IR probe::stap.pass3 (3stap) for details. .P .TP .B stap.pass3.end Finished stap pass3 (translation to C) .IP See .IR probe::stap.pass3.end (3stap) for details. .P .TP .B stap.pass4 Starting stap pass4 (compile C code into kernel module) .IP See .IR probe::stap.pass4 (3stap) for details. .P .TP .B stap.pass4.end Finished stap pass4 (compile C code into kernel module) .IP See .IR probe::stap.pass4.end (3stap) for details. .P .TP .B stap.pass5 Starting stap pass5 (running the instrumentation) .IP See .IR probe::stap.pass5 (3stap) for details. .P .TP .B stap.pass5.end Finished stap pass5 (running the instrumentation) .IP See .IR probe::stap.pass5.end (3stap) for details. .P .TP .B stap.pass6 Starting stap pass6 (cleanup) .IP See .IR probe::stap.pass6 (3stap) for details. .P .TP .B stap.pass6.end Finished stap pass6 (cleanup) .IP See .IR probe::stap.pass6.end (3stap) for details. .P .TP .B stap.cache_clean Removing file from stap cache .IP See .IR probe::stap.cache_clean (3stap) for details. .P .TP .B stap.cache_add_mod Adding kernel instrumentation module to cache .IP See .IR probe::stap.cache_add_mod (3stap) for details. .P .TP .B stap.cache_add_src Adding C code translation to cache .IP See .IR probe::stap.cache_add_src (3stap) for details. .P .TP .B stap.cache_add_nss Add NSS (Network Security Services) information to cache .IP See .IR probe::stap.cache_add_nss (3stap) for details. .P .TP .B stap.cache_get Found item in stap cache .IP See .IR probe::stap.cache_get (3stap) for details. .P .TP .B stap.system Starting a command from stap .IP See .IR probe::stap.system (3stap) for details. .P .TP .B stap.system.spawn stap spawned new process .IP See .IR probe::stap.system.spawn (3stap) for details. .P .TP .B stap.system.return Finished a command from stap .IP See .IR probe::stap.system.return (3stap) for details. .P .TP .B staprun.insert_module Inserting SystemTap instrumentation module .IP See .IR probe::staprun.insert_module (3stap) for details. .P .TP .B staprun.remove_module Removing SystemTap instrumentation module .IP See .IR probe::staprun.remove_module (3stap) for details. .P .TP .B staprun.send_control_message Sending a control message .IP See .IR probe::staprun.send_control_message (3stap) for details. .P .TP .B stapio.receive_control_message Received a control message .IP See .IR probe::stapio.receive_control_message (3stap) for details. .SH SEE ALSO .BR .IR \%probe::stap.pass0 (3stap), .BR .IR \%probe::stap.pass0.end (3stap), .BR .IR \%probe::stap.pass1a (3stap), .BR .IR \%probe::stap.pass1b (3stap), .BR .IR \%probe::stap.pass1.end (3stap), .BR .IR \%probe::stap.pass2 (3stap), .BR .IR \%probe::stap.pass2.end (3stap), .BR .IR \%probe::stap.pass3 (3stap), .BR .IR \%probe::stap.pass3.end (3stap), .BR .IR \%probe::stap.pass4 (3stap), .BR .IR \%probe::stap.pass4.end (3stap), .BR .IR \%probe::stap.pass5 (3stap), .BR .IR \%probe::stap.pass5.end (3stap), .BR .IR \%probe::stap.pass6 (3stap), .BR .IR \%probe::stap.pass6.end (3stap), .BR .IR \%probe::stap.cache_clean (3stap), .BR .IR \%probe::stap.cache_add_mod (3stap), .BR .IR \%probe::stap.cache_add_src (3stap), .BR .IR \%probe::stap.cache_add_nss (3stap), .BR .IR \%probe::stap.cache_get (3stap), .BR .IR \%probe::stap.system (3stap), .BR .IR \%probe::stap.system.spawn (3stap), .BR .IR \%probe::stap.system.return (3stap), .BR .IR \%probe::staprun.insert_module (3stap), .BR .IR \%probe::staprun.remove_module (3stap), .BR .IR \%probe::staprun.send_control_message (3stap), .BR .IR \%probe::stapio.receive_control_message (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::stopwatch.3stap000066400000000000000000000026221305163227500277370ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::STOPWATCH 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::stopwatch \- systemtap stopwatch tapset .SH DESCRIPTION .TP .P .TP .B delete_stopwatch Remove an existing stopwatch .IP See .IR function::delete_stopwatch (3stap) for details. .P .TP .B start_stopwatch Start a stopwatch .IP See .IR function::start_stopwatch (3stap) for details. .P .TP .B stop_stopwatch Stop a stopwatch .IP See .IR function::stop_stopwatch (3stap) for details. .P .TP .B read_stopwatch_ns Reads the time in nanoseconds for a stopwatch .IP See .IR function::read_stopwatch_ns (3stap) for details. .P .TP .B read_stopwatch_us Reads the time in microseconds for a stopwatch .IP See .IR function::read_stopwatch_us (3stap) for details. .P .TP .B read_stopwatch_ms Reads the time in milliseconds for a stopwatch .IP See .IR function::read_stopwatch_ms (3stap) for details. .P .TP .B read_stopwatch_s Reads the time in seconds for a stopwatch .IP See .IR function::read_stopwatch_s (3stap) for details. .SH SEE ALSO .BR .IR \%function::delete_stopwatch (3stap), .BR .IR \%function::start_stopwatch (3stap), .BR .IR \%function::stop_stopwatch (3stap), .BR .IR \%function::read_stopwatch_ns (3stap), .BR .IR \%function::read_stopwatch_us (3stap), .BR .IR \%function::read_stopwatch_ms (3stap), .BR .IR \%function::read_stopwatch_s (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::string.3stap000066400000000000000000000030401305163227500272240ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::STRING 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::string \- systemtap string tapset .SH DESCRIPTION .TP .P .TP .B strlen Returns the length of a string .IP See .IR function::strlen (3stap) for details. .P .TP .B substr Returns a substring .IP See .IR function::substr (3stap) for details. .P .TP .B stringat Returns the char at a given position in the string .IP See .IR function::stringat (3stap) for details. .P .TP .B isinstr Returns whether a string is a substring of another string .IP See .IR function::isinstr (3stap) for details. .P .TP .B text_str Escape any non-printable chars in a string .IP See .IR function::text_str (3stap) for details. .P .TP .B text_strn Escape any non-printable chars in a string .IP See .IR function::text_strn (3stap) for details. .P .TP .B - strtol Convert a string to a long .IP See .IR function::- strtol (3stap) for details. .P .TP .B isdigit Checks for a digit .IP See .IR function::isdigit (3stap) for details. .P .TP .B string_quoted Quotes a given string .IP See .IR function::string_quoted (3stap) for details. .SH SEE ALSO .BR .IR \%function::strlen (3stap), .BR .IR \%function::substr (3stap), .BR .IR \%function::stringat (3stap), .BR .IR \%function::isinstr (3stap), .BR .IR \%function::text_str (3stap), .BR .IR \%function::text_strn (3stap), .BR .IR \%function::- (3stap), .BR .IR \%function::strtol (3stap), .BR .IR \%function::isdigit (3stap), .BR .IR \%function::string_quoted (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::switchfile.3stap000066400000000000000000000005751305163227500300710ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SWITCHFILE 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::switchfile \- systemtap switchfile tapset .SH DESCRIPTION .TP .P .TP .B switch_file switch to the next output file .IP See .IR function::switch_file (3stap) for details. .SH SEE ALSO .BR .IR \%function::switch_file (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::syscalls.3stap000066400000000000000000000517341305163227500275700ustar00rootroot00000000000000." -*- nroff -*- .TH TAPSET::SYSCALLS 3stap "March 2016" "Systemtap Tapset Reference" .SH NAME tapset::syscalls \- systemtap syscall tapset .SH DESCRIPTION Following is an overview of available syscall probes and convenience variables they offer. By default, each syscall probe has name and argstr convenience variables, which are not included in the overview in order to keep it short. Non dwarf-based nd_syscall probes are supposed to have the same convenience variables. .TP .P .TP .P .TP .B syscall.accept addr_uaddr, addrlen_uaddr, sockfd .P .TP .B syscall.accept4 addr_uaddr, addrlen_uaddr, flags, flags_str, sockfd .P .TP .B syscall.access mode, mode_str, pathname .P .TP .B syscall.acct filename .P .TP .B syscall.add_key description_uaddr, payload_uaddr, plen, ringid, type_uaddr .P .TP .B syscall.adjtimex buf_str, buf_uaddr .P .TP .B syscall.alarm seconds .P .TP .B syscall.arch_prctl addr, code, code_str .P .TP .B syscall.bdflush data, data_str, func .P .TP .B syscall.bind addrlen, my_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id .P .TP .B syscall.bpf attr_uaddr, cmd, cmd_str, size .P .TP .B syscall.brk brk .P .TP .B syscall.capget data_uaddr, header_uaddr .P .TP .B syscall.capset data_uaddr, header_uaddr .P .TP .B syscall.chdir path .P .TP .B syscall.chmod mode, path .P .TP .B syscall.chown group, owner, path .P .TP .B syscall.chown16 group, owner, path .P .TP .B syscall.chroot path .P .TP .B syscall.clock_adjtime clk_id, clk_id_str, tx_uaddr .P .TP .B syscall.clock_getres clk_id, clk_id_str, res_uaddr .P .TP .B syscall.clock_gettime clk_id, clk_id_str, tp_uaddr .P .TP .B syscall.clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr .P .TP .B syscall.clock_settime clk_id, clk_id_str, tp_uaddr .P .TP .B syscall.clone child_tid_uaddr, clone_flags, parent_tid_uaddr, stack_start .P .TP .B syscall.close fd .P .TP .B syscall.compat_adjtimex buf_str, buf_uaddr .P .TP .B syscall.compat_clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr .P .TP .B syscall.compat_execve args, env_str, filename .P .TP .B syscall.compat_execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str .P .TP .B syscall.compat_fadvise64 advice, fd, len, offset .P .TP .B syscall.compat_fadvise64_64 advice, fd, len, offset .P .TP .B syscall.compat_fallocate fd, len, mode, offset .P .TP .B syscall.compat_ftruncate64 fd, length .P .TP .B syscall.compat_futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val .P .TP .B syscall.compat_futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.compat_getitimer value_uaddr, which .P .TP .B syscall.compat_lookup_dcookie buffer_uaddr, cookie, len .P .TP .B syscall.compat_nanosleep rem_uaddr, req_uaddr .P .TP .B syscall.compat_ppoll .P .TP .B syscall.compat_pselect6 .P .TP .B syscall.compat_readahead count, fd, offset .P .TP .B syscall.compat_recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen .P .TP .B syscall.compat_rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.compat_select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr .P .TP .B syscall.compat_setitimer ovalue_uaddr, value_uaddr, which .P .TP .B syscall.compat_signalfd flags .P .TP .B syscall.compat_sys_msgctl buf_uaddr, cmd, cmd_str, msqid .P .TP .B syscall.compat_sys_msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid .P .TP .B syscall.compat_sys_msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid .P .TP .B syscall.compat_sys_recvmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.compat_sys_semctl arg, cmd, cmdstr, semid, semnum .P .TP .B syscall.compat_sys_semtimedop nsops, semid, sops_uaddr, timeout_uaddr .P .TP .B syscall.compat_sys_sendmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.compat_sys_shmat shmaddr_uaddr, shmflg, shmid .P .TP .B syscall.compat_sys_shmctl buf_uaddr, cmd, cmd_str, shmid .P .TP .B syscall.compat_sys_utimes filename .P .TP .B syscall.compat_truncate64 length, path, path_uaddr .P .TP .B syscall.compat_utime actime, buf_uaddr, filename, filename_uaddr, modtime .P .TP .B syscall.compat_utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr .P .TP .B syscall.compat_vmsplice fd, flags, flags_str, iov, nr_segs .P .TP .B syscall.connect addrlen, serv_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id .P .TP .B syscall.creat mode, pathname .P .TP .B syscall.delete_module flags, flags_str, name_user .P .TP .B syscall.dup oldfd .P .TP .B syscall.dup2 flags, newfd, oldfd .P .TP .B syscall.dup3 flags, newfd, oldfd .P .TP .B syscall.epoll_create flags, size .P .TP .B syscall.epoll_ctl epfd, event_uaddr, fd, op, op_str .P .TP .B syscall.epoll_pwait epfd, events_uaddr, maxevents, sigmask_uaddr, sigsetsize, timeout .P .TP .B syscall.epoll_wait epfd, events_uaddr, maxevents, timeout .P .TP .B syscall.eventfd count, flags, flags_str .P .TP .B syscall.execve args, env_str, filename .P .TP .B syscall.execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str .P .TP .B syscall.exit status .P .TP .B syscall.exit_group status .P .TP .B syscall.faccessat dirfd, dirfd_str, mode, mode_str, pathname .P .TP .B syscall.fadvise64 advice, fd, len, offset .P .TP .B syscall.fadvise64_64 advice, fd, len, offset .P .TP .B syscall.fallocate fd, len, mode, mode_str, offset .P .TP .B syscall.fanotify_init event_f_flags, event_f_flags_str, flags, flags_str .P .TP .B syscall.fanotify_mark dirfd, dirfd_str, fanotify_fd, flags, flags_str, mask, mask_str, pathname .P .TP .B syscall.fchdir fd .P .TP .B syscall.fchmod fildes, mode .P .TP .B syscall.fchmodat dirfd, dirfd_str, mode, pathname .P .TP .B syscall.fchown fd, group, owner .P .TP .B syscall.fchown16 fd, group, owner .P .TP .B syscall.fchownat dirfd, dirfd_str, flags, flags_str, group, owner, pathname .P .TP .B syscall.fcntl arg, cmd, cmd_str, fd .P .TP .B syscall.fdatasync fd .P .TP .B syscall.fgetxattr filedes, name_str, size, value_uaddr .P .TP .B syscall.finit_module fd, flags, flags_str, uargs .P .TP .B syscall.flistxattr filedes, list_uaddr, size .P .TP .B syscall.flock fd, operation .P .TP .B syscall.fork .P .TP .B syscall.fremovexattr filedes, name_str, name_uaddr .P .TP .B syscall.fsetxattr filedes, flags, flags_str, name_str, name_uaddr, size, value_str, value_uaddr .P .TP .B syscall.fstat buf_uaddr, filedes .P .TP .B syscall.fstatat buf_uaddr, dirfd, dirfd_str, flags, flags_str, path .P .TP .B syscall.fstatfs buf_uaddr, fd .P .TP .B syscall.fstatfs64 buf_uaddr, fd, sz .P .TP .B syscall.fsync fd .P .TP .B syscall.ftruncate fd, length .P .TP .B syscall.futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val .P .TP .B syscall.futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.get_mempolicy addr, flags, flags_str, maxnode, nmask_uaddr, policy_uaddr .P .TP .B syscall.get_robust_list len_uaddr, list_head_uaddr, pid .P .TP .B syscall.get_thread_area u_info_uaddr .P .TP .B syscall.getcpu cpu_uaddr, node_uaddr, tcache_uaddr .P .TP .B syscall.getcwd buf_uaddr, size .P .TP .B syscall.getdents count, dirp_uaddr, fd .P .TP .B syscall.getegid .P .TP .B syscall.geteuid .P .TP .B syscall.getgid .P .TP .B syscall.getgroups list_uaddr, size .P .TP .B syscall.gethostname len, name_uaddr .P .TP .B syscall.getitimer value_uaddr, which .P .TP .B syscall.getpeername name_uaddr, namelen_uaddr, s .P .TP .B syscall.getpgid pid .P .TP .B syscall.getpgrp .P .TP .B syscall.getpid .P .TP .B syscall.getppid .P .TP .B syscall.getpriority which, who .P .TP .B syscall.getrandom buf, count, flags, flags_str .P .TP .B syscall.getresgid egid_uaddr, rgid_uaddr, sgid_uaddr .P .TP .B syscall.getresuid euid_uaddr, ruid_uaddr, suid_uaddr .P .TP .B syscall.getrlimit resource, rlim_uaddr .P .TP .B syscall.getrusage usage_uaddr, who, who_str .P .TP .B syscall.getsid pid .P .TP .B syscall.getsockname name_uaddr, namelen_uaddr, s .P .TP .B syscall.getsockopt fd, level, level_str, optlen_uaddr, optname, optname_str, optval_uaddr .P .TP .B syscall.gettid .P .TP .B syscall.gettimeofday tv_uaddr, tz_uaddr .P .TP .B syscall.getuid .P .TP .B syscall.getxattr name_str, path, size, value_uaddr .P .TP .B syscall.init_module len, uargs, umod_uaddr .P .TP .B syscall.inotify_add_watch fd, mask, path, path_uaddr .P .TP .B syscall.inotify_init flags .P .TP .B syscall.inotify_rm_watch fd, wd .P .TP .B syscall.io_cancel ctx_id, iocb_uaddr, result_uaddr .P .TP .B syscall.io_destroy ctx .P .TP .B syscall.io_getevents ctx_id, events_uaddr, min_nr, nr, timeout_uaddr, timestr .P .TP .B syscall.io_setup ctxp_uaddr, maxevents .P .TP .B syscall.io_submit ctx_id, iocbpp_uaddr, nr .P .TP .B syscall.ioctl argp, fd, request .P .TP .B syscall.ioperm from, num, turn_on .P .TP .B syscall.iopl level .P .TP .B syscall.ioprio_get which, which_str, who .P .TP .B syscall.ioprio_set ioprio, ioprio_str, which, which_str, who .P .TP .B syscall.kcmp idx1, idx2, pid1, pid2, type, type_str .P .TP .B syscall.kexec_file_load cmdline, cmdline_len, flags, flags_str, initrd_fd, kernel_fd .P .TP .B syscall.kexec_load entry, flags, flags_str, nr_segments, segments_uaddr .P .TP .B syscall.keyctl arg2, arg3, arg4, arg5, option .P .TP .B syscall.kill pid, sig .P .TP .B syscall.lchown group, owner, path .P .TP .B syscall.lchown16 group, owner, path .P .TP .B syscall.lgetxattr name_str, path, size, value_uaddr .P .TP .B syscall.link newpath, oldpath .P .TP .B syscall.linkat flags, flags_str, newdirfd, newdirfd_str, newpath, olddirfd, olddirfd_str, oldpath .P .TP .B syscall.listen backlog, sockfd .P .TP .B syscall.listxattr list_uaddr, path, path_uaddr, size .P .TP .B syscall.llistxattr list_uaddr, path, path_uaddr, size .P .TP .B syscall.llseek fd, offset_high, offset_low, result_uaddr, whence, whence_str .P .TP .B syscall.lookup_dcookie buffer_uaddr, cookie, len .P .TP .B syscall.lremovexattr name_str, name_uaddr, path, path_uaddr .P .TP .B syscall.lseek fildes, offset, whence, whence_str .P .TP .B syscall.lsetxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr .P .TP .B syscall.lstat buf_uaddr, path .P .TP .B syscall.madvise advice, advice_str, length, start .P .TP .B syscall.mbind flags, flags_str, len, maxnode, mode, mode_str, nmask_uaddr, start .P .TP .B syscall.memfd_create flags, flags_str, uname .P .TP .B syscall.migrate_pages maxnode, new_nodes, old_nodes, pid .P .TP .B syscall.mincore length, start, vec_uaddr .P .TP .B syscall.mkdir mode, pathname, pathname_uaddr .P .TP .B syscall.mkdirat dirfd, dirfd_str, mode, pathname .P .TP .B syscall.mknod dev, mode, pathname .P .TP .B syscall.mknodat dev, dirfd, dirfd_str, mode, mode_str, pathname .P .TP .B syscall.mlock addr, len .P .TP .B syscall.mlockall flags .P .TP .B syscall.mmap2 fd, flags, length, pgoffset, prot, start .P .TP .B syscall.modify_ldt bytecount, func, ptr_uaddr .P .TP .B syscall.mount data, filesystemtype, mountflags, mountflags_str, source, target .P .TP .B syscall.move_pages flags, flags_str, nodes, nr_pages, pages, pid, status .P .TP .B syscall.mprotect addr, len, prot, prot_str .P .TP .B syscall.mq_getsetattr mqdes, u_mqstat_uaddr, u_omqstat_uaddr .P .TP .B syscall.mq_notify mqdes, notification_uaddr .P .TP .B syscall.mq_open filename, mode, name_uaddr, oflag, u_attr_uaddr .P .TP .B syscall.mq_timedreceive abs_timeout_uaddr, mqdes, msg_len, msg_prio_uaddr, msg_ptr_uaddr .P .TP .B syscall.mq_timedsend abs_timeout_uaddr, mqdes, msg_len, msg_prio, msg_ptr_uaddr .P .TP .B syscall.mq_unlink u_name, u_name_uaddr .P .TP .B syscall.mremap flags, new_address, new_size, old_address, old_size .P .TP .B syscall.msgctl buf_uaddr, cmd, cmd_str, msqid .P .TP .B syscall.msgget key, key_str, msgflg, msgflg_str .P .TP .B syscall.msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid .P .TP .B syscall.msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid .P .TP .B syscall.msync flags, length, start .P .TP .B syscall.munlock addr, len .P .TP .B syscall.munlockall .P .TP .B syscall.munmap length, start .P .TP .B syscall.name_to_handle_at dfd, dfd_str, flags, flags_str, handle_uaddr, mnt_id_uaddr, pathname .P .TP .B syscall.nanosleep rem_uaddr, req_uaddr .P .TP .B syscall.ni_syscall .P .TP .B syscall.nice inc .P .TP .B syscall.open filename, flags, mode .P .TP .B syscall.open_by_handle_at flags, flags_str, handle_uaddr, mount_dfd, mount_dfd_str .P .TP .B syscall.openat dfd, dfd_str, filename, flags, mode .P .TP .B syscall.pause .P .TP .B syscall.perf_event_open attr_uaddr, cpu, flags, flags_str, group_fd, pid .P .TP .B syscall.personality persona .P .TP .B syscall.pipe fildes_uaddr, flag_str, flags, pipe0, pipe1 .P .TP .B syscall.pivot_root new_root_str, old_root_str .P .TP .B syscall.poll nfds, timeout, ufds_uaddr .P .TP .B syscall.ppoll .P .TP .B syscall.prctl arg2, arg3, arg4, arg5, option .P .TP .B syscall.pread buf_uaddr, count, fd, offset .P .TP .B syscall.preadv count, fd, offset, vector_uaddr .P .TP .B syscall.prlimit64 new_rlim_uaddr, old_rlim_uaddr, pid, resource .P .TP .B syscall.process_vm_readv flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt .P .TP .B syscall.process_vm_writev flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt .P .TP .B syscall.pselect6 .P .TP .B syscall.ptrace addr, data, pid, request .P .TP .B syscall.pwrite buf_uaddr, count, fd, offset .P .TP .B syscall.pwritev count, fd, offset, vector_uaddr .P .TP .B syscall.quotactl addr_uaddr, cmd, cmd_str, id, special, special_str .P .TP .B syscall.read buf_uaddr, count, fd .P .TP .B syscall.readahead count, fd, offset .P .TP .B syscall.readdir count, dirent, fd .P .TP .B syscall.readlink buf_uaddr, bufsiz, path .P .TP .B syscall.readlinkat buf_uaddr, bufsiz, dfd, dfd_str, path .P .TP .B syscall.readv count, fd, vector_uaddr .P .TP .B syscall.reboot arg_uaddr, flag, flag_str, magic2, magic2_str, magic, magic_str .P .TP .B syscall.recv buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.recvfrom addr_uaddr, addrlen_uaddr, buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen .P .TP .B syscall.recvmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.remap_file_pages flags, pgoff, prot, size, start .P .TP .B syscall.removexattr name_str, path .P .TP .B syscall.rename newpath, oldpath .P .TP .B syscall.renameat newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str .P .TP .B syscall.renameat2 flags, flags_str, newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str .P .TP .B syscall.request_key callout_info_uaddr, description_uaddr, destringid, type_uaddr .P .TP .B syscall.restart_syscall .P .TP .B syscall.rmdir pathname .P .TP .B syscall.rt_sigaction act_uaddr, oact_uaddr, sig, sigsetsize .P .TP .B syscall.rt_sigaction32 act_uaddr, oact_uaddr, sig, sigsetsize .P .TP .B syscall.rt_sigpending set_uaddr, sigsetsize .P .TP .B syscall.rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.rt_sigqueueinfo pid, sig, uinfo_uaddr .P .TP .B syscall.rt_sigreturn .P .TP .B syscall.rt_sigsuspend set_uaddr, sigsetsize .P .TP .B syscall.rt_sigtimedwait sigsetsize, uinfo_uaddr, uthese_uaddr, uts_uaddr .P .TP .B syscall.rt_tgsigqueueinfo sig, tgid, tid, uinfo_uaddr .P .TP .B syscall.sched_get_priority_max policy .P .TP .B syscall.sched_get_priority_min policy .P .TP .B syscall.sched_getaffinity len, mask_uaddr, pid .P .TP .B syscall.sched_getattr flags, pid, sched_attr_str, sched_attr_uaddr, size .P .TP .B syscall.sched_getparam p_uaddr, pid .P .TP .B syscall.sched_getscheduler pid .P .TP .B syscall.sched_rr_get_interval pid, tp_uaddr .P .TP .B syscall.sched_setaffinity len, mask_uaddr, pid .P .TP .B syscall.sched_setattr flags, pid, sched_attr_str, sched_attr_uaddr .P .TP .B syscall.sched_setparam p_uaddr, pid .P .TP .B syscall.sched_setscheduler p_uaddr, pid, policy, policy_str .P .TP .B syscall.sched_yield .P .TP .B syscall.seccomp flags, flags_str, op, op_str, uargs, uargs_uaddr .P .TP .B syscall.select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr .P .TP .B syscall.semctl arg, cmd, cmdstr, semid, semnum .P .TP .B syscall.semget key, key_str, nsems, semflg, semflg_str .P .TP .B syscall.semop nsops, semid, sops_uaddr .P .TP .B syscall.semtimedop nsops, semid, sops_uaddr, timeout_uaddr .P .TP .B syscall.send buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.sendfile count, in_fd, offset_uaddr, out_fd .P .TP .B syscall.sendmmsg flags, flags_str, mmsg_uaddr, s, vlen .P .TP .B syscall.sendmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.sendto buf_uaddr, flags, flags_str, len, s, to_uaddr, tolen .P .TP .B syscall.set_mempolicy maxnode, mode, mode_str, nmask_uaddr .P .TP .B syscall.set_robust_list len, list_head_uaddr .P .TP .B syscall.set_thread_area u_info_uaddr .P .TP .B syscall.set_tid_address tidptr_uaddr .P .TP .B syscall.setdomainname domainname_str, domainname_uaddr, len .P .TP .B syscall.setfsgid fsgid .P .TP .B syscall.setfsuid fsuid .P .TP .B syscall.setgid gid .P .TP .B syscall.setgroups list_uaddr, size .P .TP .B syscall.sethostname hostname_uaddr, len, name_str .P .TP .B syscall.setitimer ovalue_uaddr, value_uaddr, which .P .TP .B syscall.setns fd, nstype .P .TP .B syscall.setpgid pgid, pid .P .TP .B syscall.setpriority prio, which, which_str, who .P .TP .B syscall.setregid egid, rgid .P .TP .B syscall.setregid16 egid, rgid .P .TP .B syscall.setresgid egid, rgid, sgid .P .TP .B syscall.setresgid16 egid, rgid, sgid .P .TP .B syscall.setresuid euid, ruid, suid .P .TP .B syscall.setresuid16 euid, ruid, suid .P .TP .B syscall.setreuid euid, ruid .P .TP .B syscall.setreuid16 euid, ruid .P .TP .B syscall.setrlimit resource, rlim_uaddr .P .TP .B syscall.setsid .P .TP .B syscall.setsockopt fd, level, level_str, optlen, optname, optname_str, optval_uaddr .P .TP .B syscall.settimeofday tv_uaddr, tz_uaddr .P .TP .B syscall.settimeofday32 tv_uaddr, tz_uaddr .P .TP .B syscall.setuid uid .P .TP .B syscall.setxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr .P .TP .B syscall.sgetmask .P .TP .B syscall.shmat shmaddr_uaddr, shmflg, shmid .P .TP .B syscall.shmctl buf_uaddr, cmd, cmd_str, shmid .P .TP .B syscall.shmdt shmaddr_uaddr .P .TP .B syscall.shmget key, shmflg, shmflg_str, size .P .TP .B syscall.shutdown how, how_str, s .P .TP .B syscall.sigaction32 act_uaddr, oact_uaddr, sig .P .TP .B syscall.sigaltstack uoss_uaddr, uss_uaddr .P .TP .B syscall.signal handler, sig .P .TP .B syscall.signalfd flags .P .TP .B syscall.sigpending .P .TP .B syscall.sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.sigreturn .P .TP .B syscall.sigsuspend mask .P .TP .B syscall.socket family, protocol, type .P .TP .B syscall.socketpair family, protocol, sv_uaddr, type .P .TP .B syscall.splice fd_in, fd_out, flags, flags_str, len, off_in, off_out .P .TP .B syscall.ssetmask newmask, newmask_str .P .TP .B syscall.stat buf_uaddr, filename, filename_uaddr .P .TP .B syscall.statfs buf_uaddr, path .P .TP .B syscall.statfs64 buf_uaddr, path, sz .P .TP .B syscall.stime t_uaddr .P .TP .B syscall.swapoff path .P .TP .B syscall.swapon path, swapflags, swapflags_str .P .TP .B syscall.symlink newpath, oldpath .P .TP .B syscall.symlinkat newdfd, newdfd_str, newname, newname_str, oldname, oldname_str .P .TP .B syscall.sync .P .TP .B syscall.sync_file_range fd, flags, flags_str, nbytes, offset .P .TP .B syscall.syncfs fd .P .TP .B syscall.sysctl .P .TP .B syscall.sysfs arg1, arg2, option .P .TP .B syscall.sysinfo info_uaddr .P .TP .B syscall.syslog bufp_uaddr, len, type .P .TP .B syscall.tee fdin, fdout, flags, len .P .TP .B syscall.tgkill pid, sig, tgid .P .TP .B syscall.time t_uaddr .P .TP .B syscall.timer_create clockid, clockid_str, evp_uaddr, timerid_uaddr .P .TP .B syscall.timer_delete timerid .P .TP .B syscall.timer_getoverrun timerid .P .TP .B syscall.timer_gettime timerid, value_uaddr .P .TP .B syscall.timer_settime flags, ovalue_uaddr, timerid, value_uaddr .P .TP .B syscall.timerfd_create clockid, clockid_str, flags, flags_str .P .TP .B syscall.timerfd_gettime fd, value_uaddr .P .TP .B syscall.timerfd_settime fd, flags, flags_str, ovalue_uaddr, value_uaddr .P .TP .B syscall.times buf_uaddr .P .TP .B syscall.tkill pid, sig .P .TP .B syscall.truncate length, path, path_uaddr .P .TP .B syscall.umask mask .P .TP .B syscall.umount flags, flags_str, target .P .TP .B syscall.uname .P .TP .B syscall.unlink pathname, pathname_uaddr .P .TP .B syscall.unlinkat dfd, dfd_str, flag, flag_str, pathname, pathname_str .P .TP .B syscall.unshare unshare_flags .P .TP .B syscall.ustat dev, ubuf_uaddr .P .TP .B syscall.ustat32 dev, ubuf_uaddr .P .TP .B syscall.utime actime, buf_uaddr, filename, filename_uaddr, modtime .P .TP .B syscall.utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr .P .TP .B syscall.utimes filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.vfork .P .TP .B syscall.vhangup .P .TP .B syscall.vmsplice fd, flags, flags_str, iov, nr_segs .P .TP .B syscall.wait4 options, options_str, pid, rusage_uaddr, status_uaddr .P .TP .B syscall.waitid infop_uaddr, options, options_str, pid, rusage_uaddr, which, which_str .P .TP .B syscall.waitpid options, options_str, pid, status_uaddr .P .TP .B syscall.write buf_uaddr, count, fd .P .TP .B syscall.writev count, fd, vector_uaddr .SH SEE ALSO .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::system.3stap000066400000000000000000000005411305163227500272450ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::SYSTEM 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::system \- systemtap system tapset .SH DESCRIPTION .TP .P .TP .B system Issue a command to the system .IP See .IR function::system (3stap) for details. .SH SEE ALSO .BR .IR \%function::system (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::target_set.3stap000066400000000000000000000010741305163227500300640ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TARGET_SET 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::target_set \- systemtap target_set tapset .SH DESCRIPTION .TP .P .TP .B target_set_pid Does pid descend from target process? .IP See .IR function::target_set_pid (3stap) for details. .P .TP .B target_set_report Print a report about the target set .IP See .IR function::target_set_report (3stap) for details. .SH SEE ALSO .BR .IR \%function::target_set_pid (3stap), .BR .IR \%function::target_set_report (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::task.3stap000066400000000000000000000074201305163227500266660ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TASK 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::task \- systemtap task tapset .SH DESCRIPTION .TP .P .TP .B task_current The current task_struct of the current task .IP See .IR function::task_current (3stap) for details. .P .TP .B task_parent The task_struct of the parent task .IP See .IR function::task_parent (3stap) for details. .P .TP .B task_state The state of the task .IP See .IR function::task_state (3stap) for details. .P .TP .B task_execname The name of the task .IP See .IR function::task_execname (3stap) for details. .P .TP .B task_pid The process identifier of the task .IP See .IR function::task_pid (3stap) for details. .P .TP .B task_ns_pid The process identifier of the task .IP See .IR function::task_ns_pid (3stap) for details. .P .TP .B pid2task The task_struct of the given process identifier .IP See .IR function::pid2task (3stap) for details. .P .TP .B pid2execname The name of the given process identifier .IP See .IR function::pid2execname (3stap) for details. .P .TP .B task_tid The thread identifier of the task .IP See .IR function::task_tid (3stap) for details. .P .TP .B task_ns_tid The thread identifier of the task as seen in a namespace .IP See .IR function::task_ns_tid (3stap) for details. .P .TP .B task_gid The group identifier of the task .IP See .IR function::task_gid (3stap) for details. .P .TP .B task_ns_gid The group identifier of the task as seen in a namespace .IP See .IR function::task_ns_gid (3stap) for details. .P .TP .B task_egid The effective group identifier of the task .IP See .IR function::task_egid (3stap) for details. .P .TP .B task_ns_egid The effective group identifier of the task .IP See .IR function::task_ns_egid (3stap) for details. .P .TP .B task_uid The user identifier of the task .IP See .IR function::task_uid (3stap) for details. .P .TP .B task_ns_uid The user identifier of the task .IP See .IR function::task_ns_uid (3stap) for details. .P .TP .B task_euid The effective user identifier of the task .IP See .IR function::task_euid (3stap) for details. .P .TP .B task_ns_euid The effective user identifier of the task .IP See .IR function::task_ns_euid (3stap) for details. .P .TP .B task_prio The priority value of the task .IP See .IR function::task_prio (3stap) for details. .P .TP .B task_nice The nice value of the task .IP See .IR function::task_nice (3stap) for details. .P .TP .B task_cpu The scheduled cpu of the task .IP See .IR function::task_cpu (3stap) for details. .P .TP .B task_open_file_handles The number of open files of the task .IP See .IR function::task_open_file_handles (3stap) for details. .P .TP .B task_max_file_handles The max number of open files for the task .IP See .IR function::task_max_file_handles (3stap) for details. .SH SEE ALSO .BR .IR \%function::task_current (3stap), .BR .IR \%function::task_parent (3stap), .BR .IR \%function::task_state (3stap), .BR .IR \%function::task_execname (3stap), .BR .IR \%function::task_pid (3stap), .BR .IR \%function::task_ns_pid (3stap), .BR .IR \%function::pid2task (3stap), .BR .IR \%function::pid2execname (3stap), .BR .IR \%function::task_tid (3stap), .BR .IR \%function::task_ns_tid (3stap), .BR .IR \%function::task_gid (3stap), .BR .IR \%function::task_ns_gid (3stap), .BR .IR \%function::task_egid (3stap), .BR .IR \%function::task_ns_egid (3stap), .BR .IR \%function::task_uid (3stap), .BR .IR \%function::task_ns_uid (3stap), .BR .IR \%function::task_euid (3stap), .BR .IR \%function::task_ns_euid (3stap), .BR .IR \%function::task_prio (3stap), .BR .IR \%function::task_nice (3stap), .BR .IR \%function::task_cpu (3stap), .BR .IR \%function::task_open_file_handles (3stap), .BR .IR \%function::task_max_file_handles (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::task_ancestry.3stap000066400000000000000000000006141305163227500305740ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TASK_ANCESTRY 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::task_ancestry \- systemtap task_ancestry tapset .SH DESCRIPTION .TP .P .TP .B task_ancestry The ancestry of the given task .IP See .IR function::task_ancestry (3stap) for details. .SH SEE ALSO .BR .IR \%function::task_ancestry (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::task_time.3stap000066400000000000000000000055451305163227500277120ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TASK_TIME 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::task_time \- systemtap task_time tapset .SH DESCRIPTION Task time query and utility functions provide information about the time resource usage of the current task. These functions provide information about the user time and system time of the current task. And provide utility functions to turn the reported times into miliseconds and create human readable string representations of task time used. The reported times are approximates and should be used for "coarse grained" measurements only. The reported user and system time are only for the current task, not for the process as a whole nor of any time spend by children of the current task. .TP .P .TP .B task_utime User time of the task .IP See .IR function::task_utime (3stap) for details. .P .TP .B task_utime User time of the task .IP See .IR function::task_utime (3stap) for details. .P .TP .B task_stime System time of the task .IP See .IR function::task_stime (3stap) for details. .P .TP .B task_stime System time of the task .IP See .IR function::task_stime (3stap) for details. .P .TP .B task_start_time Start time of the given task .IP See .IR function::task_start_time (3stap) for details. .P .TP .B cputime_to_msecs Translates the given cputime into milliseconds .IP See .IR function::cputime_to_msecs (3stap) for details. .P .TP .B cputime_to_usecs Translates the given cputime into microseconds .IP See .IR function::cputime_to_usecs (3stap) for details. .P .TP .B msecs_to_string Human readable string for given milliseconds .IP See .IR function::msecs_to_string (3stap) for details. .P .TP .B usecs_to_string Human readable string for given microseconds .IP See .IR function::usecs_to_string (3stap) for details. .P .TP .B nsecs_to_string Human readable string for given nanoseconds .IP See .IR function::nsecs_to_string (3stap) for details. .P .TP .B cputime_to_string Human readable string for given cputime .IP See .IR function::cputime_to_string (3stap) for details. .P .TP .B task_time_string Human readable string of task time usage .IP See .IR function::task_time_string (3stap) for details. .P .TP .B task_time_string_tid Human readable string of task time usage .IP See .IR function::task_time_string_tid (3stap) for details. .SH SEE ALSO .BR .IR \%function::task_utime (3stap), .BR .IR \%function::task_stime (3stap), .BR .IR \%function::task_start_time (3stap), .BR .IR \%function::cputime_to_msecs (3stap), .BR .IR \%function::cputime_to_usecs (3stap), .BR .IR \%function::msecs_to_string (3stap), .BR .IR \%function::usecs_to_string (3stap), .BR .IR \%function::nsecs_to_string (3stap), .BR .IR \%function::cputime_to_string (3stap), .BR .IR \%function::task_time_string (3stap), .BR .IR \%function::task_time_string_tid (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tcp.3stap000066400000000000000000000032501305163227500265070ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TCP 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tcp \- systemtap tcp tapset .SH DESCRIPTION This family of probe points is used to probe events that occur in the TCP layer, .TP .P .TP .B tcp.sendmsg Sending a tcp message .IP See .IR probe::tcp.sendmsg (3stap) for details. .P .TP .B tcp.sendmsg.return Sending TCP message is done .IP See .IR probe::tcp.sendmsg.return (3stap) for details. .P .TP .B tcp.recvmsg Receiving TCP message .IP See .IR probe::tcp.recvmsg (3stap) for details. .P .TP .B tcp.recvmsg.return Receiving TCP message complete .IP See .IR probe::tcp.recvmsg.return (3stap) for details. .P .TP .B tcp.disconnect TCP socket disconnection .IP See .IR probe::tcp.disconnect (3stap) for details. .P .TP .B tcp.disconnect.return TCP socket disconnection complete .IP See .IR probe::tcp.disconnect.return (3stap) for details. .P .TP .B tcp.setsockopt Call to setsockopt() .IP See .IR probe::tcp.setsockopt (3stap) for details. .P .TP .B tcp.setsockopt.return Return from setsockopt() .IP See .IR probe::tcp.setsockopt.return (3stap) for details. .P .TP .B tcp.receive Called when a TCP packet is received .IP See .IR probe::tcp.receive (3stap) for details. .SH SEE ALSO .BR .IR \%probe::tcp.sendmsg (3stap), .BR .IR \%probe::tcp.sendmsg.return (3stap), .BR .IR \%probe::tcp.recvmsg (3stap), .BR .IR \%probe::tcp.recvmsg.return (3stap), .BR .IR \%probe::tcp.disconnect (3stap), .BR .IR \%probe::tcp.disconnect.return (3stap), .BR .IR \%probe::tcp.setsockopt (3stap), .BR .IR \%probe::tcp.setsockopt.return (3stap), .BR .IR \%probe::tcp.receive (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tcpmib-filter-default.3stap000066400000000000000000000006751305163227500321140ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TCPMIB-FILTER-DEFAULT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tcpmib-filter-default \- systemtap tcpmib-filter-default tapset .SH DESCRIPTION .TP .P .TP .B tcpmib_filter_key Default filter function for tcpmib.* probes .IP See .IR function::tcpmib_filter_key (3stap) for details. .SH SEE ALSO .BR .IR \%function::tcpmib_filter_key (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tcpmib.3stap000066400000000000000000000047461305163227500272120ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TCPMIB 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tcpmib \- systemtap tcpmib tapset .SH DESCRIPTION .TP .P .TP .B tcpmib_get_state Get a socket's state .IP See .IR function::tcpmib_get_state (3stap) for details. .P .TP .B tcpmib_local_addr Get the source address .IP See .IR function::tcpmib_local_addr (3stap) for details. .P .TP .B tcpmib_remote_addr Get the remote address .IP See .IR function::tcpmib_remote_addr (3stap) for details. .P .TP .B tcpmib_local_port Get the local port .IP See .IR function::tcpmib_local_port (3stap) for details. .P .TP .B tcpmib_remote_port Get the remote port .IP See .IR function::tcpmib_remote_port (3stap) for details. .P .TP .B tcpmib.ActiveOpens Count an active opening of a socket .IP See .IR probe::tcpmib.ActiveOpens (3stap) for details. .P .TP .B tcpmib.AttemptFails Count a failed attempt to open a socket .IP See .IR probe::tcpmib.AttemptFails (3stap) for details. .P .TP .B tcpmib.CurrEstab Update the count of open sockets .IP See .IR probe::tcpmib.CurrEstab (3stap) for details. .P .TP .B tcpmib.EstabResets Count the reset of a socket .IP See .IR probe::tcpmib.EstabResets (3stap) for details. .P .TP .B tcpmib.InSegs Count an incoming tcp segment .IP See .IR probe::tcpmib.InSegs (3stap) for details. .P .TP .B tcpmib.OutRsts Count the sending of a reset packet .IP See .IR probe::tcpmib.OutRsts (3stap) for details. .P .TP .B tcpmib.OutSegs Count the sending of a TCP segment .IP See .IR probe::tcpmib.OutSegs (3stap) for details. .P .TP .B tcpmib.PassiveOpens Count the passive creation of a socket .IP See .IR probe::tcpmib.PassiveOpens (3stap) for details. .P .TP .B tcpmib.RetransSegs Count the retransmission of a TCP segment .IP See .IR probe::tcpmib.RetransSegs (3stap) for details. .SH SEE ALSO .BR .IR \%function::tcpmib_get_state (3stap), .BR .IR \%function::tcpmib_local_addr (3stap), .BR .IR \%function::tcpmib_remote_addr (3stap), .BR .IR \%function::tcpmib_local_port (3stap), .BR .IR \%function::tcpmib_remote_port (3stap), .BR .IR \%probe::tcpmib.ActiveOpens (3stap), .BR .IR \%probe::tcpmib.AttemptFails (3stap), .BR .IR \%probe::tcpmib.CurrEstab (3stap), .BR .IR \%probe::tcpmib.EstabResets (3stap), .BR .IR \%probe::tcpmib.InSegs (3stap), .BR .IR \%probe::tcpmib.OutRsts (3stap), .BR .IR \%probe::tcpmib.OutSegs (3stap), .BR .IR \%probe::tcpmib.PassiveOpens (3stap), .BR .IR \%probe::tcpmib.RetransSegs (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::timestamp.3stap000066400000000000000000000015301305163227500277230ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TIMESTAMP 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::timestamp \- systemtap timestamp tapset .SH DESCRIPTION Each timestamp function returns a value to indicate when a function is executed. These returned values can then be used to indicate when an event occurred, provide an ordering for events, or compute the amount of time elapsed between two time stamps. .TP .P .TP .B get_cycles Processor cycle count .IP See .IR function::get_cycles (3stap) for details. .P .TP .B jiffies Kernel jiffies count .IP See .IR function::jiffies (3stap) for details. .P .TP .B HZ Kernel HZ .IP See .IR function::HZ (3stap) for details. .SH SEE ALSO .BR .IR \%function::get_cycles (3stap), .BR .IR \%function::jiffies (3stap), .BR .IR \%function::HZ (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::timestamp_gtod.3stap000066400000000000000000000016341305163227500307450ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TIMESTAMP_GTOD 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::timestamp_gtod \- systemtap timestamp_gtod tapset .SH DESCRIPTION .TP .P .TP .B gettimeofday_ns Number of nanoseconds since UNIX epoch .IP See .IR function::gettimeofday_ns (3stap) for details. .P .TP .B gettimeofday_us Number of microseconds since UNIX epoch .IP See .IR function::gettimeofday_us (3stap) for details. .P .TP .B gettimeofday_ms Number of milliseconds since UNIX epoch .IP See .IR function::gettimeofday_ms (3stap) for details. .P .TP .B gettimeofday_s Number of seconds since UNIX epoch .IP See .IR function::gettimeofday_s (3stap) for details. .SH SEE ALSO .BR .IR \%function::gettimeofday_ns (3stap), .BR .IR \%function::gettimeofday_us (3stap), .BR .IR \%function::gettimeofday_ms (3stap), .BR .IR \%function::gettimeofday_s (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::timestamp_monotonic.3stap000066400000000000000000000031461305163227500320150ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TIMESTAMP_MONOTONIC 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::timestamp_monotonic \- systemtap timestamp_monotonic tapset .SH DESCRIPTION .TP .P .TP .B cpu_clock_ns Number of nanoseconds on the given cpu's clock .IP See .IR function::cpu_clock_ns (3stap) for details. .P .TP .B cpu_clock_us Number of microseconds on the given cpu's clock .IP See .IR function::cpu_clock_us (3stap) for details. .P .TP .B cpu_clock_ms Number of milliseconds on the given cpu's clock .IP See .IR function::cpu_clock_ms (3stap) for details. .P .TP .B cpu_clock_s Number of seconds on the given cpu's clock .IP See .IR function::cpu_clock_s (3stap) for details. .P .TP .B local_clock_ns Number of nanoseconds on the local cpu's clock .IP See .IR function::local_clock_ns (3stap) for details. .P .TP .B local_clock_us Number of microseconds on the local cpu's clock .IP See .IR function::local_clock_us (3stap) for details. .P .TP .B local_clock_ms Number of milliseconds on the local cpu's clock .IP See .IR function::local_clock_ms (3stap) for details. .P .TP .B local_clock_s Number of seconds on the local cpu's clock .IP See .IR function::local_clock_s (3stap) for details. .SH SEE ALSO .BR .IR \%function::cpu_clock_ns (3stap), .BR .IR \%function::cpu_clock_us (3stap), .BR .IR \%function::cpu_clock_ms (3stap), .BR .IR \%function::cpu_clock_s (3stap), .BR .IR \%function::local_clock_ns (3stap), .BR .IR \%function::local_clock_us (3stap), .BR .IR \%function::local_clock_ms (3stap), .BR .IR \%function::local_clock_s (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tokenize.3stap000066400000000000000000000007611305163227500275550ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TOKENIZE 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tokenize \- systemtap tokenize tapset .SH DESCRIPTION .TP .P .TP .B tokenize Return the next non-empty token in a string .IP See .IR function::tokenize (3stap) for details. .P .TP .B tokenize Return the next non-empty token in a string .IP See .IR function::tokenize (3stap) for details. .SH SEE ALSO .BR .IR \%function::tokenize (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tty.3stap000066400000000000000000000034621305163227500265460ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TTY 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tty \- systemtap tty tapset .SH DESCRIPTION .TP .P .TP .B tty.open Called when a tty is opened .IP See .IR probe::tty.open (3stap) for details. .P .TP .B tty.release Called when the tty is closed .IP See .IR probe::tty.release (3stap) for details. .P .TP .B tty.resize Called when a terminal resize happens .IP See .IR probe::tty.resize (3stap) for details. .P .TP .B tty.ioctl called when a ioctl is request to the tty .IP See .IR probe::tty.ioctl (3stap) for details. .P .TP .B tty.init Called when a tty is being initalized .IP See .IR probe::tty.init (3stap) for details. .P .TP .B tty.register Called when a tty device is registred .IP See .IR probe::tty.register (3stap) for details. .P .TP .B tty.unregister Called when a tty device is being unregistered .IP See .IR probe::tty.unregister (3stap) for details. .P .TP .B tty.poll Called when a tty device is being polled .IP See .IR probe::tty.poll (3stap) for details. .P .TP .B tty.receive called when a tty receives a message .IP See .IR probe::tty.receive (3stap) for details. .P .TP .B tty.write write to the tty line .IP See .IR probe::tty.write (3stap) for details. .P .TP .B tty.read called when a tty line will be read .IP See .IR probe::tty.read (3stap) for details. .SH SEE ALSO .BR .IR \%probe::tty.open (3stap), .BR .IR \%probe::tty.release (3stap), .BR .IR \%probe::tty.resize (3stap), .BR .IR \%probe::tty.ioctl (3stap), .BR .IR \%probe::tty.init (3stap), .BR .IR \%probe::tty.register (3stap), .BR .IR \%probe::tty.unregister (3stap), .BR .IR \%probe::tty.poll (3stap), .BR .IR \%probe::tty.receive (3stap), .BR .IR \%probe::tty.write (3stap), .BR .IR \%probe::tty.read (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::tzinfo.3stap000066400000000000000000000012721305163227500272340ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::TZINFO 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::tzinfo \- systemtap tzinfo tapset .SH DESCRIPTION .TP .P .TP .B tz_gmtoff Return local time zone offset .IP See .IR function::tz_gmtoff (3stap) for details. .P .TP .B tz_name Return local time zone name .IP See .IR function::tz_name (3stap) for details. .P .TP .B tz_ctime Convert seconds since epoch into human readable date/time string, with local time zone .IP See .IR function::tz_ctime (3stap) for details. .SH SEE ALSO .BR .IR \%function::tz_gmtoff (3stap), .BR .IR \%function::tz_name (3stap), .BR .IR \%function::tz_ctime (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ucontext-symbols.3stap000066400000000000000000000041151305163227500312610ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::UCONTEXT-SYMBOLS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ucontext-symbols \- systemtap ucontext-symbols tapset .SH DESCRIPTION User context symbol functions provide additional information about addresses from an application. These functions can provide information about the user space map (library) that the event occurred or the function symbol of an address. .TP .P .TP .B ustack Return address at given depth of user stack backtrace .IP See .IR function::ustack (3stap) for details. .P .TP .B usymname Return the symbol of an address in the current task. .IP See .IR function::usymname (3stap) for details. .P .TP .B usymdata Return the symbol and module offset of an address. .IP See .IR function::usymdata (3stap) for details. .P .TP .B print_ustack Print out stack for the current task from string. .IP See .IR function::print_ustack (3stap) for details. .P .TP .B print_usyms Print out user stack from string .IP See .IR function::print_usyms (3stap) for details. .P .TP .B sprint_ustack Return stack for the current task from string. .IP See .IR function::sprint_ustack (3stap) for details. .P .TP .B sprint_usyms Return stack for user addresses from string .IP See .IR function::sprint_usyms (3stap) for details. .P .TP .B usymfileline Return the file name and line number of an address. .IP See .IR function::usymfileline (3stap) for details. .P .TP .B usymfile Return the file name of a given address. .IP See .IR function::usymfile (3stap) for details. .P .TP .B usymline Return the line number of an address. .IP See .IR function::usymline (3stap) for details. .SH SEE ALSO .BR .IR \%function::ustack (3stap), .BR .IR \%function::usymname (3stap), .BR .IR \%function::usymdata (3stap), .BR .IR \%function::print_ustack (3stap), .BR .IR \%function::print_usyms (3stap), .BR .IR \%function::sprint_ustack (3stap), .BR .IR \%function::sprint_usyms (3stap), .BR .IR \%function::usymfileline (3stap), .BR .IR \%function::usymfile (3stap), .BR .IR \%function::usymline (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ucontext-unwind.3stap000066400000000000000000000014401305163227500310730ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::UCONTEXT-UNWIND 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ucontext-unwind \- systemtap ucontext-unwind tapset .SH DESCRIPTION .TP .P .TP .B print_ubacktrace Print stack back trace for current user-space task. .IP See .IR function::print_ubacktrace (3stap) for details. .P .TP .B sprint_ubacktrace Return stack back trace for current user-space task as string. .IP See .IR function::sprint_ubacktrace (3stap) for details. .P .TP .B ubacktrace Hex backtrace of current user-space task stack. .IP See .IR function::ubacktrace (3stap) for details. .SH SEE ALSO .BR .IR \%function::print_ubacktrace (3stap), .BR .IR \%function::sprint_ubacktrace (3stap), .BR .IR \%function::ubacktrace (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::ucontext.3stap000066400000000000000000000010341305163227500275700ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::UCONTEXT 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::ucontext \- systemtap ucontext tapset .SH DESCRIPTION .TP .P .TP .B umodname Returns the (short) name of the user module. .IP See .IR function::umodname (3stap) for details. .P .TP .B ucallers Return first n elements of user stack backtrace .IP See .IR function::ucallers (3stap) for details. .SH SEE ALSO .BR .IR \%function::umodname (3stap), .BR .IR \%function::ucallers (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::uconversions.3stap000066400000000000000000000146511305163227500304650ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::UCONVERSIONS 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::uconversions \- systemtap uconversions tapset .SH DESCRIPTION .TP .P .TP .B user_string Retrieves string from user space .IP See .IR function::user_string (3stap) for details. .P .TP .B user_string Retrieves string from user space with alternative error string .IP See .IR function::user_string (3stap) for details. .P .TP .B user_string_warn Retrieves string from user space .IP See .IR function::user_string_warn (3stap) for details. .P .TP .B user_string_warn Retrieves string from user space with alternative warning string .IP See .IR function::user_string_warn (3stap) for details. .P .TP .B user_string_quoted Retrieves and quotes string from user space .IP See .IR function::user_string_quoted (3stap) for details. .P .TP .B user_string_n Retrieves string of given length from user space .IP See .IR function::user_string_n (3stap) for details. .P .TP .B user_string_n Retrieves string of given length from user space .IP See .IR function::user_string_n (3stap) for details. .P .TP .B user_string_n_warn Retrieves string from user space .IP See .IR function::user_string_n_warn (3stap) for details. .P .TP .B user_string_n_warn Retrieves string from user space with alternative warning string .IP See .IR function::user_string_n_warn (3stap) for details. .P .TP .B user_string_n_quoted Retrieves and quotes string from user space .IP See .IR function::user_string_n_quoted (3stap) for details. .P .TP .B user_string_n_quoted Retrieves and quotes string from user space .IP See .IR function::user_string_n_quoted (3stap) for details. .P .TP .B user_string_utf32 Retrieves UTF-32 string from user memory .IP See .IR function::user_string_utf32 (3stap) for details. .P .TP .B user_string_utf32 Retrieves UTF-32 string from user memory with alternative error string .IP See .IR function::user_string_utf32 (3stap) for details. .P .TP .B user_string_quoted_utf32 Quote given user UTF-32 string. .IP See .IR function::user_string_quoted_utf32 (3stap) for details. .P .TP .B user_string_utf16 Retrieves UTF-16 string from user memory .IP See .IR function::user_string_utf16 (3stap) for details. .P .TP .B user_string_utf16 Retrieves UTF-16 string from user memory with alternative error string .IP See .IR function::user_string_utf16 (3stap) for details. .P .TP .B user_string_quoted_utf16 Quote given user UTF-16 string. .IP See .IR function::user_string_quoted_utf16 (3stap) for details. .P .TP .B user_char Retrieves a char value stored in user space .IP See .IR function::user_char (3stap) for details. .P .TP .B user_char_warn Retrieves a char value stored in user space .IP See .IR function::user_char_warn (3stap) for details. .P .TP .B user_short Retrieves a short value stored in user space .IP See .IR function::user_short (3stap) for details. .P .TP .B user_short_warn Retrieves a short value stored in user space .IP See .IR function::user_short_warn (3stap) for details. .P .TP .B user_ushort Retrieves an unsigned short value stored in user space .IP See .IR function::user_ushort (3stap) for details. .P .TP .B user_ushort_warn Retrieves an unsigned short value stored in user space .IP See .IR function::user_ushort_warn (3stap) for details. .P .TP .B user_int Retrieves an int value stored in user space .IP See .IR function::user_int (3stap) for details. .P .TP .B user_int_warn Retrieves an int value stored in user space .IP See .IR function::user_int_warn (3stap) for details. .P .TP .B user_long Retrieves a long value stored in user space .IP See .IR function::user_long (3stap) for details. .P .TP .B user_long_warn Retrieves a long value stored in user space .IP See .IR function::user_long_warn (3stap) for details. .P .TP .B user_ulong Retrieves an unsigned long value stored in user space .IP See .IR function::user_ulong (3stap) for details. .P .TP .B user_ulong_warn Retrieves an unsigned long value stored in user space .IP See .IR function::user_ulong_warn (3stap) for details. .P .TP .B user_int8 Retrieves a 8-bit integer value stored in user space .IP See .IR function::user_int8 (3stap) for details. .P .TP .B user_uint8 Retrieves an unsigned 8-bit integer value stored in user space .IP See .IR function::user_uint8 (3stap) for details. .P .TP .B user_int16 Retrieves a 16-bit integer value stored in user space .IP See .IR function::user_int16 (3stap) for details. .P .TP .B user_uint16 Retrieves an unsigned 16-bit integer value stored in user space .IP See .IR function::user_uint16 (3stap) for details. .P .TP .B user_int32 Retrieves a 32-bit integer value stored in user space .IP See .IR function::user_int32 (3stap) for details. .P .TP .B user_uint32 Retrieves an unsigned 32-bit integer value stored in user space .IP See .IR function::user_uint32 (3stap) for details. .P .TP .B user_int64 Retrieves a 64-bit integer value stored in user space .IP See .IR function::user_int64 (3stap) for details. .P .TP .B user_uint64 Retrieves an unsigned 64-bit integer value stored in user space .IP See .IR function::user_uint64 (3stap) for details. .SH SEE ALSO .BR .IR \%function::user_string (3stap), .BR .IR \%function::user_string_warn (3stap), .BR .IR \%function::user_string_quoted (3stap), .BR .IR \%function::user_string_n (3stap), .BR .IR \%function::user_string_n_warn (3stap), .BR .IR \%function::user_string_n_quoted (3stap), .BR .IR \%function::user_string_utf32 (3stap), .BR .IR \%function::user_string_quoted_utf32 (3stap), .BR .IR \%function::user_string_utf16 (3stap), .BR .IR \%function::user_string_quoted_utf16 (3stap), .BR .IR \%function::user_char (3stap), .BR .IR \%function::user_char_warn (3stap), .BR .IR \%function::user_short (3stap), .BR .IR \%function::user_short_warn (3stap), .BR .IR \%function::user_ushort (3stap), .BR .IR \%function::user_ushort_warn (3stap), .BR .IR \%function::user_int (3stap), .BR .IR \%function::user_int_warn (3stap), .BR .IR \%function::user_long (3stap), .BR .IR \%function::user_long_warn (3stap), .BR .IR \%function::user_ulong (3stap), .BR .IR \%function::user_ulong_warn (3stap), .BR .IR \%function::user_int8 (3stap), .BR .IR \%function::user_uint8 (3stap), .BR .IR \%function::user_int16 (3stap), .BR .IR \%function::user_uint16 (3stap), .BR .IR \%function::user_int32 (3stap), .BR .IR \%function::user_uint32 (3stap), .BR .IR \%function::user_int64 (3stap), .BR .IR \%function::user_uint64 (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/man_pages/tapset::udp.3stap000066400000000000000000000025511305163227500265140ustar00rootroot00000000000000.\" -*- nroff -*- .TH TAPSET::UDP 3stap "March 2016" "SystemTap Tapset Reference" .SH NAME tapset::udp \- systemtap udp tapset .SH DESCRIPTION This family of probe points is used to probe events that occur in the UDP layer. .TP .P .TP .B udp.sendmsg Fires whenever a process sends a UDP message .IP See .IR probe::udp.sendmsg (3stap) for details. .P .TP .B udp.sendmsg.return Fires whenever an attempt to send a UDP message is completed .IP See .IR probe::udp.sendmsg.return (3stap) for details. .P .TP .B udp.recvmsg Fires whenever a UDP message is received .IP See .IR probe::udp.recvmsg (3stap) for details. .P .TP .B udp.recvmsg.return Fires whenever an attempt to receive a UDP message received is completed .IP See .IR probe::udp.recvmsg.return (3stap) for details. .P .TP .B udp.disconnect Fires when a process requests for a UDP disconnection .IP See .IR probe::udp.disconnect (3stap) for details. .P .TP .B udp.disconnect.return UDP has been disconnected successfully .IP See .IR probe::udp.disconnect.return (3stap) for details. .SH SEE ALSO .BR .IR \%probe::udp.sendmsg (3stap), .BR .IR \%probe::udp.sendmsg.return (3stap), .BR .IR \%probe::udp.recvmsg (3stap), .BR .IR \%probe::udp.recvmsg.return (3stap), .BR .IR \%probe::udp.disconnect (3stap), .BR .IR \%probe::udp.disconnect.return (3stap), .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/manpager000077500000000000000000000120411305163227500231240ustar00rootroot00000000000000#!/bin/bash # This script builds overview man pages for each tapset from the doc # comments in the tapset source. As such, the man page content # generated herein should be in sync with the SystemTap Tapset # Reference. # If testing manually, just run this script with # doc/SystemTap_Tapset_Reference as the working directory # and the SRCTREE variable set to the location of your # systemtap source tree. echo "Starting manpager in" `pwd` # cleanup rm -rf man_pages # create working directory mkdir workingdir ; # create list of man pages to generate cat $SRCTREE/doc/SystemTap_Tapset_Reference/tapsets.tmpl | grep ^\!Itapset > manpageus ; sed -i -e 's/\!Itapset\///g' manpageus ; # copy list of man pages into working directory # with similar basenames concatenated for i in `cat manpageus` ; do b=`basename $i | sed -e 's/.stpm$/.stp/'` cat $SRCTREE/tapset/$i >>workingdir/$b ; done ; # rewrite manpageus to the resulting files ls workingdir >manpageus # enter workdir cd workingdir ; # copy tapsetdescriptions, then clean for i in `cat ../manpageus`; do sed -n '/\/\/ /,/\/\/ <\/tapsetdescription>/ s/.*/&/w temp' < $i ; mv temp $i.tapsetdescription ; sed -i -e 's/\/\/ //g' $i.tapsetdescription ; sed -i -e 's/\/\/ <\/tapsetdescription>//g' $i.tapsetdescription ; sed -i -e 's/\/\///g' $i.tapsetdescription ; # XXX: may want to trim whitespace from description edges done # strip all tapset files to just comments; but all comments must be exactly 1 space before and after "*" for i in `cat ../manpageus` ; do sed -i -e 's/^ \*/ \*/g' $i; sed -i -e 's/^ \* / \* /g' $i; # mark the start of each probe entry (sub "/**") perl -p -i -e 's|^/\*\*| *probestart|g' $i; sed -i -e '/^ \*/!d' $i; # rename all tapsets (remove .stp/.stpm filename suffix), create templates echo $i > tempname ; sed -i -e 's/.stpm*$//g' tempname ; mv $i `cat tempname` ; mv tempname $i ; done ; # create man page headers date=`date "+%B %Y"` for i in `ls | grep -v .stp | grep -v tapsetdescription` ; do icap=`echo $i | tr a-z A-Z` echo ".\\\" -*- nroff -*-" >> $i.template ; echo ".TH TAPSET::"$icap" 3stap \"$date\" \"SystemTap Tapset Reference\"" >> $i.template ; echo ".SH NAME" >> $i.template ; echo "tapset::"`cat $i.stp`" \- systemtap "`cat $i.stp`" tapset" >> $i.template ; echo " " >> $i.template ; echo ".SH DESCRIPTION" >> $i.template ; cat $i.stp.tapsetdescription >> $i.template ; echo ".TP" >> $i.template ; done # clean man page body sed -i -e 's/\.stp$//g' ../manpageus ; for i in `cat ../manpageus` ; do mv $i $i.tmp ; perl -e 'while(<>){print"$1\n"if/ \* probe ([^\n]*) -/;}' $i.tmp >$i.probenames; perl -e 'while(<>){print"$1\n"if/ \* sfunction ([^\n]*) -/;}' $i.tmp >$i.funcnames; perl -e 'while(<>){print"$1\n"if/ \* smacro ([^\n]*) -/;}' $i.tmp >$i.macros; # perl -p -i -e 's/ \* (probe|sfunction) ([^\n]*)\n/.P\n.TP\n.B $1 \n $2\n$3\n perl -p -i -e 's/ \* sfunction ([^\n]*) - ([^\n]*)\n/.P\n.TP\n.B $1 \n$2\n.IP\nSee \n.IR function::$1 \(3stap\)\n for details.\n/g' $i.tmp ; perl -p -i -e 's/ \* probe ([^\n]*) - ([^\n]*)\n/.P\n.TP\n.B $1 \n$2\n.IP\n See \n.IR probe::$1 \(3stap\)\n for details.\n/g' $i.tmp ; perl -p -i -e 's/ \* smacro ([^\n]*) - ([^\n]*)\n/.P\n.TP\n.B \@$1 \n$2\n.IP\n See \n.IR macro::$1 \(3stap\)\n for details.\n/g' $i.tmp ; # XXX: the people hunger for argument descriptions, which would be extracted here perl -p -i -e 's/ \*([^\n]*)\n//g' $i.tmp ; # nuke the rest of it done # generate footer template for i in `cat ../manpageus` ; do echo "" >> $i.footer echo ".SH SEE ALSO" >> $i.footer for j in `cat $i.funcnames | uniq` ; do echo ".BR" >> $i.footer echo ".IR \\%function::"$j" (3stap)," >> $i.footer done for j in `cat $i.probenames` ; do echo ".BR" >> $i.footer echo ".IR \\%probe::"$j" (3stap)," >> $i.footer done for j in `cat $i.macros` ; do echo ".BR" >> $i.footer echo ".IR \\%macro::"$j" (3stap)," >> $i.footer done echo ".BR" >> $i.footer echo ".IR \\%stap (1)," >> $i.footer echo ".IR \\%stapprobes (3stap)" >> $i.footer done # add cross reference to enclosed functions and probes for i in `cat ../manpageus` ; do for j in `cat $i.funcnames | uniq` ; do echo ".SH SEE ALSO\n " >> ../man3/function::$j.3stap echo ".IR tapset::$i (3stap)" >> ../man3/function::$j.3stap done for j in `cat $i.probenames` ; do echo ".SH SEE ALSO\n " >> ../man3/probe::$j.3stap echo ".IR tapset::$i (3stap)" >> ../man3/probe::$j.3stap done for j in `cat $i.macros` ; do echo ".SH SEE ALSO\n " >> ../man3/macro::$j.3stap echo ".IR tapset::$i (3stap)" >> ../man3/macro::$j.3stap done done # assemble parts for i in `cat ../manpageus`; do cat $i.template >> tapset\:\:$i.3stap ; cat $i.tmp >> tapset\:\:$i.3stap ; cat $i.footer >> tapset\:\:$i.3stap ; # final polish sed -i -e 's/\*\/$//g' tapset\:\:$i.3stap ; done # cleanup for i in `ls | grep -v -e "tapset::.*\\.3stap"` ; do rm $i ; done rm ../manpageus ; cd .. mv workingdir man_pages echo " " echo "Finished! man pages generated in ./man_pages." echo " " systemtap-3.1/doc/SystemTap_Tapset_Reference/overload.py000077500000000000000000000063631305163227500236060ustar00rootroot00000000000000#! /usr/bin/python # XML tree transformation for systemtap function overloading # This script merges all overloaded tapset function entries # into one entry. import sys from lxml import etree DEBUG = 0 def collect_overloads(refentries): """ Collect overloads into lists. """ functions = {} for entry in refentries: name = entry.xpath("refnamediv/refname")[0].text if name not in functions: functions[name] = [] functions[name].append(entry) return {k: v for (k, v) in functions.items() if len(v) > 1} def get_params(functions): """ Return a parameter list containing the parameters for all overloads. """ seen = set() params = [] for overload in functions: refsect = overload.xpath("refsect1[1]")[0] # add variablelist node for future construction if len(refsect.xpath("variablelist")) == 0: refsect.remove(refsect[1]) etree.SubElement(refsect, "variablelist") continue param_list = refsect.xpath("variablelist")[0].getchildren() for param in param_list: name = param.xpath("term/parameter")[0].text if name not in seen: seen.add(name) params.append(param) return params def annotate(entry): """ Numbers all overloaded entries. """ sys.stderr.write("entry: %s\n" % etree.tostring(entry)) num_overloads = len(entry.xpath("refsynopsisdiv/programlisting")) synopsis = entry.xpath("refsynopsisdiv/programlisting") description = entry.xpath("refsect1[2]/para") for i in range(num_overloads): synopsis[i].text = str(i+1) + ")" + " " + synopsis[i].text.strip() description[i].text = str(i+1) + ")" + " " + description[i].text.strip() def merge(functions): """ Merge matching refentries into one and delete them from their parents. """ merged = functions[0] sys.stderr.write("processing item %s\n" % merged.xpath("refnamediv/refname")[0].text) # merge params new_params = get_params(functions) param_list = merged.xpath("refsect1[1]/variablelist")[0] for param in param_list: param.getparent().remove(param) for param in new_params: param_list.append(param) # merge synopsis and descriptions description = merged.xpath("refsect1[2]")[0] synopsis = merged.xpath("refsynopsisdiv")[0] for overload in functions[1:]: synopsis.append(overload.xpath("refsynopsisdiv/programlisting")[0]) description.append(overload.xpath("refsect1[2]/para")[0]) overload.getparent().remove(overload) annotate(merged) def merge_overloads(functions_list): for functions in functions_list.values(): merge(functions) def usage(): print "Usage: ./overload.py " def main(): if len(sys.argv) != 2: usage() sys.exit() parser = etree.XMLParser(remove_comments=False) tree = etree.parse(sys.argv[1], parser=parser) root = tree.getroot() refentries = [r for r in root.iter("refentry")] functions = collect_overloads(refentries) merge_overloads(functions) print etree.tostring(root, encoding='UTF-8', xml_declaration=True, doctype=tree.docinfo.doctype) if __name__ == '__main__': main() systemtap-3.1/doc/SystemTap_Tapset_Reference/sort-tapsets.xslt000066400000000000000000000012611305163227500247720ustar00rootroot00000000000000 systemtap-3.1/doc/SystemTap_Tapset_Reference/syscalls.3stap000066400000000000000000000525351305163227500242310ustar00rootroot00000000000000." -*- nroff -*- .TH TAPSET::SYSCALLS 3stap "February 2017" "Systemtap Tapset Reference" .SH NAME tapset::syscalls \- systemtap syscall tapset .SH DESCRIPTION Following is an overview of available syscall probes and convenience variables they offer. By default, each syscall probe has name and argstr convenience variables, which are not included in the overview in order to keep it short. Non dwarf-based nd_syscall probes are supposed to have the same convenience variables. .TP .P .TP .P .TP .B syscall.accept addr_uaddr, addrlen_uaddr, sockfd .P .TP .B syscall.accept4 addr_uaddr, addrlen_uaddr, flags, flags_str, sockfd .P .TP .B syscall.access mode, mode_str, pathname .P .TP .B syscall.acct filename .P .TP .B syscall.add_key description_uaddr, payload_uaddr, plen, ringid, type_uaddr .P .TP .B syscall.adjtimex buf_str, buf_uaddr .P .TP .B syscall.alarm seconds .P .TP .B syscall.arch_prctl addr, code, code_str .P .TP .B syscall.bdflush data, data_str, func .P .TP .B syscall.bind addrlen, my_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id .P .TP .B syscall.bpf attr_uaddr, cmd, cmd_str, size .P .TP .B syscall.brk brk .P .TP .B syscall.capget data_uaddr, header_uaddr .P .TP .B syscall.capset data_uaddr, header_uaddr .P .TP .B syscall.chdir path .P .TP .B syscall.chmod mode, path .P .TP .B syscall.chown group, owner, path .P .TP .B syscall.chown16 group, owner, path .P .TP .B syscall.chroot path .P .TP .B syscall.clock_adjtime clk_id, clk_id_str, tx_uaddr .P .TP .B syscall.clock_getres clk_id, clk_id_str, res_uaddr .P .TP .B syscall.clock_gettime clk_id, clk_id_str, tp_uaddr .P .TP .B syscall.clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr .P .TP .B syscall.clock_settime clk_id, clk_id_str, tp_uaddr .P .TP .B syscall.clone child_tid_uaddr, clone_flags, parent_tid_uaddr, stack_start .P .TP .B syscall.close fd .P .TP .B syscall.compat_adjtimex buf_str, buf_uaddr .P .TP .B syscall.compat_clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr .P .TP .B syscall.compat_execve args, env_str, filename .P .TP .B syscall.compat_execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str .P .TP .B syscall.compat_fadvise64 advice, fd, len, offset .P .TP .B syscall.compat_fadvise64_64 advice, fd, len, offset .P .TP .B syscall.compat_fallocate fd, len, mode, offset .P .TP .B syscall.compat_ftruncate64 fd, length .P .TP .B syscall.compat_futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val .P .TP .B syscall.compat_futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.compat_getitimer value_uaddr, which .P .TP .B syscall.compat_lookup_dcookie buffer_uaddr, cookie, len .P .TP .B syscall.compat_nanosleep rem_uaddr, req_uaddr .P .TP .B syscall.compat_ppoll .P .TP .B syscall.compat_pselect6 .P .TP .B syscall.compat_readahead count, fd, offset .P .TP .B syscall.compat_recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen .P .TP .B syscall.compat_rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.compat_select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr .P .TP .B syscall.compat_setitimer ovalue_uaddr, value_uaddr, which .P .TP .B syscall.compat_signalfd flags .P .TP .B syscall.compat_sys_msgctl buf_uaddr, cmd, cmd_str, msqid .P .TP .B syscall.compat_sys_msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid .P .TP .B syscall.compat_sys_msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid .P .TP .B syscall.compat_sys_recvmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.compat_sys_semctl arg, cmd, cmdstr, semid, semnum .P .TP .B syscall.compat_sys_semtimedop nsops, semid, sops_uaddr, timeout_uaddr .P .TP .B syscall.compat_sys_sendmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.compat_sys_shmat shmaddr_uaddr, shmflg, shmid .P .TP .B syscall.compat_sys_shmctl buf_uaddr, cmd, cmd_str, shmid .P .TP .B syscall.compat_sys_utimes filename .P .TP .B syscall.compat_truncate64 length, path, path_uaddr .P .TP .B syscall.compat_utime actime, buf_uaddr, filename, filename_uaddr, modtime .P .TP .B syscall.compat_utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr .P .TP .B syscall.compat_vmsplice fd, flags, flags_str, iov, nr_segs .P .TP .B syscall.connect addrlen, serv_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id .P .TP .B syscall.copy_file_range fd_in, fd_out, flags, len, off_in, off_out .P .TP .B syscall.creat mode, pathname .P .TP .B syscall.delete_module flags, flags_str, name_user .P .TP .B syscall.dup oldfd .P .TP .B syscall.dup2 flags, newfd, oldfd .P .TP .B syscall.dup3 flags, newfd, oldfd .P .TP .B syscall.epoll_create flags, size .P .TP .B syscall.epoll_ctl epfd, event_uaddr, fd, op, op_str .P .TP .B syscall.epoll_pwait epfd, events_uaddr, maxevents, sigmask_uaddr, sigsetsize, timeout .P .TP .B syscall.epoll_wait epfd, events_uaddr, maxevents, timeout .P .TP .B syscall.eventfd count, flags, flags_str .P .TP .B syscall.execve args, env_str, filename .P .TP .B syscall.execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str .P .TP .B syscall.exit status .P .TP .B syscall.exit_group status .P .TP .B syscall.faccessat dirfd, dirfd_str, mode, mode_str, pathname .P .TP .B syscall.fadvise64 advice, fd, len, offset .P .TP .B syscall.fadvise64_64 advice, fd, len, offset .P .TP .B syscall.fallocate fd, len, mode, mode_str, offset .P .TP .B syscall.fanotify_init event_f_flags, event_f_flags_str, flags, flags_str .P .TP .B syscall.fanotify_mark dirfd, dirfd_str, fanotify_fd, flags, flags_str, mask, mask_str, pathname .P .TP .B syscall.fchdir fd .P .TP .B syscall.fchmod fildes, mode .P .TP .B syscall.fchmodat dirfd, dirfd_str, mode, pathname .P .TP .B syscall.fchown fd, group, owner .P .TP .B syscall.fchown16 fd, group, owner .P .TP .B syscall.fchownat dirfd, dirfd_str, flags, flags_str, group, owner, pathname .P .TP .B syscall.fcntl arg, cmd, cmd_str, fd .P .TP .B syscall.fdatasync fd .P .TP .B syscall.fgetxattr filedes, name_str, size, value_uaddr .P .TP .B syscall.finit_module fd, flags, flags_str, uargs .P .TP .B syscall.flistxattr filedes, list_uaddr, size .P .TP .B syscall.flock fd, operation .P .TP .B syscall.fork .P .TP .B syscall.fremovexattr filedes, name_str, name_uaddr .P .TP .B syscall.fsetxattr filedes, flags, flags_str, name_str, name_uaddr, size, value_str, value_uaddr .P .TP .B syscall.fstat buf_uaddr, filedes .P .TP .B syscall.fstatat buf_uaddr, dirfd, dirfd_str, flags, flags_str, path .P .TP .B syscall.fstatfs buf_uaddr, fd .P .TP .B syscall.fstatfs64 buf_uaddr, fd, sz .P .TP .B syscall.fsync fd .P .TP .B syscall.ftruncate fd, length .P .TP .B syscall.futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val .P .TP .B syscall.futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.get_mempolicy addr, flags, flags_str, maxnode, nmask_uaddr, policy_uaddr .P .TP .B syscall.get_robust_list len_uaddr, list_head_uaddr, pid .P .TP .B syscall.get_thread_area u_info_uaddr .P .TP .B syscall.getcpu cpu_uaddr, node_uaddr, tcache_uaddr .P .TP .B syscall.getcwd buf_uaddr, size .P .TP .B syscall.getdents count, dirp_uaddr, fd .P .TP .B syscall.getegid .P .TP .B syscall.geteuid .P .TP .B syscall.getgid .P .TP .B syscall.getgroups list_uaddr, size .P .TP .B syscall.gethostname len, name_uaddr .P .TP .B syscall.getitimer value_uaddr, which .P .TP .B syscall.getpeername name_uaddr, namelen_uaddr, s .P .TP .B syscall.getpgid pid .P .TP .B syscall.getpgrp .P .TP .B syscall.getpid .P .TP .B syscall.getppid .P .TP .B syscall.getpriority which, who .P .TP .B syscall.getrandom buf, count, flags, flags_str .P .TP .B syscall.getresgid egid_uaddr, rgid_uaddr, sgid_uaddr .P .TP .B syscall.getresuid euid_uaddr, ruid_uaddr, suid_uaddr .P .TP .B syscall.getrlimit resource, rlim_uaddr .P .TP .B syscall.getrusage usage_uaddr, who, who_str .P .TP .B syscall.getsid pid .P .TP .B syscall.getsockname name_uaddr, namelen_uaddr, s .P .TP .B syscall.getsockopt fd, level, level_str, optlen_uaddr, optname, optname_str, optval_uaddr .P .TP .B syscall.gettid .P .TP .B syscall.gettimeofday tv_uaddr, tz_uaddr .P .TP .B syscall.getuid .P .TP .B syscall.getxattr name_str, path, size, value_uaddr .P .TP .B syscall.init_module len, uargs, umod_uaddr .P .TP .B syscall.inotify_add_watch fd, mask, path, path_uaddr .P .TP .B syscall.inotify_init flags .P .TP .B syscall.inotify_rm_watch fd, wd .P .TP .B syscall.io_cancel ctx_id, iocb_uaddr, result_uaddr .P .TP .B syscall.io_destroy ctx .P .TP .B syscall.io_getevents ctx_id, events_uaddr, min_nr, nr, timeout_uaddr, timestr .P .TP .B syscall.io_setup ctxp_uaddr, maxevents .P .TP .B syscall.io_submit ctx_id, iocbpp_uaddr, nr .P .TP .B syscall.ioctl argp, fd, request .P .TP .B syscall.ioperm from, num, turn_on .P .TP .B syscall.iopl level .P .TP .B syscall.ioprio_get which, which_str, who .P .TP .B syscall.ioprio_set ioprio, ioprio_str, which, which_str, who .P .TP .B syscall.kcmp idx1, idx2, pid1, pid2, type, type_str .P .TP .B syscall.kexec_file_load cmdline, cmdline_len, flags, flags_str, initrd_fd, kernel_fd .P .TP .B syscall.kexec_load entry, flags, flags_str, nr_segments, segments_uaddr .P .TP .B syscall.keyctl arg2, arg3, arg4, arg5, option .P .TP .B syscall.kill pid, sig .P .TP .B syscall.lchown group, owner, path .P .TP .B syscall.lchown16 group, owner, path .P .TP .B syscall.lgetxattr name_str, path, size, value_uaddr .P .TP .B syscall.link newpath, oldpath .P .TP .B syscall.linkat flags, flags_str, newdirfd, newdirfd_str, newpath, olddirfd, olddirfd_str, oldpath .P .TP .B syscall.listen backlog, sockfd .P .TP .B syscall.listxattr list_uaddr, path, path_uaddr, size .P .TP .B syscall.llistxattr list_uaddr, path, path_uaddr, size .P .TP .B syscall.llseek fd, offset_high, offset_low, result_uaddr, whence, whence_str .P .TP .B syscall.lookup_dcookie buffer_uaddr, cookie, len .P .TP .B syscall.lremovexattr name_str, name_uaddr, path, path_uaddr .P .TP .B syscall.lseek fildes, offset, whence, whence_str .P .TP .B syscall.lsetxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr .P .TP .B syscall.lstat buf_uaddr, path .P .TP .B syscall.madvise advice, advice_str, length, start .P .TP .B syscall.mbind flags, flags_str, len, maxnode, mode, mode_str, nmask_uaddr, start .P .TP .B syscall.membarrier cmd, cmd_str, flags .P .TP .B syscall.memfd_create flags, flags_str, uname .P .TP .B syscall.migrate_pages maxnode, new_nodes, old_nodes, pid .P .TP .B syscall.mincore length, start, vec_uaddr .P .TP .B syscall.mkdir mode, pathname, pathname_uaddr .P .TP .B syscall.mkdirat dirfd, dirfd_str, mode, pathname .P .TP .B syscall.mknod dev, mode, pathname .P .TP .B syscall.mknodat dev, dirfd, dirfd_str, mode, mode_str, pathname .P .TP .B syscall.mlock addr, len .P .TP .B syscall.mlock2 addr, flags, flags_str, len .P .TP .B syscall.mlockall flags .P .TP .B syscall.mmap2 fd, flags, length, pgoffset, prot, start .P .TP .B syscall.modify_ldt bytecount, func, ptr_uaddr .P .TP .B syscall.mount data, filesystemtype, mountflags, mountflags_str, source, target .P .TP .B syscall.move_pages flags, flags_str, nodes, nr_pages, pages, pid, status .P .TP .B syscall.mprotect addr, len, prot, prot_str .P .TP .B syscall.mq_getsetattr mqdes, u_mqstat_uaddr, u_omqstat_uaddr .P .TP .B syscall.mq_notify mqdes, notification_uaddr .P .TP .B syscall.mq_open filename, mode, name_uaddr, oflag, u_attr_uaddr .P .TP .B syscall.mq_timedreceive abs_timeout_uaddr, mqdes, msg_len, msg_prio_uaddr, msg_ptr_uaddr .P .TP .B syscall.mq_timedsend abs_timeout_uaddr, mqdes, msg_len, msg_prio, msg_ptr_uaddr .P .TP .B syscall.mq_unlink u_name, u_name_uaddr .P .TP .B syscall.mremap flags, new_address, new_size, old_address, old_size .P .TP .B syscall.msgctl buf_uaddr, cmd, cmd_str, msqid .P .TP .B syscall.msgget key, key_str, msgflg, msgflg_str .P .TP .B syscall.msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid .P .TP .B syscall.msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid .P .TP .B syscall.msync flags, length, start .P .TP .B syscall.munlock addr, len .P .TP .B syscall.munlockall .P .TP .B syscall.munmap length, start .P .TP .B syscall.name_to_handle_at dfd, dfd_str, flags, flags_str, handle_uaddr, mnt_id_uaddr, pathname .P .TP .B syscall.nanosleep rem_uaddr, req_uaddr .P .TP .B syscall.ni_syscall .P .TP .B syscall.nice inc .P .TP .B syscall.open filename, flags, mode .P .TP .B syscall.open_by_handle_at flags, flags_str, handle_uaddr, mount_dfd, mount_dfd_str .P .TP .B syscall.openat dfd, dfd_str, filename, flags, mode .P .TP .B syscall.pause .P .TP .B syscall.perf_event_open attr_uaddr, cpu, flags, flags_str, group_fd, pid .P .TP .B syscall.personality persona .P .TP .B syscall.pipe fildes_uaddr, flag_str, flags, pipe0, pipe1 .P .TP .B syscall.pivot_root new_root_str, old_root_str .P .TP .B syscall.poll nfds, timeout, ufds_uaddr .P .TP .B syscall.ppoll .P .TP .B syscall.prctl arg2, arg3, arg4, arg5, option .P .TP .B syscall.pread buf_uaddr, count, fd, offset .P .TP .B syscall.preadv count, fd, offset, vector_uaddr .P .TP .B syscall.preadv2 count, fd, flags, flags_str, offset, vector_uaddr .P .TP .B syscall.prlimit64 new_rlim_uaddr, old_rlim_uaddr, pid, resource .P .TP .B syscall.process_vm_readv flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt .P .TP .B syscall.process_vm_writev flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt .P .TP .B syscall.pselect6 .P .TP .B syscall.ptrace addr, data, pid, request .P .TP .B syscall.pwrite buf_uaddr, count, fd, offset .P .TP .B syscall.pwritev count, fd, offset, vector_uaddr .P .TP .B syscall.pwritev2 count, fd, flags, flags_str, offset, vector_uaddr .P .TP .B syscall.quotactl addr_uaddr, cmd, cmd_str, id, special, special_str .P .TP .B syscall.read buf_uaddr, count, fd .P .TP .B syscall.readahead count, fd, offset .P .TP .B syscall.readdir count, dirent, fd .P .TP .B syscall.readlink buf_uaddr, bufsiz, path .P .TP .B syscall.readlinkat buf_uaddr, bufsiz, dfd, dfd_str, path .P .TP .B syscall.readv count, fd, vector_uaddr .P .TP .B syscall.reboot arg_uaddr, flag, flag_str, magic2, magic2_str, magic, magic_str .P .TP .B syscall.recv buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.recvfrom addr_uaddr, addrlen_uaddr, buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen .P .TP .B syscall.recvmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.remap_file_pages flags, pgoff, prot, size, start .P .TP .B syscall.removexattr name_str, path .P .TP .B syscall.rename newpath, oldpath .P .TP .B syscall.renameat newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str .P .TP .B syscall.renameat2 flags, flags_str, newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str .P .TP .B syscall.request_key callout_info_uaddr, description_uaddr, destringid, type_uaddr .P .TP .B syscall.restart_syscall .P .TP .B syscall.rmdir pathname .P .TP .B syscall.rt_sigaction act_uaddr, oact_uaddr, sig, sigsetsize .P .TP .B syscall.rt_sigaction32 act_uaddr, oact_uaddr, sig, sigsetsize .P .TP .B syscall.rt_sigpending set_uaddr, sigsetsize .P .TP .B syscall.rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.rt_sigqueueinfo pid, sig, uinfo_uaddr .P .TP .B syscall.rt_sigreturn .P .TP .B syscall.rt_sigsuspend set_uaddr, sigsetsize .P .TP .B syscall.rt_sigtimedwait sigsetsize, uinfo_uaddr, uthese_uaddr, uts_uaddr .P .TP .B syscall.rt_tgsigqueueinfo sig, tgid, tid, uinfo_uaddr .P .TP .B syscall.sched_get_priority_max policy .P .TP .B syscall.sched_get_priority_min policy .P .TP .B syscall.sched_getaffinity len, mask_uaddr, pid .P .TP .B syscall.sched_getattr flags, pid, sched_attr_str, sched_attr_uaddr, size .P .TP .B syscall.sched_getparam p_uaddr, pid .P .TP .B syscall.sched_getscheduler pid .P .TP .B syscall.sched_rr_get_interval pid, tp_uaddr .P .TP .B syscall.sched_setaffinity len, mask_uaddr, pid .P .TP .B syscall.sched_setattr flags, pid, sched_attr_str, sched_attr_uaddr .P .TP .B syscall.sched_setparam p_uaddr, pid .P .TP .B syscall.sched_setscheduler p_uaddr, pid, policy, policy_str .P .TP .B syscall.sched_yield .P .TP .B syscall.seccomp flags, flags_str, op, op_str, uargs_uaddr .P .TP .B syscall.select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr .P .TP .B syscall.semctl arg, cmd, cmdstr, semid, semnum .P .TP .B syscall.semget key, key_str, nsems, semflg, semflg_str .P .TP .B syscall.semop nsops, semid, sops_uaddr .P .TP .B syscall.semtimedop nsops, semid, sops_uaddr, timeout_uaddr .P .TP .B syscall.send buf, buf_uaddr, flags, flags_str, len, s .P .TP .B syscall.sendfile count, in_fd, offset_uaddr, out_fd .P .TP .B syscall.sendmmsg flags, flags_str, mmsg_uaddr, s, vlen .P .TP .B syscall.sendmsg flags, flags_str, msg_uaddr, s .P .TP .B syscall.sendto buf, buf_uaddr, flags, flags_str, len, s, to_uaddr, tolen .P .TP .B syscall.set_mempolicy maxnode, mode, mode_str, nmask_uaddr .P .TP .B syscall.set_robust_list len, list_head_uaddr .P .TP .B syscall.set_thread_area u_info_uaddr .P .TP .B syscall.set_tid_address tidptr_uaddr .P .TP .B syscall.setdomainname domainname_str, domainname_uaddr, len .P .TP .B syscall.setfsgid fsgid .P .TP .B syscall.setfsuid fsuid .P .TP .B syscall.setgid gid .P .TP .B syscall.setgroups list_uaddr, size .P .TP .B syscall.sethostname hostname_uaddr, len, name_str .P .TP .B syscall.setitimer ovalue_uaddr, value_uaddr, which .P .TP .B syscall.setns fd, nstype .P .TP .B syscall.setpgid pgid, pid .P .TP .B syscall.setpriority prio, which, which_str, who .P .TP .B syscall.setregid egid, rgid .P .TP .B syscall.setregid16 egid, rgid .P .TP .B syscall.setresgid egid, rgid, sgid .P .TP .B syscall.setresgid16 egid, rgid, sgid .P .TP .B syscall.setresuid euid, ruid, suid .P .TP .B syscall.setresuid16 euid, ruid, suid .P .TP .B syscall.setreuid euid, ruid .P .TP .B syscall.setreuid16 euid, ruid .P .TP .B syscall.setrlimit resource, rlim_uaddr .P .TP .B syscall.setsid .P .TP .B syscall.setsockopt fd, level, level_str, optlen, optname, optname_str, optval_uaddr .P .TP .B syscall.settimeofday tv_uaddr, tz_uaddr .P .TP .B syscall.settimeofday32 tv_uaddr, tz_uaddr .P .TP .B syscall.setuid uid .P .TP .B syscall.setxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr .P .TP .B syscall.sgetmask .P .TP .B syscall.shmat shmaddr_uaddr, shmflg, shmid .P .TP .B syscall.shmctl buf_uaddr, cmd, cmd_str, shmid .P .TP .B syscall.shmdt shmaddr_uaddr .P .TP .B syscall.shmget key, shmflg, shmflg_str, size .P .TP .B syscall.shutdown how, how_str, s .P .TP .B syscall.sigaction32 act_uaddr, oact_uaddr, sig .P .TP .B syscall.sigaltstack uoss_uaddr, uss_uaddr .P .TP .B syscall.signal handler, sig .P .TP .B syscall.signalfd flags .P .TP .B syscall.sigpending .P .TP .B syscall.sigprocmask how, how_str, oldset_uaddr, set_uaddr .P .TP .B syscall.sigreturn .P .TP .B syscall.sigsuspend mask .P .TP .B syscall.socket family, protocol, type .P .TP .B syscall.socketpair family, protocol, sv_uaddr, type .P .TP .B syscall.splice fd_in, fd_out, flags, flags_str, len, off_in, off_out .P .TP .B syscall.ssetmask newmask, newmask_str .P .TP .B syscall.stat buf_uaddr, filename, filename_uaddr .P .TP .B syscall.statfs buf_uaddr, path .P .TP .B syscall.statfs64 buf_uaddr, path, sz .P .TP .B syscall.stime t_uaddr .P .TP .B syscall.swapoff path .P .TP .B syscall.swapon path, swapflags, swapflags_str .P .TP .B syscall.symlink newpath, oldpath .P .TP .B syscall.symlinkat newdfd, newdfd_str, newname, newname_str, oldname, oldname_str .P .TP .B syscall.sync .P .TP .B syscall.sync_file_range fd, flags, flags_str, nbytes, offset .P .TP .B syscall.syncfs fd .P .TP .B syscall.sysctl .P .TP .B syscall.sysfs arg1, arg2, option .P .TP .B syscall.sysinfo info_uaddr .P .TP .B syscall.syslog bufp_uaddr, len, type .P .TP .B syscall.tee fdin, fdout, flags, len .P .TP .B syscall.tgkill pid, sig, tgid .P .TP .B syscall.time t_uaddr .P .TP .B syscall.timer_create clockid, clockid_str, evp_uaddr, timerid_uaddr .P .TP .B syscall.timer_delete timerid .P .TP .B syscall.timer_getoverrun timerid .P .TP .B syscall.timer_gettime timerid, value_uaddr .P .TP .B syscall.timer_settime flags, ovalue_uaddr, timerid, value_uaddr .P .TP .B syscall.timerfd_create clockid, clockid_str, flags, flags_str .P .TP .B syscall.timerfd_gettime fd, value_uaddr .P .TP .B syscall.timerfd_settime fd, flags, flags_str, ovalue_uaddr, value_uaddr .P .TP .B syscall.times buf_uaddr .P .TP .B syscall.tkill pid, sig .P .TP .B syscall.truncate length, path, path_uaddr .P .TP .B syscall.umask mask .P .TP .B syscall.umount flags, flags_str, target .P .TP .B syscall.uname .P .TP .B syscall.unlink pathname, pathname_uaddr .P .TP .B syscall.unlinkat dfd, dfd_str, flag, flag_str, pathname, pathname_str .P .TP .B syscall.unshare unshare_flags .P .TP .B syscall.userfaultfd flags, flags_str .P .TP .B syscall.ustat dev, ubuf_uaddr .P .TP .B syscall.ustat32 dev, ubuf_uaddr .P .TP .B syscall.utime actime, buf_uaddr, filename, filename_uaddr, modtime .P .TP .B syscall.utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr .P .TP .B syscall.utimes filename, filename_uaddr, tvp_uaddr .P .TP .B syscall.vfork .P .TP .B syscall.vhangup .P .TP .B syscall.vmsplice fd, flags, flags_str, iov, nr_segs .P .TP .B syscall.wait4 options, options_str, pid, rusage_uaddr, status_uaddr .P .TP .B syscall.waitid infop_uaddr, options, options_str, pid, rusage_uaddr, which, which_str .P .TP .B syscall.waitpid options, options_str, pid, status_uaddr .P .TP .B syscall.write buf_uaddr, count, fd .P .TP .B syscall.writev count, fd, vector_uaddr .SH SEE ALSO .BR .IR \%stap (1), .IR \%stapprobes (3stap) systemtap-3.1/doc/SystemTap_Tapset_Reference/syscalls.xmlpart000066400000000000000000001040741305163227500246620ustar00rootroot00000000000000 syscalls Following is an overview of available syscall probes and convenience variables they offer. By default, each syscall probe has name and argstr convenience variables, which are not included in the overview in order to keep it short. Non dwarf-based nd_syscall probes are supposed to have the same convenience variables. Syscalls list syscall params accept addr_uaddr, addrlen_uaddr, sockfd accept4 addr_uaddr, addrlen_uaddr, flags, flags_str, sockfd access mode, mode_str, pathname acct filename add_key description_uaddr, payload_uaddr, plen, ringid, type_uaddr adjtimex buf_str, buf_uaddr alarm seconds arch_prctl addr, code, code_str bdflush data, data_str, func bind addrlen, my_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id bpf attr_uaddr, cmd, cmd_str, size brk brk capget data_uaddr, header_uaddr capset data_uaddr, header_uaddr chdir path chmod mode, path chown group, owner, path chown16 group, owner, path chroot path clock_adjtime clk_id, clk_id_str, tx_uaddr clock_getres clk_id, clk_id_str, res_uaddr clock_gettime clk_id, clk_id_str, tp_uaddr clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr clock_settime clk_id, clk_id_str, tp_uaddr clone child_tid_uaddr, clone_flags, parent_tid_uaddr, stack_start close fd compat_adjtimex buf_str, buf_uaddr compat_clock_nanosleep clk_id, clk_id_str, flags, flags_str, rem_uaddr, req_uaddr compat_execve args, env_str, filename compat_execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str compat_fadvise64 advice, fd, len, offset compat_fadvise64_64 advice, fd, len, offset compat_fallocate fd, len, mode, offset compat_ftruncate64 fd, length compat_futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val compat_futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr compat_getitimer value_uaddr, which compat_lookup_dcookie buffer_uaddr, cookie, len compat_nanosleep rem_uaddr, req_uaddr compat_ppoll compat_pselect6 compat_readahead count, fd, offset compat_recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen compat_rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr compat_select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr compat_setitimer ovalue_uaddr, value_uaddr, which compat_signalfd flags compat_sys_msgctl buf_uaddr, cmd, cmd_str, msqid compat_sys_msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid compat_sys_msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid compat_sys_recvmsg flags, flags_str, msg_uaddr, s compat_sys_semctl arg, cmd, cmdstr, semid, semnum compat_sys_semtimedop nsops, semid, sops_uaddr, timeout_uaddr compat_sys_sendmsg flags, flags_str, msg_uaddr, s compat_sys_shmat shmaddr_uaddr, shmflg, shmid compat_sys_shmctl buf_uaddr, cmd, cmd_str, shmid compat_sys_utimes filename compat_truncate64 length, path, path_uaddr compat_utime actime, buf_uaddr, filename, filename_uaddr, modtime compat_utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr compat_vmsplice fd, flags, flags_str, iov, nr_segs connect addrlen, serv_addr_uaddr, sockfd, uaddr_af, uaddr_ip, uaddr_ip_port, uaddr_ipv6_flowinfo, uaddr_ipv6_scope_id copy_file_range fd_in, fd_out, flags, len, off_in, off_out creat mode, pathname delete_module flags, flags_str, name_user dup oldfd dup2 flags, newfd, oldfd dup3 flags, newfd, oldfd epoll_create flags, size epoll_ctl epfd, event_uaddr, fd, op, op_str epoll_pwait epfd, events_uaddr, maxevents, sigmask_uaddr, sigsetsize, timeout epoll_wait epfd, events_uaddr, maxevents, timeout eventfd count, flags, flags_str execve args, env_str, filename execveat args, dirfd, dirfd_str, env_str, filename, flags, flags_str exit status exit_group status faccessat dirfd, dirfd_str, mode, mode_str, pathname fadvise64 advice, fd, len, offset fadvise64_64 advice, fd, len, offset fallocate fd, len, mode, mode_str, offset fanotify_init event_f_flags, event_f_flags_str, flags, flags_str fanotify_mark dirfd, dirfd_str, fanotify_fd, flags, flags_str, mask, mask_str, pathname fchdir fd fchmod fildes, mode fchmodat dirfd, dirfd_str, mode, pathname fchown fd, group, owner fchown16 fd, group, owner fchownat dirfd, dirfd_str, flags, flags_str, group, owner, pathname fcntl arg, cmd, cmd_str, fd fdatasync fd fgetxattr filedes, name_str, size, value_uaddr finit_module fd, flags, flags_str, uargs flistxattr filedes, list_uaddr, size flock fd, operation fork fremovexattr filedes, name_str, name_uaddr fsetxattr filedes, flags, flags_str, name_str, name_uaddr, size, value_str, value_uaddr fstat buf_uaddr, filedes fstatat buf_uaddr, dirfd, dirfd_str, flags, flags_str, path fstatfs buf_uaddr, fd fstatfs64 buf_uaddr, fd, sz fsync fd ftruncate fd, length futex futex_uaddr, op, uaddr2_uaddr, utime_uaddr, val3, val futimesat dirfd, dirfd_str, filename, filename_uaddr, tvp_uaddr get_mempolicy addr, flags, flags_str, maxnode, nmask_uaddr, policy_uaddr get_robust_list len_uaddr, list_head_uaddr, pid get_thread_area u_info_uaddr getcpu cpu_uaddr, node_uaddr, tcache_uaddr getcwd buf_uaddr, size getdents count, dirp_uaddr, fd getegid geteuid getgid getgroups list_uaddr, size gethostname len, name_uaddr getitimer value_uaddr, which getpeername name_uaddr, namelen_uaddr, s getpgid pid getpgrp getpid getppid getpriority which, who getrandom buf, count, flags, flags_str getresgid egid_uaddr, rgid_uaddr, sgid_uaddr getresuid euid_uaddr, ruid_uaddr, suid_uaddr getrlimit resource, rlim_uaddr getrusage usage_uaddr, who, who_str getsid pid getsockname name_uaddr, namelen_uaddr, s getsockopt fd, level, level_str, optlen_uaddr, optname, optname_str, optval_uaddr gettid gettimeofday tv_uaddr, tz_uaddr getuid getxattr name_str, path, size, value_uaddr init_module len, uargs, umod_uaddr inotify_add_watch fd, mask, path, path_uaddr inotify_init flags inotify_rm_watch fd, wd io_cancel ctx_id, iocb_uaddr, result_uaddr io_destroy ctx io_getevents ctx_id, events_uaddr, min_nr, nr, timeout_uaddr, timestr io_setup ctxp_uaddr, maxevents io_submit ctx_id, iocbpp_uaddr, nr ioctl argp, fd, request ioperm from, num, turn_on iopl level ioprio_get which, which_str, who ioprio_set ioprio, ioprio_str, which, which_str, who kcmp idx1, idx2, pid1, pid2, type, type_str kexec_file_load cmdline, cmdline_len, flags, flags_str, initrd_fd, kernel_fd kexec_load entry, flags, flags_str, nr_segments, segments_uaddr keyctl arg2, arg3, arg4, arg5, option kill pid, sig lchown group, owner, path lchown16 group, owner, path lgetxattr name_str, path, size, value_uaddr link newpath, oldpath linkat flags, flags_str, newdirfd, newdirfd_str, newpath, olddirfd, olddirfd_str, oldpath listen backlog, sockfd listxattr list_uaddr, path, path_uaddr, size llistxattr list_uaddr, path, path_uaddr, size llseek fd, offset_high, offset_low, result_uaddr, whence, whence_str lookup_dcookie buffer_uaddr, cookie, len lremovexattr name_str, name_uaddr, path, path_uaddr lseek fildes, offset, whence, whence_str lsetxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr lstat buf_uaddr, path madvise advice, advice_str, length, start mbind flags, flags_str, len, maxnode, mode, mode_str, nmask_uaddr, start membarrier cmd, cmd_str, flags memfd_create flags, flags_str, uname migrate_pages maxnode, new_nodes, old_nodes, pid mincore length, start, vec_uaddr mkdir mode, pathname, pathname_uaddr mkdirat dirfd, dirfd_str, mode, pathname mknod dev, mode, pathname mknodat dev, dirfd, dirfd_str, mode, mode_str, pathname mlock addr, len mlock2 addr, flags, flags_str, len mlockall flags mmap2 fd, flags, length, pgoffset, prot, start modify_ldt bytecount, func, ptr_uaddr mount data, filesystemtype, mountflags, mountflags_str, source, target move_pages flags, flags_str, nodes, nr_pages, pages, pid, status mprotect addr, len, prot, prot_str mq_getsetattr mqdes, u_mqstat_uaddr, u_omqstat_uaddr mq_notify mqdes, notification_uaddr mq_open filename, mode, name_uaddr, oflag, u_attr_uaddr mq_timedreceive abs_timeout_uaddr, mqdes, msg_len, msg_prio_uaddr, msg_ptr_uaddr mq_timedsend abs_timeout_uaddr, mqdes, msg_len, msg_prio, msg_ptr_uaddr mq_unlink u_name, u_name_uaddr mremap flags, new_address, new_size, old_address, old_size msgctl buf_uaddr, cmd, cmd_str, msqid msgget key, key_str, msgflg, msgflg_str msgrcv msgflg, msgflg_str, msgp_uaddr, msgsz, msgtyp, msqid msgsnd msgflg, msgflg_str, msgp_uaddr, msgsz, msqid msync flags, length, start munlock addr, len munlockall munmap length, start name_to_handle_at dfd, dfd_str, flags, flags_str, handle_uaddr, mnt_id_uaddr, pathname nanosleep rem_uaddr, req_uaddr ni_syscall nice inc open filename, flags, mode open_by_handle_at flags, flags_str, handle_uaddr, mount_dfd, mount_dfd_str openat dfd, dfd_str, filename, flags, mode pause perf_event_open attr_uaddr, cpu, flags, flags_str, group_fd, pid personality persona pipe fildes_uaddr, flag_str, flags, pipe0, pipe1 pivot_root new_root_str, old_root_str poll nfds, timeout, ufds_uaddr ppoll prctl arg2, arg3, arg4, arg5, option pread buf_uaddr, count, fd, offset preadv count, fd, offset, vector_uaddr preadv2 count, fd, flags, flags_str, offset, vector_uaddr prlimit64 new_rlim_uaddr, old_rlim_uaddr, pid, resource process_vm_readv flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt process_vm_writev flags, liovcnt, local_iov_uaddr, pid, remote_iov_uaddr, riovcnt pselect6 ptrace addr, data, pid, request pwrite buf_uaddr, count, fd, offset pwritev count, fd, offset, vector_uaddr pwritev2 count, fd, flags, flags_str, offset, vector_uaddr quotactl addr_uaddr, cmd, cmd_str, id, special, special_str read buf_uaddr, count, fd readahead count, fd, offset readdir count, dirent, fd readlink buf_uaddr, bufsiz, path readlinkat buf_uaddr, bufsiz, dfd, dfd_str, path readv count, fd, vector_uaddr reboot arg_uaddr, flag, flag_str, magic2, magic2_str, magic, magic_str recv buf_uaddr, flags, flags_str, len, s recvfrom addr_uaddr, addrlen_uaddr, buf_uaddr, flags, flags_str, len, s recvmmsg flags, flags_str, mmsg_uaddr, s, timeout_uaddr, vlen recvmsg flags, flags_str, msg_uaddr, s remap_file_pages flags, pgoff, prot, size, start removexattr name_str, path rename newpath, oldpath renameat newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str renameat2 flags, flags_str, newdfd, newdfd_str, newname, newname_str, olddfd, olddfd_str, oldname, oldname_str request_key callout_info_uaddr, description_uaddr, destringid, type_uaddr restart_syscall rmdir pathname rt_sigaction act_uaddr, oact_uaddr, sig, sigsetsize rt_sigaction32 act_uaddr, oact_uaddr, sig, sigsetsize rt_sigpending set_uaddr, sigsetsize rt_sigprocmask how, how_str, oldset_uaddr, set_uaddr rt_sigqueueinfo pid, sig, uinfo_uaddr rt_sigreturn rt_sigsuspend set_uaddr, sigsetsize rt_sigtimedwait sigsetsize, uinfo_uaddr, uthese_uaddr, uts_uaddr rt_tgsigqueueinfo sig, tgid, tid, uinfo_uaddr sched_get_priority_max policy sched_get_priority_min policy sched_getaffinity len, mask_uaddr, pid sched_getattr flags, pid, sched_attr_str, sched_attr_uaddr, size sched_getparam p_uaddr, pid sched_getscheduler pid sched_rr_get_interval pid, tp_uaddr sched_setaffinity len, mask_uaddr, pid sched_setattr flags, pid, sched_attr_str, sched_attr_uaddr sched_setparam p_uaddr, pid sched_setscheduler p_uaddr, pid, policy, policy_str sched_yield seccomp flags, flags_str, op, op_str, uargs_uaddr select exceptfds_uaddr, n, readfds_uaddr, timeout_uaddr, writefds_uaddr semctl arg, cmd, cmdstr, semid, semnum semget key, key_str, nsems, semflg, semflg_str semop nsops, semid, sops_uaddr semtimedop nsops, semid, sops_uaddr, timeout_uaddr send buf, buf_uaddr, flags, flags_str, len, s sendfile count, in_fd, offset_uaddr, out_fd sendmmsg flags, flags_str, mmsg_uaddr, s, vlen sendmsg flags, flags_str, msg_uaddr, s sendto buf, buf_uaddr, flags, flags_str, len, s, to_uaddr, tolen set_mempolicy maxnode, mode, mode_str, nmask_uaddr set_robust_list len, list_head_uaddr set_thread_area u_info_uaddr set_tid_address tidptr_uaddr setdomainname domainname_str, domainname_uaddr, len setfsgid fsgid setfsuid fsuid setgid gid setgroups list_uaddr, size sethostname hostname_uaddr, len, name_str setitimer ovalue_uaddr, value_uaddr, which setns fd, nstype setpgid pgid, pid setpriority prio, which, which_str, who setregid egid, rgid setregid16 egid, rgid setresgid egid, rgid, sgid setresgid16 egid, rgid, sgid setresuid euid, ruid, suid setresuid16 euid, ruid, suid setreuid euid, ruid setreuid16 euid, ruid setrlimit resource, rlim_uaddr setsid setsockopt fd, level, level_str, optlen, optname, optname_str, optval_uaddr settimeofday tv_uaddr, tz_uaddr settimeofday32 tv_uaddr, tz_uaddr setuid uid setxattr flags, flags_str, name_str, name_uaddr, path, path_uaddr, size, value_str, value_uaddr sgetmask shmat shmaddr_uaddr, shmflg, shmid shmctl buf_uaddr, cmd, cmd_str, shmid shmdt shmaddr_uaddr shmget key, shmflg, shmflg_str, size shutdown how, how_str, s sigaction32 act_uaddr, oact_uaddr, sig sigaltstack uoss_uaddr, uss_uaddr signal handler, sig signalfd flags sigpending sigprocmask how, how_str, oldset_uaddr, set_uaddr sigreturn sigsuspend mask socket family, protocol, type socketpair family, protocol, sv_uaddr, type splice fd_in, fd_out, flags, flags_str, len, off_in, off_out ssetmask newmask, newmask_str stat buf_uaddr, filename, filename_uaddr statfs buf_uaddr, path statfs64 buf_uaddr, path, sz stime t_uaddr swapoff path swapon path, swapflags, swapflags_str symlink newpath, oldpath symlinkat newdfd, newdfd_str, newname, newname_str, oldname, oldname_str sync sync_file_range fd, flags, flags_str, nbytes, offset syncfs fd sysctl sysfs arg1, arg2, option sysinfo info_uaddr syslog bufp_uaddr, len, type tee fdin, fdout, flags, len tgkill pid, sig, tgid time t_uaddr timer_create clockid, clockid_str, evp_uaddr, timerid_uaddr timer_delete timerid timer_getoverrun timerid timer_gettime timerid, value_uaddr timer_settime flags, ovalue_uaddr, timerid, value_uaddr timerfd_create clockid, clockid_str, flags, flags_str timerfd_gettime fd, value_uaddr timerfd_settime fd, flags, flags_str, ovalue_uaddr, value_uaddr times buf_uaddr tkill pid, sig truncate length, path, path_uaddr umask mask umount flags, flags_str, target uname unlink pathname, pathname_uaddr unlinkat dfd, dfd_str, flag, flag_str, pathname, pathname_str unshare unshare_flags userfaultfd flags, flags_str ustat dev, ubuf_uaddr ustat32 dev, ubuf_uaddr utime actime, buf_uaddr, filename, filename_uaddr, modtime utimensat dfd, dfd_str, filename, filename_uaddr, flags, flags_str, tsp_uaddr utimes filename, filename_uaddr, tvp_uaddr vfork vhangup vmsplice fd, flags, flags_str, iov, nr_segs wait4 options, options_str, pid, rusage_uaddr, status_uaddr waitid infop_uaddr, options, options_str, pid, rusage_uaddr, which, which_str waitpid options, options_str, pid, status_uaddr write buf_uaddr, count, fd writev count, fd, vector_uaddr
systemtap-3.1/doc/SystemTap_Tapset_Reference/tapcheck.sh000077500000000000000000000035241305163227500235330ustar00rootroot00000000000000#!/bin/sh #check to make sure a tapsets.tmpl file exists if [ ! -f tapsets.tmpl ]; then echo "Error: tapsets.tmpl doesn't exist in the current directory!" exit 1 fi # list the tapsets in the tapsets.tmpl file and properly format the # file names grep "\.stp" tapsets.tmpl | grep ! | sed 's/!Itapset\///g' > checkfile2 # change to the tapset directory and check the tapsets there # check to see if directory is present first if [ ! -d ../../tapset/ ]; then echo "Error: tapsets directory doesn't exist!" exit 1 fi (cd ../../tapset/; find -path "*.stp") | sed 's/\.\///g' > checkfile1 #might as well check for the functions that are documented in #langref now too (cd ../../tapset/; find -path "*.stp" -exec grep -H sfunction {} \; ) \ | sed 's/\.\///g' | cut -d : -f 1 | sort -d | uniq > tap1 # order the tapset names then diff the files to examine the differences sort -d checkfile1 | uniq > checkfile1s sort -d checkfile2 | uniq > checkfile2s comm -23 checkfile1s checkfile2s > missingdoc comm -12 missingdoc tap1 > commondoc comm -23 missingdoc tap1 > missingdoc1 comm -13 checkfile1s checkfile2s > missingtap zero='0' one='1' Missingdoc=`cat missingdoc1 |wc -l ` Missingtap=`cat missingtap | wc -l ` Commondoc=`cat commondoc | wc -l ` if [ "$Missingdoc" -gt "$zero" ] then echo "You have missing documentation from tapsets in use, specifically:" cat missingdoc1 fi if [ "$Missingtap" -gt "$zero" ] then echo "You have documentation for the following tapsets that don't exist!" cat missingtap fi if [ "$Commondoc" -gt "$zero" ] then echo "The following tapsets did not appear in tapset.tmpl, but have references in the langref file." cat commondoc fi rm checkfile2 checkfile2s checkfile1 checkfile1s missingtap missingdoc missingdoc1 commondoc tap1 # at the end we need to make sure we remove any files that we created # change to proper directory first systemtap-3.1/doc/SystemTap_Tapset_Reference/tapsets.pdf000066400000000000000000053411051305163227500235750ustar00rootroot00000000000000%PDF-1.4 % 4 0 obj << /Title (SystemTap Tapset Reference Manual) /Author (SystemTap) /Creator (DocBook XSL Stylesheets with Apache FOP) /Producer (Apache FOP Version SVN tags/fop-1_1) /CreationDate (D:20160328000531Z) >> endobj 5 0 obj << /N 3 /Length 11 0 R /Filter /FlateDecode >> stream xZ{\Y?s[ζiIUID'n5כ{xxcLĝ;;;OkKB1EUET(61NbI$E !ąP #};wl@sy|;9טK+kLP-<ٳȒ2\cP"Y)LNN. .~cw)4&ǒr[yUK^`r&Rze 49J+90˻wQz7#@z*NΔ&yYw*"]?4fd>WKaW]L4(]7KO/R.P)ӳ!g~Ɠ.Ԑ.QL itݔlUƼk0}^(lwW:ҟ3݅-JR-RGr\JacԲ\}|7)fd( lfrƣwɝ\\1Yho$)U2T#c$Jy\B)Ko GcRнS5oR*ӬFQ@Sz\s~OS;dN-W_2OS~>hIz;BËc^1xTrB=zRSɩI伄Iw֍T,Rc'/S&$CTvو~5OS*G9S{zkCXR&іpD"꧀־@%6TͪLgrFM Sj܉99>jz3H9Ros6>sR(uT]z!V{ٌIgi8Q!]bNfR{(NbDz$c܀z̘|gZpW6g,f^BMqWTܝQL F59^XigC[/JQf)h1rzޮ`<5꓁B<7P>gQQ~}og5G5'.M%o>e+㹳<;d=8s Bܴ2}k0_$NKo!UcK.]z|F7>5cuc/ySlQKc)QFgzژ \kwj+41/_! Lݟ$'M 3|I߿ߦ=GB~)~ $2C䏙&sayz5~zVׯ!K̐\kLWROZf]4m4FOS HP"M&0y#{>fRg0)˯5>/!.k^u!=  \BOoٟ%ۼH%ϒǗtf1 R)*yٞXmTd6 '\(=9g$G28?\$jG/,cduRϺJޥq~j'quŒŦ_#-raYg ZW}fZidG/=fh̜$E.3>^Z ?eWRkoxjLip*9'(iggvE|8ycOЪʭ>+q+RvWa]T1X% ɎCkXUkms8I(8[t R,ҐVd'"q^f7,+3iRgvJ=\R.L3ڢ>6МLgDWy`Ӹi3>ִ"{u`m%^e\٪L[ZѝQ;%+z#)J5]X͙ PA_7NZ* ?{f-FPi‡9#w/A9h޻ZR!͵=8H}d˹q}SJ%IŀEӸC},٢5s@lӎ~ɄNd*- 6v#*Va[{:c̹zZ3W hkCi'1Vd=Eh쬢76r*tzj{sg e4n1Q^gԀ[^Q4߲Y]i-$;=J2,Awټ#Wp5Jvds[k; rO,b \\r_Jz$'EA謙QZZ8ȫe!RBM[ֲ?|>>%D/Mg4Wuuc%c>򺦜6r nؙTxe~SNԹw|*7v;nvogG|AocGt!ewxVy=>s=d ŽqWo֛~䊤Ag~rH= Ɓ}_{҅[n {ƿ&RXB79;(Z ~ rYq#Јu$a|W\(tSހZÝVj9b/6ţxŚǠհZj4o| 07j[=b"I˂@\xǜmυމx3ly9r{W v;zw-Ҹ-#qQUUށE_` hwO6Gѯ[mz@1rka8#s!1^zAֱ6FykQ" 8[:ڣILax3#KZ=ט5*F&ԉ?Co % QDպIھCk%mcGdۛCg܏Ɔ<{'oktʮu }Ӣ+󙢲NƖ @ ɑEt=|tV2m.@;ie'Ja^>E,u§ ϯJ j^yتweU5$WPS\aUM>:t#gdm|XY˰9 [ʺL΍iY/C Y rڻf'^oFhUT1ooK9ߎf/_@h">e"n.-^i9Y353h] DmؓJ`*9mt(Ooyz1Fs̮~lgP)CXPa܆C- 5~ 5+;S#,mnwujIdMWոӏ[$\xkz]w-s<`E+6!ȗqR{C7NN-؈U.)`-FZ>A}if\_|<4!hbVGKW.ƖCMq>6;wS^kp|#`Ѡg,S8| Tg* em50>i"]y~qpw}/]KO|Ǿֶeo]~O`W+K}sDRꇾRﶳ^Ϋۖmڊzk{^p{~| oH2ssHBq~]|]oq*8lbz7ZX%pWlvvJ?|wn10" endstream endobj 6 0 obj [/ICCBased 5 0 R] endobj 7 0 obj << /Type /Metadata /Subtype /XML /Length 12 0 R >> stream SystemTap application/pdf SystemTap Tapset Reference Manual en 2016-03-28T00:05:31Z Apache FOP Version SVN tags/fop-1_1 1.4 DocBook XSL Stylesheets with Apache FOP 2016-03-28T00:05:31Z 2016-03-28T00:05:31Z endstream endobj 10 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream xu;0 @# wE 1T(ee BI~v#Y\ 8Vy1G :I? 8{$QWSb^DmR$o- ݽR kSTk 6E}+`GiI UF@C|9ȋC& endstream endobj 8 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 10 0 R >> endobj 11 0 obj 5010 endobj 12 0 obj 963 endobj 13 0 obj 175 endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream xUMs0+WɉdBB'!0mEm9)+,e[BF?{]z?74*6:p\=T[6qKm-|=w0z w>#_"1X9wXl@q'}=8jjj(56kH?A4u4 K:}z:I{xtLq$T< ,y o8h\rSeL((1WH.8~˺N=X466zf[ xu${G21{M nҦ(nsNjPG@%š 2':B7NǝQ( `0S`TʢײTqE.G(;4c5)ryZg;@ZWʪߵyy8  endstream endobj 14 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 15 0 R >> endobj 16 0 obj 902 endobj 18 0 obj << /Length 19 0 R /Filter /FlateDecode >> stream xUKs W1I)’-_i3L!RDN'jSs5fNwB$bG/^SREo)Jns+b1&.9=V>`J8j -|(dGaxa TSކk5 ¹pרgDbc70u7DT .b[) h<0ǿS=}-+F=\Y^,Zv 4Pt%˓4Z|FO^q19zV2nrLn)qRMӉ&<ߠS-ΠS,.-#vL}Ɣ೎/> \^8Ѓf{(кIQ\ *gmektPG31G(#fz endstream endobj 17 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 18 0 R >> endobj 19 0 obj 822 endobj 21 0 obj << /Length 22 0 R /Filter /FlateDecode >> stream xS;O0+n6TĆĀ㒈6')|؉%tߝI"@^.-tX)y8hAY [pz (lԴNZ)> endobj 22 0 obj 452 endobj 24 0 obj << /Length 25 0 R /Filter /FlateDecode >> stream xTMs0+dU%!>[4!Ɂزa #鯯06nO)V}z+%U$¸sE1htvkdН%g=/݃ ;smp36E*aJ")?I{ζkvFݫ bK>V^McNκꋋlҭc$F%!ĝZl 8A$Lq|4)\:a 5\ZH [lU!-ڝ>2iR8n86T[SNpx>1Møk(ܟݟb1r\M]9TIQ2v4E$['a~""F Ѯ߄4p874V ΦBVL]o36 k5ge9I6b~يQ<)yd.}U(To=ס7befD- 7uScBghȺp$ =xtoף<v8&y8u'hO*b^*Ubv8>L``sCL;θl6H"r F endstream endobj 23 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 24 0 R >> endobj 25 0 obj 675 endobj 27 0 obj << /Length 28 0 R /Filter /FlateDecode >> stream xTn0+h(M skӦ@0b 8(˔#H%%J%9f͌(H2H7(D x]AT`@v Zvi6YcH# ΁X+"t5Mz.BO`Lѧ(b_"A1q!ƜI0nqt[Jn*+?6=P)&j uGnA 0οքYOB_4fY {p2J~~(;AmkvFݩGWdF) !YI&:YF$0jOr64:KaYfECIsIp,;,aZDM̴ؚPyB?%!+BgO;oSS`A*sm̥@0RFvjدBC(cL*֕! F &yc{G0ViY-RoI*c2ֱGUntlq-g; mJs|M`j&Od)vepR3 endstream endobj 26 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 27 0 R >> endobj 28 0 obj 555 endobj 30 0 obj << /Length 31 0 R /Filter /FlateDecode >> stream xUKS0WPKh g$c SHlBrNf$}|LjuSdð;AAb'0Іvn f :p9sps?A{~ c}LQ(ƛŌ\Jr"ۓOڪ' M=EmzwP|.-F覭ΙFaon[m9$y7n mփ<,"KH%߹gsd!nj́R*::Nggr}OI1' J+?k72y`y 9d1 UmAZXg\2cӊ4M}+\/ffVrFS"3Hyޕu5gY= z.Ĕ9eusl,$c)3'zQ7ds„2}VfgK?c 9$d5b:3s$#1% lk|D$nnno4cii$BܟN. esWx}xӱ&mRVZ5BXiRitWO'vɏ?׃A:7rQ=1^`Q,סZ+֮ |7 endstream endobj 29 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 30 0 R >> endobj 31 0 obj 659 endobj 33 0 obj << /Length 34 0 R /Filter /FlateDecode >> stream xTK0WֵŭC"YUD"в8 $$Oc@p'޾1P|Y. JV-5|Rg/@GÕOc+7Oa彟zo0 E#LcAp&<J#3rFADGF RWpTO&fe]'!3RU:n|cD@]zs~E!K!%,s.+Kq2׈BQ"P.kq^0*Q*$UQ8ȰpXUqeCE~& :0F4n_iٴ&̷7q~|ŻvrI&as4hYɠXG\ռ#\RZ }5I!9`wOq'"!2 =9=}215 Gn-8QZpR7i4Ζ a86*U-=Zc,Bq endstream endobj 32 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 33 0 R >> endobj 34 0 obj 635 endobj 36 0 obj << /Length 37 0 R /Filter /FlateDecode >> stream xTMo0 WQڭvM1pvOlNl1 ¢-厼t>PK*` vkdK-|' |&> ? k|"xq| I; !]$JeZkCtM[6yGHO鄑`?0gh)}մm$ FF0PDD*uk> endobj 37 0 obj 491 endobj 39 0 obj << /Length 40 0 R /Filter /FlateDecode >> stream xTMS0WUs-0tZ:g`%`Aﻲ DL^i?'?9 (~y>!7.?C 0FXtXOG:Ν{ܜŀ?M8Wf{} S|tVa'g׮tAtA("hK3g/hjh\xLjhΘRZ8s4KB(}w$\J?>1xfQ2p7B7J> endobj 40 0 obj 681 endobj 42 0 obj << /Length 43 0 R /Filter /FlateDecode >> stream xUn0+’JzKc8(THMMݯ/)b=fGYbF!+S#SF@DC(C(̭A{I gIngO59o^{ޭB ֻEA$a% )3 */T^ _O#PhL/FͰGa'!tO{lmsTkW Ě]gy+Mϋ"d$6;7ً1(F~ȇX;oZU/Y-rro)^{N(ǘh(ϐAr%ņx+Ue-K.$!6EQdۄQv s#bhПed.X^o! 0jS޵:$(!CQ0kU4qbvf \f ԁQV{$y1[#32^%`~,E 7p(k13߾U93^Tr&Guv(R!F> &AL/vlkh!fɻ 34/Vr̀$\iw}}LQAZA+hB=Vh endstream endobj 41 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 42 0 R >> endobj 43 0 obj 663 endobj 45 0 obj << /Length 46 0 R /Filter /FlateDecode >> stream xVKo0 W&ܺG t C[ $,9uݯdٲ8K HH<X]#N){jeb ~ԊHhZ:h QJOx>{r X<{x\c|1l+2a! "IIC|هJ(G rUTzW(#mCBSgc" ͠6}+\mbI=40xS"%G@1d'U4]2>Pb=Äj)oٴMX|]9I cc7% |Dc9c,wWgb -h΄a#+AJ^V9]N&a2'("Nlܽj_4MgĢVۇXι=֬,xwwztQMng/LQijSBa -S0dE <+P;fʌCjVnCKډl2J/ġJ7Fs:Asd$Wyk v)S&CQ}&35+w01כuչ,f/M/ #P/;kz^: lGIiS&Is|2 PGN c<{8r0bF %#$2iRkyX)LCjDSM'3!*_diovg{-?Tf|^g* R}t5rfKrG ,jZE2b f=cc 6OJOQ2[f쾖D ?=é endstream endobj 44 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 45 0 R >> endobj 46 0 obj 854 endobj 48 0 obj << /Length 49 0 R /Filter /FlateDecode >> stream xTK0W81C%H=,M DJ6 8 yB{zi!d4$"4 տqTt;2>CBx5@P3dgleqX󳬊[IK8r94!:G.U2CNk07UuBg2ú2c6EAt( #SGZҵA'`T)4_m/U=3h ݮ&Kҧ8pmGNTᾦ*pLjo5- )Ӎ'SFEw^K(@&Mu(l S}a72TK7G:Ub&YR^{ܯ>큳FL޵^egdX]?wҏq6@a0eb:x,+ endstream endobj 47 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 48 0 R >> endobj 49 0 obj 582 endobj 51 0 obj << /Length 52 0 R /Filter /FlateDecode >> stream xTMo0 WmImÀzhz&b9IIDzz|$7F2>%@&+N".b(c]#C [&gY=@#~#,٧}x}"⤍1:?nKxhm֬K[_@ݧEP4r$t}Sk$G8a{;B|}hw_C" zzReXt2.J~z(t'@d/\.z rw|,mUiQz^Ͳmw=4D R8FBkIcBus7mekhV9dmUOk{^ yKOhʁnV˶pM቎Qki`Ӛ]^gzuP x(yZ0;1gh endstream endobj 50 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 51 0 R >> endobj 52 0 obj 474 endobj 54 0 obj << /Length 55 0 R /Filter /FlateDecode >> stream xTMs0+j%ȷi:Cg\3CmBc;=3ozVx~v$^: ! U g" y[j4 nM6W)Ǐklo#ާpr#aI# sO MiW'y_EP4kkh%> 5 02jЖP:mCιntƳ: UvU7E( aA3<썋#Ap !s.;=]SOɮIWNܩ /@9Rr%)W6y!Dx .%S7e^A14ei&i}jmGCΔRV{vŮJ}>!b:OQW=׋}j9Ru|,MFKf*6{`"F|LΚuP` Ǜ JE);Ozӿ]q3$ڬ,_dr7@eƕeůww:@{?:d] endstream endobj 53 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 54 0 R >> endobj 55 0 obj 547 endobj 57 0 obj << /Length 58 0 R /Filter /FlateDecode >> stream xTMo0W̱=wlsۯEJ AJ ~ǘ$&%$[3~~~<3H;?+ab}Lt5VcXUhh;V2Op|˦~#c l_HpXk JZHHWp*[M9ol ƾ#EJ7P4I|ޙ=J3FюPEO-{1$L0ԁ{8T1n (“Q3. =N U'z2qy DKvĄZΤ4q?\څe:U>ֹka]Ws4[ ) ak}!L SVAxMBˤ?=^dYjvofbP盕+\ElN"k A^?ؒ 3 Ϯ;wP #I~[ Et_Gwg/s endstream endobj 56 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 57 0 R >> endobj 58 0 obj 486 endobj 60 0 obj << /Length 61 0 R /Filter /FlateDecode >> stream xTM0+䰮?=TJ7R*%&A &kH@SJ"<{<<1s8ę` $6P  fMiC '[G @1G/E/[7Oa]z0 ˤg(T(@#pXf0yR*a~0q榘>ayH0-* U9%}|g*1DnitBiͧGyЎ8wMB D:3 FcɮrdpJ$>!*(4ʹ9~?lMo(9LPʰh  |ʗᏜHѐ].-`&Ӧ̙~4$6 >Xнc]'. OezHJNqb}р $j çQ`V65ljYe2{%Lħ ֜nb[ 2PKPQ$U;D5# Oam?P0V>.bKd-89485.0;쒂+}G$08MR>> endobj 61 0 obj 609 endobj 63 0 obj << /Length 64 0 R /Filter /FlateDecode >> stream xT=o0+nLwDڦ)ڡ C;lɑ~EٖJH;E o`Jt1@.DVSXUxx E!>N>2ZC/Ώ0s6Bg%$)seFC&rQCY4Wb,ʢ~iRAѸ=C+Ygek &8aG[Bc!x8zxRe`_Ű3.J~)@.+N ⥖ug5h7 QRF$>(DAh!fBC!o6Uͳ?yf!3x汚U9u^tP`wr]/vPwA0*NO?Z|r5;3T&HPf勦>W|J4Y6ha_[I!Zq)(#: }o !1AXz+pX endstream endobj 62 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 63 0 R >> endobj 64 0 obj 492 endobj 66 0 obj << /Length 67 0 R /Filter /FlateDecode >> stream xTMo0 WQ-YvMj9,;&(0 HOCXPT1P]PBc52`%n& |'w>xׁob"xq~|B>(aeZL Ȩ:< ng_jۚwh7uWw ";(Zt9t>s)5{HFF>!w_c"ьzzRdXt2.J~z(Mݿp^t1pHcA~N׳z>7ϦD}ݑ N9qG1/ su ˴:h 95]5iaԅqw-"TgJ 2TIE֛޺0T+> endobj 67 0 obj 494 endobj 69 0 obj << /Length 70 0 R /Filter /FlateDecode >> stream xTn0 }W10M[m:` Ї\GI:vj9|$ݞ2'hRG0{e8$1Pl]Z;pi6 (| 1׀wt#VY6Faܗ(dic4l" nwyREa-2;P$u>D!= 5h|i}(k;׮M"iֳ:^8 %C00}.Q=w/FD7>[: TzP__/cW%q5N}#BN82 |bL.R9j Pb13t;X$Kr'Q%RJ_՜z;/.uԜΨ$F%!ns#OW'f""!e8MncʽUu"uha?ք  Ml]R[_9$Ҩ+MY5Lu:oDdEi8IsiαFu|IzT<ٖNAlf|hjT9xJWĒU0 K endstream endobj 68 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 69 0 R >> endobj 70 0 obj 557 endobj 72 0 obj << /Length 73 0 R /Filter /FlateDecode >> stream xTMo0 W֯a= j`"uIIDz7FK:W".bXBgǰzXn 1_`ӳ :;Z#=?BƮ>BHfEXk`?%<]ܔEn~]L,gH]2`$IF-Vg>[8a[&NgڬfBV|r/мTY*i]oHTG*+|t8OQ| 'TjPt7r=ZE6\;1ɘGH#VzM}[Ldve~"1D6nzZ+/٩  B7Oy 7'can endstream endobj 71 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 72 0 R >> endobj 73 0 obj 484 endobj 75 0 obj << /Length 76 0 R /Filter /FlateDecode >> stream xTM0W2~m"* . w;$[3~MI@ܒi6z 1 JC(IAƂB'q:jwCyo>Gw\2W5hҩ2x4z{D-:OBvt ws 7{V{~>M{hph$4>3јK$13A8ďѦ1. ΅[ǯuQvU'/E8"0^t-{᢫}PdwьUг C=>߭sH1 Q2hHB/3@૩; m]5+5K`&Rn;C"MSׇ|ۖUQP}FT?)?AxSl`:; Zik@48{Ѳ.3cvM_t \&ZGkCDL1i V~7{ӣd0ˆ7T4Q.hfלٰӒj6Wu endstream endobj 74 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 75 0 R >> endobj 76 0 obj 535 endobj 78 0 obj << /Length 79 0 R /Filter /FlateDecode >> stream xTn0+P}k@!Tm2},N(J#}my}zW'TPAo Y#Cl-\bKAaa<v]W|C#agg r: Zp3cL$dT yk-\o\іw#_=Fhڝ,Ӵ{/&l?2v2Ch+ׯ ь|z`cqVC%zh7 U-{bHjcBic3z2)yE$% TpǃP%#&S3!aArlktC9vi4u- / D{y.xۼC ~UΈ !A4J1o]Pj^ig?% j].eJq>6Md)xjc4NMWv hYF ĺ+닦\O .h"Pt+S,=lnqTY2:SD endstream endobj 77 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 78 0 R >> endobj 79 0 obj 518 endobj 81 0 obj << /Length 82 0 R /Filter /FlateDecode >> stream xTo0~_qǼW'a+RJ5u,@$Hh96ha _|̣Py&K} ,N+IAI ,! ,A9܊R |w Ou7b<;>LhkQReι,ՐIM?%]|6EU60">iEѰ;CGәke'^ 1 ֿv:}hk8H0;g?g?>VGf{@tT3왊{KF|xeCDLPEu]/] IRQAC(MSd3I> endobj 82 0 obj 502 endobj 84 0 obj << /Length 85 0 R /Filter /FlateDecode >> stream xUKo0 W-:`!kbH%1ȭݿeɯ4i{ʜH>#(a `vTO?#Qܡq "zvBϞ:<>^(V]$#,ZaїV湂˽]TYn~DfFhZc)}WnK:w::δ Eǯ'yЎNY %PC0pqg.ً.-wO*TjJ|Va/.]kIAr™![/%3r)_rkTB0~gllmpyA)%IR(ʬl\0M4§^vd:~1thB8"$I ';٥y|Uʡ+iJp}\كk'3J㦛c(>6o-mvAN ]HُP,6Ye=mLav]{YU~xf Û4,4Ov.]  . 齣? endstream endobj 83 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 84 0 R >> endobj 85 0 obj 588 endobj 87 0 obj << /Length 88 0 R /Filter /FlateDecode >> stream xTKo0 WQeIe C[Y,9$) Ǐ3B[='M dR9%$]")i^C^y1o;}k6W)^ZiSV>wu<@$QC yK2zzomAmk"1dl$OqQ 7/`(;GP{F!-"ʄgrQyOVq=1'!H 96iGsu,~z+zY&5ůߓźȀLȷ3<0s_uS]]39edRG홋}x¯Z1A4Ӊ<7oHҧ/Cl;¦U;74m 2x2})| [#341<AK.:0{7q endstream endobj 86 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 87 0 R >> endobj 88 0 obj 505 endobj 90 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream xUr0 +pLfRʷn鴷4!AiGJ$nHK"=@<姈d9U=yH)Iń'PW sBG:95P#:=_GWA|C_=>m~LQXnŌ0LH"xnn>4ڨ_.wzeFww}Z1FW}=}x'>Zbۭwί.':>n=Ƀ4hx2^5Z<+Ym쁌NIw<$sJ|6~YVs™ahpĸ$I~y6M]+xPV`]^5Z0C^%ϥ=zR4MmQ2nr3`4%yK> δޞU`"!1e8kwvW+mD0L2 G٨'(˱^`G3ERl#Ĺ;Vmh'⌓3JC];8Gdpf:(>AwxЊkVeap ۾4'ۖ?о܌n`O7faTjڢjۦ%kbI4jN8}_ɥ!࠺_ ,> ?946<]A@)¸)Y R<-iHfc\<1J&_U@ endstream endobj 89 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 90 0 R >> endobj 91 0 obj 693 endobj 93 0 obj << /Length 94 0 R /Filter /FlateDecode >> stream xTK0WqQ;8FU>v+PihE@$IP˿$73+a7.8,ZH"U~̣܇jه]x#9Ya od: E4]D{o!#yP)B**Qӻ/)fYĩGshH0=V5T9s{8w P88Ҵ'W':>;g1܌_^ )e߸eoXbdpҾ}BUZBDQYK=$/fhGk)gR.g d^@/qbƹ< @ࠂKPXe/x_44DI6;iDA"]⧣Iy7LTIxXcI^dfO=dvd!$kS`A)%ZTa?R- )S.vͲg~3h0f*]V␙ΡN#/vr|bo/5kmt(C_U쎭bV%|X-Njf4 ˽i. | #}KP endstream endobj 92 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 93 0 R >> endobj 94 0 obj 572 endobj 96 0 obj << /Length 97 0 R /Filter /FlateDecode >> stream xTKo0 WQ[VnݣvMQԲ,;&) E~Q~bw~1V²`OO 4l! |g%Cn(H ?>/%߰Gk!e#"-HI JZHH XM\6yU;H鄑 ͻ3t:%}wbOid4{#Om\3 Qxc8+0<< 4G?s^dHm5䴈z>~gzlٽdk$- QQWPb(VezHЧ dࠃVАkuV6ukӖ aqaBesR+skoˤ?=#3y^\,.}"QЀŮu[ wJY'ZCcѥ}?В #چOYh)x P ɵѠA C5m]N%PUe9䚇]0>NsBw endstream endobj 95 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 96 0 R >> endobj 97 0 obj 511 endobj 99 0 obj << /Length 100 0 R /Filter /FlateDecode >> stream xTn0+-E}=p# 8(ؔ#i*Ɋ87IOo͒q }}2 ,$#d ,$ml>/ã낟gŨǰ>ѻFDry2<=<|ld'~up{n=B5\ bD { L?C@Hچ6gί"txz`1Se\eQdL{P~"_d#{݃a@1;>S3cT^T?Ħ^;x^b(a}"B uKJi&; Ewln+@TVM%tef%RBB-uD u(W"cf43 dijwesP LN#~8Fn7ߛ-4vs ٩! Gisiyزo$a&sWIU[ 5P̀Z zG {Cc:*ۚ`C;l}`ZM-^`rK}X Ɠ5CӉ*dP endstream endobj 98 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 99 0 R >> endobj 100 0 obj 582 endobj 102 0 obj << /Length 103 0 R /Filter /FlateDecode >> stream xTMo0 W۲ru)#ZNIi9D질6kpAaRJR 1 l l쩁A{,1p×M¯_%EA}a}̣  yyQLɄY C PȷpV^-ڪVzs>Bf]gjudIǑ 23Wۆ69F,|(ʸhxP6gٿ^hk0 (FܼC@(7N1fOE=*Sw 11m0^)'ɓCFihdYJSY^@]BmѬd ^HРTP)b+X9(MS; Ꝯt*N̅ n)|#nj_'.NXbL5~+U_c$Y,7Ҿ PI!l$.FES,|]i5'($e3lWG[m?}WArb`w Jq[AV#Yqh\j)n:akS3" endstream endobj 101 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 102 0 R >> endobj 103 0 obj 589 endobj 105 0 obj << /Length 106 0 R /Filter /FlateDecode >> stream xTMo0 WFIm[a; jDq $k9,[$)s"E/Կ[D {|"<\A',=tv;sj`ҋ=-> endobj 106 0 obj 587 endobj 108 0 obj << /Length 109 0 R /Filter /FlateDecode >> stream xTn0+ E}kh! e6rPdymOl ߼' (nHM} "(ڞpqXS  .bπQWOglQKi, %Kp6|ҭV۲fٗcH0=tw t> endobj 109 0 obj 589 endobj 111 0 obj << /Length 112 0 R /Filter /FlateDecode >> stream xT0+{;Cnm[J"a$HƐ@6Iw/)dkƏޘg[d!/sc 9J!lܩц;Cv{ hO: ^>Š|LBK0$IH@LO!-S[ۭۢos:a$]gnvfOahv}+(|F|moo={8f1?=R' I/, ]w|L6 ,ʹYOݱC)g.w"O_C?6@V%dfJP7ÙQJCmεR:L8xl5`HQ9q/xGW)M0ߎ}z6^-DHdv|hVR֜s WLYS&\&H> endobj 112 0 obj 508 endobj 114 0 obj << /Length 115 0 R /Filter /FlateDecode >> stream xTK0W̍VbIl,T6 EFjlq$}<<~ ` XܪHh{hv@dw[Wk ǰ %dݏ($)ĨdOկzYgϐ|>$ySCB35G(cˀ^k嶦]\Bq>pv1fM_&gFĈ ]D#;A0qsLJ (%Ƙ[Rf^ʵw)aLLa !G1L\LL5`f悝YPʏ5櫪*/eTUot|ŴMˍ_T@+dLtWU.U7{fqDqlnu^TYչ3#S|-b]7bE(܅6rs؛THC"bJ /V0k Wղ Kk )(㨣K,6wسv* Hݮ4d6 {zR Cy^yeǬ W.W~⣑hdT#[kK:-Eqʗ endstream endobj 113 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 114 0 R >> endobj 115 0 obj 611 endobj 117 0 obj << /Length 118 0 R /Filter /FlateDecode >> stream xTێ0}Wc+QK}E*Jn) 8εJZɓϜ3<{ (fv{n| ""l\A'<=4v;50xkx(|ps ^#,N$D>{|(T%Up{PYL`1Fwu 5=|: B5p>8lk:׬g:>n=˃4x2 ~~("Age^ubwdpJ"CB3Ϧ\GS7$ 8 .a(Ixa^q'K ]V TO4 ړRnBj0H*Pbu*KSlI QvSDIVa/~4iS0$Hb|4]jwl&S#לNo{df.5 c.AӾ8&L?qy7d:/mc/rƉA۟%6a &ҳ%խm{9猴Y5qV}~'ӵ-bd1qRToees(F{>P?\<̦6UZZ s-z}:oU{4>d 5Dx*;$$ >wBW endstream endobj 116 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 117 0 R >> endobj 118 0 obj 662 endobj 120 0 obj << /Length 121 0 R /Filter /FlateDecode >> stream xTK0Wq+#/,l$Z:8ǩd©!gyokd|=>$z;=`o(|0_ׁ Ы称ћbylQ˥y* 'KPl}[U чbH0w5t:92҉=$1FAK(=. mzLǭgy# NULaYܲ*ܞNIxHf蔔RYC=jݩ'$ 8 6/Kl UFh *%ЖJk2JF) +V]9W 6QFIG[;ST )BRǵejv3=7 )qoy۬[[sIH汔IR`0a#t[eM^J'1g&mue`a `=M/wX M'ߣFy]'? nY5 .Zj*GH𪹏, endstream endobj 119 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 120 0 R >> endobj 121 0 obj 587 endobj 123 0 obj << /Length 124 0 R /Filter /FlateDecode >> stream xTK0WqIpkݪ=TeUE` 8l @D3|}3@.`0۠ , hY v k{ge+" =>Iu.Mzm\>%z_)P0bEgrYao>4;ߩYW7J>DhzpvdiBumC\X}#xz9 }Ce\yQn<8ggٿ^hkG0¼}@0΂Ex]=N!9$ 3 c&0ͿȞ2&إ&]4t+ ;-[|*v);ضLj -Z;j&$шY _jh(p!$cyh<~*uӛߵ)OqBQ[]m%^hZ,O\F)sL$ϻz[饂20JH\Fp/\R73F۰{:%0{꣣N qWW9l+Jwbz.o$mŒq5Ӱmm0*S endstream endobj 122 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 123 0 R >> endobj 124 0 obj 579 endobj 126 0 obj << /Length 127 0 R /Filter /FlateDecode >> stream xTMo0 W0lm_Àzhz<%1Pˮ`ݿe96ٰCfAz|_i T2De % v ~Đ; 1 o|#xq|5w71l(\Ƙ4Qr%$d%_}\g;ٺ+*^?@})!y_COﳤO8dF#Oǡs f֓ K{$@"tǧh&AD5Y C=nY@KB$ QP!!0 E$$aL"8`!>N%wmB0bV+XBlֶr۶oZucGLydJ*#y4$I<:rUcyE 7L嘵]Sjqym8}ޖġ=1OV9hiʅȄO͛=(+٦ha7 S'k~U endstream endobj 125 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 126 0 R >> endobj 127 0 obj 499 endobj 129 0 obj << /Length 130 0 R /Filter /FlateDecode >> stream xTMo0 WQmIuZtY :Nvm~e'vd% HoL[!H P2]a"z;52h7YcO,g_-:#]/ΏO1x@ mё%[x\M6Ou/e_")?(w9t>= N#AގPzxnW7ԁ{8V1 %0H}.ٻ.: \;>d*4({=~g2J'!N6iwA9(\9yeA͑BQolSjqgf!Cs՟qSe&_ t`ylZs!]$0wI.] @ Fīu CVWx endstream endobj 128 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 129 0 R >> endobj 130 0 obj 485 endobj 132 0 obj << /Length 133 0 R /Filter /FlateDecode >> stream xTMo0 WvÀvhz(R'1ȩ`ۿd94Nm@'~eaVt^; UJPE +aW[/q79=> bxx\ ~`^G}OdFI0\  nK߸iS~ IѸ,y+ &8a{ۄ2'e\B$>ag\4{4'տrHȵ>!U{EDuM=H0.H"/  N* cD}s7,rz yy몜u]xt]#WJ:ǕA 0]-G'WLy{;S5߬r.R˕I^t?d3 F]^Ob:Px AڳEQVgՀfcPj endstream endobj 131 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 132 0 R >> endobj 133 0 obj 480 endobj 135 0 obj << /Length 136 0 R /Filter /FlateDecode >> stream xT;o0+nLGRIo#!ش#Inߣ(ےc@GýzaV¬d/N^f .S(SX щgWu-n-*\?B}GhAxiޑ=2 -Eڮ:H#xā{8D1ތ?Z2$x \"WMJdzz2Ys^?.b> endobj 136 0 obj 501 endobj 138 0 obj << /Length 139 0 R /Filter /FlateDecode >> stream xTMo0 WQmYvj`I%vj;,;S;zI=|ʓP{c [0H a YMl<7 K@xz\^~GXx{BHVJZGbɺ Շ"?5Eyu)0ҊySCC3kd3A p ?zsЦ\Bui`PM>- #59 ] ⭆ugՊz6eKT?=;C@FT\*{o.j^ endstream endobj 137 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 138 0 R >> endobj 139 0 obj 504 endobj 141 0 obj << /Length 142 0 R /Filter /FlateDecode >> stream xUK0WqG^Vv#aCl,vlB{ɓo<s@, PgH(AQ $D458; b7ic 0|6>>n ƃ2o# žE!A$圧11C![͗FⵇA}H5yG-;`F T4}B|a1!Fln㪝rnXYxO,'E4҃aYܲMDqޚhcpC=2{vRD Ø NFsM9~//TЯ:鋀k~ ZlfM55r9(c9޿ɦUچw#b2ʙJ.73=> endobj 142 0 obj 592 endobj 144 0 obj << /Length 145 0 R /Filter /FlateDecode >> stream xUKs0W-pmIfr9F&iʿ^~@D 3j~+%".\RX#)4Hhk {j,<}# ߢGc\6> }Fn E1ADH)E@ F}(L0\FivM^z"F@4q58gj9 I-A%d^g4>5BI('OgF0$nm 7w|F)1,Y";vEQ0&;'B޺(TͶ54 |BlVKXUڙ6U9Wa:6AK8FiږpnM׭< S$ycTpS7Uf%( XzڮnsLDTRr3G,f-~_Te\BJ()8i>5:5UNai08ldBb~׼+uW/嫃ɵMAYQ<˼R&t^.wP +sU Q]BVY.M(~Kz:,$\2*Xl (4xM L endstream endobj 143 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 144 0 R >> endobj 145 0 obj 640 endobj 147 0 obj << /Length 148 0 R /Filter /FlateDecode >> stream xTn0+-M[6zsc$(T[ؔcIM.%N{r%$f8{o'-SqdMI \Q>;ۈnK8% 0J9τwdܫ<,ȧ pg0(R2*qn*/ ܶvڔa| I.C: 4bbCOoP۹VQF6 YQ 'h`:){#A0QF<hJ|O] K8r>@.\D)^4BWd.ly ڢ"taB~Df4MSGve݅,pR񏑊,OѪ+뿷b-&!.N4fYSK;+^(l*zz,\:}.8Qޚ"UQfY@kraYPpЛ}u.̭cQM& jy.%vnc(woHv endstream endobj 146 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 147 0 R >> endobj 148 0 obj 540 endobj 150 0 obj << /Length 151 0 R /Filter /FlateDecode >> stream xUn0+5E}=p# 8Um2r}I=!g̛7_<Xf8l8 *'P@{I/I kx9`q]77|Vx,- "1<ĈQn To-oeTgH~xߒDhAxCCh^%dV5619Bh"('/EĴٿqNX40 (Fc@5J1f lVٹO% c+8 9sMё?hTЮ:髀~wUȶp40 Ȟ.Zg"B:S36\-g&,@>&zzv#dy9~VRC8FmW ORBO Ad](4a`75 e>mWZU1T*+v+`l4gPVJTh>AI#mnNJ"UCaW4K[JeRdB fhЮ,я3ȳ, endstream endobj 149 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 150 0 R >> endobj 151 0 obj 594 endobj 153 0 obj << /Length 154 0 R /Filter /FlateDecode >> stream xTn0+9@ÒC}=Hc8ÖmInڿPxkzqmg{k ,雷 nB@akmp=D RW陒Kxq5{ :?q꽿Ap:`"4ƄZB$A&4U],-0}IAC]C-3/`u _a7mք(mjtY]!n}ɸ*$EX8vʖurb$ g z4FϪ$ީ;uCBPPHUq b mٴ>FC^i &=7$|^VE^9a|Apq|zڄ!! 8Ӻ/piqyl\3EcslRVEgBLq?C%QZ&|t hj}Fo`#esT.8_"DL[;%fzT4]lퟶmnp[|OuWڕx\o7 GW#z̷۷e#oQVx qo?OkFMޝNnŦg{sspT:(fBd% endstream endobj 152 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 153 0 R >> endobj 154 0 obj 612 endobj 156 0 obj << /Length 157 0 R /Filter /FlateDecode >> stream xT0+CRH=leI Dm6YHcyahoݢ՞  #!ܮA .~ e 3{|g@Ku ]^a>}- 6HRx1W lUyV>A}G$hޜ,_Q" p BѦE|mڵε?ՁG8T1??JZ0Wn+]^\;>d* Du;ԳYQ^.H"=Y6WIU;װzYnTP,$Nt- yE-ʗ{ET3ˆe!z1fq{e!|x_n{{e}˳iIL`<.VeZ8/$x 1 i@ٸ3aCLWjkG endstream endobj 155 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 156 0 R >> endobj 157 0 obj 499 endobj 159 0 obj << /Length 160 0 R /Filter /FlateDecode >> stream xTK0+H쭯Chzج*8  637Gwf }#P`UGԇ[{j ЃdwiW5w|ZcX{#C[ "2 C)Hhh '2] nkTiD߼/"F@4ojh 4s P3#e@Nk嶦m;vu8qY(qI0A \[j6w(0w| 2Ϫ%M^'OU'2)܎RBJ(`m0@7N1}RNtMk涘9c,)K%`1}|P&7KrUt[GNJN~T#V۞R>*<+*DpTKJTŬ3 6z2S%謂BUu!Zk|H endstream endobj 158 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 159 0 R >> endobj 160 0 obj 614 endobj 162 0 obj << /Length 163 0 R /Filter /FlateDecode >> stream xTKo0 WQ[VoۺaXP;4ŐNb SߏNL6,OI @z޹X =#AA 4k ȝDw"a?X{2>Ro[6; a>M!]K6$\I떄OUfZٖ6үs:b&: ]%w"c`z^*#vu\A(!dPEAۣ?sɞuadHRZDT" զg-|tKВKh8!-P3L4T|wH0ʛ6q[lvVL(X78vOt6M/sk$s^L/_*QH^nlO[DljPoU-IP΢Κyo\NJ!1:] zi7p]e U% {3:EUC(U@ߊ\ endstream endobj 161 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 162 0 R >> endobj 163 0 obj 510 endobj 165 0 obj << /Length 166 0 R /Filter /FlateDecode >> stream xVKo8W̱R.z1ai  Em"z"4CQdGrK }-`@{$C^z{U ^t&?HP(|Eczs 'x~ UǻzQKi, %K㰪˫ڪ6_a!x:H0?ttе?!G(ǖ  CLe\x㟋}б :/|@ IE_xdOPtfpJ<ӆpkJI)}?WWV?c޷8wLR9LPʰC Lex!<]*hU[|uT(qsAy""$c7Gy*gg4&2"i_ &߾2p{|LD$ +Uۡ ,bH8 L]-sjmPj\V *+!+V/4 g F;Gsl⌓3J6pc!1 ;ծwdd(~A[58t9ht=q[oA81d3wjd8X,\,;. xmEgLa| "q#s9jt‘vPy=uVMVMHkrt;.f8&*W2ϝU^m : ERmfPO7CӘxK~x)~E ޻2rUySU {{/$to2 E]ͺcM}? endstream endobj 164 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 165 0 R >> endobj 166 0 obj 843 endobj 168 0 obj << /Length 169 0 R /Filter /FlateDecode >> stream xVn@ +xLd:QnR1C4hrۖRۀ(r35<)"sˎhs`pJ1 <2Ϫ%նyۼd-D gR&BDŽ R`}GXr:ŮGU*SE#"CD%NMۗݣ'30e[ ~˳8JSU02dXce*JR Qgؔm](svŠxx3 ]NFA~Pa[݃Z]ZOX``ƚ3|wjLʼn?9GyFg:JbD]~qEbS=HNlr> endobj 169 0 obj 821 endobj 171 0 obj << /Type /Action /S /GoTo /D [17 0 R /XYZ 72.0 720.0 null] >> endobj 172 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 680.124 180.538 689.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 171 0 R /H /I >> endobj 174 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.194 680.124 542.194 689.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 171 0 R /H /I >> endobj 175 0 obj << /Type /Action /S /GoTo /D [20 0 R /XYZ 72.0 720.0 null] >> endobj 176 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 668.124 205.653 677.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 175 0 R /H /I >> endobj 177 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.03 668.124 542.03 677.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 175 0 R /H /I >> endobj 178 0 obj << /Type /Action /S /GoTo /D [23 0 R /XYZ 72.0 720.0 null] >> endobj 179 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 656.124 200.66 665.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 180 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.202 656.124 542.202 665.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 181 0 obj << /Type /Action /S /GoTo /D [26 0 R /XYZ 72.0 720.0 null] >> endobj 182 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 644.124 228.44 653.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 181 0 R /H /I >> endobj 183 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.009 644.124 542.009 653.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 181 0 R /H /I >> endobj 184 0 obj << /Type /Action /S /GoTo /D [29 0 R /XYZ 72.0 720.0 null] >> endobj 185 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 632.124 221.2 641.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 186 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.06 632.124 542.06 641.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 187 0 obj << /Type /Action /S /GoTo /D [32 0 R /XYZ 72.0 720.0 null] >> endobj 188 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 620.124 205.1 629.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 187 0 R /H /I >> endobj 189 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.171 620.124 542.171 629.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 187 0 R /H /I >> endobj 190 0 obj << /Type /Action /S /GoTo /D [35 0 R /XYZ 72.0 720.0 null] >> endobj 191 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 608.124 227.87 617.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 190 0 R /H /I >> endobj 192 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.014 608.124 542.014 617.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 190 0 R /H /I >> endobj 193 0 obj << /Type /Action /S /GoTo /D [38 0 R /XYZ 72.0 720.0 null] >> endobj 194 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 596.124 208.99 605.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 193 0 R /H /I >> endobj 195 0 obj << /Type /Annot /Subtype /Link /Rect [ 537.143 596.124 542.143 605.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 193 0 R /H /I >> endobj 196 0 obj << /Type /Action /S /GoTo /D [41 0 R /XYZ 72.0 720.0 null] >> endobj 197 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 584.124 232.88 593.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 196 0 R /H /I >> endobj 198 0 obj << /Type /Annot /Subtype /Link /Rect [ 536.977 584.124 541.977 593.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 196 0 R /H /I >> endobj 199 0 obj << /Type /Action /S /GoTo /D [44 0 R /XYZ 72.0 720.0 null] >> endobj 200 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 572.124 236.77 581.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 199 0 R /H /I >> endobj 201 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.916 572.124 541.916 581.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 199 0 R /H /I >> endobj 202 0 obj << /Type /Action /S /GoTo /D [47 0 R /XYZ 72.0 720.0 null] >> endobj 203 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 560.124 230.11 569.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 202 0 R /H /I >> endobj 204 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.962 560.124 541.962 569.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 202 0 R /H /I >> endobj 205 0 obj << /Type /Action /S /GoTo /D [50 0 R /XYZ 72.0 720.0 null] >> endobj 206 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 548.124 197.33 557.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 205 0 R /H /I >> endobj 207 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.19 548.124 542.19 557.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 205 0 R /H /I >> endobj 208 0 obj << /Type /Action /S /GoTo /D [53 0 R /XYZ 72.0 720.0 null] >> endobj 209 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 536.124 205.11 545.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 208 0 R /H /I >> endobj 210 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.135 536.124 542.135 545.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 208 0 R /H /I >> endobj 211 0 obj << /Type /Action /S /GoTo /D [56 0 R /XYZ 72.0 720.0 null] >> endobj 212 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 524.124 200.11 533.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 211 0 R /H /I >> endobj 213 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.169 524.124 542.169 533.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 211 0 R /H /I >> endobj 214 0 obj << /Type /Action /S /GoTo /D [59 0 R /XYZ 72.0 720.0 null] >> endobj 215 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 512.124 215.1 521.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 214 0 R /H /I >> endobj 216 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.065 512.124 542.065 521.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 214 0 R /H /I >> endobj 217 0 obj << /Type /Action /S /GoTo /D [62 0 R /XYZ 72.0 720.0 null] >> endobj 218 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 500.124 200.11 509.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 217 0 R /H /I >> endobj 219 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.169 500.124 542.169 509.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 217 0 R /H /I >> endobj 220 0 obj << /Type /Action /S /GoTo /D [65 0 R /XYZ 72.0 720.0 null] >> endobj 221 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 488.124 222.87 497.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 220 0 R /H /I >> endobj 222 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.012 488.124 542.012 497.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 220 0 R /H /I >> endobj 223 0 obj << /Type /Action /S /GoTo /D [68 0 R /XYZ 72.0 720.0 null] >> endobj 224 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 476.124 211.77 485.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 223 0 R /H /I >> endobj 225 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.09 476.124 542.09 485.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 223 0 R /H /I >> endobj 226 0 obj << /Type /Action /S /GoTo /D [71 0 R /XYZ 72.0 720.0 null] >> endobj 227 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 464.124 195.67 473.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 228 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.2 464.124 542.2 473.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 226 0 R /H /I >> endobj 229 0 obj << /Type /Action /S /GoTo /D [74 0 R /XYZ 72.0 720.0 null] >> endobj 230 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 452.124 211.22 461.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 229 0 R /H /I >> endobj 231 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.092 452.124 542.092 461.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 229 0 R /H /I >> endobj 232 0 obj << /Type /Action /S /GoTo /D [77 0 R /XYZ 72.0 720.0 null] >> endobj 233 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 440.124 225.11 449.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 232 0 R /H /I >> endobj 234 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.995 440.124 541.995 449.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 232 0 R /H /I >> endobj 235 0 obj << /Type /Action /S /GoTo /D [80 0 R /XYZ 72.0 720.0 null] >> endobj 236 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 428.124 218.44 437.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 235 0 R /H /I >> endobj 237 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.042 428.124 542.042 437.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 235 0 R /H /I >> endobj 238 0 obj << /Type /Action /S /GoTo /D [83 0 R /XYZ 72.0 720.0 null] >> endobj 239 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 416.124 218.44 425.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 238 0 R /H /I >> endobj 240 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.042 416.124 542.042 425.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 238 0 R /H /I >> endobj 241 0 obj << /Type /Action /S /GoTo /D [86 0 R /XYZ 72.0 720.0 null] >> endobj 242 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 404.124 236.22 413.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 243 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.919 404.124 541.919 413.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 244 0 obj << /Type /Action /S /GoTo /D [89 0 R /XYZ 72.0 720.0 null] >> endobj 245 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 392.124 222.33 401.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 244 0 R /H /I >> endobj 246 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.015 392.124 542.015 401.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 244 0 R /H /I >> endobj 247 0 obj << /Type /Action /S /GoTo /D [92 0 R /XYZ 72.0 720.0 null] >> endobj 248 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 380.124 239.55 389.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 247 0 R /H /I >> endobj 249 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.895 380.124 541.895 389.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 247 0 R /H /I >> endobj 250 0 obj << /Type /Action /S /GoTo /D [95 0 R /XYZ 72.0 720.0 null] >> endobj 251 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 368.124 233.44 377.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 250 0 R /H /I >> endobj 252 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.937 368.124 541.937 377.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 250 0 R /H /I >> endobj 253 0 obj << /Type /Action /S /GoTo /D [98 0 R /XYZ 72.0 720.0 null] >> endobj 254 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 356.124 214.0 365.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 255 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.073 356.124 542.073 365.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 253 0 R /H /I >> endobj 256 0 obj << /Type /Action /S /GoTo /D [101 0 R /XYZ 72.0 720.0 null] >> endobj 257 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 344.124 214.0 353.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 256 0 R /H /I >> endobj 258 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.073 344.124 542.073 353.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 256 0 R /H /I >> endobj 259 0 obj << /Type /Action /S /GoTo /D [104 0 R /XYZ 72.0 720.0 null] >> endobj 260 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 332.124 209.56 341.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 259 0 R /H /I >> endobj 261 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.104 332.124 542.104 341.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 259 0 R /H /I >> endobj 262 0 obj << /Type /Action /S /GoTo /D [107 0 R /XYZ 72.0 720.0 null] >> endobj 263 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 320.124 215.11 329.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 262 0 R /H /I >> endobj 264 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.065 320.124 542.065 329.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 262 0 R /H /I >> endobj 265 0 obj << /Type /Action /S /GoTo /D [110 0 R /XYZ 72.0 720.0 null] >> endobj 266 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 308.124 209.56 317.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 265 0 R /H /I >> endobj 267 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.104 308.124 542.104 317.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 265 0 R /H /I >> endobj 268 0 obj << /Type /Action /S /GoTo /D [113 0 R /XYZ 72.0 720.0 null] >> endobj 269 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 296.124 214.56 305.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 268 0 R /H /I >> endobj 270 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.07 296.124 542.07 305.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 268 0 R /H /I >> endobj 271 0 obj << /Type /Action /S /GoTo /D [116 0 R /XYZ 72.0 720.0 null] >> endobj 272 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 284.124 208.45 293.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 271 0 R /H /I >> endobj 273 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.111 284.124 542.111 293.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 271 0 R /H /I >> endobj 274 0 obj << /Type /Action /S /GoTo /D [119 0 R /XYZ 72.0 720.0 null] >> endobj 275 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 272.124 207.34 281.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 274 0 R /H /I >> endobj 276 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.12 272.124 542.12 281.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 274 0 R /H /I >> endobj 277 0 obj << /Type /Action /S /GoTo /D [122 0 R /XYZ 72.0 720.0 null] >> endobj 278 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 260.124 209.56 269.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 277 0 R /H /I >> endobj 279 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.104 260.124 542.104 269.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 277 0 R /H /I >> endobj 280 0 obj << /Type /Action /S /GoTo /D [125 0 R /XYZ 72.0 720.0 null] >> endobj 281 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 248.124 227.87 257.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 280 0 R /H /I >> endobj 282 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.978 248.124 541.978 257.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 280 0 R /H /I >> endobj 283 0 obj << /Type /Action /S /GoTo /D [128 0 R /XYZ 72.0 720.0 null] >> endobj 284 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 236.124 201.22 245.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 283 0 R /H /I >> endobj 285 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.162 236.124 542.162 245.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 283 0 R /H /I >> endobj 286 0 obj << /Type /Action /S /GoTo /D [131 0 R /XYZ 72.0 720.0 null] >> endobj 287 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 224.124 195.67 233.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 286 0 R /H /I >> endobj 288 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.2 224.124 542.2 233.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 286 0 R /H /I >> endobj 289 0 obj << /Type /Action /S /GoTo /D [134 0 R /XYZ 72.0 720.0 null] >> endobj 290 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 212.124 240.65 221.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 289 0 R /H /I >> endobj 291 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.887 212.124 541.887 221.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 289 0 R /H /I >> endobj 292 0 obj << /Type /Action /S /GoTo /D [137 0 R /XYZ 72.0 720.0 null] >> endobj 293 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 200.124 216.78 209.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 292 0 R /H /I >> endobj 294 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.054 200.124 542.054 209.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 292 0 R /H /I >> endobj 295 0 obj << /Type /Action /S /GoTo /D [140 0 R /XYZ 72.0 720.0 null] >> endobj 296 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 188.124 192.89 197.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 295 0 R /H /I >> endobj 297 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.22 188.124 542.22 197.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 295 0 R /H /I >> endobj 298 0 obj << /Type /Action /S /GoTo /D [143 0 R /XYZ 72.0 720.0 null] >> endobj 299 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 176.124 212.33 185.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 298 0 R /H /I >> endobj 300 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.086 176.124 542.086 185.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 298 0 R /H /I >> endobj 301 0 obj << /Type /Action /S /GoTo /D [146 0 R /XYZ 72.0 720.0 null] >> endobj 302 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 164.124 228.99 173.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 301 0 R /H /I >> endobj 303 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.969 164.124 541.969 173.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 301 0 R /H /I >> endobj 304 0 obj << /Type /Action /S /GoTo /D [149 0 R /XYZ 72.0 720.0 null] >> endobj 305 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 152.124 192.89 161.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 304 0 R /H /I >> endobj 306 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.22 152.124 542.22 161.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 304 0 R /H /I >> endobj 307 0 obj << /Type /Action /S /GoTo /D [152 0 R /XYZ 72.0 720.0 null] >> endobj 308 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 140.124 210.66 149.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 307 0 R /H /I >> endobj 309 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.095 140.124 542.095 149.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 307 0 R /H /I >> endobj 310 0 obj << /Type /Action /S /GoTo /D [155 0 R /XYZ 72.0 720.0 null] >> endobj 311 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 128.124 200.67 137.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 310 0 R /H /I >> endobj 312 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.165 128.124 542.165 137.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 310 0 R /H /I >> endobj 313 0 obj << /Type /Action /S /GoTo /D [158 0 R /XYZ 72.0 720.0 null] >> endobj 314 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 116.124 245.09 125.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 315 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.858 116.124 541.858 125.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 313 0 R /H /I >> endobj 316 0 obj << /Type /Action /S /GoTo /D [161 0 R /XYZ 72.0 720.0 null] >> endobj 317 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 104.124 223.44 113.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 316 0 R /H /I >> endobj 318 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.008 104.124 542.008 113.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 316 0 R /H /I >> endobj 319 0 obj << /Type /Action /S /GoTo /D [164 0 R /XYZ 72.0 720.0 null] >> endobj 320 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 92.124 227.33 101.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 319 0 R /H /I >> endobj 321 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.981 92.124 541.981 101.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 319 0 R /H /I >> endobj 322 0 obj << /Type /Action /S /GoTo /D [167 0 R /XYZ 72.0 720.0 null] >> endobj 323 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 80.124 227.34 89.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 322 0 R /H /I >> endobj 324 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.98 80.124 541.98 89.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 322 0 R /H /I >> endobj 325 0 obj << /Length 326 0 R /Filter /FlateDecode >> stream xO&G}Zs҂d; x!䴈!ɖGxo^Yd>q$_ܺUOaDa;Yu|?m0??vwO_{t?m?zͯ?lOo?cɏo~p9or{;_}οc_|D<il׿v?/?Gضmqy/_~x?s?}y<O/o>>7?&ocG=ÿ;Vo??_W|?|kq~B|O>omnTOzHAuNLLldȲe'N,;Yd9r$IEEE%&&&...!!!AAAAIII,Yej;uISSTFuPM,,,K,c26],c2vC,82222222ɲe#F,;Yvd9r I,'YYYX&enbX.ebX!yeeeeeeee#F,۷:y~:ގ/q`/۟/|uJm^׽N6NuIQ=^E@T A,YNd9ɲȲȲ8882222222ɲe#F,;Yvd9r I,'YYYYX&elbX.ebX!qeeeeeee#F,Yvdr A,'YNdYdYdYbX&ebX.ebXAAA4I$}>IsO'i'm ϭ덫aoq|8>N  z_>>x;=6a{f߈H=>:R߈HTwKN,;Yd9r$I,,,K,M,M,M,],],],],C,C,,,,,,,,,Y6lr{\zH=6NuI=dYdYdYbX&elbX.ebXAAAAAIII,Y6dɲe'A,YNd9ɲȲȲȲ27M,s2w],<2̃,,,,,,,Y6ldy}۷Cykx>W^^CƟ˿|s1'P˨[ۈj%uzJ=v!ܨ;dYdYdYbYRfAfI-k!k%5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$""5̒Z,0Kj\,r >r & $$$F,Yvdɲ A,'YNdYdYdYdYbYRfAfI-k%XadddddddȲe#˵cn;SE s[mu]βoi?7/_~Qڄnh^׿nq1:FzPMRO׌zH}>6ITwKI,'YYYXCR:*XCR: !ddddddddȲ4 $uPݩ.&SIꤚ,,,,K,!TrBzuUj\PuUj LLLldȲe#N,;Yd9r$I,,,K,!TrBzuUj\P>rB,,,,,,,,Y6\C_ޞD=fd\5Z]^gdۛuF՗}˱u+vk?yy]l뺗dd(uzJ}>JT'Cjd9r I,'YYYYX[H-Pb^n!X[H-Reeeeeee#F,Yvdr A,'YNdYdYdYb^n!X[@zb^n!Reeeeeeee#F,;Yvd9r A,'YN,,,\/Z,-r rC,-& K$}>IsO'i4yL gVe>xjs~qu)nbGE ^{9T7I|‘:Teee:**XPbJ-(ԇXReeeeeeee#FmYmϽnyZ>(ay(rS-S-S-R]G)'utrR]G)'u|TTRM5L5L5L5L5M5M5Mj3fTvS:Lu0iT:\*Nx)夺RN)Lj3i^sc/ݯ/vx]8.b_>{}kڶe],:;[߫z/nyQ~>:R,aTS:Mujjj:>K9:BK9CRnaaaaiiiTzl~uڷYwˋqX,TTTTT[Iu|'uȖrR]l)'uЖrS S S SMSMSMSmLj3nTS:Lu4iTTTT \Iu|'u rR]p%?HuĥTTTTTTTT6SmfKcL=vel[qp^L=M%e}7_|_^Sۜ۶b}2A^qj?uPݩ. Sqj,\/r5Z, C,Kj LLLldrm|m<,kI"!yZneeeEkE9);)夺\rQnaaaiiiT6SmMj7aTNS:MujjjrQNk%NkE9))Lj3վ#V2EҶkhbʵn)&\ǸO͋1|;u|P~~%<,W"ʛ夺N}RNܧ;:)A'Lj3nTS:Lu4iTTTTAPIuTAPIu urS S S S SMSMSMSmLj7nTS:Lu4ieeeE (夺J:J9:J6Sm[mc2VomZo^?$JN3LLj3fTvS:Lu4iT>$JN38(9>$B~LLuVs&SX_0~1֏amm5{Y~ygh/.2x7ay(?Q,7nTS:Lu4iTTTTPrR]CMIu 5)'5Ԕ 5ԤTTTTTTTT6SmK5o[FfyX-/ay|R>wrS-S-S-S-R]CMIu 5%Iu 5)'5ԤTPrS S S SMSMSMSmLj3nTS:Lu4iTTTTPrR]CMwR]CMIu 5%?Hu 5)70004444f-fWc|Nuj~2O,~v_翣/N~[ɛ[A{TS:Lu4ieeeEFFFNNNAAAaaaaiiiT:Y>)i|n:MLLH56RTc#I5vRTc'8H5RTTTTTTTT6SmMj7aTS:MujjjjnFj;Nyj6S}§ۤqcq.B%߫_^'ǧ~_־jjbGG\Ĵ|P<,[ ɛnTS:Lu4iTTTTזGIumyTזGIumy յrS S S S SMSMSMSmLj7nTS:Lu4ieeeEk#夺m3jjjjjjjj3fTvSMu0aTNS-S-S-S-R}fx''էm7TIi᝜TM5L5L5L5M5M5Mj3fTvS:Lu0iTNS-S-S-R}fx''էm7TIi էmwrSRl)m6[J-͖fKim2 |fps_/e^UmZX!)F?yuf6(?|HY>)?(7ieeeE AIu]!(N AIu]!H9+)7000444fT6SM0aTNS:MLLHu]!H9+%Iu]!H9+%?Hu]!H6SmLj7nTS:Mu422"u 夺TBPTjjjjjjjj3534z;WU~p3H˟c۶O//[_L(֗hɋ%Zf|}<-/ђ0aTNS-S-S-R]{('յGrR]{('յGNT9M5L5L5L5L5M5M5Mj3fTvS:Lu0iT=r#'Nk夺QNkLj3fTvS:Lu4iT=r#'Nk夺I~#Gl)m6[J-=}ٶ=2hͪqb>ʐ7[_>.>>}{Z{^,{d7[^7'C,ij7nTS:Mu4222"յrR]{%IuaTFIuaTTTTTTT6S=kY_gm(?b)oOχXAKyXnTTTTFIua|'յrR]{%?HuaTTTTTTTT6SmMj7aTS:MujjjH9=H9=0RnaaaaiiiT5x{pǹh?e{] 4-|O}Q.:n8{z~zW>'it<,TS:MujjjjQNk'NkG9Y夺f}jjjjjjj3fm~7'c<-TY夺f}鷺f}I~QnaaaiiiiT6SM0aTNS:MLLHu('5룜T׬rR]>R]>M5L5L5L5L5M5M5MZ;iؿXǶobݱ]L_E_|?_̲|U͋+sn>ֽ̊uIV|Pn<,7ieeEFFFNNNNAAaaaaiiiiT6SM0aTNS:MLLH56RTc#H5vRTc'8H5RTTTTTTTT6SmMj7nTS:MujjjjjnFj;Ayj6Sm-kl[SL*?eݱ__s_/N'>;=o׷ٮ˛|P~>SQwMu4ieeEV=IuݪG9[('u[(70000444fTvSM0aTNSZZZZnգT׭z鷺nգT׭zUrS S S SMSMSMSmLj3nTS:Lu4iTTTT׭zUOT׭zUOT׭zjjjjjj͖fK]i#ZB#Ǯw\x=|f$_)O'roN^DN,:O'rw[nTNS-S-S-R}Ii"w''էܝT&r7T&rwrS S S S SMSMSMSmLj7nTS:Lu4ieeeEO;9>Mn;>M4DNnaaaiiiT6SmMj7aTNS:MujjjDNNONO;9>Mn>MjDNF^OׅG\LϿbM>7[z7xl㻸nu~~}^r][&5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$"""u9b&zu1b%Z,ץdReeeeeee#˵j5gc޶=u.&^ /^wm[\^ ֑Z^G5Au^nTOY=b8X>A-#zC,& $$$F,ש5;:'yX-/ש<ɛu*OTTTTT$'ǩTSIN9SInaaaiiiT6SmMj7aTNS:MujjjcN%9>TSIN9>Tjjjjjjjj35غbl~9:Ŝ:~⛿|o y}UK[;?hb|L|L<-i|LTNS:MLLLHHHHIII8H8H8H8L5L5L5L5M5M5Mj3յ8u9n%u?nTONuR=A5YN,,,\7J-ebZ,c8r$,,,,,,,,Y6ldɲe'A,Yd9reeeenbX&ebX.yebYYYYY&Y&Y&Y6|~۷4z$:.b6>cze8AFwˋۍTNS:MLLLHyv#';>n夺ڗ|'u>夺ڗ u>Lj3nTS:Lu4iTTTT{rR]SN}R]7SnaaaaiiiT6SMj7aTNS:MLLLHuO9%IuO9)'uG?jRl)m6[z ۱m{5E]8] w?_p'_Gq1o=o4[㾢|.Tf|`<-l:Lu4ieeE;IubG9[('u[(70000444fTvSM0aTNSZZZZnT-v鷺nT-vŎrS S S SMSMSMSmLj3nTS:Lu4iTTTT-vNT-vNT-vjjjjj͖fKi}Ƕ4!{l[^:[[_o~^Wu|?nyQ;y|R>Lu0iTNS-S-S-R}w''է}7T6Iisߍ է}wrS S S SMSMSMSMSmLj7nTS:Lu4ieeEONNOF~;6SmLj7nTS:Mu4222"է}wrR}w#IisߝT6IisߝTTTTm6[J-͖fKOduawqtptevovuWl7'i|`<,7aTNS-S-S-R]('յrR]('յOT>M5L5L5L5L5M5M5Mj3fTvS:Lu0iT}'Nks夺6QNksLj3fTvS:Lu4iT}'Nks夺6I~Gl)m6[zwmB~s߶m#~]2~Ο~U_ŗտVź]Pݩ.ԍ) BTYd9r$IEE%A bB-! bޯ| & $$$F,o۾W撇|M$oOOTTTTTS?I1|'OrR}L$'OrS S S SMSMSMSmLj3nTS:Lu4iTTTTS?I1|'OrR}L ?H1TTTTTTTT>ve' \q0bꗿ_.~-bM"/Vr3KTwKԍjd9r$I,'YYYXR: .똯bB}:+5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$""uWj\xuWj\gx>r,,,,,,,,Y6ldɲe'N,Yd9reeee:+XSPbJ-넮bJMAA4I$}>Is]}ujb^~+^V߽eA1yX-/ʟ໑7'TS:Mu422"+n|;>_w#'+8?H 6SmLj7nTS:Mu422"+n|ߍT໑||ߍTTTTTTTT6SmMj7nTS:Mujjjj|7rR}T໑|7rR}Fnaaa6[J-͖fKi+`|sͿ|_~0 ϯ[[Egbf|얧YwMLLHu ('5|'5TLTrS S S SMSMSMSMSmL-ڶ9NwA,˻E<,ojjjQNkF9!夺``jjjjjjjj3fTvSMu0aTNS-S-S-S-R]C0Iu $Iu ('5TrS S S SMSMSMSmLǹ?dVo5FUW!1.f`/?8}ͷ@6*X2X&%}uR[^wSMu0aTNSZZZ8C+9>NB8I Ajjjjjjjj3fTvS:Lu0aTNS-S-S-R}Tl%'A[IqTm%70000444fTvSM0aTNSZZZZ8+9>B(8+9>Jn6[J-͖fKiRlnnLd?b]̋c}=nb۷ס]ȱ^۱Տ.f.|PMj7nTS:Mujjjj걑걑걑걓걓걓qqqqjjjjjjj3f7-亮7'c<-TFjl;NjAqjjjjjjjj3fTvS:Lu0aTNS-S-S-R͍Ts#H57R͝Ts'IuǕrRTTTTTTTTO|Ug~x,uٶϿo>>w|~qx̷|lk*Xw5|R^(yZ>(_ <,k0D9;夺C QnaaaiiiT6SmMj7aTNS:Mujjj QNk0$Nk0D9Lj3nTS:Lu4iTTTT`rR]!Iu ('5 5TTTTTTTT3yeu\~.P/_Ͽ] o1/ֿ;k(ݶ _Z AB[^k-$o4iTTTTT@rR]9wR]9Iu ('5TTTTTTT6SmLj7nTS:Mu422"5T@NT@rR]9R]9M5L5L5L5M5M5M5Mj3fTvS:Lu0iT夺rQNk 'Ak Gl)m8|}̭kmZlWr~;2X'}-dޝIE28wߖ]zvwٽGozG1nzǼ1oz̛uӣnzMF{kxxyqyGq#ozMnzGozǸ1nzǼ1oz̛uӣnz=5cXS[~cu|7y|>ϛyzUU1ޯ/$x]'?|?~,b{X?Ȍ|X6ǹ_׽<:%'Fz] uR=^7DCM,YNd9ɲȲȲ8882222222ɲe#u 8:K%˻EZf|]-yZneeeEjlNjAqjLj3fTvS:Lu4iTFjn;NjAyjjjjjjjj3ױ:f['b~_/˴Umֲ.>ǗY h^NNuI}>HݨRO0R'C"""˵Hj\rm.Z,F#rm:,,,,,,,Y6ldȲe'N,Yd9r$""˵Jj\ۢrmZ,v)\[& $$$$F,Yvdr A,'YNdYdYdYb6tI-ksb6zI-kԇX `Reeeeeeee#< f:2a/2/NwyOOg_Vex77]&n&nzGozǸ1nz̛ǼQ7=G{y|<;~=got<>q#nzM7=Mvӣh7=M~ӣ7=Mqc7=MyӣnzMdz<>xvdz7q#nzM7=Gh7=Mvӣ7=Mqc7=Myc7=G{y|<;xdzϛy|7y|>>;x{|veY\2o}0zX~yqtx;Quvj4B|tQ|Px9#ay(:Lu4iTTTTT|rR]wR]IuMr('5סTTTTTTT6SmKunۘ(I-Os<,7ieeEk E9;夺VWjjjjjjjj3fTvS:Lu0aTNS-S-S-R]6Iu('5T\NTהrS S S S SMSMSMSm8`ث6h8`Xeai{N 5[/mOm^]4[lg>/L'֓)yZ>(_O򢼛j7nTS:Mu422"c#c#c#c'c'c'c' 00004444fTדf;o^Gi|=iJwˋ)yTTTTc#H56RTc'I5vRT 8L5L5L5L5L5M5M5Mj3fTvS:Lu0iTFjn;NjAyjjjjjjj3fkN94 \sʽm{\0뜲oF/˯ꛗMmj0[N,\8X:*~lɛI[|H<,'uӽ;)'u=夺)?(7ieeeE0'夺sJ:I9Ü:I6SmLj7nTS:Mu4ieeE0'夺sJ:I9ÜsRnaaaiiiiT6SM0aTNS:MLLHu検TaNIu検TaNR]9)70000444f?lQ5&ͤg9׍2 .f˗_4E+f\|T.n?pc]{<햧 ay(?pQ,722"յsrR];('յsrR];$?HuTTTTTTTT6SmKu^AuՍ)ܩNɲȲȲȲrmZ,F1w\Ĥ˵ILj\[Ĥ& $$$F,Y6dɲ A,'YNd9ɲȲȲrZ,>0w\˵ C,02222222ɲݓvЈɹm3ϰ#~/`}r%yZ>(_,nyQX7MLLH1T,I1T,R} $70000444fT۸?&X1łY>) OMLLLH}9O;ϴ '>ׂTTTTTTT6SmLj7nTS:Mu422">>T^T_jjjjjjjj3էضo|]?O$ endstream endobj 173 0 obj [ 172 0 R 174 0 R 176 0 R 177 0 R 179 0 R 180 0 R 182 0 R 183 0 R 185 0 R 186 0 R 188 0 R 189 0 R 191 0 R 192 0 R 194 0 R 195 0 R 197 0 R 198 0 R 200 0 R 201 0 R 203 0 R 204 0 R 206 0 R 207 0 R 209 0 R 210 0 R 212 0 R 213 0 R 215 0 R 216 0 R 218 0 R 219 0 R 221 0 R 222 0 R 224 0 R 225 0 R 227 0 R 228 0 R 230 0 R 231 0 R 233 0 R 234 0 R 236 0 R 237 0 R 239 0 R 240 0 R 242 0 R 243 0 R 245 0 R 246 0 R 248 0 R 249 0 R 251 0 R 252 0 R 254 0 R 255 0 R 257 0 R 258 0 R 260 0 R 261 0 R 263 0 R 264 0 R 266 0 R 267 0 R 269 0 R 270 0 R 272 0 R 273 0 R 275 0 R 276 0 R 278 0 R 279 0 R 281 0 R 282 0 R 284 0 R 285 0 R 287 0 R 288 0 R 290 0 R 291 0 R 293 0 R 294 0 R 296 0 R 297 0 R 299 0 R 300 0 R 302 0 R 303 0 R 305 0 R 306 0 R 308 0 R 309 0 R 311 0 R 312 0 R 314 0 R 315 0 R 317 0 R 318 0 R 320 0 R 321 0 R 323 0 R 324 0 R ] endobj 170 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 173 0 R /Contents 325 0 R >> endobj 326 0 obj 16243 endobj 328 0 obj << /Length 329 0 R /Filter /FlateDecode >> stream xUn0+h5MR+s!h=AX-DjPfvrJm9yo=: (~g ܠU0p>dH{ vrw7hkjOa|Y8 @QBD\.̇b 7E峆:_ȫ-,~8D.UC3_HdlBCPc}\Xϣ8QVƇ:?^Ϗf){E$£!*mܷE}vV4xU^3Rq {zkA|j뽾gyo2Tq }`U+%qUQz 2#dR)n_Ҫ3Ha4 "Hgd9};ģ ˮZ[SJ  "O1,roQDkvbOt1-Mt2?$3I/RNް~+YģU"e)հ/sY4_m2,Ȱ.BiAKZuj]o/tDZv]u9jkkKۼ1qؾrA;ZD8sFeO=.a8vl9}\U2Qw΃ne>(d8<;t˦o4Ehցbb۞̾RY2֛.Y { 9' fc?fE@eK``u"$1ஜ8mc endstream endobj 327 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 328 0 R >> endobj 329 0 obj 796 endobj 331 0 obj << /Length 332 0 R /Filter /FlateDecode >> stream xUKo0 W"OG;`bEb+Wrmym(?4z (3x<O} zNצWw:Qxv~V~Kw] rU,d\+ePF@k{0a;ll3$)UU^C 1uNA';:DxMzڜ!Z{eywD-b(a5Z[َhǶ_ɢX6oQR\f骔8~m8`i>^#eۧ(^Q> endobj 332 0 obj 801 endobj 334 0 obj << /Length 335 0 R /Filter /FlateDecode >> stream xVKO0W$Λ[PJ=BbX<);% ]bx^|a@y1p:t"?Cڇܜ,x‡=5tJP4xt讻97)9WS8"8 KF$B3"+]oXP5l۪6u-Pº*PGH_k@qNHIx.7g`4 qwG.5M:Pfqu42\C}XӐf1 8DvvE#c ubM{,ދ[2)&sp_'e6GWI(SZl*%<<#:'GM]BYkG$·G䀘}S2C$DY GiU8 %%i|J KE 5b4y՟;ţ endstream endobj 333 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 334 0 R >> endobj 335 0 obj 849 endobj 337 0 obj << /Length 338 0 R /Filter /FlateDecode >> stream xVn0+ EknR1CD[D84ߡvےS*hGJOKsQf=u:v*f@@jVMKxk/+(|EgkoI~c>\;(6clF 82;\[uG*r}~"@t@hf{Ǧ mV61{[H+x": SxˤjGY;h&F=>K=TRtڕ*~%>M|9LPʰІ/C9Säֲ]#l"CM0A'> endobj 338 0 obj 820 endobj 340 0 obj << /Length 341 0 R /Filter /FlateDecode >> stream xVMs0WHQ$;i3i!d:KeH]}X2ҞR[iޮ OE.#/7ѓQ3gΕf&ANFla7F?")"Ln_7O*z?nSD .D Ŵ(˲bTдARG[1k)~>NŔFwCM҄$<6^ڸι-Ě}A 2fq8oP1xpq0 ivo,]Թ=1scB5gI붓goex(aј =|A&ʼnfkhh#цh]ņwKÞ<Њ LN βLLBVChyBJ2\XOZ]-V8 0nwjZShZH2!1a_(0:6yW%dQBҡ'xB0*j-~/L{h0 3ZLaTZ8ېh`,9ҕCcx{LmJŕwHcnx*5{򱶕N1(e^.zo}%ΫPIqv"4G2WҮ^pGx_(!Q5vvfnjMU2r(НtjŻQ*~J8A X ߾u B=Jy]> endobj 341 0 obj 848 endobj 343 0 obj << /Length 344 0 R /Filter /FlateDecode >> stream xVKo8WVH|H[]i P [t,ĦT=ߡ(#)=e {QDVDx xرQQIr_}G?"g\k޽_7OУa1@ȧFqG!G,?6g}gjo>6j_g?f辵u3d6wB*[ou_cYwb xSE!8pp4*@fC"Z G`=:G0cB9tE}wWNj88$fB9<2e1uY8!`˘%*T>JDE]z[Jegõ,UTaʪOFȢ2 Q2Sv'IKn^7 SEYf*5y-UvmZz ;0磄:ΙN։W@H-&IJLo~c#0Ӻ$XkoP(40bkowc+˛ҲpL,KU&),abDIyʤ#"lY_,wNH',<^[' $Sm'p/5cgtn:e~֑*,nmkb׳qpUАJ?iQFb y㘩j6nv@3M_5VH!9v O #ë,k6 mBǼSCp 2y{  endstream endobj 342 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 343 0 R >> endobj 344 0 obj 953 endobj 346 0 obj << /Length 347 0 R /Filter /FlateDecode >> stream xTMo0 W4}ْrW0 Irj;GIvbMSfA||;h+`^A iJRJ~K܄ n# ; >C3a5;{~K1# žESn&`?n/>Upu\sy7%1\FPCtiƑ {oH(=1;5'Gy= 6d1&?>Z0$gn } Qw|HjtZƘ,L6u3/;b@ *dcG;ZR/3!!@U!%lµoxkKخspe30x$?hf4MSMS4=ԾRj5-RaO.rv1{~.NP/e <45Z3`+l1KQ6>ͼ.6^S T Xːz4AxK2}9꽅bzvtp= endstream endobj 345 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 346 0 R >> endobj 347 0 obj 519 endobj 349 0 obj << /Length 350 0 R /Filter /FlateDecode >> stream xTMo0 WQ֭vZ;4=xMVߏ[Μ '~vH|t>w(2:;h6_$kǵ΋oW#<_8b=(䌧J42),vpuSiS=ܔnf|[I.6BgA-D!W> endobj 350 0 obj 634 endobj 352 0 obj << /Length 353 0 R /Filter /FlateDecode >> stream xWMs6Wh ~;'7;S7g2 ɘPP_M%=G[`o@"7 Wk(e(L)N0qj07YgתY'ӊ̷?zy|vW}(Aۉby%!pr}z6;tlN]xVQHPÐPg)}6G|hCbbv>M"fh1ϋu Wq7 ~Yi!!Ɣꢎ="Fp g/` !gkE}{+NKSP0!!EiLc܁C)FB@A3GJ^>rn[S?ѼPtFJJp$wP5_) ljm{ܪN O1-M7fy,8"42-yñ] cMH=05m͎?rUJqe8bصv0tSi!uF#Ԃo= 5E7O*^=ORQJhd8vZ\,:<_ f 1߈NPxJI4}d}+u.1r aL%K"__ضuݞXL&1-lwWx2EɼdJE=y ja.b$ #PxW̰/U204 C~kgEzC9x6l+Tƒ}Pyۺة`b+V@@pD~bY': t}> endobj 353 0 obj 1256 endobj 355 0 obj << /Length 356 0 R /Filter /FlateDecode >> stream xUKo0 W޶uÀbvh"MĀgNO %'~T?X$xn| $ hlߵcW 5 ҀbK@_Oa|0 eDZkC- $[p%p{-KKZ6]Q0|1F7U T[P P>~)n:׼BjSGyОe!4A=vGF­R*>Fԗ[EEC #ۇTRXlܥ%,$|yCr0hSgf"*FY`-5l|tuwvw~&5m<) 2e haH+qWXw 3N$gg먀sІXFsiuVsfj'XUS]dOJ#( UGC ҆ةr]gn ח[uΑI{'_‘;k^&v(^2/$hwZQxY;y)-,9<"H \l&[MUB endstream endobj 354 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 355 0 R >> endobj 356 0 obj 711 endobj 358 0 obj << /Length 359 0 R /Filter /FlateDecode >> stream xUKo@+hWv<#ЦM^(zQD^4iO)}3ÀL߂CwAA\=؃=);/-nbCuΕU_WOa|\9.=`VQ"FQB"x/=,.lQE^/oa0FWBgt͞lx.Xpޮ}kt{ 'yБYL'U@adϺkۄhΈR* Jnˤ\N821 }!qN31q=RjC_IJhkؗ*0͛P#+\?EYzfd`'Q ^Rϳ"˿Wg#.e8\&χjec^DЍgOv͛;^Tj$xÐ0wܨIiJ[c[I|0X4;U}Q5qFu^nJZTֵʷ/2Z iLrÀl0hƵ =1U:ֺ6Mlo>̤ub#=|/qSV̬z5f\Wq<oG]XS}+ŏZ*sxjDy-7Ikcs Q Ta]_.aAס1fR;ȴi+I:D-ϞOZ'0v awYċǝUq^ ~2SiҡxWź)!)$YU(+P lJ5^W_[n endstream endobj 357 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 358 0 R >> endobj 359 0 obj 796 endobj 361 0 obj << /Length 362 0 R /Filter /FlateDecode >> stream xVn0+1M[6z@IP (GK}"X43,oǀwa*ʽgc8$܇ a77O{>{O{Nõ_Q~B=?gf](,7C$#,( D|8,sx8P:yѫ:+tu/ާ"@tBhH;_Õz`m kCmnri cGq8dƻ&?N %B2߹eohr`pJ1 ܪQJóq*;$!HN82,?$R ȹ:SL:ybuUUuW 1B yMV)tC &mQA`ڢltsfzh@"FCW~6\m xxLDR$s&Ot]#2Ru+t0aVdd>&ժvYrƉRtʇ ^&uS~9?(!wOU)CFg/MY8|wqYgf-NY(|G 6$Fe>+O"Ea mD< y r}jf !NNs|m泙Šz=(Vvqm6yDL[/2d3褤xU4}l33eWf&Ȑ+;d:; 0ޱQq碋ζ1t-Y:q>RW3z74(l&΅ PA,lbR$Lwe8 nV)ev\XϤLoQd~am endstream endobj 360 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 361 0 R >> endobj 362 0 obj 817 endobj 364 0 obj << /Length 365 0 R /Filter /FlateDecode >> stream xUn0+r(-E{(D@IPm (GK}LɊ8~ P."xu 0& ^akO~pqP>h|Nu7(WOaOW!0 jdIđ7JZl~ >G CG] ] t`BI-#"x CmM~u8֓}С :4)@ ɓ^hsfpJqCxT2UOJeU:%1HN82dppY%W/#q &+4+h6y ,5 +^4rhHyqd.(\ql]dfF$QlD<+0˺r{sw  zWB> 2IңsV0a-2q~u׹q"94> endobj 365 0 obj 720 endobj 367 0 obj << /Length 368 0 R /Filter /FlateDecode >> stream xTMo0 WFQe嶯-kb'5mlݿdɉ:Nm)Q~bнWhC(S 2.H8)(!lނ3a[<7fgv{K@qm }ώfg0[Z.2cLJȸ$Y * \)*[_ 40i[CKՙܧy+ Fz- > >E 'ؓ<@,qVCl0 :[BE'#kwVe䳊C=ԒϷ@od'!+c<B>I<wD8A_fႃܕm`^C]mIW?~7##=qܱ!yO߶zK5#}r",؂ɦ KRxػHj_`ex%h7m=^e Ħm(:˸>pǼ^lG/k3DxBQuFM|LA 2j8ekb endstream endobj 366 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 367 0 R >> endobj 368 0 obj 516 endobj 370 0 obj << /Length 371 0 R /Filter /FlateDecode >> stream xTMo0 WF}[v`I r;['YrbNSf;@z||TU0rX)B'$ JHkʛ/q3%OE6L{!gGX3ZC-Zi܆ìۋkwn/a|  i[CKՙVA@IFz->!I% 'ړ<@,qVCal0 ZT-{bޓVEJC=Z~oב@rʙ@dl$EPL'k:\2w k˗Տ.Ȉ@gXvTkLǺT;Z/4RaI-l*p^&%R|#E(Ku&5~2> endobj 371 0 obj 516 endobj 373 0 obj << /Length 374 0 R /Filter /FlateDecode >> stream xTMo0 WQܶu)QRZ6QI9D=~|$g]d" zA  #!lC(쩁!-OpiH umܛ Ώ>8BKp$Iȇ"t 7J]?55:R#߼HP4ksh%}m8 hK;m]E׹nu8qYd\PH!g咝tr IƇ$0ADӳz:5I{!LpS B9Ð&)Ѕ8_ n*m~R`1 _o\HT52#^o劘2HdQ2HG0˝ D-K?-JY,&s?drMͥ0aQa?Jnj$.Vwo,1w 2Oȋ ٷGokɇzDrzxSM+jR ˒FyjcQEM◩&it໪*@!\43 endstream endobj 372 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 373 0 R >> endobj 374 0 obj 571 endobj 376 0 obj << /Length 377 0 R /Filter /FlateDecode >> stream xV[o6~ׯlS)ꞷnK[4V*Yb!T^$Q)sCCJ0*qJP8桘 ?20B^5!.K  =aF`q08 [+\{緍}<6DQ^i(q}A}]2AgZOz3C{@tjPT Ǯjl! |>YUB_s˥t,-T?6.qM׏}=I'Kݼ<^AE' KN, #5mGH˲** -VZ#2.E1ؠ\ ɔpKQsh32`IX')) endstream endobj 375 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 376 0 R >> endobj 377 0 obj 1006 endobj 379 0 obj << /Length 380 0 R /Filter /FlateDecode >> stream xVo6_9@ʑw޺--:l؀d{"%v$wO@wGH~("j)Cy}e ( #DBTQ5r6Qћأ#,#wVOУM(A띅(&i&t1կm#WM.˶Wwv}OѽA?ƪ' a@NWF0r+U}-=,UcƯD:]̃4igPM I3Db0d/86Ì )!ٍM}s#]'ܜ$(`Q \0 I}pȠ^0+.A׮^(:.h׵5CHS>KgGQ4kM{T((pùd ~. 7f% C ]7}=5o 'LqiC(=pXxNAňܣ;_eUh8o,!$VT+C\j6F%$ 5BέUfI\o۪̭jۧ`yr+ml>_zm};Lcn- !Ydgc3Ƃ3Р#aBpS5Q4cd ,,!dτDg\ .DY*nX iTÆXtlHWֻ&Y) d]۬n0PH:k𣫓3p u쮕>3v*ygAd}BwwoF`ڇq Rpv{g 'J~{ta 4Dpt> endobj 380 0 obj 1114 endobj 382 0 obj << /Length 383 0 R /Filter /FlateDecode >> stream xVo6_9@w޺-:l؀dw")v$7O@wQH2e%E1"O# MGN<{z>}a08zܝ4 1z~Y{?h- O,8@lQnЧկ]+7m!Ww;,AΙaD!>=q`V*J{%RY cH<62>s497/L }ȋGz(/˞q8]TN0OS%~c[2f:Apg 1MuZsYy]ߨ<6Wτbx>_CZaRDfr2?N,K&N^%!sV2Qtۡ=FjʶEO$T/0(~H 4Xnz!h[zꪰC=sQ.>T_sf{m}U׽sfx,e !eg3vg]LŽhjqp4F2%B9I/Guƅ񙭺g$*w7EC,>/ g"’9%|+:ur;);ۢJP+c6oL_ Iثn ᔺ$uveH膺l//)꯬erٖtP1Չ8vЂq`"z:^i/\˷W^?J5nEwg°zpfu0N^[`+^ձkl D@;f}A4*p( 2?uU얉#;yG&72ߊWYh}g$jE Y\^+}\Ⱥ'P-;5$<Ӌ,> endobj 383 0 obj 1119 endobj 385 0 obj << /Length 386 0 R /Filter /FlateDecode >> stream xWo6_9@̐w޺--:l)؀dȒ#Ru(R"n$}xPF@x\h0$ ݶ 8S+~EU[scg`Lΐ@h8F̒lknylFJȵ2׮Bre4r-wfEq! .N/U[[6j:w=^烂V >H88Dɚf󶯋9 V|"AE[Ez1M[mL,۾%x8hCmY n)vstN:MG0. 4H/-߂nW nE&f}𻪮-rvBnxhiOh5|zֿ;Ν`VP\ s xH 苇Enh3z橯~d54#3 4aD oFJ5֫U/-i;n9^U^ByDp] scQg\\-3,a:4S5kf7*1Lx Vuν֞aD0O%>T4A=j:J~xW`rPL"RkZ\G˶ۺ맾LYဒ-d eW9v"P쯚ԝEfxx &}H܃i1sv\E\_?E f +@^ XjneХTc} "vN#Ըj endstream endobj 384 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 385 0 R >> endobj 386 0 obj 1222 endobj 388 0 obj << /Length 389 0 R /Filter /FlateDecode >> stream xVo6_9@Rw޺--:lXd%{$%ReO@wGH~|D$EE}d>J( A1P:B5!HlbZw/X" {ĿZ!/Gץm|~eY(ԏe>/~ZɾKo Yux˃k :]g >XBr2i+wR002j*7| CxląAQvƋ:?I4CBVSvRE Jp3> & !fhU+̋'ܠ(!>d#VńHO(MK #=o8[sJ$sB5Qr@Se(7 q$sD%Fl&>qt<o8~y7o 62a%0Zܞ-g21}%DmdE5˒3!OdOSj%̌ߙ(xS]tOqH}B f@4 [ͺ {wFR` FIn|1bzm*΄ U,Βk6킅~|(_E^H> endobj 389 0 obj 1112 endobj 391 0 obj << /Length 392 0 R /Filter /FlateDecode >> stream xW[o6~ׯl Hݕnk[46.Yc!"U7~#yl:R{-ijAiDb"MǨ"8RPء ,Vw+c~~#jkKdygI2? r ЪE9z7v%-IF! d 2~/}Gt[t*Ho D*4)2^<($~v4+YoL0nB5a1u>[ ;V#|jN2~@B rR6&T2>\!>Q>b(Ѷ耊(cз = EAٓOD%U~jS|'~© >n ֋h:zPH&8m0&d"8,p"V2u/EPS3-EE˺-^:/H)|(W^~@%$`-Z( Zo.qoy|G+6FTw3{oYSî.wr,4U $a@ @M0q,fF9l KWx_C(碫ۺ)tQ,8+@b7<ø>RK+^E;#$ݨFװ-5X=&ں+[~6 É^+;h=$<Ȥ., 2i5 J^ kuT~?^MoKݎ⬷(\ YM.89+Ky 5{;>k endstream endobj 390 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 391 0 R >> endobj 392 0 obj 1124 endobj 394 0 obj << /Length 395 0 R /Filter /FlateDecode >> stream xUKs WўI('4!AI B#=,v|/2 E<:)0Uq$B4z9ʞa ` qx q6[ ~6E:a)"c,KBPHPXp7,5\DK)߃D!MWC35u>0>x0Gm0t:q;ׯ':> endobj 395 0 obj 734 endobj 397 0 obj << /Length 398 0 R /Filter /FlateDecode >> stream xTn0+rH-z(F@qPl D;\dKNH87#}m718h2O,``w [Mh83O`r!L>Ύ`IUAطHqʍ G@ۋ\mݼj^A|*F$h(~GLqd0;e'b:)xhF>q=ʃi!dPhjFàꟹeOT;2n贌1,PO&mc~sĀTpǓ-.򨙲O+̄Ї T|+m[Eƕk9HOY,ZܷBDz\VmjYN?E.L: >{u햳̨b'+Uz,u(k5CHZhP.};>vT R/VU -ړbit endstream endobj 396 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 397 0 R >> endobj 398 0 obj 485 endobj 400 0 obj << /Length 401 0 R /Filter /FlateDecode >> stream xTKs0W19T]Io}3=t 39ęD£}h>Vhw&$'/ ^<}ȡ}S#!+l?X:< 9ߒ(kGXyCVyP)B*j(Onia/`? w5t:}%Ȟ| {mP8ոܭ)wWā{8F1&?=RX ' _eoXlsHc@Jdzz68y٘K= 3l-gBd\oc,894 q^4bO4:HԦζ,~Lࡍ:$AvHL[SKgII+e]x<6[x3.1n 5c΋^ endstream endobj 399 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 400 0 R >> endobj 401 0 obj 530 endobj 403 0 obj << /Length 404 0 R /Filter /FlateDecode >> stream xTMo0 WQmIv@M1d֖OIl1 <EjYIA$+NEP`PtFZ~ ;b Wr @B\|K#.GX)yCH#eJk CZէ:Mk3W~0FӾB38hv= r f֓&JԈ(>a'ͳǟmc[DA)gNNPaDŽ\zԈf\0mnm`^VuP-зc͕/ǎC"M;Jnl6Uq HϞjv5;>1*}WmikibMi-Li+kM)DtlΟ:rib ] lq.skXW/P~m=bӋuEGwjJ endstream endobj 402 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 403 0 R >> endobj 404 0 obj 521 endobj 406 0 obj << /Length 407 0 R /Filter /FlateDecode >> stream xTK0+9έChzج4! RbX jwy8$)$731x߻E}a tPǰΎav-\&4=/3:W@+ǵhwz6ч4zIF6D&wqHtM]6ya3_"P4ksh%}(6Kz aG (<\s׋:(*'/}4 J_K. FD7 ­ AC)u7iݔ?|D4HN82L<<} 1XDȷ9 fPV2khDfQEkN(IUAs_mQ@5g3'peW{+f~7=81DuǼ6}fZYlH1 砥}+lѴ&L84)U^] '3J6a CGʚCe-5Kߵp󬮳Oif|-0m a^9*,3pWu2L\n}(GaaW'#P,\f endstream endobj 405 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 406 0 R >> endobj 407 0 obj 581 endobj 409 0 obj << /Length 410 0 R /Filter /FlateDecode >> stream xUKs0WfRUJ'a&2xbˉ%J__qLS Xەy`qJaS{OVG GVF@DCC@'0N갃[{{wʘVu7wa}^z/C EOQ@I4M"T(,k}id.|#ˆ=,xߖ'|B뮇B7g~1}b|j,ڮotJcjkSe'gs4x,C/E+ JN!NN){5E]ہb;>\cL1ƾSإ^,Kg23HEt4pD(E1:_Q'1x`-g릂P7b`mɷaQ58{QZ9S׌K׈jc0EQi6Uώ3X|l@U&?4$&W&6m㭝͌̕G3=C{\[͏:;+vޙͦTG͡.·bYO9poV*ڦp2kh5zEC@M^pcN7(Zv<ѬlX͑]JN,2{ȱ\04AHD?tȷK.|`?q6/zgʼrPOmQ/_ dX›ci70ʪ52HFT6u){[#Ca RW߹; ^[LrL endstream endobj 408 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 409 0 R >> endobj 410 0 obj 787 endobj 412 0 obj << /Length 413 0 R /Filter /FlateDecode >> stream xTKs0WfU?$n}h-J w{y߂ #F`4ojh(4s柠f'(ħZm23ۆ ?9Bq(}ʸjqQ$x?ǣӿrLn0% Wcgu ]!E0)c ނً%x 49K.R7t*J(W:-de%Y0˘rCu"(cۉĝ}]Gh1)/Wd}V*Wlj-bVf;{E(̟ZRS@%@1H.::<>HM}@LE?tpP>zQ;KLHk­`H5V32s9-xy* uױS/Ȕ*ugʽZތ/tv#lhxִJ %6!/ 0%TMkY endstream endobj 411 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 412 0 R >> endobj 413 0 obj 606 endobj 415 0 obj << /Length 416 0 R /Filter /FlateDecode >> stream xTɒ0+UE[I%72T0\e6$c6ɉU{O (~%QfE$DܚXHxr{.nV30:@1`t.![y} $x0Y aR)%cä4z̚4 &߃/axK#Bg?X]Amh+okW߈yzuz8VM_E"B$!;c)I« T,ZQFkrgF/= !' Jr=] }`JSΓӀMeYi%7YWP.|^&KĀPDZ'e^Mz.hLT\Ũn,(/q;{/LD$ ufP-76M rHXJ%(g^S^ -hДT 0a=>zVek+T'!gF{=5 FD$ ,ޝrr^W.+pytg|6%E2֐۵糝 O*+Ɣ <)7f~."k5Zzsizo<#BIo/]m endstream endobj 414 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 415 0 R >> endobj 416 0 obj 644 endobj 418 0 obj << /Length 419 0 R /Filter /FlateDecode >> stream xTKs0WfRU?N{L!tugIġCZS <3 gD=ԯE)i "1p&(ep6.qFhEy?U FBSNgYArYɺ&-aѲ3"J044DWUnnS$+ص>uld%D@|P]zWHFNoIjLՋ2R]UϵX&LOee5pƉA;P; p02mmrCV`[q:s'vBj9w#;fR^nmk-,J>ʝZޝ 3ZL<Tr ,avݛ>s2Uå\jъ endstream endobj 417 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 418 0 R >> endobj 419 0 obj 615 endobj 421 0 obj << /Length 422 0 R /Filter /FlateDecode >> stream xTr0 +peh[:͍gzsPmD/(R#=g';D u=9+Pͩ[ {=Gw PL8y&[ z} ;{8I8pXpTZ>k=JU`u$- M ͜9# {|: {oSPXzlmjXc׋}о :b,H#1L٫)]38%Æh΄R*\?['~)TZH+ gR0wI qjRyx+~H}轄GY)UuR-7p9~KfSɺn gDahlUKM&(a4$I#>yLV7HGTǧt=h۳3^ Խ|+*,RCfrdyZxT endstream endobj 420 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 421 0 R >> endobj 422 0 obj 612 endobj 424 0 obj << /Length 425 0 R /Filter /FlateDecode >> stream xUKo0 Wᗊb@׮lX;=xx𫶂f~-ۊ;uNS$?I~ 88w@@F@\D=dh/W礄 t 'IWZsg1Kݭ2KDBy3\?9<]; "iY4O|\1bFwm-T6{xb  m@锦Mywtbǧ{Gf?oPLiP7 {o\.@qr cᓘQc7wBBp)aLT`!` Cm]2MoLZIzLSڒLJ`mOQVM:@L M$.EVdzc!5UfzE!S'G~rYhaBC0Di;܍h:tN.%{} suE0t_mwfꙑTYâ~mg0JF$l9e{K*73Q^nWOT,bP-epvf\eGje[fTrUh\^,vQ^eF(PUò"_7&*I3)j+YdR8Mxn̟ԭo팯O1ןdS\V==93Wn7B)4^= M_`a).@`AA?k4zI?DHʺN[ؘ'bw^X endstream endobj 423 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 424 0 R >> endobj 425 0 obj 750 endobj 427 0 obj << /Length 428 0 R /Filter /FlateDecode >> stream xTKo0 W-+u5CS^$b˵u,'qvʜI?S[0+N@qQ #` nWO[  |ʀ—sa>; :>e! ܆($}$#,ZǑ!)aє6mvSln䀑`?0ksh)}Wm!~mסc;Ӻ\D,A,'B Ԑ`l\.:gO*TjJ,m,klI:(1HN82LR AvL ,&b+? 2\ K2aX^濲\[q1FaZ(J(rP>Ki&oyF#^<9=W^.'#M|E~Nn!u0Js;^IKKׯQ782Ex՗Ac6{ȯ,Xtlc%z]d LFi)̳MaQ~K9s-RL>eͬ+7֗Hv,evSmrcaYCI4sE' e*q"]1޾;M;Zw;F endstream endobj 426 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 427 0 R >> endobj 428 0 obj 634 endobj 430 0 obj << /Length 431 0 R /Filter /FlateDecode >> stream xTn0+rB6M^ rH[;%Y^8<9`@I!/A AB#(a#8G n*-G(a>:w)Y2F!{܍(d4Me,@SpJ=RWVXu՞C#!DW}=~ 闽gBoa}Aui3ln8}#^x*A(_'E"PCdydG[t'08% ~s@蚠2@ª׃ʟQ(O})BN82$L,DRf`qDowb# y(l29L$$c7gVu1I0b.^h)ݙS/65o!߆ğ̪+ue~ E)e-Qh/:H.в g SB)Gx'!gFFu9"a"nL5(1oHAZ#9FS]+;>9caZֻv1eiEmqMgÃj pU^jE( ltk1;\o[L5HLfUE endstream endobj 429 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 430 0 R >> endobj 431 0 obj 633 endobj 433 0 obj << /Length 434 0 R /Filter /FlateDecode >> stream xTn0+oR7#zHe[-9Z}dK^Ҟ\3|3qza7~1NBe/O 4l#]#C-ak =Ej-&/ /S2QNBgI?ûfOid4{TGPۇ6}5 f֋: *q◇(p;k.vGvE_{/FDn莏VCN׳z6kߟ]#R(DA<.!(!5w*JORcz ::]gv-,А+/TZJ"  sgKӠgP<۔ iqƪOZ۬h<"7V}1{ \7U6+sUZ.h|wMk):aഭ˲꼫GVtGWo$ endstream endobj 432 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 433 0 R >> endobj 434 0 obj 515 endobj 436 0 obj << /Length 437 0 R /Filter /FlateDecode >> stream xUK0+温6/;RVfUQBXcݤ=| c@4K,9dGX@xG!)gÇ.n+= G4nOuޝo,v{}l0!\CrwUmˬ)R/!}H&|.NBgwLfO a@gNvt;ׯ6zzVePWt2J~~(b"& _dϺhOb|hm?ԫU_VlƗ'2B1NXJdY5!>Սj-43Ӡ7lV(LYbwYպЃ|FDՈ˭Pz 2>kC_ %D eѹ}؄ u!gQH,C4iFDMJtqUQ{QljUedD t,u愮S[MrM f5jWf`( ࿉JQRywh<+EI endstream endobj 435 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 436 0 R >> endobj 437 0 obj 590 endobj 439 0 obj << /Length 440 0 R /Filter /FlateDecode >> stream xTKo0 W0MےrunA A8NeY(I4nm@)LJ_ W(# ېNA I1lcX[=A$<%VT/0tvu~ 3(|3HErmщM0nG]]gH逑MZ m~ -A8OPj7ugH$O8Gy g1z0 ڌv%{E}$#A0pBaɎϲ͛Y_̶s $/-HP%c( GW*5bGB'!ԹCʡjeujaY[OKڼrKY(mھXJ_YIzVۦlB8KQ;IrgPɺ s28];[6H r!b#cNPQG> endobj 440 0 obj 482 endobj 442 0 obj << /Length 443 0 R /Filter /FlateDecode >> stream xTK0WqPwlsk+-RUAM 1I&}m%v TԩDe;nHDD!|fOd\OZ{wz~ۻB[.D WҺGBe$;&/ /SaO aSˈm*#Lnr YxcSf\5<)" 72X[v6E{@"tǀh&EDI;R/ͷsk!1H.BTȜ? ~iIxR: $iBy$Ua:)<͓ ([yEG]:{W{ #n5]4]M ۲oܿo^P!Pͺ#LC!TƅJB#X͜sTU2zB9K`}IkB@ İgkiUnGx>~)|t"@ endstream endobj 441 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 442 0 R >> endobj 443 0 obj 521 endobj 445 0 obj << /Length 446 0 R /Filter /FlateDecode >> stream xTK0WqPwlsk+-RU@@Gc )$37/L-JXK%S!ܮ {-|e9Cȸ$ Oõl9,x>foBqzlQ 0Z)0\I n>yWuV_اxH -Z%}ÞQ&T^GۙvEǯ8(̸jyRhEn&dbvWn]\U'HXߪI=K@  QP!s n%:'yQJ}^sx@ @S%%d$4#H rqOڡGQڡ}yqwz 0VmIӕD+* bY]ii(ʸPIhydk5>xYp(2.ևT2;8*)$@ q۬EP&uSU;³ݐ.oGq endstream endobj 444 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 445 0 R >> endobj 446 0 obj 520 endobj 448 0 obj << /Length 449 0 R /Filter /FlateDecode >> stream xTMo0 W0l} ݂ء-,s` Qi2ۀJ{ bņ='#A56pgȽEKûf6 ;A8PEy"vتRD3> endobj 449 0 obj 473 endobj 451 0 obj << /Length 452 0 R /Filter /FlateDecode >> stream xTKo0 WQGn{unY E9Nmg(I켶SA 8 >Fҽ+ .S(SXXtėxobR/B-^?‚ۛB6ߍ(\X ,WGBVՇnլ+ꪽ~ )!i(% bi`74TGۇrD3IC͸hKay-S'տTdHjQ|RO&S1gSG.Dr) 0j@,M)(SA{)~>sO=l|[yQ7\k'`bUjvP3]ST+,k2F'(hź̫n :m✡yCSz=`Uk\(I\,1ogM[)$O@L7}ͻuS*.yF7mq endstream endobj 450 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 451 0 R >> endobj 452 0 obj 505 endobj 454 0 obj << /Length 455 0 R /Filter /FlateDecode >> stream xTMo0 W4}ؒ۾:`vhhbm~$vg ' ܢŚ-@VT[ gEJ;{&0]|K=|.`I>Ǜ8YoQ)O1P)pw*mM[.lQ~o#0v5t9 k {Glοv*L.oz>~4XP@ &[v4E##A0 QNOD=eUUMI Tpj&ecNGtq{!a:̂} /V4nGpuk O<.ZUJhoYmن-LQP" 7d?YU9;}z2(SlYiwUaM'ʊ UIdFtq}tX<4sS> endobj 455 0 obj 544 endobj 457 0 obj << /Length 458 0 R /Filter /FlateDecode >> stream xTMo0 WQmIm:`vhbHGhb?ʲ;2;R Ŗt>ZJ:Wa h X7V0/K@J6}/^!gS6-Zk+i#!MY4ٯnŢqeQ_?B}NGѼRhuӼ{#GpmA| }h)׭H0N# OEOVf4 6T-{} @"tLJh&EDYuC=5-sw@$ Qt,!_-}&AJ}JtA^eV4n 4zshIpծSn5}"i:$g`^P1Pdu~(p3@bYi ڼ!Wv[xBHd1zQBH ĸ1]с*kUQ GVm{7g endstream endobj 456 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 457 0 R >> endobj 458 0 obj 516 endobj 460 0 obj << /Length 461 0 R /Filter /FlateDecode >> stream xTKo0 Waڭv j`IrQ8 #?p`mJ}+U*R(!)| G|%O|~vX|Oƃ>.ޟd] A6ߍ(kQ G@Vmڢrdȗl?0z 5헽Hay2z*n.H0pv4ؐž2.(D5{b/<-[2!!L贌1̣GvɼX=(S/DP%cAbp S֣0߾2+5TsֹyUC ׆!iFjiLQ99Ѫr+ 1q҄qa^te-(tUj2h܍IݬuUǰ~^c(>Psb4tlYۮvMNlQv`~\־(~<:x{/ endstream endobj 459 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 460 0 R >> endobj 461 0 obj 543 endobj 463 0 obj << /Length 464 0 R /Filter /FlateDecode >> stream xTKo0 WQGn{unA E9Nm(I2;R$Og&}$+ JTHLark7b_R/B-^?œ}B6Q"9XlwW+~wp򮬫oKvH M@!Y0@ad  U'e?~@uiš2.|\F183: };>$D[ 9"Ϭd=?2/"sB" Q|vi%i{)qz-ErS@=<< ∿Au(mb?Unvΐ3y,j~G8JydW7v@$&RC>xlfwK5ok-G|.ڼ)~ F )EV6ݦ0ӡ˗ 'n؅ endstream endobj 462 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 463 0 R >> endobj 464 0 obj 508 endobj 466 0 obj << /Length 467 0 R /Filter /FlateDecode >> stream xTn0+r-z3"$0 [ڔw(J=f8˛7+{7m,qUQz9?5  W'a:G2v r>!ob ТSnFI0T 뗀d OwJפxhݲ)JW߿@|J&$Ѽ,״#{b#6a?h2Pr{ӦgC!A x~;`cɸiC%j 5ٿqNX`$F51 > endobj 467 0 obj 524 endobj 469 0 obj << /Length 470 0 R /Filter /FlateDecode >> stream xTn0+r-z3"$0 [ڔ#J]CQ=f8˛7+{6m7qUPz9u85  'a:G2v }F>džE Xk`6,>T5кySV߿@|I.iWCYiG!Mءe4;^%Q;=s b88&<Za"7n !;>G5*-cLx~'>s~"b~^0צHpA٪0yw,<лDzNGrJ5O endstream endobj 468 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 469 0 R >> endobj 470 0 obj 523 endobj 472 0 obj << /Length 473 0 R /Filter /FlateDecode >> stream xTK0WqPvn}mޢEawE !bwl)$[37g ;(#`'ϝ '#*bCaO6f ߉% 'ta/ӵd>=cJ"N6DRHpuƮꢴ oKzHrZ-?E[OqN=#! -( -w:54OX'q# 6FqQ}"ؤ<D Q| *4Ƙm:]fXXȋuxh\2Ʊ R \*ǸzQu6*Ŧ*(7PݷK.,`& 9!IP-p}0jBc+mx-a{v'\4bP`#z MtdBq$z*bYp( VЯ֔KLH9s8xq(ެ7z]AMe]myu^DlJcP]9 \ endstream endobj 471 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 472 0 R >> endobj 473 0 obj 546 endobj 475 0 obj << /Length 476 0 R /Filter /FlateDecode >> stream xTn0+rHI$}Kڦ@oF+ӶPRDߗe[Ҟ\I3= 0 5y}zW&Nav 7yc _% > ? ;.%?g 9y2#JZLpt󡲭mYYw)?@$DnB34avk({bZk$O\/`{lPWm~Y2$"@|j'D;<8_!&UzfмhNuEnS1\.;38!y+򥁺 3cr^9>b3W2g8˲p2V}mڕnGQ-"㪟?Ue7ۿO" C]ج=(~3f*ZzmtyC'K6*Ϯy(B$ѱG㊦GN[&e`)lHƴƺ=[ZcoSgv~W"?<;]WO C઎b endstream endobj 474 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 475 0 R >> endobj 476 0 obj 547 endobj 478 0 obj << /Length 479 0 R /Filter /FlateDecode >> stream xTn0+rB-z3"$0ڔ#]CQeJzrep7Iτ߻pZ|K;\:WOHa &Xw `rm=z+ R qE \iU&AQ)tx[xTnn捭}R \DvB˳N[OiN#!GoPFzbtug$O> endobj 479 0 obj 544 endobj 481 0 obj << /Length 482 0 R /Filter /FlateDecode >> stream xTn0+ΐH-z "$0 [ڒw(J=f8{ԋ @~8x}FNzWERŰގaw 5XMl(g9 'x\K~>WS.BH#HuDZ9(H7x,Wwm1ko!">4辛3# Gx a{:zкg_ xzaš2(O$@|j'D;<J|v:D=EɤV⹛b!RRF$r%v12%2 k 2h묂|M,аO1M %~!՝NHgW(d]˧ '!%|W- ڍƒ%v2s十0g/eLjg l˜t?k$# e>fʷ^)G"x1]5 *kڪ;{nNZ߽rR endstream endobj 480 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 481 0 R >> endobj 482 0 obj 517 endobj 484 0 obj << /Length 485 0 R /Filter /FlateDecode >> stream xTMo0 WQmIv j`I9rj;,q)H!E=/L/JKg%3 c(FvCYwWv@g@ 8]|˦ރdS&.-Zk+i#!]է5nn䥫 ƾѴRh,y;Gg ޾U%\ a,!Ce\yQh(9 ];Q kCNtT"-:]O&ccVn27[E6[=">vi DKzS2(/$۽8*]?e |Վ򽐆r$=!Wn[M_D =m[_yg^P1PvGEF`Ŗ'&V|ڸaNjEؔ9}75 = i>g7^J #)XU^NZPeͶru;ϑYCqEeZ?I՝, endstream endobj 483 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 484 0 R >> endobj 485 0 obj 536 endobj 487 0 obj << /Length 488 0 R /Filter /FlateDecode >> stream xUK0W*V mUQ!am}q =ɓa*O w2GHy_"7@hjh 4sI3! ןMBPcsӮ\Bhu=.!3n|qd G p] )񘻘pkJI)[@y_?BvRpSʰ`CI`򆁼 <>w^rdCNPFUX: Fbg GQdzۨ ݹ+񶈸hkA>Uf91+N_Iʐemjsc,J-$ bxḅk*SW|c4a>:S%pINd-4LaDBϥFQ3#[otJuMCgrzVV*׎"KןWNj$sψoă.5-')t-ҀˤRĺ=3}ȳb]dJ8wH| endstream endobj 486 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 487 0 R >> endobj 488 0 obj 601 endobj 490 0 obj << /Type /Action /S /GoTo /D [327 0 R /XYZ 72.0 720.0 null] >> endobj 491 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 250.09 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 490 0 R /H /I >> endobj 493 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.823 709.5 541.823 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 490 0 R /H /I >> endobj 494 0 obj << /Type /Action /S /GoTo /D [330 0 R /XYZ 72.0 720.0 null] >> endobj 495 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 273.97 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 494 0 R /H /I >> endobj 496 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.658 697.5 541.658 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 494 0 R /H /I >> endobj 497 0 obj << /Type /Action /S /GoTo /D [333 0 R /XYZ 72.0 720.0 null] >> endobj 498 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 232.33 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 497 0 R /H /I >> endobj 499 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.946 685.5 541.946 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 497 0 R /H /I >> endobj 500 0 obj << /Type /Action /S /GoTo /D [336 0 R /XYZ 72.0 720.0 null] >> endobj 501 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 232.34 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 500 0 R /H /I >> endobj 502 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.946 673.5 541.946 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 500 0 R /H /I >> endobj 503 0 obj << /Type /Action /S /GoTo /D [339 0 R /XYZ 72.0 720.0 null] >> endobj 504 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 227.88 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 503 0 R /H /I >> endobj 505 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.977 661.5 541.977 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 503 0 R /H /I >> endobj 506 0 obj << /Type /Action /S /GoTo /D [342 0 R /XYZ 72.0 720.0 null] >> endobj 507 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 223.43 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 506 0 R /H /I >> endobj 508 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.007 649.5 542.007 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 506 0 R /H /I >> endobj 509 0 obj << /Type /Action /S /GoTo /D [345 0 R /XYZ 72.0 720.0 null] >> endobj 510 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 223.44 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 509 0 R /H /I >> endobj 511 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.008 637.5 542.008 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 509 0 R /H /I >> endobj 512 0 obj << /Type /Action /S /GoTo /D [348 0 R /XYZ 72.0 720.0 null] >> endobj 513 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 211.21 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 512 0 R /H /I >> endobj 514 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.093 625.5 542.093 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 512 0 R /H /I >> endobj 515 0 obj << /Type /Action /S /GoTo /D [351 0 R /XYZ 72.0 720.0 null] >> endobj 516 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 212.88 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 515 0 R /H /I >> endobj 517 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.081 613.5 542.081 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 515 0 R /H /I >> endobj 518 0 obj << /Type /Action /S /GoTo /D [354 0 R /XYZ 72.0 720.0 null] >> endobj 519 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 241.77 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 518 0 R /H /I >> endobj 520 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.88 601.5 541.88 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 518 0 R /H /I >> endobj 521 0 obj << /Type /Action /S /GoTo /D [357 0 R /XYZ 72.0 720.0 null] >> endobj 522 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 216.21 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 521 0 R /H /I >> endobj 523 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.058 589.5 542.058 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 521 0 R /H /I >> endobj 524 0 obj << /Type /Action /S /GoTo /D [360 0 R /XYZ 72.0 720.0 null] >> endobj 525 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 223.44 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 524 0 R /H /I >> endobj 526 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.008 577.5 542.008 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 524 0 R /H /I >> endobj 527 0 obj << /Type /Action /S /GoTo /D [363 0 R /XYZ 72.0 720.0 null] >> endobj 528 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 226.77 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 527 0 R /H /I >> endobj 529 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.983 565.5 541.983 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 527 0 R /H /I >> endobj 530 0 obj << /Type /Action /S /GoTo /D [366 0 R /XYZ 72.0 720.0 null] >> endobj 531 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 214.55 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 530 0 R /H /I >> endobj 532 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.07 553.5 542.07 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 530 0 R /H /I >> endobj 533 0 obj << /Type /Action /S /GoTo /D [369 0 R /XYZ 72.0 720.0 null] >> endobj 534 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 214.55 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 533 0 R /H /I >> endobj 535 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.07 541.5 542.07 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 533 0 R /H /I >> endobj 536 0 obj << /Type /Action /S /GoTo /D [372 0 R /XYZ 72.0 720.0 null] >> endobj 537 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 194.56 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 536 0 R /H /I >> endobj 538 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.208 529.5 542.208 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 536 0 R /H /I >> endobj 539 0 obj << /Type /Action /S /GoTo /D [375 0 R /XYZ 72.0 720.0 null] >> endobj 540 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 248.98 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 539 0 R /H /I >> endobj 541 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.829 517.5 541.829 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 539 0 R /H /I >> endobj 542 0 obj << /Type /Action /S /GoTo /D [378 0 R /XYZ 72.0 720.0 null] >> endobj 543 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 231.22 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 542 0 R /H /I >> endobj 544 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.954 505.5 541.954 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 542 0 R /H /I >> endobj 545 0 obj << /Type /Action /S /GoTo /D [381 0 R /XYZ 72.0 720.0 null] >> endobj 546 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 231.23 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 545 0 R /H /I >> endobj 547 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.954 493.5 541.954 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 545 0 R /H /I >> endobj 548 0 obj << /Type /Action /S /GoTo /D [384 0 R /XYZ 72.0 720.0 null] >> endobj 549 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 253.98 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 548 0 R /H /I >> endobj 550 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.796 481.5 541.796 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 548 0 R /H /I >> endobj 551 0 obj << /Type /Action /S /GoTo /D [387 0 R /XYZ 72.0 720.0 null] >> endobj 552 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 236.22 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 553 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.919 469.5 541.919 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 551 0 R /H /I >> endobj 554 0 obj << /Type /Action /S /GoTo /D [390 0 R /XYZ 72.0 720.0 null] >> endobj 555 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 236.23 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 554 0 R /H /I >> endobj 556 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.919 457.5 541.919 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 554 0 R /H /I >> endobj 557 0 obj << /Type /Action /S /GoTo /D [393 0 R /XYZ 72.0 720.0 null] >> endobj 558 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 203.44 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 557 0 R /H /I >> endobj 559 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.145 445.5 542.145 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 557 0 R /H /I >> endobj 560 0 obj << /Type /Action /S /GoTo /D [396 0 R /XYZ 72.0 720.0 null] >> endobj 561 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 223.99 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 560 0 R /H /I >> endobj 562 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.004 433.5 542.004 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 560 0 R /H /I >> endobj 563 0 obj << /Type /Action /S /GoTo /D [399 0 R /XYZ 72.0 720.0 null] >> endobj 564 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 236.77 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 563 0 R /H /I >> endobj 565 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.916 421.5 541.916 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 563 0 R /H /I >> endobj 566 0 obj << /Type /Action /S /GoTo /D [402 0 R /XYZ 72.0 720.0 null] >> endobj 567 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 226.77 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 566 0 R /H /I >> endobj 568 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.983 409.5 541.983 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 566 0 R /H /I >> endobj 569 0 obj << /Type /Action /S /GoTo /D [405 0 R /XYZ 72.0 720.0 null] >> endobj 570 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 212.34 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 569 0 R /H /I >> endobj 571 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.086 397.5 542.086 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 569 0 R /H /I >> endobj 572 0 obj << /Type /Action /S /GoTo /D [408 0 R /XYZ 72.0 720.0 null] >> endobj 573 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 216.22 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 572 0 R /H /I >> endobj 574 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.058 385.5 542.058 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 572 0 R /H /I >> endobj 575 0 obj << /Type /Action /S /GoTo /D [411 0 R /XYZ 72.0 720.0 null] >> endobj 576 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 212.89 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 575 0 R /H /I >> endobj 577 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.081 373.5 542.081 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 575 0 R /H /I >> endobj 578 0 obj << /Type /Action /S /GoTo /D [414 0 R /XYZ 72.0 720.0 null] >> endobj 579 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 227.89 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 578 0 R /H /I >> endobj 580 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.978 361.5 541.978 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 578 0 R /H /I >> endobj 581 0 obj << /Type /Action /S /GoTo /D [417 0 R /XYZ 72.0 720.0 null] >> endobj 582 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 214.56 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 581 0 R /H /I >> endobj 583 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.07 349.5 542.07 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 581 0 R /H /I >> endobj 584 0 obj << /Type /Action /S /GoTo /D [420 0 R /XYZ 72.0 720.0 null] >> endobj 585 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 221.22 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 584 0 R /H /I >> endobj 586 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.024 337.5 542.024 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 584 0 R /H /I >> endobj 587 0 obj << /Type /Action /S /GoTo /D [423 0 R /XYZ 72.0 720.0 null] >> endobj 588 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 205.66 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 587 0 R /H /I >> endobj 589 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.132 325.5 542.132 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 587 0 R /H /I >> endobj 590 0 obj << /Type /Action /S /GoTo /D [426 0 R /XYZ 72.0 720.0 null] >> endobj 591 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 237.32 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 590 0 R /H /I >> endobj 592 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.91 313.5 541.91 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 590 0 R /H /I >> endobj 593 0 obj << /Type /Action /S /GoTo /D [429 0 R /XYZ 72.0 720.0 null] >> endobj 594 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 242.31 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 593 0 R /H /I >> endobj 595 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.877 301.5 541.877 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 593 0 R /H /I >> endobj 596 0 obj << /Type /Action /S /GoTo /D [432 0 R /XYZ 72.0 720.0 null] >> endobj 597 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 218.44 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 596 0 R /H /I >> endobj 598 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.042 289.5 542.042 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 596 0 R /H /I >> endobj 599 0 obj << /Type /Action /S /GoTo /D [435 0 R /XYZ 72.0 720.0 null] >> endobj 600 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 232.32 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 599 0 R /H /I >> endobj 601 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.946 277.5 541.946 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 599 0 R /H /I >> endobj 602 0 obj << /Type /Action /S /GoTo /D [438 0 R /XYZ 72.0 720.0 null] >> endobj 603 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 242.88 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 602 0 R /H /I >> endobj 604 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.873 265.5 541.873 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 602 0 R /H /I >> endobj 605 0 obj << /Type /Action /S /GoTo /D [441 0 R /XYZ 72.0 720.0 null] >> endobj 606 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 221.22 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 605 0 R /H /I >> endobj 607 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.024 253.5 542.024 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 605 0 R /H /I >> endobj 608 0 obj << /Type /Action /S /GoTo /D [444 0 R /XYZ 72.0 720.0 null] >> endobj 609 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 221.22 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 608 0 R /H /I >> endobj 610 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.024 241.5 542.024 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 608 0 R /H /I >> endobj 611 0 obj << /Type /Action /S /GoTo /D [447 0 R /XYZ 72.0 720.0 null] >> endobj 612 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 236.21 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 611 0 R /H /I >> endobj 613 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.918 229.5 541.918 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 611 0 R /H /I >> endobj 614 0 obj << /Type /Action /S /GoTo /D [450 0 R /XYZ 72.0 720.0 null] >> endobj 615 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 243.98 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 614 0 R /H /I >> endobj 616 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.865 217.5 541.865 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 614 0 R /H /I >> endobj 617 0 obj << /Type /Action /S /GoTo /D [453 0 R /XYZ 72.0 720.0 null] >> endobj 618 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 245.11 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 617 0 R /H /I >> endobj 619 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.858 205.5 541.858 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 617 0 R /H /I >> endobj 620 0 obj << /Type /Action /S /GoTo /D [456 0 R /XYZ 72.0 720.0 null] >> endobj 621 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 216.78 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 620 0 R /H /I >> endobj 622 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.054 193.5 542.054 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 620 0 R /H /I >> endobj 623 0 obj << /Type /Action /S /GoTo /D [459 0 R /XYZ 72.0 720.0 null] >> endobj 624 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 275.1 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 623 0 R /H /I >> endobj 625 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.65 181.5 541.65 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 623 0 R /H /I >> endobj 626 0 obj << /Type /Action /S /GoTo /D [462 0 R /XYZ 72.0 720.0 null] >> endobj 627 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 220.66 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 626 0 R /H /I >> endobj 628 0 obj << /Type /Annot /Subtype /Link /Rect [ 532.027 169.5 542.027 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 626 0 R /H /I >> endobj 629 0 obj << /Type /Action /S /GoTo /D [465 0 R /XYZ 72.0 720.0 null] >> endobj 630 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 235.11 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 629 0 R /H /I >> endobj 631 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.928 157.5 541.928 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 629 0 R /H /I >> endobj 632 0 obj << /Type /Action /S /GoTo /D [468 0 R /XYZ 72.0 720.0 null] >> endobj 633 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 235.11 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 632 0 R /H /I >> endobj 634 0 obj << /Type /Annot /Subtype /Link /Rect [ 531.928 145.5 541.928 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 632 0 R /H /I >> endobj 635 0 obj << /Type /Action /S /GoTo /D [471 0 R /XYZ 72.0 720.0 null] >> endobj 636 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 230.67 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 635 0 R /H /I >> endobj 637 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 133.5 541.924 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 635 0 R /H /I >> endobj 638 0 obj << /Type /Action /S /GoTo /D [474 0 R /XYZ 72.0 720.0 null] >> endobj 639 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 230.67 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 638 0 R /H /I >> endobj 640 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 121.5 541.924 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 638 0 R /H /I >> endobj 641 0 obj << /Type /Action /S /GoTo /D [477 0 R /XYZ 72.0 720.0 null] >> endobj 642 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 228.45 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 641 0 R /H /I >> endobj 643 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.94 109.5 541.94 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 641 0 R /H /I >> endobj 644 0 obj << /Type /Action /S /GoTo /D [480 0 R /XYZ 72.0 720.0 null] >> endobj 645 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 230.67 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 644 0 R /H /I >> endobj 646 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 97.5 541.924 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 644 0 R /H /I >> endobj 647 0 obj << /Type /Action /S /GoTo /D [483 0 R /XYZ 72.0 720.0 null] >> endobj 648 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 277.32 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 647 0 R /H /I >> endobj 649 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.6 85.5 541.6 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 647 0 R /H /I >> endobj 650 0 obj << /Type /Action /S /GoTo /D [486 0 R /XYZ 72.0 720.0 null] >> endobj 651 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 228.99 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 650 0 R /H /I >> endobj 652 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.936 73.5 541.936 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 650 0 R /H /I >> endobj 653 0 obj << /Length 654 0 R /Filter /FlateDecode >> stream xM%畞~#b 4Ѓj a,*"$R4IV,פ\d'yQ#oۿ/c_}ۇlj_E՞oG>__Gw忞_mwou?}?}o_St͹_ͷ8Vy~~Wϻ?߾懿}_`?]3؏G]v'C_#cOcgʿFF{Eok{|?'?:~?|?7߾{sk1߶y^#W/ֶ۫}.z{jz6hz=|_w;ݎux8^w;ݎ5pkvl{xAK&qH,S.\ ` ;` !!!!))))M6"E!CN"8Ep`n ` ;y`""""""""Dyo<>Xknvw|Qq<}.pew>?gKTB꠺S>?uKMAIII,Y\۾JՍ)ةNs:&I,Y.Re},z`.XGsReeeeeeee#F,;Yvd9r A,'YN\dre}jZ,sbYܥ!]j LLLldy,|oўjAQg|Ͽs޷\%a-=v~O1eSNzT7s:Rj\dIJnҐZ,kBz˚˚˚& $$$F,[YnF~7!ASSTFuPM,Y.\bYbYԻXք$Xք!5!IMAAAIIII,Y6dɲ A,YNd9r"%5!I-5!I-5!I-5!A}eMHReeeeeeee#˺d0Ԅo{\yB:?|iB?.H3,O_ ~n.]^RׂuzJ] I$rkAZ,zkAZ, j$222222ɲe#Z3<+$SZNԵ AT$E,X^ by-H׻X^ by-HׇX^ ddddddddȲe#N,;Yd9r$I,Y.\by-HP A-ׂX^ !ׂ5YYYYY&Y&Y&Y6xAz}xAzuz>^?>RA9ys~~o&z^)qH%%Knుృృృృqqq````````&ٖ/}:R꠺SՍj\dr26],c2C, $$$F,Yvdɲ A,'YNdr"%enbX.ebX!yedddddddȲemO5`߹\=_TKƧ>H[֣uG+̛)V䶵=- wPITwwR7wR$E,Y.˺ ],>*ŲZ,>*222222ɲe#V/5^RFzT'CQT$E,X}TReG.ubYQA}eG%5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,X}TReG%X}TReG!uddddddddRno^}{۶l|]c~f۲ro˿e}-,N,Sڲ&I,Y.\bymYPe^bymYPeA-ז5YYYY&Y&Y&Y6ldȲe'N,Yd9r$I,Y.,ڲ^w,ڲ^,2222222ɲe#F,;Yvd9r I,'Y.\dڲk˂Z,- jC,- j LLLldymY֘2Z׵O˻r=_w߬p5ߵ\< ZEyf|얛0iTNS]LujOF9eZQNuVyejjjjjjjj3fT|P>6n|7Mu2EjjF9ֱfZQNuZILj3nTvS:Lu4iT.S]HN=T3wR(':rR(7000444fT,fKԮonkEҷoA}?߿wOO]Zfc|븶gHϏzUP|Q~~Y>)??Pɏzlz7TTTTTTTTTTTTT6S=?ͯg%?OyX-_(oOϏ妺Lu2EjlNjAqjLj3fTvS:Lu4iT.S]H57R͍Ts#I5wR͝Ts'&w񛟾Ȑypuܽ9f]4fc4Ey=J#y|R^OH4iT.S]HnT.wR[('պKT.M5L5L5L5M5M5M5Mj3z&ֶGi<,/ɛ妺Lu"HnT.wR[('պrR[$S S S SMSMSMSmLj7nTS:Lu4iT.S]ZvQNuk;֭]jE9֭]jjjjjjj3պW8?wV6f-m'直>> x#ؠ_n_ɛ%7iT.S]p+9>BWrR}x+6SmLj7nTS:Mu4iT.R}x9+9>|'Շ+^R}xI+6SmLj7nTS:Mu4eT>=TJNox%'ՇwWrS S S S SMSMSMSmdzx=n6W |w7?l| vxyw-O[Ey=)yT.S]z=)9^qJNc'^qJnaaaaiiiT6SMj7aTNS:Mu2eT8%'1NwR㔜T8%'1NM5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luz= Nc'^qJnaaaiiiiT1ε5.Try?}q|Op~Jk='xk7rmO>]4g%?7'}<-TNS:Mu2E5QN5QN5QN5I~jwjjjjjjjj3fTñ _ί7!˻qX,T.S]H;I;wRrRrRrS S S SMSMSMSmLj3nTS:Lu4iT.S]ZZ;|G9|'A5QnaaaiiiiTW-]캉n.qvߍOs/wO=]~B,?w/ia{!Mu4iT.S]߽~BN 9>w_R}^M5L5L5L5L5M5M5Mj3Շ~Bw y|R߽妺Lu2E 9>w_wR}^Iq{!'TTTTTTT6SmLj7nTS:Mu4eT>w/}9Iq{!'A 6S}`!{.f~GݭF7^~{d݅O[߷P,o<-o<,7fTvS:Lu4iT.S]HFA9($IFA9($?HFA6SmLj7nTS:Mu4eTrRQPN6 IF!A6 M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujrRQHjrRQPNiRڶ-mKiRڶ-mKiRڶT#h6n|7Mu2EkQNkQNkQNkI~jZjjjjjjjj3fTvSMu0aTNS]Lu"ڵ('ڵ$Iv-Iv-Iv-M5L5L5L5M5M5Mj UFzACu} Ugwa?Te%>SO\wSQ>)i|nE2eTkTk|'ک('ک$?Hv*M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]Hv*Iv*Iv*Iv*RrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z;Z;;NE9NE9NE6S}ة^wvSgSĝ;3qO_͹3q;ﶵ5o{^M&iM[(SrR%?H_rS S S S SMSMSMSmLSߠۿ=ay|Q^)H,c 妺Lu2Eu:ZKjN9딓jN6SmLj7nTS:Mu4iT.R)':}]TuIN_ :}rS S S SMSMSMSMSmZdeZ溱ߌ,ӉGz~v~s3x5}\hsEy=G y|R^Hj Oj Oj Oj OZLj3nTvS:Lu4iT.S]H'I'wRrRrRrS S S SMSMSMSmLj3nTS:Lu4iT.S]ZZÓ;D9$A59;:vd\u:Iw7'zN:IN$9^^Lj3nTvS:Lu4iT.S]HZ$'ku|'kuTIrRV'M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Lu:INN$9^^Lauzuy\q:գZnr:8><.^W&>/NV\7>M$?@yZ>(?@yX-_STS:Lu4iT.S]ZgSQNu6;TjM%Au6Lj3nTS:Lu4iT.S]zjME9TjM%Au6Lj3nTvS:Lu4iT.S]HΦTl*wR(':rR(70UۖҶm)m[JۖҶmf6'ú/ {§ G,uǯ{:pՌ)i|l0aTNS]Luj}j}j}j}ZkLj3nTvS:Lu4iT.S]H>I~*NQNUPNQnaaaiiiT6SmMj7aTNS:Mu2eTkTk|'Z('Z$?H>M5L5L5L5Mնm)m[Jۖ-wԮ-g;včy3g^/|LT3oEw nk5~s-im[ãO> G-Z7'-ATNS:Mu2EuZ'QNuZ'I~jF6SmLj7nTS:Mu4eT.R(':MT7IVT7M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujF9 oZ'QNu› ojjjjjmKiRڶtbvEŬ6:Ǚ~7?B7?wޞ.4=Fke 6'uiݑ<,/ʧNSLu"Z('Z('Z('Z$?H6M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Luj-lj-lZ Z Z Lj3fTvS:Lu4iT.S]H6I6wRrRMTkaTTTTTTTTm[†u-l秮5fa[~/wvf8?2}~<rXw?ӜQoȕ<,/ 7'}<-7aTS:Mu2eTkKTkKTkKTkK )70000444fT[m}[(I-OMu2eTkKTkK|')')')7000444fT6SM0aTNS:Mu2E%RN%JjmjmZ["LV0鹮XspXUoOڐy݇@p[="׼y-O$˻GO7IzzKTwJN׻D!?HzLj3nTS:Lu4iT.S]zKTrR%*9^TwB~.QM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Lu.QIz(;^TwJN׻D%7000444fur[m߶]=cv%~%7:ypWǸ{==E<,oOnyZ>$[T%'EIzlT%70000444fTvSM0aTNSLu2Ec";^-JNcآLj3fTvS:Lu4iT.S]HzlQrR[|'EIzlT%70004444fXsSZ~^ss7su۝Sf#7B7oƬgVθ]g(oOnyZ>(ayTNSLu"('('('$?H9M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Luj rj rZZZLj3fTvS:Lu4iT.S]H9I9wRArRANTkTTTTTTTm[JۖgΏu M^9b_q.fO~O?4z>5pͣ6ٮc\TuuIy+ yZ>({$7eTTTTTTTTTTTTTTTTT6SmLj7nTS:Mu4eTFjl;NjAqjjjjjjjj3fTvS:Lu0aTNS]LujnFj;Nyj6S[ƙ+e,̾ywٜ7;UyS?|7 ͹m[yE>6n+̷8/țǞAy/yX-_יb7˧uZHIj"E9)RZHQnaaaiiiiTRgy-Oay|Q>˛妺Lu":ErRS(':ErRS$?HNTTTTTTTT6SmMj7nTS:Mu2eT)Rj"%NuZHQNuLXa߶w&>Xͻ0ۡ:};?w_/k?~)OFkOnyZ>(ay|Q>Mu4eT^'wIN]urzA]jjjjjjjj3fTvSMu0aTNS]Lu".I: T$'.I:KrS S S SMSMSMSmLj3nTS:Lu4iT.S]z%9^'wAurzA]jjjjjjjmK׃҆u=(x~}ލ_kv/llO_Սol/<-?ll/ay|Q>Mu4eT>nl/BNۗT7rS S S S SMSMSMSmLj7nTS:Lu4iT.S]|'Ǎ템T7rR}^M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LuBNۗT7rR}ؾjjjjjjjmKlXӅk?}ĞoG\=ݱY檻[(I-OI'I'I'I'RrS S S S SMSMSMSmLWWn|7's<-7eT.RrRITkyTkyTkyTTTTTTT6SmLj7nTS:Mu4eTD9$Nu_~|am|{ܝonc\y6m|.|3m$zay|Q^o#YnTNS]Lu"պrRۯ$InT+InTTTTTTT6SmLj7nTS:Mu4eTWj~%NuZ_I~j~E6SmLj7nTS:Mu4eTWj~E9Wj~%AujRڶtt:M^!O-yO׭v3O_7?/~~ozתnzFv˛zXWT.S]HnסTvwRu('պ]rRu(7000444fT6SM0aTNS:Mu2EuZHjݮC9:ZPnaaaiiiiT&|uw?7@[~ۧcx#MN7_-k7BeIy-Oc<,/ʧNSLu"z rRrRrRMTkaTTTTTTTT6Smzt'[(I-OMu2eTkaTka|'Z('Z('Z(7000444fT6SM0aTNS:Mu2EQNIj-lj-lZ Lzڙlhz_ypn5}矉\T- ɛ:|C|P^oH"zrRg$IT/ITTTTTTT6SmLj7nTS:Mu4eTֳ_j=%NZ~I~j=E6SmLj7nTS:Mu4eTֳ_j=E9ֳ_j=%AL::׋nkaּYޮo_XƋu_?,O/IBT>.O/<}9Iqyz!'酜TrS S S SMSMSMSmLj3nTS:Lu4iT.S]<|'酜T/>.O/Lj3nTS:Lu4iT.S].O_R}\^M5L5L5L5L5M5M5M<=]4p ?ߝ: |7_7x O^o:AY>)o%Ouay|QLu"c#c#c#c'c'c'c' 00004444fT-^nAy=-yX-_ףݒ7Mu2EjlFj;AqjLj3nTvS:Lu4iT.S]H57R͍Ts#I5wR͝T .O_R}\^M5L5L5L5M5M5M5Mj3ՇB[(X^ț妺Lu"酜TrR}\^Iqyr~BnaaaaiiiT6SMj7aTNS:Mu2eTrR}\,O:u?/O}Y?߲l|;|~^d竞f|얧YwMu2E5SQN5SIjTjTZ3Lj;U_x%i|lE<,o2eTkTkTkTk ՚(70000444fTvSM0aTNSLu2E5SQN5SIjTjTjTjjjjjjjTc@HUGUv܌TǗ#9ۣkG=_w;Q>)W|PQay|QLu"Շۣ^ITnz%'Շۣ^R}=TTTTTTTT6Soz%OJwJ,7eTFGQ/;>JNGQ/aaaaiiiT6SMj7aTNS:Mu2eTnz%'Շۣ^wR}=ꕜTnz%'Շۣ^M5L5L5L5M5M5Mۣ`y=})p_|/o~_YGmWovnOj럤ͻi3KyX-_rSMSMSMSmLj3nTS:Lu4iT.S]ZG@SNu;Д:Дjjjjjjjj3fTvS:Lu0aTNS]LujM9ДjM9ВZG@SnaaaaiiGc)>ozhx~z\ijnć` ek\? 2ʻqX,|PLu2E1If'wRىrRىrRىrS S S SMSMSMSmLcms_Y>)i|n:Mu2E5;QN5;IjNjNZLj3nTS:Lu4iT.S]ZZZZD^75enm}k/O?a endstream endobj 492 0 obj [ 491 0 R 493 0 R 495 0 R 496 0 R 498 0 R 499 0 R 501 0 R 502 0 R 504 0 R 505 0 R 507 0 R 508 0 R 510 0 R 511 0 R 513 0 R 514 0 R 516 0 R 517 0 R 519 0 R 520 0 R 522 0 R 523 0 R 525 0 R 526 0 R 528 0 R 529 0 R 531 0 R 532 0 R 534 0 R 535 0 R 537 0 R 538 0 R 540 0 R 541 0 R 543 0 R 544 0 R 546 0 R 547 0 R 549 0 R 550 0 R 552 0 R 553 0 R 555 0 R 556 0 R 558 0 R 559 0 R 561 0 R 562 0 R 564 0 R 565 0 R 567 0 R 568 0 R 570 0 R 571 0 R 573 0 R 574 0 R 576 0 R 577 0 R 579 0 R 580 0 R 582 0 R 583 0 R 585 0 R 586 0 R 588 0 R 589 0 R 591 0 R 592 0 R 594 0 R 595 0 R 597 0 R 598 0 R 600 0 R 601 0 R 603 0 R 604 0 R 606 0 R 607 0 R 609 0 R 610 0 R 612 0 R 613 0 R 615 0 R 616 0 R 618 0 R 619 0 R 621 0 R 622 0 R 624 0 R 625 0 R 627 0 R 628 0 R 630 0 R 631 0 R 633 0 R 634 0 R 636 0 R 637 0 R 639 0 R 640 0 R 642 0 R 643 0 R 645 0 R 646 0 R 648 0 R 649 0 R 651 0 R 652 0 R ] endobj 489 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 492 0 R /Contents 653 0 R >> endobj 654 0 obj 16294 endobj 656 0 obj << /Length 657 0 R /Filter /FlateDecode >> stream xTMs0W19T]I$ڴLo0Ct0Ll B`cҞ\ֻz}V0H;h+!ٱ'@KPQ #!젷Cغ]#C-~ ?RpH Owl9"xk1foCqvlQ 0Z)0\I nʢMp/6/s> endobj 657 0 obj 521 endobj 659 0 obj << /Length 660 0 R /Filter /FlateDecode >> stream xTKo0 WQGn{unA E9N?ʲn G @z8 -{|;WAD\ưΎaw [Md;Wv@q6G}/a>&M !Y(\X ,WGBOE^kiEyu7%9`-B8h6TGۇ6r3 $1ɸh0>Q  LODH{@"7tǜh!CDZvs=O]{b!\ (T>CkA=QRV$|2_iӤP,&УWTD)g`B׼UYէ3j }%zγM`^P1Plu?f`A;m䜡hƴODSU]6vEFZ˅ȅ2jQf;[C#$A^dUЏiݔyJx^Ui?,Ҋ endstream endobj 658 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 659 0 R >> endobj 660 0 obj 514 endobj 662 0 obj << /Length 663 0 R /Filter /FlateDecode >> stream xTYo@~G>ּAp"zV !`';5O xfj0VrX eL-An[UY,> endobj 663 0 obj 632 endobj 665 0 obj << /Length 666 0 R /Filter /FlateDecode >> stream xTMo0 WQ?ܶn[P;EQ$N"4S[ǿeىN@ 'GR~e~Iن>8qZ;3dg6`#|Ǧ>Ϗd36-%+i#!MY]1s,GȾ@?(6 M%R4{#FzMB| }hv]`=aՁW1&r=ft.\F{= $y_mMiQ\O&~yrv&"ɥPx!(!ǘ*1@l[U\~P1Pl~ I gĆ': ip}']cUmiW_P>p̗Uv୩BH ĸb5tUvUQvZ?3ݼ) endstream endobj 664 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 665 0 R >> endobj 666 0 obj 517 endobj 668 0 obj << /Length 669 0 R /Filter /FlateDecode >> stream xTMo0 WQmIm:`vhbHDhbǿeىN@ 'Q~aw~Vb^:-A%+N@D\ưΎaw [MdlvH% ~2<=߱ #ǔA c"֚DJZHHwpuSu&_ԮȫGH鈑?05Z%4oǑ GoPyBnvuk($OX'yY'ɧB{@nF NJHGD9VMN#z6WO[~箉Hr):&Ko>R[H74UV[fyVb5} }SIpW q >4]!g"_?\{Bp?k G"Uo͌GR ƽUOYݔy* v?2ܺ9w endstream endobj 667 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 668 0 R >> endobj 669 0 obj 515 endobj 671 0 obj << /Length 672 0 R /Filter /FlateDecode >> stream xTMo0 WmIu:lY $ة`ۿe94NlC'Q~?`(IH1vOa x@*_88d/5G1z~1B:;("I9g VjPs^yuw%1ҤށѰ9CCYkd#v/G؏ta?x:rЪUA,<.~g\50H(ml\j'B{>J׼ˉv:D-Y׃Ajo 4"N{sE\ŧȑRh=%mWP/2l> endobj 672 0 obj 490 endobj 674 0 obj << /Length 675 0 R /Filter /FlateDecode >> stream xTMo0 W&Rl嶯-b'5mloݿdɉ:N@G!rK %{ 1@`)>;5P?d7&3 u.#/`gu ( [Z!Tk* )Cp{2MukMQ/S6R$yWC'?٣Dqf0!JR\X}!~q!*ƓqVC8 NHǽ#Ok>d&62ZZI7'B-c !Gz #J5|͛vgKٖi`QCkbcHQ4sm^t)QKJu'mǺ{ ub?P}Bfl._/^ʘG픅YlEĚ4:IYPml*u-ӔtH>rW<:c^"BqokpyȧMh@(4|N:ǎf endstream endobj 673 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 674 0 R >> endobj 675 0 obj 518 endobj 677 0 obj << /Length 678 0 R /Filter /FlateDecode >> stream xTMo0 WFJl嶯-b'5mloݿdɉ:N@G\%%{ 1DT!+J`#]!yo0&Wu.gGذ{{!dC"jS%!RhJP&n5˦L}y))$yWC'Yo;G8qf0!JR\X}!~> endobj 678 0 obj 520 endobj 680 0 obj << /Length 681 0 R /Filter /FlateDecode >> stream xTMo1W̱ZsB8 J84 ZJ鮗~=f Iv#y2̼7󼏄*,0[! ֕f*RXCk zZCh> endobj 681 0 obj 565 endobj 683 0 obj << /Length 684 0 R /Filter /FlateDecode >> stream xUKS0WdJgz(CI88xǤ뫇e;=Q'3Z׷XN2 I<:!7hU~CԇZه:5bIa p0|s1,;z_Yǰr̝O> e" 1Ƣ'+\8kO2۴ˣRq>78荤]_;`%֖l%̡"_dBG]V> endobj 684 0 obj 777 endobj 686 0 obj << /Length 687 0 R /Filter /FlateDecode >> stream xVr8+hd9dʱrrEXd,%'2FP#N9j(csQFCaCC‡UB(9P4x豻λu)o%Fa(`%i& yj>65H-5|N_va3_Lb=pJbs(L)a뛛>=jExjP8̧M:ac>'b=l9 Kx%X^)!5P5Rui" gGibGQdw/iL`4"i#x1,Y*~{ 2l_j׈T $J4;o$$H'TٚJ^ 9'gS1 + ר#\%WC 8XF.ϕ:92]dUQL N҅8Muj-;8n{W^ܫ6i4jsi%g$@xLBt=u_bVBuAfޖgq%V3~*x ܋kJlI,l.Pu)O!#ffi&p'qbf5N c BIQm Ip|zS|mEZXM b^⊭,Avz|N݅mUbcG,[*SfYcG3igcc ؝8fTV9LkݬųX5@knX*,@ zT"<q^o endstream endobj 685 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 686 0 R >> endobj 687 0 obj 864 endobj 689 0 obj << /Length 690 0 R /Filter /FlateDecode >> stream xUn0 }WE}]l7Vc(_d'M=uIS(&?= S9hp*J{jfG|G;n@1Σu,ݡO{oB`ViD>$}qXU쥒Fxʵ)lοzg? j t}I콍0;3!8=}nU}!'q WƓ&?-2J=906$1c£1:SJ? hYY =ؘ$p™O):NC銓a a0HgaZ-aSƀQJHӀ@ ?bD[! (C =۶C6bGS%G-(0 rѬ̡`vb`(kJк > vh03 BW`!I֢jo䌓3(98:T4Ȝշ-Ѵx܅tNOwM#fehUħR-n5u;Ue&ănɌ!kUv_Tm[C||z/$RFX|Hp7ƹ6J;{`_4uu,>9q]eYLvRF0^<;_Hgu5=ҳ$= ɪ,rX֙-Z{Pz(@KdE8ߥʰe R k]hddvTn endstream endobj 688 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 689 0 R >> endobj 690 0 obj 861 endobj 692 0 obj << /Length 693 0 R /Filter /FlateDecode >> stream xTn0+ΐfAz(F@q#lт_Rm[{r)q =7~Vt>: UPE +~UMa3r^^]~2߮?q/#ٗ}ٮDq2Z$.C@E^joiyu 7v IѸ=CKYWVA p5ֿ e9OCNn f\=1ɘGH->fuu[LdvEC6c8Ilݦմ^s !oj, 6bCy\9ɘoU endstream endobj 691 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 692 0 R >> endobj 693 0 obj 488 endobj 695 0 obj << /Length 696 0 R /Filter /FlateDecode >> stream xTMo1W1HJ !+7ُ6.' ٚ7ov[REܱ$D)} [wngn ~2<߰i#l{{@-R*K$d\rlwW ST{}afERP4m9ZSޚ=H3AѶ1]j '^_ NEl0Bpᮽ0@S5٣ *DA:d(7^ߩ$8 (,3p=Ja%~Nk4[iSâTX. 4S;u8I׋}U^uPuRH( Ӊl _AȘG(|9{ I)کhqmYg(ևmktq!]&RZ3!A<"wv7 ?F( lU5 4.7ߺ,SD`|{U endstream endobj 694 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 695 0 R >> endobj 696 0 obj 544 endobj 698 0 obj << /Length 699 0 R /Filter /FlateDecode >> stream xUKo0 We+:`!kb%1ȭk_?rl9M2'(R$질-EOAAV+`v1lݩ@{  F69{@(:s'iK:{mPxj|ngڶkWċ_O= NE92J80NO.wG$kr£ *5TV\O&6b ')HN82r|΍qMĜ\9O9f [ږښ%80{")d&+\9ˬܻ#5`T C񴅄OG+A0IX]KC5Q:hǎgvi^ _r(4%L8>GS.ѵqƉxж#˘(6o`h;i 8 4M~ MV3A)La~>x:GVo=j\T 6E>ƏF.]i1>˵ endstream endobj 697 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 698 0 R >> endobj 699 0 obj 596 endobj 701 0 obj << /Length 702 0 R /Filter /FlateDecode >> stream xTKo0 WQ_m-R'5mloݿdɉ&YO)>>~T4"X20p  Q' 3@a.xfփfR&# R*$$\AZsV/tH zDB3/#G3X}o Jg3Wۺ69/]#Nux<0pb-~z)b('u$N.H[{G!5b2GccT(=Tzmv@+ IHDa9\]LqBH,À\țvd[溁(U4;۴yEZ|S1\GQdzUG 0*6%#&0b#B<@aͧ1:1}i%TI`xxV6l$BZO\/yOsDx@196nԒf#j9,&̭g8x3 endstream endobj 700 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 701 0 R >> endobj 702 0 obj 519 endobj 704 0 obj << /Length 705 0 R /Filter /FlateDecode >> stream xTIs0W Z)72í4 (XN%¿GlKI©8[E~`󻲯SXWCo#Q`ioJR 1 T @d^-Oݽqncu&o=cEћַ(&RP~g曑Ҽe ݨRVbQCm߉j}ȷjVB6#49̂t8ur%Wӱ+},,Xhtf=1wQ>VѮs;D E1%'L*NqT{ؠ_FuKct[ok5f*eFx #<[4ZgWҫ} c;aF㳶[dAq8M7B)WS"p<{' @ W8&> endobj 705 0 obj 683 endobj 707 0 obj << /Length 708 0 R /Filter /FlateDecode >> stream xTMo0 WImYm:`Y(XNm~$vd;ȧGIE`OFPI ~EKD <0|eO\_Lt#Vӌ}A --$1&M\¬ǫϥkZ5y'}c_f#FJ;0vg(t:#}wbq$Ƒ {o<ۇֽr''y= 1d1 h$p w|m4BZs=~oݓ"(r*B]T&q9>L%mlU֐/aS6e(fHFyRQy:IrS6ռ)n44Lcѳkd]j~oxb IXº> OMcѥ}/iʥȄ[[gUDD"6mhH QH >9S =v endstream endobj 706 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 707 0 R >> endobj 708 0 obj 500 endobj 710 0 obj << /Length 711 0 R /Filter /FlateDecode >> stream xUn0+)Es=5J"RI%E-#;=ag8{3~߹%*xu ,UQ $D4 z9ҝ ~255`pf/7Ϗa|\#  rӘACaY'%cຕ)ԋ;X~ ,1BBgj }`B|hQ?iv\B$<('M9҃q 4<9oڋF#^}Lhbcz@~ZmG7wIR)aLlGb)F؁s´ln֐BZfj Ri\ OSb[DZ#%~>KUB| c؈iڗg?RBuzE(ĎYCm+!X-`8 9Opt~dmuo̕Qd\5Nx6?@HSDl5ETQBQH ٨ҰRAU]a=jb؎XLts4w0{Q>3y)Vp(ѠXNS;>& 0Zq5)X_{F:0\\Uuk2iJG%L+{QTKuowiReLQ '/&Q^<rgeVOSլE 7_Ds+ endstream endobj 709 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 710 0 R >> endobj 711 0 obj 736 endobj 713 0 obj << /Length 714 0 R /Filter /FlateDecode >> stream xVKs0+h$TJ'Lq؈ :鯯ҜR'3]Ƿ+߹Zr CD ). #PS#\!)/997r3$Mu(Ai| #"8N$=]$G`Ss}pٲ(j׷|Ua*rJLv>|t3n]@OۤEV[Yu"Zud@*']/E8`,;vH{H^qMh$ B3f/.ZReHu}s${I RrMkAE0d]]B2-)yΩ4Be T$V'^aXt/~ nFHb4\pnRY\N{#,͸ܵebD1Ja'I$éIa D I/SA@c{jO/QMkD0q} rXy(ʰR}0o۵1tV#Ly/d! qMm [ۦa˭;;3O1-aqcXM]Y$.ftRݐşVK:ϬlYsoֶ9֦]۵kW4{yDNjYzWV MS >)m4"'{륧`Ͽ\t+O G~<ሖ2C+?y'z2:7:eir]\OEE , endstream endobj 712 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 713 0 R >> endobj 714 0 obj 837 endobj 716 0 obj << /Length 717 0 R /Filter /FlateDecode >> stream xTr0 +pg6-F3=$96mk*Q$:ۓ+{GzvPݚ%V߸<K4{R`.% _' "j7z·ywmPJB"4(\Wꥂ^UIDߜш`?0Z59s(t:>&6kV[Z>vA{tb&E`p$I\koirw|pJCNjNI) MPf$U߹k gRuL;soq Uu(4T;u:g İM~+ z]$- a8)^}7:ߗIB0`y>i/ʪHqfX9n/ Ț#CtUu)œ])F3Y'CDƦcPP.ӸR> q=*WE7z$"8q9kjgZn ffaUZ; dЙ Ǜޓ t~ԤNzUu^!.?ġ;V@'W4 Ѹi#%TIln@51ISjMWӭ endstream endobj 715 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 716 0 R >> endobj 717 0 obj 608 endobj 719 0 obj << /Length 720 0 R /Filter /FlateDecode >> stream xTɒ0+8TM--ۤW0\e6$c59JRKW;Dì^[[S v@n^ 6|= ~zڣ{z9Ptz8u~&=VP8Z\ns̵+m]?n۠.qEGFI| ƣ1j'D]?8%'|QRJEТxߊE -jДTQ!c„ Yճ*[\gQ9v0ΐ,ߝ{!uUۙ .OwF!~+=H@-.ov4/UVv0K.x!)7z~o"Rk5z̼4Yd72g endstream endobj 718 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 719 0 R >> endobj 720 0 obj 647 endobj 722 0 obj << /Length 723 0 R /Filter /FlateDecode >> stream xTɒ0+UEWn&ȸ*a-3^iY1!9CZju~qPKqX΋18ߺ<K9XۃLp1OG9:O\ńCϯkЛקq>{x}eQCSjyQ:-T5}%>A$m-vi}\zmAa|1u(iĘY/GtT7-~YNd'r`<(fvG$| (Z[]fMgk gR}\Hg1!x<8ORAЖSM,K(֐(HVRV0 }_^UҪKF3(OC>YU,&YV9{#Lxĥ fPn\iŋ6OW8p,#F-cPP@ C„쳬eb 8q9&jZ&z\veqHslk1FhvcmQ cWmR; wǬ_+oweTQuѨݙ5-=EQA)w0" k׃,,S\|rӄ endstream endobj 721 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 722 0 R >> endobj 723 0 obj 617 endobj 725 0 obj << /Length 726 0 R /Filter /FlateDecode >> stream xTKs0W1JSJx 1?r0B4F,\&4vӓ@pq-[z~ [c꽿 QH7CFX"H"sai7jg E-ޗtg?0Z59sǤ$t 6o}豹Mts-Ě]/ :f1UU_Eld"E\kir||xǜpkNA)|~P/̪;wM8̧a`=Ĝ _r#ׇF%$du+MK :S<1gEKlܽz Ařn0#≫sBn7yY9{!I@ *dWu)%$J!bI3Y/29Hm]u ɤ*3CXH asj[⌓3Jnv f`' ޖTнZ LzU u:zwm;5{/6($!"k=5riٞŔ˟ |.2ӎ`dqZxs endstream endobj 724 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 725 0 R >> endobj 726 0 obj 617 endobj 728 0 obj << /Length 729 0 R /Filter /FlateDecode >> stream xSn0+2Zm#VHiUl &` \ǹ|! Df }ATcB #dN-^! J"kcD; \ο"_VP_*05ةع0gedmY 3kӌmL qq:,\v |x H=#%8a0HkxрܽC = pmir{==Nl+Y, !Q4=Yx y^䪒sr4h$)hB=gy wF8&8DUߊ3٩s(a%*lJ.4/{ 왴(jf<-fDg;b+ˢ*G̅62D4Q|rB~Gkqk 3@37G0W)keA:^Pn( endstream endobj 727 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 728 0 R >> endobj 729 0 obj 484 endobj 731 0 obj << /Length 732 0 R /Filter /FlateDecode >> stream xSn0 +xlU$۲r۰u j@WIrj;+,q'۩s"H0@vTҜ>ZW (!a,$k<>3<>ߑـEVcB߄Drb*r$ǫ$uU/-LZg&O|%MiܡtۿMa(!g=ۅ6m_ě^_ 87%??` `gvHJЇlNlz:}Fjpʙ3Trt9\%|ӥP8!*-%Bn pvMYۗޕkݙ])#?}ڝo勴,uuMZyS#Gz;3iUG-F|Few endstream endobj 730 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 731 0 R >> endobj 732 0 obj 546 endobj 734 0 obj << /Length 735 0 R /Filter /FlateDecode >> stream xTn0+hYskѦ@!Y-"Hr }lI8|v_s_55%(YUыB󡁮}GO0,; .<|Kqf0`4"iiē0pU] ˷+a~Hʐt}/jn`!'j S%AHd|ᮔE iLj/$!̷ u!5VqI~Y)D _e#c#E2\&ngEFQ K^mPFhY; 0jRor%,>|ӂwP\0VGb+Rjs-쒌nNW endstream endobj 733 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 734 0 R >> endobj 735 0 obj 650 endobj 737 0 obj << /Length 738 0 R /Filter /FlateDecode >> stream xTˎ0+ yήU;4HF qKl& ^ l:$^AAB#aG pqpSC ߂'4΀&zo-SXmB>?P$0(eQjvE۵.;et;~{5?I0zk'~G(O { qi9nX]!nq> wq7M~YudG`B\ m}?8% >t' QJ|MZ?KSzމ +a !' |/X˕b=Y9LĘp:DǺtM+Kg- ]%a^,] }Aeۨwǖejj՞ $K,y:ԅы!&"Rb~jZn_ r(#qfYJ0A&*UVjL)4;3b)anh EeVVD'!gFB se5[7ڿdG8iZj+b8٩;[tpt(bѦ3Z'rnJSFNmQK+0]wP[W ³F;n#ݛha2ڨRTv2&] endstream endobj 736 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 737 0 R >> endobj 738 0 obj 647 endobj 740 0 obj << /Length 741 0 R /Filter /FlateDecode >> stream xTK0W̭Ժ~ɭUzH{XV qKl6 I=рD ^:;W `mo [Khi7 @1`tmw7oOSXySmBe(.j-nN3 c?I"HE/0:PMerYצ깃@%?DŽy%.YXe%'894g z0kpTVpμEEqf/HM% ۣ.Gfeö44FǔRzu"xOD]gzme"{EARI'fj !O\g7d~TZݪ endstream endobj 739 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 740 0 R >> endobj 741 0 obj 645 endobj 743 0 obj << /Length 744 0 R /Filter /FlateDecode >> stream xTn0+hXskѦ@!Y-hPdٱӞRg,oI+s)򞝍A)PCX[ %{ʣ{xD(l=zn'{} +K} QȖXЇ<5LVij7*ZUs[vg?`{AIGCτ }o ֆ[۸nwXYtNQr]El%!%;O"M_)&1tOZ:GS 8{y#c$ p< V9f[JnDբ-P|hh@pEMlK4rFzbF$4xg:VtNd$ Ir~W]%T;%LIi#U8,zvR%lj]0> endobj 744 0 obj 646 endobj 746 0 obj << /Length 747 0 R /Filter /FlateDecode >> stream xSMo0 WQۆvj`TM NGYN$Nz˜H|||a~aY^:+AΤ K %tw w]U {x$ 1 $rKDO-="s),C~j6mfs3Lr) y' 4Pֺ62T A@=7.ޒBڸXPDA?\PѓKgbupI> endobj 747 0 obj 517 endobj 749 0 obj << /Length 750 0 R /Filter /FlateDecode >> stream xTn0+ Ekn-表=$Aȴ-@Jr|}ZHٱӞRg,HksD GGS Q4f$)U3}뮒}o$$$p}ZDŽ !lr]lͬ*'>gb5hvZ FZyk'5YYLN:.+;-VVvYQfO&Y6~^Yw'{9DC鸎8-tTΐS:Uѵ*^޳927NgK7]sԁ)^tNjxgVyT:})}UycOt6M/Z6]Qg:_X }Y֠7 endstream endobj 748 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 749 0 R >> endobj 750 0 obj 667 endobj 752 0 obj << /Length 753 0 R /Filter /FlateDecode >> stream xSo0~_qü'6oNjN*UCI~$@% H>~|}~f~‘X Y;D;AD\j(5­!w%2p #=)oP>Chqם iϳ8(qeD B(sV+"C=yB&䴈:@Nף5ɽϞ^No,&2I.'C W>Yh e0uiB<mmCVy*r99 ̖ܺ;0*,@Pd1Dwa1I[ŗ*16V_LB(#ܧb[8_!屉MH"Mڸ݌gDlC <QxHy;ۍ^:C xeM_PT endstream endobj 751 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 752 0 R >> endobj 753 0 obj 511 endobj 755 0 obj << /Length 756 0 R /Filter /FlateDecode >> stream xSM0WqPwlI̭UU{@Bj+-&A]Ҟh@57 @Kd$9{b" *B:p!naO 6c_%Ty>WGX {A $aI(+i'!&r[Ջ|w{Y'H '%4kАhx#IBxX?F@(bԶӮ[ۋۖO^G8dqꍫ_E B^ |H=!':Q :_O&k[db\}`ɥPd:]ms(&G\ +>eK(VlZeUR ߧ_<S7q6R; C_\crƄ2C&­7ۿ_B(d݇rϭG0!Mٴp 3i>*-r P )u/C*=%I_o,}|$j endstream endobj 754 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 755 0 R >> endobj 756 0 obj 508 endobj 758 0 obj << /Length 759 0 R /Filter /FlateDecode >> stream xSn0 +xl(ɲ6lC:)Q$KIzʜ"Hz& >CiEE )r D[|g#\r% ][2^aA>#KD&dTp?yWyY}pE[ֶ~8 ICGS܃Lpv"'`*jH0pg1܍^ l, p᩽cH{}NrN"ǽmݺc\7dpʙp/us*\&EQ2\'`~ shLQYMi ?YrGCx> endobj 759 0 obj 504 endobj 761 0 obj << /Length 762 0 R /Filter /FlateDecode >> stream xSMo0 WQeYm:lA=t@S$b9I8i9D"L}<>{EK(%lw;%gX?%!xZK%VsJ>H`0"᰸DdR@Bp慩b 7͚?`?pu=t$MsW[Q@FxHa?x;@|}h?C# |yhű6. ~^'2ɑ X S{H##U995"вd2M^.O/m7%qʙpOƵ3^B}cAQz|9W XLⷩ\BgUYf~N-+NDZQ-u~c cUu̓!`)j~5wLH!sj}Vmal3 &5Hk$ҥMKkށ$ tbʷ~cqq(w{Hy ;@e54kvlAaItf/FT endstream endobj 760 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 761 0 R >> endobj 762 0 obj 510 endobj 764 0 obj << /Length 765 0 R /Filter /FlateDecode >> stream xUێ0}WD=εo XHHFBbi붆\nʪ8I4SI+ٙ9I^~#;S7 I <jx YB>E *ۼҪb[A>/6[݊ΈgQFaNW> endobj 765 0 obj 616 endobj 767 0 obj << /Length 768 0 R /Filter /FlateDecode >> stream xTKo@+Xj[6z80}gYnO)xP}GpȕDDةOx :9zKx8'o#bΣ{nTZק>ǛtyZ<b"xbTn2it={5`Lwm-itO O* -(55wqγ8ƛ? dē`8o/3Jt-q4fXAQͶP/kcE>{q`'8}Yp:rWeiZZ?*Wՙ*ŶaFAs% ,fW:0f-5d ~>#Ν] endstream endobj 766 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 767 0 R >> endobj 768 0 obj 618 endobj 770 0 obj << /Length 771 0 R /Filter /FlateDecode >> stream xTˎ0+ _yͮU; MY QIB8$9ɛǀY˜CVzoAAI}(6 ?pp'Oyy/ŀGOӵĩo<),ωF!Y }J/ "ᐔlUsT8Q&m؃V?T",±YUl rƉRF*ptH8j1Uy{ԟ7 סع.V ِCCޥ{PjD.OtIB-27|meU X40˛]+shW4BA:x?b1xв endstream endobj 769 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 770 0 R >> endobj 771 0 obj 618 endobj 773 0 obj << /Length 774 0 R /Filter /FlateDecode >> stream xTn0+VhY.ZskѦ@!YlhPnOl!g{Iozqn>.f@Np1“%- ߬<\ŀEO5bT_Лק>{0 X;2GO!yfyRVQZUd95$3-!9==9pl:=Iަ0>hr׮cyzq:ASLqe@F?1jkxg«:JhJ[]T^c\~*? g_lZ0IPf#@>ֶ3I{εxURJLb%%( 6 ^idu]g?ڗYDpF]x~o{g""7rpMJMy"d0' ohLf LܗlV3Nl(u:"m\(^ HMPgK`E&;c?gaiHt92!:\IU)C"uj,}E2-+ȣ#l_V^YZ*I"CVm3 J~diz\[~n endstream endobj 772 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 773 0 R >> endobj 774 0 obj 614 endobj 776 0 obj << /Length 777 0 R /Filter /FlateDecode >> stream xTˎ0+ yήU; MY Qɣuȣ@}s74wZ[s vx6:fOr(|s_r kY7Oa|0 H`-Q<!<28I,󬬒|J+U9}5$3͚!9=\:IdMAamhն]m#vk9h7O1M_E`%@/ ƨA}G$?h(hndne~71$`bbu7> endobj 777 0 obj 618 endobj 779 0 obj << /Length 780 0 R /Filter /FlateDecode >> stream xTKo0+k ƹ+--ڪIxc> endobj 780 0 obj 580 endobj 782 0 obj << /Length 783 0 R /Filter /FlateDecode >> stream xTKo0+vnJ{k! R0)8!hHvf<3|󙗀_Kgc83XH?5nV;:@15vP{SX_F!^)XKJ?j奭 zn Mͤ9i}!= ֦hmhik{׺]@mOAmaڸhqY((`Y;#S{£ R*g*Kϵ+7KW;&r™Km>E9Żvsu V8[-,--e xvM O;EHlsF#b6&⺃ uiW6)Y\ IBP]/r[dLҐH(NNU0vք M{VUژgQ*wsܶB um9#8SbFSx]VϬ j#!T, KbK鶪P7#mE endstream endobj 781 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 782 0 R >> endobj 783 0 obj 581 endobj 785 0 obj << /Length 786 0 R /Filter /FlateDecode >> stream xTMo0+;1sۯH{h*"$A nE,A̼y󜗀_KgȨ3xȄ?5؈펖m;(9ga&>x}E5>(|GZB!r%0)9<\YnfS$.+ _x'4LZЫY3= q3BoY]nvim?zܵ.qe} GfC{VfhvߏLEDG5-"ʮyɤJڕשKϝO0\ҝ!<更6O#Ptӎ< XQ2G4) C#= yE&+uTTpH=,LVex*y:]T,DNR<-\𜀤,Lh&4qyS=vƎ@5q=m3|O^cR\PpD]6UQyJ9N?o,7KhjkMRB6$(E Tb韬vl'u endstream endobj 784 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 785 0 R >> endobj 786 0 obj 574 endobj 788 0 obj << /Length 789 0 R /Filter /FlateDecode >> stream xTn0+rEҷn)Л=$A`Ȳ-FP(Hl͛Gx (>EQ4> KH%ܮ[ z[eW@1գUbPESx_CF!\ %L Dpa 0I.=&yV *tJhZ7ϋxz.m]h|h~_ g/ zY*Sk=rTa6 $*2 뼀%tڮkqq oY/sFb6& ]mg2-|y Cg`7Fv} :qy?IiK} endstream endobj 787 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 788 0 R >> endobj 789 0 obj 605 endobj 791 0 obj << /Length 792 0 R /Filter /FlateDecode >> stream xTMo@W19t;-HzQK(Ϳ׀bv5o޼gF8>:Y1A6 PC^lp%\~EEGD/ t x:_"D4"I\9ZB$: $9<$YV4öٺn }O4IiЈh&сVc}meQ$pU;v m֋:A8U/z,>2ܵAz șZ :ιl[_ݑכi=[=Q1(d($2Tpi` 9O3A3)-T (NZ@5hC{TYłlD䦘)̊&/<-}-TIO11+,yyދ2=4 r O Yլ6~C~AL\vj>cqR= i N*} [*>lY /k*X0ۖ%`שׁY3̿ endstream endobj 790 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 791 0 R >> endobj 792 0 obj 546 endobj 794 0 obj << /Length 795 0 R /Filter /FlateDecode >> stream xTM0WqPcǎ~mzXVbD"M;$Ҟh@ho=8 A_b'aևKPuiq!ְ:',OGBV`?,Ozq_,l[Tϐ`ߒ&?h4M%c޴БG:pMA| }h]`=aCdlܴ=@-OQ)xLtB ZsP/z׋uP9p.Hrn M!A. ^fITpAZy SW1^rLߋʪ EasFڶ2=}b̊LPi js~*W<-#"2E;nl\L|ݫݲCz rT>kZ-l>6,%$Pt|F""> ;LuZ+`B-Q)5,eICywVռ󵙰?$ endstream endobj 793 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 794 0 R >> endobj 795 0 obj 545 endobj 797 0 obj << /Length 798 0 R /Filter /FlateDecode >> stream xRn0+۬j+U8 LFU6@^S@f}o|Dz.): CCfa'+Zo3,'լO/{ ~9gF|BbzkW9(=fc>h: =h{D.C!`mߵ7YE#Dg0P( xEšEY:ʢa|C#/RCHu!1dJ5VYOf׈i-)-Dʧ|N/ؔp]g#=,!Vp5Q.c6;s|!@!AyW1 gۖ2&BV6طȿ- endstream endobj 796 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 797 0 R >> endobj 798 0 obj 403 endobj 800 0 obj << /Length 801 0 R /Filter /FlateDecode >> stream xXK8 W`gnv[Ew Q&F+c_J-ǖsDH 0>QBQzXheE!"Gt@-\c&G_`p0(xV~\|W#ijCF$EhQ:7 PSgyVѮ):Eu .ba}>8t)E@ˑA5r+VCyk1|g6 <<~ʈ"^|Q$g 6I^> F L0Ƭ >asȧ% cNtQU!^HTyMi4V;Y2ߎE G*޵x>&P2o˧ @ >Aiي ̥9lDΙ AuSb6g4 ,c#|0$jmy}+$ T^TiU_kJS(砫`U0 Y,ۜY Vz?` vZ^9ϧPWꠌ\0,YW īaδ(엋+Xv<8! t_b{o4/C63o Q%HchXy#p c)sϕ7MOlԷt% fS]Mul t+Ymxi1rUm5 Y<J L&c*ű4.r-:eyGYfrDe4+塣M\}ݘEYzji!,;B0Aßeuuy~Z!HrSdȟJ.w<$z_?哬ʕZ;~RNF|W `&^?;3pú3ajHv5é[垲gQXvs>|ZF k;d5%~,{a60 ģpØ:BUh}(3^!/`PHЇ=CI8QZxŴ+\ފ`+GZ3#Lc!ZA֍L`e^)1"l:'y"IZ%x|Uh&fDz.ċ`lJqގZ*l3p vJ9cS]JK :pj}$vJ&tdtb,꽝fp1js ?T˩!|qorǚT(Si=~Z耒%΅C'>G gEA Y[%lSl]R/#2I*[JM]Y[<+Ao^+0r7Xa#a0-ԂHU4ޜ}eFb0^ڳ[u uI7\wO{~apKqjυS13|CYu\:+G/x}{lju1wHܫ82]W9eԃk:Q]._>/ݴB endstream endobj 799 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 800 0 R >> endobj 801 0 obj 1650 endobj 803 0 obj << /Length 804 0 R /Filter /FlateDecode >> stream xVn0+xtᦅuzKk8dZ#Q /)J"eKnN@3C >G XSk &F)f yH'}I ;;߃}H;4\+ͷ`e&@J0l*g6\mQLC[wM M Dǰa|p24<񦡷;kZh>m!Vdȵ.ɧ'#6d08 'Q;# ]{үBm[\Fa `Lº wpߥ ԻcB!޵Z:K.B>R9C%V\W!+0q(V;fRNy*Zt.:UfiLn%S^}JNu ІB\PCI4oЄ( uušʪΕЈqypES: buw Ő!w ֹAW0RDadXOvקALd/E 蘷[Pu),`B ISlqF(oA uqET2;U0F(h&Dd`fG[E#nvoTs-N9m\$B~6eHy7tF'[b架)i-+O !"zΓ]qx_)fS U7h=N:p/17syդr)hr$<K֕h]Ub6`Bnߨyz<8K+4swiUٵj++=sJ;jnp"A\'7R ?B7]= endstream endobj 802 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 803 0 R >> endobj 804 0 obj 867 endobj 806 0 obj << /Length 807 0 R /Filter /FlateDecode >> stream xTKo0 WFI~H 0 b'5G(_?r'm2ۀR#G&}HU챷 H%7 *1`#;Z!v.V]J!y$b<(n='dɕgM=[GV>NFo`ja56 X7]B)޲v ?gs endstream endobj 805 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 806 0 R >> endobj 807 0 obj 526 endobj 809 0 obj << /Length 810 0 R /Filter /FlateDecode >> stream xTMo0 WFQeaء)7u[2׏zl"H==>PM fx| ,W2"a#Ak'%Mr׃d#xv~G)Fm:1ihDjJCpsu+ҭkf7-dŗlGVdMz}?+"4l[oO=ۇ} f֓:p+*v'zB̄8s7z4Jw}ZvA빾r/.#1 44!7 EZRcs}f C,\l /qڋP{⹥q{6wj拶lfLm (g;^WHT> endobj 810 0 obj 509 endobj 812 0 obj << /Length 813 0 R /Filter /FlateDecode >> stream xRMO0WB{ըb> endobj 813 0 obj 311 endobj 815 0 obj << /Length 816 0 R /Filter /FlateDecode >> stream xTMs0+J۷vv[&tzs $& cN/.voa@w0UΫ1910p*0؇:e> \!rjw[y>y+z} {K|DQCD\ ,ȚJ-:eS3$? /'6H+?q=Xr퓵/jZtm:3nDCGyЉY/K#TD̏/ S;HU{$ėGC4ƔRt^w!J[ g. X =0,^ <Bt9K)E$#+ @+^7GQ!4^ h@?L蒛ڮlzYģ dR}n]r/$8Q}xQR5?Eaxz-J3N<(LR nQ0h4]=y {+BC}b).L[[/i{6D4䗥Iw2ogWlBîmQfwlTC.sA!),v=)p0p*%j? JٹN픱Flx~i}pb endstream endobj 814 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 815 0 R >> endobj 816 0 obj 638 endobj 818 0 obj << /Type /Action /S /GoTo /D [655 0 R /XYZ 72.0 720.0 null] >> endobj 819 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 216.78 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 818 0 R /H /I >> endobj 821 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.02 709.5 542.02 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 818 0 R /H /I >> endobj 822 0 obj << /Type /Action /S /GoTo /D [658 0 R /XYZ 72.0 720.0 null] >> endobj 823 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 220.11 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 822 0 R /H /I >> endobj 824 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.998 697.5 541.998 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 822 0 R /H /I >> endobj 825 0 obj << /Type /Action /S /GoTo /D [661 0 R /XYZ 72.0 720.0 null] >> endobj 826 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 222.33 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 825 0 R /H /I >> endobj 827 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.981 685.5 541.981 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 825 0 R /H /I >> endobj 828 0 obj << /Type /Action /S /GoTo /D [664 0 R /XYZ 72.0 720.0 null] >> endobj 829 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 214.56 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 828 0 R /H /I >> endobj 830 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.036 673.5 542.036 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 828 0 R /H /I >> endobj 831 0 obj << /Type /Action /S /GoTo /D [667 0 R /XYZ 72.0 720.0 null] >> endobj 832 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 216.78 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 831 0 R /H /I >> endobj 833 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.02 661.5 542.02 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 831 0 R /H /I >> endobj 834 0 obj << /Type /Action /S /GoTo /D [670 0 R /XYZ 72.0 720.0 null] >> endobj 835 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 193.45 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 834 0 R /H /I >> endobj 836 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.182 649.5 542.182 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 834 0 R /H /I >> endobj 837 0 obj << /Type /Action /S /GoTo /D [673 0 R /XYZ 72.0 720.0 null] >> endobj 838 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 215.66 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 837 0 R /H /I >> endobj 839 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.028 637.5 542.028 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 837 0 R /H /I >> endobj 840 0 obj << /Type /Action /S /GoTo /D [676 0 R /XYZ 72.0 720.0 null] >> endobj 841 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 215.66 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 840 0 R /H /I >> endobj 842 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.028 625.5 542.028 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 840 0 R /H /I >> endobj 843 0 obj << /Type /Action /S /GoTo /D [679 0 R /XYZ 72.0 720.0 null] >> endobj 844 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 222.88 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 843 0 R /H /I >> endobj 845 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.978 613.5 541.978 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 843 0 R /H /I >> endobj 846 0 obj << /Type /Action /S /GoTo /D [682 0 R /XYZ 72.0 720.0 null] >> endobj 847 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 205.66 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 846 0 R /H /I >> endobj 848 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.097 601.5 542.097 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 846 0 R /H /I >> endobj 849 0 obj << /Type /Action /S /GoTo /D [685 0 R /XYZ 72.0 720.0 null] >> endobj 850 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 226.2 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 849 0 R /H /I >> endobj 851 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.954 589.5 541.954 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 849 0 R /H /I >> endobj 852 0 obj << /Type /Action /S /GoTo /D [688 0 R /XYZ 72.0 720.0 null] >> endobj 853 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 213.99 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 852 0 R /H /I >> endobj 854 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.04 577.5 542.04 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 852 0 R /H /I >> endobj 855 0 obj << /Type /Action /S /GoTo /D [691 0 R /XYZ 72.0 720.0 null] >> endobj 856 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 195.67 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 855 0 R /H /I >> endobj 857 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.166 565.5 542.166 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 855 0 R /H /I >> endobj 858 0 obj << /Type /Action /S /GoTo /D [694 0 R /XYZ 72.0 720.0 null] >> endobj 859 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 216.22 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 858 0 R /H /I >> endobj 860 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.024 553.5 542.024 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 858 0 R /H /I >> endobj 861 0 obj << /Type /Action /S /GoTo /D [697 0 R /XYZ 72.0 720.0 null] >> endobj 862 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 223.44 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 861 0 R /H /I >> endobj 863 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.973 541.5 541.973 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 861 0 R /H /I >> endobj 864 0 obj << /Type /Action /S /GoTo /D [700 0 R /XYZ 72.0 720.0 null] >> endobj 865 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 241.22 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 864 0 R /H /I >> endobj 866 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.85 529.5 541.85 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 864 0 R /H /I >> endobj 867 0 obj << /Type /Action /S /GoTo /D [703 0 R /XYZ 72.0 720.0 null] >> endobj 868 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 227.33 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 867 0 R /H /I >> endobj 869 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.947 517.5 541.947 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 867 0 R /H /I >> endobj 870 0 obj << /Type /Action /S /GoTo /D [706 0 R /XYZ 72.0 720.0 null] >> endobj 871 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 226.77 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 870 0 R /H /I >> endobj 872 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.949 505.5 541.949 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 870 0 R /H /I >> endobj 873 0 obj << /Type /Action /S /GoTo /D [709 0 R /XYZ 72.0 720.0 null] >> endobj 874 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 208.44 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 873 0 R /H /I >> endobj 875 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.077 493.5 542.077 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 873 0 R /H /I >> endobj 876 0 obj << /Type /Action /S /GoTo /D [712 0 R /XYZ 72.0 720.0 null] >> endobj 877 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 221.22 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 876 0 R /H /I >> endobj 878 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.99 481.5 541.99 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 876 0 R /H /I >> endobj 879 0 obj << /Type /Action /S /GoTo /D [715 0 R /XYZ 72.0 720.0 null] >> endobj 880 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 217.89 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 879 0 R /H /I >> endobj 881 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.011 469.5 542.011 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 879 0 R /H /I >> endobj 882 0 obj << /Type /Action /S /GoTo /D [718 0 R /XYZ 72.0 720.0 null] >> endobj 883 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 232.89 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 882 0 R /H /I >> endobj 884 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.908 457.5 541.908 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 882 0 R /H /I >> endobj 885 0 obj << /Type /Action /S /GoTo /D [721 0 R /XYZ 72.0 720.0 null] >> endobj 886 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 219.56 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 885 0 R /H /I >> endobj 887 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.001 445.5 542.001 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 885 0 R /H /I >> endobj 888 0 obj << /Type /Action /S /GoTo /D [724 0 R /XYZ 72.0 720.0 null] >> endobj 889 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 226.22 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 888 0 R /H /I >> endobj 890 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.954 433.5 541.954 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 888 0 R /H /I >> endobj 891 0 obj << /Type /Action /S /GoTo /D [727 0 R /XYZ 72.0 720.0 null] >> endobj 892 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 421.5 218.832 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 891 0 R /H /I >> endobj 893 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.878 421.5 541.878 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 891 0 R /H /I >> endobj 894 0 obj << /Type /Action /S /GoTo /D [730 0 R /XYZ 72.0 720.0 null] >> endobj 895 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 196.22 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 894 0 R /H /I >> endobj 896 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.163 409.5 542.163 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 894 0 R /H /I >> endobj 897 0 obj << /Type /Action /S /GoTo /D [733 0 R /XYZ 72.0 720.0 null] >> endobj 898 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 240.66 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 897 0 R /H /I >> endobj 899 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.853 397.5 541.853 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 897 0 R /H /I >> endobj 900 0 obj << /Type /Action /S /GoTo /D [736 0 R /XYZ 72.0 720.0 null] >> endobj 901 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 237.88 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 900 0 R /H /I >> endobj 902 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 385.5 541.874 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 900 0 R /H /I >> endobj 903 0 obj << /Type /Action /S /GoTo /D [739 0 R /XYZ 72.0 720.0 null] >> endobj 904 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 232.88 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 903 0 R /H /I >> endobj 905 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.908 373.5 541.908 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 903 0 R /H /I >> endobj 906 0 obj << /Type /Action /S /GoTo /D [742 0 R /XYZ 72.0 720.0 null] >> endobj 907 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 237.88 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 906 0 R /H /I >> endobj 908 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 361.5 541.874 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 906 0 R /H /I >> endobj 909 0 obj << /Type /Action /S /GoTo /D [745 0 R /XYZ 72.0 720.0 null] >> endobj 910 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 252.32 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 909 0 R /H /I >> endobj 911 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.774 349.5 541.774 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 909 0 R /H /I >> endobj 912 0 obj << /Type /Action /S /GoTo /D [748 0 R /XYZ 72.0 720.0 null] >> endobj 913 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 225.1 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 912 0 R /H /I >> endobj 914 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.961 337.5 541.961 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 912 0 R /H /I >> endobj 915 0 obj << /Type /Action /S /GoTo /D [751 0 R /XYZ 72.0 720.0 null] >> endobj 916 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 252.33 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 917 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.773 325.5 541.773 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 915 0 R /H /I >> endobj 918 0 obj << /Type /Action /S /GoTo /D [754 0 R /XYZ 72.0 720.0 null] >> endobj 919 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 249.55 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 918 0 R /H /I >> endobj 920 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 313.5 541.792 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 918 0 R /H /I >> endobj 921 0 obj << /Type /Action /S /GoTo /D [757 0 R /XYZ 72.0 720.0 null] >> endobj 922 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 244.55 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 921 0 R /H /I >> endobj 923 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.826 301.5 541.826 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 921 0 R /H /I >> endobj 924 0 obj << /Type /Action /S /GoTo /D [760 0 R /XYZ 72.0 720.0 null] >> endobj 925 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 249.55 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 926 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 289.5 541.792 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 924 0 R /H /I >> endobj 927 0 obj << /Type /Action /S /GoTo /D [763 0 R /XYZ 72.0 720.0 null] >> endobj 928 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 206.22 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 927 0 R /H /I >> endobj 929 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.093 277.5 542.093 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 927 0 R /H /I >> endobj 930 0 obj << /Type /Action /S /GoTo /D [766 0 R /XYZ 72.0 720.0 null] >> endobj 931 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 245.66 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 930 0 R /H /I >> endobj 932 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.818 265.5 541.818 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 930 0 R /H /I >> endobj 933 0 obj << /Type /Action /S /GoTo /D [769 0 R /XYZ 72.0 720.0 null] >> endobj 934 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 242.88 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 933 0 R /H /I >> endobj 935 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.84 253.5 541.84 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 933 0 R /H /I >> endobj 936 0 obj << /Type /Action /S /GoTo /D [772 0 R /XYZ 72.0 720.0 null] >> endobj 937 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 237.88 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 936 0 R /H /I >> endobj 938 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 241.5 541.874 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 936 0 R /H /I >> endobj 939 0 obj << /Type /Action /S /GoTo /D [775 0 R /XYZ 72.0 720.0 null] >> endobj 940 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 242.88 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 939 0 R /H /I >> endobj 941 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.84 229.5 541.84 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 939 0 R /H /I >> endobj 942 0 obj << /Type /Action /S /GoTo /D [778 0 R /XYZ 72.0 720.0 null] >> endobj 943 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 262.32 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 944 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.703 217.5 541.703 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 942 0 R /H /I >> endobj 945 0 obj << /Type /Action /S /GoTo /D [781 0 R /XYZ 72.0 720.0 null] >> endobj 946 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 259.54 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 945 0 R /H /I >> endobj 947 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.722 205.5 541.722 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 945 0 R /H /I >> endobj 948 0 obj << /Type /Action /S /GoTo /D [784 0 R /XYZ 72.0 720.0 null] >> endobj 949 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 254.54 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 948 0 R /H /I >> endobj 950 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.757 193.5 541.757 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 948 0 R /H /I >> endobj 951 0 obj << /Type /Action /S /GoTo /D [787 0 R /XYZ 72.0 720.0 null] >> endobj 952 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 259.54 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 951 0 R /H /I >> endobj 953 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.722 181.5 541.722 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 951 0 R /H /I >> endobj 954 0 obj << /Type /Action /S /GoTo /D [790 0 R /XYZ 72.0 720.0 null] >> endobj 955 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 245.66 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 954 0 R /H /I >> endobj 956 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.818 169.5 541.818 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 954 0 R /H /I >> endobj 957 0 obj << /Type /Action /S /GoTo /D [793 0 R /XYZ 72.0 720.0 null] >> endobj 958 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 245.11 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 957 0 R /H /I >> endobj 959 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.824 157.5 541.824 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 957 0 R /H /I >> endobj 960 0 obj << /Type /Action /S /GoTo /D [796 0 R /XYZ 72.0 720.0 null] >> endobj 961 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 145.5 220.041 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 960 0 R /H /I >> endobj 962 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.87 145.5 541.87 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 960 0 R /H /I >> endobj 963 0 obj << /Type /Action /S /GoTo /D [799 0 R /XYZ 72.0 720.0 null] >> endobj 964 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 205.11 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 963 0 R /H /I >> endobj 965 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.102 133.5 542.102 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 963 0 R /H /I >> endobj 966 0 obj << /Type /Action /S /GoTo /D [802 0 R /XYZ 72.0 720.0 null] >> endobj 967 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 217.33 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 966 0 R /H /I >> endobj 968 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.015 121.5 542.015 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 966 0 R /H /I >> endobj 969 0 obj << /Type /Action /S /GoTo /D [805 0 R /XYZ 72.0 720.0 null] >> endobj 970 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 222.33 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 969 0 R /H /I >> endobj 971 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.981 109.5 541.981 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 969 0 R /H /I >> endobj 972 0 obj << /Type /Action /S /GoTo /D [808 0 R /XYZ 72.0 720.0 null] >> endobj 973 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 216.77 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 972 0 R /H /I >> endobj 974 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.019 97.5 542.019 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 972 0 R /H /I >> endobj 975 0 obj << /Type /Action /S /GoTo /D [811 0 R /XYZ 72.0 720.0 null] >> endobj 976 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 85.5 234.886 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 975 0 R /H /I >> endobj 977 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.774 85.5 541.774 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 975 0 R /H /I >> endobj 978 0 obj << /Type /Action /S /GoTo /D [814 0 R /XYZ 72.0 720.0 null] >> endobj 979 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 210.67 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 978 0 R /H /I >> endobj 980 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.062 73.5 542.062 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 978 0 R /H /I >> endobj 981 0 obj << /Length 982 0 R /Filter /FlateDecode >> stream x_%{}_䤪z2 @.& ATK )b+S{sWs3AMWO?s^vTxo?nKhnᆱp|/wۻwo??yoݾ-:w-Us?/|?yw`?_]e/Zn?_~z__}O|?il~PMV6x7={b'7/k̷1 OWwgv̳;~]x@7C.x7Ep)K.\ xl xl xl x x x x x x x"""""""D`;lB M %Ns8$)K. c@0vcA0&Mv"Ep!CN"Dp@07 sA0w<@0    LLLl[x'/wyoW8ר_GnFK{}d[ߟ|'R'ԷFxn$oT՝%8nTO'YNdr"%5uZ,k.5yZ,k$XIj LLLldȲtJՍ)ةNs:&I,Y.bY)wєbY)ddddddddȲe#N,;Yd9r$I,Y.\bYs+Ų&WReͮ˚^A}eͯ& $$˶:Z?P|[kf>_oy:uө?|,h墧7Gw0uv~@{{yԩ^R/AnTOϗ R'CQM,'Y.\d8882222222ɲe#Vg]x@<6C.x7Ep翔c@0vc8@0CCCCCSSS6l"E`.C"8Ep%K`n ;` y```````Ꞅ5^ۚoyt~ 9^ps/֟/i-m܎߶1X|+ kSŌI|=#uPM,'YNdrccccccc $$$F,Yvdɲ A,'YNdr"%elbX.ebX!qedddddddȲe#F,;Yvd9r$I,'Y.\d27M,s2w],s<2̃,,,,,,i񞿳n1dt}۷z}_s>ΡzyܴST?=:T/?=ꅺQM,'YN\drˇ^l/׻X>NB-SP U/dddddddȲgUP/?=ꅺQ=zHU/A5YN\drU/bpx՗],zˇ\bp 5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,X>mB-[PV/bp՗C,θz& $$$OzypU=Ο?;zx2W}+?~T4Ӊ|LƦ56:R꠺Su9ɲe'N,Yd9r$I,Y.k]jk]k]j LLLldȲgZ:T/k]FNr"EK,u9Z{ZZ,u9Z,,,,,,,Y6ldȲe'N,Yd9r$E,X^rP.z.X^rׇX^rPeeeeeeeM zd|g>_pn~-n] ޟy/o>bu꠺S>IݨRNr$I,Y.\bYGI-uԻXgReq!uęddddddddȲe+STFuPݩ^RσF5Y.\dTey&X֡gRe{!uddddddddȲe#N,;Yvd9r$I,Y.\dIJDZ,P4wcѤ:MjѤ& $$$k_.m??]6掹םy>z~it~sBTwԟN^SO'_/I5YNd9r"EK,&_/b0rZ,&__||Peeeeeeee#FN\:zNԟN^N u,Y.\b0zˇ X>L^aˇ 5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.||P.j||P녚,,,,,,,?|tatݾk>x}z3(y 1,E\(Mj7aTNS:Mu2eTkJI9֔RTkJI9֔rR)%LjݠT, J7'uinP<,7iT.R)%ZSJwR)%ZSJR)%Lj3nTS:Lu4iT.S]ZSJIjM))'՚RJ~jM))70000444՚R3sa`)~h݅>o7?>ct%??Onqp'uLӅS[(?_TQ,/(OMu4iT.S]Z/T Z0T)Z1TTTTTTTT6SmMj7aTS:Mu2eTi9#N)'z)Z9 z)Lj3nTvS:Lu4iT.S]HJ9CP%IJ9փP)'z*jg 3Qc>_盼x`w?OwCuv̛7-N˷u|ucA[(?qQ,߸(7iT.S]ZfjmIjmQNiF9֦Lj3fTvS:Lu4iT.S]H6('4|'4TkLTkӌrS S S SMSMSMSMSmLj7nTS:Lu4iT.RM3I6('4TkLTkӌrS S S S SMSMS:2dj1Z6v3՚`j}nU7c}\֞'[lvin~C yZ>(Hw˗$'z=0@rR 9^ TTTTTTT6Sdt  y|R^ <-$Mu2eTHN Iz`z=0THnaaaiiiiT6SM0aTNS:Mu2E$'Iz`^ TTTTTTTk~sKf#5竄߽؟7 ?j~g7;ImtuO iByX-_W(o2eTTTTTTTTTTTTTTTTT6SmkJ7NzT7s:&E,Y.M,c2v],c82C, $$$F,Y6dɲ A,'YNd9r"%enbX.ebX!yedddddddy=e\KBָn?)_}LVؼ ,Akߍ(OuСay|Q^J,7eTI('3QNUPN5f 3QnaaaaiiiT6SMj7aTNS:Mu2eTkD9ITkD9rRLj3fTvS:Lu4iT.S]HRj $IFSj $?HSjjjjjj5vv qLqs~͘S7A*3=_x[C]p]§C.(y|R~P(*nS:Lu4iT.S]zE%9^GQAuzE%9^GQInaaaiiiT6SmMj7aTNS:Mu2eT$'(*wRT ?H:JrS S S SMSMSMSMSmLj7nTS:Lu4iT.RT$'(*I: T$7000U-͖fK W1iBv>Z&yp?f~q_i1T_uev#o{j5'\)Ay=WJ[(:Mu2eTkrR6IjI~j}TTTTTTTT6SmMj7nTS:Mu2eTZ;lZ;ljQNF6SmLj7nTS:Mu4iT.R6Iv$Iv('a aTTTTTTTkma[\fq~te"Sfźn{C\oWayuX,|P>6nNS:Mu2Eђj('kcVrR^[ 6SmLj7nTS:Mu4eT.RZ33wRZ33Iffjjjjjjj3fTvSMu0aTNSLu"՚QN53|'՚QN53 ՚Qnaaaiii8#椡Ե8ok o48C18{z\ݝ_ärϛnI0I[(aIy $7E0IrRI5LTa^$M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Lu5LTa;^$I&IN0IrS S S SMSMSMSmLj3nTS:Lu4iT.S]z $'kN0IrRIz $7000444ZjmePs-`mcn.ۏq3Jct7F:up?.{\4q8?ay|Q~7'TNS]Lu":rR$IN⢜T$.INTTTTTTT6SmLj7nTS:Mu4eTI\j%NuZ'qI~jE6SmLj7nTS:Mu4eTI\jE9I\j%AuZW4j6ys~̛iYoLwυĮz ƶ麻qay|Q~S,T.S]HYj$IYj('gQnaaaiiiTR1/~X,|P>7rSLu"gQN5Β|'gQN5Β gQnaaaiiiiT6SM0aTNS:Mu2E5΢TkE98rRq8rS S S S SMSMS \Z*u~}?/ǟX?nF Fܼş/Zmo8}\4R!K-_Ӑ%oOiȒiTNS]Lu걑걑걑걓걓걓걓qqqjjjjjjjj3fTvS:Lu0aTNS]LujlFj;Nqj6SmLj7nTS:Mu4eT.R͍Ts#H5wR͝Ts'(c$˻K1I:F Tc$'1I:FLrS S S SMSMSMSmLj3nTS:Lu4iT.S]z#&9^LjAuz#A1bjjjjjjjj3fTvS:Lu0aTNS]Luuz#&9^LjIN1bz#&֎C9drm3n㸙e|cf%>>im\bM{Z;G\<9,oOZzayTk8D9pHTk8D9prRLj=X:vn8$y=XKf%yZ>(kI4eTprR;prRprS S S SMSMSMSMSmLj7nTS:Lu4iT.RZ!ICj $?HCjjjjjjj}|vX=f8?ilhd6&>ȽY7= B[(o7'BrS]zlzlzlzlzzzzzzLj+땼,yX-__DH,_DH2eTFo NjzaaaaiiiT6SmMj7aTNS:Mu2eTs#H57R͝Ts'I5wR̓T /֌^ț5|PfB4eT>їT׌^IqAkF/Lj3nTS:Lu4iT.S]fBNkF/fBNkF_R}\3z!70000444Շ5'/kFOnC2xՏ~74Ψܮ޽0ϯQ7䱍|yj-_|7˧t8Ac2ZOTpj=N0004444fTvSMu0aTNSLu"z:ZOTpj=NTpjjjjjjjj3fTvSMu0aTNS]Lu"z:ZO|'z:ZOTpjjjjjjjϾV.㈚g:{9zowjZg \S?KZFmQ˛[ςT.S]HZjM$IZjM$?HZjjjjjjjj3fTvS:Lu0aTNS]LujM('՚jQN5բTk%A5բTTTTTTTT6SmMj7nTS:Mu2eTTrR;TrRZS-M5L5L5L5M5M5Mv25Eu{yz÷߿7 nN~z3 ڑ7 M(_*) $yZ>(U IZTU IZzw?|w_}s_o/{D~V>.nܢ6~z8~lE5f(OI('ڟTkrR)TTTTTTT6SmMj7aTS:Mu2eTkrR}*I6('ک ڪTTTTTTTT6SmMj7nTS:Mu2eT־ZWZ;Wjm]QNwE-jXs' jX+Ȟq3?Uaۜ͡'s޼Cw~9}\uӛfrNyZ>(?SwIΒT,iwR)':KrR)7000444fT[?~X,|P^U yXnT.S]ZgISNu;YҔj%-Au4Lj3nTS:Lu4iT.S]ZgISNu4ZgISNuYҔjjjjjjjj͆ί|~;X=th~OC7GOV^Zyy|3(Xy!˻՞fq煜TW{BN=_R}\y!70004444fTV{?՞[(Xy!o2eTW{^Iq煜TW{^IqA=/Lj3nTvS:Lu4iT.S]Hq煜TW{BN=/Bnaaaiii=NFW{ڳ?oC?|߿ͿܜS%O=ys~ic_klC|I^k&7'ArR5M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujPNf"NfB9֚֚ Lj3nTS:Lu4iT.S]Zk&jPNfB9֚֚ Zj>%<-XqsݞfPkP%Fϧjq7t}v6o.{%՝uM)nTO9P'CC,kI<)Xx!O/aNS]Luj 9>f|9Iq5ㅜTW3BnaaaiiiiT6SM0aTNS:Mu2E/BN/ ՌrS S S S SMSMS}Xxju{nfugf?~~J|kogr\IW= fyX-_f<-':8rRC)':8rRC%S S SMSMSMSMSmLj7nTS:Lu4iT.R=ZRNup(ZJ~jJ6SmLj7nTS:Mu4eT.RC)':8TTPITPM5L5L5L5M5M5Mƚ> ZGLc/{=ʠ7oxrݎcb7= Ο%w$oO!yݳCyXNuώ;=;jݳC9=;6SmLj7nTS:Mu4eT.R{v('պgGTI١TM5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujݳC9=;ZPNuώ=;jjjjjjjc}22Gn[ 6~}I~_~ӽ<YӚ77nzH-␸K > )S.\"Dp`1`;`` 1֍````````&k/ay|R>vA,Mu2eT/In|'պrRۿ$?HnTTTTTTTT6SmMj7aTS:Mu2eT/InT/In պrS S S S SMSMS1OZkZm?n[Z8?=>3z>|}sW=oWӅOz|&ɛӏ|P7rS:Lu0iT.S]LuhpIz48;^TGKNף%7000444fT}mK .y|R^<-ף%Mu2eTGKNף!Iz4z=TGKnaaaiiiiT6SM0aTNS:Mu2Eף%'hpIz48^TTTTTTTNvs@-ϯ{itfڷ>tmqsǏo{oFͅwC3Ay,˻qX,7iT.S]Luj ('Ij ('QN54TTTTTTT6Sm:/K~PݨRzH=7jdr˚I-5#z˚I-5˚IMAAAIIII,Y6dɲ A,YNd9r"%5Z,k&XLjԇXKj LL`TCmo۞\y4$4!?VՉ1[3 xݼy$[ozEfNS:Mu2eTkmrR-wR-Iֶ('ZۢTTTTTTT6SmLj7nTS:Mu4eTZ{\Z\jrI~jmsQnaaaiiiiT6SM0aTNS:Mu2EE9֢Z^j-{I~j{Qnaaaaii6[% &Xwֶn.>-]ʾ/?_95fۺyI|s4A,_&A5i<,7E'MIN'MIq6SmzMb>E5iY>)&MkyXnT.S]q9~4q9~4q6SmLj7nTS:Mu4eT~4AN'MIqz~IGȠ6.M? :f,nFm߶7> XIy-IkQL[(:Lu4iT.S]HINTz$'k|'6SmZm[so;k|'y|R^;Ay$Mu2eTz IINTLj3nTS:Lu4iT.S]z$'k|'9^;IA~5TTTTTTTTkQ)ekӄZ v0 endstream endobj 820 0 obj [ 819 0 R 821 0 R 823 0 R 824 0 R 826 0 R 827 0 R 829 0 R 830 0 R 832 0 R 833 0 R 835 0 R 836 0 R 838 0 R 839 0 R 841 0 R 842 0 R 844 0 R 845 0 R 847 0 R 848 0 R 850 0 R 851 0 R 853 0 R 854 0 R 856 0 R 857 0 R 859 0 R 860 0 R 862 0 R 863 0 R 865 0 R 866 0 R 868 0 R 869 0 R 871 0 R 872 0 R 874 0 R 875 0 R 877 0 R 878 0 R 880 0 R 881 0 R 883 0 R 884 0 R 886 0 R 887 0 R 889 0 R 890 0 R 892 0 R 893 0 R 895 0 R 896 0 R 898 0 R 899 0 R 901 0 R 902 0 R 904 0 R 905 0 R 907 0 R 908 0 R 910 0 R 911 0 R 913 0 R 914 0 R 916 0 R 917 0 R 919 0 R 920 0 R 922 0 R 923 0 R 925 0 R 926 0 R 928 0 R 929 0 R 931 0 R 932 0 R 934 0 R 935 0 R 937 0 R 938 0 R 940 0 R 941 0 R 943 0 R 944 0 R 946 0 R 947 0 R 949 0 R 950 0 R 952 0 R 953 0 R 955 0 R 956 0 R 958 0 R 959 0 R 961 0 R 962 0 R 964 0 R 965 0 R 967 0 R 968 0 R 970 0 R 971 0 R 973 0 R 974 0 R 976 0 R 977 0 R 979 0 R 980 0 R ] endobj 817 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 820 0 R /Contents 981 0 R >> endobj 982 0 obj 16435 endobj 984 0 obj << /Length 985 0 R /Filter /FlateDecode >> stream xRMo0 W9;nڦMڡS~ a%A8vl-a-sHJ} ߻<K%eR >IE^RW*aO\AV8 J7V@5v S[^~7@i*he{k&{!DȐ|?Q _t yU;}wi؁B0@D7xӊ| xӈ EY,4E,o` &i\a8t7QUkevX V^-Rvg(N?bT\փ݉ڂfgl Z\P<>ȓZA;MCᵅDVmW ֩, ϫ5jF{-/e3 endstream endobj 983 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 984 0 R >> endobj 985 0 obj 402 endobj 987 0 obj << /Length 988 0 R /Filter /FlateDecode >> stream xTM0Wq#m6mVJՊdh}m IISJ"y<7Q ."fUQ ޻"4, z;=52`2F?P|FO&b^%ߣF %- 9f> .tr={  (l] ]݌ (82`|mhO_]!t|z9 cǪ*yAH GR -#XW|=ծty\Ϻye8N&B  WgдGPNȘ8M.%\Z(:导[F7MVؗ(M~t^ $fI8[¡޿VjH'C DZq̙k5ϸ5s[u9sRhP#vZZL%D12caYԳS}K*mtYr4LXHj.-V?D(!DT0F^a ÁtrTތbKo%;N>SN'`~?Hg6,GY:ll@"$ endstream endobj 986 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 987 0 R >> endobj 988 0 obj 595 endobj 990 0 obj << /Length 991 0 R /Filter /FlateDecode >> stream xVo6_qo>akꢐm*QD5(d2%(ǀD ]}m ""MA'<z9ܜ ,bp?=Q>}=Ptx<\ѻ7;S8z("?$' !&'.Nej^}P}DFO6NwFC0؝K( -6bE[]2踊Tj"2x2 ,+&PNIW|\ИCv:+Q.4іys™! 38 $̆h"UPtns }CY1.tpΥS>z6%?>j5!I8IBppmͲ_%ʫD@|p?ǶJHABطlu~2{[le ]S-ɿDŽ '6௲Ye䥩3Js{U+> endobj 991 0 obj 879 endobj 993 0 obj << /Length 994 0 R /Filter /FlateDecode >> stream xSMO0WۉJ UDE$%I~qhB˭8f4x3ϯL c%r JwX!NaoHY_V0ᑜ/0]|ƽރg`)+#4ѐp%?.n]^V[H5a7ЌK o=p=={k[PYBmZu[dh$OGqQ Yq a|@ :J3O"}'DW -\ubde1.ZOw@$ QP3r@H i'F?$HiϮrՐ0_e2aZ͖YfͦAR~2`8r %E=~2 [Xe5Fg0Ѫ,-KvU-6+FDlN"k + #-P endstream endobj 992 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 993 0 R >> endobj 994 0 obj 460 endobj 996 0 obj << /Length 997 0 R /Filter /FlateDecode >> stream xTK0Wq9k;skՇTi+ 0)6  'ld71K$9, ﵳ183X@xtr.%lWz~xO/\ŀ?LgS_{Sx_d}(SDbsIOw$Q޷g?Lf19€=N -vԺ6b]Gq3 @FIܓnڛA'<>pJ".&|5BD\YUNty[͛ʍ9tSb8̧a;׳Ms f!'hi9.ĵHuـ) YVv_%*]\Aw [lCY횬9"DF]G\p0O b~HPz]f_=u J"@cLqʡ_bjHl[e"h= '6W,l5rMXqpFix>o]aqJ1XDyqpb”Λmex-u>lT뺶9)wq=irNjrתAzi)/z 8ʙ endstream endobj 995 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 996 0 R >> endobj 997 0 obj 613 endobj 999 0 obj << /Length 1000 0 R /Filter /FlateDecode >> stream xUn0+ViX(1]F@Q82$}}vI{Imr uPG 9$s\ф|#܇ ۇ50xk^B~;Cs~Kpi:97'SX9"W躧S |8D~Џ-6}wD#4.i=C=~cԋ Dhе1hlyAiAA(ƪxDFI8A1k;4;<.pJ|ŇjA2w@<"?9"Tv\T r{ g. y"]*]dӼb|Hy0M/%O]"W>)g}eHsHs,VlḆbI6!-0c^lʴK{A(a#9d]x'0117Zq0'e(ئGf*: c Г2@y} эL"Ksː0לxD9'g2p%`KU[}9;'jv.`z:/ .6 (ž/to?)]GAt0f^jW&(|])] I]/w\)ЪҩSK/ (kًWaf\wq+0nK[N+=MƳ%-ݓ4\4zH˪NHWSB endstream endobj 998 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 999 0 R >> endobj 1000 0 obj 729 endobj 1002 0 obj << /Length 1003 0 R /Filter /FlateDecode >> stream xUn0 }Wm j,KV6 ENee9$NtIyC#ww(awM&I`2hw!4nwx ݇σ^}wC߼>U) >|QHn I8u%!&!!bd}d)M5{% ls)R/zp :鉠wѺ`cպZsF(Ѡ}CUiP.Q<*7"]Ox>0QaCf/OO7X\e&e9&1N8 )e 1L&bV\b8W K +;2]|7L 9l+Ӓk#ۛXJ馡Iޚ΂P Gf88&2Z+TVE.^%$0 Wy/1a~6¦$9'3Jp"0e.Pa 8tP롖ZU"f6{-:\W>/^x(@a+|](ekXeSsod0H5jZwD7}?'o~ z { Wtolk6N3Cw07iY#d7}sfD endstream endobj 1001 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1002 0 R >> endobj 1003 0 obj 721 endobj 1005 0 obj << /Length 1006 0 R /Filter /FlateDecode >> stream xUn0+VhYH1]F@q6- Pr~}IZ-Am@3CC!z]fzx]V^@4 ͎q,ztx|2AMCt6G5Xϳ8pQU DQ4a^E(F\CL*Ae;@c"(Udv[8DPD1ѳ4/\Dm [6*-S#`0;XBP>ZON$kzNHgB\Q)MrSGs2VT}ʹ3/NF`P ̚R5k86So J*rf  a+x So}ˊ;:Roٻ#mI7=.Ku#:z-k-dYE^cZBw/sOH endstream endobj 1004 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1005 0 R >> endobj 1006 0 obj 713 endobj 1008 0 obj << /Length 1009 0 R /Filter /FlateDecode >> stream xUn0+hX(1]=C8,ɡl_!]vZ83,o|1=5G$93ノ18 X@x4v;୅{;o^nb£Glw>on>%އ!0 m@N'KdpyCe~d/U%h v|1_D,ѣ0㛁x }Èmv kqΣ8hQU͏ "2x$&x͈4;<>pJ"|Ňe7n|]E~v:Su({C g> y"]* 9YrMk jrW> endobj 1009 0 obj 729 endobj 1011 0 obj << /Length 1012 0 R /Filter /FlateDecode >> stream xUMo0 W&ɲea;t CSn&Fc;ٯeqlK H=)yvPԋTlc $׷!& k{ѧzo,\!4 ;\ECjsݫwקr>̜wW0 ǮE'! .Waŷ8͋=̢mW;}u>ظ63/I= OÝx &S[omj.bLǬ'yЎ8Tś?-@ W'];qS"9QA2w-]< m/8/"VK @p™K)&M f"J`}.q9r.2(h=lbEGRvweJn0)n4nY-n(A y`E2Yɀ &`dg2leњ|mjYB:njt@(%Qt51 ?*5J/T@w2 ?HZe9'3JF#z <{\튬Qgk-n+6HAZO'i/]YNТUUFٲsQջ!6sUyʸa; wŠi]QLʋzz|Ah=Ʉoխ,!Dţ=!@)h!POJ @J5R|> endobj 1012 0 obj 800 endobj 1014 0 obj << /Length 1015 0 R /Filter /FlateDecode >> stream xUn0+VhX֢ P@!GfPrPYNKj̐7Oǀ>"!ͽ& M( ȡ[=-|Kho(|..p<:.W'{gy kS}tpj?Q1I* Tޗdg?9gǯwzу@IOm }Èm6֚ę{A;b7m~\Md)vHۻ$W F(st+**WU؈|5Ap™O)Y^(FƂh?^e^YWj12{V]UG[> endobj 1015 0 obj 716 endobj 1017 0 obj << /Length 1018 0 R /Filter /FlateDecode >> stream xSn0+-EER)P(! ՑZNp8̼fF80}&y >JL+NGTPAc(C-<%4^7 /0/a\v fkFdӭDQBJ Rh *x iW勮07ϐ ߲=6f08nAGv`z]C}m S Mǟgy- b+B(MV+~v m  QO|^UԸ2.뉙7u^4IS|^w詷B$1>&'x* P RdEg-̲=/L cyk:Ҋ R[@y$VK?f7JJpPR@/z69|d| ˘F&lY`Cd'Ś&iqyS)596E.^ iRJ}2VG.9@<I3 6 2nޯg6zy5/v-{CہC endstream endobj 1016 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1017 0 R >> endobj 1018 0 obj 537 endobj 1020 0 obj << /Length 1021 0 R /Filter /FlateDecode >> stream xTMo0 W˖uۡIĘ?[QNc@vh#`]kȰ5!pEE92w7I +y~A 5'2;9?5pD*OQ)9<}y8VH.AͬɡIM@7GJoCvZDU$U B; g4ܸjgtG=x_h48ݗ '//@ *dc H#3MB9t.ӽఱ$ vV].Bi*gWNtQaahOV*:Pё1粨z,S%8cA7ȱ]XX&Yk7δ; endstream endobj 1019 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1020 0 R >> endobj 1021 0 obj 560 endobj 1023 0 obj << /Length 1024 0 R /Filter /FlateDecode >> stream xTM0W̱=x*-jՊM ;!!D5p`m bPGTP@an 6.fHI|#Oxw<ݜ+1pXHQܣ$T i~آfƶ N'n$k}5>9#vz2C20ѺZ!av.NB; g49q~$F5COxUcЦ^ݟ-kk#HP%cELa!Q1rX q ymx__@m;۴v ΢H\ulRY!þ6MP3D%Fȅs_Hlj{$HSDhwr[_ 7*/[[C[AVW^W k5PvWy5:eF\eV\/ok#^ubGYǨ,wͫ\| ֥/YzU6[?ѓ Lt񙑿  endstream endobj 1022 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1023 0 R >> endobj 1024 0 obj 553 endobj 1026 0 obj << /Length 1027 0 R /Filter /FlateDecode >> stream xUn@w,J eR.,vGay\liF39{=0N`;v #@v{.!vCMH7SIM)ߝgKg;vc|}#s%H_,Х@Oj-pC1nFozLԟ.wz!8W !kjr뭬Z;Z!vjt..SqS`^D3jn\Q#5\'u+S\Ŝ|sOgY<LJ4,$pB 1|EZ4ti8Fm'j$ .G.EY5iAo$9JL!v3C*1%L݀^R4kej0yրлZ'YkYG8y}yLb)p<{>F~ƹQpQb#Ӳ87^= 'Mu6`[4SS`+agbIY\KcèU4Fi!UG~iNy@0gduƼDh}[?>=m endstream endobj 1025 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1026 0 R >> endobj 1027 0 obj 620 endobj 1029 0 obj << /Length 1030 0 R /Filter /FlateDecode >> stream xUn0+ԃbz0b$eid&'6@bٙ][p`Qz}gP }A }~d.!lWy{O/xw 7;'%0_K>#cH a0/,v餺}M@p33|c?FD!9?9C5arbߵjحc׋>9uq>W%<\)Q<8Wڨ'F|W>1(p̃_SfEQ/Ҫ^Jq$2рZ)8 iz82s<3ƇodgyܾNeo#оY8u=˻*&* B_D%4mKYDq(G"阗܏P`@;%^lSC^gpb^tUd:©]#^a U`)V ovk!{8ljmz*+']e6l&fD:.W/Q0e%ޚѳk5yޞ; GTua|WЩV\m[2>Fn=cDW :tzYr p>4yςt4$Mz endstream endobj 1028 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1029 0 R >> endobj 1030 0 obj 637 endobj 1032 0 obj << /Length 1033 0 R /Filter /FlateDecode >> stream xUn0+!Rz0b8ZKL}d9fgvvIm<_ cYmvk $Ox[Gp/dң{y9P|xt?{#~CoOa=NO0 "?$GcprSUiZJ߿mz`?d34tsKd#QkbzWhةǎ4q]qS ! QkB}>8%qN\M=<-ȟBIf+u<|N82s% 8{4JLhgƹ"FR%yWV>a<Z`04Hy[Vu=4>DXFqȂ.[f\6ίt{$/I֙ժR>Cv}Gtp$2yUG2-T +6[H:Ye0mI03wwĩl Ƹ}~\g,tw*/8M7aXh7[6O_#곻V7yE; :)Ik1.JkG;F^K4To endstream endobj 1031 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1032 0 R >> endobj 1033 0 obj 643 endobj 1035 0 obj << /Length 1036 0 R /Filter /FlateDecode >> stream xUn0+ʒB1M=CLBؒ_.-ksNmə#}`)Ĺuh0 .Qrh.dToB!9o0|^^ 0~V=|oak=' 9KxbaȦ\}(9yY!h_!a} . լ4M_C/wz&8W5mV[Y۵v4Dc: ܯ77S# YXQ#(FL^~M(\n Wxx?8w"âS}c"I}&d4kJ(G)D ;Q4fZC%nĦ+V2P_@Ȧ{aX:P>wg>Mj#ȱM_Q&w}L8 y91h>QE#*hJhvBi7MtE{G3 2I9-s2Ka6WGqf#Tw"nҲ/-rQ:S]&:&0ɢmxUqlsku: O]owiuS)IYQ_ff3eVV ܡ΢ NEc2}Gl·c#jsg9"OWUE\gpS:;=n}T紲rY endstream endobj 1034 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1035 0 R >> endobj 1036 0 obj 645 endobj 1038 0 obj << /Length 1039 0 R /Filter /FlateDecode >> stream xTM0+{kb㽵RRV*bH4ʿ#D07ofa@,RqRgHh\ #|)4T୅=F ?̡y~5P:WeЛSxs>0 \"ON#<4/NRW/|q>5.AͲΡN1ǿ$u wzCޚе>Xnm֬6kZ=veоTܔ@HdQ`ҿ:7ڤDk£ mU? 0 IKBubSt?4}_#' endstream endobj 1037 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1038 0 R >> endobj 1039 0 obj 586 endobj 1041 0 obj << /Length 1042 0 R /Filter /FlateDecode >> stream xTMo0 WI,Y=nX !DM#u,; I ~ :'A#՚"\R vAO6~0Js^ kdvs~[)!# IEO+@?$wm^ I?C|IjfФ_ӦG$kbmE9KZD6 v*]qSmU!=YdTkrG3t8ݟyzڦ#`&gr'Jkp ug H hj2^". IwUJy:|x+C:m$5:6Fa@CK|?*R4svHGvǥ*hWn6Nx5[ΧP^F1(.NB|Oߴ}Q/>b[@2lWvKC71\x4!粨zi*PJ*ѵmuj݅:Ͳ}mڕ㶬 endstream endobj 1040 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1041 0 R >> endobj 1042 0 obj 536 endobj 1044 0 obj << /Length 1045 0 R /Filter /FlateDecode >> stream xTMo0 W˒uۡKĀGYv8@GR buA uo4pEErjp7;IJ+y|B^ d5vs~[)!# Sh}wEux$׾\5..v>sD{FCp 6nkH$l^N2XTܔ@gcvun\Fz QW| 4Zs owwKYuP7wAbP .,RK3%gΕsf 5 K/TO mZ᭬&kn&V8T1(?Hwȕ:Vl{J7\svNՁIyfm'1ʴp˴wCu2(+n)pHw㶅;paoޣl*[]B)n4LkN<+"U > endstream endobj 1043 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1044 0 R >> endobj 1045 0 obj 538 endobj 1047 0 obj << /Length 1048 0 R /Filter /FlateDecode >> stream xTn0+-Mc@ 0"44(dH#YCQ=3fysĀ/JsTsoc87 0Ix J5GuDG)PFt|C/Oa}͢/10 l"NH? >ܘ6ָg;C5..n?EA8bIw=l[kG( -ۻ~j POXOAea(iA(d;R`);) w`{SN_|X*4j Z6vl^*bm(P߱_$ gRyCoPNa!7j hL SCnј| E )ę)l4UQ箰51 LOf{O7Iһ.ۢ]ChIJNx@=9ɸ +H+DCN&IRBqt O'E`s< ƦG;+s(M!Xڢv'&Gp7[;ɖsN$gkewbs@8 [+LμygbOX>v>7";a3R endstream endobj 1046 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1047 0 R >> endobj 1048 0 obj 572 endobj 1050 0 obj << /Length 1051 0 R /Filter /FlateDecode >> stream xUK0WqWb_yx C m"5I7I)#ͫiVJ7g&}`3K(($XйGԇ:ۇ952ҋ; ~x7Sp<?xWǰO> z" ' B xUU5}1a5+M֘_l'>ӝQk i6[ۮjqֳ: UL"4@Q4iѳ p[;)0zǚP;ns ou@;Qkv4#p(a9<=0ʌ&= pM%U6f q$VQ3zi#=A`!tQ^j* D ȁT_"%!0\rW=f<%%> endobj 1051 0 obj 661 endobj 1053 0 obj << /Length 1054 0 R /Filter /FlateDecode >> stream xTn@}W#Hv/-Q!D\KlSw b0}igg=sΙV.a{.fnA {ۂ|K3E ~Ax{P  c _ЫS0|ˣlJdڄS86DpO>z0NAVegF0Ԍ+}t`Dx+@|Qh~UDSmdP]T\{ (qFs\FJZNW\ׄ:p^P»?1ɂpl%r'J繫 gR|T:YeEm:3iؗ`,yPlWA . !]BE|EpVaݶm8*dYPLf&5= ;:CdUU !K l{,ܙe@UpkcgMR5iu8{Fᴯ-S=(ݔnmb-"%FJ.kq G?.ҌhHr++S;Ĺn(CfNO/ec7^mP4r`4u1L7g$qjkMO endstream endobj 1052 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1053 0 R >> endobj 1054 0 obj 645 endobj 1056 0 obj << /Length 1057 0 R /Filter /FlateDecode >> stream xTn0+ KR(-E DHi(6 IPe[՞RG3|fsJsXc8Ѡ0AYBno KxK({P>wh\E&Sw=&IJv%>*\ۇCR7STnMw~SrM溏1ǿ"} RC' 5ۚkqǝ'4~SBY $>U;j Sps« <\^*Ȧ:Ю,]/I BJ2Ʉ$Jb%d>~p9w]gk!ft0i6oclRrEٖUf**:/!~qD|ܦO3"1/DZ,2-^1v  sPWYGz%].ӶG(9 }CCtLXh-B;3O XذR7V4=0.KR|4SU$aR`kWBp8۬M >V0xX=::ō!^FXff$Z﬛,Ͻ8ݷդ0)LFD ? endstream endobj 1055 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1056 0 R >> endobj 1057 0 obj 656 endobj 1059 0 obj << /Length 1060 0 R /Filter /FlateDecode >> stream xTKo0 WIlY=6ڢPm%1?j˲_?JrR9,S)= (ٗT2xl $0LQ LA :-f/ —7sXt?_W#~Cߜ</#`ًD"&GƐ+pHK=fʺ]C~ >;Մj\.}cI\w6"AwwFCXamhvk9tmxD'/eqSBZ $D'U;hDׄ < j\\*ɪ-z-tkn־cg% g! z-@[8Ci4Va;> =7fu ktlm<ٞ(OVC^nUGP(`N<ҧtfˍ̇LH'B)S@:[u'{1T00 A~;!V{*] av#M]T4b{Q&>< */2V iPPtFstwk^1CT]otn3n_4B#Oc]w?uиDpFiKٞ7e㲷 Dr=^d-0R]Mf$aç^8> endobj 1060 0 obj 671 endobj 1062 0 obj << /Length 1063 0 R /Filter /FlateDecode >> stream xRN0+H%,[E$Uqڎgµ$͌gy3>"VD+ { h8ޚ: #% DaxCqfM7շ||BCn/Ԝs3[h]Aٌնt/]#:>NO49 oW=%5!ɧw@G!`sGp$SX=.kJ<G0tLBA$b5it9c.ORp 0eNwზ 6:[K5oNZL-=mdeY6&5jVQVJ&Ԥ:QP6XQb>M2"S JHfW@i^yF_I+ endstream endobj 1061 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1062 0 R >> endobj 1063 0 obj 409 endobj 1065 0 obj << /Length 1066 0 R /Filter /FlateDecode >> stream xTMo0 WQ6`;Enj̖?M[LT^߇'aݰd`$(LqCiCNM6x6yޓ x~ \_sӡD刘i\I EWŪ EՔP]_C}))!aP0Yk#Gg2`h#K\uj\Z#zzVdT`\40(ۣi֜ WM#CQ-j&]%AO{/1ۇ+]yX$B! NqFЊ[m;)`b]6k!-4U]WD(*!m:]k*db߾vu'!PsgsZċy)u7wWg$T34)fߔ)rǵ͜349.%>X!N>*#0(܇%Aq endstream endobj 1064 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1065 0 R >> endobj 1066 0 obj 480 endobj 1068 0 obj << /Length 1069 0 R /Filter /FlateDecode >> stream xTn0+ro ͈ PŖEږ'W@j7^3AvQFBV!( AMQ rA~AiO6r `5=<f8|f#^_&P@S"&B1hHc I7IrHUGHP? = 1Kzf}Bq`g[նίuxzc¸j˚P6j@/ ʬ @ 薏1QEFCJ<ŦlIO}mQ/sEC(@..c1&N5Ds)qz+m6OӟeiaY5pKC#ؒ\?unj0"Ficb}C0u{eC_ @RO]nw]QOgڊ uh" qG4L\7зiݕihYkewY[@RDCBDޭ7kZ\D.F۱jmM   endstream endobj 1067 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1068 0 R >> endobj 1069 0 obj 537 endobj 1071 0 obj << /Length 1072 0 R /Filter /FlateDecode >> stream xTn0 +xl(ɖ6`-[P;Enj,鰿ei&- &E=\X EޢNtTDe 5D9?5_pWCad|$_ z;<{~5/)PD̦hȸ/ y  yUm]>B~˾BJ@hcmzbHZFs0> :҄޴{''yYLOτy6ٓp}h=Q cNtԐҤHejbQlS<۲hc%Dr) <gZpwMa1΃f`nͪ+[^KXW弄*5PWŮ!({H)_ QT1]kәkm5#5Zfy)ƭ.:|]~H'(hc쯻.]7@"@G0,~1 q̫Q~它YE>,KDq endstream endobj 1070 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1071 0 R >> endobj 1072 0 obj 480 endobj 1074 0 obj << /Length 1075 0 R /Filter /FlateDecode >> stream xTn0+h E}k =H#Y(6m (G;%YRl7! p8,=gv$y=6>6 @ƾ3xk^Bc ?n&Ij~B tkT51@u59#R 𤧃οնG5LǭGq= G1ƫ?2JGʬ=H[#S1:%*]4;=BfQss_*3r0 K >' Js: 4]0 *4GT|婆Ra),JXe#fn٦@{OʯI\r#@K$aKh긺+BUBUUjI+E^ ė.eer91894h/v603$٭:G2]UoȽ7ིzXjD6jX!8.2"m<:T 7^$aVj7j.s\Y+RKyOYzLm_g"ə  endstream endobj 1073 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1074 0 R >> endobj 1075 0 obj 671 endobj 1077 0 obj << /Length 1078 0 R /Filter /FlateDecode >> stream xUn0+ E}k =H+Y(6m (G;eVd@T6P7c.0+ B#(#X۷<,\Kh{ ;<ŀӵ߂ =/^2x?D(dTF0.!+fdE 7F5gw}gEC3oBYD!=h []#txzaPš0^qM$6QIvT/ڳA{<8% rSEhճt7M]襃9vYR9LPʰYa}in9O-s ZAWtQհ,~* :vTbF6 GDZ%'qP91I*eӮ)|4Lr;iuٟb""!e.z-na?#-Ei(eiڲG'*BlUC9εY" M $.;efub908 9=ڍj6p' LrީmզV:t7+;wkaJ.19kc|]npxu8'H$xeK0yZZ,LowܹMO;]z(nj#~s{*#x@tN7%xI endstream endobj 1076 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1077 0 R >> endobj 1078 0 obj 675 endobj 1080 0 obj << /Length 1081 0 R /Filter /FlateDecode >> stream xSK0WqPvCՊ%Ʀq a@G3L80 Tfk8HI޹xJEk V!gGLBc ?%  Vr-xBƽ!®ޟ|,/ppE)ciM r w7Ҭ5Ӎos9 pZ%mw=d)Fz:޶a}艽Ch-; ь|y;`}Ca\yM5p% ʷbOQ S%:*=ͷvMmG#Bt~Gr4O=RAO8*< ^ǙL֮时fNOQ M~y/c_[oq;:A*Y(#Um7TѺ}}d4eՕ,km~8y*%Q-]<(V`!/ ʓIU,IYc6Ad#em~~X׎.,;ӳV3 Ou4DT_ځŰc7;&. endstream endobj 1079 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1080 0 R >> endobj 1081 0 obj 534 endobj 1083 0 obj << /Length 1084 0 R /Filter /FlateDecode >> stream xUKo0W̍]5toHZw7b7 P~=c;o6[8ҭEyP]G,8d{19Q #`!졳C[{ [=sãr&ֻq}6{>F!}W0RD !"]o{ d.=3ݘ C3a@#5 }CCicgquQ ED%ɑ vB=S[b«1:*=eUyuՠпnν' pSpV p O+8 s pӪzf+A75L J6FQǶSYTT1YDĉO:0UfX-'0hR"X2dWMil.DI D22y,\B:"W)/DB#宥⠥8$Ұg_o (d֥zᠬNƠfBiY[׸Q'é(V%纒8eոٮ͝Fpxܫpx6u*=ͶPpL*ueUC-GU-v9.Þ1[#3QZҗ!9dv6L[~Kr1ԩ{뗬\uKgҟ:m 0;YNL3ЌZR ω2ߪ7Y? endstream endobj 1082 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1083 0 R >> endobj 1084 0 obj 735 endobj 1086 0 obj << /Length 1087 0 R /Filter /FlateDecode >> stream xUMO@W:V-zD Dvڢz6zN]|7o/q"`YDC,@ޤ pń;j-m3*#/9o)!y.<:|c?=E3hDT,"񏀴4s!9ߢ?:ztcY7C+zF:{kWPYBmׯ x,10޴} Gf'jzVoړA YL|dLHtۖfSECBnH׮7*&n!cYmBLp4,ma虓}pBN3~Wm{i$\'Xh¾W?2.G%!SfRAS#,~M[DZf(oݘa^e}]=L ztuy=Sތ]8/Ym]#̾M*QPߗS%ԌӪOVl=3#]\Cz7F"[W/ @ֽ^f5wt@R )olv endstream endobj 1085 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1086 0 R >> endobj 1087 0 obj 628 endobj 1089 0 obj << /Length 1090 0 R /Filter /FlateDecode >> stream xTn0+-KRZiћ9$AƌmԒQPf[vsJe 9{{H1 [!+"cȠcظS#w.+ 7@1`tMu0w;SXU B4P1tL)(rIIjA $֚dP4ozh4cFzm އ_mmoě_O :F/7-~Z2JԞO Y; S"1QNJ[@OuX|6P V:_XnBJTsdD0d6Frq.ԹVgiIύ_'p̀kj.M)t\pTpBǑ_bk׶ l0*JkU>SD̼ywM{baL"e–&5*ZzsCSq 8@r WaۉOru:9'.884Tu[tBH{kL{9Z%b7~w: !V&bxnԎ Pf^HrUQģ̟4:g~$玃𦅵-g@3\SeQ1x :ȱ-!&R'rD\ endstream endobj 1088 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1089 0 R >> endobj 1090 0 obj 651 endobj 1092 0 obj << /Length 1093 0 R /Filter /FlateDecode >> stream xUKo@W̍Fj} HB]qh*l7H^3w4wfv|'ſ+$x<5>7.;}kp   &@1CLz6yF!zW2JRppoeJλhH0- 7 Qs82Aヲ>:kkv{x$àCcaiM:QRgwG$| 蔨tzXeE~}P_jJޓ\N82d<&n1 f*8 K pW%F#m u; yUc`$~JL6=r0mt@+d/dHWr7iA %qΉ^˽ !\|JU]UЃuFU҇.[ A'uY>QYY>z04sSaB ] SIo}+pr<[5q,B.6PqZU%$zLA;mvlVٺ/؋JAdYۮݞ]5 Q V}]rd7 ].Ҳs滌-Tg?Jleڸݙduf F (˻[ Ϳ^& endstream endobj 1091 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1092 0 R >> endobj 1093 0 obj 734 endobj 1095 0 obj << /Length 1096 0 R /Filter /FlateDecode >> stream xU[o0~ϯ8v'x@Dbcuۈ℉qt !s.w>v$Uݷ>_P !aoh^BcIj~@ `Tuv']237=41sF d{նGvpq֓8hQOk"x&xf )1:%*omjB/Q+s[*3u0.K '2l,t,dD0O{h uj(UN ڢmSiȳUY`K^#"߲cL&̅Kur FQ,q>n^4@ 1?$e(6r[JW]GLK$"P4M\SH\:S%PP6R/1a= VU\g'EUu Zk: KCgS!Ԯ\]d-aBѨb3̓ hE~I7m0!fX$xa ;U~{ћ(r{GLו2q@szo'K̰ zVd~rl endstream endobj 1094 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1095 0 R >> endobj 1096 0 obj 673 endobj 1098 0 obj << /Length 1099 0 R /Filter /FlateDecode >> stream xRKO0 W N8mZ%k׊>5cߓ4e^F9~|v6E4d3` "^8@A̧<=Jr)a.)W2_(P gdy}@o W'rgqܢ}A` 1&=HӈQ #@K/q`x+Bw@T85DxjgԵ|<>}G8\DSeAarW)#N]& : 3aEܣ .k3s̶luZDt_PeQ Im#۪je: S'c2lg4% $ endstream endobj 1097 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1098 0 R >> endobj 1099 0 obj 379 endobj 1101 0 obj << /Length 1102 0 R /Filter /FlateDecode >> stream xTMo0 WQ޶ac;=-qߏN`, (0H+aY'HPqbJ kd%l"cX )i.-F>WGxbS[!][R[k+iOBZݻ&_틼4wyk:!:̒wZOid4#O_Auit0 >?' dp宝 |Hnm5䴈zBu01+joݕR(DAXBC .>r/9M/%'X{6/v[=A`VP&W?9І =VKr^d.MvPmÉM̅mC/jq! h.%\\ܳm3ɺ `| endstream endobj 1100 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1101 0 R >> endobj 1102 0 obj 499 endobj 1104 0 obj << /Length 1105 0 R /Filter /FlateDecode >> stream xUMs0+J%Nۙ Lc9f%G`iVzzvCB =8/]B](@}pn@nv &`7d<<r~\ wV~BO;@ ĻS|/`>DDŽ0pse qRT}% (Vm zd21~ark\7DrA*Ƹ*'BčFn`Uh>7[>Ԅ[C B *JwwUr7-'YSw%zPf4K|+ ?Jʪdj U (2 ZA@3YY1ŜsS.bB]FBpYМ%fCL)?Gbd~_S!ZI(l7K(:2y5e31*9HH*H^.g MB@KlOzXЩr(^f Q"ORSNbͳm, S,MjT`n4o2ɄeUTs/$ށyw\_ endstream endobj 1103 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1104 0 R >> endobj 1105 0 obj 599 endobj 1107 0 obj << /Length 1108 0 R /Filter /FlateDecode >> stream xUKs0+Bi;S=aC`XuB`͵fW~ţ@cH26`1` Bgl`PS wCᷧ=߽Gt`#;o1ru|ks}%<[$/R2ϙ??eZuj IV&8eТg^G ȡg2;rgCörnX]!nu SqUl %~|0 rN;>#SNx4B$PTKu{ێSguTiGUA0QNb.dJI 8MXt\ MZZz Ue) YQSP0 mSοnv g /#,.d  2|]_i٩.Sao'F F\T`r|PW6CyŤퟧQ/9^=i 6OQumM&坨x2IUNKNBn`YUJ5zUdls6uMfG*"Y:/6\eL(QBqnTmla?y-Gu endstream endobj 1106 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1107 0 R >> endobj 1108 0 obj 590 endobj 1110 0 obj << /Length 1111 0 R /Filter /FlateDecode >> stream xV]o0}Waq6CӢ Z48kwIB`J]5{-<  $t=41 P |ykTk3C8Y{z7Gtެ߬WOxᅣ@ $wX d>g|$~srV[HeH{A hVsmf~듅0 +-hFlnn׌Z=v<eScjHv\^#MOy[>*0( !Tn[uqQ]zt:NK P>4 /V4/DEՓ&_VAm{ g1ꦝ`(2y΋ʪ=Tȗ2XlAu p%vNRc~n?hꏮ~+lh<+5;0*ܪj NΖz9$>}st\/LbRlHUB*5 p4S}"]lZ\6bb6+~&5 }!1Nmvbw]}شK% |ZhW5c L_Y~9ySe endstream endobj 1109 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1110 0 R >> endobj 1111 0 obj 643 endobj 1113 0 obj << /Length 1114 0 R /Filter /FlateDecode >> stream xTMo0 WIlYuӂۡ+$VcI)QIRLjR{$ {nm [S#@`O6h hl|a@P_&N5wlqu|OC@ Hi5jk-jHBto+]鼬اt@HI|BAfGӛhmU%`{׺m\B6 (q!,qU0>P +vH}7t!BPY wsSwSVg]Q.L9J% BCi$Wt5D,/DsL-0XeCLװp |=:rʋ i"OĢ؋eo~[u^w.VskkcLBФ S$> endobj 1114 0 obj 484 endobj 1116 0 obj << /Length 1117 0 R /Filter /FlateDecode >> stream xTKo0 WQlYu6`vmخlؿNb絞2ۀR$W&/ko dڛ}+j-,;+S@a|&ރW0gss!%R+RRqI?ݿ,t ES>"$B!0L<ȑ({}ﭡ6gk_\F q,!qc\>P F@6U;H_{G!/rrG3D=mr[4>]UvO7($$pޜb]a4O=*R8"}@x)/ |N(0] BW-=աe^HԫvnC eFgƤŠHr 7Gɘ񛇿 )٦]XiDfEz>4ŬsC1,AH2$-?p jj~Z> endobj 1117 0 obj 497 endobj 1119 0 obj << /Length 1120 0 R /Filter /FlateDecode >> stream xTn0+ʒCIs =ՈҠPlj-dEy" ͛7 A;h,`T4d1};{l-mLgv@+]c3~{"/`nSR@>(P<\?7wmn$_B } HZ_<9냣d qۣPauY$Cl@)x| (r&G= PpMS~j2!Mܴ.Ei.s*_(:刕f32OD=D>MdW^n ]6U²޷U1 LP}(à?UGyA 1I1KF yّh2<=L*I@nA_3đywÁ%{lFY~)]f6 o%꺑Cj_*qLa67ylYU8N|{*^e-M*MkUOȽ endstream endobj 1118 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1119 0 R >> endobj 1120 0 obj 563 endobj 1122 0 obj << /Length 1123 0 R /Filter /FlateDecode >> stream xTMo0 WQ,Y=vjPc;Ő&nc 8?r;q<`, "#)= waq`ϭM#ж5% }pݎx7 !JE޳sȀ_51^I| (P"!'Ç [훛", duoCM|z h(hLsuϑ{:s 6DZkטHF=q=2?%??.ʴ7 \j' {=[G="VzS=WWn%fy]] IRQqJ1>^Z i;"w pc\i)e^km(kkYAfow;F$C}._=;s+Mr< m͋jSl_6J G.rXWo8й~b>񟨽: TNW8 CUQvsٜ endstream endobj 1121 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1122 0 R >> endobj 1123 0 obj 478 endobj 1125 0 obj << /Length 1126 0 R /Filter /FlateDecode >> stream xTMo0 WQlY=vjPc;tE̱8Ű?rIܝ8RO$ ob,b#:C%+N@iI1lc(A{|@$82q|'f=~#2c ![HGR֒TFd υB6{!AVAf⿑mX0қm cOk\B<`\LT(4pS;i>艀P}Mհ"b ws\cqYm.L $QqI/g@%u`|;).\.y2J΁$Ogkfd5 4u^8HQHu^<;s+md3ex‘Ϸ=bYP-arr@'`Ď,V"oSU4|㦙BB]> endstream endobj 1124 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1125 0 R >> endobj 1126 0 obj 486 endobj 1128 0 obj << /Length 1129 0 R /Filter /FlateDecode >> stream xTM0W̱=Եǀ~=5ZvW),U;Ƅ@hOi֌g޼7c0 ܢ r^:F !ۇu$yvFWR="x.NԡR&PYX̔ScD)EFQCZ:CQL0AjK7I ySHۣ% 4bz4 Kהu \AG`mƉHdD,g-jȠg/6L^D|Od endstream endobj 1127 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1128 0 R >> endobj 1129 0 obj 506 endobj 1131 0 obj << /Length 1132 0 R /Filter /FlateDecode >> stream xTKo0 WQlI={`;-bp1iؿe9nmX)GRz wa`ϽN%iJRPFRkVaHK~J |wl\ëp󭘍$>dB/Ґޓ'5dk{s;_U,4EoS6!B.AfʮCbpjk;@uׯ1(F>q=4pb:W??68*n2 \jG  )s⭖uOhf7i~e?CFTҿ#A 5PVIrP졃Sڴ-'hk rsҡ8:(=MS՛\Zx#uާ"\WW[~䫗b@gcxeL_g$\;G]Rʦd(j]]$|]\L(e5wg/ endstream endobj 1130 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1131 0 R >> endobj 1132 0 obj 480 endobj 1134 0 obj << /Length 1135 0 R /Filter /FlateDecode >> stream xT0+ֵ{\(=lWI lHT;` %(f͛$=ԋu˂6 AcTg-m6LwJab٬_{S¾|@ H.%Ҋk9s~^>͗:~I+$k$~YCi3ky#Ң~6*kW6]C"auT]+L({ӀRvȚG nw5QKF'P~iy4]r޺/1h(2o xi U5]Eh;9qdRUc+uc:-*NPwC9qMbH*DG&'kv-71},MB(y6"iG}k vA2-t 7!4(mc F6y)V endstream endobj 1133 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1134 0 R >> endobj 1135 0 obj 486 endobj 1137 0 obj << /Length 1138 0 R /Filter /FlateDecode >> stream xUM0+Jk͇ت[=lwJ Di}$&lx͛yv^=jt6! zP }A&vC8|əufo=^C|jLZI}5١05ɾ1Gy!)?t5t 1#Bz{&:'k(,ۺ~p q[ǭ< ˚m,Xv1H=򑀜t˧hHF9=}]=fP9kxD *e9cI}'bx~^N6ˤrR4!4EHҴ:m^@a%6#8kI ۬ վɛ!T_VLF.jc`sđ> endobj 1138 0 obj 562 endobj 1140 0 obj << /Length 1141 0 R /Filter /FlateDecode >> stream xUMo@ﯘcr(ݝ]X6Ǫi՞j58Mbkw` ږv4o޼3CU z .$.l[=[{ ܳq)Nj[8?W%` 8/)(TT;MAx[m~ "*!n )?Z5 1#SzpFz{ޚPZy,w6kN[5{NGb% ]w6pYqwz$ w4=}MtUpe#(eMns 7siABr.C W;FSG]-,)=+d)PӶX^=G, NU׭2Y}8i My |Y^E 5#M1зnq G(i&sn Ӵ&5b{wqˏY =ma@g_?Ikk#qdI4LbF!m5Ci`ϝ endstream endobj 1139 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1140 0 R >> endobj 1141 0 obj 520 endobj 1143 0 obj << /Length 1144 0 R /Filter /FlateDecode >> stream xTM0W̱= XCѢ]Ulݠ$h}ǘ$ rHC$[3fJP>Ei ymm 0&}k%&9<E ݀jTf6F”{A ҀO&_giy&2!jyO$[Ls~~|-BNk3bl0WY<\`47"¡w, ME:## endstream endobj 1142 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1143 0 R >> endobj 1144 0 obj 532 endobj 1146 0 obj << /Type /Action /S /GoTo /D [983 0 R /XYZ 72.0 720.0 null] >> endobj 1147 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 709.5 195.633 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1146 0 R /H /I >> endobj 1149 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.03 709.5 542.03 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1146 0 R /H /I >> endobj 1150 0 obj << /Type /Action /S /GoTo /D [986 0 R /XYZ 72.0 720.0 null] >> endobj 1151 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 237.88 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1150 0 R /H /I >> endobj 1152 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 697.5 541.874 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1150 0 R /H /I >> endobj 1153 0 obj << /Type /Action /S /GoTo /D [989 0 R /XYZ 72.0 720.0 null] >> endobj 1154 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 244.56 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1153 0 R /H /I >> endobj 1155 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.827 685.5 541.827 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1153 0 R /H /I >> endobj 1156 0 obj << /Type /Action /S /GoTo /D [992 0 R /XYZ 72.0 720.0 null] >> endobj 1157 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 247.32 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1156 0 R /H /I >> endobj 1158 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.806 673.5 541.806 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1156 0 R /H /I >> endobj 1159 0 obj << /Type /Action /S /GoTo /D [995 0 R /XYZ 72.0 720.0 null] >> endobj 1160 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 246.22 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1159 0 R /H /I >> endobj 1161 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.815 661.5 541.815 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1159 0 R /H /I >> endobj 1162 0 obj << /Type /Action /S /GoTo /D [998 0 R /XYZ 72.0 720.0 null] >> endobj 1163 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 247.32 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1162 0 R /H /I >> endobj 1164 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.806 649.5 541.806 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1162 0 R /H /I >> endobj 1165 0 obj << /Type /Action /S /GoTo /D [1001 0 R /XYZ 72.0 720.0 null] >> endobj 1166 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 241.77 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1167 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.846 637.5 541.846 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1165 0 R /H /I >> endobj 1168 0 obj << /Type /Action /S /GoTo /D [1004 0 R /XYZ 72.0 720.0 null] >> endobj 1169 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 242.88 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1168 0 R /H /I >> endobj 1170 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.84 625.5 541.84 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1168 0 R /H /I >> endobj 1171 0 obj << /Type /Action /S /GoTo /D [1007 0 R /XYZ 72.0 720.0 null] >> endobj 1172 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 246.21 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1171 0 R /H /I >> endobj 1173 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.815 613.5 541.815 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1171 0 R /H /I >> endobj 1174 0 obj << /Type /Action /S /GoTo /D [1010 0 R /XYZ 72.0 720.0 null] >> endobj 1175 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 253.44 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1174 0 R /H /I >> endobj 1176 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.766 601.5 541.766 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1174 0 R /H /I >> endobj 1177 0 obj << /Type /Action /S /GoTo /D [1013 0 R /XYZ 72.0 720.0 null] >> endobj 1178 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 241.22 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1177 0 R /H /I >> endobj 1179 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.85 589.5 541.85 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1177 0 R /H /I >> endobj 1180 0 obj << /Type /Action /S /GoTo /D [1016 0 R /XYZ 72.0 720.0 null] >> endobj 1181 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 257.33 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1180 0 R /H /I >> endobj 1182 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.738 577.5 541.738 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1180 0 R /H /I >> endobj 1183 0 obj << /Type /Action /S /GoTo /D [1019 0 R /XYZ 72.0 720.0 null] >> endobj 1184 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 200.94 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1183 0 R /H /I >> endobj 1185 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.13 565.5 542.13 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1183 0 R /H /I >> endobj 1186 0 obj << /Type /Action /S /GoTo /D [1022 0 R /XYZ 72.0 720.0 null] >> endobj 1187 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 208.15 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1186 0 R /H /I >> endobj 1188 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.079 553.5 542.079 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1186 0 R /H /I >> endobj 1189 0 obj << /Type /Action /S /GoTo /D [1025 0 R /XYZ 72.0 720.0 null] >> endobj 1190 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 219.83 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1189 0 R /H /I >> endobj 1191 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.0 541.5 542.0 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1189 0 R /H /I >> endobj 1192 0 obj << /Type /Action /S /GoTo /D [1028 0 R /XYZ 72.0 720.0 null] >> endobj 1193 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 244.27 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1192 0 R /H /I >> endobj 1194 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.83 529.5 541.83 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1192 0 R /H /I >> endobj 1195 0 obj << /Type /Action /S /GoTo /D [1031 0 R /XYZ 72.0 720.0 null] >> endobj 1196 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 264.81 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1195 0 R /H /I >> endobj 1197 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.685 517.5 541.685 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1195 0 R /H /I >> endobj 1198 0 obj << /Type /Action /S /GoTo /D [1034 0 R /XYZ 72.0 720.0 null] >> endobj 1199 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 289.25 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1198 0 R /H /I >> endobj 1200 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.517 505.5 541.517 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1198 0 R /H /I >> endobj 1201 0 obj << /Type /Action /S /GoTo /D [1037 0 R /XYZ 72.0 720.0 null] >> endobj 1202 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 260.91 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1201 0 R /H /I >> endobj 1203 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.714 493.5 541.714 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1201 0 R /H /I >> endobj 1204 0 obj << /Type /Action /S /GoTo /D [1040 0 R /XYZ 72.0 720.0 null] >> endobj 1205 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 212.61 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1204 0 R /H /I >> endobj 1206 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.049 481.5 542.049 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1204 0 R /H /I >> endobj 1207 0 obj << /Type /Action /S /GoTo /D [1043 0 R /XYZ 72.0 720.0 null] >> endobj 1208 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 222.61 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1207 0 R /H /I >> endobj 1209 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.98 469.5 541.98 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1207 0 R /H /I >> endobj 1210 0 obj << /Type /Action /S /GoTo /D [1046 0 R /XYZ 72.0 720.0 null] >> endobj 1211 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 223.73 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1210 0 R /H /I >> endobj 1212 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.971 457.5 541.971 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1210 0 R /H /I >> endobj 1213 0 obj << /Type /Action /S /GoTo /D [1049 0 R /XYZ 72.0 720.0 null] >> endobj 1214 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 224.82 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1213 0 R /H /I >> endobj 1215 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.964 445.5 541.964 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1213 0 R /H /I >> endobj 1216 0 obj << /Type /Action /S /GoTo /D [1052 0 R /XYZ 72.0 720.0 null] >> endobj 1217 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 251.2 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1216 0 R /H /I >> endobj 1218 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.78 433.5 541.78 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1216 0 R /H /I >> endobj 1219 0 obj << /Type /Action /S /GoTo /D [1055 0 R /XYZ 72.0 720.0 null] >> endobj 1220 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 239.26 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1219 0 R /H /I >> endobj 1221 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.862 421.5 541.862 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1219 0 R /H /I >> endobj 1222 0 obj << /Type /Action /S /GoTo /D [1058 0 R /XYZ 72.0 720.0 null] >> endobj 1223 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 263.7 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1222 0 R /H /I >> endobj 1224 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.694 409.5 541.694 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1222 0 R /H /I >> endobj 1225 0 obj << /Type /Action /S /GoTo /D [1061 0 R /XYZ 72.0 720.0 null] >> endobj 1226 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 397.5 205.166 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1225 0 R /H /I >> endobj 1227 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.968 397.5 541.968 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1225 0 R /H /I >> endobj 1228 0 obj << /Type /Action /S /GoTo /D [1064 0 R /XYZ 72.0 720.0 null] >> endobj 1229 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 257.33 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1228 0 R /H /I >> endobj 1230 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.738 385.5 541.738 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1228 0 R /H /I >> endobj 1231 0 obj << /Type /Action /S /GoTo /D [1067 0 R /XYZ 72.0 720.0 null] >> endobj 1232 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 255.67 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1231 0 R /H /I >> endobj 1233 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.749 373.5 541.749 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1231 0 R /H /I >> endobj 1234 0 obj << /Type /Action /S /GoTo /D [1070 0 R /XYZ 72.0 720.0 null] >> endobj 1235 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 254.55 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1234 0 R /H /I >> endobj 1236 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.757 361.5 541.757 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1234 0 R /H /I >> endobj 1237 0 obj << /Type /Action /S /GoTo /D [1073 0 R /XYZ 72.0 720.0 null] >> endobj 1238 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 247.89 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1237 0 R /H /I >> endobj 1239 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.803 349.5 541.803 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1237 0 R /H /I >> endobj 1240 0 obj << /Type /Action /S /GoTo /D [1076 0 R /XYZ 72.0 720.0 null] >> endobj 1241 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 245.11 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1240 0 R /H /I >> endobj 1242 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.824 337.5 541.824 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1240 0 R /H /I >> endobj 1243 0 obj << /Type /Action /S /GoTo /D [1079 0 R /XYZ 72.0 720.0 null] >> endobj 1244 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 244.0 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1243 0 R /H /I >> endobj 1245 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.831 325.5 541.831 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1243 0 R /H /I >> endobj 1246 0 obj << /Type /Action /S /GoTo /D [1082 0 R /XYZ 72.0 720.0 null] >> endobj 1247 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 225.67 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1246 0 R /H /I >> endobj 1248 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.957 313.5 541.957 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1246 0 R /H /I >> endobj 1249 0 obj << /Type /Action /S /GoTo /D [1085 0 R /XYZ 72.0 720.0 null] >> endobj 1250 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 249.56 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1249 0 R /H /I >> endobj 1251 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 301.5 541.792 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1249 0 R /H /I >> endobj 1252 0 obj << /Type /Action /S /GoTo /D [1088 0 R /XYZ 72.0 720.0 null] >> endobj 1253 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 265.12 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1252 0 R /H /I >> endobj 1254 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.683 289.5 541.683 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1252 0 R /H /I >> endobj 1255 0 obj << /Type /Action /S /GoTo /D [1091 0 R /XYZ 72.0 720.0 null] >> endobj 1256 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 226.78 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1257 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.95 277.5 541.95 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1255 0 R /H /I >> endobj 1258 0 obj << /Type /Action /S /GoTo /D [1094 0 R /XYZ 72.0 720.0 null] >> endobj 1259 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 245.11 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1258 0 R /H /I >> endobj 1260 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.824 265.5 541.824 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1258 0 R /H /I >> endobj 1261 0 obj << /Type /Action /S /GoTo /D [1097 0 R /XYZ 72.0 720.0 null] >> endobj 1262 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 253.5 201.147 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1263 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.994 253.5 541.994 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1261 0 R /H /I >> endobj 1264 0 obj << /Type /Action /S /GoTo /D [1100 0 R /XYZ 72.0 720.0 null] >> endobj 1265 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 243.69 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1264 0 R /H /I >> endobj 1266 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.832 241.5 541.832 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1264 0 R /H /I >> endobj 1267 0 obj << /Type /Action /S /GoTo /D [1103 0 R /XYZ 72.0 720.0 null] >> endobj 1268 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 244.25 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1267 0 R /H /I >> endobj 1269 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.829 229.5 541.829 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1267 0 R /H /I >> endobj 1270 0 obj << /Type /Action /S /GoTo /D [1106 0 R /XYZ 72.0 720.0 null] >> endobj 1271 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 242.59 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1270 0 R /H /I >> endobj 1272 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 217.5 541.842 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1270 0 R /H /I >> endobj 1273 0 obj << /Type /Action /S /GoTo /D [1109 0 R /XYZ 72.0 720.0 null] >> endobj 1274 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 251.48 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1273 0 R /H /I >> endobj 1275 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.778 205.5 541.778 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1273 0 R /H /I >> endobj 1276 0 obj << /Type /Action /S /GoTo /D [1112 0 R /XYZ 72.0 720.0 null] >> endobj 1277 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 264.81 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1276 0 R /H /I >> endobj 1278 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.685 193.5 541.685 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1276 0 R /H /I >> endobj 1279 0 obj << /Type /Action /S /GoTo /D [1115 0 R /XYZ 72.0 720.0 null] >> endobj 1280 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 291.19 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1279 0 R /H /I >> endobj 1281 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.504 181.5 541.504 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1279 0 R /H /I >> endobj 1282 0 obj << /Type /Action /S /GoTo /D [1118 0 R /XYZ 72.0 720.0 null] >> endobj 1283 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 243.7 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1282 0 R /H /I >> endobj 1284 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.834 169.5 541.834 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1282 0 R /H /I >> endobj 1285 0 obj << /Type /Action /S /GoTo /D [1121 0 R /XYZ 72.0 720.0 null] >> endobj 1286 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 263.14 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1285 0 R /H /I >> endobj 1287 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.697 157.5 541.697 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1285 0 R /H /I >> endobj 1288 0 obj << /Type /Action /S /GoTo /D [1124 0 R /XYZ 72.0 720.0 null] >> endobj 1289 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 264.8 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1288 0 R /H /I >> endobj 1290 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.685 145.5 541.685 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1288 0 R /H /I >> endobj 1291 0 obj << /Type /Action /S /GoTo /D [1127 0 R /XYZ 72.0 720.0 null] >> endobj 1292 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 263.68 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1291 0 R /H /I >> endobj 1293 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.694 133.5 541.694 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1291 0 R /H /I >> endobj 1294 0 obj << /Type /Action /S /GoTo /D [1130 0 R /XYZ 72.0 720.0 null] >> endobj 1295 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 265.36 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1294 0 R /H /I >> endobj 1296 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.68 121.5 541.68 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1294 0 R /H /I >> endobj 1297 0 obj << /Type /Action /S /GoTo /D [1133 0 R /XYZ 72.0 720.0 null] >> endobj 1298 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 260.37 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1297 0 R /H /I >> endobj 1299 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.718 109.5 541.718 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1297 0 R /H /I >> endobj 1300 0 obj << /Type /Action /S /GoTo /D [1136 0 R /XYZ 72.0 720.0 null] >> endobj 1301 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 228.15 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1300 0 R /H /I >> endobj 1302 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.942 97.5 541.942 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1300 0 R /H /I >> endobj 1303 0 obj << /Type /Action /S /GoTo /D [1139 0 R /XYZ 72.0 720.0 null] >> endobj 1304 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 251.48 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1303 0 R /H /I >> endobj 1305 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.778 85.5 541.778 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1303 0 R /H /I >> endobj 1306 0 obj << /Type /Action /S /GoTo /D [1142 0 R /XYZ 72.0 720.0 null] >> endobj 1307 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 244.25 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1306 0 R /H /I >> endobj 1308 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.829 73.5 541.829 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1306 0 R /H /I >> endobj 1309 0 obj << /Length 1310 0 R /Filter /FlateDecode >> stream xMg~D9W- 0=.`A%VP%{~ R7XkӮvdI^|b;xn1?_t?U}ǯtׇy{7ۗ/w=_O~?^g{o/9?b>ű?Nj?w_W?8/yo_/_?_`_?_+؏h}#o0>|~?| ïױ>U|?'O^HamO?%1{ଟ뿪Ӌtж?_^_|^e?Gl[zM^Ս)ةNs:&I,Y.9bYwYbYyddddddddȲe#N,;Yd9r$I,Y.\bYŲF5Re k@}e l& $$$˶?m+_d˧9 c{G76,jY/G7_ͻoכJk竏__fUn~ s:R꠺S bYw bYŲ&,Reeeeeee#F,Yvdr A,'YNdr˚H-5az˚H-5a˚HMAAAIIII,Y6dɲ A,YNd9r"%5aZ,k"XքEj ԇXքEj LL~1a qLV3+L~|˟_w]jqq>75p̧q|]xxn"uR=>5R՝u@nTe@˚@}e@˚@ddddddȲe#F,;Yvd9r$I,'Y.\dIJf Re@Ųf Re@>IJf Reeeeeeee#F,;Yvd9r A,'YN\dre@˚H-5Z,k!5,,,,,,,k6#k]9n{<@j9Wf 5GF)~ܼqLAS?=?b:T/nTOuR-....!!AAAAIIII,Y'OzH=6NzT7r"%R-elbX.ebXAAAAAIII,Y6dɲe'A,YNd9r"EK,TenbX.ebX!yeeeeee53~~kfm;汽̤mfo_^0dku#Ϩ222222u#1|nᱽHG3}NS|~|;fO::y|~ N冺Q=NG XXXXXXXXYYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.M,c2v],c82C, $$$F,Y6dɲ A,'YNd9r"%enbX.ebX!yedddddddY-Җ{5^ɾmgte}4ߦ+a~K|nf+Tv~dH]ZN ھ#Xw;Rem߁ھ#5YYYY&Y&Y&Y&Y6ldS=XϨNuR=>?KTwQM,Y.<j;RemߑZ,kԇX2222222ɲe#F,;Yvd9r I,'Y.\dremߑZ,kԻXŲH-}Gj LLLf+[݂^\Z#xO}}rwko^xC<~ ay|Q^H,_Huz~"9^HN (6SmZg=s: E|P^Hwu&rS]LujV('lI:ErRG M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LuuvzN)uz"~z ;>;Lϛm s{-s=L}uHfUAZsk7=NA;#yX-_'7'9I@ :rRCP$S S SMSMSMSmLj3nTS:Lu4iT.S]ZPNu<;)j"AuH Lj3nTS:Lu4iT.S]ZPNu~ Z'PNu)*jjjjjjj۟k| )Ce/z_oy|[ͪgpscSK>)1iԒ%yo('Hjo('PN5TTTTTTT6SmkmV(I-ORT.S]H7jo$I7jo$?H7jjjjjjjj3fTvS:Lu0aTNS]Lujo('PN5Tk|#A5TTTTTTTEaFE,组,n7p/޿7_}L3o>5eOfvmks|H^GRwHf9ɱj+yjjjjjjj3fTvSMu0aTNS]Lu":TrRce%IThYITTTTTTT6SmLj7nTS:Mu4eT֩j;+Nu,ZgJ~j>Kֲ>ל[Zr~z[7cl/UOO_NNۆG#7QίmkN}|ap~|R~~<-_)˻nTS:Lu4iT.S]ZPNuʏ;)?j#AuLj3nTS:Lu4iT.S]zZPNuZH~jC6SmLj7nTS:Mu4eT.RS~(':GTINTMfKiRl)m6[AbuyOثyqL>I_޾~8on εVg?|l7ת_'=˛kiZyX-7aTNS:Mu2eT͍굹T͍굹QrR67JnaaaiiiT6SmMj7aTNS:Mu2eT͍굹T͍굹T͍jjjjjjjj3fTvS:Lu0aTNS]Lu굹QrR67JNFIAFM5L5L5LfKi5߳|&wX۾ʇ7 VL~|?}0O'mûZ`fyX-_f|4iT.S]Z0I`Z0I`j (7000444fTYQg~X,|P>7rSLu"QN5|'QN5 QnaaaiiiiT6SM0aTNS:Mu2E5TkF9rRrS S S S SMSMSMSy̢ț򌰇7?}mO>Fd\k~ݴFZ$yZ>(J%\IrR+A\IrR+INr%M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Lu\IrR+A\IrR+A~\IrS S S SMSMSMSMSmLj7nTS:Lu4iT.R+INr%IZ$9^˕ ?HZ$Y{۶RYMyG{_Ǽ巯뗷 m}U=uZW湻Q5JY>)wAYj$S S SMSMSMSmL~|Q˛[fyXnT.S]ZIF ZIF ZM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HF j('%PN5J %Pnaaaaiii(mߚooKrp"eH:kmsw)/ʯs oOʯs OT6SmMj7aTNS:Mu2eTc#H56RTc'I5vRT 8L5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]H57R͍Ts#H5wR͝Ts'߼=I?GܗuS]|P~~IyX-_Z QnaaaiiiiT6SM0aTNS:Mu2EZNuZ QNuBjjjjjjjj3fTvSMu0aTNS]Lu"պ]rRۅ$InTv!InTTTTTTT/ۙg\ה:&7s?/S[Pp&qwB{<MqC{=KwYf=KnTNS:Mu2E5Tk'N5Tk'A5TTTTTTTT6SuѶm=Kkݳay|Q^%o2eTkG94rRiZ8RiLj3nTvS:Lu4iT.S]HqjM$IqjM('՚Qnaaaiiiuky7.1(׶GΧ&E|P^]$˻"NS]Luj{D9WII8HRnaaaaiiiT6SMj7aTNS:Mu2eTc#H56RTc'I5RT 8L5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujnFj;Nyj^#\E5ͻa>8~i꯯?LyFܽj;mWyq(?Q,_(O!rSLu"EH9.BwR]j" EH6SmLj7nTS:Mu4eTFrR]Z)'EH9.BTTTTTTT6SmMj7nTS:Mu2eT.BIvJj"Tk!Z)7000444k)_i=jM{('՚PN5 ՚PnaaaaiiiTRbfyX-_f|妺Lu2E5Tk#N5TkC9ִrS S S SMSMSMSmLj3nTS:Lu4iT.S]ZI=ZI=ZM5L5L5L5M5M5MȜ:]QJM{fe+#}㴧zδ?d_J|=gɱGSڞCyZ>(??[Pwg IHLj3nTS:Lu4iT.S]Zs('ڞC9IH~jmϡTTTTTTTT6SmMj7nTS:Mu2eTIHjmϡTk{Zs(7000444Zhr3gy envsl_>0<OW_c?{pM!ĸyߟ~x?V'MaQ yIyiYTS:Lu4iT.S]ZQNu_;֍ijݙF9֭ijjjjjjj3fTvSMu0aTNSLu"պNrR $ITTR5Rk(70004444fTvSMu0aTNSLu"պorR('պsrR[$?H]TTTm6[J-͖>۶]iNk< )ZG i*n]yT?쮂T?z~Lj3nTvS:Lu4iT.S]H*I;~]9~]9~]6SmLj7nTS:Mu4iT.R rRNvWANvW=??H*M5L5L5L5M5M5M8RY:gu>\#$ ErR ZA(70000444fT[5[N7NzT7s:&E,Y.RezZ!XŲ}HMAAAIII,Y6ldɲe'A,YNd9r"EK,kybY;ŲvH-C,kYdddddddy1Zks\7c61)__q~G˛[2eTȄrR;؄rR ZM5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujT('՚HjU('՚H~jV(7000444: dO/ 8}m73!X% ߼Q3ԎL2cQ^W$oO!yd(IF2Z#IF2jd$S S S SMSMSMSmLj7nTS:Lu4iT.S]Z#IF2Z#IF2jd(7000444fT6SM0aTNS:Mu2E5Tk$#N5Tk$#A5TTTTTTTk$kY59Y)kȬջ|/kè\Ĵ N=b&s<-ySw˗u ZHjB9֩+jB6SmJY7'c<-T.S]HN]TwRSW(':uETM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HN]TIN]TRSW(7000044k관a5m}Z$f>9G6\v#ya7n|7's<-7eT.R9Zs*wR9Zs*ITjjjjjjj3fTY̻/Dws*ay|R>vA,Mu2eTkNE9֜JTkNE9֜JTkNE6SmLj7nTS:Mu4eT֜rR9Zs*ITZs*M5L5L5L5L5M5M5MZuN!S6mw+nZOZ_5Z[ko^:g-5s=>85 ˻:[Lf$O;;;;6SmLj7nTS:Mu4eTFjlNjAqjjjjjjjj3fTvSMu0aTNS]Lu"H57R͍Ts'I5wR̓T )Hڊ$yXNV$TTTTTT6SmLj7nTS:Mu4eT^[$'k+;^[$'k+^[$70004444fTvSMu0aTNSLu"k+zmETH THjjjjjjjr߶Hz^>ob=v3Nȯ{~݊Od1o^㢒+KQ@{ap~i<-_Z(˻NJf.S]HHNJrR|':)INJrRw7ۤ7'&<-&<,'nzFgI=''nzNN&6n|7Mu2ErRPj텢Tk/^(M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Luj텢Tk/;^(IBQNrS S S SMSMSMSqk}59ܷvo777mzʺy7?ogxIS3f|H^SSw;ԔjNM9Ԓ6SmLj7nTS:Mu4eT.Rө)':ZTtjINTtjM5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujNM9ԒZSSNu:Ԕjjjjjjjk?m?mϛo`b{w/߽燙i;Y>_>Mv~Oyq$N>Y>)O$Oua9^'@Lj|gg:DfN><-':Mu2E'u ;^'HN'z|"6SmLj7nTS:Mu4eT^'HN'uz|A'jjjjjjjj~]uw5{36 8=0{xz/o<>=&ډpƟm=fY>)?<-PwTR|NwA,˻yX,7eT?h9NIv"PNATk'Lj3nTvS:Lu4iT.S]Hv"PNATk'Z;('ډ@_w۞{mq_߾z+K$ͫ[YnX7}[qy"yZ>([Y$˻KkmzM|'kmzMT jjjjjjj3fTvSMu0aTNSLu"kmzM|'kmzM kmLj3nTS:Lu4iT.S]zMT 6ArR&@~6ArS S S S SMSMSMSNk]{|}3 pw^?L?Qc=e7IιÐd<,/o %oOo %':A0000444fTo ;EymIymi.S]Luj@9֙ Zg2PNu&Zg2PnaaaiiiT6SmMj7aTNS:Mu2eTLId|':rR3$?HdTTTTTTTc=vFֶ~]a9ۿ?LT?Q{8^ʐgb<8|X_+$oOkiV>H000444fT6SM0aTNS:Mu2EIZNIZAM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HZ 9^+$'kz| k G ۸=?<WF&>~7WΣv=8zP_wBTNNZ,K;_YYY&Y&Y&Y&Y6ldYWuc֟US[(:%o2eTc#NIT:%'NI0000444fTvSM0aTNSLu2EUuU';^WuJNUuUz9{!So;y3gXxs}u"ί~R?KEkm-n{4,kI|P~~<,'Z yjjjjjj3fT5Y>)i|n:Mu2EƁrR5Zk('Z AƁrS S S SMSMSMSMSmLj7nTS:Lu4iT.R5jqTkZk$?H8Pnaaaaii5M:G !xx4ox/߽~ݗO*휏t}ᱶ4s0!-Ey}vY>)?HwTTTTTTTT6SmMj7nTS:Mu2eTj NuZ;PNuLj3fTvS:Lu4iT.S]HwTpwR(':ATpM5L5L5L5M5M5MFX2Qǚc7v38dpõÁp}9;_ZalO0r8HݨR5(P'CkAu,Y.\bYo.Fj7PbYo& $$$$F,Yvdr A,'YNdro#XnŲ@}e,,,,,,,,Y6ldɲe'N,Yd9r"E,X~Ųv@eZ,k'bYh& $$$˺A` izsǾLm3/߿z0J:ǭLWq:װfmSÊfv|H^+o(˻Tk Z+o('Zy#yjjjjjjj3fTvSMu0aTNS]Lu"ZyC9wR7jTk Lj3fTvS:Lu4iT.S]HVPNFTk Z+o$?HVPnaaaiiifu%?݌mϛw7ÃM_øx:mB\湇qCM!1i&ђ%yB9i-ZPNuZ ZPnaaaiiiTRm6[>+_DɛZ(yZ>(:Mu2EuZ ZHjB9i-ZPnaaaiiiiT6SM0aTNS:Mu2EuZ ZPNuZ ZH~jBڕSgaGbXc?l endstream endobj 1148 0 obj [ 1147 0 R 1149 0 R 1151 0 R 1152 0 R 1154 0 R 1155 0 R 1157 0 R 1158 0 R 1160 0 R 1161 0 R 1163 0 R 1164 0 R 1166 0 R 1167 0 R 1169 0 R 1170 0 R 1172 0 R 1173 0 R 1175 0 R 1176 0 R 1178 0 R 1179 0 R 1181 0 R 1182 0 R 1184 0 R 1185 0 R 1187 0 R 1188 0 R 1190 0 R 1191 0 R 1193 0 R 1194 0 R 1196 0 R 1197 0 R 1199 0 R 1200 0 R 1202 0 R 1203 0 R 1205 0 R 1206 0 R 1208 0 R 1209 0 R 1211 0 R 1212 0 R 1214 0 R 1215 0 R 1217 0 R 1218 0 R 1220 0 R 1221 0 R 1223 0 R 1224 0 R 1226 0 R 1227 0 R 1229 0 R 1230 0 R 1232 0 R 1233 0 R 1235 0 R 1236 0 R 1238 0 R 1239 0 R 1241 0 R 1242 0 R 1244 0 R 1245 0 R 1247 0 R 1248 0 R 1250 0 R 1251 0 R 1253 0 R 1254 0 R 1256 0 R 1257 0 R 1259 0 R 1260 0 R 1262 0 R 1263 0 R 1265 0 R 1266 0 R 1268 0 R 1269 0 R 1271 0 R 1272 0 R 1274 0 R 1275 0 R 1277 0 R 1278 0 R 1280 0 R 1281 0 R 1283 0 R 1284 0 R 1286 0 R 1287 0 R 1289 0 R 1290 0 R 1292 0 R 1293 0 R 1295 0 R 1296 0 R 1298 0 R 1299 0 R 1301 0 R 1302 0 R 1304 0 R 1305 0 R 1307 0 R 1308 0 R ] endobj 1145 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 1148 0 R /Contents 1309 0 R >> endobj 1310 0 obj 15748 endobj 1312 0 obj << /Length 1313 0 R /Filter /FlateDecode >> stream xTM0W̱{k {\Cj=lW+8 J,E BK"ٚ7ofW[FkkDؚ}+wh.!Yӳu΀YpH&Gn7yɻpP")DF !^ӛ6+SB!B>' hs |>qz`o?X=hlp;תm\64FO^2ر)PN87Z{G2-?d*kԌ1 *)di6KfСD\0mB@h .0j$ATKH+Ky^B00O˪:]Npge1eyQU5ђjibԀF1F>G G&d1{n'R0osA/EeZ.!l|kwSP b3ރYDGٵr]q.;CT@e > endobj 1313 0 obj 566 endobj 1315 0 obj << /Length 1316 0 R /Filter /FlateDecode >> stream xRn0+ܱتKBB)kib+%H/opdxn.0rkhuβ)a) Up 5S2}@\ W69 O#:mOyl*Z[i1cM<7aEB*!i=]Ȑ> endobj 1316 0 obj 412 endobj 1318 0 obj << /Length 1319 0 R /Filter /FlateDecode >> stream xWKs8+t[R5qlF2L 9L(c pHld$=e(-ꇾn7/= {.>h{)u1Rzr *.JSW+Pb~hD_z?fLzf8 4bp&Z.gY&-) qMa@`4۠1FkoSQHcHY@= ghvm! H:?ߐW:FZJҁF[iyrD-U S'j4E|Lcply' Yk]]c#l><2e@g s$ Bcߑ8`[iZ 8R<olࢃ6$h& b | $Gd))Qcε9곥&TjjBNE4)\' 7(LGأ0%yЕn3orR2y |Fgi7s;ƘQo6wITgZUBȋ#k~ۍ^#Zt;f`6*7*1b[ZnDZ$k.T5(Y![-S? W\?zJX?!&|ε͐dhX@yl݊?A?ٲQmnQpzocrBDaS,IN/ol|=4ٳ&%^"{ GǶ ƿ_ލaA}K[ZSD1!%NbǓhۦC7/<ok l[@WZU*A@/ûJiW h5LOvૻH&ŷ`z;eHN( nX{Iu9~r˲+A5~)1f oDWz^EaBZ% B~ph<ϦInM6-Y!׳9huVІW"x.ފwl:MMg0o׈V&:I$C 6\07|t;RBYm9e1[=TMe$F$yqo#ꡙC>'h2Iu6r?ڦW+AKUKYGT#.CMD$J:.Zb6%B| ;NB~ ծgk)LaKx C_Bt> endstream endobj 1317 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1318 0 R >> endobj 1319 0 obj 1316 endobj 1321 0 obj << /Length 1322 0 R /Filter /FlateDecode >> stream xX[w8~&4[.NiN l0"M`OY'91|# yXȄ3s%=DY]AD<K>}} 2Aa70J^/Vwor68qerpׄ|Ɓ`4۠'hiM(G$"ad9-N_`ݗ1*3,y便C[@"}c-܏~s~C! E4t`{5wa=]m(lA?~Y s-+wd l٦iA,=&hZDog61 n9nMS!OqB@n12M" V+;Pp(I/הeyתAG>T־+B Qh|P5ř[m嵔rxZhD8,k I+\av|7*IٓyG]9arpwrduJFVl] o`⫁7}LJR>l(0m^BO2Yh<ϦI#t(fő3v e%u]i*@Ⰵ yci6 8@^09fߜ> endobj 1322 0 obj 1391 endobj 1324 0 obj << /Length 1325 0 R /Filter /FlateDecode >> stream xXIw6WVw27QRndrr PMBV_MEz̀`牉0|_?PRBO1b-MgwfǻF5wQsV.4ZҒ,ÄR Jah n0>NE #_{RDD aUF{/4^>ȇUpKa;e㧣T1p,a׹jQ;JV llєѵ$tXfٮfky:n-5&Zw]{côŊ*PñLlaTJsHЫ(7R;~/I endstream endobj 1323 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1324 0 R >> endobj 1325 0 obj 1470 endobj 1327 0 obj << /Length 1328 0 R /Filter /FlateDecode >> stream xW[W8~ϯ9ŵe;4ZBPzr[I8RHEO,23\4H~9Ȇ3D%S-sP;E9}A5\<K=}ё>~٠}sRnE/V7ob6zGf.E{ ?! -G8dMmNJ-r<"ₓ'1:ܐ:[={EE+ҡd QR^ױV(RG}݇mw7u~"Ptl+CvxVM  @zCEÇIϫ2NEhvy /^6B!h9_本sg願>D&%p8>:2eߪNvT[ㄩͥnHd5l$z9Hr_緷ҽ[J Jz){&ۛǃk*ķEʊ!̳R*ΑPDEꕙ}Trtk*-*4+>b,cAq} s^ {3CD 4auÿ͒{uZVi7$vWc>$n*+ @U-ӎFDa3 er$'~NS\{\9jpTtu[@a$OpOΣg fTXd4._SIkg @mPyiV#[bEGu%U\m$w> endobj 1328 0 obj 1407 endobj 1330 0 obj << /Length 1331 0 R /Filter /FlateDecode >> stream xX[w8~Mi(0з$umqڇlbp;dyf\4fFab DC-#`Ok;1 ;iRT !$u&&|1CsRv_ݿ b up/|&"ws4RCbX< (^YAk2[϶O2!ymcvA TS.oϊhT#) # _)f̻El1 8%LQD׺wJ>˂nv]^0f 㢥6,!&`QD-(L!c X_W +dJ ά˗._DX/z+v\;Wi!WEh q."ߠ-IC+^h%e'P]~|u#^x#x $>\~?8I,G9sZ?Na SW}[nG>W3I="x:ֆ4jw;pys#+"0aE+ =dfM+3;K(,y̐! 6)ۨN!*e7,J*ǡS*@&X=o3%q5in"5+ w:҆# w1bUn EoK6B-:z4Ñ'g+d՜d{AM-/(n$/pR)م?)T;xu<'RSZM˜5 lj{ŗ1Ѐ{IV }^] lѨo].sER):*LT4.xթQ6">!Wa ϟYr]߰l5FNͺ>cb;k)*H  eO. endstream endobj 1329 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1330 0 R >> endobj 1331 0 obj 1415 endobj 1333 0 obj << /Length 1334 0 R /Filter /FlateDecode >> stream xTKs0+H![;}LzI]3!xc6tB` vŀA/BrX֦1l10pRh.$ц;\!ܬYYO茀"EjԚzOuF!XZ$/|bs/A aXh,y/^A.U ֗>PߤPTO#H=Sϑ,NhZLnJ96!bʠUKDh ?Qܵ u}=6pJ~5QF·E>Wq^'*yQ4+fFr|p8̦!7oIN:͹8@,aM> endobj 1334 0 obj 614 endobj 1336 0 obj << /Length 1337 0 R /Filter /FlateDecode >> stream xUMs0+HC[;Ќ=l)15p2] wzpz.xg1yW."X@pz]@w!.Ou6bf?Ģź@U;k_zSx>g-Q@\ǥx!--WZcL,t4r¯֧@78Ts R:7{kƆtu1[ǬGuV8&?>"2J3Wm28%&<*۵m.u?ϥRL:/zk$3R>"\"%\o9E+(t$/Emuū_\-v%*Zʢ]ɢ^d9T7e7G=]XZi^7M˦r{z9> endobj 1337 0 obj 675 endobj 1339 0 obj << /Length 1340 0 R /Filter /FlateDecode >> stream xUKs0+Hȭ>&=4Mô4-%`N' DClģ QL10DDЋ;|Xl,/6$  f{~Al2g.Q!_O[ܥ> endobj 1340 0 obj 678 endobj 1342 0 obj << /Length 1343 0 R /Filter /FlateDecode >> stream xUMo@W̱=/lnTJi ^aD6@5Hf- ?ő nbnB T̂QVg.%ܬ৑xAAjԘtrq~O'ϸILV/ww0]TT~(q8=pc.ܵ +]=1ݚUϛ<0-Zӛ*z-8TYU4pA0QNEuoJ :.CʹRDŽfŘS sUJ%CVū0^mW st6I",Zit\)mjvʸ)u{?BlDC%T8 )O GGI1 ..\)aՖ$Ӽw K ,AX<0IgB d @1j_tpNE/|vv"C6r{um.Xl\%ehEYCOΖT3hN[,O?i} endstream endobj 1341 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1342 0 R >> endobj 1343 0 obj 607 endobj 1345 0 obj << /Length 1346 0 R /Filter /FlateDecode >> stream xTMo0 WJ CwXm8 svߏzʜ "H=|ΊIlmLl$h^غU h2{g΢]"c?Y|eϯ  zmD\_>fHl?"?DqO( 9NSg7;N7c_~Tߠ!l]Wf,v)9y\m=kę;/{P'W-~Y"с: . S;Y\KDW59 k -bwwiQumF9G%X?3"?_q%=!$5|HpzQJ]UUxHKm9$I+22 NaV 縋;nh0hb0 Ĵ5ŲJjΌȘPEyׄT﹄?:8mBo&4 pE9ʓ^\1.<>A &ļζy2p~S9J^N bl"G endstream endobj 1344 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1345 0 R >> endobj 1346 0 obj 529 endobj 1348 0 obj << /Length 1349 0 R /Filter /FlateDecode >> stream xUMs0W}K@8zP:'VS$¿ڲ;v H:Y (~^U'9,SkxۄM)4{Vg.n6, ;<"Ѣj5W'z}%ı>\V r} I VAϟ`?jCu9~=RwشC apWGIf5B1Yhv]Gī7gU4>)z«%h m|\COT0ԯr^^=R) =3-lsR?)@L:.Ǎ ײC@5FZY^EU0crvRHuBzwou[)|)]gJ ؔW%&0- 0#oK`ՠb7_%Zm4}mjÎS~?bt|@T+(7Fuٟt FG8Lo[?U8'I0UӼg<κ3 J endstream endobj 1347 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1348 0 R >> endobj 1349 0 obj 579 endobj 1351 0 obj << /Length 1352 0 R /Filter /FlateDecode >> stream xUn0+pZ)C7B{HAX[;"%/-W6@b7o̓P|hOre֪18 9.0p2hͭ vKY/+(|0Wi5oN)75hAzѣ?8plzxgm|Մ0bcB1It'8EO[k{' p poxk«%_e1UIQu2)җ0ejVUk#}9LPʰL &68;n;lv;MR ^*:Τ]I'K4>zNp]grobY%UG:"m"=_JV°;6xb g"Cb!Z׷CG:9O|Gs taY$y=N^r5N;|c_0]"㔒2TDuQE7K-\0[t*鞏V4"S5ZuƞN'sEru@@ȋ7;}\)BΦ<(B Ov endstream endobj 1350 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1351 0 R >> endobj 1352 0 obj 618 endobj 1354 0 obj << /Length 1355 0 R /Filter /FlateDecode >> stream xUr@+&iܠ T8 Q!\4EYӣŋdȮyݯH+;CZ d;$6mH̩ wpVfQl?35;v'гh}+m")>xDpe~ oo.\h,yOf?(*]}߫O0m845SwI3=-gG$ -mnJ9vkKݶ: [žNΚD\dx{;*3wm4H{SN~&> endobj 1355 0 obj 649 endobj 1357 0 obj << /Length 1358 0 R /Filter /FlateDecode >> stream xUr0{lU [;m:顙4L{H3l 8} 6I/iV}ow^F-u߆<Ѓ%{ v;ZCY/'s8|un0N'5z>'p| pmfq0 K}wy77) b(FT | C}׍fH?Śx.?ٱK|mQrGi;vBcףum|}ET {@G p Ys#9StwkG5_|jϓL?hfI'IYn̤0)[ \L 6K6Dd'üU p 3)jd .z"~W*9W4BL@k z{ƴH'yF)a;$ jb~j: XP㘺WB>Z)}ːEK3N:|'HX- 4>Ud8,&5Q !1WϫFt`) U3,&oYq0Lџg? d=^EV@&`j d8~k0ۄɪJlu&"t[`w7k/I0x endstream endobj 1356 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1357 0 R >> endobj 1358 0 obj 646 endobj 1360 0 obj << /Length 1361 0 R /Filter /FlateDecode >> stream xVn0+M skѦH ! Zbb5%Kr}ZE\R7GKG;A;F!`@<ȡ{U6pd\ߠ3GkWF~!o9rN<u Br& \ 2]2 ̳"4Guh>N:o[lپ ygCKۺ~#Mz`d]٬b['oD 89(7h#mz80x7k¥% U1קiQ5Y+X+`. _O8Ƃ]YZڀ!gZp" EmWЅz2EYrO+peJ鳰Sl( =w P~( P@-HgA5E53*BCTj(nXJ&{m<Ӊ;ʗ;6Sw4g߽{$;$g[TYG/7qr/!0v,*$7tSy_ەQ!?b36nHMs԰w)!:ҲI 3uq#r,W (Lˣ=^QUbeLрc]6h5H}}\:cG endstream endobj 1359 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1360 0 R >> endobj 1361 0 obj 681 endobj 1363 0 obj << /Length 1364 0 R /Filter /FlateDecode >> stream xUMo@+Jv`VC+˨=QDFŀ'ʿ, 6b˻{0{(!Y{.@qA`p}] wp^QbrO=,ׂlfSXz"õBH_B"h 7oy2mf*gE0em}D#~o֞%NWv/83. acֳ<[DY $ vVhN‡~ oUh|*\]EݛĐ2.$' JJJ @@Xa>.suPSN+SCe6[S7[i KV @zV*ϟӺRhI x@Lg\I9fp~r=ZEZP1~ !P<@2N"͛v*}1l8WC„H |6uReg9DrF'5zԐ-}g$6c| f?Ʋ endstream endobj 1362 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1363 0 R >> endobj 1364 0 obj 562 endobj 1366 0 obj << /Length 1367 0 R /Filter /FlateDecode >> stream xUKs0W΀C Jj?({V;Iz*NZjd0ycXqDUaLBaO>JC({P>7h́c@ ,Oa_o/C`S eHI !+pXէptᾨEZ;bO0] 5 sd!t2V?iPr[SWWA'tb'/8Eb(Iv?J m-/Q^I5iI_E3Dd zf8pQD2px?88=-:GƟr.P=@0LʔđڋlޟN~63„H|m֘3Uy#84sap j~} ~Rܔqkoǽ#ߙy;C"ߦ몜jӤaMYOvۻD{Ҭ3N :2 - endstream endobj 1365 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1366 0 R >> endobj 1367 0 obj 643 endobj 1369 0 obj << /Length 1370 0 R /Filter /FlateDecode >> stream xSMo0 WIlY=[!"p1؎?OGSf@|p`}Y6 A)K`7{ {Y=):,`Ca|Gfî^ p~D2` {<ҥYt!)/8Ӿ}+O ߬'oh#lbg[۬v|pFYlOYLur%3MԁBvHW{G2O?dC5j+|1deЮef+S{'$#H ƸmS! DTt(fi`4RK%MSYҚŖpsȎn= C7)ʪɚ-TTH#kmpT2)|Iޙ]6T4J39?'aƢ&%C}-?AY. ̊)r> endobj 1370 0 obj 541 endobj 1372 0 obj << /Length 1373 0 R /Filter /FlateDecode >> stream xRMO0 W#(N9LmZ%ekH$MZ6d9c;c‰dܠs0񴱗U–+܀tr]&BWvr/t{NQh,ЎеF, {kc:$.ϱWx=r–='靇&z+į)>{W" Q 9QHApGD!4͓F{#b8iTY&E8> endobj 1373 0 obj 343 endobj 1375 0 obj << /Length 1376 0 R /Filter /FlateDecode >> stream xVn@wH ,TvFq FlMJm+:w'~1r\CڇRe,~%\lS;9xACtι5 <:gJ YK37 ~ Y? />@n[. |IFpC.] ]]BkĐ~vyoCK[CφgHg 4XB čFB`?+wHF _ ж+q}fm2նJ}'E1QN`8 ].z B7x{(|7c GݠU_h [~4,j#!kÈ)fmǸ4yW\-2fc&4i'Z;uX-^F }cp^jm4>eY1v `]ӈZA]`leQ+|]|P?J^1QY8UkNzfOz,[*w,6|\w #cz#[|@Jo a6i]rާ#6 ,~W )J +S.v[ऻxwxv+b]4F0VmJ|=Y-&ח[BTҐl!qNM @vsKJ8qZGq>K]n^6BGhWns͞ endstream endobj 1374 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1375 0 R >> endobj 1376 0 obj 776 endobj 1378 0 obj << /Length 1379 0 R /Filter /FlateDecode >> stream xV[O0}W|(oꌛ٬NT>!!2oK(䪑מs)h)X Uޛb6!MW)4k~{Cl_%SR^f>4]GG\ٵwkUDV v7 ۫h?rWP'_OK0tX 1|+if> endobj 1379 0 obj 832 endobj 1381 0 obj << /Length 1382 0 R /Filter /FlateDecode >> stream xVn0wH-16,TE!%0L}y0!&eFcss}[h9@AAD!+@@qmA ܃BM4a؄=Eu{9<[dX3~Bޜ1.zwy}@h3B\O7!N떫;X_\CC.} }})~oɂӕ'd -^*ƞ0Ƴycdũ&ޔ t޸jF#5!yN5@c"gcBuS6k-|o"n.q03pCyx&7Ŭ*Tz xOOǎwAHUs*u!r:z |_ ,o?[NhJkGAE> Y-N]1P\qـ?P"鸁nZl;)]CX!ٕ:ۧRb@i*Y8S"mVYuc"ptʊ2\8D7Ie.fR]haD{Qyb*MrLJnduQ. ?y&vyT5k8Nz\5Uy8}<3۷ޮ+_y]u9vMåV5]N@]5›ظWhiSIZ*Bp=>J4F~gr\r88P ݶpM ^-U66}? _ض endstream endobj 1380 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1381 0 R >> endobj 1382 0 obj 748 endobj 1384 0 obj << /Length 1385 0 R /Filter /FlateDecode >> stream xTM0WqWȗتSQP̮[Z!. [㼙Y (~H"X1 (A>}`÷;\Ky (| pz΁蠾=WO%?G(d}"NҘ3H>o_!Wjn |:ZAqp q6wvOF`G]AcѲ]=zzVˠ*3q!@FI.ҳpwzpJ\VzVDWl̛x%a !' J9`c<$Y" &'1FrjB2`zf+@X> endobj 1385 0 obj 584 endobj 1387 0 obj << /Length 1388 0 R /Filter /FlateDecode >> stream xVn0+BZsl=Hc40 hq$iCJlQfrJmHyx@{(ADR4y:u0 N˩_;́ !ss|\+sfJQ@8$ =]F*WX˳;X}s>ba\k|x@iU~ WznU 5ޑ~ӏ' S0cM)i9D 7>eIq֌B*}< (q#lØh _^Y+\Q<$C\HO]1B> endobj 1388 0 obj 788 endobj 1390 0 obj << /Length 1391 0 R /Filter /FlateDecode >> stream xUM0W̱Z_=jRvIc;Hpdk7osxPf襋1PD҅$<5t vp_QQ=<(^#:LߞЛSXD×yߢ4IDpm?5:%=>9@G1xn{Tt3V_z=~=eCǞ)y;( dGF56(QA&M]=f֬{ڴykM)HN82,|)z "R+͹d?깩]˹e^.S}&Bu7oYmUҵ$ZZ'> endobj 1391 0 obj 588 endobj 1393 0 obj << /Length 1394 0 R /Filter /FlateDecode >> stream xRKO1WԶģFވM+t&o]iy]qɼ:75@?2"3XTh($ wE1*JsS؟>P\@tr];x&BnwP/t{a$[Q q[``}cM'KۈU-+ <Ǟ GwP> endobj 1394 0 obj 380 endobj 1396 0 obj << /Length 1397 0 R /Filter /FlateDecode >> stream xœMo0 HH82&kD;ȗ1*_7Q­/;*bo@artXcLxsZo^f;͝M3FK@k*Ճ?6JmIsފM7?'$9n!7RHz@^Ƕ@;9:^+(l? J endstream endobj 1395 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1396 0 R >> endobj 1397 0 obj 483 endobj 1399 0 obj << /Length 1400 0 R /Filter /FlateDecode >> stream xSKo0 Weq@[Ɔs&Ie9_1 GR{o |;W+*"(#!nCJ +֋1"-׽"}k endstream endobj 1398 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1399 0 R >> endobj 1400 0 obj 482 endobj 1402 0 obj << /Length 1403 0 R /Filter /FlateDecode >> stream xŔ]o0+%\`;%6k$L=qO쪤l~qH80|`H %"~_5c;[I*50^j3~SF>~M36%!RXJye kA|&Q$!ʪCUL$MgF7F[ c8~Jֵa#d6`+qQ`<M'@(u\>8.58h.iﮮ "ǡRP .㸉 9T.[![U9v5x[-}@Ŵc9> ~zWQIl&V4@\H%#/]CRȕ:Uv C}6\f력aBǽͮxvzbM##\c u endstream endobj 1401 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1402 0 R >> endobj 1403 0 obj 518 endobj 1405 0 obj << /Length 1406 0 R /Filter /FlateDecode >> stream xSN0+k;V-BPFiKSMҴǮɣ?y3 7 M٢I4Ȁ#BcGPS-mg%p)8A5j}D__7HDVe \aB:ii6_?:HQQC{`˝@E7Қ U'pPѴC" z~Tmݑ8+i(;s:::gA#=Nnk ͸jͿf6|>+ n:BRCXD ˵ڙ$:?!>@UVn +!bKxuy> 7jP^-$V@5*pݦ͗r M''60S)U͊!Ԗa5h˧TCjCar+ yMһ=/KMi'}x3b1m endstream endobj 1404 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1405 0 R >> endobj 1406 0 obj 476 endobj 1408 0 obj << /Length 1409 0 R /Filter /FlateDecode >> stream xTMo0 W˖vnA CW #/'u$7W2ۀRdB80|?C>Z[WWTD֎t:xX7R3Wp"l΃ɢ" ~O)gEjCB0n]~4l/>I\) _X৩r/)֏t6x= >n*ۑg($AO8`7% 9Io.6> j«w\ni6[qP (Aq,b |pf(sK><+KVB,6e K * qCj?loP3(jtbL,H#BRF Yyg>dri(c4N݃Ǣh Ԭ- 4 mn7-`,olrb3ȼ1Eʶv4tӼŦ:9VP\f绀Ӝ-p"MvE>m endstream endobj 1407 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1408 0 R >> endobj 1409 0 obj 537 endobj 1411 0 obj << /Length 1412 0 R /Filter /FlateDecode >> stream xŔM09R{V-ZԪڮ*/$,;Ƅ؞RɎ3C= ? $5 0,y95 {'U#nf@8zdz]{!7'>$O!PI~NQ}A#"}Τy$%&V8eʪ+0ï*_lu~^]mdhSǎ>lw0 %~|, p94ڃ'<*pQbо=黻}kom]HC|F9!EM*2lrɘS UE38nt Pziz_8E&*./nl*/E,eb 4)~@TqЃ$ 4~R mL- 1Fw2fEr¦C.9SaCQJ[]7Ze1H:a!u FpT6R;a]Ĩ̘7r <ܔqZuilYھöWL[%_. ;;^yO| endstream endobj 1410 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1411 0 R >> endobj 1412 0 obj 585 endobj 1414 0 obj << /Length 1415 0 R /Filter /FlateDecode >> stream xTMo0 W˖mnA C[^5l'v$'Nom@G29 б:-@++*((쭁![I*` /M95 m]#_ ?}I5!Rp.I~AӾ;H.,MyGp^G(=ۆnd U*+qQmF{ TlG`T{ jtƸwU۾> endobj 1415 0 obj 517 endobj 1417 0 obj << /Length 1418 0 R /Filter /FlateDecode >> stream xŔn0EY|He@wFEJL$ٱEYwl ./'h#"/} UJ*)d#;\!ܬ7 K`v%˰3x&_r{ AKJ{Ja# C5xO-Y\+ݻ juyH6L&`NPFK}_oFlb>W?= ځl6"1'U ?SOxTcn}77mNEcHE Aq OM[ !.? endstream endobj 1416 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1417 0 R >> endobj 1418 0 obj 532 endobj 1420 0 obj << /Length 1421 0 R /Filter /FlateDecode >> stream xŕ0y9c8#UвZ4$Mͩl?3V^~o4*xcPFzAnwu&hphAp<<8_WoW9 ޥۏS"!a}ڬg$F@$Uc=z(_Fj1lu(b,EGըF<{GУ?=Hz$POƺ說G5F'a3XS2쁍]OЖ%Ҿvo|vo$[êN7><Շg7E endstream endobj 1419 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1420 0 R >> endobj 1421 0 obj 574 endobj 1423 0 obj << /Length 1424 0 R /Filter /FlateDecode >> stream xTMo0 W˖cmnA CWn%l'qv,'grl"H=>>ɖp`~t6^ m}  w:8XxKh') o)06L׀ɢ" .&N- $=:Ja# .C8l}w%I\)f?M)bHg!އBy;xv*+qUmz{ >WhG`Tﻫ jtq Tg{{[t_Vvj[yMQ(Aq,e>G Fh"o!s6-!Ծf/<۬\©H_|v/3ܿ.fFQ#cBydr!bɔ>ŏ$#+ri41WIaggƃ)HV+IuO.tLSfx\٩2tNQzeJ\:+S,v6X[Y βP endstream endobj 1422 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1423 0 R >> endobj 1424 0 obj 516 endobj 1426 0 obj << /Length 1427 0 R /Filter /FlateDecode >> stream xŔ0~9؉=Vj+6jUmWD 8BHDq> 2 >b,l^. 5V[ h/f ?X|eOt8Au-&=p"/7_ũDFǤq6< Oȋϐc3+J2ishso5AIoST1Fe'W} wq>w> &Rl0p窍~~}OWM|ߔEw3Q*!$eqH)kMjh 5%-UY3Vfˁije=f[nP{ܚ ]RH'ZE{QQƊRfZCnnpՖjA*Sa_VL][<)vpۢK]Fň Y U NuHdDHCK69^lY4̻fט endstream endobj 1425 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1426 0 R >> endobj 1427 0 obj 520 endobj 1429 0 obj << /Length 1430 0 R /Filter /FlateDecode >> stream xRMo0 W2'mmb7XC"hڿ_Ҥ|(_Ύ0@ c 9A %`>6ఀDuo66H5| L;:H::^ہt`zRH9Z=i6MYۈV =G~V)!B<$2͏CI ?䝼$WSZ4?QA`5=ӭ8aU0vR0 ǣiߪ\#e0a$Vq7GF0ᦙe}zt#T.ݗ_Y{(eڔS VT*s tG9s%YEjBh˫u[fYyyb`Z~mVcY/0+ endstream endobj 1428 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1429 0 R >> endobj 1430 0 obj 406 endobj 1432 0 obj << /Length 1433 0 R /Filter /FlateDecode >> stream xVn0+Lz")C'F{CX,ߥ(z2%u 9;;Y:{D[k_9P`~6` ܃TjLh=A~ZE+ cn`Mj|8?̚x%r<6Pm6\N=x!a~q{?_,\^>u=kicڦeZq.ṤӰiZ2+[mVNDO= g%GÖ;ֻH}À;oj£.FV ډ_]%b*Gr.n.q0cQ-v`5) W<$ _Crj*(d,dZOCTtʂ*KC?|W$E [E> 5hL١v (?}fUG?t(@SuwCu.߷hf^?Xߋde&!Ya0Nfđ{P]4|2ѱ a#vyiSg9AL&Y,׉ٹLz~R5(n{BRJO&)}\jGN7^*/r:gOF~\QqU++6h{zҮ쾣s5_ٲ 4+> endobj 1433 0 obj 756 endobj 1435 0 obj << /Length 1436 0 R /Filter /FlateDecode >> stream xVMO@W*]sl= @Pd5Y;BC$v͛y;aP U<,+z@3-̀x` %\l᷒(~(OxAB*l^o+eqc% N%Yتa6)ynϋ%ܬ~*׫6mY ň3Zj΁InE=ܑ({X?e"r)rA*Ti{XHjw c\A#Q^&|MՂ<}WWalďxvHYtt2B1 .uQMfY3f߹/44xmK,%-PlO{U^)b$͊hH]u,qLfKЄ9b4U' OtMF8t$n;@6?3jO KA LL4ܗbS|2\q(a9r^t *|FE\ s|n:e<F`pVE.V\& }KO!{ }T^=u^ b(w\[T!T4 endstream endobj 1434 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1435 0 R >> endobj 1436 0 obj 780 endobj 1438 0 obj << /Length 1439 0 R /Filter /FlateDecode >> stream xTMo@+T*`!JiޜGؕ xYwѵ-jv߼yo{t(~6(ͭΆ;\%l᧓99/x?΢oN ;_b@9[D} B|xy̴T*4@E3,ԧ*|qU^is*F":6cͪi eʼnrZU>zJ)0w^8Ϝ endstream endobj 1437 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1438 0 R >> endobj 1439 0 obj 568 endobj 1441 0 obj << /Length 1442 0 R /Filter /FlateDecode >> stream xTMs0W1L}PI; L`9cѦ1=#Jo}kb"t]d.@fu/~ A4] ~D;!O }(x}l 0D3> <]FWUSxFW5IYks wtj_sٟĭ@`$c%>f#m; [__/AeaP!|p&F:C=5٫!wUoobmj{MÌrBr >r2! SݻN9k$j+X$P|oɁؕ[m'~a:#=߼(L;JFJ,3}#cA='l#-㔔 H(%H:}ɫQrȂm^^u5OI|'"so,S$~5]gyVo t4EOX6&kS5>s :Ƭ;SfMc%MgPN endstream endobj 1440 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1441 0 R >> endobj 1442 0 obj 568 endobj 1444 0 obj << /Length 1445 0 R /Filter /FlateDecode >> stream xTMo0W̱=_wծm=ӠBG6$ G<7ofQ R1H7h(H7660ͯ!NZWm<)f7qf> #8;{xnZ3lO_7N W1ܑOt@Jp4D p}>5٫:!ʪonvEa8tb9`QNŜ>I¡$3&O9v,ڹS"'] uA\OyQ֫U#JFJ, )X$q9Y?Ҳ~'B0JIyf2˹c8o@k08^IN2es1, v*͎%U C/_ endstream endobj 1443 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1444 0 R >> endobj 1445 0 obj 496 endobj 1447 0 obj << /Length 1448 0 R /Filter /FlateDecode >> stream xTMo@ ϯ=td2=FJU%-U@T߯' ‘Hcc??Pu3l| ,AE ̠ LAkp sp+98/G1h]Nů !}ێHDjr!Hgtv7X-*xȖ`xv0C:ZYu 齸N;ܴ6{dƉ_+w&n%u'`дasFni`EW#' eQ+Omo{G9UN!(W^|W;<0($)E Ti}rF*?ؙ*C"K1 qRT xqP{/ʏrpvt6F( I}d!+2BHC?)Ǭ3vYEVIeK5)ѸwIJʫF z jm튵?adw endstream endobj 1446 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1447 0 R >> endobj 1448 0 obj 462 endobj 1450 0 obj << /Length 1451 0 R /Filter /FlateDecode >> stream xTMo0 W[z -"Hc ؉-ۿ98>fqIyK80|C56>ZT+V#*bXCcǰo /$' ~W fIiZ>®|K8t~l1$T 5<ΖeqdoF[HʺWHMrv51~ FZ+q;B| >jf؜`=Ἠe\zh&]\+wlG`TokW5: cL66ef?٠/QK8V3B֕Sq,c!)@ aG!s6_þv 8\ϫCyjzdD@1s!iF"3G"934UId%8POu>8'.pbo XLlE>\2l'nQi6\MIz栘[X8+1EB"Ԍ0k]ӟd endstream endobj 1449 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1450 0 R >> endobj 1451 0 obj 523 endobj 1453 0 obj << /Length 1454 0 R /Filter /FlateDecode >> stream xTMo@ﯘcRt?esV8cT0,;˂c8Ҏf͛73p$ (>_![Ao ?+7@IyLЫS F!-b##2?^n3e]hxJuRiX<>[J+D?C4&¦+L_:Gϥ`%N C6};XˠC*zHd F}6WdG~ Jt*Jhe}:qҬJv/ gR,\(&Yq.BJ0gé|aFx}76,/rb=R>,hF1q)Lj+l_3YĦu~*%q N̳CbbV^/5o}uweo'8W?[л3^DKu^d+|A簋MEy6xC{2 endstream endobj 1452 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1453 0 R >> endobj 1454 0 obj 517 endobj 1456 0 obj << /Length 1457 0 R /Filter /FlateDecode >> stream xRN0+<{HB6y51q)-גXggcM4*1H G(}*T͚83% Y,M03;~_7Fx\Ka+^9s|v,?08n*I5\?u v~ˑ3]Bnpdux-bf?Jz<$'S;YA4? 8q CH[-;pE]}z$m{3cs(ccwSRR m׼Kue݌.$LJ6"kܪ$ԹMM֔(ӽz:Y|Q endstream endobj 1455 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1456 0 R >> endobj 1457 0 obj 352 endobj 1459 0 obj << /Length 1460 0 R /Filter /FlateDecode >> stream xTn0 +xLM$[rvŲ) qRc(qn@ )Gyg>_ {o} J._!amo pxG3陂 @J`xXI~`V{ľ Ep_yƘЇ+i#!irE'Wś*!n"%P4k849K {8 r>8lZkOGęN;O nEO/E`pR p bwzH}Mt5 AD Zn:-tYY\x(ȑx!xK9W\.UxkF-k̥ gޖy1Tui_2ٔIulQ8_`$UldHuAshZ[D8ϼTijF!Psh4b'͏u,,]6̄򹇂ְŸ.WیvԈ7p?[@䝝-8^(GICDp5`>IRp}rwAљz歜b endstream endobj 1458 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1459 0 R >> endobj 1460 0 obj 518 endobj 1462 0 obj << /Length 1463 0 R /Filter /FlateDecode >> stream xSMo0 WQeYmC[`AЦjKݿe9:- H @z/1V¬b]L.S *| e8s#1kv{O'@1<] a^GX/9tA }Z%LCƕᑐWp{h|r ^Es~7v)!iˡYgx;AB'8aGۂ*(kTMHth nI_ y6X&G]0P{GDn5QCA4߸Yn2Y6ޕQH; ɥPHa!wpR?47|WQ7㪁ӝ׾_7xp񮂯zD2#44MC/Lpjڑ&L5qYNjV$0;{> endobj 1463 0 obj 468 endobj 1465 0 obj << /Length 1466 0 R /Filter /FlateDecode >> stream xTMo0 WQ%YmC[`AЦj[ݿe9:-P H*L{uf%{|e:6 .5Э5aWo!+2q-U S o k7l"x %c4l/r\9jH.<nϾ͛WuޜC]fEJhrh%}Y6{ #A6>!Ttl$QOGu^U 'ɏ @<4jr(-]&jQuj֬|5,_ET7R$Dr) `FIB6"}'=ȿ૯~u&x\5Pxϼ%,C,)zT.S:Zm 9mLs/z u#hsF9zb&{f bSU@F8hMJ[FŽbXdOݓ[ endstream endobj 1464 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1465 0 R >> endobj 1466 0 obj 472 endobj 1468 0 obj << /Length 1469 0 R /Filter /FlateDecode >> stream xSMo0 WQ%Y6`AЦKݿd:- &LG0p_D EEA.$r tm<5pL:5 |!7w!/?ׂ|P?fV >K`r/0TKȩ&^ nξ?7vSS;(Oň`?0=9h{3Eh[PX1&Hrd= oI_  i>Z8jk|p:CNA#م8;M"7!GC)g&=1FQths}Sڅe*Xƃw` ~,7*"y#VJE1t*qۺfӫ`&T`ѹ1]cjm]ݞ&{4CzJB*ϒN-][$I+='"Y endstream endobj 1467 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1468 0 R >> endobj 1469 0 obj 469 endobj 1471 0 obj << /Length 1472 0 R /Filter /FlateDecode >> stream xSn0 +xl(ɲ6`ðzhhX"b?r;u[A=RL?pc}N>cvQ #:K<5s O ?ׁrW6c "eV6ѐp%$;OepH;HOD -;nΒwÞth!5T!Gۗ3 aΓ: *q槗x@LAٵ= $rC|^5zA뽻o-E˵e%I.BDc >[~+9gk@M[KYU7k3e ?DVTj)/^&]B؛bBb/ܚʤ'GOo"ےyyzߑјa-Њt89DOL; kś2jC endstream endobj 1470 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1471 0 R >> endobj 1472 0 obj 485 endobj 1474 0 obj << /Type /Action /S /GoTo /D [1311 0 R /XYZ 72.0 720.0 null] >> endobj 1475 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 265.91 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1474 0 R /H /I >> endobj 1477 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.68 709.5 541.68 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1474 0 R /H /I >> endobj 1478 0 obj << /Type /Action /S /GoTo /D [1314 0 R /XYZ 72.0 720.0 null] >> endobj 1479 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 697.5 271.528 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1478 0 R /H /I >> endobj 1480 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.536 697.5 541.536 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1478 0 R /H /I >> endobj 1481 0 obj << /Type /Action /S /GoTo /D [1317 0 R /XYZ 72.0 720.0 null] >> endobj 1482 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 219.27 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1481 0 R /H /I >> endobj 1483 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.003 685.5 542.003 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1481 0 R /H /I >> endobj 1484 0 obj << /Type /Action /S /GoTo /D [1320 0 R /XYZ 72.0 720.0 null] >> endobj 1485 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 233.71 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1484 0 R /H /I >> endobj 1486 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.901 673.5 541.901 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1484 0 R /H /I >> endobj 1487 0 obj << /Type /Action /S /GoTo /D [1323 0 R /XYZ 72.0 720.0 null] >> endobj 1488 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 258.14 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1487 0 R /H /I >> endobj 1489 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.734 661.5 541.734 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1487 0 R /H /I >> endobj 1490 0 obj << /Type /Action /S /GoTo /D [1326 0 R /XYZ 72.0 720.0 null] >> endobj 1491 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 243.7 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1490 0 R /H /I >> endobj 1492 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.834 649.5 541.834 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1490 0 R /H /I >> endobj 1493 0 obj << /Type /Action /S /GoTo /D [1329 0 R /XYZ 72.0 720.0 null] >> endobj 1494 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 258.14 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1493 0 R /H /I >> endobj 1495 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.734 637.5 541.734 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1493 0 R /H /I >> endobj 1496 0 obj << /Type /Action /S /GoTo /D [1332 0 R /XYZ 72.0 720.0 null] >> endobj 1497 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 286.47 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1496 0 R /H /I >> endobj 1498 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.536 625.5 541.536 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1496 0 R /H /I >> endobj 1499 0 obj << /Type /Action /S /GoTo /D [1335 0 R /XYZ 72.0 720.0 null] >> endobj 1500 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 298.97 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1499 0 R /H /I >> endobj 1501 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.45 613.5 541.45 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1499 0 R /H /I >> endobj 1502 0 obj << /Type /Action /S /GoTo /D [1338 0 R /XYZ 72.0 720.0 null] >> endobj 1503 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 296.75 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1502 0 R /H /I >> endobj 1504 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.463 601.5 541.463 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1502 0 R /H /I >> endobj 1505 0 obj << /Type /Action /S /GoTo /D [1341 0 R /XYZ 72.0 720.0 null] >> endobj 1506 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 313.69 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1505 0 R /H /I >> endobj 1507 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.347 589.5 541.347 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1505 0 R /H /I >> endobj 1508 0 obj << /Type /Action /S /GoTo /D [1344 0 R /XYZ 72.0 720.0 null] >> endobj 1509 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 289.25 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1508 0 R /H /I >> endobj 1510 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.517 577.5 541.517 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1508 0 R /H /I >> endobj 1511 0 obj << /Type /Action /S /GoTo /D [1347 0 R /XYZ 72.0 720.0 null] >> endobj 1512 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 315.63 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1511 0 R /H /I >> endobj 1513 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.334 565.5 541.334 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1511 0 R /H /I >> endobj 1514 0 obj << /Type /Action /S /GoTo /D [1350 0 R /XYZ 72.0 720.0 null] >> endobj 1515 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 317.01 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1514 0 R /H /I >> endobj 1516 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.324 553.5 541.324 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1514 0 R /H /I >> endobj 1517 0 obj << /Type /Action /S /GoTo /D [1353 0 R /XYZ 72.0 720.0 null] >> endobj 1518 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 338.12 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1517 0 R /H /I >> endobj 1519 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.178 541.5 541.178 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1517 0 R /H /I >> endobj 1520 0 obj << /Type /Action /S /GoTo /D [1356 0 R /XYZ 72.0 720.0 null] >> endobj 1521 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 316.46 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1520 0 R /H /I >> endobj 1522 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.327 529.5 541.327 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1520 0 R /H /I >> endobj 1523 0 obj << /Type /Action /S /GoTo /D [1359 0 R /XYZ 72.0 720.0 null] >> endobj 1524 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 328.11 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1523 0 R /H /I >> endobj 1525 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.248 517.5 541.248 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1523 0 R /H /I >> endobj 1526 0 obj << /Type /Action /S /GoTo /D [1362 0 R /XYZ 72.0 720.0 null] >> endobj 1527 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 263.14 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1526 0 R /H /I >> endobj 1528 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.697 505.5 541.697 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1526 0 R /H /I >> endobj 1529 0 obj << /Type /Action /S /GoTo /D [1365 0 R /XYZ 72.0 720.0 null] >> endobj 1530 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 285.92 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1529 0 R /H /I >> endobj 1531 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.538 493.5 541.538 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1529 0 R /H /I >> endobj 1532 0 obj << /Type /Action /S /GoTo /D [1368 0 R /XYZ 72.0 720.0 null] >> endobj 1533 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 299.25 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1532 0 R /H /I >> endobj 1534 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.446 481.5 541.446 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1532 0 R /H /I >> endobj 1535 0 obj << /Type /Action /S /GoTo /D [1371 0 R /XYZ 72.0 720.0 null] >> endobj 1536 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 469.5 187.366 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1535 0 R /H /I >> endobj 1537 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.082 469.5 542.082 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1535 0 R /H /I >> endobj 1538 0 obj << /Type /Action /S /GoTo /D [1374 0 R /XYZ 72.0 720.0 null] >> endobj 1539 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 239.27 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1538 0 R /H /I >> endobj 1540 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.864 457.5 541.864 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1538 0 R /H /I >> endobj 1541 0 obj << /Type /Action /S /GoTo /D [1377 0 R /XYZ 72.0 720.0 null] >> endobj 1542 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 243.72 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1541 0 R /H /I >> endobj 1543 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.832 445.5 541.832 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1541 0 R /H /I >> endobj 1544 0 obj << /Type /Action /S /GoTo /D [1380 0 R /XYZ 72.0 720.0 null] >> endobj 1545 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 217.05 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1544 0 R /H /I >> endobj 1546 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.018 433.5 542.018 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1544 0 R /H /I >> endobj 1547 0 obj << /Type /Action /S /GoTo /D [1383 0 R /XYZ 72.0 720.0 null] >> endobj 1548 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 218.16 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1547 0 R /H /I >> endobj 1549 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.009 421.5 542.009 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1547 0 R /H /I >> endobj 1550 0 obj << /Type /Action /S /GoTo /D [1386 0 R /XYZ 72.0 720.0 null] >> endobj 1551 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 228.15 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1550 0 R /H /I >> endobj 1552 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.942 409.5 541.942 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1550 0 R /H /I >> endobj 1553 0 obj << /Type /Action /S /GoTo /D [1389 0 R /XYZ 72.0 720.0 null] >> endobj 1554 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 224.27 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1553 0 R /H /I >> endobj 1555 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.968 397.5 541.968 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1553 0 R /H /I >> endobj 1556 0 obj << /Type /Action /S /GoTo /D [1392 0 R /XYZ 72.0 720.0 null] >> endobj 1557 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 385.5 185.697 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1556 0 R /H /I >> endobj 1558 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.094 385.5 542.094 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1556 0 R /H /I >> endobj 1559 0 obj << /Type /Action /S /GoTo /D [1395 0 R /XYZ 72.0 720.0 null] >> endobj 1560 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 198.73 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1559 0 R /H /I >> endobj 1561 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.145 373.5 542.145 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1559 0 R /H /I >> endobj 1562 0 obj << /Type /Action /S /GoTo /D [1398 0 R /XYZ 72.0 720.0 null] >> endobj 1563 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 203.17 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1562 0 R /H /I >> endobj 1564 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.113 361.5 542.113 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1562 0 R /H /I >> endobj 1565 0 obj << /Type /Action /S /GoTo /D [1401 0 R /XYZ 72.0 720.0 null] >> endobj 1566 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 204.83 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1565 0 R /H /I >> endobj 1567 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.103 349.5 542.103 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1565 0 R /H /I >> endobj 1568 0 obj << /Type /Action /S /GoTo /D [1404 0 R /XYZ 72.0 720.0 null] >> endobj 1569 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 200.95 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1568 0 R /H /I >> endobj 1570 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.13 337.5 542.13 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1568 0 R /H /I >> endobj 1571 0 obj << /Type /Action /S /GoTo /D [1407 0 R /XYZ 72.0 720.0 null] >> endobj 1572 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 202.6 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1571 0 R /H /I >> endobj 1573 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.117 325.5 542.117 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1571 0 R /H /I >> endobj 1574 0 obj << /Type /Action /S /GoTo /D [1410 0 R /XYZ 72.0 720.0 null] >> endobj 1575 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 214.26 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1574 0 R /H /I >> endobj 1576 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.037 313.5 542.037 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1574 0 R /H /I >> endobj 1577 0 obj << /Type /Action /S /GoTo /D [1413 0 R /XYZ 72.0 720.0 null] >> endobj 1578 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 215.38 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1577 0 R /H /I >> endobj 1579 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.03 301.5 542.03 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1577 0 R /H /I >> endobj 1580 0 obj << /Type /Action /S /GoTo /D [1416 0 R /XYZ 72.0 720.0 null] >> endobj 1581 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 213.15 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1580 0 R /H /I >> endobj 1582 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 289.5 542.045 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1580 0 R /H /I >> endobj 1583 0 obj << /Type /Action /S /GoTo /D [1419 0 R /XYZ 72.0 720.0 null] >> endobj 1584 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 208.71 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1583 0 R /H /I >> endobj 1585 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.075 277.5 542.075 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1583 0 R /H /I >> endobj 1586 0 obj << /Type /Action /S /GoTo /D [1422 0 R /XYZ 72.0 720.0 null] >> endobj 1587 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 225.38 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1586 0 R /H /I >> endobj 1588 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.959 265.5 541.959 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1586 0 R /H /I >> endobj 1589 0 obj << /Type /Action /S /GoTo /D [1425 0 R /XYZ 72.0 720.0 null] >> endobj 1590 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 205.94 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1589 0 R /H /I >> endobj 1591 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.096 253.5 542.096 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1589 0 R /H /I >> endobj 1592 0 obj << /Type /Action /S /GoTo /D [1428 0 R /XYZ 72.0 720.0 null] >> endobj 1593 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 241.5 263.433 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1592 0 R /H /I >> endobj 1594 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.587 241.5 541.587 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1592 0 R /H /I >> endobj 1595 0 obj << /Type /Action /S /GoTo /D [1431 0 R /XYZ 72.0 720.0 null] >> endobj 1596 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 241.48 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1595 0 R /H /I >> endobj 1597 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.847 229.5 541.847 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1595 0 R /H /I >> endobj 1598 0 obj << /Type /Action /S /GoTo /D [1434 0 R /XYZ 72.0 720.0 null] >> endobj 1599 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 235.93 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1598 0 R /H /I >> endobj 1600 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.887 217.5 541.887 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1598 0 R /H /I >> endobj 1601 0 obj << /Type /Action /S /GoTo /D [1437 0 R /XYZ 72.0 720.0 null] >> endobj 1602 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 221.49 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1601 0 R /H /I >> endobj 1603 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.987 205.5 541.987 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1601 0 R /H /I >> endobj 1604 0 obj << /Type /Action /S /GoTo /D [1440 0 R /XYZ 72.0 720.0 null] >> endobj 1605 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 215.94 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1604 0 R /H /I >> endobj 1606 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.026 193.5 542.026 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1604 0 R /H /I >> endobj 1607 0 obj << /Type /Action /S /GoTo /D [1443 0 R /XYZ 72.0 720.0 null] >> endobj 1608 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 243.13 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1607 0 R /H /I >> endobj 1609 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.837 181.5 541.837 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1607 0 R /H /I >> endobj 1610 0 obj << /Type /Action /S /GoTo /D [1446 0 R /XYZ 72.0 720.0 null] >> endobj 1611 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 248.7 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1610 0 R /H /I >> endobj 1612 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.798 169.5 541.798 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1610 0 R /H /I >> endobj 1613 0 obj << /Type /Action /S /GoTo /D [1449 0 R /XYZ 72.0 720.0 null] >> endobj 1614 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 249.8 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1613 0 R /H /I >> endobj 1615 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 157.5 541.792 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1613 0 R /H /I >> endobj 1616 0 obj << /Type /Action /S /GoTo /D [1452 0 R /XYZ 72.0 720.0 null] >> endobj 1617 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 241.48 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1616 0 R /H /I >> endobj 1618 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.847 145.5 541.847 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1616 0 R /H /I >> endobj 1619 0 obj << /Type /Action /S /GoTo /D [1455 0 R /XYZ 72.0 720.0 null] >> endobj 1620 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 133.5 213.844 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1619 0 R /H /I >> endobj 1621 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.91 133.5 541.91 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1619 0 R /H /I >> endobj 1622 0 obj << /Type /Action /S /GoTo /D [1458 0 R /XYZ 72.0 720.0 null] >> endobj 1623 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 240.1 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1622 0 R /H /I >> endobj 1624 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.857 121.5 541.857 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1622 0 R /H /I >> endobj 1625 0 obj << /Type /Action /S /GoTo /D [1461 0 R /XYZ 72.0 720.0 null] >> endobj 1626 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 203.45 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1625 0 R /H /I >> endobj 1627 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.112 109.5 542.112 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1625 0 R /H /I >> endobj 1628 0 obj << /Type /Action /S /GoTo /D [1464 0 R /XYZ 72.0 720.0 null] >> endobj 1629 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 206.23 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1628 0 R /H /I >> endobj 1630 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.094 97.5 542.094 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1628 0 R /H /I >> endobj 1631 0 obj << /Type /Action /S /GoTo /D [1467 0 R /XYZ 72.0 720.0 null] >> endobj 1632 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 204.56 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1631 0 R /H /I >> endobj 1633 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.105 85.5 542.105 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1631 0 R /H /I >> endobj 1634 0 obj << /Type /Action /S /GoTo /D [1470 0 R /XYZ 72.0 720.0 null] >> endobj 1635 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 213.45 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1634 0 R /H /I >> endobj 1636 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.044 73.5 542.044 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1634 0 R /H /I >> endobj 1637 0 obj << /Length 1638 0 R /Filter /FlateDecode >> stream xM%Wvy}k/ m  IFw@$B,Lÿޱ"SX)S =S =S ?S q<S qg=uSߢo6coxϓg>|mwvfd~>4}ĵWo^+PwuuzJ]+P'CI,'YN\dr屉屉屉屋屋屋屋qqqeeeeeeee#F,;Yvd9r A,'YN\drelbX&ebX.qebYYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.M,s2w],s<2C, $$$O6) ?γwVxݤSTFuPݩ^Rj\bYŲ&=PbYŲ&=PbY2222222ɲe#V?~;IzlT՝%HݨPAzHoT՝jbY,,,,,,,Y6leל-NuR=AuzI=dr˚>H-5}Z,k XC,k 5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.bYwbYŲReeeeeeewI75}6e>}>3}yrj/&}#衆_e>_PzH]C]NZ,kwmffFjmf& $$$F,Y6dɲ A,'YNd9r"%͌bY@em3#X63PbYHMAAAIIII,Y6dɲ A,YNd9r"%͌bYH-͌bY@}em3#5YYYYY&Y&Y&Y򎽯u75`O=ek=XηO X4;^=Ow\Q/qܼ܇{5INmm=^xsQTwԵIԍ)umuRM,Y6ldɲe'A,YNd9r"EK,\0],\0C,\& $$$$F,Yvdr A,'YNdr0:jsZ,\s,,,,,,,\κŀOsy8}_s}n7/y}K{{mۈonVYH,׮InTvS:Lu4iT.S]H56RTc#I5vRT 8H5RTTTTTTT6SmLj7nTS:Mu4eTFjn;NjAyjjjjjjjNgw;ɿlxq7|Ů5n~8V^o<,/OʛivSM0aTNSLu2EuI9֍;֍'Z7jxRnaaaiiiT6SmMj7aTNS:Mu2eTƓrROwROIn<%?Hn<)7000444պmnqyˎ#nnVʛ+i|n:Mu2ErRZK@)'Z*A rS S S SMSMSMSMSmLj7nTS:Lu4iT.RjTk(ZD%?H։RnaaaaiioAY>s%~sq͍V~qOo{w_|q楮;^z,-;\.Eh.It.ij3fTvS:Lu0iTNS]LujlFj;Nqj6SmLj7nTS:Mu4eTFjnNjAyjjjjjjj}zZ֭>x=YGmO]w?(^zTyݶCX=qs֢Y>)]$O1aS:Mu2eTc#rRO%I6?TkSI6@Vo_jk׷b]w}ݽ맼Y>)?SwrRwj|'zO9ֻ~ISnaaaiiiT6SmMj7aTNS:Mu2eT]?Z%ISN_T]?z\s];ί7Ǽy?{o?~Y|>prxGu3[(?XR,?,)OMu4iT.S]ZPN`;փ=j=#A`Lj3nTS:Lu4iT.S]ZPN`ZPN`փ=jjjjjjɱVƔl7zw:ޮ{wOln^Ə|uww 7'5<-׸N[nT.R;I@$I@('պ պTTTTTTTT6SmMj7aTS:Mu2eTrR;I@('պ պTTTTTTTx#_w G`uGl7w oo-o^`?otX7/Ui9_~yy)˻򳠼Y>)?TT4TTTTTTT6SmoD7n|7's<-7eT.Rj-|'Z:J9QIRnaaaiiiT6SmMj7aTNS:Mu2eTk(ZKG%IRNtTTk(z?A:喾ݗ9b>Oow5~7?˪>n^چf7zRczS,˻zR^f<-7fT6SM0aTNS:Mu2E!E^=._G}ؿ}way|Q^J,篒nTvS:Lu4iT.S]HUrR>|'WIUrR>TTTTTTT6SmLj7nTS:Mu4eT^JN篐z}*9^B~Z7s=[Km{ݮ>\vލ}]_`/7Ï?tc} ~tÅemnyZ>(?ovOay|Q~ S,|PMj7nTS:Mu2eT;;֊R9jȑ$D('IrRg('IDTk)Lj3nTvS:Lu4iT.S]HVQNMTk%Z+('ZF6SmLj7nTS:Mu4iT.Rljd|'ZF9J6Rljjjjjjj=rzmG(V͞6,yv39@ڸWo{´~ܽ]Zu#I-O{pnPNFTk zmj#9^HnaaaiiiT6SmMj7aTNS:Mu2eTMm$'kSwR6TMm ?HFrS S S SMSMSMSMSmLj7nTS:Lu4iT.R6TMm$'kSITMm$70000444՚Êg#'~^pf3'8(ownh;~ڶ6‡C-\<-[(?+P,7iT.S]Luj('Ij('QN5bTTTTTTT6Sm: 'Ey?,oOnyZ>(aNS]Luj('Ij('I~j(70004444fTvSMu0aTNSLu"QN5bTkF9ֈMTkFְh;}Pzmy 7C׆f߽{ï~?fj^zϵ n.|k7':A[nTNS]Luj=+H9ֳj=+H9ֳZ RnaaaaiiiTRfyX-_f|妺Lu2E Z Jj=+H9ֳj=+H6SmLj7nTS:Mu4iT.Rg)'zVPTYAI zVrS S S SMSMSMSf֘4f=\x|՛OφfOգ/Ȋu R?Gq~~$T7czH]?S;drccccccc $$$$F,Yvdr A,'YNdr26M,c2v],82 LLLldȲe'N,;Yd9r$I,Y.\bX&ebX.yebXAAAAIIIg=C4o# |}}u3E:~^%pޜXF{?{aB5-cBlgc\8 ˻Iۃ|PMj7nTS:Mu2eT) j Nu Z0PNu Lj+ը%|Q˛[fyXnT.S]Z0PNu ;) j Au Lj3nTS:Lu4iT.S]Z0PNu Z0PNu ) jjjjjjjjyǽ/Ojg#c¡ }0_+qsݜúzܸ\8㐸K >C$"Ep!CN"Dp c~>c~:>@zXCCCCSSS6ǩ~HO(?Q0iT.S]H֡QNrRuhjC ZF6SmJVO}<,/ay|R>wrS]Lu"ZF9:4wRuhjCTkLj3fTvS:Lu4iT.S]H֡QNMTkZ$?H֡QnaaaiiioY 3kvԙnuޤ َ_9 뷯_myǜ{͹k\q۠!JyX-_?D)oO0iTNS]LujG9֮qZQNk֮qjjjjjjjj3fTvS:Lu0aTNS]LujG9֮qjG9֮qZQnaaaaiiiT6SMj7aTNS:Mu2eTk8Iv|'5rR]('5rS S S SMSRlu>]-5˶qsyr3_9ZL׾qc/f"9mq Twݚԍ)y&uR=d9r I,'Y.\dIJI-xNjsRe-Z6'5YYYYY&Y&Y&Y6ldrf>[(I-OMu2eTkZk$IQNVrRrjjjjjjj3fTvSMu0aTNSLu"Z+G9Z9wRrj Z+GdJau FF£m7+9ݗHm?-\-,ǫVZ-y|R^%Oh[T.S]H֛QNLTkZ$?H֛QnaaaiiiiTֆ,Zg@|P^Hw!rS]Luj7TkZ('Zo&AތrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z('Zo&NތrRfj7TTTTTTTY"Ǻ{Q?V[۞s\uf{ͻǵfr{'ny켹9;n.|77wEf<-7aTS:Mu2eTkZ ('ZF9֢5Rekjjjjjjjj3fTvSMu0aTNS]Lu"ZF9 6wRlj`TkLj3fTvS:Lu4iT.S]HVQNMTkZ+$?HVQnaa6[J-͖fK z^zjշmuG;> wW޽}~[^o~_ݍ'~UfN1V_uws kNAyX-_-7'uFZs TTTTTTT6SmMj7nTS:Mu2eT֜rR9;֜rR9Zs M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luj)('՚SHj)('՚SH~j)(7000444څck[Zض֏]P6_}o_߾~|>_j<ë\ |;זS{;))O;vnHHHIII8H8H8H8L5L5L5L5M5M5Mj3V'%u?nTONuR=A5YN\drelbX&ebX.qebYYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,Xod27],s2C, $$ZF~gk{| {2o}Snoo^nr}z^@e<,/?)oO?)OIPN翇'u3BIy}r!yZ>(/$˻iT.S]H`jM('՚QN5 ՚QnaaaaiiiTRm[(%7'UT.S]H`jM$I`jM('՚QnaaaiiiT6SmMj7aTNS:Mu2eTk F9LTk F9LTk FlŶ9dtm]So`lW`7ݳ_f?K% i|'PN5b PnaaaiiiiT6SM0aTNS:Mu2E5bTkB9ֈrRֈrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z#IF,Z#IF,jX(7000444ګgw5bam݌Xj+_?ݬ/ڶͫ|&͈eW;]w=AA"ay|I^Q,ZQNu>ZQnaaaiiiTR^>Q/AuzJ] Ns:&I,Y.ɤ: ],|2Ų':Lj LLLLldȲe'N,Yd9r$I,Y.ɤ:Ljɤ: C,|22222222򚐜oY1}/W˄~|}xG?s?^054gIǧ?O&˻KON&'ON"IIIM5L5L5L5M5M5Mj3ՏN^Rt3uzJiI䟩jdrˏOˏO䟩䟨4gj LLLLldȲe'N,Yd9r$I,Y.4gj4gj4gj4'C,?>M,,,,,,,?>Mf&x/o|-ZMxw5~|}=y?+=o^k/.=j 5ɒ<-DL[(M0iT.S]Luj('Ij('QN56TTTTTTT6SmXkQ!vA,Mu2eTkF9MTkF9,MTkF6SmLj7nTS:Mu4eT֘rRAZ6ImZ6M5L5L5L5L5M5M5Mz?dug]E7ם?VIwǟ7߿W_o<0Hiyi^MZ>(%˻ژYfژYrR6f|'kcfIژT%70004444fTkccڗzH]2CTwԵ!3ԍj\drelby X^0?_by X^{0C-AAAAIII,Y6dɲe'A,YNd9r"EK,k],Mke`j LLLTm[[(ZSZ;zwrS]Lu"H56RTc'I5vRT 8H5S S S SMSMSMSmLj3nTS:Lu4iT.S]Fj;Njaaaaiii5 :Öd݌]>0;^ޏ[cL˾qo‡B%y% y|R~R;rS:Lu0iT.S]LuuҤz4 NIuҤz4)6SmLj7nTS:Mu4iT.RT'!I:|RrR JM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]H:RrRΦT)%'|JRNTTTm6[J-͖fKgRZ㷵m9z盵2?|&e?pox9nEȗ5_׶}ljܠ<,/9ɛ:CNrS:Mu4iT.RGl)'zVT1[I zԖrS S S SMSMSMSMSmLC9Ay2'yX-_As7Mu2Ej=uK9SZORN-ZOJLj3nTvS:Lu4iT.S]HT[wRn)'zrRn)7000444k[~F^rmq7+;ߊw{-3+ endstream endobj 1476 0 obj [ 1475 0 R 1477 0 R 1479 0 R 1480 0 R 1482 0 R 1483 0 R 1485 0 R 1486 0 R 1488 0 R 1489 0 R 1491 0 R 1492 0 R 1494 0 R 1495 0 R 1497 0 R 1498 0 R 1500 0 R 1501 0 R 1503 0 R 1504 0 R 1506 0 R 1507 0 R 1509 0 R 1510 0 R 1512 0 R 1513 0 R 1515 0 R 1516 0 R 1518 0 R 1519 0 R 1521 0 R 1522 0 R 1524 0 R 1525 0 R 1527 0 R 1528 0 R 1530 0 R 1531 0 R 1533 0 R 1534 0 R 1536 0 R 1537 0 R 1539 0 R 1540 0 R 1542 0 R 1543 0 R 1545 0 R 1546 0 R 1548 0 R 1549 0 R 1551 0 R 1552 0 R 1554 0 R 1555 0 R 1557 0 R 1558 0 R 1560 0 R 1561 0 R 1563 0 R 1564 0 R 1566 0 R 1567 0 R 1569 0 R 1570 0 R 1572 0 R 1573 0 R 1575 0 R 1576 0 R 1578 0 R 1579 0 R 1581 0 R 1582 0 R 1584 0 R 1585 0 R 1587 0 R 1588 0 R 1590 0 R 1591 0 R 1593 0 R 1594 0 R 1596 0 R 1597 0 R 1599 0 R 1600 0 R 1602 0 R 1603 0 R 1605 0 R 1606 0 R 1608 0 R 1609 0 R 1611 0 R 1612 0 R 1614 0 R 1615 0 R 1617 0 R 1618 0 R 1620 0 R 1621 0 R 1623 0 R 1624 0 R 1626 0 R 1627 0 R 1629 0 R 1630 0 R 1632 0 R 1633 0 R 1635 0 R 1636 0 R ] endobj 1473 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 1476 0 R /Contents 1637 0 R >> endobj 1638 0 obj 16064 endobj 1640 0 obj << /Length 1641 0 R /Filter /FlateDecode >> stream xSMo0 WQeYmC[`AЦjKݿe9:- H @z/1V¬b]L.S *| e8s#1kv{O'@1<] a^GX/9tA }Z%LCƕᑐWp{h|r ^Es~7v)!iˡYgx;AB'8aGۂ*(kTMHth nI_ y6XfG]0P{GDn5QCA4߸Yn2q_QH; ɥPHa!wpR?47|WQ7㪁ӝ׾(4~݀zD2#44MC/Lpjڑ&L5qYNjV$0;{> endobj 1641 0 obj 468 endobj 1643 0 obj << /Length 1644 0 R /Filter /FlateDecode >> stream xTMo0 WQ%YmC[`AЦj[ݿe9:-P H*L{uf%{|e:6 .5Э5aWo!+2q-U S o k7l"x %c4l/r\9jH.<nϾ͛WuޜC]fEJhrh%}Y6{ #A6>!Ttl$QOGu^U 'ɏ @<4jr(-]&jQuj֬|5T_ET7R$Dr) `FIB6"}'=ȿ૯~u&x\5Pxϼ%TBa )zT.S:Zm 9mLs/z u#hsF9zb&{f bSU@F8hMJ[FŽ\XdO&[ endstream endobj 1642 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1643 0 R >> endobj 1644 0 obj 472 endobj 1646 0 obj << /Length 1647 0 R /Filter /FlateDecode >> stream xSMs0 W6xoML  1]&1aaö-0#!!' +aQ.&HPi)K %tm85pG&"g ?c_% s-CO^a.s/)˵J+i%!/[Ѽƭ S>bm-vΒa:qf}|m HRnrD7(!f0(gu.U{7P@"79QCA#ܹEn6s_ב܄IR(DAMLa!{& |+9ȿʻ_EՀH/6 kO/ʗO cQQQ̈8Fi׿7 vB)&6Y]w۳h݀P'(hO}VpM՟hA[fIԩŽ:~+Z(`Y endstream endobj 1645 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1646 0 R >> endobj 1647 0 obj 468 endobj 1649 0 obj << /Length 1650 0 R /Filter /FlateDecode >> stream xTM0W̱=`vVJѢadvQ}6{KC$[cy < wnQZbM%@&m(NGTİvCnmaKIE|!xC@CX?ߑ;aWg$3s Ad4:!Rhw[7ݟUl~W)(\E3_,ov XlSHvGe۹v mQ$NULJB9 g4팃P|tڠG`Tk~ * jƘlmw_榲un_0fT^%J!Tpj&@rXQCaB> )KCS B(`^}ۇ[M Rg6=Ig wv:SИS\H1' Y~v#E\ Ã6e>=..2i٪~<+܉eAyii*k{e]LSj=99NGЬJ|͋0Vy!* ߘ  endstream endobj 1648 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1649 0 R >> endobj 1650 0 obj 540 endobj 1652 0 obj << /Length 1653 0 R /Filter /FlateDecode >> stream xTM0W̱=Եǀj+Ujhi]hpT ل, l o޼7CAwa^.&A# Ȁc%t 7:CtY=ᑒ4L ˵;6;wqu~ vBG 1q1Wh!)7[7͟Z@~1)R_AѬy;^" D?s1*v\wFE(CoU//v@)x[xqhG 5?Dj !7_榲uf_|V T;/A rJIL_% <͐Uh Ң4K[AwȷJ1iShQ9S/|Zv5gL07:6&؃.bx 2U~v,ͣ4DGLL9T:8"3@Χ*-4 -M+ ŶsS|;FꮊG(|ت>Zо3 endstream endobj 1651 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1652 0 R >> endobj 1653 0 obj 514 endobj 1655 0 obj << /Length 1656 0 R /Filter /FlateDecode >> stream xTn0 +x\$J;vtE&jqěe98-s H:oLߵ?E,[`TܺZ;+{D)Lklqq~3vwH˾EHikmAZ x|Ur:/gf >=EJP4jjh$4sFz o DZ#EކPy3̠''u Uߌ^ Rhp׎wz>&jiZ/M骩'yVx{Rdt7:BREL!/WZgh9|ȊM] U*O| {=/ xvne) L(<DZ j3lv#VskkcL\+αKT\ V!׬vD}.qBbyJ¤ԼKZep)`~^UUj Z endstream endobj 1654 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1655 0 R >> endobj 1656 0 obj 491 endobj 1658 0 obj << /Length 1659 0 R /Filter /FlateDecode >> stream xTn0 +x\$J7lv]1sGINb'qm@ǧGR~fob|Þ{ޕ 5 6TaEKD (A"!"/`ݧ X"xsf`Bbon׼ZK(m뻛(HgQ b FB|I!Ttd&=i!2Px2J>=&v4h\jg = PpC|r:!m_G{[nyմ> PmA#Gt)<DKjH7<Ds PCYU~[y úH؟_hI<6PrmnPwA\6.h~TZ EJ o$sR - ?g]nD+Vel_kя*G{\0 endstream endobj 1657 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1658 0 R >> endobj 1659 0 obj 464 endobj 1661 0 obj << /Length 1662 0 R /Filter /FlateDecode >> stream xTn0+)9h P Pm1],ٖe.g3 yc!WThk(éFpp& L!`Ga|G#ag&2 {[$-RYkS )†ߝ5E,߶_=@vKdEhݡYЮٓVl G;Bc!Uxz:ed\|~(LrF8g®52pz$F cMx`2d/hv77+F?>myTp˜[+{\s^nm*q7)EA oIoLd[7۶VQkRkFЌ 爹T1%cy zL̕I_-с+7;.N[~{(ZX7{ξ+9zhe,?WlX endstream endobj 1660 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1661 0 R >> endobj 1662 0 obj 481 endobj 1664 0 obj << /Length 1665 0 R /Filter /FlateDecode >> stream xTM0+{xJ=T6 N@%Ҩc HƼyoތyuP|ޙE*HoC%܃{2`û.%$ _g<"q,ޜ:?{(EBOJ̏Co>4B+]?CU$- M M9%i}vd0}mar\Z!vk: :|2nJ~}(2Jqҿ:7vmH#S"kW%Tbr]7I2~(vi;qp9LPP[y&xSiDK 1219ԉui\ܺ',}W0f`#x*:rR>,hƊ9rq)WDߣ{nd3W?O)i@HG;}_Px&.(]mk btoultIU(6JX_ /&0:qTGƋIPy18xQb]db0#¡®ЛJ|iZ8= endstream endobj 1663 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1664 0 R >> endobj 1665 0 obj 574 endobj 1667 0 obj << /Length 1668 0 R /Filter /FlateDecode >> stream xTM0WqP`=j[ZEf8 *F;`@9o޼7v߇fF@]HՅ|ܣ‡ is.ng `vY9a7g"! \,3>T < ^j)$ h[ ¯9(\EVBgmdž'A8OіPFwsvVW:=nN2X_p2nJ>=rF8'ƮpHj5UAmmr[-_l*u/X *dc!Sxp 0KB BsD"=x.`9Tk HzE Q_~<2d#Z-VJ5fh=lˤ<@GPk\H1Ѩ.(ǤT8-(*V}җ!:3W0|omt: +[,ﯗC-4J*-[gD{/ endstream endobj 1666 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1667 0 R >> endobj 1668 0 obj 506 endobj 1670 0 obj << /Length 1671 0 R /Filter /FlateDecode >> stream xT0+xA+ݚ"M@36i%ь߼M\'xZާwe9(#)5vU50ho6o <=ߊـ?F o?fi/3m.'5k{%^@Qn}g)ҊYC'3geQ 38 ?z;B|I1TהH2N OUɧFBF@Mv}УPZ͇xeGD ڼ4<&I߅$)8 8$x CR)@3  𾬪0ݒe]=Xm!>}c^uRl1!μS7j ʽ:sr t._4H1:ῖկpdsNe_L{߁{]d]:˲Z4Jkx us= :Z endstream endobj 1669 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1670 0 R >> endobj 1671 0 obj 465 endobj 1673 0 obj << /Length 1674 0 R /Filter /FlateDecode >> stream xTK0W̱Z8ǪѢaXbB +6{=6 h?Y[Blhq֕wV:=n]N2Px2J<9hҋpiz$F^&<ШcZ٘Z^x(^K8\#ˀCBM%|: uU@n*`^E R7jz>#_{TP@tV%Z.$@']ql9垢A(cЗ*_`?:T~8y4 A'rSn2 ef~`HCID2.MdXXF76`v;u_\? endstream endobj 1672 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1673 0 R >> endobj 1674 0 obj 527 endobj 1676 0 obj << /Length 1677 0 R /Filter /FlateDecode >> stream xTM0W؉=RnM&&PiXHfE(@ u+2X$e$%a@N6f D->GNx\ߋو?d .o?&6ι,Ljr!WWY/ /֭^?BY|'hߡo$fF=1D kHF=q2pb:7%<6l2k' {=XtAMj&j<$J 5HtL>5/a5tK]>{([w2tͭc4M6ֽ[7lwPwgbs)et^5^EZ$k|-~Oˤ4YA.VbeMu <Y0c endstream endobj 1675 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1676 0 R >> endobj 1677 0 obj 465 endobj 1679 0 obj << /Length 1680 0 R /Filter /FlateDecode >> stream xT0+=vx @TmeBjhӤۆ-=8M4l{33 /"$w(9FnAO 6xf X|b\ u-->#n/`ޥ"ey6 xx5zTT+H5!>#EJPhkh%}F6{gOіPEO]5AOX/'bb<7%<h0Ʈ5szP5B rҽݟnFR !Y0t2Jzb{hYY%֮fXAU_hSxq6˟A1!rb 5:co 4z/GjnMBeb@S1JT\ V5+6> endobj 1680 0 obj 488 endobj 1682 0 obj << /Length 1683 0 R /Filter /FlateDecode >> stream xTn0+!d ڢ=0"$dJc1]-K^\%gwfv׀gHaVm 6B#(G[ /f P<<(kSߝЋק&dHhPk"PDp>>4\ $2$?/Ɂ"P4i84>sI4 Igv})(| #;ε'^_O{p2.ZPHdq 6h#S"oՄW%5TVrjnn|?cȪ&߽# BN82t>TL2ՑT>@.s3XB63`lmun7Se9]^s DZsJ\UYGL!RisAng\r'XT|cvձ< %devvCܕ[7M15k(]\u/+lŒ}+eZCVs4=]rE97406gx @)768},!j@gܛDK( endstream endobj 1681 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1682 0 R >> endobj 1683 0 obj 554 endobj 1685 0 obj << /Length 1686 0 R /Filter /FlateDecode >> stream xTM0++?+z-jՊ'%Mn_1@֘7y1vr61P `>¾v{ 7JW Sxh?] ~f~{BoOa}ɗxu*P$R* "+o6o%/'۽6O>gѬP[nA hM(\ #M q[ǭW}Г uq>7%>%8H\WmH}#S"w=R*C]iMK&oBU|N822\#G"0ǜsch.& g{SJZºfbj`0Ր.ß} U+()ȁ.e\rM?⠏H:e$a)T˪-/LC j&M/RKB^,yy=WdzG=١:YDjH`iNX/+L6 ;玀&)`eHL \lTd8`8|nI#5m endstream endobj 1684 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1685 0 R >> endobj 1686 0 obj 583 endobj 1688 0 obj << /Length 1689 0 R /Filter /FlateDecode >> stream xTn0 +x\$J[lvmQs4vGYNl'qc@)=yc>X{| ;W#XAgGP[wKJ&;%l8,&߱G,Mʾ|@ H_{$+AHWpkO^. ֵk!#FJ0=9#"-Ƒ"TGCE7 3 $C͸(R(OF뀉\ v4H79UCN+Pzvץk//7n׍'t h(9[B}Ԇ[CjFFWy@4 ѹ͊at%4K8kxv;q!5$8ژP_YޥZXM &Ƙ)!KT\ Vʯxw{`=Fb mڌ6pl&g'TZ+,˷|ME:j. endstream endobj 1687 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1688 0 R >> endobj 1689 0 obj 472 endobj 1691 0 obj << /Length 1692 0 R /Filter /FlateDecode >> stream xWMo6W- Q%;`h. ([L)C($JoxlﵺD ti=o\xv)mꭃz%Y?f `m9p-p_=q=s뗉\&^"/O$ =%|OÄ Wair#%ÎZ:G9~r`~MukVm׎Hw܇߆scgkӦu$NU rqqjQ=d^ +"v:Olz"ûAb'bz)!Qp w,YMp=4}bd LnS҂iP%_7y&z$Dq$@&!L]پCucj=Gvc %-d|.'+CɂA*m5|\9V\2.Ppxsj x>fTi7r m9/ P^ YJ3Eb(ce@LƬVףJn$LztA@#hnJ`09T F3&WfjAߝ(V&LMCRF -Y8]23! !J(MatwִARV V"'^> endobj 1692 0 obj 1093 endobj 1694 0 obj << /Length 1695 0 R /Filter /FlateDecode >> stream xWMo6W- Q);`h.֋([L)CɱQ=I |y3d,^GSHVńϦ>`C:z/o>—%c ַ︙A"}s-uw_wO`a2~C`(rcw8#"ۥ0[/\n1 ;~>^e:讍M3ſnj#!C[Õη*v=@.y2rHgZ(BtxgִB*|\͏sOC\ !..Օ2 kՕ.Z`V\|:p™L> endobj 1695 0 obj 1095 endobj 1697 0 obj << /Length 1698 0 R /Filter /FlateDecode >> stream xW]o6}ׯoiF}Ȃvذju0e IEJtlG)eY@s?=z h/aL!YY5B n[p<ݽE }Ëzo߬?q3E:7C?,;PƶzqG>DKl?}FVX5oEFCn:S/6|9~9t(VQ*u=9Ax7u~Za t“xcִB@b焏B]Be%M lV\d>Gm긄8(+{96qM1ʜҰMkVMF#KAKJ  Yy H=;8h@7yvk{*+bѭB;p^( :{\5?Y4]KQ7L4FB/DmYg xIc'{Yu9 Y I¼/aՂ7O4x=BTDՍ,0ǦLL)ӨBTaxtԕdv$th A-yjTXrj~nЖ)'fdUaT*h%g'Q3JX/ТK!Şbݯ Hp!pmFz%}ibtLY&2娓DVL#prVf'\Lc/\Nyi= u4'lX͓ uuP1FM ֤:hˆ'?7*䢡L-՚P3 eAebͫf.tț`*~_x^@9@G݄¹PiAhģzPka80Y> endobj 1698 0 obj 1088 endobj 1700 0 obj << /Length 1701 0 R /Filter /FlateDecode >> stream xX[s8~ϯ8o0&ޠ,LtXN<8Rv9ۭ%U9]G1@{$b=QHۊba"XCt-~CX3=#7|AÌ<׀?ϮG ٫P|pAC!DAp&^|RT >gY),nthLh' `?zQ"nC=iݫ\li=d0xxR$HI>JG7{mHÁ 2ۄMpSBxgЦ2wkl^VU]UdKzU{=a ! (Kgɂ琲 Vh/&4HcNHƒi.eY~)ef{E|%j,Z(T2pc$]+˭} sނ [-hB (X( kB Ewmsq`Gv>olMPFVj 5b|9q^UY~mRܹ?"vWVkk3Ac6%,T4` OҵfaJ/vՆ)0)gCDw6JZ? @+d TziW~u&JA tIEԻmcXm (4BbIC5(ܯM+LL{ hاOF T /b~9QaK61EzƸlxr0gG*?-7WJf `]Gtpnu¹SUWwg;8ܥG=^i'hDK/4}p6Ÿ!lnJz6OA͘uLCtSFь!O!#4SB lV?.\EYӡR.k?#a> U}U[Na;a Bͥ|'Ƒ /U"8 i䮔h3O0悳m7.qJ-4N݄e,4/j/ +7uQKd\g Bwb։Яu"p0eoa],E3|1УY֕ԺWJAom{{Ռ /^;.gSY(KÔ@ֈX`ݥd8 cSXYB^5Jz]&;#pL &fi:6ՙF%wJog?B endstream endobj 1699 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1700 0 R >> endobj 1701 0 obj 1280 endobj 1703 0 obj << /Length 1704 0 R /Filter /FlateDecode >> stream xTMo@ﯘ%mVJVz" BV®w lL{rlK;͛7"=˜BEO}@H-T{4-qA@F2=FanL1l{Z/ >;?}N՗8^8"~($[j,!Ik$M2R}EvVB{BQ!20!̶˙LmKg7Hvz|*8+iSH@μ5"-AQ3GeN׽YJ*J ;s(QJQB*a[3or9ÓΛf0[Υ6K>P11aJW,:Xn?'mm2;@Zr5&Q> endobj 1704 0 obj 482 endobj 1706 0 obj << /Length 1707 0 R /Filter /FlateDecode >> stream xWYo8~@ž5@d}h@(G,:~,ۡM;/@iĀ}Ēt>zD/пPگv^ GF?~f})ߎnv)Fѧ!0 |"!I()eBBx?WfǢ8]4| ?G<ݴ6.y6{a@wv0oW[[ÕN*ΐ{nݠ^3M'Eld\ңx9pJb,]%T-j=Q?WEiTM&u)4-@|F$e(L& N =!sq$>\e2ЪeH@ST̃(bn6DF@9^u5QxHL$%ǣ [TS`yT1#6گ|l{CߝTR-9m֒8N).c;#޲ѧN/Y EYDApvG EDhᖑSOR5֦1y`j1v03vx h3P~S<.. -Wy9^zA98r| VUNy-,,àpqGykniUZ)53Ph鱝k)A}OEpՖZVTxIe!UKG}8GK.'ŅR?F^aBlmĩ&h{Y)j2}33 endstream endobj 1705 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1706 0 R >> endobj 1707 0 obj 1248 endobj 1709 0 obj << /Length 1710 0 R /Filter /FlateDecode >> stream xTn@}߯7RKViUTy" BWw ,q]XbsQ\@ gΜ> ؼ)$;زsyK C=Ag{m2I 3kЪD1C.?{@0DٱE,t> endobj 1710 0 obj 497 endobj 1712 0 obj << /Length 1713 0 R /Filter /FlateDecode >> stream xWrH}Wx2nk%){>)Fe ;F# }ڮ>}93|0{n.&߻5!tK~#܇t>d K,I>7|E>7׀o&~8?b:ytK2!"Ka>(|StL2݋H0?DtЄԙ_Hb==d ~}v WZn(*][G6z4 WƋEhhO\xY4}<8%!0&|5EI)]@벘wr]Ӭ%i$+bNE1")Ck2:z#,0&̯3-s@2@4ZXe§KǺ&AIJ,sޡ4P56EM5}msy$ IU(bD]U,Vy %XPTH,>P9AI]I| 0 :a|4?@EJp{h>f(0{jUuY6x̘;P10K3ĔޚJ}dh@p0*YV4d53$j<5G^Iʑ[ WӒyxx;>lTSvMӇuLBF1p R= ׮:%ܒД; [EtS[RC 4}Rf\;5ʨzczxGNe8+s3nYևÔ" 4GN8rwmk4~1DzvF]\}CaPSE{p#3 @؄QWEYCLyK7'~Cݤ^ M.NS'XĻLJ7Xj> endobj 1713 0 obj 1241 endobj 1715 0 obj << /Length 1716 0 R /Filter /FlateDecode >> stream xŔ]o0+]Q@˥['MhTÆY#fQl U^?~} ~?%N)krb l10a#SEv/4=>٢l;jw|q>-3t}+bi0M$$`4u }n~+]Bپ+M1BUwBgjq5{RB<a?d; s6ӳ]:7Aӯg} > endobj 1716 0 obj 457 endobj 1718 0 obj << /Length 1719 0 R /Filter /FlateDecode >> stream xX[o6~8omE7 :=EHT,TTCQЦݗ.M wa/PwePߧ5)LKq,"<5L14v xÇۄ/+w.(?@]ЧF )-.(,}$Y \5|~2N;X̋cG c9dLqD9(y}:*n Wn27=!'{7+*?]2JGet~rԼDZݳ?8%)O5EI)Cn׭2Uɭ;En07|EDHP.N,IFA yd?pQ%ܪ rMz j3Y)Z=x'lpxؓa)XHIŧ]C=<@Hf+'tIDBV0ΉH75&V(!Bp 7z'sʒcθ0*epFwT&]u`f& .„$I l4%nKuk6*h(.Cqm*T}v-|y^WA 9cK["sev}<w\DFx4gg0]ڰ>ʏxYx'Lm˰=Rj:rCC*`Al-X6 vSUJCѵm^BΜT.,f|hի܄Mp|8q&3蚠A>)RsNѣLEPKǼ6%vfl+砊pDIXڎ٬[?F"f1ڟij3u52υ=ф !g;of^ۿ#qnDg|@뗺I $%fURֶt4T^S2xd Ӽ (.$'cfk!lGHwLDpP9<7܆68Om1EiS8lHb{gfj,!xDİrLހB5ú6cdRł8ԅI%, Ջ&yfhu㰫Ǧ//j)ƳǙCO6Dm JL;΋8';&_U80u f)r{+?*oTUEa#ȴe3[EpMt3' aW쏋 endstream endobj 1717 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1718 0 R >> endobj 1719 0 obj 1250 endobj 1721 0 obj << /Length 1722 0 R /Filter /FlateDecode >> stream xTn@}߯RKViUTy" BQ.%N,͵-h3gwC 9>S PvA@#}؇t@[]Lki OΏ!G"t!WBcnhh>ܜj/BU՛[OH#?(Zw3t=Sn٣qe`!2mJeQ UqR `'فQf4/z 7,*mWiZ%,cb- ֛H'a\B=j)lu/{a cLfVaxh\m4H8ԼY3mV-ս Zq'^,.m%gK) mSP"E1ngH&mv(3C!\P݆'"-!wsACw ѽk[ endstream endobj 1720 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1721 0 R >> endobj 1722 0 obj 494 endobj 1724 0 obj << /Length 1725 0 R /Filter /FlateDecode >> stream xWn8}W[Z`֤۽)}hhG,ߡ$˲i>d(93g.~PK(9L%?{RҾ7(Qc;>"`9foW0]G>($𤔑\?9|{E˼|JUQw=}` 34z{tɠjC(5\iͣ\wmiox8& :b2^pQ(ʁ`jV" wNIm> _ qQRJEPQL$uI$iR5~ %SXdOYFhS4ph.UVâ‚sYLWXtg<2N&T=I ,q<4u~Y-Е j!ɀ8*=qW&q+)tދ&]nn wX Z'f lm餈nOK.:)|TYrg2m0ɫ#JXq^ e>TY5OKb0vs+ {vd# k^st=I&q voӻwoNǾMΌkUPY֜J7mppf#VLYnIsPRMx]TUwPUx6ٝdit{4 WP7N Siy9 #cGwQ}1wMڠP*3H}sIxuv9q[n\}նSF4V BGlk`iű#?UPqSElnV 3@U|:PlUno ⌨8?"Tq?N|EEÓo37;rE;Cfv8 endstream endobj 1723 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1724 0 R >> endobj 1725 0 obj 1214 endobj 1727 0 obj << /Length 1728 0 R /Filter /FlateDecode >> stream xTQo0~Fm j4iղ""X 65nL S H>Dss i^::\ >>l 2+=>`vӵ4?o" 5F} "9>( }FB\=;\'U3?ѷZ ]N;^p?r{R3݄6bMǞgu |%?A$ {FpFlz /-B- 1$^109hV%iX9SJ'oOVD U,ѓU`wR:^kPB `TS=Y:bIHmJI-S,gm{2 xLI菔fg__ 2GALjyj}OH8Eƶ l1@LtԠXT+<]BO{>r endstream endobj 1726 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1727 0 R >> endobj 1728 0 obj 504 endobj 1730 0 obj << /Length 1731 0 R /Filter /FlateDecode >> stream xXn6}߯$@ 'm47-80d JߡȽ,̙!?')>cq}$P6n/#FՈ§257/G)܎~~0 E!Rq1\&3TRaj&(%EC}J$ 52Ɉ 0VpHn78vgIYf)$մn<&g=$if]5t,Z9ShvxkBn}^.n UPP:h*ps8'BXϤg+udHh.{~fM{ʂpguI|`q[xc ǬMi(X2c9ՅG`N[]^tEͪ^4> RH(4RTӺGFhK4m=-z[4Y.yEdYuyqA$jl|}#o{Y'JJtJI]_ `Χ$c8%qt؆(4{Y'zPUEXLW=%laᾪCB=lmǒ6t$G ; fٟl ߾~LnM+۟Xi $A0Bc;.fwźNqmRBȽ~vrzk;vz_/'/Ru<ͅ=;Nܒ+3[\}HBǜaqպ̊r''eg#ăH3fp$tx@,^DHIiO8({=kOHp*EĭQEEYM-:0:zZˈ#LAtEEh9/9)N"-877@AKص%kkpn-=¼@$cNt`3p2u蓻5u.F[ۯB[c/q8F 8#?/SE?~~)RF(v-f{#rAG'x vILzЄ}y$ٞMjlhwOß-.FqmC endstream endobj 1729 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1730 0 R >> endobj 1731 0 obj 1257 endobj 1733 0 obj << /Length 1734 0 R /Filter /FlateDecode >> stream xRMo@ﯘt?XcMiz0vZ߅E)-fa73D4#BF:F`D -a aUpP0L'`]CMe_{1v]XE[]]/dR]{CO^K#M*jT?#v+m4?F+@fb:bԪ\m =G_QYHA.d}У՜rY*oEfT»uiR(?Q-B/8J$d~ tq=ȟ>AI¹2Sguz ́ucc}"%)"Eic/dX m?= endstream endobj 1732 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1733 0 R >> endobj 1734 0 obj 395 endobj 1736 0 obj << /Length 1737 0 R /Filter /FlateDecode >> stream xXnF}W̛OۤiCE S$CR6%J+50\ g쮿P=PsHo3! TL`ý~q×wx?›=*Fޏ>)P<讹|3oWO~d;dND DDpm8L+>CV$Ӿ?FM"]w:s IWJ7z~93|rõ'׃qut3xU燛"@FI҃ Ys i}) q7cOC|)b˯´,oMMewYG'72Ɉ !-L)"- %kppI, . +rn8y0-iZOڙw.6=y.ʪɚ%TI~`w݃|yg,Z8T8_stzg2 Bp4.NS>eY4m\2dE6}>-,iƢj~:/&S[ᙉu4 MKحmyH+sy0,nZs9d |u%#\ێa&_&3CY[g͊p"%Ő%H|EpD\v1?a\\ <[?t:CW]ܴn.pÙ5wZ0 Ylh4N92ņ,O=ݹwĻW/Q6Bq xhSe6f dTUq" ^ET2).2fwϳ l; 8+jpѬ8ߗ)/jf~vv"IoWfxi+ !7K9~bA/.cH9 30Q5S~LO@p~&åqi> endobj 1737 0 obj 1244 endobj 1739 0 obj << /Length 1740 0 R /Filter /FlateDecode >> stream xSM0Wn6 qjP5V*Mqii&37J{?y1I8k&bܚlq5Z]bOu99eG 79 z MC^bARrUQaD"%IKđ85n*R/fg?ȗH0M͞&QCh!~6E9K]vs 5 ,zA(̸j@FGAY\yjE{<Q< wyÈ{[PMإB3[VgVƼ'?َGuU sʹ֨),ސ&_U^GHJ)EHRzaĤn!ULf_l[Ƽ֍|D1{t5%gmC endstream endobj 1738 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1739 0 R >> endobj 1740 0 obj 421 endobj 1742 0 obj << /Length 1743 0 R /Filter /FlateDecode >> stream xX[O8~_qh-N}bm[ tT(L!"$ixb f< w9 #7nAA()`nGPگF/ GrN p3 }*n>),&&|Q!DBj"?f7͉0Ko G+V.7&dolDn^\]) V2瞃!}tdƫ*N%[ Qiu)>1.jJp5m}i޿LeoZR4iyQ/ן L@2)CI:C DZ;"}QOqiY Pߢi M:6kG OɞŋHhyv_MWtPL 4fYv(=·3Ή K֎}L*"Gqp9ȷEm<){8<SW}0DR991Q4)2&6HB>ץ. b.k[|TL#TEޘp< BΡbn(K4Тa_"몾߆L4QrB:5U81;Ot1hnZtMGy֖E 1GY֚spjMmmU1CYhZ,lDKtuMnT+< SekBl S\Ƕ]VEMu\W]V=,7]R8ִY1Nf>#S(Re,b.yQ 6Q>S(ʙyA|ΔlRUⰒUla@q(;"ײcFՓ9N,!s!b:*köx13W&LT+"$ו m 3xz%2 դ*z`y '5xjԚ [a[N6z5i̡ 3x3>} [O‘ dmi*KIlɚSIwpÅ p?Ja%op(M 3 8[^#\.4ؽaj$#{͖㙉*vySh1ƇC|vA^.){X㽀S$.E4a?PbNa8PҧҤ4OB4v6&1=II F،K6x?S}39V2 endstream endobj 1741 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1742 0 R >> endobj 1743 0 obj 1256 endobj 1745 0 obj << /Length 1746 0 R /Filter /FlateDecode >> stream xRMo@x7P魦m҃i4F"(߅EQ^,K2~3oEtPra Y6&&хnhL`R*H* x!tAe–rE *sy <:Y@p㊸ nضm Xgv18 }7Op:8ɩ!:DbBqg&S+]s="Gkѐ+޹+,/WJ5R%/GΌ6L 3Oԩf)HoqȼDsȰNҒg>tSvaY> endobj 1746 0 obj 392 endobj 1748 0 obj << /Length 1749 0 R /Filter /FlateDecode >> stream xXnF}W[ M\I+-80hq)H\w\ɒVZ&H:3g̍y0\ba<g耞Fwb@d5ڦG6Yt?Uij# endstream endobj 1747 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1748 0 R >> endobj 1749 0 obj 1271 endobj 1751 0 obj << /Length 1752 0 R /Filter /FlateDecode >> stream xRMS0WzCB,\Cu: &QoBXawveA{j(bH䣍16$XTa1qL$%W@M7G2 =8>Ŝ\Fg+'xEQ(zEa[U#N:'uc} f|#Yv/!t w1q6h7Z7sgwkˢ {rTomHcl li^r V]*YDj|yPsY~H~GʫHWF,+3+N4(9~K(=hj8!w(YW5(/* ,u!]( /W%?/'U/D endstream endobj 1750 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1751 0 R >> endobj 1752 0 obj 407 endobj 1754 0 obj << /Length 1755 0 R /Filter /FlateDecode >> stream xX]o6}onDS]W pwbQYR$9.EٱØ Kt.:W݈)ncqr %0C(S[ ^>95*G>)P(L EB(b"2? LwUs70MVwooG=ޅ>"'{F;[vwV1dnZ"vi׽~G7/%N9*+GI9{NIm>ᦢtCԍjeEo}&&ESYhHJ<: &s"ECLޜX E‚$Mcshưl4rnuSj̴1ldDPLѲd_J=1= +|gU0Ļ?C^PN&:=UT:ʶK-YWAߔyuˆ3F2+"k7/S}U& %URfrP VV mY='* lvUK?A狘5xdB*22Bob%[!T, ̪âoA^;t8X<C! Ci627OW3aBnb~`vġ;I)"<EN9%c }ܙҿo2BKua2q闗x/Rast Y.E ,D, ?#t`]b38؞v endstream endobj 1753 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1754 0 R >> endobj 1755 0 obj 1225 endobj 1757 0 obj << /Length 1758 0 R /Filter /FlateDecode >> stream xTMo@xtei4=i%UP5,Uhd&3ۙ"&h*c YU16U!уiL`S5yч $!d4)hz\a_e)f#wO&뺎cp檇[`y m aޝ{%^C7?(=9ⳍr؍h3S[}- ͭRjrՍhWzA*qUKa+I gʷ) rG"ﴠW`6e?PJ4' 9=e [?@aiUNXHnܽ؄`Rb}<]^l꧉$Z2%qU0 i1$0o endstream endobj 1756 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1757 0 R >> endobj 1758 0 obj 387 endobj 1760 0 obj << /Length 1761 0 R /Filter /FlateDecode >> stream xUMo@+`Sz54MlTXu;b/ږv5Û 8 (~ߙC*yib $7!A݃<պ ^phgK9_9ЫSX9B|H( W)xp3xx5vy++MWo!| ; CGZCB=g?IawK"hM(l #ۤfriثǞ'6hf\RHdu48Wvm0H}GDk TR4)y|sSnuYE+2OIǻ'̭( Xr™s-x(é E%8(s)"DسV9D?IYy& s }㘴|S&FlQ.Q2Pǔq)nj+lQPPs%TtY(ONcjA X_*'`k vZb#.rZfXKM0 -VzՆ!Ш`Ȣ:֕iz`xfs$p/ӫ!=/]ڿ P-̜[2 endstream endobj 1759 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1760 0 R >> endobj 1761 0 obj 584 endobj 1763 0 obj << /Length 1764 0 R /Filter /FlateDecode >> stream xU]o0}ϯ@G{ j< yFKI\]?/9{O7!$6{m hjجS[{ ‡ K @p!]> yq},z1J`vkq)eBs&݇Wtw,`V^_KavS593AÓ lw {Q K? ;da2^Tx(RqD wm4HÁX|*pSB6]*2]\SxIrHX('bIO3Lęk&1O Bn5(6Y=mpgڂβ̵ExӬڲ}ʉ$"NJXAA!yx' TZ:jiDkk頳ʴuٶec`2 NxT$[jp0=_[ f]_k nY6]ΛJ-pa̤mmXf qv+GZ퍇y: kEQW1*<jU,KcOA]XxqŸO)YDadgr2 G7gng9OykPƐFM}U.\keᛅgY[<l4-Eo, 8S@ endstream endobj 1762 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1763 0 R >> endobj 1764 0 obj 684 endobj 1766 0 obj << /Length 1767 0 R /Filter /FlateDecode >> stream xUMs0W}K=30-͔C0&r*;{Ve9N$3Ҭ}r o y<1 )8, } }jo6;\CY@>7x8ǀ ubߞ'͂cfwq<Bd1d!g~*~M/frը ̾f8eAEWC'3_v>8#rxgm|aqۣ\BqQd'8tƋ7Ejف8%G ]iz80x5)!VUggZUn\INHo "2 XD2m4tHU+`o4p+eZNĶ$u.tjf#E4"aMbaxqJk%GjFidJO1?:-:(BkniZ.8o"YpmBG!R(V(4xeex[s[I[u2ɋ$id݁؉,::9U~r>lpLolhۇ<.am^NJ=<Vx0nLΓqV>c_I endstream endobj 1765 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1766 0 R >> endobj 1767 0 obj 679 endobj 1769 0 obj << /Length 1770 0 R /Filter /FlateDecode >> stream xTn0+rD1mCB8Z;e[e\0!߼7Oz& (~ߙE*qFA] nAjn6|^~PL7P:NׂoɪoN)ɇ>$񄫔 <p3MׯE'FJo J>U[CB;g?x.􌰏-1XnsvV[~zzh:M! Q'A0vVm2HýGǼ^TR5-G}uU5y8k+r+Nwn gRE l} &Q0PI1 X(7QVuuS]#HTo6߼VI ((N4Tq)WdwQ=?O `t_^a+.(GfFCśg( k,,"u̫ؔw;^-^ I )F)> endobj 1770 0 obj 592 endobj 1772 0 obj << /Length 1773 0 R /Filter /FlateDecode >> stream xTMo@ﯘ#Xz{RJ\M,N+=^7WBiW3~͛p`}g$9ybt!?QC݇>ջ!)!1] !=}agg""Aoԗ:!Rhpi^OZ 7iC|$u[Ck cLov}.mSY7t΃>nY/@h8X8s&;? }O fЦ*E-MBhhR1,5E3B\2Ʊ8 b5g}\YBU'j[CR endstream endobj 1771 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1772 0 R >> endobj 1773 0 obj 585 endobj 1775 0 obj << /Length 1776 0 R /Filter /FlateDecode >> stream xTM0W$qG q@tòZmFMcH4TJf͛% -\PFS`@BD#(` wZz5 TKd nLZ΃oΏa|?G@0L1" !Ĩp? |KRo2ܚzӯ"FP4irh$4}Q3GsOk!df-۹}Oo^ԁO2p[dܔPp$%g87Zňkdrkc,39B:5\;P0"J&/; @kGx?/Jyp@*fk]6p#0W"Nul8v>N[T AHD&tEX2bj=!~ȼN 9~q;" > endobj 1776 0 obj 610 endobj 1778 0 obj << /Length 1779 0 R /Filter /FlateDecode >> stream xVr0w.Je;m]t`E"4 9J#aUj{s=$?x~Џ8%P8!&@q*> qBw v&5Xo{yWj~ #V% M$ħ$Y ~IAo־%(Eg}Dbod! teٞsjfKع9$2 =*:M"@dbxY;=ckR[c5"(h# ;9i:.7_Tuފ'~]T%g*$`Vyx(8~B!$6#O?TIبv4"]pif MgԧIF$@˲]9`B!ޯ.b?J+ Q_V985Bt*Uk˦)_H"J`wn~ 5ʼ7LywLÆy-~i[Q^e:#H#<j u^K`?<= ( n 1˭CF%?4wzUB: VoHYN`g>42lݝAg-Wr]Nܻ ?QC&يIƋ%jbG)~X Vu'R gVtB p[[~T񣙃eu㺥,룀*)*B-д6.Y褷3K槦W,TYKWՂд>Yf]-K'l؂hV ;HU8Y+8wZIh̸Lr۠ 0QϼsS endstream endobj 1777 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1778 0 R >> endobj 1779 0 obj 838 endobj 1781 0 obj << /Length 1782 0 R /Filter /FlateDecode >> stream xUM0+0c?MjE!(|dtc$\$1o{3c0}8, 穋1߅<Kt{rTow;\CYOt(|v0g3zu~ .t~Q E<*"a%sU204I¯ȑ`?8 Ƃ3ǟ$GKOzPF,>ʻub֏]x2J~~(2Jq;;Wڨ{GD5{G%Tt6u5OnnmYoYIX' r™,`sb19Ns9S`H߾6j;B[:e`c}%6KYmA U@)t5ジ+lQM;f$~'`@9OAUؤ *!+AuQO #fkE ˭V*Lbc鴀_r[̓" 8{xR:*"kl4oq1dMSφпBhM- cBk@pOS yN_0d5[:9Î' endstream endobj 1780 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1781 0 R >> endobj 1782 0 obj 596 endobj 1784 0 obj << /Length 1785 0 R /Filter /FlateDecode >> stream xTr0+X -Ki8AW'qĥdF+{ιFopN}󁸈zP@ ׷ݩ^RpJ'N&t|\ >;?y:>z@0}@sbT_ePL!6lAŹ 1BkX0}ǑiÓ !d6"[} [Ǯ'} _imW0o포k? YUL7g&p0-) Hk0on= endstream endobj 1783 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1784 0 R >> endobj 1785 0 obj 578 endobj 1787 0 obj << /Length 1788 0 R /Filter /FlateDecode >> stream xTn0+rD1mCLۂ8\_.Vk 17͘wfA6FA0Af>}̭Άwzqf?P|FOpDv Y=u :?%|".=)eC9 7jKMO}E"NP45X Lt?F-!w1q(k;׮uzzV9 ]ɸ*H {8;WvmH}Á,߼I_:( !usSoj:Y9.Sz/aF9!TWD2TPL8'cbp[Q- zt9$Yf/Xmt׃ 0OQnC / X@S&LSƱG>g[u cv zB,藪곽ĸ; <- H k[H,."&t#Hb$L0/wLTNc!kv]_Vϋ,^NO f8("طo endstream endobj 1786 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1787 0 R >> endobj 1788 0 obj 570 endobj 1790 0 obj << /Length 1791 0 R /Filter /FlateDecode >> stream xVKS0W )$?űi @F8JƱ$7WC8 2#iﱫC@ۿs7B 61)0لHh Kc(Sބ>>d'sͭݜut x\yn>Yn0v% È1Ő20^7a֕ZrcœkqQHФМ35Gxwkm6aVmیvӎG]b3^UxSH0v!$x(> V.*G: R\;@} "( 1&ճȠer"GOJ> ^j \*܈ ?Մfje; IW=JKej"Ҍf-_r@h"L]aH$vL#'GC3`/Rj-d .|}r[a 1J؃85Q3ŗ`؆MA|eEl{0!N˥a*^f ligçqfTFy&n'b-s%WEY"KFwz5(:38O#.s'Er67ݲŽU]N22 m/*Ez-䴛='~ޖد0*䜜/z4s~ٮa\ endstream endobj 1789 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1790 0 R >> endobj 1791 0 obj 720 endobj 1793 0 obj << /Length 1794 0 R /Filter /FlateDecode >> stream xTMo@ﯘc{v`z54vPG;j}gYl1rqi} < wnF"#O dݮ!v.~pKr30<vߐYEȇg/%Rc"*q87_m\T|qRֶy{1(\E MfbHo%އBsMǯ:ANEɧB; g4fr.\Q#^ϼ jtƘU1WW& lXD]TJP%cOs6 ,{,W](5S} ڳ$9|v brĊ0 ]Ot'/:wPsBQȘPD43*&0#Yoim"?i]W yoX{sI$;O<ͲNNG>B9>D.>i y@:8`_VY1lXzSEp"{ endstream endobj 1792 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1793 0 R >> endobj 1794 0 obj 525 endobj 1796 0 obj << /Length 1797 0 R /Filter /FlateDecode >> stream xUn0+r.@E! cP}h^8޼73G[b@c3Q #B(߇uOl~Kn6/ #t-ƻ>w' Á?k~Z>cPBx_Pe{uqQ7Tүw_ښ+s1AP40 9ր B:Mx 4|Z].^;w˥>t(r}L7ϺCL"Ew2I4?m;AG bAǽ]8;&͡Fn{e\撘XfĔ]1*[&СYjQy%պ2&8'C q)J`]n-2 -9ӝP(70Iy8kezwt"RU;^^h%m^:}b^4T{ϲxl5Ƌ*&]A'Y1gK&|ۘep6cUxѮSd{6"iy# endstream endobj 1795 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1796 0 R >> endobj 1797 0 obj 681 endobj 1799 0 obj << /Length 1800 0 R /Filter /FlateDecode >> stream xUM0+0c?MmUĂHl6&=I$[cy͌G+pA!-m#) ! hΆwfqf߼{x4`8xy=Wǰ T"&P|!D@C!.Y*#/'-뗏gѬXhL͏gO:?EBb&Ѻ\:!n|.'䗇[ (:Fr~Py]O*7A1f͍ޕj"OQ8R?"JhH.3a`> _o߂۝Q0id s0 sr**F   ȁMNʐ9q#ҐyQteRȋ!d U$hy* ' Ey69YZ%.r<5k\ C{\ o 3oC6ߤ!+OR mTmT P $˔+dW*sEI PmQR팊( T1@YOVJ]Q? $T endstream endobj 1798 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1799 0 R >> endobj 1800 0 obj 611 endobj 1802 0 obj << /Length 1803 0 R /Filter /FlateDecode >> stream xUMs0W}K=&8NǵCl'¿ge9c9r(IfNWf$]AA](P@`mn6^ yGw{P;|z~cm aru׹nBEd]OƳ_%8/3Wi>)1{«%Tt6zPWWԛ`$UummƏ3A)C9Y9Y HLq|<):/v]x kF$̏H {ˋmbY)(wŃP-|3ItRLrGoA*U1hܸ Yid絕@ VeZ ҍ*!QjR2"jybzqRM+=E`yU> <g*ktRE^[ ٓTDNpP]1Rt8XVG3E3#j}x8QIF)}o%8$˴){\)IװU~nn endstream endobj 1801 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1802 0 R >> endobj 1803 0 obj 658 endobj 1805 0 obj << /Length 1806 0 R /Filter /FlateDecode >> stream xTM0W̱=G{lVta@$@׎$$Hf7oޛwnAVm   h!S ;B%"=>9 8 rߣYߝX z9J Y- |WP闼\Bnje>A}Jz8eAѬٟM{a@'A8цxnwn;׮zzU9 ]ɸ)H {:7vmH}Á,kd6( !ճwdgXl50('Z&RqBҀb⼌HߌK@8oymT JY)(_?|;UJHW:W,1Q9c'-MGBXXʈ4/eٓ 8"-鐗GdBU;so4EYZ$T 8qttH^dʴP5 PZ}&v㤒I-IfbvųN贘d8"YV鼞,a헐UeZzkfp endstream endobj 1804 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1805 0 R >> endobj 1806 0 obj 560 endobj 1808 0 obj << /Length 1809 0 R /Filter /FlateDecode >> stream xŕK0wJWx}jtTL1I:c $[vk1}km8D܎1j|LC m߇}6!yx8;/׈Ћ),3g0p[\w-aU\~Wđ`?8mޡ3ǟ&fLt 0~mc۩usm^u׎G2. / mpzi?8%y>qPJEk(y|uUmHH/Ks 3A)yap$FCu~rjJw{NrD1z*uk(Nâ86 `,$z I;,/K@$Fch<)6HqF phLj"r,L=d|HeוC9ی=%Zdt~ܛaa2_l'P+|T] I8V|ܗ4?GOݗXyG$aHVWQugSW"95x$Z}0߸ྴyQZ*5ŋį",y 9^C F8VF:'_r1 endstream endobj 1807 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1808 0 R >> endobj 1809 0 obj 646 endobj 1811 0 obj << /Length 1812 0 R /Filter /FlateDecode >> stream xTM0+JU[jmUĂIB|o{3wfa@;.AK|ȡ[ b/~8@sy|z]0w#/%9}]J滨w+G's>OQLYsf:= !~tr\Z!vkt.N'䗇 Fnx2U4pP e1{Wr U|77)djHǑx!x%"`sXy(I;O܇;Q7)n?BҩJBm@w6SfݿeRs9 9HhAvx1>e8j!/LBW|uEQE? i&*FU,.(*(çܦ>|jt[7,^]OP3bT AQTY ɫTPtizkQqAK$OK~"ia$|*!"u P(IP vkd@`)˼ʟ9Z ' endstream endobj 1810 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1811 0 R >> endobj 1812 0 obj 618 endobj 1814 0 obj << /Length 1815 0 R /Filter /FlateDecode >> stream xUMs0+̴@(6tC&0!΁l3Ad )=#y۷owx (~?Ei{im &?& a އ{.CY//(07{NSXx"˕B4ߧHh }}8Dkx<1[Q>gxcMuO{tH01:s)R;ZƆʵkHm4A*;CǛB9 $ZFo!NX 㤁({`.8f}F4lU9] j5yTKch`M3G'=ĸ|Ƣ݃I~MxmY@1,gA0ͩm,3^nڂhv2!e̐O`dv~z4A DeW$SCE,A2KhVuM endstream endobj 1813 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1814 0 R >> endobj 1815 0 obj 660 endobj 1817 0 obj << /Length 1818 0 R /Filter /FlateDecode >> stream xTMo0 WImY=P,2Gm&VjGYv|8) HoL?AWI*\q2 :;50XV2_ a0] ~` xa2s R@k2/ܕ^*RTBH诉 de<]ML|i}w}7]jqܭK^ ˃и$!ҭDLčN*LsR$R!nɉ]F')}4F *g+;:Y5#֕5^Ռ> endobj 1818 0 obj 537 endobj 1820 0 obj << /Length 1821 0 R /Filter /FlateDecode >> stream xVMs0+JrK3Mv&ĴN5H3X2Sj{F򊧷oI=bcK /Y8$?@)EMD}Biт㕞C!mLEZnw6viA U;MɇMj FntdJAqլFj :}MPBv*Qggr_/oG\)BX1GaB\ÅC1\$ySxY/fP%G^C&K!IZ/\lAu7]w-Jfre'3eaX@dĄ"jţ-G?="9A.P=`09E~w> endobj 1821 0 obj 729 endobj 1823 0 obj << /Length 1824 0 R /Filter /FlateDecode >> stream xVKs0W=/fN{`Bii eB26=Į?}-  qf=76 >5&̅ TkÎ;\CYO+|љA"j5okyu~+ch%.)v#\l΄~13xx3վ(|aUz7SQ)u ?]pd?[kBnlh1ڵi*׬&5z:eng*xSHtc^9kBj>^&|G Fж,榊v)L qp('b#p0b9AJ:b8tҙwX/}L*1fhO8<o?V ~ ⤌aq6;yD!'u| pX$)GB%PUTm)+ZKPŮ%|},o:ON^FY9L3٠L*h?ۢ96"#X\M3D*GUZyyBXb Ns>J&~щo }/*sE2e YjC%T,$VBO Ls2"~B? >8'6smWxuI (ji>JV_M endstream endobj 1822 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1823 0 R >> endobj 1824 0 obj 671 endobj 1826 0 obj << /Length 1827 0 R /Filter /FlateDecode >> stream xUMs0W}KA8tZ)҃k+N%zV8vr*MRV~]wv$P n>nVë< _;<́"ɣt-ڻ{9F!Y,—RDpi8$%ܾPStcToާH`?(jkh%}GOOz-p18n{:׭uz:dоxU顈,Qtr^ٵQ#-^NI׼ 0():;k *{,f+'1~ >' J3\=P(OΣ! wⱽP*cҥ.7kըaue0 x\ST/}"Xʐ4{qA|.Mު=3򎩙0-Ȥy')0iʨ_Sou%شh|5d^e~/g:14dC 6n9G;.>$#]%C.]. eSc+)_̓^aؖJ[#e0{U5\AumV9.UX1v,SL_eAc„=s^W=͎ ϩIJ/8O"[1cv+/V,J endstream endobj 1825 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1826 0 R >> endobj 1827 0 obj 678 endobj 1829 0 obj << /Length 1830 0 R /Filter /FlateDecode >> stream xŔM0sIU#8,{H[IuVzq T5ׯg5J X䥉qPdԄx@E94nUGzIOR_.!p \ Jߍ3X y9 Y]Hj@kS) Hrx|31ա?gtgM oSr$j u*sakm]Ƿ>vѮr g4n||jD: QNUԌ1˹yx;jMq"A K8cϟ).bN} 1f(nc ( 6]Ӟ3(by83" ͎E=]Pb#{sL I&p$n_Y7{(W0?VBU;qaͻy\4o48@a1u"Ǎ "f,7ߵ ]-hDzj캉(`Kq &[l#nCBM_ endstream endobj 1828 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1829 0 R >> endobj 1830 0 obj 561 endobj 1832 0 obj << /Type /Action /S /GoTo /D [1639 0 R /XYZ 72.0 720.0 null] >> endobj 1833 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 203.45 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1832 0 R /H /I >> endobj 1835 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.112 709.5 542.112 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1832 0 R /H /I >> endobj 1836 0 obj << /Type /Action /S /GoTo /D [1642 0 R /XYZ 72.0 720.0 null] >> endobj 1837 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 206.23 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1836 0 R /H /I >> endobj 1838 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.094 697.5 542.094 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1836 0 R /H /I >> endobj 1839 0 obj << /Type /Action /S /GoTo /D [1645 0 R /XYZ 72.0 720.0 null] >> endobj 1840 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 204.56 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1839 0 R /H /I >> endobj 1841 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.105 685.5 542.105 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1839 0 R /H /I >> endobj 1842 0 obj << /Type /Action /S /GoTo /D [1648 0 R /XYZ 72.0 720.0 null] >> endobj 1843 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 251.47 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1842 0 R /H /I >> endobj 1844 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.779 673.5 541.779 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1842 0 R /H /I >> endobj 1845 0 obj << /Type /Action /S /GoTo /D [1651 0 R /XYZ 72.0 720.0 null] >> endobj 1846 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 250.37 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1845 0 R /H /I >> endobj 1847 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.786 661.5 541.786 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1845 0 R /H /I >> endobj 1848 0 obj << /Type /Action /S /GoTo /D [1654 0 R /XYZ 72.0 720.0 null] >> endobj 1849 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 263.69 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1848 0 R /H /I >> endobj 1850 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.694 649.5 541.694 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1848 0 R /H /I >> endobj 1851 0 obj << /Type /Action /S /GoTo /D [1657 0 R /XYZ 72.0 720.0 null] >> endobj 1852 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 222.04 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1851 0 R /H /I >> endobj 1853 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.983 637.5 541.983 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1851 0 R /H /I >> endobj 1854 0 obj << /Type /Action /S /GoTo /D [1660 0 R /XYZ 72.0 720.0 null] >> endobj 1855 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 236.49 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1854 0 R /H /I >> endobj 1856 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.883 625.5 541.883 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1854 0 R /H /I >> endobj 1857 0 obj << /Type /Action /S /GoTo /D [1663 0 R /XYZ 72.0 720.0 null] >> endobj 1858 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 257.04 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1857 0 R /H /I >> endobj 1859 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.739 613.5 541.739 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1857 0 R /H /I >> endobj 1860 0 obj << /Type /Action /S /GoTo /D [1666 0 R /XYZ 72.0 720.0 null] >> endobj 1861 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 219.27 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1860 0 R /H /I >> endobj 1862 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.003 601.5 542.003 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1860 0 R /H /I >> endobj 1863 0 obj << /Type /Action /S /GoTo /D [1669 0 R /XYZ 72.0 720.0 null] >> endobj 1864 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 220.93 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1863 0 R /H /I >> endobj 1865 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.992 589.5 541.992 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1863 0 R /H /I >> endobj 1866 0 obj << /Type /Action /S /GoTo /D [1672 0 R /XYZ 72.0 720.0 null] >> endobj 1867 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 230.36 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1866 0 R /H /I >> endobj 1868 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.925 577.5 541.925 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1866 0 R /H /I >> endobj 1869 0 obj << /Type /Action /S /GoTo /D [1675 0 R /XYZ 72.0 720.0 null] >> endobj 1870 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 231.48 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1869 0 R /H /I >> endobj 1871 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.918 565.5 541.918 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1869 0 R /H /I >> endobj 1872 0 obj << /Type /Action /S /GoTo /D [1678 0 R /XYZ 72.0 720.0 null] >> endobj 1873 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 209.82 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1872 0 R /H /I >> endobj 1874 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.067 553.5 542.067 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1872 0 R /H /I >> endobj 1875 0 obj << /Type /Action /S /GoTo /D [1681 0 R /XYZ 72.0 720.0 null] >> endobj 1876 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 265.38 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1875 0 R /H /I >> endobj 1877 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.682 541.5 541.682 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1875 0 R /H /I >> endobj 1878 0 obj << /Type /Action /S /GoTo /D [1684 0 R /XYZ 72.0 720.0 null] >> endobj 1879 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 234.27 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1878 0 R /H /I >> endobj 1880 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.896 529.5 541.896 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1878 0 R /H /I >> endobj 1881 0 obj << /Type /Action /S /GoTo /D [1687 0 R /XYZ 72.0 720.0 null] >> endobj 1882 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 241.48 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1881 0 R /H /I >> endobj 1883 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.847 517.5 541.847 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1881 0 R /H /I >> endobj 1884 0 obj << /Type /Action /S /GoTo /D [1690 0 R /XYZ 72.0 720.0 null] >> endobj 1885 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 253.41 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1884 0 R /H /I >> endobj 1886 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.766 505.5 541.766 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1884 0 R /H /I >> endobj 1887 0 obj << /Type /Action /S /GoTo /D [1693 0 R /XYZ 72.0 720.0 null] >> endobj 1888 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 229.54 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1887 0 R /H /I >> endobj 1889 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.932 493.5 541.932 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1887 0 R /H /I >> endobj 1890 0 obj << /Type /Action /S /GoTo /D [1696 0 R /XYZ 72.0 720.0 null] >> endobj 1891 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 234.54 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1890 0 R /H /I >> endobj 1892 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.896 481.5 541.896 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1890 0 R /H /I >> endobj 1893 0 obj << /Type /Action /S /GoTo /D [1699 0 R /XYZ 72.0 720.0 null] >> endobj 1894 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 266.19 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1893 0 R /H /I >> endobj 1895 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.676 469.5 541.676 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1893 0 R /H /I >> endobj 1896 0 obj << /Type /Action /S /GoTo /D [1705 0 R /XYZ 72.0 720.0 null] >> endobj 1897 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 266.76 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1896 0 R /H /I >> endobj 1898 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.674 457.5 541.674 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1896 0 R /H /I >> endobj 1899 0 obj << /Type /Action /S /GoTo /D [1711 0 R /XYZ 72.0 720.0 null] >> endobj 1900 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 271.76 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1899 0 R /H /I >> endobj 1901 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.636 445.5 541.636 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1899 0 R /H /I >> endobj 1902 0 obj << /Type /Action /S /GoTo /D [1717 0 R /XYZ 72.0 720.0 null] >> endobj 1903 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 285.1 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1902 0 R /H /I >> endobj 1904 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.545 433.5 541.545 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1902 0 R /H /I >> endobj 1905 0 obj << /Type /Action /S /GoTo /D [1723 0 R /XYZ 72.0 720.0 null] >> endobj 1906 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 281.2 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1905 0 R /H /I >> endobj 1907 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.572 421.5 541.572 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1905 0 R /H /I >> endobj 1908 0 obj << /Type /Action /S /GoTo /D [1729 0 R /XYZ 72.0 720.0 null] >> endobj 1909 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 248.42 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1908 0 R /H /I >> endobj 1910 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.799 409.5 541.799 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1908 0 R /H /I >> endobj 1911 0 obj << /Type /Action /S /GoTo /D [1735 0 R /XYZ 72.0 720.0 null] >> endobj 1912 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 248.99 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1911 0 R /H /I >> endobj 1913 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.795 397.5 541.795 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1911 0 R /H /I >> endobj 1914 0 obj << /Type /Action /S /GoTo /D [1741 0 R /XYZ 72.0 720.0 null] >> endobj 1915 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 253.99 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1914 0 R /H /I >> endobj 1916 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.761 385.5 541.761 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1914 0 R /H /I >> endobj 1917 0 obj << /Type /Action /S /GoTo /D [1747 0 R /XYZ 72.0 720.0 null] >> endobj 1918 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 267.33 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1917 0 R /H /I >> endobj 1919 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.669 373.5 541.669 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1917 0 R /H /I >> endobj 1920 0 obj << /Type /Action /S /GoTo /D [1753 0 R /XYZ 72.0 720.0 null] >> endobj 1921 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 263.43 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1920 0 R /H /I >> endobj 1922 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.696 361.5 541.696 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1920 0 R /H /I >> endobj 1923 0 obj << /Type /Action /S /GoTo /D [1759 0 R /XYZ 72.0 720.0 null] >> endobj 1924 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 297.31 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1923 0 R /H /I >> endobj 1925 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.46 349.5 541.46 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1923 0 R /H /I >> endobj 1926 0 obj << /Type /Action /S /GoTo /D [1762 0 R /XYZ 72.0 720.0 null] >> endobj 1927 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 261.2 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1926 0 R /H /I >> endobj 1928 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.711 337.5 541.711 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1926 0 R /H /I >> endobj 1929 0 obj << /Type /Action /S /GoTo /D [1765 0 R /XYZ 72.0 720.0 null] >> endobj 1930 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 256.76 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1929 0 R /H /I >> endobj 1931 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.741 325.5 541.741 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1929 0 R /H /I >> endobj 1932 0 obj << /Type /Action /S /GoTo /D [1768 0 R /XYZ 72.0 720.0 null] >> endobj 1933 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 267.87 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1932 0 R /H /I >> endobj 1934 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.666 313.5 541.666 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1932 0 R /H /I >> endobj 1935 0 obj << /Type /Action /S /GoTo /D [1771 0 R /XYZ 72.0 720.0 null] >> endobj 1936 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 270.08 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1935 0 R /H /I >> endobj 1937 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.649 301.5 541.649 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1935 0 R /H /I >> endobj 1938 0 obj << /Type /Action /S /GoTo /D [1774 0 R /XYZ 72.0 720.0 null] >> endobj 1939 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 263.42 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1938 0 R /H /I >> endobj 1940 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.694 289.5 541.694 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1938 0 R /H /I >> endobj 1941 0 obj << /Type /Action /S /GoTo /D [1777 0 R /XYZ 72.0 720.0 null] >> endobj 1942 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 285.1 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1941 0 R /H /I >> endobj 1943 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.545 277.5 541.545 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1941 0 R /H /I >> endobj 1944 0 obj << /Type /Action /S /GoTo /D [1780 0 R /XYZ 72.0 720.0 null] >> endobj 1945 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 248.42 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1944 0 R /H /I >> endobj 1946 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.799 265.5 541.799 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1944 0 R /H /I >> endobj 1947 0 obj << /Type /Action /S /GoTo /D [1783 0 R /XYZ 72.0 720.0 null] >> endobj 1948 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 257.3 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1947 0 R /H /I >> endobj 1949 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.737 253.5 541.737 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1947 0 R /H /I >> endobj 1950 0 obj << /Type /Action /S /GoTo /D [1786 0 R /XYZ 72.0 720.0 null] >> endobj 1951 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 264.53 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1950 0 R /H /I >> endobj 1952 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.686 241.5 541.686 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1950 0 R /H /I >> endobj 1953 0 obj << /Type /Action /S /GoTo /D [1789 0 R /XYZ 72.0 720.0 null] >> endobj 1954 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 275.63 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1953 0 R /H /I >> endobj 1955 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.611 229.5 541.611 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1953 0 R /H /I >> endobj 1956 0 obj << /Type /Action /S /GoTo /D [1792 0 R /XYZ 72.0 720.0 null] >> endobj 1957 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 241.19 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1956 0 R /H /I >> endobj 1958 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.85 217.5 541.85 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1956 0 R /H /I >> endobj 1959 0 obj << /Type /Action /S /GoTo /D [1795 0 R /XYZ 72.0 720.0 null] >> endobj 1960 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 246.76 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1959 0 R /H /I >> endobj 1961 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.812 205.5 541.812 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1959 0 R /H /I >> endobj 1962 0 obj << /Type /Action /S /GoTo /D [1798 0 R /XYZ 72.0 720.0 null] >> endobj 1963 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 235.65 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1962 0 R /H /I >> endobj 1964 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.889 193.5 541.889 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1962 0 R /H /I >> endobj 1965 0 obj << /Type /Action /S /GoTo /D [1801 0 R /XYZ 72.0 720.0 null] >> endobj 1966 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 247.31 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1965 0 R /H /I >> endobj 1967 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.807 181.5 541.807 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1965 0 R /H /I >> endobj 1968 0 obj << /Type /Action /S /GoTo /D [1804 0 R /XYZ 72.0 720.0 null] >> endobj 1969 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 234.53 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1968 0 R /H /I >> endobj 1970 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.898 169.5 541.898 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1968 0 R /H /I >> endobj 1971 0 obj << /Type /Action /S /GoTo /D [1807 0 R /XYZ 72.0 720.0 null] >> endobj 1972 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 247.31 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1971 0 R /H /I >> endobj 1973 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.807 157.5 541.807 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1971 0 R /H /I >> endobj 1974 0 obj << /Type /Action /S /GoTo /D [1810 0 R /XYZ 72.0 720.0 null] >> endobj 1975 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 235.65 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1974 0 R /H /I >> endobj 1976 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.889 145.5 541.889 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1974 0 R /H /I >> endobj 1977 0 obj << /Type /Action /S /GoTo /D [1813 0 R /XYZ 72.0 720.0 null] >> endobj 1978 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 229.82 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1977 0 R /H /I >> endobj 1979 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.929 133.5 541.929 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1977 0 R /H /I >> endobj 1980 0 obj << /Type /Action /S /GoTo /D [1816 0 R /XYZ 72.0 720.0 null] >> endobj 1981 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 256.2 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1980 0 R /H /I >> endobj 1982 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.745 121.5 541.745 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1980 0 R /H /I >> endobj 1983 0 obj << /Type /Action /S /GoTo /D [1819 0 R /XYZ 72.0 720.0 null] >> endobj 1984 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 215.92 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1983 0 R /H /I >> endobj 1985 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.026 109.5 542.026 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1983 0 R /H /I >> endobj 1986 0 obj << /Type /Action /S /GoTo /D [1822 0 R /XYZ 72.0 720.0 null] >> endobj 1987 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 220.93 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1986 0 R /H /I >> endobj 1988 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.992 97.5 541.992 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1986 0 R /H /I >> endobj 1989 0 obj << /Type /Action /S /GoTo /D [1825 0 R /XYZ 72.0 720.0 null] >> endobj 1990 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 247.31 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1989 0 R /H /I >> endobj 1991 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.807 85.5 541.807 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1989 0 R /H /I >> endobj 1992 0 obj << /Type /Action /S /GoTo /D [1828 0 R /XYZ 72.0 720.0 null] >> endobj 1993 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 222.05 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1992 0 R /H /I >> endobj 1994 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.983 73.5 541.983 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 1992 0 R /H /I >> endobj 1995 0 obj << /Length 1996 0 R /Filter /FlateDecode >> stream xMٕ~_GZ xPn4,&%%bIJ+H &3),K>L:{l/_cow˷o&oj͞/G{7__:stß?{v^~rwg7{{oo~%:^Ǫo~7?ݟ_ޜݧ7?wow~?~;^.Wr{=}oo~m|~?!OcoGQGf2_.ۏ?zcx=ǟ?{/gW{>7ml<\ܡMhm۠ h;Ђ[nMp6mnyc{؞w;ݎyc؟w;ݎyx8-------[Vn|K&qH%^C&.\"@|*1Yb8@0    LLLl"D`.]"8Dp)K.\ ` ;y` !!!!)))歝x>-~kAq7={Qe ,eM␸K > nO{)Sb"8Dp)S.\"@@@@@AAA8@8@8D0D0D0D0D0E0E0E`Vc֟FuPݩ^RFzT'dr"%elbX.ebX!qRYYY&Y&Y&Y6ldȲe'N,Yd9r$I,Y.M,s2w],s2C, $$$f}lCW5YV{>^w;~c=hÄx/;b5]+ᶶۺQ=_>/޿û?a^rԅ͋ԗ8oڒNj)'IITwԻXֺ#ŲVI- $$$F,i֚-uߨ;KqPݨRϝꤚ,Y.\dIJV!I- ],kbYZ$5YYYY&Y&Y&Y6ldȲe'N,Yd9r$I,Y.UHReBzZ$X*$UHReeeeeewsFO g0o988f}.›Lc=?.{R$CZkuPݩ^P׺S],k]bY:Z!5YYYY&Y&Y&Y6ldȲe'N,Yd9r$I,Y.uRezZ!XֺuReeeeeeee#F,;Yvd9r A,'YN\dreZ,k]bY:Z!Cj LL:w`hpM5fme8'w?>܏/}9/t}YyxM:ozH]CTwu0by@|dddddddȲeJ}Ou*qJ< SC.N%~>n% cTcN%~:A:SA:8D0D0D0D0E0E0E`&]v"8Dp)S.\"Dpu*1^? xJ| ש xJ|,!!!)))ugWon/;߳>o_t#=Wu;/-:hy>^pg:K~PݨRzH}R$I,Y.bY%wbY%ddddddddȲe+߷cuߩNc:T/Au,Y.\bY&ŲMRe͛˚8A}e͜& $$$F,Yvdɲ A,'YNdr"%5Z,k.5Z,k&%XTJj LLL<ϵcPM<}\v|N_'z:wO'o֞\q}y7:ͯWa3/{lT՝%n^F|7/uR-u bYH-u bY@}e"5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.Q:],@ŲDZ,@222222ɲe#F,;Yvd9r I,'YN\dre"Xց(PbYH-u ԇXց(ReeeeeeenZj7㕯Fjv3Ʃ [Û?}>}?f%F/t-;4KԶ檻i&E~X,'DPN5Mu4iT.R Wjm|'tE9ֶ+RWjjjjjjjj3fTvS:Lu0aTNS]LujlZ[('ڔ%N-rRYjm͒)?z(O]ay|Q>Mu4eT^$'kݘzTuczTTTTTTTT6SmMj7nTS:Mu2eT^$'k;^$'kݘzTTTTTTT6SmLj7nTS:Mu4eT^$'k;^$'k^$7000444 m݌3 uyg77#탶?{ǿ=}m[o^ Kܜd|38vsA,˻yX,/S]HOj ('(<,/ʗ.S]zlzlzlzzzzzzzLj3nTS:Lu4iT.S]Fjl;NjaaaaaiiiT6SMj7aTNS:Mu2eTs#H57R͝Ts'I5R̓T N_om\0p8)[(I0aTNS:Mu2E5Tk|'N5Tk|'A5TTTTTTTT6SmMj7aTS:Mu2eTk|G9rRZ;RLj3nTvS:Lu4iT.S]Hwj$Iwj('Qnaaa6[J-͖sXs5]vf.<~3}w;?~|?T 5ϫsΛϗqWZQ?\8|XuΟIy'yZ>(s$I8L5L5L5L5M5M5Mj3zıo)YzJ kWzJ&I$9^{ ?H$֮y2_Amfr|_ B~|6^Z?8͋|yVeeco R՝%ԍ)"EK,k'X֣إTjǰC}eReeeeeeee#F,ﵦy,˻qX,T.S]HN9֓%IN9֓)'z:Lj3fTvS:Lu4iT.S]HN9֓%IN9֓%?HN^O^Órbu7-׻3s}*_b3s֜{MkiKw嵀^rS]z=L]rRN%'az=L]rS S S SMSMSMSMSmLj7nTS:Lu4iT.RTKN!Izz=L]rRyjjjjjjj3fTvSMu0aTNS]Lu"a꒓0uwR.9^STKnaaaiiiי9c5Լ:3ciR~/Ӥ|][W#ŮUUqw)=oEf|IyZnaaaaiiiT֪c~poT՝%8nTONuRM,Y.\bYQZ.Ej(Re-C,,,,,,,Y6ldȲe'N,Yd9r$E,XjŲ֚@e4Z,k ԇX*222222ɲv.ضnؿz}=ir0ǜ7󚽍ߞq SmZ<u~77z~U<ރZa&yX-_ 3ɛLj+տ v'Jkay|Q^%o2eTc#Z`@9wRj-0TkaaaaiiiT6SMj7aTNS:Mu2eTkZ $IPNrRjjjjjj꫁ 7k(b@fJz]_~3n{/MIyɓ<-כ-/e7Kԍ)\zH}&:&$F,[Yk:y-Oc<,/ayT.S]ZSN8ZSN㔛jjjjjjjj3fTvSMu0aTNS]Lu"|rR%I>TqI>TTTTTTTϿ[mZg+l7םon?ڭj_j7/x}P:g[먯Ǜf|gEyZ>(?YQwiiiT6SMj7aTNS:Mu2eTCiI>|'PrR)'PrS S S SMSMSMSmLj3nTS:Lu4iT.S]ZJSN;ևҔj}(-A4Z7ڳo6Rn\qnk\w~vƍ)wi ]'m[zǶm#~_b#()oOnyZ>$(˻Z3If,Z3M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujX('*$If,jX('՚PnaaaiiiT6SmMj7aTNS:Mu2eTkB9֌ETkB9֌ETkBڶ5b_]ԄeyUǺ9;N|{s\ 敮 矋QVn{E")yHyZ>(IPN&RHnaaaiiiiT6SM0aTNS:Mu2E׎I1"9^;F$'k^;F$70000444fTvSM0aTNSLu2E׎I1N׎I1"9^;F$7000444k2>1˗#םon,1f9MNyǜ᥮t7soq<BVz@}\N#|-.!!AAAAAIII,Y6dɲe'A,YNd9r"EK,cz2v޲@-qedddddddȲe#F,;Yvd9r$I,'Y.\dIJH-H],kbX!yedddddddy k1Euu盤E~<[gA^+WvPs{<-Sw7M5L5L5L5M5M5M5Mj3Vmfg[fyX-_f.S]H@PNrR%j- ZA6SmLj7nTS:Mu4eT.R%j-|'ZA9I@PnaaaiiiC%ss޽=G.C3q _=0k}޼f׿$Z|@yX-_7)oOjBwrS]Lu"Z@9wR% j-RTkLj3fTvS:Lu4iT.S]H/PNATk Z$?H1Pnaaaiii5~y.amϻb;I$я}/o_˿޿p^b;oNF7/x|7/\7=햧 ay|Q˛奺YwYnT.RϾ)'rRϾ)'[ToM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Luj}M9gߒZ}SN7Z}Snaaaiiic]ջvyw)+,?_@PGE>unQGV_7S>%u}<,/RLj3nTS:Lu4iT.S]z*$'kV!9^ IU@~5TTTTTTTT6SmMj7nTS:Mu2eT^ IU@5TYz*$7000444m֒ .<\w﹙UU0U?`ί敮/tܞT8_lG;IKTw[XbYZueeeeeee#F,mW&ay|Q>˛[2eTZIKjTk?Zk)7000444fT6SM0aTNS:Mu2E֟rRZk)'Z/A֟rS S S SMSMSMSF_kn5.aDGɞaw߽wPb_E߶uI|P~#<,jjjjjjj3fTvSMu0aTNSLu"H56RTϿW-'I5vRT 8L5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]H57R͍Ts#Ts'I5R̓T000004443s{GϻD}'_9<û?}u0_Yv}9iv̛oA[(?R,6SmLj7nTS:Mu4eT֦ I6MPNirRMZ&(70000444fTvSM0aTNSLu2EirRMZ&('4A9֦ M5L5L5L5M5M5M&v&9todn& ~x>}W'/\0qbp>ϟc]_ $˻zIy=@rRnyjjjjjjj3fTvSMu0aTNS]Lu"pwRn 9^7THnaaaiiiT6SmMj7aTNS:Mu2eTHN Izz=THnaaaiii G~Anvu!8^釟 ~raf5E}j#myI}>Q=>KT:&$F,[Yk}<-[(rS]Luj}NO9j}NO9ZSnaaaaiiiT6SMj7aTNS:Mu2eTszI>|'rR)'rS S S SMSMSMS1cۢ>~3mbϛ;ۇ~|w?W?L}k{||K=ϟ6/~Y>)?RSk)ayTk)ZK$?H"PnaaaaiiiT6SMj7aTNS:Mu2eTk)ZK$I"PNrRjjjjjjj3fTvSMu0aTNSLu"Z@9RwRj-E Z@}}Góŵ}?|ɋ+绷f|uB׊nڶwݍ5(Oˇ5֠<,/f9XrRaaaaiiiT6SMj7aTNS:Mu2eTkA9XCTkA9XrRLj3fTvS:Lu4iT.S]Hj5$Ij5$?HjjjjjjH{\/Ϣ.~3}wݧ?Cvxx/{At2Guq0%%)O5<,/k *9VTTTTTTT6SmMj7aTS:Mu2eTk ZV('ڴB9֦RM+jjjjjjjj3fTvSMu0aTNS]Lu"ڴB9֦wRM+jmZTk zpBZf߶ys]f0lϣ~zwwk@8_ծ/v{7O/+>\xǿ(?߳Q,(O{6rS SMSMSMSmLj7nTS:Lu4iT.S]Z('Z> N|rRj-TTTTTTT6SmLj7nTS:Mu4eTIHj-TkM5L5L5L5M5M5MnqG~܉bm?H|4ȼykC,Z\7bOkiJw˗FFFNNNAAAaaaaiiiTւ `;|Q^ ~%oOkiZ<,7iT.RTc#H5vRTc'I5RT00004444fTvSMu0aTNSLu"H57R͍Ts#I5wR͝T {fT#:c\w7b<-?#nF,7IF,jX$?HF,jX$S S SMSMSMSmLj[wݍX$I-Os<,7iT.R Z#wR Z#R Lj3nTS:Lu4iT.S]Z#IF,jX('H~jX(70000444՚lA]Df?}ı݌dao|/Ա|֊uWwi?E?I?i9ijmTkZۭ$?H[QnaaaaiiiT6SMj7aTNS:Mu2eTkZۭ$I[QN݊rRVjjjjjjj3fTvSMu0aTNSLu"nE9v+wRVjm nElj+L^\6ڸ.f6tt}k6t~w?>J!4k|`zv?NAvA3<,/krR:j-ב ZC9rTTTTTT6SmZ ;{Y>)i|n:Mu2E\rR:Zu('Z#A\rS S S SMSMSMSMSmLj7nTS:Lu4iT.R:j-סTkZu$?HPnaaaaiiMPS׌eu盁KoX>{__< 5n['m07=D3D3Ayh&yX-_׉f"zZO8|'zZO8 zLj3nTS:Lu4iT.S]z~ZO8T Gj=HT Gjjjjjjjj3fTvSMu0aTNS]Lu"zZO8|'zZO8T Gjjjjjj^2fIknv∛YgIwf+\:O.yq [_-y"˻K vțz9^ vIoaaaiiiTZD(`牼Y>)`<-ZD4eT^DN|;I'rR}`A0牜T_ 0TTTTTTT6SmLj7nTS:Mu4eT>0牜T_|'<s'rS S S SMSMSMS}u`<\G ͯ_^~۟߿ӯ<w/q}v6溇COc<,/ay|RLu"՚)?RjmTkLj3fTvS:Lu4iT.S]H[QNJTkZۭ$?H[QnaaaiiiiT6SM0aTNS:Mu2E݊rRVjmTkv+M5L5L5L5L5M5M/1m[ǔA 6FZmY1'}5u:h 4>n/o? 4Λe‡yDyX-_7I7'MiNS:Mu2eThI|':6rRc%?HTTTTTTTT6SmǩnyZ>(ay|Q>˛妺Lu";-':6rRc)':6ZThM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujM9ֱђZFSNul4ZFSnaaaiii_m?-ͰO؎~^ͅq̛s|͗U;Z۴^㈭zVqsTY>)AyHwTNS]LujmTkZ('@'ArS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z('@'NrR tjmTTTTTTT6SmLj7nTS:Mu4eT:I6IjmTk:M5L5L5L5M5M5MV߶nFӵnwoX|T_{ON{|瞜xd<-iay|IirR}grR}'T_=9활T_=99|Q'=7'|r3yZ>(ӞrSLu"WON{&'WON{"IՓӞIՓӞR}grS S S SMSMSMSMSmLj7nTS:Lu4iT.R}grR}grR}grR}'T_=9TTTTTTT4^zruw3c8v̨ж _F@2xiylȻFu :Df$<-ׁ$4iT.Rvj|'kG9^;Rvjjjjjjjj3fu Ikמ@AyH"yX-_ׁ$7Mu2EjTk;^;IQNN0000444fTvSM0aTNSLu2E׎rRvZ{('kG9^;M5L5L5L5M5M5MZf5b!ӵh^u E endstream endobj 1834 0 obj [ 1833 0 R 1835 0 R 1837 0 R 1838 0 R 1840 0 R 1841 0 R 1843 0 R 1844 0 R 1846 0 R 1847 0 R 1849 0 R 1850 0 R 1852 0 R 1853 0 R 1855 0 R 1856 0 R 1858 0 R 1859 0 R 1861 0 R 1862 0 R 1864 0 R 1865 0 R 1867 0 R 1868 0 R 1870 0 R 1871 0 R 1873 0 R 1874 0 R 1876 0 R 1877 0 R 1879 0 R 1880 0 R 1882 0 R 1883 0 R 1885 0 R 1886 0 R 1888 0 R 1889 0 R 1891 0 R 1892 0 R 1894 0 R 1895 0 R 1897 0 R 1898 0 R 1900 0 R 1901 0 R 1903 0 R 1904 0 R 1906 0 R 1907 0 R 1909 0 R 1910 0 R 1912 0 R 1913 0 R 1915 0 R 1916 0 R 1918 0 R 1919 0 R 1921 0 R 1922 0 R 1924 0 R 1925 0 R 1927 0 R 1928 0 R 1930 0 R 1931 0 R 1933 0 R 1934 0 R 1936 0 R 1937 0 R 1939 0 R 1940 0 R 1942 0 R 1943 0 R 1945 0 R 1946 0 R 1948 0 R 1949 0 R 1951 0 R 1952 0 R 1954 0 R 1955 0 R 1957 0 R 1958 0 R 1960 0 R 1961 0 R 1963 0 R 1964 0 R 1966 0 R 1967 0 R 1969 0 R 1970 0 R 1972 0 R 1973 0 R 1975 0 R 1976 0 R 1978 0 R 1979 0 R 1981 0 R 1982 0 R 1984 0 R 1985 0 R 1987 0 R 1988 0 R 1990 0 R 1991 0 R 1993 0 R 1994 0 R ] endobj 1831 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 1834 0 R /Contents 1995 0 R >> endobj 1996 0 obj 15702 endobj 1998 0 obj << /Length 1999 0 R /Filter /FlateDecode >> stream xTM0+cx]z=p>Y Jc B=֌߼y3c^=~4B{MBag B>rl-mV+<_rf y<~w>/X"Y }u@$j 9#>q>? `?Z[Bldqֵ:׭.uzzS?CqWC,Ppxs\FZ șk>DG5\vU97Me)^4p2ƏGBr.(("JgDu0#n>~u4!+ V4FYZ-rfoEuWkGEZ9Mc%9Ǘ.̏d3f⽤baD*EЂ$77]CLm8e?.ʒSSUlI4U?TQGLHz,nƆ󠟢xel)RدʦՐz endstream endobj 1997 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 1998 0 R >> endobj 1999 0 obj 552 endobj 2001 0 obj << /Length 2002 0 R /Filter /FlateDecode >> stream xUR0}W#̀mYQJvZ.Ž 0(ăcؐ]&$3Rv}]}H!; \=C 5Omm!৓9NtN"`v8 t.9?;}N7%xUJDpe>9\r/hQrqP$.lV3ǟ$ Ҧgkʆ۸ҺsZ%Rm+=:ndmxSᡐ(  7Z{GD1քJ4*J->8(.>_3S7 SU5 H.ל6QPjg$*`xߕ*Lix` oJ&+s/*)((gqA\j #J9̕*8-dX{'Q뢀'K |9\o@D?_u/x7],kf(_hݦșGX+6LrjȧPΒaAm 7مo-0P=lSq&i8JX͒xzuoڐYOCxLROss4I<\diF'=3j߻輭zG;sz==e| h@0WU\GyV꿣*Ԧg8W-V-}VzQ] endstream endobj 2000 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2001 0 R >> endobj 2002 0 obj 716 endobj 2004 0 obj << /Length 2005 0 R /Filter /FlateDecode >> stream xT=o0+nL#%[:p#CQ؈-:(ɑɕwɯL߇phCPkg dڙ {up1_ +'@a/&߱~٧}@g{TƘ,K2!Wpuk^3umȿZ ɿ>r$ =-6o&םx|94f\|x)tHȳuR .U;d@ȵ9PeGh]G;5Ś] lV;ڨ qQZb]HIsZhBL<|ʭ`۲Lr:w- TyDOBi uL]u\Fq3cRb9Ρ \!yҏ=)Pۤr˸f5>^6gOnUP' +Ad22x>[=W$^sa3_s(e }i #; endstream endobj 2003 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2004 0 R >> endobj 2005 0 obj 537 endobj 2007 0 obj << /Length 2008 0 R /Filter /FlateDecode >> stream xUKS0WfZU/?ĭt聁`l%r&we;رc'JO~͋À]|!^;/AxI]XCwaeOu6|å>%v2 Pڿ:7~Oa| O3pަH( \qpv]^<hctyO{xH0T1T:sIU+顧oZچۺVM嚵zuTmeЮxW-QhsozpJ||]MxGFЦȟ6ِ$5qe:nzHRd C+ހ CZ rYA4_E 3I;,4Y]^}]Dž0a=RW}ͳR•DrpP6ѹ[óѻq~c endstream endobj 2006 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2007 0 R >> endobj 2008 0 obj 689 endobj 2010 0 obj << /Length 2011 0 R /Filter /FlateDecode >> stream xUKs0+GidBC9fj-Ib0ғk{F]e1}8koH"lUA'<5r+TOC(,Wxzwh̀"٣Cw5ƻ; =9?'c/ E+""r~4 dcuuw2>H02cS'ICCKoN[FۙVmڳ |s2ڥAYNIɧB: $:!8qFt|pJ$^~ND6).ې,iY:MGjGs™aDo:€H1tϹn?_2uT[حV/Waؠ:0 ]ud(76Pu'JFJ> endobj 2011 0 obj 670 endobj 2013 0 obj << /Length 2014 0 R /Filter /FlateDecode >> stream xVMs0+JB+I&=9`L 8'M}V@̗=g$Kz>d?8A*yh(Ho<p)4s6Tg^g8ԇp_Nf OUX9C@xז+B)x)bpBOyqd+[;_ž"NPtUPI#ݪٽ ONv"vktDi'uV;ӦH46j+1j£!7EggxzU@EDrB(1Gq /199'6֙~D%ژh!1iQǯ2Gok!Y5yPU2PgA K㤌06;D1'$zۼ('E!SMdQtCՐ6bv,Y-vNgRu/o`ccSRt$|F#.]s;X1$D2 kn4roXVcL+ 74]&ym0IFƘi5u\/gC?`4.UGg3'\KKk8"M]_+w`M endstream endobj 2012 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2013 0 R >> endobj 2014 0 obj 678 endobj 2016 0 obj << /Length 2017 0 R /Filter /FlateDecode >> stream xUr0[E.3I'LR8.(8 iR<9f\zP1'918q9.0phlvԉ_,\Chl᧕Z>[EpuwovSXBصHH[J;pQtAJ_>@*9syvoñiDV6[frZ'Ru=:[ʠU Q ?+WhGk~Z)))(/G9)9)7}eN43A)t%rQk`5{.u"/νyw|Krl[gUK'Z%nu֚XUwmDeQCT:.u;USa}U纮Wfy/P91iR؜ 45Ԍ bS;w{2#q}|wz( Yg46RPY !i]9 XaA f/TQ6zz|罜deW-g4 6{Q[UU^x1r"cHdfR[ru×y3lY)1F e/ 3cĻ2 iRo(Ƙy5ŏU7s fǖuY՟cBpbs*!76^o;`ҼNd\ endstream endobj 2015 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2016 0 R >> endobj 2017 0 obj 703 endobj 2019 0 obj << /Length 2020 0 R /Filter /FlateDecode >> stream xUMs0+֯tC&@b31 \7Y!lc0gW}vc@^Ba{mAAmI}ȡ]wu|‹  -n@h?]:v8?>ޞ( E|!R\8WޔCV!NVFׯo!} FB3g4>%=aGBbqvkNBqQt/vU:EMZ $:j/ܵ -NNIyWbPQJE+hUwlEw#2 gRuw(&,CO>@Nɳ4 {ari_`X}b-`u5;}A2'?鷼]Ɂ"aHR|(Z'HNXjnO"-AplrW3^ endstream endobj 2018 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2019 0 R >> endobj 2020 0 obj 676 endobj 2022 0 obj << /Length 2023 0 R /Filter /FlateDecode >> stream xTɒ0+6[Y*Sahb2B$vJn~_0}9,๏1PDԇ$<{kw7\E6:}0 :?U. ކ($O MB!q1\Wwng^ I׏|>&#EhIHQ"ta?D;Bc.7ןzyQ=ȠCcg\)2J p婝,q(5 R*zAuSfY֔ˢ]MSzg#cp&(ete`b #N\)ia2 %֚`+p@ _?|´m2zmY 7#;z "7-_ʪnvg%*:]5H1#/-]o̞yOT$M,L sq9Dp(f8nӴ>*iOwb Dŕ,^:Xah:&LԾ淝23H wJh|nFNf_mF endstream endobj 2021 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2022 0 R >> endobj 2023 0 obj 557 endobj 2025 0 obj << /Length 2026 0 R /Filter /FlateDecode >> stream xR=O0+v>[H U&EcǡM%tw{%WD3&pܧ"@P[#G|{ƸK)BH+\=a? 2;;oߋ0'r&ghq m&=X׈sg29 Gΰ! ~#~IgrzgگEZ§qDTc, 2muc\#I.N9DZcW%)e"e Uݩ`"]V94CjwOjt*QR{l&nFӟ/ endstream endobj 2024 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2025 0 R >> endobj 2026 0 obj 345 endobj 2028 0 obj << /Length 2029 0 R /Filter /FlateDecode >> stream xTKo0 Wa[Rn ۩A E(DJmg(KIYo@)Gp(#`!oIA ER6VO{ x Ia<8ry,Qf1.h* r7~j[(gƶOP _`30t =0ZzCp]Bui$O$.8nc]{F@:3Fu~!1\kkh=/vJL_%qS endstream endobj 2027 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2028 0 R >> endobj 2029 0 obj 486 endobj 2031 0 obj << /Length 2032 0 R /Filter /FlateDecode >> stream xTKo0 WalvZP;ENjԖRٰ?JV;u[f;AW! X658hR%UgT@sí %'q7r{'`p] ոCNxUDhsˮn6\=W~6Զ\ #A+M 8zN}?Zz*!fDzoa/eqd(0aOʄW*f/mݻډpZ%LD1fw뻫GeN3qSOzה;@B@rKɬ8>/d=W3밒*e\9 o# endstream endobj 2030 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2031 0 R >> endobj 2032 0 obj 478 endobj 2034 0 obj << /Length 2035 0 R /Filter /FlateDecode >> stream xTMo0 WFId[݂ء-4sRcHmgC(KI4Yo@2)O~a~be^ML4i"RCqF~!ܰr? l>=xk%ciТT PR󏄬f+![l~;M(!a?XaNp`o?X*j{W$l8f1UEy:Jp Q [cNtԒёU$˾h٬#?cd׷穫B"n y' > endobj 2035 0 obj 486 endobj 2037 0 obj << /Length 2038 0 R /Filter /FlateDecode >> stream xTKo0 W-YmV`vh"sԘle+#z˜)>~_ vF@RWH\PB!F8Yx$ #n>À?ud=ow3ؓ/1- - 8cK G@\J~-CG?Yw:vBO6€MwFC+({zv+wқ=~ʃ 4ؘt*nZ@h& ܸkgBڞ+>G5: ιtv2i\ݶxjZǢyD*ۂxIK>UH SF_];-[jʽ1f-E_6 Di{p<:mU1gg<}a0o_3OV-ُLHPUQ/[Y9 qQ#c\˵+N]x4 Nj"-[ ]9UQ`qv)(F1N=DGWtM endstream endobj 2036 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2037 0 R >> endobj 2038 0 obj 523 endobj 2040 0 obj << /Length 2041 0 R /Filter /FlateDecode >> stream xTKO0W]3; ]UD TJ(MR~ǏIp+i$Of<371H0V´doQ'HP:R "2 r-.Y=n8|ƽ΂'Ϗ0cW9@ȟ%J," e JZHK=Ed=د|F l{,57z`HZzCo> :҄δ]g'GyY ɏqy6p5Q Z>'jHiiU$ݼFaC*e5] \ EB!]h͵5b?Нf| ^},ݪq1flC\QdvX4ZkW,UkW{25&V,g(̣-jϿ$T41e3[DiZZCS|ڣ\bƽ]ol endstream endobj 2039 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2040 0 R >> endobj 2041 0 obj 478 endobj 2043 0 obj << /Length 2044 0 R /Filter /FlateDecode >> stream xTMo0 W[r뀭nA EiXNmg(Kv$^o@ %O~#ݢ oA *b<"Νpx7aNӵwd9v3ؐ)= }9(241.5$T i27u A#6`l1 izGl3A?zۂk]ZX=oz>~4ؐXW->-9H 2ғrj|$F5^!'> endobj 2044 0 obj 505 endobj 2046 0 obj << /Length 2047 0 R /Filter /FlateDecode >> stream xTIO@ ϯ$7K2Ko H2&-IxI48>/ qI> UR xFE%$9J#^B IEܐ'4Cm wd-LeA\eRRX(Jx8] hѸ [rUH.~0`CF ymH(517RD1AlCuYQp4^ ո]NxUDuY Zit߲\ AP#Qs?W!7`>ڵ:XzZM{QUx 8J_a| (|t;fڬ\pZ%LneIfsOeN3q,Sz,Bڃ*TZBڃ}\7׫pg ppy endstream endobj 2045 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2046 0 R >> endobj 2047 0 obj 476 endobj 2049 0 obj << /Length 2050 0 R /Filter /FlateDecode >> stream xTKo0 WmIu@[vh!K$X,a~#zK"H>>N80}2fyO:J,*/gTPAsX[=Al%<%8<:!0\p~"^~oa`N}A/Qf1.h*񏀲竧zvPN׭_|$w倍،?X_!~ eԡ&UZ:#(F><˃i>T\4Pޑ3 3sv.\F;> W *Tsmܬ[n4jqݴnTeѐ *}ADi MۦqA)qQCn|7K7vA0ƶڽ%]Cx?m*}*PJ_^vjNT)NX9.hU*FcL\4c3Emʺn !@Z3B6\ʅVpZR?r= endstream endobj 2048 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2049 0 R >> endobj 2050 0 obj 485 endobj 2052 0 obj << /Length 2053 0 R /Filter /FlateDecode >> stream xUMS0W=T՗-c?Lg)(ØO;X6$$vlro.b@{(a=Hڭ8& a:{kgV/~FeDStq7@'p|ѻ,z{ͷ%RʄlΫo@i^_B95g>1?E|bIOvzBp'pe۵ ˠ'|UI4 rUg#x endstream endobj 2051 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2052 0 R >> endobj 2053 0 obj 710 endobj 2055 0 obj << /Length 2056 0 R /Filter /FlateDecode >> stream xV]o0}WU<ƕI=Lև(qR4)&ݲ_k Kز9s}ǀ;;H!]xOAR `<>3 N+< _;ܜEo5kjW0>x-H(LH~8 }s]t q4>%S#j39轍;;&جoWBpqۭ=vtƣ:VUW%?nih "`G U)jG%.*h-A$J'SRzUN꡷%0ˑ`$̓0Ԅs1|*4_,B5T:ٳs@'FW*R C[=.m0mXd(=RDHG[ңEg\r 3WzÎCzcm#DugYi5`?Z<[qPz1[)zPIX C+/JH`*Mʊ9$$q'a_ PCꃷ k 0[Vvŕt endstream endobj 2054 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2055 0 R >> endobj 2056 0 obj 778 endobj 2058 0 obj << /Length 2059 0 R /Filter /FlateDecode >> stream xUMo0 W˖>:`5CWn$;vٯ%NbjNY@GRCĀ0YFA$RǰvžڙN3*# _ܼ9etow)̢Y<F!nC$5I )\l o.o@jӼk9S#j.}c?E\6bIwv[߮:BpsۭEvQt+د@FIW "p i;=8% &ÄLA :!]#6+)"k͗b&z1z~aw@5f^GSn@{rLX:~M vGjocU6OjBp"9x[P67iUf}ui_OUSTe> 67-=XrǝeY3댝{U|cr BF>JezpW,$dd+ڽ?=x endstream endobj 2057 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2058 0 R >> endobj 2059 0 obj 705 endobj 2061 0 obj << /Length 2062 0 R /Filter /FlateDecode >> stream xVn@}+1`HQ^RUXCET _Y&~Jˠ]Μ93< (w9]c8] #`fއn/!y(| nnqs/kWۡoO!4 >\(IMbF)eBALa42mj%sk[}v&&4%2z} +mmګOz=zPȠ*v] QXA޸jF:&|TFVм*ٙm,N{ڐԋZ.1HN8`NGk)Fmsx"6+ (03&)&%RJk[X?rV!\yEh(\yU;:E9=HԒhkxzC "))|_I0kz$3HKZ'P'3 ώu4ҝE2{1oSNi20k*2-s#Ģ^)ZtN,T&53:G.0>apKc!r|:;|}Hp<a0ô=غGpayJ{Vg=TЮ_lw}BX v:+~Y;>SUt }}VA nGjϊ#6ꡡ/BI$U =n9=$ƣHش5Nc*B3ZK*c!A+b*1V<@N9@C"CdxKZz( LEQcq endstream endobj 2060 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2061 0 R >> endobj 2062 0 obj 787 endobj 2064 0 obj << /Length 2065 0 R /Filter /FlateDecode >> stream xUKs0W19T˖cӦ3=tBrﻲÉ3Ҭ*`@-Js,Ukc850Ix h!ކovKSP/x (?=~wBOa|J!0 tDRQJPpH|XNL I}[%9P#jFM MM9i}pJzxW[ oCvGyvד:NWqXW%?]%A)P,+Z/{GDak« \UjlSdxz$ g9` cXb1HƜ.@ =;0}CD+6hLFQU\nP-V=!R47[Nd2HK&t>?(P3 Mz9#q`>Cô#otTz<كy%Q?әcZz ;0!u9)aG 3V4]dz2z!qDp'R{GeQT8g%%sYaԦͻnb7S&ߞH84NlYge1T$ -=!K{5(bzM %'1 $% endstream endobj 2063 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2064 0 R >> endobj 2065 0 obj 642 endobj 2067 0 obj << /Length 2068 0 R /Filter /FlateDecode >> stream xTKo0 WeKqa@Vc;4=durߏyv, #?fM80 %Y6ZL{SWT$@^.beIE|"O ~v ~ ~3x&2> Z,51ƥC# [Cʻ cFrL i zϑ(`kY;@mhUSXHF><˃h1}U\ t䌚=)$9++wh{G`T㊏9SF:=USpww8;ڸvTU1\`=gI Îj$tg*> H/׈2o%ܢzB 2&A?pi~~T~'[E6֦Ġ/as!b=J> endobj 2068 0 obj 553 endobj 2070 0 obj << /Length 2071 0 R /Filter /FlateDecode >> stream xTMs0+̴@(34m:Cif+  )5c9`@yo9Ws@qQF$!S ppAPP h?_W~Cߜ".C`'ČRʄCۓrdHum{H5w5W`#pc~ +nm'^Guн Uq7%7@FI|`Fx6()QxŻE>uUY,NI$1HN8xO0#p *b8WQRtDc{}{zQY˛\Y#$ZZG> endobj 2071 0 obj 654 endobj 2073 0 obj << /Length 2074 0 R /Filter /FlateDecode >> stream xU[O0~ϯ8 m/I#U`xBp"Mn8voIkJvm;/ߏvC1^A~)Iń'0?O&|5\GUD[ts@'}s*;)9i:va*^ 3e5%X,=n9}@czxZWPO *am^ViڬH˪7fU{RbdT3 "g\rp~ByHbI,VJ,:P1!6QӴaT hc”ę1~0@( 40 S+3d o80]z/ahc@' T##uon0{t|6-An.CX$=>a:o|@$oi(?,uRRo%$knc ;6S}ѵy5[.>4[9VmCĜ*G5:\4u:-z /WӔo endstream endobj 2072 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2073 0 R >> endobj 2074 0 obj 725 endobj 2076 0 obj << /Length 2077 0 R /Filter /FlateDecode >> stream xUn0+!b}@M#4ڒc*iݯϒTd[RiR\" o $*k(ȏry:^d i",OElj);im"rSf6iI `Z)e97'bo!K m̑2+܎}޴UzFog,㜢)gHL{z(tqǔ۝D(Q1W չQ}Э%{z|PfF(}4hn2sQJǭ몲L+Y ښ-NJPk|WdcQ`v_Mv"zz endstream endobj 2075 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2076 0 R >> endobj 2077 0 obj 712 endobj 2079 0 obj << /Length 2080 0 R /Filter /FlateDecode >> stream xV[o0~WU<_Jդ]:iӪFCSU@I.wc@RqHS@ra|X@; oMf{ 'pg@ۣ]w ڻlj2FaR+1J)""ܾ._I4>7@`?jbhoOf O-{E]߭6­㶦ݵvtAt'8W%.iD H˽#S"kW%.*s ZV>?7MJdzUU8ǎK>' <1 z`aD"j#Aהs1|*$_,La*Y9aFu<ah]aߵtq"l. ur:o\ c6O ycN?8_-=)|$֙ k=Xô³e' UA/^A#nyhjpS4fi6bAu>S(Ecn2)qG ;3Q=5B雬u tU3)g*I@cJEǣ쁶Yq#hڐGlrڼE^!%LX{죵Su~TajAGݯq}~MReC%a|*m ち$w (+oDK 6WE _ Pn^Bc^ ]Nw endstream endobj 2078 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2079 0 R >> endobj 2080 0 obj 776 endobj 2082 0 obj << /Length 2083 0 R /Filter /FlateDecode >> stream xUM0WŎ"!X6òBiv#ڤ[g 3ӯI{ZJvyLj+?ha5PRIcX@3a: N{TD>Dw9mߡOaI10 t_"iH(LhH8 {q[ llҏH`?sӯϘO6bIw`_ EXÕͩ5cH$L0{PqW<+yChd$G mgZ =NN+~ ոhE#h*G-NV6Sw$ g &҇`c` ?8mW;:/f:, yvc(QPSy$\2ĻA|J)_>Xæ(.wX3#(Gd*)HqG[6;Nd2J1M-0PX{aReZsv G^BiX g(;OMy(6ՙb bEq9¾4 r4[0cc Kv_*4ZC/!(3BB;u4!LiBeQ?Ր/ x bbWP+|ߠ?}߼nʗU^ILXԌ |edx0Ek:ae-VA ĽRei'c#%ׯڛs endstream endobj 2081 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2082 0 R >> endobj 2083 0 obj 702 endobj 2085 0 obj << /Length 2086 0 R /Filter /FlateDecode >> stream xVn0+-M (%z(hqP(2%Gݺ_ߡDoRچHzfy)`@JsH[c8-0Ixsprބof8t/n"% Ph\ }u~ (xw0R$5 1\ni`,jӜkyt`?Dsк֘O;{"خV[BѭJmrW57vt.n<݅A8Tū@FI| x i(<1 5\U`..V2dfY]$' <- fE0$RٓΘsD>|,4_YY@9ʤ&[e NfVY`t?%q(¡u6aScN/((ljk\Y}%*: DR;Rtv~$lxͤ"Q,V(4MY>ZxƟ}ʦL:4,8=2MZ~6] 8 eg .am7ѬgY/ߙ]yB Pf̟!qSHE{r{6`Y xX7CY*|@6A>}}-~`[YWV_ !6/cVCT7I'bZa{0aw` m̟E(Tcrѣk"'ǜxiR?:E{PEX7kԐCWIk`QǯH.C0pY(.tsw:( endstream endobj 2084 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2085 0 R >> endobj 2086 0 obj 780 endobj 2088 0 obj << /Length 2089 0 R /Filter /FlateDecode >> stream xU]o0}ϯ_I@Lú,u4lP~=ױ5IitUmsw0JsV_c8/0Ix+ ko·3&ePW\EuYpo#)dT"I(L(~8$+:U/BӞ^C5 s*5%GL[Z[mCAqQIWwū7@FIܳQrF;=8% &ܪpQυsvt'LhC$ g/ xp)v@&B1xιn74O> endobj 2089 0 obj 660 endobj 2091 0 obj << /Length 2092 0 R /Filter /FlateDecode >> stream xUn0+r(% h!=A!;-ԒKq~}7ɖ}JmIyfSĀ]0.p@qI8`J pfߣ*)GѮ9n }q~ ]Q&IMRF)eBAJ!+m=eZEc}>fjA͍rKE,^lwP3dS Eu{&\ݔe1_@[}޸[Mg0!z Fg8{zhM&hJ7R{+5ڡ''S@@r͒\ӌŢ-jЃ4&,V8biȱfvM80 aUtrq;])3[3?Ͻ0C6`\w&l, endstream endobj 2090 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2091 0 R >> endobj 2092 0 obj 693 endobj 2094 0 obj << /Length 2095 0 R /Filter /FlateDecode >> stream xV[O0~ϯ8 m/I#I0iҦ1@[R┭;&4􉕪|\>p0.Rqޟ1D쏢XHx%}}jk;\Cˠ (| x wׁ/-~k/Oao"`&$Rʄä:[ k|>NvlλsJ5ztײ%iG(8nk*|q[[AӠYE BZ $ّýx i7H9\M}ONL'q4s\eSL, p&`D:ig$Lز 54\r ˬKInt^:)ak{{5qlk$_Uf UOCDD'4V1v )GK(irP8 T?Ɵ|E3hr];9cs`ڴ}t񳵃ƒtT>2˰eja,)ySh<(ĞYZj4![SuVO\2 1Ҩv9-J9PY!V٥ 0=+YLn@7 f|ꀎ(h_^ 8 vVAq,ZKu?QHBN+~ir{IoodMhzAqG ,oUduKNl\@v ђqyڡg"> endobj 2095 0 obj 778 endobj 2097 0 obj << /Length 2098 0 R /Filter /FlateDecode >> stream xŕ]o0+e6IW&m&Mڴh(H|h!8~}c!+Fl?y{α0>0^O~ b?B#XG]ߎ6`wAP?(~] ۆ]ק0 >0 tPQJpHp5,ǿti2<@57u uu9~% }pl-(8m EV}wB͊wҹn׍U E} endstream endobj 2096 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2097 0 R >> endobj 2098 0 obj 665 endobj 2100 0 obj << /Length 2101 0 R /Filter /FlateDecode >> stream xUn0+rD1.)PE! ١ZKN~}7ɒ}J$zq> (ޘE*2x6)GPGP6|}GTO=>EvYM097'),wi:F!(T$aR&$$Dpe8%ܽgt iltH`?l6%>:Bz|rP;j qgͯ.uz:eCU! Qx[%pHlCMD:^rUOUcK4z(xK9L``(YH opsDc&[hW+]:PWiFd[\qlnETɛ-T%b8e\r#R8Y;VӲP8 Xnz0cfl8)c73=6c yM{Nb"[4=jh:8nY]a<Nufe^l{C_Bu !_GlF; 9eڬ=CZv4!Lؙu?ظSA飆r[zuu ^ŷVj>$N>:u dؼT/2S`1l<&('fډ5n~{ ||]: nL endstream endobj 2099 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2100 0 R >> endobj 2101 0 obj 698 endobj 2103 0 obj << /Length 2104 0 R /Filter /FlateDecode >> stream xUn0+-M (%z(hqP(2%GӺ_ߡ$oچI| 7nPC:50& a<ܝڙ N&( ;ܜE5j0 ޏ!0 6DRQJPpu255F{jAUC~c?EDmf}v WZnwY֑viǣ:VU_/J~ 2JR:Z/A"FN+ *\X{s~n'˪h,1HN8x_Уg AkigQJ02dCKcU|޲Lr=cw{!DGQB*ʅגhktDR;R~$lȑzΤ"Q,VX h'3{4_tm“cFg^-s8JzxLO;}`'pbi69\#)̍E WYȦ`i?s̳|pDE_@~&.2a|ek^@QΨ~e, _T?d_VNj?݀MBJp;RV>EmԾ-BI$T=݊(bNb|34_MlQgPaֲ^fGGҲHE#.ΝAqדS4YАH>0 vf~vB) .tyۤ endstream endobj 2102 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2103 0 R >> endobj 2104 0 obj 764 endobj 2106 0 obj << /Length 2107 0 R /Filter /FlateDecode >> stream xUMo@W̱=t^oHJb4 Y*;IDC.~̎?ܢ 2xm 4&+XBWpOmv7sd/=>Ek@*M0w'f8xQIC"F)eBCD7C77-!NV-C55**5 }p$=rP0a-d.6ìЏu^|}Xvӿb iMy\r:Aہuusv_Lɬ`j zn7ƪ.0oT &܉4<+rh> ]AroX3cD/ֆo_>l1Y2ͳAH47#=:]114l m&<~2U#AzIJetgvf LNu0z endstream endobj 2105 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2106 0 R >> endobj 2107 0 obj 705 endobj 2109 0 obj << /Length 2110 0 R /Filter /FlateDecode >> stream xVn0+-M (%z(hq(2%G_ߡ(oRz1ԛ73|c(! F$!̡[ۻv|‹ po-nN"9}w-*;)̂OEh-$fR&Dpm_Fs9*ߦQMsz ^6eC~{?J#}km qۭ;qK̃nӠYM BY $ޓAqi7(|ws[5\t -ޜխs5L KK >219۸`&lq:se:+ (07u ԦS:OE2 l[Jێ+1 '"[bյUQ.>RKUu-DR;R8g|i6> IEXjPg.&ig%L)[(ty +fO;mJ:ei!Wd&(Uc)ߴȦk1B-HX6Ok"Dr_uуY#ر84_/Nl` vi-"L CI&Y1d"p sx<0 >0Q uenn^\UO endstream endobj 2108 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2109 0 R >> endobj 2110 0 obj 782 endobj 2112 0 obj << /Length 2113 0 R /Filter /FlateDecode >> stream xUn0+r(% h!=A8#ԖI~}"[Hs;(a3H8& a>;\%Ϩ(|.Px OlISXDi B6߅Hj2J) R"v .ߜWBkc^A5uoμ |c?E|;XҮdݩ' O-5k0$l?aܠ^tU B9 $픂Pt^9jD:-^UxEzSݘڗ8y<5I  Z2'ő'4\r L] )-<9<[sUs ) C$.l ۲ZE=JҒhjt)VD"_>)L*RkAe2)e;B+jLtOAmsӌYG4f=|U,ӬЏMeY>+c蘤Z#8Ez:CH`<2W|/icHՠ/9Ppo7AS„H}Jkةy(hewVuk6GP'`d٦Xۢ*'ӘX`2O!47fQeQ.\3;c6oͫJ2:P*CN H)0(g;{ rw endstream endobj 2111 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2112 0 R >> endobj 2113 0 obj 698 endobj 2115 0 obj << /Length 2116 0 R /Filter /FlateDecode >> stream xVn0+-M (%z(hqP( %GӺ_ߡ(o-چIz zPuYܮ1PD.0Ix3h! _p n"%GЮ|\oQ*Fa4لHj3J) b"vܝݔ/S([SkyF0\7>479SIF(V7 kVf#~AUVū.倌xb K^)Qxķ5 5ֹhͫ\\ئ* L /tYAr™˜cPRИsDCXiYY@96%K`%Cwe`bvg^D{z%? c':rSmXf =FQKUumҽ"g\I9H HYs#sIEX6"Ig|B\BSÜuR!a~@)&լc`̲|9}ʺL<b,Eb}2Qu-|%,}K(3"옭!ma\&y2=i9)[.6qü=:9ǶAHϲs(+0Uih O7 !(aHqO=E(TcjA'v2^LEN`9|u~26y}{𦡊PacXH ѕtSSH.z6lɂD(h3ӹz  ,t#yHͳS endstream endobj 2114 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2115 0 R >> endobj 2116 0 obj 784 endobj 2118 0 obj << /Length 2119 0 R /Filter /FlateDecode >> stream xRMo0 WuIɎIЕIĿ_tM6R;{[8hܠuϡ>>VϠ%e q*>$OѤ# \B]Cӕ/Tis=|5[ol*ZbLWy`K_ֱex;p K8sDG!.a6pC:CjgDMG0P(J*mӏO\lD2!N:H-D!y/^jyREޙF|g$6¶A+H2T,&7{Fc .k#P_"W(Ğ%[WkH Co&ox1 endstream endobj 2117 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2118 0 R >> endobj 2119 0 obj 408 endobj 2121 0 obj << /Length 2122 0 R /Filter /FlateDecode >> stream xVK0+حZVmFꡭV Z)n;l0ۖDx߼=c@wi0_=AA=k _zz9Bb߼ң[xT]FB>;{n:R}<DD<{TO\N*-];@js+HXÁ?p;cmQׯ_#dtQIn%Ѩ)D(N6g!/ c>-SWWy7Y^4m3#9LPП3j910sv,̒hZGG-tPj#c@dGM5d'gRU:?@\088Q>4\Lo:ꅪz:'&=tqQ&Vħ ۲7kl3bD~L9Yg!*&эf'A7u6o7m-[D~'E+鍄T NAHjEnk@=qr2Lւh5VUc;#V`Ϻ{3˩e֥#˭3lI$ڵlv]7.8#F |kDp鄈d0jNt@ӁMi:EtBMER/L("3_ A> endobj 2122 0 obj 840 endobj 2124 0 obj << /Length 2125 0 R /Filter /FlateDecode >> stream xSM0WqW7 DHvWU[n&8NۤN%ь̼g;L$`w"z;50_B0!w ;Nׁo|PE3ؐ1y! N#jBH' H:_ڬ, ^VMb D#^k-ohQ Pla?xkж_F$v,h0 GFb>W :#Ի mvͲ*VMbU]Ӝ A *dc;糀O# A:/ an 1غMvKWHvs0k]U5;h4A3M#Fa_#ƳmYl UoM'wLDTʏaѓk3S ԀZBcvmyZ4Ðr"*%ͺ*s\P%8cnE3JH2s&GPH|n"> endobj 2125 0 obj 540 endobj 2127 0 obj << /Length 2128 0 R /Filter /FlateDecode >> stream xUn@}+1`YjjFCE-\; o.=3«ŀYkoc870I ){sj.!lY't"͢Zšz~ kg}jEqIEKpgQ^~x~Qx߬/H`?蚷Z!m9i[>rؒ=q6lhrW_;"ݶӭ'uн :T1&?=%h(OvH{GDej£ ]& tfq$_NDe  \]ٚh q9WMmF 0IêF3wjvB7oU :D+Wk=|Eϒ<[?T/vn7eW͉y{ 6>& zMP ;Zȴ8qLM!<간:leEs HyG(׆BCxۄov^ej\J7 㑺92.IBhjo'wX7eVM.s$zE Hs6Α endstream endobj 2126 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2127 0 R >> endobj 2128 0 obj 588 endobj 2130 0 obj << /Length 2131 0 R /Filter /FlateDecode >> stream xTM0++?Z]mVMjEI꿯I In֌̼g^Xޛ q6{q Afn t{қ;I;W5:™z~ kS|&Q@fQsxY TyԤeaTղ}%b^󮆎H7mu#9<=9{kYƕw[=Z>v?i!>4(O ];ɽÀbcrW6 wJ"6*OJe#JYqp)aLtA ?@Լ:@C?;@`SBZ*zK4A;}7[Ub;><§A_^GgYYoewz([{Gu^0h>uˢٕ \!Mun*Ӣ " /6IAUa,ZbƑFi+L0(+VR 3W؟e§N\VseӪ$t aa9>7(9(|?: endstream endobj 2129 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2130 0 R >> endobj 2131 0 obj 594 endobj 2133 0 obj << /Length 2134 0 R /Filter /FlateDecode >> stream xU[o0~WV<_mVuڦAC[EBʭ`TH I9lwgb1{o68HE &܁ [g ru'jpš x~ ko}qGWfq3Z n󸨲@'E~P֑~\H;mIڑMǚvM(:JF8OSCGF7"$.ܵA;<8%/J*MvfI%eZA,'DwllN82BAkIy\ZzpiЛ`X0XPApɋN꭫@˨Kr5t~^wn,:E22$^cn(׻*Ɖ2E\VJ"]Z?($Qj]5yj|nDA?_őokSB?%a#xD8wQFU,J UsTURݧ΅MlΖswnU0)#!DSR+> endobj 2134 0 obj 587 endobj 2136 0 obj << /Length 2137 0 R /Filter /FlateDecode >> stream xTn@}+1^[Qc>$ (EQm'[ gfa_,!5 ^zAqل;Bo;Zxt/VfQ1=Lׂ|PDSX[.Z42JHBԎijH؇UNz=,.xbYi^"/{OV`s™aS dL O8N<s k7!t%Ð02]5C'ˋ*P=Qhvg,ɳUjw)~ ؔzuYkUⰏker QqV%9PeP=/WMA]a_)|&}da^oẅ́غ92.)sa٪.2Qpz@rnq8|vMZ5r endstream endobj 2135 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2136 0 R >> endobj 2137 0 obj 594 endobj 2139 0 obj << /Length 2140 0 R /Filter /FlateDecode >> stream xUo0篸vZ=}mڤM! am٘Cyh%|gVzBu;N󁸈zN ӧ,$CJX'w0|sq X98xuunڂ=?'s|Q/1*G!{*mTEaTʤ>%b\7m -vTsԎ|`\\Ӡ+K}GqܴǢ4u!E.Ul:R'BpEOn&g;_i[Pu5"'(PQ&>87ʚD]$*b #)9e$e"[fEADNd\ݢEގ:p̊c>#K^vW60t9p#;uY徤zvD1AwG]MYfbmުhn\22yö,"igc֦|i-혽> endobj 2140 0 obj 795 endobj 2142 0 obj << /Length 2143 0 R /Filter /FlateDecode >> stream xUo0~篸v/> oPbD!2Pwpq/VzȬ, N*#ߝ.Pm-=m!j|`= 5/uM4Ug17Phޭ-dFSsԅe̊%/;nX$dǔYv^>Mk1¼JOu9Ogwa*n˸w<;Y0qL~ `nn*YI=3Q"?17yؔMKQJAHܗ endstream endobj 2141 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2142 0 R >> endobj 2143 0 obj 804 endobj 2145 0 obj << /Length 2146 0 R /Filter /FlateDecode >> stream xSMo0 W0Ml}a[mQdR0ONv ȧGp(WqPBTO(PAo n-Kx& ͝~vXK&Aag`Ae8l&T*> 4C*|M[\Ԑֶpw}&/?v:"ݶV> Grޮ>Ch?#hF><Ƀi!>4TH('p=Yd#U9;׻ 7u=|]?nd R1Pb]6O=d!ֹET *6p,u=߮2AOݬmik$5J#QwHxj]Fe0\4a܋/]lv;48R'(/..O.Mn-&еuZS.B$1m"xN9ȑ&K^M[[pe/yTcLt/H endstream endobj 2144 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2145 0 R >> endobj 2146 0 obj 518 endobj 2148 0 obj << /Length 2149 0 R /Filter /FlateDecode >> stream xSQo ~Wc0UݪMڴVQJlR IiaK>wa9Fϝ`Εq)fív%o,'j;g@|oDNӵhܫNX%P-b)悄%Aa1(jx;|nSW*w8Px[ -v#?:Rr|ғX;u{'gy gq?/ )Hdgpᮽd#X ̽ޓ|۔Aݣ+7ukt=f&hM*!eфb}8QcH@Gix-T`֔ BIe}8MOz'9݋荭qJ8΅sdW߯Gk,*oISBҺb[x0xsh 8 SlKUr4N' o-M jxMB22JH嶦qrFKmh3S^ endstream endobj 2147 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2148 0 R >> endobj 2149 0 obj 534 endobj 2151 0 obj << /Length 2152 0 R /Filter /FlateDecode >> stream xSMo0 WI-YVle5C[$Fb˵ l'qڝ2ـR^waS!+K]QގaN X~yc?IEܑ'| ;LׂxP?D3gvW@B}iʩ+L鴶~ qCK6_v{8b-(:tChϯ߻F:gy 6d?/ dO"gp[;d#U9;׻ U=._ɦIm^'&J B\0}Co.%R,8#:p;pڊ0\=J)=Lm 9TDkI_ۯ#WvowEL#ƽ+m7sXSDZ+gg&OMQg` 5AQnbMr"6k:(5 G!g,LGMeAV5Ɣ',u`缡8&˝ endstream endobj 2150 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2151 0 R >> endobj 2152 0 obj 529 endobj 2154 0 obj << /Length 2155 0 R /Filter /FlateDecode >> stream xSM0WqG۽H FⰻJQkB{8m~r*N$f<3y7aAQGA0YJ3 f)T)év!o,';3 >7"{4r}~J+b  KĜ<>TSW65Ӎ /c>)-H;mۑiBmȣ{bZw$O/ b6, )r . 29;;ͷu=bS&FWӓlf"3wHHfB=W AϧaA=LJRin!R[k&}6= ?,m- sJ2T*c)Ѻ7vPP/;Vv{<@™L^"m]]]v)k `Zm?S"?h[re8a~n?ۚڶӜҙ:[l̴G9F[4 endstream endobj 2153 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2154 0 R >> endobj 2155 0 obj 535 endobj 2157 0 obj << /Length 2158 0 R /Filter /FlateDecode >> stream xSM0WqG۽H FⰻJQ8B{8mӯ]Nʼnьg=sBM؄PTs# (w H( z:tk-~&u.yx`;d<"1,y!﯈(8, 1¢Wpsw\ύ45Ӧ /#?w:"ݴF~)> ]C}{к_G ь|~Cj!`$D$(+ C#?*Sy|SAݣ+52NOc{TBJ% cZb]>aP`~ZRq _J;-5Ė0e*}*9 ?,BM??iڲݦ3 ΐRʾ_GkS/oU4n_CG)&^i}wvtvx<3BL^]^8Ɣ)n eݤ5pK Tłt[ز bxIAPR1v[(gnTgPy u`L[4x/=˓ endstream endobj 2156 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2157 0 R >> endobj 2158 0 obj 529 endobj 2160 0 obj << /Type /Action /S /GoTo /D [1997 0 R /XYZ 72.0 720.0 null] >> endobj 2161 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 248.43 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2160 0 R /H /I >> endobj 2163 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.798 709.5 541.798 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2160 0 R /H /I >> endobj 2164 0 obj << /Type /Action /S /GoTo /D [2000 0 R /XYZ 72.0 720.0 null] >> endobj 2165 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 229.27 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2164 0 R /H /I >> endobj 2166 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.934 697.5 541.934 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2164 0 R /H /I >> endobj 2167 0 obj << /Type /Action /S /GoTo /D [2003 0 R /XYZ 72.0 720.0 null] >> endobj 2168 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 255.65 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2167 0 R /H /I >> endobj 2169 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.75 685.5 541.75 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2167 0 R /H /I >> endobj 2170 0 obj << /Type /Action /S /GoTo /D [2006 0 R /XYZ 72.0 720.0 null] >> endobj 2171 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 232.6 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2170 0 R /H /I >> endobj 2172 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.909 673.5 541.909 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2170 0 R /H /I >> endobj 2173 0 obj << /Type /Action /S /GoTo /D [2009 0 R /XYZ 72.0 720.0 null] >> endobj 2174 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 258.98 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2173 0 R /H /I >> endobj 2175 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.727 661.5 541.727 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2173 0 R /H /I >> endobj 2176 0 obj << /Type /Action /S /GoTo /D [2012 0 R /XYZ 72.0 720.0 null] >> endobj 2177 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 223.71 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2176 0 R /H /I >> endobj 2178 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.972 649.5 541.972 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2176 0 R /H /I >> endobj 2179 0 obj << /Type /Action /S /GoTo /D [2015 0 R /XYZ 72.0 720.0 null] >> endobj 2180 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 250.09 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2179 0 R /H /I >> endobj 2181 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.79 637.5 541.79 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2179 0 R /H /I >> endobj 2182 0 obj << /Type /Action /S /GoTo /D [2018 0 R /XYZ 72.0 720.0 null] >> endobj 2183 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 224.83 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2182 0 R /H /I >> endobj 2184 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.963 625.5 541.963 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2182 0 R /H /I >> endobj 2185 0 obj << /Type /Action /S /GoTo /D [2021 0 R /XYZ 72.0 720.0 null] >> endobj 2186 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 251.21 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2185 0 R /H /I >> endobj 2187 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.781 613.5 541.781 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2185 0 R /H /I >> endobj 2188 0 obj << /Type /Action /S /GoTo /D [2024 0 R /XYZ 72.0 720.0 null] >> endobj 2189 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 601.5 193.427 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2188 0 R /H /I >> endobj 2190 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.044 601.5 542.044 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2188 0 R /H /I >> endobj 2191 0 obj << /Type /Action /S /GoTo /D [2027 0 R /XYZ 72.0 720.0 null] >> endobj 2192 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 258.99 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2191 0 R /H /I >> endobj 2193 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.728 589.5 541.728 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2191 0 R /H /I >> endobj 2194 0 obj << /Type /Action /S /GoTo /D [2030 0 R /XYZ 72.0 720.0 null] >> endobj 2195 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 260.66 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2194 0 R /H /I >> endobj 2196 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.715 577.5 541.715 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2194 0 R /H /I >> endobj 2197 0 obj << /Type /Action /S /GoTo /D [2033 0 R /XYZ 72.0 720.0 null] >> endobj 2198 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 259.55 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2197 0 R /H /I >> endobj 2199 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.723 565.5 541.723 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2197 0 R /H /I >> endobj 2200 0 obj << /Type /Action /S /GoTo /D [2036 0 R /XYZ 72.0 720.0 null] >> endobj 2201 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 259.55 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2200 0 R /H /I >> endobj 2202 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.723 553.5 541.723 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2200 0 R /H /I >> endobj 2203 0 obj << /Type /Action /S /GoTo /D [2039 0 R /XYZ 72.0 720.0 null] >> endobj 2204 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 260.11 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2203 0 R /H /I >> endobj 2205 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.719 541.5 541.719 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2203 0 R /H /I >> endobj 2206 0 obj << /Type /Action /S /GoTo /D [2042 0 R /XYZ 72.0 720.0 null] >> endobj 2207 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 260.11 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2206 0 R /H /I >> endobj 2208 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.719 529.5 541.719 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2206 0 R /H /I >> endobj 2209 0 obj << /Type /Action /S /GoTo /D [2045 0 R /XYZ 72.0 720.0 null] >> endobj 2210 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 262.33 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2209 0 R /H /I >> endobj 2211 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.704 517.5 541.704 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2209 0 R /H /I >> endobj 2212 0 obj << /Type /Action /S /GoTo /D [2048 0 R /XYZ 72.0 720.0 null] >> endobj 2213 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 262.33 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2212 0 R /H /I >> endobj 2214 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.704 505.5 541.704 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2212 0 R /H /I >> endobj 2215 0 obj << /Type /Action /S /GoTo /D [2051 0 R /XYZ 72.0 720.0 null] >> endobj 2216 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 234.81 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2215 0 R /H /I >> endobj 2217 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.895 493.5 541.895 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2215 0 R /H /I >> endobj 2218 0 obj << /Type /Action /S /GoTo /D [2054 0 R /XYZ 72.0 720.0 null] >> endobj 2219 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 261.19 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2218 0 R /H /I >> endobj 2220 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.712 481.5 541.712 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2218 0 R /H /I >> endobj 2221 0 obj << /Type /Action /S /GoTo /D [2057 0 R /XYZ 72.0 720.0 null] >> endobj 2222 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 238.15 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2221 0 R /H /I >> endobj 2223 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.87 469.5 541.87 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2221 0 R /H /I >> endobj 2224 0 obj << /Type /Action /S /GoTo /D [2060 0 R /XYZ 72.0 720.0 null] >> endobj 2225 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 264.53 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2224 0 R /H /I >> endobj 2226 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.686 457.5 541.686 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2224 0 R /H /I >> endobj 2227 0 obj << /Type /Action /S /GoTo /D [2063 0 R /XYZ 72.0 720.0 null] >> endobj 2228 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 220.93 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2227 0 R /H /I >> endobj 2229 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.992 445.5 541.992 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2227 0 R /H /I >> endobj 2230 0 obj << /Type /Action /S /GoTo /D [2066 0 R /XYZ 72.0 720.0 null] >> endobj 2231 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 247.31 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2230 0 R /H /I >> endobj 2232 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.807 433.5 541.807 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2230 0 R /H /I >> endobj 2233 0 obj << /Type /Action /S /GoTo /D [2069 0 R /XYZ 72.0 720.0 null] >> endobj 2234 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 224.25 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2233 0 R /H /I >> endobj 2235 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.967 421.5 541.967 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2233 0 R /H /I >> endobj 2236 0 obj << /Type /Action /S /GoTo /D [2072 0 R /XYZ 72.0 720.0 null] >> endobj 2237 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 250.63 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2236 0 R /H /I >> endobj 2238 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.785 409.5 541.785 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2236 0 R /H /I >> endobj 2239 0 obj << /Type /Action /S /GoTo /D [2075 0 R /XYZ 72.0 720.0 null] >> endobj 2240 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 235.92 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2239 0 R /H /I >> endobj 2241 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.888 397.5 541.888 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2239 0 R /H /I >> endobj 2242 0 obj << /Type /Action /S /GoTo /D [2078 0 R /XYZ 72.0 720.0 null] >> endobj 2243 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 262.3 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2242 0 R /H /I >> endobj 2244 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.703 385.5 541.703 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2242 0 R /H /I >> endobj 2245 0 obj << /Type /Action /S /GoTo /D [2081 0 R /XYZ 72.0 720.0 null] >> endobj 2246 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 222.59 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2245 0 R /H /I >> endobj 2247 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.98 373.5 541.98 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2245 0 R /H /I >> endobj 2248 0 obj << /Type /Action /S /GoTo /D [2084 0 R /XYZ 72.0 720.0 null] >> endobj 2249 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 248.97 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2248 0 R /H /I >> endobj 2250 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.795 361.5 541.795 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2248 0 R /H /I >> endobj 2251 0 obj << /Type /Action /S /GoTo /D [2087 0 R /XYZ 72.0 720.0 null] >> endobj 2252 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 229.25 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2251 0 R /H /I >> endobj 2253 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.933 349.5 541.933 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2251 0 R /H /I >> endobj 2254 0 obj << /Type /Action /S /GoTo /D [2090 0 R /XYZ 72.0 720.0 null] >> endobj 2255 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 234.26 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2254 0 R /H /I >> endobj 2256 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.897 337.5 541.897 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2254 0 R /H /I >> endobj 2257 0 obj << /Type /Action /S /GoTo /D [2093 0 R /XYZ 72.0 720.0 null] >> endobj 2258 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 260.64 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2257 0 R /H /I >> endobj 2259 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.715 325.5 541.715 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2257 0 R /H /I >> endobj 2260 0 obj << /Type /Action /S /GoTo /D [2096 0 R /XYZ 72.0 720.0 null] >> endobj 2261 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 218.71 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2260 0 R /H /I >> endobj 2262 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.005 313.5 542.005 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2260 0 R /H /I >> endobj 2263 0 obj << /Type /Action /S /GoTo /D [2099 0 R /XYZ 72.0 720.0 null] >> endobj 2264 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 235.38 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2263 0 R /H /I >> endobj 2265 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.89 301.5 541.89 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2263 0 R /H /I >> endobj 2266 0 obj << /Type /Action /S /GoTo /D [2102 0 R /XYZ 72.0 720.0 null] >> endobj 2267 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 261.76 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2266 0 R /H /I >> endobj 2268 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.706 289.5 541.706 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2266 0 R /H /I >> endobj 2269 0 obj << /Type /Action /S /GoTo /D [2105 0 R /XYZ 72.0 720.0 null] >> endobj 2270 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 239.26 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2269 0 R /H /I >> endobj 2271 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.862 277.5 541.862 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2269 0 R /H /I >> endobj 2272 0 obj << /Type /Action /S /GoTo /D [2108 0 R /XYZ 72.0 720.0 null] >> endobj 2273 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 265.64 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2272 0 R /H /I >> endobj 2274 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.682 265.5 541.682 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2272 0 R /H /I >> endobj 2275 0 obj << /Type /Action /S /GoTo /D [2111 0 R /XYZ 72.0 720.0 null] >> endobj 2276 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 225.93 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2275 0 R /H /I >> endobj 2277 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.956 253.5 541.956 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2275 0 R /H /I >> endobj 2278 0 obj << /Type /Action /S /GoTo /D [2114 0 R /XYZ 72.0 720.0 null] >> endobj 2279 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 252.31 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2278 0 R /H /I >> endobj 2280 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.772 241.5 541.772 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2278 0 R /H /I >> endobj 2281 0 obj << /Type /Action /S /GoTo /D [2117 0 R /XYZ 72.0 720.0 null] >> endobj 2282 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 229.5 244.234 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2281 0 R /H /I >> endobj 2283 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.712 229.5 541.712 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2281 0 R /H /I >> endobj 2284 0 obj << /Type /Action /S /GoTo /D [2120 0 R /XYZ 72.0 720.0 null] >> endobj 2285 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 250.11 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2284 0 R /H /I >> endobj 2286 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.788 217.5 541.788 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2284 0 R /H /I >> endobj 2287 0 obj << /Type /Action /S /GoTo /D [2123 0 R /XYZ 72.0 720.0 null] >> endobj 2288 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 249.56 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2287 0 R /H /I >> endobj 2289 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 205.5 541.792 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2287 0 R /H /I >> endobj 2290 0 obj << /Type /Action /S /GoTo /D [2126 0 R /XYZ 72.0 720.0 null] >> endobj 2291 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 253.44 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2290 0 R /H /I >> endobj 2292 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.766 193.5 541.766 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2290 0 R /H /I >> endobj 2293 0 obj << /Type /Action /S /GoTo /D [2129 0 R /XYZ 72.0 720.0 null] >> endobj 2294 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 261.77 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2293 0 R /H /I >> endobj 2295 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.707 181.5 541.707 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2293 0 R /H /I >> endobj 2296 0 obj << /Type /Action /S /GoTo /D [2132 0 R /XYZ 72.0 720.0 null] >> endobj 2297 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 269.0 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2296 0 R /H /I >> endobj 2298 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.658 169.5 541.658 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2296 0 R /H /I >> endobj 2299 0 obj << /Type /Action /S /GoTo /D [2135 0 R /XYZ 72.0 720.0 null] >> endobj 2300 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 277.33 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2299 0 R /H /I >> endobj 2301 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.598 157.5 541.598 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2299 0 R /H /I >> endobj 2302 0 obj << /Type /Action /S /GoTo /D [2138 0 R /XYZ 72.0 720.0 null] >> endobj 2303 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 262.89 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2302 0 R /H /I >> endobj 2304 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.7 145.5 541.7 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2302 0 R /H /I >> endobj 2305 0 obj << /Type /Action /S /GoTo /D [2141 0 R /XYZ 72.0 720.0 null] >> endobj 2306 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 254.55 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2305 0 R /H /I >> endobj 2307 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.757 133.5 541.757 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2305 0 R /H /I >> endobj 2308 0 obj << /Type /Action /S /GoTo /D [2144 0 R /XYZ 72.0 720.0 null] >> endobj 2309 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 251.22 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2308 0 R /H /I >> endobj 2310 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.781 121.5 541.781 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2308 0 R /H /I >> endobj 2311 0 obj << /Type /Action /S /GoTo /D [2147 0 R /XYZ 72.0 720.0 null] >> endobj 2312 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 257.88 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2311 0 R /H /I >> endobj 2313 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.732 109.5 541.732 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2311 0 R /H /I >> endobj 2314 0 obj << /Type /Action /S /GoTo /D [2150 0 R /XYZ 72.0 720.0 null] >> endobj 2315 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 256.22 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2314 0 R /H /I >> endobj 2316 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.745 97.5 541.745 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2314 0 R /H /I >> endobj 2317 0 obj << /Type /Action /S /GoTo /D [2153 0 R /XYZ 72.0 720.0 null] >> endobj 2318 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 266.21 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2317 0 R /H /I >> endobj 2319 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.678 85.5 541.678 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2317 0 R /H /I >> endobj 2320 0 obj << /Type /Action /S /GoTo /D [2156 0 R /XYZ 72.0 720.0 null] >> endobj 2321 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 264.55 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2320 0 R /H /I >> endobj 2322 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.688 73.5 541.688 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2320 0 R /H /I >> endobj 2323 0 obj << /Length 2324 0 R /Filter /FlateDecode >> stream xMW~Ջ1sW.=JR2sD5EUu[lj2+!G~kv??:}7wxZۻݿ/lo;Ofn7_?__wo4vgͧ8Vxǟ?_ޝw?߿w?7鏯~?9~E7t-???~||'Ͽ~xgdӾ~~Z|߻;_Uw?_>KۥOYW}=Ȼ??]fߴw<}C&x6C.1;;;6l"|6M␸K M %NEp% c@06cA0g!  LLLl"D`.]"8Dp)S.\ ` ;` !!!!)))+/oG{t q^~|/ )>˧^/qc?sO~Fqϲݽ?_Kݩ^R/nTOR'CE,Y.<6<6<6@````````-2 ީߖ\\p~$o?. 闧?~wK_=mѮ&_vm{=?^דReZ,kǏbY{~>IJvHMAAAAIII,Y6dɲe'A,YNd9r"EK,k?bY;ŲI-+Hj}AReeeeeee#F,Yvdr A,'YNdr0$X֖!wMCRem8$5YYYY&Y&Y&Yrv)?֋ls.>~s>?0ykHZV?|kݏNցHݨR/1NԇXrŲ@ddddddȲe#F,;Yvd9r$I,'Y.\dIJH-T],kbYE>IJHMAAAIIII,Y6dɲ A,YNd9r"%Dj$Re&Z,k= ԇX֊2222222ɲ3mF,ߏ[㇏ן~mԙ}F#/Ijk_v78$A}~I:R_;KKd9r"%Ej.RevZ,k ԇXj2222222ɲe#V}3&qH%^C&x"Dpb-;A@ b   LLLl"D`.]"8Dp)S.\ XW Zx`\kjb   LLL*|}dHZekEqQ}W+㢷3jarh˳MnICR=>_JTwԵhFFzZ4#X֢ŲHMAAAIII,Y5[G%u?nTONuR=A5YN\dre-Z,k ԻX֢Ų@}e-,,,,,,,,Y6ldɲe'A,Yd9r"EK,kьbYfZ4#X֢E3Reeeeee6>gWo s]"\cqjk5^7{]2s9.Ϸ=ewokuÇQ=uP'C:&I,Y.<6<6<6Y>)?_Rkay|QjmTkZ}$S S S SMSMSMSmL[G搇E8,oOnyZnT.S]Zۂ('$N=rR-BjmTTTTTTT6SmLj7nTS:Mu4eT"I6Ijm0TkF#M5L5L5L5M5M5M@ 7GV}En_p~6ڜ_#5|yw?~ j1GY!w݅60]^x78߯J~_<,/7'HMj7nTS:Lu4iT.S]Z)'(N#rR=j TTTTTTT6S=߯vDZ?/7'UA~T.S]H RNaPTk Z%?H RnaaaiiiiT6SM0aTNS:Mu2ErRj)TkW־BM5L5L5L5L5M5MOΗۢa`[]z\O?}~~~or_o78kKcuH_W;?y⺫Y%v_7'T|P~__6SmLj7nTS:Mu4iT.RLrR ToTow }$70004444fTvSMu0aTNSLu" $'-$'M$'m ?Hv0M5L5L5L5L5M5M5MvRϷk3.lg,]L6~w?~ˇw+jX?/y18lZ)yCyZ>(?_Rwa9jjjjjjjj3fTvS:Lu0aTNS]LujC9I:j#AuLj3nTvS:Lu4iT.S]H١TwRv(':mrRv(7000444՚UV mV=YE*~|~~:~nP1Z:&v8/##k~lu[$Y>)"ToE$'~TTTTTT6S"戇%uQ="P'C'uPM,Y.\by X޶<^byX޶<^by5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,X@-Pmbyx}mdddddddy[='?/8W^\6_?}<~/Au_4(?HၜT_6SmAFzHAuPM,Y.\bj@- _w|5hxWׇX4ՠၚ,,,,,,,_ zpw]d4Ϗl\0z)?HC6SmLj7nTS:Mu4eT.RPNuwRPNuIC6SmLj7nTS:Mu4iT.RPNuwRPNuRPnaaaiiikXw1=/SRSzhJqw՗CS[(5x oOR}=x 70000444fTvSM0aTNSLu2EzJ|'SrR}=x 'SrS S S SMSMSMSmLj3nTS:Lu4iT.S]zJ@N_wR}=x 'SR ̋'%yàY>)?_jRϗjàTTTTTTT6SmLj7nTS:Mu4eTֶ I6fHjm͠Tks M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HmPNsrRjސ ڿA&k4yK=lg|q]优=_9yWGzppwݗgK׳f<-=<6SmLj7nTS:Mu4iT.R}={x '׳;=?j●~盀u~1S<.nZݍ|7's<-TprR;prRZ!M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luj ('Ij ('I~j (70004444fTvSMu0aTNSLu"QN5Tk8D9pHTk8DkmkȠfIsk0ѶYR|~ ,O}nu^}xiS˾mhS|qJyZ>(?_Rw6SmJYk=|P>6n|7Mu2EOZNjl;NjaaaaaiiiT6SMj7aTNS:Mu2eTs#H57R͝Ts'I5R̓T y|1n㔸Rlk͖M\f%O|.yX-'ZB9BwR,j-dTk! Lj3fTvS:Lu4iT.S]HPNETk! Z Y$?HPnaaaiiiiT6SM0aTNS:Mu2ErR,j-dTk!BM5L5L5L5L5M5MVDQmeJ_kjs~ٸ)3m|qҔzx^uLS^,MiOsuu)y5<-)˻#ZkM$S S SMSMSMSMSmLj7nTS:Lu4iT.R= ZNքrR&j5 ZkB6SmLj7nTS:Mu4eT.R&j5|'ZkB9ZI֚Pnaaaiiiݷ&kg߶yq]>O_>|__VM>/6YWL7=yr&'A[(:Mu2eTeIvweIvweIvweR]YrS S S S SMSMSMSmLj7nTS:Lu4iT.S]zz2;,9,9,6SmLj7nTS:Mu4iT.R]YrR]TowWTowW ݕ%7000444zwWC7gL5[|睵hy1;_~utǹ}E4ǿ얧WDyX-_.'ʛZ('$AˉrR]N6SmJ|!g|Q˛[fyXnT.S]Z('$NˉrR]NZ(70004444fTvSMu0aTNSLu"D9.'Iv9QNITkZ3|m6^nuwubrqSWTuwy} <- nInT.S]Z('Z4D9֢!I I~j-TTTTTTTT6Smz c=[(Iy}CT.S]H QNhHTkZ('Z4D6SmLj7nTS:Mu4iT.RECj-|'Z4D9֢!RECjjjjjjj fl>vV <^ }}֪`nSg.@|Px_)zmݍfyX-_f|햧ZsIf?j('՚I~j́(70000444fT[_=s_M(˻=,y|R>wrS]Lu"՚QNMZ!IVHN5TTTTTTT6SmLj7nTS:Mu4eTtrR;trRtrS S S SMSMSMS2gmGkZ.6/C峥6zVG9?vx;7yqSfnTOR'CώbYHMAAAIII,Y)ZK/yXnT.S]Z3-IfZZ3-IfZZ3-M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HfZjʹ('՚iQN5Ӓ ՚iQnaaaaiiihZq,=ž?yUb־|mY4iz s\=vyqMj:3u3[(@Y>%?n+!O;;;;6SmJun㑼Vnf.S]H56RTc#H5vRTc'8H5RTTTTTTTT6SmMj7nTS:Mu2eTFjn;NjAyjjjjjjm_oN/nVȸ.~1d_>u o4.ZmѺnPw[(H,yZ>(_Lu"绦CNwMZ,x-?>dddddddYrz߶ȫΛsœ8_ ź.q13_; ׿ ]kSxCz.vySuIy<-׋zn^KnTkZˏ$IQNHTkLjֶ\z_|P^/%˻z/yT.S]Zˏ('Z~D9#II~j-?TTTTTTTT6SmMj7nTS:Mu2eT#IIj-?TkZˏ(7000444iʵ#&Ojn)mu3(i}4(]^uryXr.F/.=$AuzI}(Q=>IJ$5YYYYY&Y&Y&Y6ldrf>[(I-OMu2eTOjITOjݸrR[knȼnp~[(=7'9A4iT.S]HPNGTk!Z y$?HPnaaaiiiiTRm?#uߩNc:T/Au,Y.\bYKwZ#XֲŲ@}e-ّ,,,,,,,,Y6ldɲe'N,Yd9r"E,XŲ@e-ʑZ,kIbY r& $$$پm[; ڶFoC˧-jSW<eP՟붸~(?)oOyATOyXnTI|':rR{(':rS S S SMSMSMSmLj[sP(I-Os<,7iT.R{(':GT IN :LJrS S S SMSMSMSMSmLj7nTS:Lu4iT.R~(':rRC~(':GTM5L5L5L5L5M5MKS)]Z۶goEˇD̆ڥ_[yK+=6=P$I[ʏrRLj+C7'c<-T.S]Hfj$Ifj$?Hfjjjjjjjj3fTvS:Lu0aTNS]Luj('՚=PN5{Tk A5{TTTTTTTTo{5h2Zѯ;?Ũ"|6}o}| PK6{<%1ױ].;w3:INyZ>$y(':rRy(':GTM5L5L5L5L5M5M5Mj3V׋GYw㰼Y>)i.S]LujC9Y=ZgPNuVZgPnaaaiiiT6SmMj7aTNS:Mu2eTI|':rRz$?HTTTTTTTkiY_oRnKS~^x99K/=}z36ʧbuJZs߶Eu%y-7Y>)%Ouأa9rTTTTTT6Sh|Q^=J,a:QT.S]HPNDTk ZM$?HPnaaaiiiiT6SM0aTNS:Mu2E܄rR&j-7TkrM5L5L5L5L5M5M֏|okx^>m3/. g z?#FDm<6-Gn7n|7's<-7eT.R9Zs*wR9Zs*ITjjjjjjj3fTǚ=T/AuzJ=v!ܨr"EK,k0%XX ],k(%XH C,k %5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,XIjbY3'Ų&NPbY&2222222ɲVV!CJ]MwםOSyRo=Ŷ_(<,/o{E!o2eTc#H56RTc'I5vRT 8L5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujnFj;AyjbٶGǶ~u] s~y9n?|O?|?~uKW]מ:332i|F<,/kQ ZZ$IPNrRE-jjjjjjj3fTvSMu0aTNSLu"ZB9*wRu.jt ZB6SmLj7nTS:Mu4eT"IPNrR0Za(7000044m۷dqǶ~ab]0wm̗?5~?bXm>uul֘]MR꠺SKnTOwJ۠jI& $$$F,Y6dɲ A,'YNd9r"%iby<^by@-9!)ddddddddȲe#N,;Yd9r$I,Y.\byv@-Qbyt@-1!!dddddddYÍ~dm1ZW|Rn&#mۺnoӇ^v?gyFݏ+n_Y>% ?TkZ~$?H6PnaaaiiiiT6SM0aTNS:Mu2ErR ?jmTkÏֆM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujmTkÏ;ֆI6PNrS S S SMSMSMSXμL/n3uǼ.F^XW_~?u&lnvd^<˾|z=YOclv_<~4+#:_t^\w5z|I^ʛ}<-ZM5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luj('=Hj('=H~j(70004444fTvSMu0aTNSLu"=PN5zTk@9ATk@N8olۤb|Tڗ'e/>ޝĺC>i}m\+G}~X-_ ɛ/>iZ֗ >z!?_1[ok+/1/ޏ_5Ga0Xb?A>uC˫> k%ay|Q~>WP,jIQw[EC,T.S]HVPN@Tk%Z+('Z @6SmLj7nTS:Mu4iT.Rj|'Z @9JRjjjjjjm˭6}?; b0>_!hΧ>ɨY {c~8ݶyuܡ11<-[(s%'H~j A(70000444fTcYz]ǘCTwu9ԍ)u_uRM,Y.\bYSŲfPbYŲReM;& $$$F,Y6dɲ A,'YNd9r"%5ԐZ,k.5АZ,k!5̐,,,,,,,k1Zmuc}>-XO<7xgcZGucfIkAyX-_ZSIjM=$S S S SMSMSMSmLj7nTS:Lu4iT.S]ZCI ZIF!j C(7000444fT6SM0aTNS:Mu2E5%TkN"N5)TkV"A5-TTTTTTTo7<{>>MMmmbS}6 wlOslٟؤrG)Q$O M[NAAaaaaiiiiTR۶'YnyZ>(ay|Q>˛妺Lu"H56RTc#I5vRT 8H5S S S S SMSMSMSmLj7nTS:Lu4iT.S]Fj;Nyjaaaaiii5Fۄ~u]bq}/AemDG:#=l%yf|<-':%rRSB)7000444fT[k?/ay|R>vA,Mu2eTPIN |':%rRSB%?HN TTTTTTTT6SmMj7aTS:Mu2eTPIN TPIN :%rS S S S SMSMSs9^  n̵~6!f\ 6sB_/7ZQ T_<;]ay|Q^%oOi6SmJum^S֯}<,/ay|R>wrS]Lu"A9wRjmTkLj3fTvS:Lu4iT.S]HPNCTkZ?$?HPnaaaiii5L8uty~۶3/ ?߾hmtD)/ iXk?jC|P~>]PwZ;4$S S SMSMSMSMSmLȫi|lE<,o2eTϟTkZ;4('ڡ!ACrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z;4('ڡ!NCrRjРTTTTTTTk_Xsb |~s endstream endobj 2162 0 obj [ 2161 0 R 2163 0 R 2165 0 R 2166 0 R 2168 0 R 2169 0 R 2171 0 R 2172 0 R 2174 0 R 2175 0 R 2177 0 R 2178 0 R 2180 0 R 2181 0 R 2183 0 R 2184 0 R 2186 0 R 2187 0 R 2189 0 R 2190 0 R 2192 0 R 2193 0 R 2195 0 R 2196 0 R 2198 0 R 2199 0 R 2201 0 R 2202 0 R 2204 0 R 2205 0 R 2207 0 R 2208 0 R 2210 0 R 2211 0 R 2213 0 R 2214 0 R 2216 0 R 2217 0 R 2219 0 R 2220 0 R 2222 0 R 2223 0 R 2225 0 R 2226 0 R 2228 0 R 2229 0 R 2231 0 R 2232 0 R 2234 0 R 2235 0 R 2237 0 R 2238 0 R 2240 0 R 2241 0 R 2243 0 R 2244 0 R 2246 0 R 2247 0 R 2249 0 R 2250 0 R 2252 0 R 2253 0 R 2255 0 R 2256 0 R 2258 0 R 2259 0 R 2261 0 R 2262 0 R 2264 0 R 2265 0 R 2267 0 R 2268 0 R 2270 0 R 2271 0 R 2273 0 R 2274 0 R 2276 0 R 2277 0 R 2279 0 R 2280 0 R 2282 0 R 2283 0 R 2285 0 R 2286 0 R 2288 0 R 2289 0 R 2291 0 R 2292 0 R 2294 0 R 2295 0 R 2297 0 R 2298 0 R 2300 0 R 2301 0 R 2303 0 R 2304 0 R 2306 0 R 2307 0 R 2309 0 R 2310 0 R 2312 0 R 2313 0 R 2315 0 R 2316 0 R 2318 0 R 2319 0 R 2321 0 R 2322 0 R ] endobj 2159 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 2162 0 R /Contents 2323 0 R >> endobj 2324 0 obj 15623 endobj 2326 0 obj << /Length 2327 0 R /Filter /FlateDecode >> stream xVKs@+yl6lU6!,T0 pS SVj0=UrꌁAXՑiJ6an5pїPxG#6(\OϨE7+G}#OOaa{K/ܥKbT}pp48L_DI Aq 㻷K0xݗJ"e9lR|OaJiC};- }':RUEG<mO 2d8{M!>9kGTk>8%6{^~4KY)L 5ϖH$' J~jkfر1}>|K6q8o~6vFU/wИkYʃ]M{yTv[XwQ7ݾ، ")Go 8666AiQAH`?WBx `rd0̃߬ Ws?J:2H^ɋl3+ _N0DQV $@n]04/|Ezu4Hfn{C4'p* Vmy^Vbwe"|ldi[-rgZZ &h 7|8K;Yy\ӾWL!\~eJĭT;q]=-:X%S8 nZB}N@ƃuqф46З&dK z ^.o/ax3>P@e endstream endobj 2325 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2326 0 R >> endobj 2327 0 obj 778 endobj 2329 0 obj << /Length 2330 0 R /Filter /FlateDecode >> stream xVMs0+VPUܒθtiqƃpc  a1=ghz_5 V{mL0p&$rU ;P vu\{K}s| k>LM`"nKP&:w䇃(m2Rp˫gph]:Ac͡RWO'ӠN;PWs8+i׌25^A2hWi)2Qb4n Y;+n)xػpI]ol^_6^[O8)Ɓ6pSʐh#fr=~9*-!Jo!6L0*-*"dKF鬗eY2'94ˋ͂3 Uа1\ubPCW{*laX6E`?AY~Zbh} e ]ˌ;XL0򪤄_,ge9=bugqސ)]Pl*ke}r؄c8jOa\c9vgNszpOr߄`y9sp KR,1BEkFq0,;*]) LȻ[} v xG!-Y4ȸ_(¢w*FE(]ULuB+mMEH$[yI8RƜ[#-$|b> endobj 2330 0 obj 777 endobj 2332 0 obj << /Length 2333 0 R /Filter /FlateDecode >> stream xVKo@+ lnIDn&Q{H"11Ƙږ}X`@^?,_0 L>4}c𝅏/H 73n@A*;),+p=F)⒘/l"/ f߾4-,]aq sK0t=T*!U9~,R`c"Nj(5\VԯyDjS?O{?tkXڑQb4 Y;*nX8]MxE.AMz{z.nZ@N  u֏IF:QfO[}ɘ|ʴ-]A0-<$d:Z/Xc4u6fi6j JeJܮ2.w#p2lAIT>wP֐:1G(2(^BȋM/^EqYq.֣T҂5/7!"ǧ 2)>E!&LjOao⵾sN$gNv] sš>[2,_Lw$3mk!(,+,3:[3Lhlaё_$a͡U0ap{RCZ&hq(nydRURL~ Nf\$&0RḠl\ʁN93q2MG.+ϜKg6G{~vC endstream endobj 2331 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2332 0 R >> endobj 2333 0 obj 759 endobj 2335 0 obj << /Length 2336 0 R /Filter /FlateDecode >> stream xVKs0+VU%Mqg&6cH@7e)ŞJە`@w.nwK $܂ d rWC{  c*@͠mwxhė)<W(&*\"'Gӻ{qVl*R'7Q^CN6ǿC),ku@pEŖ~QQGyCq|jp!=j z ɬR8x؛9V=wK(/EtqdArYEV*bLLN823m,Xijvfƹ6 [M+"ϐ*JxKRH0+(-)*uVB2]$º۶-rv{eMB> endobj 2336 0 obj 790 endobj 2338 0 obj << /Length 2339 0 R /Filter /FlateDecode >> stream xVKo0 W0MzkmȀbll$;KY8SMg!/`:vY۰FavpћPx?FfPn<<1 : W;ύ^~e“q_(xIW"nGPq%&d~wfYo7~x~Q#x?/P'HmCKoZ}Z[MUѢ׳ǵ8 S Ir(4-T9T1vVP.I Z8GB(a$TP*b\L8w <xGmK,84ui\۴PwXsΉN~Kv_r1!-Yr)~YeBQ]6Al8MD=QgZQ:u8d.&덟􎋘Z IK Ya[Q]w&ʛ/QMg_{ Vv endstream endobj 2337 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2338 0 R >> endobj 2339 0 obj 763 endobj 2341 0 obj << /Length 2342 0 R /Filter /FlateDecode >> stream xVKs0+VU@(M;L$!xCbp2 LNI~JEFFS`n#r\ 6;RVƄfrFrVfaa=QmܐH Ef,I8GkK0Tc"!W#|Z$]V-6`L> >)3~>2NȏUW $cd,4)hV!H˾޹z}Za2]B@‘F︷@1T83YFLˎ1ۉş̤l|soj;zgrj endstream endobj 2340 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2341 0 R >> endobj 2342 0 obj 788 endobj 2344 0 obj << /Length 2345 0 R /Filter /FlateDecode >> stream xVKs0WU/?[I 2 v tﻲ Ȁ=9]$^zymd |kDL ˚  ' ?GT΁_έ_kǧ\.0 aOp0\QeTeEa*_0l^5H]m?%o)\Iv( %&V-5b;y= jhǧn _2JVS;vTH{Gns­> hE\\deQ~̒-) iHN82)0}+E-0--UvgwLx(u)JT ?}I޻!hbamW+j+)+ 2)-Afe[ZӢ%+\|~N0}-D dn2> endobj 2345 0 obj 777 endobj 2347 0 obj << /Length 2348 0 R /Filter /FlateDecode >> stream xVKs0+VU@(q;q4 cd+!17 X~Ճ ˍTp ̮U DԂ ԲkN$G3w4wUgM+wϏt, h_"j"cqA n~4\MaDi8M",b^7Hm*U-?0X&>ơUBuRs+Ӻ_@ ,]W FP0vHÀbaos\*wV/.lh&$}IyZfS"JD"g БSʻ~N|NI ^q\e/q^ėd*S̩#NEdmVMҬ06uSOe'!Si1[o&L}َ)3QmJ^>g %!,Um F@gQ٢X'amҸ^)|,X-mI޲p "LYL eg6?5۔RdR9W9s9YK;mے倛|a6x- ܂XHFdYN"˗le`,t*|;f8Eҹ@T3 yEX0zq1Ч%h-LPS fɓaqC4c* 'L |>mcyälH[ CܦE;B/Ɠdڽnezcn_ endstream endobj 2346 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2347 0 R >> endobj 2348 0 obj 793 endobj 2350 0 obj << /Length 2351 0 R /Filter /FlateDecode >> stream xVMs0+VU_ ȭiN:6I{3!al1&{FҮvb@wqZ@qN-`pPmX] p0p ԢzxD(豻xb[񵆾{| O֥o}jqIEK_h8۬2RʳG[W/50TDjs+R@aKziC#KPbbkժ_= fjӠm[CiCF{“ Y;))QxۜpB.jB& $_'!-mTaّ3A)C4Nxilm02\8C9ۦ%1̠J`ܝU ]͎UvGCէ5"i{=Iٜs"9p\P#TeEFiLsR9*\1dOf'+Li n c"oyu89 %.:3v^NŐ ;A1> endobj 2351 0 obj 776 endobj 2353 0 obj << /Length 2354 0 R /Filter /FlateDecode >> stream xVKo@W̭>ܒ&Bll l6 [9ݙ1Pު#9Sc8݈,I)4k Vꔶ>CxFfPf2 z2#-Oaa> endobj 2354 0 obj 797 endobj 2356 0 obj << /Length 2357 0 R /Filter /FlateDecode >> stream xVMs0+VUPnIvILC-|v+Sj{FVJ R\PXk=GS`v=e@LD--AExFb`j<>) kn2xnܷ;>g5>~`pcl1*d}v$HWi岸xqb]%RHT8*ajf8[jNTWʬT|*N][@sL؃ U;Ha@1갷5\M mS_^]YAzy솱Lwut1QtƳ@ &8WtxOSK Јh5n~ϴd(ŤS mR4&T(&¦N4(y PLLdU_^ =&&Gc U'Ai6Io E okm/Vr Z.*Z@lA7(, KL^lw& E7MP[ ´U2_mLcMM)E&%[r d$VYKYq?1+uT+A!qXh*pncU 8; ʋ^j+{HbY.7r?\w4e\mKЛNL_eIL$]lüϬJzs=GEpP GXbXb"_w:2)u>Φ7=5NܽvK|p{=폟(_?s_ endstream endobj 2355 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2356 0 R >> endobj 2357 0 obj 771 endobj 2359 0 obj << /Length 2360 0 R /Filter /FlateDecode >> stream xVKs0WU/,+$4LkBa&شwe9I+~PAiR(/Em$ s(m)g73!a8m CB }߄B~,ڪ#$ZZ> endobj 2360 0 obj 776 endobj 2362 0 obj << /Length 2363 0 R /Filter /FlateDecode >> stream xVr0}W[CT%i4M{ "6i+ˀ S XZiw9yrPpSmcqnm$}X@=\|3‡لGdO=.&@١*sk+SxpC>0 t'.7rlQѲP=˰K0xV*"U9> endobj 2363 0 obj 798 endobj 2365 0 obj << /Length 2366 0 R /Filter /FlateDecode >> stream xVMs0+VP@(ǴIǝ|4L` c mܜR3H{oW$Ճqznm&ą9c2H>"9x;+|3$7Zh;\yd}x~I`}9s#Dı=ߦ`5 X*-rE)~XA?i04DjcvSuPcھ6 Iέ\Y[棟<І2YtCS1NSP{U)ʽC nrK4r%XSq|ygND~"IVybL{b}y:[YAT;믋Ib)eUPLLGJB-w}SqM2] PBl`Uʑ2_"f2 ذH͘]]) l 3V#}Z$ͤUvRQn%sDTU:{ND#[A;6 ^f[w5u.²JŶ4bÐ}}bӝ}̊iF!;{S¸#1N- $PbxGnF;{"O·hu4//y endstream endobj 2364 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2365 0 R >> endobj 2366 0 obj 796 endobj 2368 0 obj << /Length 2369 0 R /Filter /FlateDecode >> stream xVKs0WPWWIҒ1!$ nʿ2 MK %vow%Q }+eS#`30FdZ@LH+e¶3NỖi>jw g7Ok%АWOAwL>EMG7+> /1 EN23Ug}Ү/Pgu[ Fi|/R[~(ȩ#^dO,[)ѝVSpBzvTH{Ft MmFChyg4xz3^GEQCw3Q^$nهv.*+!_@;c ~U[Hs?=H ۲,9,_Ak;k1Gn;S(3tNj!}j_pr[66H)_겯@<? Ph A-*)WmӳӨ, J<~uKQ"3Jg/ȫJ"X+qjoƘ%6PPk;x:+?XF*A511mt`(^ԶNmUDžX l^TYPxL|$2ا\ "jm+(:KxtYIĊ . :s?Q 1 OyRLSEe!W5EGƹuכ㛫 ~^k=y endstream endobj 2367 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2368 0 R >> endobj 2369 0 obj 793 endobj 2371 0 obj << /Length 2372 0 R /Filter /FlateDecode >> stream xV]o0}Wܷlc0)*B%H]cО$aa@U?d!Y9o!&`Rj|k,B~;C3ǡj{箅gSxq#h ėTCqt}u lWqDqQ _ee?身9BlsIR|otUv|7Zf G Z6k1Aw2h[~}|*xiH( BP[DjlNfok¥CwT:=bNYRPYid @p™K)C:û:3a!DL8]9& 1!G4{|1y6n:AT"Lm #1 e>S!h]"'\C(LH" %DT.z[_iV5T9T jI:^0U:~N5<ᇝ}bw-V*g3l%:Hp2yYV`b^zF*uZ|9DpFIXW̾#9f @ϗCr1|Ղ5CڢXD7YR_x]ms(f y>zոmD,(n^Te{eTщvED/wll7Y22K:PRp}#@7%1M}jG:ej|nߟ. 8Y endstream endobj 2370 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2371 0 R >> endobj 2372 0 obj 771 endobj 2374 0 obj << /Length 2375 0 R /Filter /FlateDecode >> stream xVKo@+V/^%iRjDA!"b֭;b 6МR3;3|3բ@{^ ^[ǀq 9Zv`wa6"zxD:a޺k <[J L1a|@kxiu<0*JN!f]8e CUHm?ϮZ18t-qh{mjLnmZM=9XٗAUtC)PY;jÁޮ z py]PL:JutU:{>f3 aiKmΑQ83ƼCo.m D&5Bfh(x;=ƫ/,/ʴ!"!"viܔqG -8?V61qn*61[0J)sIj+**- _Za6oxЃ\ASҧek+$UuNY\ 9:pP1ɤZʷng$݂2M~,\,C" MJ6`eZfd{SyϣU O^ ]76|,Fb6uވ/ѧ}7ӋF{xr.opy^܆[F﬿0g endstream endobj 2373 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2374 0 R >> endobj 2375 0 obj 780 endobj 2377 0 obj << /Length 2378 0 R /Filter /FlateDecode >> stream xVr0wdQU/^5iIgɃ$ 'm Fn&+1ƆvbHt9>_?Ҭ19Yr=`p]XS pp ܡ͹(:6u;f;>'4r>}uQfqI<'CWpϊ2YCǏ}wΣ]P :;;rh׷5kb֢_3Z"vjqPʠ]åCFISx%`zpJ|l&r5n?yc-xVYvv8:O\_^p{z퇉ŝ۠1Gr1;HT=ٻPLXï-ǧE10Joƥ<)ΰ ^pXh_ɇ ./N!:899>n:~7];wDy endstream endobj 2376 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2377 0 R >> endobj 2378 0 obj 751 endobj 2380 0 obj << /Length 2381 0 R /Filter /FlateDecode >> stream xVMs0+VPUC5Igib=`9al1 Sj{FJb@Qozv)&w` F``6 Ԣzx%Ptk~yfu }w| OU`}qA\>&?&]emX&Y Ax5 tٌ]wJHUm?T%?Zp=^C3V6u1cAA*][ӎ) Y;)n)w5V'%] wY./8&e+l<3Rtƣ 83#B >4̜s9uOK(4d+LhcKu] >iI]./}4(z qqE&̯pW 2B3Rz S,{n%ivPfUΊr*_$}0.t+{q|?Zf)KźHp>YUߔ`b] y>a^@}QEKr}4(u |]<>Vi\6H`F9C&%V{XGT뎹6Iјd)p,;"W4^t}'ǀɡ8gH0zTc{|,iܬR%, Utwn]h[P O6̝1Rژ6YnǑ0)w3rsT9!1}HeK:kLGC檱 |^LglzYW1 endstream endobj 2379 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2380 0 R >> endobj 2381 0 obj 765 endobj 2383 0 obj << /Length 2384 0 R /Filter /FlateDecode >> stream xVKs0WU/rLfL2i!#lɿ2 vsJiW]I: (~/ר\$܅54sVz5fN^ී9g\E?=vWG+^¹]`!E\ϧ@@C' yYUgEg~8Q`?z1Djs.ykb^ѡK~hcN@,[׆ Y;)#Sa9V!h|XS2FjQgr"p&(e{;&<"Ј@zs>ɷYqi4[R-*v&( XZt樿gyQ{$ctq_TïxU4*>>6*/4e&yҩJ qx߼qM( C6]L8<ޮ*0[9 "C*MZK9DrFk\'"aPRUN 0}l"\P.wz,ii tmn!Z,_S*'BH0<?Yb`8r!ӏ`R1ױQ&&Xqқ_K&Íth,Uٹ@i%4NU>W45~,8^m@nS> endobj 2384 0 obj 779 endobj 2386 0 obj << /Length 2387 0 R /Filter /FlateDecode >> stream xVKs0+PU/^9&}L:aHc cC{J13Z$Cŀ\C^9.SLn ZنL |+`6 ?ܢź(*\qA$"1#6>2Ǔb4Jr4MαeZC]MTCUDKX(0U E>vr_FP1lE:$VIj0[1{ "}꣪uZ{9DrFUIj}6ao8C&%xzQqT;iՉIaH{p{dG%7$pxibV007~K:F|\&G!V;'N/'`5C70TxH7.;L9sԱ&P+@!yW97s߃Y0vGs)Z B_ endstream endobj 2385 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2386 0 R >> endobj 2387 0 obj 748 endobj 2389 0 obj << /Length 2390 0 R /Filter /FlateDecode >> stream xVMs0+PUAIL:&d<d vBc 3Eվ, }zH[O9.0AkeVZ%𽄃QB~ZEzz(hwxb=),F!Bq%Տ&6guX&Y A<u+ *_I-8ʡ?Vm33Ʒ^ZGĈy fq\|46dxGE!,wI" 愪'}w&o(|Ea(Ex 8̦!l2aZ>s.zN\e۴UA8I!'k{Ķf=$:1j]EҐ{}{ƨ[m"(@ŏpUWy I\OĤWFY>Ove3aX:YvUQŀqTR,GQYR9fPdq괆QP{zEfϪ6Iξr"apR p|#85pԘ@Sr6i<)q0--e|FՍ%p:xCb{@nӥ %ۈ4Pn罐y Bm9m0bF!IZ\YTJ< g￝c؏m`/*}e}|(RsS߃dߥ h8=i endstream endobj 2388 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2389 0 R >> endobj 2390 0 obj 744 endobj 2392 0 obj << /Length 2393 0 R /Filter /FlateDecode >> stream xVKs0WU/VnMvL20!dcDlt+Y`9V} ^X˓Zx(Uuaڜ t/=\|0;5|?ós9qp`,) 1*Cafxl7A%1L4SL~9דF\}6_%ol7wjPYXl.W-+x3|ףhǧwg F~)8;vRH]ÀbaǤzZ)u2tEhFAEo.Uqfl SD Øh>pOeM9aqgJwlUs_­,!, W5iF2-,W{YTAAr$=_JA}kԝ>lBά`S>&CRz3 $h;f@ O` X,&ɩtP` %ӳ~VBd^V'$*K.Y݅yQF3!sM5?W#w(5ߔR)DS9s LSEMڢ;D0\7LpVN'}5(-ZA5oa1YL aI1n ;'3 ?[j`Q.;z],Ό94*2%%[-M8lŭ\ߍoKw#g endstream endobj 2391 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2392 0 R >> endobj 2393 0 obj 773 endobj 2395 0 obj << /Length 2396 0 R /Filter /FlateDecode >> stream xVMs0WUܚ4ͤ3$B1F`;ȴߕe@)f,]ɼ9 (~#8+筱18~c|`pVЌ=X]րoG0p ܡp<(:uays;_x(ij} ~@'< gzTYCJVg/t.P O;ZƆM!bFyv{VOn@;2JVSu6'g{NIք[4Fn#\yqQ*'Y\ \'#BpRʐN0av i|q:}pUl W kʔ҇A(9_ɼqu xAjkT.щLDDAE>Sg wWkJCFch&"I-:_Y^5TEAU7iH0Y>$-^GhDB2"d(ETΒͲFgkRy_sΉRoi19s[|P&BVNԲdnM9G?A-&YZ&l noqZg<_bLUa܎ s26|.M.хuŁS*%ehr cːiߩwƝ/I m±M@P E]BX4F%j/V~w{y"?> endobj 2396 0 obj 787 endobj 2398 0 obj << /Length 2399 0 R /Filter /FlateDecode >> stream xR;O0+nl,#PZmbqh0ҽ|;o ĈhaYmcq|(-G?Vrx#5Ax uŽq.̜&N1/t{D[ 88ޮg}c{P3K;U-+Łx#MB`IvxIdHc>5g8^@DpaNizx}w`!pFy!bZLyQRxM-JxiR-$">ÑCY.,ՒhaQVE8dF זEAVSɿ*YFKU|-u1ViQUVdY]Q'TxDx<MB% endstream endobj 2397 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2398 0 R >> endobj 2399 0 obj 384 endobj 2401 0 obj << /Length 2402 0 R /Filter /FlateDecode >> stream xVn0+1CR{n-m/ "$TȔCYC-e9yrr0Y%9d;19A`>젳}(ͭ{ 9qCܹ5P xt<]|\)lsF! .1cpHvp}[()JPU&t_ }| /{2A2P]6=40Ysd$MAmnz6Қ-v}`1:>M $HcU|2k/ij[<.pJB|ǘjNw9L<; }WV:}r-Z xxpRʰ@Ȇ'◉n8[p.4\) PVRBY) zHk&e3pA¶ճuQ$8xԵ *Jnoa. %e6,t$8Q8MLdj" tJ "\sku[*3|?$/j8ؓ]1°ك9ȺzJƅtbNQ^Cft yЦ˦}V)%}%׵d{5ِ骵͐04 A{g[YCLN,k(EZd5©T/3z:qM ZWf[ɾRb %f[ƃD\N8]l:UY8ʓq6xH%s瘶PS&7 zd@j endstream endobj 2400 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2401 0 R >> endobj 2402 0 obj 783 endobj 2404 0 obj << /Length 2405 0 R /Filter /FlateDecode >> stream xTKo0 We˹m؀am (XveE$˱4vʔH~$?S@]qBaYO@LEG@BD9vk$нd/d-*5xx` x q|܌; z~ c`HCC4F hwO].e]CU4GHVꦭΚoځx-eMȼj|ngun_=xp;bH0+zvܵ7t{> (F9Y*ݾкQKj>++kWfyYK( 1\ >J%@1m1_Jm JKc^gmrga;.QO줣(r=}ܻWUVu^ɉ$IQUc!yms,0BLu>MSHeK > endobj 2405 0 obj 573 endobj 2407 0 obj << /Length 2408 0 R /Filter /FlateDecode >> stream xUMo@W1Hv?].UKX!" X&Q}gkc=yfsĀ-0F `R10I-;v?5 a&.w)/iF!]Z$⅍Dp.~2Us[Uv'Gm̚7!JcOO `m oC\0z ~,zA, #q}$ YsNjw|pJ|hFw-Ί|:gO(],G"5HN82Ds1 ,],1U40@] V,l5ev2<ט UI|⻷UYՆ&0hcb?\m0;&Bjya@# !$&蒱tmK6|Z&GQf;K2h*[SDJ[pumqv*{@)2z^zir꺇BA|mZ0Olh> endobj 2408 0 obj 647 endobj 2410 0 obj << /Length 2411 0 R /Filter /FlateDecode >> stream xT[k0~ׯ8-lnmДjbHdr;έ{ʔ/{\lE^ ӨJRVk WpBawad2-ɧ|gP> endobj 2411 0 obj 511 endobj 2413 0 obj << /Length 2414 0 R /Filter /FlateDecode >> stream xUr0{LfRU4d´$ӡ\3 4BŞj{OwvdCw(&` Aa[8ИÏ (|qq ^ nvCQHgpEAreϾDi29k)ݪ*d?Turhh_v÷"AW70t>8lTt׍3]=nThQ2Q* .!]Y=,2!I$vIj\ӃXT:p ꧭɼljjH(K$=DT a]%Xkn9QFj]6Ȏm83Cɫ(Ily%\ksH8pַwde|cn *:(fyXޜU> endobj 2414 0 obj 673 endobj 2416 0 obj << /Length 2417 0 R /Filter /FlateDecode >> stream xVKo@+v_<6JT5Q1yβ1&%u"12<%Tkacr$>ak^Chyx7xxa꽿Q(pEDEDpe>k9L`'0}TWM fC |tCyckt;6bM^;E7-~\ dD{,8*7f`vG$Wń4z[@EŠg8HN82h8&$ Q 3~ 뢆:^c`2^#z> endobj 2417 0 obj 843 endobj 2419 0 obj << /Length 2420 0 R /Filter /FlateDecode >> stream xUMo0 Wb۲z>:`u C[ l9$'M.G]Ā{Iš~ ~+Iń'PCNr|W[‡"`ѡ9>N)Do&1EB(>aRO]WmaZ\c~J0X< _kI|7na;;HX>ὗ}AYlYt@FI!ɽxm^)MwJES*@uGr bN82 iKL 0NdrMwsk`jc`876TK ѳߦeYP1Q2S*Ysϸ 1x`{^;vbI,VJ:<1 t ) X=զ˻1LA[kdq='ˋR5paz|T[q!tZ068J=ؤ;젚ƽU<&0氮]q[ F\c+m4\]RPIfy96ҹ\EXj ®"EBo:V<6f*yۘN?tcc)9Us=Yz=R9n]~Uix}CiEVNlڒ S ñ3N-gK$1IuӣD̾O qU歾vstNl~$;voim endstream endobj 2418 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2419 0 R >> endobj 2420 0 obj 784 endobj 2422 0 obj << /Length 2423 0 R /Filter /FlateDecode >> stream xTKo0 W-mFwzpGjH_?+i9D&?~|)`@JsXSc8W0Ixr{k&AÿB?2%G(:ls gBc1 >\($DB)>X!)웩KZ$]7=kpV]t 1Zf0'm(5ۙ{ϣWmr6ݔGV=?f:O[rvo\5pܖ&Oݙؤmx @f߽l3 endstream endobj 2421 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2422 0 R >> endobj 2423 0 obj 640 endobj 2425 0 obj << /Length 2426 0 R /Filter /FlateDecode >> stream xVK6W̭@s˳h{b ڦDɒm 䰵 o!W#Vy1970Ix9vd>&(|]& }q~ 4cBS$U/S&Ou6Mn@g!=Q%Tu1t2ZsŤ+B(ʤ oCnz^.ꠣ :Uq/Jq d$'-!ZlE![TnUu2_?UIm2EΤE& 9LP0k>;9B&q^eObJcM(j(6TU8Q*-F̸ r\;[g̑Y/IHb,}ryZ oǸ+ `elx`"u湲\ un@7Lĩ a3H㐄JXmYú+ffcڬ3iPgbq{(?[< KgBc(]DZ'T㻲p滻v("S w{ q;+]:dxktEbmY,fBdԹ-:~5f!T݁m,MCXטlK/IW|x7ͺU  cu6]FdDftgq`'㡱F˶.qgOad4/a2ߖYV٠Wn} |$V7s}')r1>~SX9hQ+kqx_?D endstream endobj 2424 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2425 0 R >> endobj 2426 0 obj 830 endobj 2428 0 obj << /Length 2429 0 R /Filter /FlateDecode >> stream xSn0 +x\$J6X;t=KlvGYNbIS@|| "V쩷I0*MQ Rs`=5FGxD_LvwO9 X3 {,U>\G ) Q Wh7Wn rҬj\{qW9RIWCG5n#G3־v*kO?C!(!,8+qa(OF( ]{3H7CNԐ]|p r޴Yk@St9J%Rgb(i"E} {'Ч`Ab[CZyIǞfDZgoBkQVM [ͭI1 AHBlSm8{sSL̥mCDzhəRi\"4ƭ0]ֺ OHa75:ڼ,N)N'qv 䫕TA6:yр{qg9aR( endstream endobj 2427 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2428 0 R >> endobj 2429 0 obj 527 endobj 2431 0 obj << /Length 2432 0 R /Filter /FlateDecode >> stream xRMO0 W#NڮG Maڡl_[)[ul=~~vLcM8Xlc7`sD(쭁###z3㶡to]#uzSe9 /GNذ>8;& ⑜O".^"~eNiz> endobj 2432 0 obj 346 endobj 2434 0 obj << /Length 2435 0 R /Filter /FlateDecode >> stream xSMo@ﯘcrvHA!"dc!U}gYyof80H;ٳ`$pp!e{ wkb ?Rp H O;wx}}ٗxwlQLjrQe-xҜ{]]6>Pv7')PNtIChag-&vCnMdm(=S*dzc&B\Ur~3U#"%<Qѳ3N5uɳ(~哝_Od endstream endobj 2433 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2434 0 R >> endobj 2435 0 obj 472 endobj 2437 0 obj << /Length 2438 0 R /Filter /FlateDecode >> stream xSn0 +xl(ɖ6`;Ea$cпe:- HGz aՎ#Ak1`c!_-:%29?Rp H ;z}}M1ts(FGYH$ܕ*H6n!ɾ6JfзXgx?I p-U'jpF"<1V\0('UWV }#_|̉rZDTvEwOmܺʛrF(Hr)nM!+"˭S,Rs@~ݡq-ta7 d!zo(O_&^BZ{Y˿-WA$j 3U`QծxV]n?EG(KS7Vf!tYkhQz8E3 Xmx^Ѷ,~հ? ,g endstream endobj 2436 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2437 0 R >> endobj 2438 0 obj 475 endobj 2440 0 obj << /Length 2441 0 R /Filter /FlateDecode >> stream xTKo0 Wmٹm6`vh uר%cȿe)nY@)ʆp`dj>J+TPC쭑!vo40LCq!Gmݼ?|M!p Qh$b*5QDzhHo鄍?Ì= FFKCC|qmSLǝy 6f1݊6&rF*"7Vd'>W:Ƙ}mfR/tY,^6{W]AqDs*\$TTyB'Wn(@v/Ԑ]7ڂmEbi셦5;"bTɅKEKm~RR3pD!H(~̪)RƜߨ i8.+a!3P(D* yA2Uk Xh¦ϻ-"G%U ' A7}wɵ9'&&A endstream endobj 2439 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2440 0 R >> endobj 2441 0 obj 525 endobj 2443 0 obj << /Length 2444 0 R /Filter /FlateDecode >> stream xSMo0W̱=wlskݕzimUHR ]߱M䣽ay @zX 5{}{WAD\ưގtFYCdV1_6_)/t>G^>BnSg !]%keQ3It WJHMwOޱ鄍 =Xgod#p3*jZ |zit*.Z@('Qd|v.Q#]큏sUOhݪf6{^Y>]8P%J \ () "2\hWYRÀwۦj{́ʭ|m^uvv|@&TCW3W՛v5RܚZ-=cf9+kP1Pob&r"sRlN"k ͋;ਧB SчCWâsfGa`n endstream endobj 2442 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2443 0 R >> endobj 2444 0 obj 479 endobj 2446 0 obj << /Length 2447 0 R /Filter /FlateDecode >> stream xTn@}Wc^|[Z%ATU%<Y`Y4w׵Ovvfg3|X (~IQx[M{m}0xcRBc(Lw b§Eוskfzַl:J\!#$DpmfV !;߭F0J %) 86G!h,(*z:] HeV|"Ѡ&Tܴt"݋pcNk|pJ<|&'F*7&3Nlw^7_Fo)h8*Sp\BF`>,=O@>ܟ'5ha=&+)@^#\6? endstream endobj 2445 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2446 0 R >> endobj 2447 0 obj 600 endobj 2449 0 obj << /Length 2450 0 R /Filter /FlateDecode >> stream xSMo0 WQmIV`vh"͜4@,a~[fA||C[ >ZJZW!֎o yx1{DrM[}/cw)%n{b䉲( +M,ascO~e%`lzhof,Ӽ(G8 Pyکgh$O8gy`O,[qQ>Q 7U] =vGDrUKh{rz_ŢjpB@$ QP' T4\jR +yOPJoY}*]kw;(cU׾(Su@@ӆ&$FoW}uNzLD;zz)VWX] /T#jmrwʉQO Ė'&Vӂ4y8;A=8 67|KG g( endstream endobj 2448 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2449 0 R >> endobj 2450 0 obj 473 endobj 2452 0 obj << /Length 2453 0 R /Filter /FlateDecode >> stream xSMo0 WQ6`;Eadk,Sٰ?Jr'u[A{ {$j2 JTHLNaoM 舗xa_#RoB[N^?B>fB>J"ѧX7Il d/GȾO %` 0cIàOiGoh<mƩg'yNYnU_^r{ ʪ}@"7ħ!CD5ZPbW%S?4gI,$Ky 2d*. iL)y~+îkz vUSBWl/!]C՞2HK*3yhZk/UOu3j뜖vEߙ;* Z J6q҄> endobj 2453 0 obj 478 endobj 2455 0 obj << /Length 2456 0 R /Filter /FlateDecode >> stream xTM0WŎƷ6òZeSo$$ 3ӏ4m(Vh7oޛI 0V@V>OE"8j/KFJ90"\&=~.`A^'8agQĨ?BL!zp:_ tݸ-$ȻdFr̺  zp)6[m~ea&pU? 0 Il'nEO/@h> endobj 2456 0 obj 530 endobj 2458 0 obj << /Length 2459 0 R /Filter /FlateDecode >> stream xTK@ ϯ G2=R+6"M =L&}Ʋ}v ^X ˒=>FGW\FPhGP[Cn-:%26U { l1#xk&eG ǽDXYz+M,-mҬ\ҏ]:clCCÌ%"d vw(<34'gyNY̷/@> endobj 2459 0 obj 492 endobj 2461 0 obj << /Length 2462 0 R /Filter /FlateDecode >> stream xUn0+r顨=AH-Z"--^\!߼y3À^!ɝ> >\=ȡ{ѷb.f ?¡ٹ(~;t:>称rEO0 "_H !\ogQwnUo F!|FjA͢+1_@ASWS=f=dС+.J~2J‘\N]zpJ|CMx5^PU,NJ*UF䑶!p&(eX\0IPJBC/\;O΃){M*+V|˲U e14hԳS"vt6 N}ݓ/EY5Y#M.ЀN#f\r> endobj 2462 0 obj 645 endobj 2464 0 obj << /Length 2465 0 R /Filter /FlateDecode >> stream xTK@ ϯ G2=R{!$ ɤmGĩƲv X ˂=>FW\FP`G[#C-:%2 {x l19?†Kۏt}lQDW 9-"APT?]ۯ8_ng횂7{iʠBwtZr)!\ D\xyQJs Hp+JȠue XVEέL|Ɠ.8]2OYC~XͭIe@Rq"Z\߲_hD[khSz]su/"yBZĮٕy؞)3A5t[.A]whh endstream endobj 2463 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2464 0 R >> endobj 2465 0 obj 491 endobj 2467 0 obj << /Length 2468 0 R /Filter /FlateDecode >> stream xUn0+pZ -C#B{H[R;$E67#0`XqXK n+IC(C(쭣"\% V# _'<̀"`a:fG^27C`CBJ"#$DpbJucO~ ^5Pip݌9b;%`uGE7nB|: z\EW%?o%I RrFzpJb|57Tt7Os{8Eו/D[d LdeR(Q4Ny<S˼ʫ%Xt[:O0y{zN@ID't)b>w]=/IHbU4gŒSoڕ7> endobj 2468 0 obj 617 endobj 2470 0 obj << /Length 2471 0 R /Filter /FlateDecode >> stream xTK0W̱=?x+m+P)]&l1& 䥞ьf>yfw~1V²bϣO 4T0~Đ[ |c!|d\7t-&>WGX۔@HEceQ7I7e%YGH?t֍Y 5 g,3|8Y 8L`{B| >T6`~zܷ.SqUa
Tapset Name Format In this guide, tapset definitions appear in the following format: name:return (parameters) definition The return field specifies what data type the tapset extracts and returns from the kernel during a probe (and thus, returns). Tapsets use 2 data types for return: long (tapset extracts and returns an integer) and string (tapset extracts and returns a string). In some cases, tapsets do not have a return value. This simply means that the tapset does not extract anything from the kernel. This is common among asynchronous events such as timers, exit functions, and print functions.
Context Functions The context functions provide additional information about where an event occurred. These functions can provide information such as a backtrace to where the event occurred and the current register values for the processor. !Itapset/context.stp !Itapset/linux/context.stp !Itapset/linux/context-envvar.stp !Itapset/linux/context-symbols.stp !Itapset/linux/ucontext.stp !Itapset/linux/ucontext-symbols.stp !Itapset/linux/context-unwind.stp !Itapset/linux/context-caller.stp !Itapset/linux/ucontext-unwind.stp !Itapset/linux/task.stp !Itapset/linux/task_ancestry.stp !Itapset/pn.stp !Itapset/linux/pstrace.stp !Itapset/registers.stp Timestamp Functions Each timestamp function returns a value to indicate when a function is executed. These returned values can then be used to indicate when an event occurred, provide an ordering for events, or compute the amount of time elapsed between two time stamps. !Itapset/linux/timestamp.stp !Itapset/linux/timestamp_gtod.stp !Itapset/linux/timestamp_monotonic.stp !Itapset/stopwatch.stp Time utility functions Utility functions to turn seconds since the epoch (as returned by the timestamp function gettimeofday_s()) into a human readable date/time strings. !Itapset/linux/ctime.stp !Itapset/linux/tzinfo.stp !Itapset/tzinfo.stp Shell command functions Utility functions to enqueue shell commands. !Itapset/system.stp Memory Tapset This family of probe points is used to probe memory-related events or query the memory usage of the current process. It contains the following probe points: !Itapset/linux/memory.stp !Itapset/linux/proc_mem.stp Task Time Tapset This tapset defines utility functions to query time related properties of the current tasks, translate those in miliseconds and human readable strings. !Itapset/linux/task_time.stp Scheduler Tapset This family of probe points is used to probe the task scheduler activities. It contains the following probe points: !Itapset/linux/scheduler.stp IO Scheduler and block IO Tapset This family of probe points is used to probe block IO layer and IO scheduler activities. It contains the following probe points: !Itapset/linux/ioscheduler.stp !Itapset/linux/ioblock.stp SCSI Tapset This family of probe points is used to probe SCSI activities. It contains the following probe points: !Itapset/linux/scsi.stp TTY Tapset This family of probe points is used to probe TTY (Teletype) activities. It contains the following probe points: !Itapset/linux/tty.stp Interrupt Request (IRQ) Tapset This family of probe points is used to probe interrupt request (IRQ) activities. It contains the following probe points: !Itapset/linux/irq.stp Networking Tapset This family of probe points is used to probe the activities of the network device and protocol layers. !Itapset/linux/networking.stp !Itapset/linux/tcp.stp !Itapset/linux/udp.stp !Itapset/linux/ip.stp !Itapset/linux/inet.stp !Itapset/linux/rpc.stp !Itapset/linux/netfilter.stp Socket Tapset This family of probe points is used to probe socket activities. It contains the following probe points: !Itapset/linux/socket.stp !Itapset/linux/inet_sock.stp SNMP Information Tapset This family of probe points is used to probe socket activities to provide SNMP type information. It contains the following functions and probe points: !Itapset/linux/ipmib.stp !Itapset/linux/ipmib-filter-default.stp !Itapset/linux/tcpmib.stp !Itapset/linux/tcpmib-filter-default.stp !Itapset/linux/linuxmib.stp !Itapset/linux/linuxmib-filter-default.stp Kernel Process Tapset This family of probe points is used to probe process-related activities. It contains the following probe points: !Itapset/linux/kprocess.stp !Itapset/linux/target_set.stp !Itapset/linux/loadavg.stp Signal Tapset This family of probe points is used to probe signal activities. It contains the following probe points: !Itapset/linux/signal.stp Errno Tapset This set of functions is used to handle errno number values. It contains the following functions: !Itapset/errno.stp RLIMIT Tapset This set of functions is used to handle string which defines resource limits (RLIMIT_*) and returns corresponding number of resource limit. It contains the following functions: !Itapset/linux/rlimit.stp Device Tapset This set of functions is used to handle kernel and userspace device numbers. It contains the following functions: !Itapset/linux/dev.stp Directory-entry (dentry) Tapset This family of functions is used to map kernel VFS directory entry pointers to file or full path names. !Itapset/linux/dentry.stp Logging Tapset This family of functions is used to send simple message strings to various destinations. !Itapset/logging.stp !Itapset/linux/logging.stp Queue Statistics Tapset This family of functions is used to track performance of queuing systems. !Itapset/queue_stats.stp Random functions Tapset These functions deal with random number generation. !Itapset/random.stp String and data retrieving functions Tapset Functions to retrieve strings and other primitive types from the kernel or a user space programs based on addresses. All strings are of a maximum length given by MAXSTRINGLEN. !Itapset/linux/conversions.stp !Itapset/linux/atomic.stp !Itapset/uconversions.stp String and data writing functions Tapset The SystemTap guru mode can be used to test error handling in kernel code by simulating faults. The functions in the this tapset provide standard methods of writing to primitive types in the kernel's memory. All the functions in this tapset require the use of guru mode (-g). !Itapset/linux/conversions-guru.stp !Itapset/uconversions-guru.stp Guru tapsets Functions to deliberately interfere with the system's behavior, in order to inject faults or improve observability. All the functions in this tapset require the use of guru mode (-g). !Itapset/linux/guru-delay.stp !Itapset/linux/panic.stp !Itapset/linux/guru-signal.stp A collection of standard string functions Functions to get the length, a substring, getting at individual characters, string seaching, escaping, tokenizing, and converting strings to longs. !Itapset/string.stp !Itapset/tokenize.stp Utility functions for using ansi control chars in logs Utility functions for logging using ansi control characters. This lets you manipulate the cursor position and character color output and attributes of log messages. !Itapset/ansi.stp !Itapset/indent.stp SystemTap Translator Tapset This family of user-space probe points is used to probe the operation of the SystemTap translator (stap) and run command (staprun). The tapset includes probes to watch the various phases of SystemTap and SystemTap's management of instrumentation cache. It contains the following probe points: !Itapset/stap_staticmarkers.stp Network File Storage Tapsets This family of probe points is used to probe network file storage functions and operations. !Itapset/linux/nfs_proc.stp !Itapset/linux/nfs.stp !Itapset/linux/nfsd.stp !Itapset/linux/nfsderrno.stp Speculation This family of functions provides the ability to speculative record information and then at a later point in the SystemTap script either commit the information or discard it. !Itapset/speculative.stp JSON Tapset This family of probe points, functions, and macros is used to output data in JSON format. It contains the following probe points, functions, and macros: !Itapset/linux/json.stp !Itapset/linux/json.stpm Output file switching Tapset Utility function to allow switching of output files. !Itapset/switchfile.stp !Syscalls systemtap-3.1/doc/Tapset_Reference_Guide/000077500000000000000000000000001305163227500205125ustar00rootroot00000000000000systemtap-3.1/doc/Tapset_Reference_Guide/Makefile000066400000000000000000000006411305163227500221530ustar00rootroot00000000000000#Makefile for Tapset_Reference_Guide XML_LANG = en-US DOCNAME = Tapset_Reference_Guide #PRODUCT = FIX_ME! BRAND = fedora #OTHER_LANGS = as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW # Extra Parameters start here # Extra Parameters stop here COMMON_CONFIG = /usr/share/publican include $(COMMON_CONFIG)/make/Makefile.common systemtap-3.1/doc/Tapset_Reference_Guide/README000066400000000000000000000032661305163227500214010ustar00rootroot00000000000000The Publican Tapset Reference Guide is build from files generated during the build of SystemTap when it is configured with "--enable-refdocs". Assuming that SystemTap was built in /home/wcohen/systemtap/build, the file needed to generate the Publican Tapset Reference Guide would be /home/wcohen/systemtap/build/doc/SystemTap_Tapset_Reference/tapsets.xml. To generate the required DocBook XML file of the tapsets.xml file and build the Publican Tapset Reference Guide from this directory: export BUILD=/home/wcohen/systemtap/build ./publicanize.sh -i=$BUILD/doc/SystemTap_Tapset_Reference/tapsets.xml This will copy and clean the XML source of SystemTap_Tapset_Reference created by kernel-doc and place the resulting file in ./en-US/Tapset_Reference_Guide.xml. You can now build it in pdf, html, etc using Publican. To make the Publican pdf file: make pdf-en-US The resulting output file will be ./tmp/en-US/pdf/Tapset_Reference_Guide.pdf The main source of the Language Reference Guide is in the build directory: $BUILD/doc/SystemTap_Tapset_Reference/tapsets.xml This main source is generated by kernel-doc when you run 'make' in the main git tree. The tapset documentation inside is collected from all tapset files defined in the following template file: ../SystemTap_Tapset_Reference/tapsets.tmpl The tapset file definitions appear in tapsets.tmpl as: !Itapset/context.stp !Itapset/context-symbols.stp etc context.stp, context-symbols, and all the other tapset files are located in: ../../tapset All tapset documentation should be done inside their respective tapset files. For more information about this project, refer to: http://sourceware.org/systemtap/wiki/ProjectTapsetReferenceGuide systemtap-3.1/doc/Tapset_Reference_Guide/en-US/000077500000000000000000000000001305163227500214415ustar00rootroot00000000000000systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Author_Group.xml000066400000000000000000000013371305163227500246050ustar00rootroot00000000000000 Red Hat Enterprise Linux Documentation Don Domingo Engineering Services and Operations Content Services ddomingo@redhat.com William Cohen Engineering Services and Operations Performance Tools wcohen@redhat.com systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Book_Info.xml000066400000000000000000000023111305163227500240250ustar00rootroot00000000000000 Tapset Reference Guide For SystemTap in Fedora 10 Fedora 10 1.0 0 The Tapset Reference Guide describes the most common tapset definitions users can apply to SystemTap scripts. All included tapsets documented in this guide are current as of Fedora 10 and the latest upstream version of SystemTap. Logo &YEAR; &HOLDER; systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Introduction.xml000066400000000000000000000046631305163227500246550ustar00rootroot00000000000000 Introduction SystemTap provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system. This assists diagnosis of a performance or functional problem. SystemTap eliminates the need for the developer to go through the tedious and disruptive instrument, recompile, install, and reboot sequence that may be otherwise required to collect data. SystemTap provides a simple command line interface and scripting language for writing instrumentation for a live, running kernel. This instrumentation uses probe points and functions provided in the tapset library. Simply put, tapsets are scripts that encapsulate knowledge about a kernel subsystem into pre-written probes and functions that can be used by other scripts. Tapsets are analogous to libraries for C programs. They hide the underlying details of a kernel area while exposing the key information needed to manage and monitor that aspect of the kernel. They are typically developed by kernel subject-matter experts. A tapset exposes the high-level data and state transitions of a subsystem. For the most part, good tapset developers assume that SystemTap users know little to nothing about the kernel subsystem's low-level details. As such, tapset developers write tapsets that help ordinary SystemTap users write meaningful and useful SystemTap scripts.
Documentation Goals This guide aims to document SystemTap's most useful and common tapset entries; it also contains guidelines on proper tapset development and documentation. The tapset definitions contained in this guide are extracted automatically from properly-formatted comments in the code of each tapset file. As such, any revisions to the definitions in this guide should be applied directly to their respective tapset file. add: "while users can read from code, it's easier to read from here!" add: target audience, expected proficiency of readers
systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Legal_Notice.xml000066400000000000000000000017221305163227500245120ustar00rootroot00000000000000 This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. For more details see the file COPYING in the source distribution of Linux. systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Preface.xml000066400000000000000000000011361305163227500235310ustar00rootroot00000000000000 Preface systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Tapset_Dev_Guide.xml000066400000000000000000000220311305163227500253340ustar00rootroot00000000000000 Tapset Development Guidelines This chapter describes the upstream guidelines on proper tapset documentation. It also contains information on how to properly document your tapsets, to ensure that they are properly defined in this guide.
Writing Good Tapsets The first step to writing good tapsets is to create a simple model of your subject area. For example, a model of the process subsystem might include the following: Key Data process ID parent process ID process group ID State Transitions forked exec'd running stopped terminated Note Both lists are examples, and are not meant to represent a complete list. Use your subsystem expertise to find probe points (function entries and exits) that expose the elements of the model, then define probe aliases for those points. Be aware that some state transitions can occur in more than one place. In those cases, an alias can place a probe in multiple locations. For example, process execs can occur in either the do_execve() or the compat_do_execve() functions. The following alias inserts probes at the beginning of those functions: probe kprocess.exec = kernel.function("do_execve"), kernel.function("compat_do_execve") {probe body} Try to place probes on stable interfaces (i.e., functions that are unlikely to change at the interface level) whenever possible. This will make the tapset less likely to break due to kernel changes. Where kernel version or architecture dependencies are unavoidable, use preprocessor conditionals (see the stap(1) man page for details). Fill in the probe bodies with the key data available at the probe points. Function entry probes can access the entry parameters specified to the function, while exit probes can access the entry parameters and the return value. Convert the data into meaningful forms where appropriate (e.g., bytes to kilobytes, state values to strings, etc). You may need to use auxiliary functions to access or convert some of the data. Auxiliary functions often use embedded C to do things that cannot be done in the SystemTap language, like access structure fields in some contexts, follow linked lists, etc. You can use auxiliary functions defined in other tapsets or write your own. In the following example, copy_process() returns a pointer to the task_struct for the new process. Note that the process ID of the new process is retrieved by calling task_pid() and passing it the task_struct pointer. In this case, the auxiliary function is an embedded C function defined in task.stp. probe kprocess.create = kernel.function("copy_process").return { task = $return new_pid = task_pid(task) } It is not advisable to write probes for every function. Most SystemTap users will not need or understand them. Keep your tapsets simple and high-level. info from here:http://sourceware.org/git/?p=systemtap.git;a=blob_plain;f=tapset/DEVGUIDE
Elements of a Tapset The following sections describe the most important aspects of writing a tapset. Most of the content herein is suitable for developers who wish to contribute to SystemTap's upstream library of tapsets.
Tapset Files Tapset files are stored in src/tapset/ of the SystemTap GIT directory. Most tapset files are kept at that level. If you have code that only works with a specific architecture or kernel version, you may choose to put your tapset in the appropriate subdirectory. Installed tapsets are located in /usr/share/systemtap/tapset/ or /usr/local/share/systemtap/tapset. Personal tapsets can be stored anywhere. However, to ensure that SystemTap can use them, use -I tapset_directory to specify their location when invoking stap.
Namespace Probe alias names should take the form tapset_name.probe_name. For example, the probe for sending a signal could be named signal.send. Global symbol names (probes, functions, and variables) should be unique accross all tapsets. This helps avoid namespace collisions in scripts that use multiple tapsets. To ensure this, use tapset-specific prefixes in your global symbols. Internal symbol names should be prefixed with an underscore (_).
Comments and Documentation All probes and functions should include comment blocks that describe their purpose, the data they provide, and the context in which they run (e.g. interrupt, process, etc). Use comments in areas where your intent may not be clear from reading the code. Note that specially-formatted comments are automatically extracted from most tapsets and included in this guide. This helps ensure that tapset contributors can write their tapset and document it in the same place. The specified format for documenting tapsets is as follows: /** * probe tapset.name - Short summary of what the tapset does. * @argument: Explanation of argument. * @argument2: Explanation of argument2. Probes can have multiple arguments. * * Context: * A brief explanation of the tapset context. * Note that the context should only be 1 paragraph short. * * Text that will appear under "Description." * * A new paragraph that will also appear under the heading "Description". * * Header: * A paragraph that will appear under the heading "Header". **/ For example: /** * probe vm.write_shared_copy- Page copy for shared page write. * @address: The address of the shared write. * @zero: Boolean indicating whether it is a zero page * (can do a clear instead of a copy). * * Context: * The process attempting the write. * * Fires when a write to a shared page requires a page copy. This is * always preceded by a vm.write_shared. **/ To override the automatically-generated Synopsis content, use: * Synopsis: * New Synopsis string * For example: /** * probe signal.handle - Fires when the signal handler is invoked * @sig: The signal number that invoked the signal handler * * Synopsis: * <programlisting>static int handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, * sigset_t *oldset, struct pt_regs * regs)</programlisting> */ It is recommended that you use the <programlisting> tag in this instance, since overriding the Synopsis content of an entry does not automatically form the necessary tags. For the purposes of improving the DocBook XML output of your comments, you can also use the following XML tags in your comments: command emphasis programlisting remark (tagged strings will appear in Publican beta builds of the document)
systemtap-3.1/doc/Tapset_Reference_Guide/en-US/Tapset_Reference_Guide.ent000066400000000000000000000002521305163227500265030ustar00rootroot00000000000000 systemtap-3.1/doc/Tapset_Reference_Guide/en-US/images/000077500000000000000000000000001305163227500227065ustar00rootroot00000000000000systemtap-3.1/doc/Tapset_Reference_Guide/en-US/images/icon.svg000066400000000000000000003301271305163227500243650ustar00rootroot00000000000000 image/svg+xml id="path2858" /> systemtap-3.1/doc/Tapset_Reference_Guide/manpager.sh000077500000000000000000000101261305163227500226430ustar00rootroot00000000000000#!/bin/bash # This script builds the man pages from comments in tapsets. As such, the man page content # generated herein should be in sync with Tapset Reference Guide # NOTE: proposed newer version is being developed in doc/Systemtap_Tapset_Reference/manpager.sh # cleanup rm -rf man_pages # create working directory mkdir workingdir ; # create list of man pages to generate cat ../SystemTap_Tapset_Reference/tapsets.tmpl | grep ^\!Itapset > manpageus ; sed -i -e 's/\!Itapset\///g' manpageus ; # copy list of man pages into working directory for i in `cat manpageus` ; do cp ../../tapset/$i workingdir ; done ; # enter workdir cd workingdir ; # copy tapsetdescriptions, then clean for i in `cat ../manpageus`; do sed -n '/\/\/ /,/\/\/ <\/tapsetdescription>/ s/.*/&/w temp' < $i ; mv temp $i.tapsetdescription ; sed -i -e 's/\/\/ //g' $i.tapsetdescription ; sed -i -e 's/\/\/ <\/tapsetdescription>//g' $i.tapsetdescription ; sed -i -e 's/\/\///g' $i.tapsetdescription ; done # strip all tapset files to just comments; but all comments must be exactly 1 space before and after "*" for i in `cat ../manpageus` ; do sed -i -e 's/^ \*/ \*/g' $i; sed -i -e 's/^ \* / \* /g' $i; # mark the start of each probe entry (sub "/**") perl -p -i -e 's|^/\*\*| *probestart|g' $i; sed -i -e '/^ \*/!d' $i; # rename all tapsets (remove .stp filename suffix), create templates echo $i > tempname ; sed -i -e 's/.stp//g' tempname ; mv $i `cat tempname` ; mv tempname $i ; done ; # create man page headers for i in `ls | grep -v .stp | grep -v tapsetdescription` ; do #echo ".\" -*- nroff -*-" >> $i.template ; echo ".TH STAPPROBES."$i" 5 @DATE@ "SystemTap Tapset Reference"" >> $i.template ; echo ".SH NAME" >> $i.template ; echo "stapprobes."`cat $i.stp`" \- systemtap "`cat $i.stp`" probe points" >> $i.template ; echo " " >> $i.template ; echo ".SH DESCRIPTION" >> $i.template ; cat $i.stp.tapsetdescription >> $i.template ; echo " " >> $i.template ; echo ".SH PROBES" >> $i.template ; echo ".br" >> $i.template ; echo ".P" >> $i.template ; echo ".TP" >> $i.template ; done # MOST IMPORTANT: clean man page body! sed -i -e 's/\.stp$//g' ../manpageus ; for i in `cat ../manpageus` ; do mv $i $i.tmp ; perl -p -i -e 's| \* sfunction|.BR|g' $i.tmp ; perl -p -i -e 's| \* probe|.BR|g' $i.tmp ; perl -p -i -e 's| -|\ninitlinehere|g' $i.tmp ; perl -p -i -e 's|^initlinehere([^\n]*)\n|$1\n |g' $i.tmp ; perl -p -i -e 's| \* @([^:]*):|\n.I $1:\n|g' $i.tmp ; perl -p -i -e 's| \* ([^:]*):|\n.BR $1:\n|g' $i.tmp ; perl -p -i -e 's| \* ||g' $i.tmp perl -p -i -e 's|\*probestart|\n.P\n.TP|g' $i.tmp ; perl -p -i -e 's|\.I|\n.I|g' $i.tmp ; # remove empty lines sed -i -e '/^$/d' $i.tmp ; sed -i -e '/^$/d' $i.tmp ; sed -i -e 's/^[ \t]*//g' $i.tmp ; # process Description headers perl -p -i -e 's|^\*[^/]|\n.BR Description:\n|g' $i.tmp ; perl -p -i -e 'undef $/;s|\.BR Description:\n\.BR|.BR|g' $i.tmp ; perl -p -i -e 'undef $/;s|\.BR Description:\n\*\/||g' $i.tmp ; # process Argument headers perl -p -i -e 'undef $/;s|\n\n.I|\n.br\n.BR Arguments:\n.I|g' $i.tmp ; # clean up formatting of arguments perl -p -i -e 's|^.I([^:]*:)|\n.br\n.br\n.IR$1\n.br\n\t|g' $i.tmp ; done # make tags work for i in `cat ../manpageus` ; do perl -p -i -e 's|]*>([^.])|$1\n|g' $i.tmp ; perl -p -i -e 's|<[^>]*>|\n.B |g' $i.tmp ; # the previous two statements create excess empty lines, remove some of them sed -i -e '/^$/d' $i.tmp ; # increase whitespace between some headers perl -p -i -e 's|^\.BR ([^:]*:)|\n.br\n.BR $1\n.br\n|g' $i.tmp done # generate footer template echo ".SH SEE ALSO" >> footer echo ".IR stap (1)," >> footer echo ".IR stapprobes (5)," >> footer for i in `cat ../manpageus`; do echo ".IR stapprobes."$i" (5)," >> footer ; done # assemble parts for i in `cat ../manpageus`; do cat $i.template >> stapprobes.$i.5 ; cat $i.tmp >> stapprobes.$i.5 ; cat footer >> stapprobes.$i.5 ; # final polish sed -i -e 's/\*\/$//g' stapprobes.$i.5 ; done # cleanup for i in `ls | grep -v 'stapprobes.*.5'` ; do rm $i ; done rm ../manpageus ; cd .. mv workingdir man_pages echo " " echo "Finished! man pages generated in ./man_pages." echo " " systemtap-3.1/doc/Tapset_Reference_Guide/publicanize.sh000077500000000000000000000117231305163227500233620ustar00rootroot00000000000000#!/bin/bash BASE=$(dirname $(readlink -f $0)) INFILE="$BASE/../SystemTap_Tapset_Reference/tapsets.xml" OUTFILE="$BASE/en-US/Tapset_Reference_Guide.xml" TMPFILE=`mktemp` || exit 1 TMPFILE2=`mktemp` || exit 1 do_help() { echo "publicanize.sh: usage: -?/--help this message -i/--input=file input file name -o/--output=file output file name " >&2 } #process optional arguments -i -o while [ "$#" -ne 0 ] do arg=`printf %s $1 | awk -F= '{print $1}'` val=`printf %s $1 | awk -F= '{print $2}'` shift if test -z "$val"; then local possibleval=$1 printf %s $1 "$possibleval" | grep ^- >/dev/null 2>&1 if test "$?" != "0"; then val=$possibleval if [ "$#" -ge 1 ]; then shift fi fi fi case "$arg" in -i|--input) INFILE=$val ;; -o|--output) OUTFILE=$val ;; -\?|--help) do_help exit 0 ;; *) echo "Unknown option \"$arg\". See opcontrol --help" >&2 exit 1 ;; esac done #copy the generated tapsets.xml cp $INFILE $TMPFILE || exit 1 #remove all excess whitespace sed -i -e 's/^\s*//g' $TMPFILE #remove marked Intro (starthere to endhere) sed -i -e '/starthere/,/endhere/d' $TMPFILE #re-convert programlisting tags sed -i -e 's/<programlisting>//g' $TMPFILE sed -i -e 's/<\/programlisting>/<\/programlisting>/g' $TMPFILE #replace header cat $TMPFILE | perl -p -e 'undef $/;s|\nSystemTap Tapset Reference Manual|\n|msg' | #perl -p -e 'undef $/;s|\n\nSystemTap\nHackers\n\n||msg' | #perl -p -e 'undef $/;s|\n2008-2009\nRed Hat, Inc. and others\n||msg' | #perl -p -e 'undef $/;s|\n\nThis documentation is free software\; you can redistribute\nit and/or modify it under the terms of the GNU General Public\nLicense version 2 as published by the Free Software Foundation.\n||msg' | #perl -p -e 'undef $/;s|\nThis program is distributed in the hope that it will be\nuseful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nSee the GNU General Public License for more details.\n||msg' | #perl -p -e 'undef $/;s|\nYou should have received a copy of the GNU General Public\nLicense along with this program; if not, write to the Free\nSoftware Foundation, Inc., 51 Franklin Street, Fifth Floor,\nBoston, MA 02110-1301 USA.\n||msg' | #perl -p -e 'undef $/;s|\nFor more details see the file COPYING in the source\ndistribution of Linux.\n\n\n||msg' | #perl -p -e 'undef $/;s|||msg' | perl -p -e 'undef $/;s|\n\n\n\n\n\n\n\n\n\n\n\n\n\n||msg' | perl -p -e 'undef $/;s|\n\n\n\n\n\n\n\n\n\n\n||msg' | perl -p -e 'undef $/;s|\n|\nfunction <\/emphasis>|msg' | perl -p -e 'undef $/;s|\n||msg' | perl -p -e 'undef $/;s|\n\n||msg' | perl -p -e 'undef $/;s|\n||msg' | perl -p -e 'undef $/;s|\n||msg' > $TMPFILE2 #replace Intro with my own perl -p -i -e 's||\n|g' $TMPFILE2 #for tapset name format section #perl -p -i -e 'undef $/;s|\nname:return \(parameters\)\ndefinition\n|\nfunction/probe tapset_name:return \(parameters\)\n|msg' $TMPFILE2 #perl -p -i -e 's|In this guide, tapset definitions appear in the following format:|In this guide, the synopsis of each tapset appears in the following format:|g' $TMPFILE2 #perl -p -i -e 's||\n|g' $TMPFILE2 # statements change synopsis tags, as they are still currently unfixed in publican-redhat sed -i -e 's/refsynopsisdiv>/refsect1>/g' $TMPFILE2 sed -i -e 's/refsect1>/refsection>/g' $TMPFILE2 sed -i -e 's/synopsis>/programlisting>\n/g' $TMPFILE2 # re-convert tags sed -i -e 's/<emphasis>//g' $TMPFILE2 sed -i -e 's/<\/emphasis>/<\/emphasis>/g' $TMPFILE2 sed -i -e 's/<remark>//g' $TMPFILE2 sed -i -e 's/<\/remark>/<\/remark>/g' $TMPFILE2 sed -i -e 's/<command>//g' $TMPFILE2 sed -i -e 's/<\/command>/<\/command>/g' $TMPFILE2 #useful marker script; moves content between starthere and endhere to file target #sed -n '/starthere/,/endhere/ s/.*/&/w target' $TMPFILE2 mv $TMPFILE2 $OUTFILE systemtap-3.1/doc/beginners/000077500000000000000000000000001305163227500161335ustar00rootroot00000000000000systemtap-3.1/doc/beginners/Makefile.am000066400000000000000000000041711305163227500201720ustar00rootroot00000000000000# Makefile.am --- automake input file for systemtap tapset reference manual ## process this file with automake to produce Makefile.in DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap SBG = SystemTap_Beginners_Guide BEGIN_INSTALL_DIR = $(DOC_INSTALL_DIR)/$(SBG) if BUILD_DOCS all: $(SBG)/index.html # The beginner documents are now pre generated in the source tree # move all the relevant files into the build directory $(SBG).pdf: mkdir -p build/en-US/xml cp en-US/*.xml build/en-US/xml/ cp en-US/*.ent build/en-US/xml/ cp -R en-US/xsl build/en-US/ cp -R en-US/extras build/en-US/xml/ cp -R en-US/images build/en-US/xml/ cp -R en-US/Common_Content build/en-US/xml cp en-US/$(SBG).pdf $(builddir)/ # rely on the pdf generation to move all the necessary files into the right dirs $(SBG)/index.html: $(SBG).pdf if BUILD_HTMLDOCS xmlto --skip-validation \ -x build/en-US/xsl/html.xsl -o $(SBG) html build/en-US/xml/$(SBG).xml cp -R build/en-US/xml/images $(SBG) mkdir -p $(SBG)/Common_Content cp -R build/en-US/xml/Common_Content/images $(SBG)/Common_Content cp -R build/en-US/xml/Common_Content/css $(SBG)/Common_Content endif clean-local: rm -rf build/en-US/xml rm -rf build/en-US/xsl rm -f $(SBG).pdf rm -rf $(SBG) install-data-hook: $(MKDIR_P) $(DOC_INSTALL_DIR) $(INSTALL_DATA) $(SBG).pdf $(DOC_INSTALL_DIR) if BUILD_HTMLDOCS $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG) $(INSTALL_DATA) $(SBG)/*.html $(DOC_INSTALL_DIR)/$(SBG) $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/images $(INSTALL_DATA) $(SBG)/images/*.png $(SBG)/images/*.svg \ $(DOC_INSTALL_DIR)/$(SBG)/images $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/css $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/images $(INSTALL_DATA) $(SBG)/Common_Content/css/*.css \ $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/css $(INSTALL_DATA) $(SBG)/Common_Content/images/*.png \ $(SBG)/Common_Content/images/*.svg \ $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/images $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/xsl $(INSTALL_DATA) en-US/xsl/*.xsl \ $(DOC_INSTALL_DIR)/$(SBG)/xsl endif uninstall-local: rm -f $(DOC_INSTALL_DIR)/$(SBG).pdf rm -rf $(DOC_INSTALL_DIR)/$(SBG) endif systemtap-3.1/doc/beginners/Makefile.in000066400000000000000000000402461305163227500202060ustar00rootroot00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am --- automake input file for systemtap tapset reference manual VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = doc/beginners ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATE = @DATE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DYNINST_CXXFLAGS = @DYNINST_CXXFLAGS@ DYNINST_LDFLAGS = @DYNINST_LDFLAGS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_NLS = @ENABLE_NLS@ EXEEXT = @EXEEXT@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ JAVADIR = @JAVADIR@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LOCALEDIR = @LOCALEDIR@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PIECFLAGS = @PIECFLAGS@ PIECXXFLAGS = @PIECXXFLAGS@ PIELDFLAGS = @PIELDFLAGS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON3 = @PYTHON3@ PYTHON3_CONFIG = @PYTHON3_CONFIG@ PYTHON3_CPPFLAGS = @PYTHON3_CPPFLAGS@ PYTHON3_EXEC_PREFIX = @PYTHON3_EXEC_PREFIX@ PYTHON3_PLATFORM = @PYTHON3_PLATFORM@ PYTHON3_PREFIX = @PYTHON3_PREFIX@ PYTHON3_VERSION = @PYTHON3_VERSION@ PYTHON_CONFIG = @PYTHON_CONFIG@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_UNKNOWN = @PYTHON_UNKNOWN@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STAP_EXTRA_VERSION = @STAP_EXTRA_VERSION@ STAP_PREFIX = @STAP_PREFIX@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ avahi_CFLAGS = @avahi_CFLAGS@ avahi_LIBS = @avahi_LIBS@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutbindir = @dracutbindir@ dracutstap = @dracutstap@ dvidir = @dvidir@ elfutils_abs_srcdir = @elfutils_abs_srcdir@ exec_prefix = @exec_prefix@ have_dvips = @have_dvips@ have_fop = @have_fop@ have_jar = @have_jar@ have_javac = @have_javac@ have_latex = @have_latex@ have_ps2pdf = @have_ps2pdf@ have_xmlto = @have_xmlto@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jsonc_CFLAGS = @jsonc_CFLAGS@ jsonc_LIBS = @jsonc_LIBS@ libdir = @libdir@ libexecdir = @libexecdir@ libvirt_CFLAGS = @libvirt_CFLAGS@ libvirt_LIBS = @libvirt_LIBS@ libxml2_CFLAGS = @libxml2_CFLAGS@ libxml2_LIBS = @libxml2_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ ncurses_CFLAGS = @ncurses_CFLAGS@ ncurses_LIBS = @ncurses_LIBS@ nss_CFLAGS = @nss_CFLAGS@ nss_LIBS = @nss_LIBS@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ preferred_python = @preferred_python@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ py3execdir = @py3execdir@ pyexecdir = @pyexecdir@ python3dir = @python3dir@ pythondir = @pythondir@ sbindir = @sbindir@ selinux_CFLAGS = @selinux_CFLAGS@ selinux_LIBS = @selinux_LIBS@ sharedstatedir = @sharedstatedir@ sqlite3_LIBS = @sqlite3_LIBS@ srcdir = @srcdir@ stap_LIBS = @stap_LIBS@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ staprun_LIBS = @staprun_LIBS@ subdirs = @subdirs@ support_section_question = @support_section_question@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap SBG = SystemTap_Beginners_Guide BEGIN_INSTALL_DIR = $(DOC_INSTALL_DIR)/$(SBG) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/beginners/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/beginners/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @BUILD_DOCS_FALSE@clean-local: @BUILD_DOCS_FALSE@uninstall-local: @BUILD_DOCS_FALSE@install-data-hook: clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-data-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ cscopelist-am ctags-am distclean distclean-generic dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-local .PRECIOUS: Makefile @BUILD_DOCS_TRUE@all: $(SBG)/index.html # The beginner documents are now pre generated in the source tree # move all the relevant files into the build directory @BUILD_DOCS_TRUE@$(SBG).pdf: @BUILD_DOCS_TRUE@ mkdir -p build/en-US/xml @BUILD_DOCS_TRUE@ cp en-US/*.xml build/en-US/xml/ @BUILD_DOCS_TRUE@ cp en-US/*.ent build/en-US/xml/ @BUILD_DOCS_TRUE@ cp -R en-US/xsl build/en-US/ @BUILD_DOCS_TRUE@ cp -R en-US/extras build/en-US/xml/ @BUILD_DOCS_TRUE@ cp -R en-US/images build/en-US/xml/ @BUILD_DOCS_TRUE@ cp -R en-US/Common_Content build/en-US/xml @BUILD_DOCS_TRUE@ cp en-US/$(SBG).pdf $(builddir)/ # rely on the pdf generation to move all the necessary files into the right dirs @BUILD_DOCS_TRUE@$(SBG)/index.html: $(SBG).pdf @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ xmlto --skip-validation \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ -x build/en-US/xsl/html.xsl -o $(SBG) html build/en-US/xml/$(SBG).xml @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ cp -R build/en-US/xml/images $(SBG) @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ mkdir -p $(SBG)/Common_Content @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ cp -R build/en-US/xml/Common_Content/images $(SBG)/Common_Content @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ cp -R build/en-US/xml/Common_Content/css $(SBG)/Common_Content @BUILD_DOCS_TRUE@clean-local: @BUILD_DOCS_TRUE@ rm -rf build/en-US/xml @BUILD_DOCS_TRUE@ rm -rf build/en-US/xsl @BUILD_DOCS_TRUE@ rm -f $(SBG).pdf @BUILD_DOCS_TRUE@ rm -rf $(SBG) @BUILD_DOCS_TRUE@install-data-hook: @BUILD_DOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR) @BUILD_DOCS_TRUE@ $(INSTALL_DATA) $(SBG).pdf $(DOC_INSTALL_DIR) @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG) @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(INSTALL_DATA) $(SBG)/*.html $(DOC_INSTALL_DIR)/$(SBG) @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/images @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(INSTALL_DATA) $(SBG)/images/*.png $(SBG)/images/*.svg \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(DOC_INSTALL_DIR)/$(SBG)/images @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/css @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/images @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(INSTALL_DATA) $(SBG)/Common_Content/css/*.css \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/css @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(INSTALL_DATA) $(SBG)/Common_Content/images/*.png \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(SBG)/Common_Content/images/*.svg \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(DOC_INSTALL_DIR)/$(SBG)/Common_Content/images @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR)/$(SBG)/xsl @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(INSTALL_DATA) en-US/xsl/*.xsl \ @BUILD_DOCS_TRUE@@BUILD_HTMLDOCS_TRUE@ $(DOC_INSTALL_DIR)/$(SBG)/xsl @BUILD_DOCS_TRUE@uninstall-local: @BUILD_DOCS_TRUE@ rm -f $(DOC_INSTALL_DIR)/$(SBG).pdf @BUILD_DOCS_TRUE@ rm -rf $(DOC_INSTALL_DIR)/$(SBG) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: systemtap-3.1/doc/langref.tex000066400000000000000000003307671305163227500163370ustar00rootroot00000000000000% SystemTap Language Reference \documentclass[twoside,english]{article} \usepackage{geometry} \geometry{verbose,letterpaper,tmargin=1.5in,bmargin=1.5in,lmargin=1in,rmargin=1in} \usepackage{fancyhdr} \pagestyle{fancy} \usepackage{array} \usepackage{varioref} \usepackage{float} \usepackage{makeidx} \usepackage{verbatim} \usepackage{url} \makeindex \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. \newcommand{\noun}[1]{\textsc{#1}} %% Bold symbol macro for standard LaTeX users %\providecommand{\boldsymbol}[1]{\mbox{\boldmath $#1$}} %% Because html converters don't know tabularnewline \providecommand{\tabularnewline}{\\} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. \setlength{\parindent}{0pt} %\setlength{\parskip}{3pt plus 2pt minus 1pt} \setlength{\parskip}{5pt} % % this makes list spacing much better. % \newenvironment{my_itemize}{ \begin{itemize} \setlength{\itemsep}{1pt} \setlength{\parskip}{0pt} \setlength{\parsep}{0pt}}{\end{itemize} } \newenvironment{vindent} {\begin{list}{}{\setlength{\listparindent}{6pt}} \item[]} {\end{list}} \usepackage[english]{babel} \makeatother \begin{document} \title{SystemTap Language Reference} \maketitle \newpage{} This document was derived from other documents contributed to the SystemTap project by employees of Red Hat, IBM and Intel.\newline Copyright \copyright\space 2007-2013 Red Hat Inc.\newline Copyright \copyright\space 2007-2009 IBM Corp.\newline Copyright \copyright\space 2007 Intel Corporation.\newline Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\newline The GNU Free Documentation License is available from \url{http://www.gnu.org/licenses/fdl.html} or by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. \newpage{} \tableofcontents{} % \listoftables \newpage{} \section{SystemTap overview\label{sec:SystemTap-Overview}} \subsection{About this guide} This guide is a comprehensive reference of SystemTap's language constructs and syntax. The contents borrow heavily from existing SystemTap documentation found in manual pages and the tutorial. The presentation of information here provides the reader with a single place to find language syntax and recommended usage. In order to successfully use this guide, you should be familiar with the general theory and operation of SystemTap. If you are new to SystemTap, you will find the tutorial to be an excellent place to start learning. For detailed information about tapsets, see the manual pages provided with the distribution. For information about the entire collection of SystemTap reference material, see Section~\ref{sec:For-Further-Reference} \subsection{Reasons to use SystemTap} SystemTap provides infrastructure to simplify the gathering of information about a running Linux kernel so that it may be further analyzed. This analysis assists in identifying the underlying cause of a performance or functional problem. SystemTap was designed to eliminate the need for a developer to go through the tedious instrument, recompile, install, and reboot sequence normally required to collect this kind of data. To do this, it provides a simple command-line interface and scripting language for writing instrumentation for both kernel and user space. With SystemTap, developers, system administrators, and users can easily write scripts that gather and manipulate system data that is otherwise unavailable from standard Linux tools. Users of SystemTap will find it to be a significant improvement over older methods. \subsection{Event-action language} \index{language} SystemTap's language is strictly typed, declaration free, procedural, and inspired by dtrace and awk. Source code points or events in the kernel are associated with handlers, which are subroutines that are executed synchronously. These probes are conceptually similar to \char`\"{}breakpoint command lists\char`\"{} in the GDB debugger. There are two main outermost constructs: probes and functions. Within these, statements and expressions use C-like operator syntax and precedence. \subsection{Sample SystemTap scripts} \index{example scripts} Following are some example scripts that illustrate the basic operation of SystemTap. For more examples, see the examples/small\_demos/ directory in the source directory, the SystemTap wiki at \url{http://sourceware.org/systemtap/wiki/HomePage}, or the SystemTap War Stories at \url{http://sourceware.org/systemtap/wiki/WarStories} page. \subsubsection{Basic SystemTap syntax and control structures} The following code examples demonstrate SystemTap syntax and control structures. \begin{vindent} \begin{verbatim} global odds, evens probe begin { # "no" and "ne" are local integers for (i = 0; i < 10; i++) { if (i % 2) odds [no++] = i else evens [ne++] = i } delete odds[2] delete evens[3] exit() } probe end { foreach (x+ in odds) printf ("odds[%d] = %d", x, odds[x]) foreach (x in evens-) printf ("evens[%d] = %d", x, evens[x]) } \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} odds[0] = 1 odds[1] = 3 odds[3] = 7 odds[4] = 9 evens[4] = 8 evens[2] = 4 evens[1] = 2 evens[0] = 0 \end{verbatim} \end{vindent} Note that all variable types are inferred, and that all locals and globals are initialized. Integers are set to 0 and strings are set to the empty string. \subsubsection{Primes between 0 and 49} \begin{vindent} \begin{verbatim} function isprime (x) { if (x < 2) return 0 for (i = 2; i < x; i++) { if (x % i == 0) return 0 if (i * i > x) break } return 1 } probe begin { for (i = 0; i < 50; i++) if (isprime (i)) printf("%d\n", i) exit() } \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 \end{verbatim} \end{vindent} \subsubsection{Recursive functions} \index{recursion} \begin{vindent} \begin{verbatim} function fibonacci(i) { if (i < 1) error ("bad number") if (i == 1) return 1 if (i == 2) return 2 return fibonacci (i-1) + fibonacci (i-2) } probe begin { printf ("11th fibonacci number: %d", fibonacci (11)) exit () } \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} 11th fibonacci number: 118 \end{verbatim} \end{vindent} Any larger number input to the function may exceed the MAXACTION or MAXNESTING limits, which will be caught at run time and result in an error. For more about limits see Section~\ref{sub:SystemTap-safety}. \newpage{} \subsection{The stap command} \index{stap} The stap program is the front-end to the SystemTap tool. It accepts probing instructions written in its scripting language, translates those instructions into C code, compiles this C code, and loads the resulting kernel module into a running Linux kernel to perform the requested system trace or probe functions. You can supply the script in a named file, from standard input, or from the command line. The SystemTap script runs until one of the following conditions occurs: \begin{itemize} \item The user interrupts the script with a CTRL-C. \item The script executes the exit() function. \item The script encounters a sufficient number of soft errors. \item The monitored command started with the stap program's \texttt{\textbf{-c}} option exits. \end{itemize} The stap command does the following: \begin{itemize} \item Translates the script \item Generates and compiles a kernel module \item Inserts the module; output to stap's stdout \item CTRL-C unloads the module and terminates stap \end{itemize} For a full list of options to the stap command, see the stap(1) manual page. \subsection{Safety and security\label{sub:SystemTap-safety}} \index{limits} SystemTap is an administrative tool. It exposes kernel internal data structures and potentially private user information. It requires root privileges to actually run the kernel objects it builds using the \textbf{sudo} command, applied to the \textbf{staprun} program. staprun is a part of the SystemTap package, dedicated to module loading and unloading and kernel-to-user data transfer. Since staprun does not perform any additional security checks on the kernel objects it is given, do not give elevated privileges via sudo to untrusted users. The translator asserts certain safety constraints. \index{constraints}It ensures that no handler routine can run for too long, allocate memory, perform unsafe operations, or unintentionally interfere with the kernel. Use of script global variables is locked to protect against manipulation by concurrent probe handlers. Use of \emph{guru mode} constructs such as embedded C (see Section~\ref{sub:Embedded-C}) can violate these constraints, leading to a kernel crash or data corruption. The resource use limits are set by macros in the generated C code. These may be overridden with the -D flag. The following list describes a selection of these macros: \textbf{MAXNESTING} -- The maximum number of recursive function call levels. The default is 10. \textbf{MAXSTRINGLEN} -- The maximum length of strings. The default is 256 bytes for 32 bit machines and 512 bytes for all other machines. \textbf{MAXTRYLOCK} -- The maximum number of iterations to wait for locks on global variables before declaring possible deadlock and skipping the probe. The default is 1000. \textbf{MAXACTION} -- The maximum number of statements to execute during any single probe hit. The default is 1000. \textbf{MAXMAPENTRIES} -- The maximum number of rows in an array if the array size is not specified explicitly when declared. The default is 2048. \textbf{MAXERRORS} -- The maximum number of soft errors before an exit is triggered. The default is 0. \textbf{MAXSKIPPED} -- The maximum number of skipped reentrant probes before an exit is triggered. The default is 100. \textbf{MINSTACKSPACE} -- The minimum number of free kernel stack bytes required in order to run a probe handler. This number should be large enough for the probe handler's own needs, plus a safety margin. The default is 1024. If something goes wrong with stap or staprun after a probe has started running, you may safely kill both user processes, and remove the active probe kernel module with the rmmod command. Any pending trace messages may be lost. \section{Types of SystemTap scripts\label{sec:Types-of-SystemTap}} \subsection{Probe scripts} Probe scripts are analogous to programs; these scripts identify probe points and associated handlers. \subsection{Tapset scripts} Tapset scripts are libraries of probe aliases and auxiliary functions. The /usr/share/systemtap/tapset directory contains tapset scripts. While these scripts look like regular SystemTap scripts, they cannot be run directly. \section{Components of a SystemTap script} The main construct in the scripting language identifies probes. Probes associate abstract events with a statement block, or probe handler, that is to be executed when any of those events occur. The following example shows how to trace entry and exit from a function using two probes. \begin{vindent} \begin{verbatim} probe kernel.function("sys_mkdir").call { log ("enter") } probe kernel.function("sys_mkdir").return { log ("exit") } \end{verbatim} \end{vindent} To list the probe-able functions in the kernel, use the listing option (\texttt{\textbf{-l}}). For example: \begin{vindent} \begin{verbatim} $ stap -l 'kernel.function("*")' | sort \end{verbatim} \end{vindent} \subsection{Probe definitions} The general syntax is as follows. \begin{vindent} \begin{verbatim} probe PROBEPOINT [, PROBEPOINT] { [STMT ...] } \end{verbatim} \end{vindent} Events are specified in a special syntax called \emph{probe points}. There are several varieties of probe points defined by the translator, and tapset scripts may define others using aliases. The provided probe points are listed in the \texttt{stapprobes(3)}, \texttt{tapset::*(3stap)}, and \texttt{probe::*(3stap)} man pages. The STMT statement block is executed whenever {\i any} of the named PROBEPOINT events occurs. The probe handler is interpreted relative to the context of each event. For events associated with kernel code, this context may include variables defined in the source code at that location. These \emph{target variables}\index{target variables} (or ``context variables'') are presented to the script as variables whose names are prefixed with a dollar sign (\$). They may be accessed only if the compiler used to compile the kernel preserved them, despite optimization. This is the same constraint imposed by a debugger when working with optimized code. Other events may have very little context. \subsection{Probe aliases\label{sub:Probe-aliases}} \index{probe aliases} The general syntax is as follows. \begin{vindent} \begin{verbatim} probe = { } probe += { } \end{verbatim} \end{vindent} New probe points may be defined using \emph{aliases}. A probe point alias looks similar to probe definitions, but instead of activating a probe at the given point, it defines a new probe point name as an alias to an existing one. New probe aliases may refer to one or more existing probe aliases. Multiple aliases may share the same underlying probe points. The following is an example. \begin{vindent} \begin{verbatim} probe socket.sendmsg = kernel.function ("sock_sendmsg") { ... } probe socket.do_write = kernel.function ("do_sock_write") { ... } probe socket.send = socket.sendmsg, socket.do_write { ... } \end{verbatim} \end{vindent} There are two types of aliases, the prologue style and the epilogue style which are identified by the equal sign (\texttt{\textbf{=}}) and \char`\"{}\texttt{\textbf{+=}}\char`\"{} respectively. A probe that uses a probe point alias will create an actual probe, with the handler of the alias \emph{pre-pended}. This pre-pending behavior serves several purposes. It allows the alias definition to pre-process the context of the probe before passing control to the handler specified by the user. This has several possible uses, demonstrated as follows. \begin{vindent} \begin{verbatim} # Skip probe unless given condition is met: if ($flag1 != $flag2) next # Supply values describing probes: name = "foo" # Extract the target variable to a plain local variable: var = $var \end{verbatim} \end{vindent} \subsubsection{Prologue-style aliases (=)} \index{prologue-style aliases} \index{=} For a prologue style alias, the statement block that follows an alias definition is implicitly added as a prologue to any probe that refers to the alias. The following is an example. \begin{vindent} \begin{verbatim} # Defines a new probe point syscall.read, which expands to # kernel.function("sys_read"), with the given statement as # a prologue. # probe syscall.read = kernel.function("sys_read") { fildes = $fd } \end{verbatim} \end{vindent} \subsubsection{Epilogue-style aliases (+=)} \index{epilogue-style aliases} \index{+=} The statement block that follows an alias definition is implicitly added as an epilogue to any probe that refers to the alias. It is not useful to define new variables there (since no subsequent code will see them), but rather the code can take action based upon variables set by the prologue or by the user code. The following is an example: \begin{vindent} \begin{verbatim} # Defines a new probe point with the given statement as an # epilogue. # probe syscall.read += kernel.function("sys_read") { if (traceme) println ("tracing me") } \end{verbatim} \end{vindent} \subsubsection{Probe alias usage} A probe alias is used the same way as any built-in probe type, by naming it: \begin{vindent} \begin{verbatim} probe syscall.read { printf("reading fd=%d\n", fildes) } \end{verbatim} \end{vindent} \subsubsection{Alias suffixes} It is possible to include a suffix with a probe alias invocation. If only the initial part of a probe point matches an alias, the remainder is treated as a suffix and attached to the underlying probe point(s) when the alias is expanded. For example: \begin{vindent} \begin{verbatim} /* Define an alias: */ probe sendrecv = tcp.sendmsg, tcp.recvmsg { ... } /* Use the alias in its basic form: */ probe sendrecv { ... } /* Use the alias with an additional suffix: */ probe sendrecv.return { ... } \end{verbatim} \end{vindent} Here, the second use of the probe alias is equivalent to writing \verb+probe tcp.sendmsg.return, tcp.recvmsg.return+. As another example, the probe points \verb+tcp.sendmsg.return+ and \verb+tcp.recvmsg.return+ are actually defined as aliases in the tapset \verb+tcp.stp+. They expand to a probe point of the form \verb+kernel.function("...").return+, so they can also be suffixed: \begin{vindent} \begin{verbatim} probe tcp.sendmsg.return.maxactive(10) { printf("returning from sending %d bytes\n", size) } \end{verbatim} \end{vindent} Here, the probe point expands to \verb+kernel.function("tcp_sendmsg").return.maxactive(10)+. \subsubsection{Alias suffixes and wildcards} When expanding wildcards, SystemTap generally avoids considering alias suffixes in the expansion. The exception is when a wildcard element is encountered that does not have any ordinary expansions. Consider the following example: \begin{vindent} \begin{verbatim} probe some_unrelated_probe = ... { ... } probe myprobe = syscall.read { ... } probe myprobe.test = some_unrelated_probe { ... } probe myprobe.* { ... } probe myprobe.ret* { ... } \end{verbatim} \end{vindent} Here, \verb+return+ would be a valid suffix for \verb+myprobe+. The wildcard \verb+myprobe.*+ matches the ordinary alias \verb+myprobe.test+, and hence the suffix expansion \verb+myprobe.return+ is not included. Conversely, \verb+myprobe.ret*+ does not match any ordinary aliases, so the suffix \verb+myprobe.return+ is included as an expansion. \subsection{Variables\label{sub:Variables}} \index{variables} Identifiers for variables and functions are alphanumeric sequences, and may include the underscore (\_) and the dollar sign (\$) characters. They may not start with a plain digit. Each variable is by default local to the probe or function statement block where it is mentioned, and therefore its scope and lifetime is limited to a particular probe or function invocation. Scalar variables are implicitly typed as either string or integer. Associative arrays also have a string or integer value, and a tuple of strings or integers serves as a key. Arrays must be declared as global. Local arrays\index{local arrays} are not allowed. The translator performs \emph{type inference} on all identifiers, including array indexes and function parameters. Inconsistent type-related use of identifiers results in an error. Variables may be declared global. Global variables are shared among all probes and remain instantiated as long as the SystemTap session. There is one namespace for all global variables, regardless of the script file in which they are found. Because of possible concurrency limits, such as multiple probe handlers, each global variable used by a probe is automatically read- or write-locked while the handler is running. A global declaration may be written at the outermost level anywhere in a script file, not just within a block of code. Global variables which are written but never read will be displayed automatically at session shutdown. The following declaration marks \texttt{var1} and \texttt{var2} as global. The translator will infer a value type for each, and if the variable is used as an array, its key types. \begin{vindent} \begin{verbatim} global var1[=], var2[=] \end{verbatim} \end{vindent} The scope of a global variable may be limited to a tapset or user script file using private keyword. The global keyword is optional when defining a private global variable. Following declaration marks var1 and var2 private globals. \begin{vindent} \begin{verbatim} private global var1[=] private var2[=] \end{verbatim} \end{vindent} \subsubsection{Unused variables} \index{unused variables} The SystemTap translator removes unused variables. Global variable that are never written or read are discarded. Every local variables where the variable is only written but never read are also discarded. This optimization prunes unused variables defined in the probe aliases, but never used in the probe handler. If desired, this optimization can disabled with the \texttt{-u} option. \subsection{Auxiliary functions\label{sub:Auxiliary-functions}} \index{auxiliary functions} General syntax: \begin{vindent} \begin{verbatim} function [:] ( [:], ... )[:] { } \end{verbatim} \end{vindent} SystemTap scripts may define subroutines to factor out common work. Functions may take any number of scalar arguments, and must return a single scalar value. Scalars in this context are integers or strings. For more information on scalars, see Section~\ref{sub:Variables} and Section~\ref{sub:Data-types}\texttt{.} The following is an example function declaration. \begin{vindent} \begin{verbatim} function thisfn (arg1, arg2) { return arg1 + arg2 } \end{verbatim} \end{vindent} Note the general absence of type declarations, which are inferred by the translator. If desired, a function definition may include explicit type declarations for its return value, its arguments, or both. This is helpful for embedded-C functions. In the following example, the type inference engine need only infer the type of arg2, a string. \begin{vindent} \begin{verbatim} function thatfn:string(arg1:long, arg2) { return sprintf("%d%s", arg1, arg2) } \end{verbatim} \end{vindent} Functions may call others or themselves recursively, up to a fixed nesting limit. See Section~\ref{sub:SystemTap-safety}. Functions may be marked private using the private keyword to limit their scope to the tapset or user script file they are defined in. An example definition of a private function follows: \begin{vindent} \begin{verbatim} private function three:long () { return 3 } \end{verbatim} \end{vindent} Functions terminating without reaching an explicit return statement will return an implicit 0 or \verb+""+, determined by type inference. Functions may be overloaded during both runtime and compile time. Runtime overloading allows the executed function to be selected while the module is running based on runtime conditions and is achieved using the "next" statement in script functions and \texttt{STAP\_NEXT} macro for embedded-C functions. For example, \begin{vindent} \begin{verbatim} function f() { if (condition) next; print("first function") } function f() %{ STAP_NEXT; print("second function") %} function f() { print("third function") } \end{verbatim} \end{vindent} During a functioncall f(), the execution will transfer to the third function if condition evaluates to true and print "third function". Note that the second function is unconditionally nexted. Parameter overloading allows the function to be executed to be selected at compile time based on the number of arguments provided to the functioncall. For example, \begin{vindent} \begin{verbatim} function g() { print("first function") } function g(x) { print("second function") } g() -> "first function" g(1) -> "second function" \end{verbatim} \end{vindent} Note that runtime overloading does not occur in the above example, as exactly one function will be resolved for the functioncall. The use of a next statement inside a function while no more overloads remain will trigger a runtime exception Runtime overloading will only occur if the functions have the same arity, functions with the same name but different number of parameters are completely unrelated. Execution order is determined by a priority value which may be specified. If no explicit priority is specified, user script functions are given a higher priority than library functions. User script functions and library functions are assigned a default priority value of 0 and 1 respectively. Functions with the same priority are executed in declaration order. For example, \begin{vindent} \begin{verbatim} function f():3 { if (condition) next; print("first function") } function f():1 { if (condition) next; print("second function") } function f():2 { print("third function") } \end{verbatim} \end{vindent} \subsection{Embedded C\label{sub:Embedded-C}} \index{embedded C} SystemTap supports a \emph{guru\index{guru mode} mode} where script safety features such as code and data memory reference protection are removed. Guru mode is set by passing the \textbf{-g} option to the stap command. When in guru mode, the translator accepts C code enclosed between {}``\%\{'' and {}``\%\}'' markers in the top level of the script file. The embedded C code is transcribed verbatim, without analysis, in sequence, into the top level of the generated C code. Thus, guru mode may be useful for adding \#include instructions at the top level of the generated module, or providing auxiliary definitions for use by other embedded code. When in guru mode, embedded C code blocks are also allowed as the body of a SystemTap function (as described in Section~\ref{sub:Embedded-C-Functions}), and in place of any SystemTap expression. In the latter case, the code block must contain a valid expression according to C syntax. Here is an example of the various permitted methods of embedded C code inclusion: \begin{vindent} \begin{verbatim} %{ #include #include %} /* <-- top level */ /* Reads the char value stored at a given address: */ function __read_char:long(addr:long) %{ /* pure */ STAP_RETURN(kderef(sizeof(char), STAP_ARG_addr)); CATCH_DEREF_FAULT (); %} /* <-- function body */ /* Determines whether an IP packet is TCP, based on the iphdr: */ function is_tcp_packet:long(iphdr) { protocol = @cast(iphdr, "iphdr")->protocol return (protocol == %{ IPPROTO_TCP %}) /* <-- expression */ } \end{verbatim} \end{vindent} \subsection{Embedded C functions\label{sub:Embedded-C-Functions}} General syntax: \begin{vindent} \begin{verbatim} function : ( :, ... )[:] %{ %} \end{verbatim} \end{vindent} Embedded C code is permitted in a function body. In that case, the script language body is replaced entirely by a piece of C code enclosed between {}``\%\{'' and {}``\%\}'' markers. The enclosed code may do anything reasonable and safe as allowed by the C parser. There are a number of undocumented but complex safety constraints on concurrency, resource consumption and runtime limits that are applied to code written in the SystemTap language. These constraints are not applied to embedded C code, so use embedded C code with extreme caution. Be especially careful when dereferencing pointers. Use the kread() macro to dereference any pointers that could potentially be invalid or dangerous. If you are unsure, err on the side of caution and use kread(). The kread() macro is one of the safety mechanisms used in code generated by embedded C. It protects against pointer accesses that could crash the system. For example, to access the pointer chain \texttt{name = skb->dev->name} in embedded C, use the following code. \begin{vindent} \begin{verbatim} struct net_device *dev; char *name; dev = kread(&(skb->dev)); name = kread(&(dev->name)); \end{verbatim} \end{vindent} The memory locations reserved for input and output values are provided to a function using macros named \texttt{STAP\_ARG\_foo}\index{STAP_ARG_} (for arguments named \texttt{foo}) and \texttt{STAP\_RETVALUE}\index{STAP_RETVALUE}. Errors may be signalled with \texttt{STAP\_ERROR}. Output may be written with \texttt{STAP\_PRINTF}. The function may return early with \texttt{STAP\_RETURN}. Here are some examples: \begin{vindent} \begin{verbatim} function integer_ops:long (val) %{ STAP_PRINTF("%d\n", STAP_ARG_val); STAP_RETVALUE = STAP_ARG_val + 1; if (STAP_RETVALUE == 4) STAP_ERROR("wrong guess: %d", (int) STAP_RETVALUE); if (STAP_RETVALUE == 3) STAP_RETURN(0); STAP_RETVALUE ++; %} function string_ops:string (val) %{ strlcpy (STAP_RETVALUE, STAP_ARG_val, MAXSTRINGLEN); strlcat (STAP_RETVALUE, "one", MAXSTRINGLEN); if (strcmp (STAP_RETVALUE, "three-two-one")) STAP_RETURN("parameter should be three-two-"); %} function no_ops () %{ STAP_RETURN(); /* function inferred with no return value */ %} \end{verbatim} \end{vindent} The function argument and return value types should be stated if the translator cannot infer them from usage. The translator does not analyze the embedded C code within the function. You should examine C code generated for ordinary script language functions to write compatible embedded-C. Usually, all SystemTap functions and probes run with interrupts disabled, thus you cannot call functions that might sleep within the embedded C. \subsection{Embedded C pragma comments} Embedded C blocks may contain various markers to assert optimization and safety properties. \begin{itemize} \item \verb+/* pure */+ means that the C code has no side effects and may be elided entirely if its value is not used by script code. \item \verb+/* stable */+ means that the C code always has the same value (in any given probe handler invocation), so repeated calls may be automatically replaced by memoized values. Such functions must take no parameters, and also be \verb+/* pure */+. \item \verb+/* unprivileged */+ means that the C code is so safe that even unprivileged users are permitted to use it. (This is useful, in particular, to define an embedded-C function inside a tapset that may be used by unprivileged code.) \item \verb+/* myproc-unprivileged */+ means that the C code is so safe that even unprivileged users are permitted to use it, provided that the target of the current probe is within the user's own process. \item \verb+/* guru */+ means that the C code is so unsafe that a systemtap user must specify \verb+-g+ (guru mode) to use this, even if the C code is being exported from a tapset. \item \verb+/* unmangled */+, used in an embedded-C function, means that the legacy (pre-1.8) argument access syntax should be made available inside the function. Hence, in addition to \verb+STAP_ARG_foo+ and \verb+STAP_RETVALUE+ one can use \verb+THIS->foo+ and \verb+THIS->__retvalue+ respectively inside the function. This is useful for quickly migrating code written for SystemTap version 1.7 and earlier. \item \verb+/* unmodified-fnargs */+ in an embedded-C function, means that the function arguments are not modified inside the function body. \item \verb+/* string */+ in embedded-C expressions only, means that the expression has \verb+const char *+ type and should be treated as a string value, instead of the default long numeric. \end{itemize} \subsection{Accessing script level global variables} Script level global variables may be accessed in embedded-C functions and blocks. To read or write the global variable \textbf{var}, the \verb+/* pragma:read:var */+ or \verb+/* pragma:write:var */+ marker must be first placed in the embedded-C function or block. This provides the macros \verb+STAP_GLOBAL_GET_*+ and \verb+STAP_GLOBAL_SET_*+ macros to allow reading and writing, respectively. For example: \begin{vindent} \begin{verbatim} global var global var2[100] function increment() %{ /* pragma:read:var */ /* pragma:write:var */ /* pragma:read:var2 */ /* pragma:write:var2 */ STAP_GLOBAL_SET_var(STAP_GLOBAL_GET_var()+1); //var++ STAP_GLOBAL_SET_var2(1, 1, STAP_GLOBAL_GET_var2(1, 1)+1); //var2[1,1]++ %} \end{verbatim} \end{vindent} Variables may be read and set in both embedded-C functions and expressions. Strings returned from embedded-C code are decayed to pointers. Variables must also be assigned at script level to allow for type inference. Map assignment does not return the value written, so chaining does not work. \section{Probe points\label{sec:Probe-Points}} \index{probe points} \subsection{General syntax} \index{probe syntax} The general probe point syntax is a dotted-symbol sequence. This divides the event namespace into parts, analogous to the style of the Domain Name System. Each component identifier is parameterized by a string or number literal, with a syntax analogous to a function call. The following are all syntactically valid probe points. \begin{vindent} \begin{verbatim} kernel.function("foo") kernel.function("foo").return module{"ext3"}.function("ext3_*") kernel.function("no_such_function") ? syscall.* end timer.ms(5000) \end{verbatim} \end{vindent} Probes may be broadly classified into \emph{synchronous}\index{synchronous} or \emph{asynchronous}.\index{asynchronous} A synchronous event occurs when any processor executes an instruction matched by the specification. This gives these probes a reference point (instruction address) from which more contextual data may be available. Other families of probe points refer to asynchronous events such as timers, where no fixed reference point is related. Each probe point specification may match multiple locations, such as by using wildcards or aliases, and all are probed. A probe declaration may contain several specifications separated by commas, which are all probed. \subsubsection{Prefixes} \index{prefixes} Prefixes specify the probe target, such as \textbf{kernel}, \textbf{module}, \textbf{timer}, and so on. \subsubsection{Suffixes} \index{suffixes} Suffixes further qualify the point to probe, such as \textbf{.return} for the exit point of a probed function. The absence of a suffix implies the function entry point. \subsubsection{Wildcarded file names, function names} \index{wildcards} A component may include an asterisk ({*}) character, which expands to other matching probe points. An example follows. \begin{vindent} \begin{verbatim} kernel.syscall.* kernel.function("sys_*) \end{verbatim} \end{vindent} \subsubsection{Optional probe points\label{sub:Optional-probe-points}} \index{?} A probe point may be followed by a question mark (?) character, to indicate that it is optional, and that no error should result if it fails to expand. This effect passes down through all levels of alias or wildcard expansion. The following is the general syntax. \begin{vindent} \begin{verbatim} kernel.function("no_such_function") ? \end{verbatim} \end{vindent} \subsubsection{Brace expansion} \index{braceexpansion} Brace expansion is a mechanism which allows a list of probe points to be generated. It is very similar to shell expansion. A component may be surrounded by a pair of curly braces to indicate that the comma-separated sequence of one or more subcomponents will each constitute a new probe point. The braces may be arbitrarily nested. The ordering of expanded results is based on product order. The question mark (?), exclamation mark (!) indicators and probe point conditions may not be placed in any expansions that are before the last component. The following is an example of brace expansion. \begin{vindent} \begin{verbatim} syscall.{write,read} # Expands to syscall.write, syscall.read {kernel,module("nfs")}.function("nfs*")! # Expands to kernel.function("nfs*")!, module("nfs").function("nfs*")! \end{verbatim} \end{vindent} \subsection{Built-in probe point types (DWARF probes)} \index{built-in probes} \index{dwarf probes} \label{dwarfprobes} This family of probe points uses symbolic debugging information for the target kernel or module, as may be found in executables that have not been stripped, or in the separate \textbf{debuginfo} packages. They allow logical placement of probes into the execution path of the target by specifying a set of points in the source or object code. When a matching statement executes on any processor, the probe handler is run in that context. Points in a kernel are identified by module, source file, line number, function name or some combination of these. Here is a list of probe point specifications currently supported: \begin{vindent} \begin{verbatim} kernel.function(PATTERN) kernel.function(PATTERN).call kernel.function(PATTERN).return kernel.function(PATTERN).return.maxactive(VALUE) kernel.function(PATTERN).inline kernel.function(PATTERN).label(LPATTERN) module(MPATTERN).function(PATTERN) module(MPATTERN).function(PATTERN).call module(MPATTERN).function(PATTERN).return.maxactive(VALUE) module(MPATTERN).function(PATTERN).inline kernel.statement(PATTERN) kernel.statement(ADDRESS).absolute module(MPATTERN).statement(PATTERN) \end{verbatim} \end{vindent} The \textbf{.function} variant places a probe near the beginning of the named function, so that parameters are available as context variables. The \textbf{.return} variant places a probe at the moment of return from the named function, so the return value is available as the \$return context variable. The entry parameters are also available, though the function may have changed their values. Return probes may be further qualified with \textbf{.maxactive}, which specifies how many instances of the specified function can be probed simultaneously. You can leave off \textbf{.maxactive} in most cases, as the default (\textbf{KRETACTIVE}) should be sufficient. However, if you notice an excessive number of skipped probes, try setting \textbf{.maxactive} to incrementally higher values to see if the number of skipped probes decreases. The \textbf{.inline} modifier for \textbf{.function} filters the results to include only instances of inlined functions. The \textbf{.call} modifier selects the opposite subset. The \textbf{.exported} modifier filters the results to include only exported functions. Inline functions do not have an identifiable return point, so \textbf{.return} is not supported on \textbf{.inline} probes. The \textbf{.statement} variant places a probe at the exact spot, exposing those local variables that are visible there. In the above probe descriptions, MPATTERN stands for a string literal that identifies the loaded kernel module of interest and LPATTERN stands for a source program label. Both MPATTERN and LPATTERN may include asterisk ({*}), square brackets \char`\"{}{[}]\char`\"{}, and question mark (?) wildcards. PATTERN stands for a string literal that identifies a point in the program. It is composed of three parts: \begin{enumerate} \item The first part is the name of a function, as would appear in the nm program's output. This part may use the asterisk and question mark wildcard operators to match multiple names. \item The second part is optional, and begins with the ampersand (@) character. It is followed by the path to the source file containing the function, which may include a wildcard pattern, such as mm/slab{*}. In most cases, the path should be relative to the top of the linux source directory, although an absolute path may be necessary for some kernels. If a relative pathname doesn't work, try absolute. \item The third part is optional if the file name part was given. It identifies the line number in the source file, preceded by a ``:'' or ``+''. The line number is assumed to be an absolute line number if preceded by a ``:'', or relative to the entry of the function if preceded by a ``+''. All the lines in the function can be matched with ``:*''. A range of lines x through y can be matched with ``:x-y''. \end{enumerate} Alternately, specify PATTERN as a numeric constant to indicate a relative module address or an absolute kernel address. Some of the source-level variables, such as function parameters, locals, or globals visible in the compilation unit, are visible to probe handlers. Refer to these variables by prefixing their name with a dollar sign within the scripts. In addition, a special syntax allows limited traversal of structures, pointers, arrays, taking the address of a variable or pretty printing a whole structure. \texttt{\$var} refers to an in-scope variable var. If it is a type similar to an integer, it will be cast to a 64-bit integer for script use. Pointers similar to a string (char {*}) are copied to SystemTap string values by the \texttt{kernel\_string()} or \texttt{user\_string()} functions. \texttt{@var("varname")} is an alternative syntax for \texttt{\$varname}. It can also be used to access global variables in a particular compile unit (CU). \texttt{@var("varname@src/file.c")} refers to the global (either file local or external) variable varname defined when the file src/file.c was compiled. The CU in which the variable is resolved is the first CU in the module of the probe point which matches the given file name at the end and has the shortest file name path (e.g. given \texttt{@var("foo@bar/baz.c")} and CUs with file name paths \texttt{src/sub/module/bar/baz.c} and \texttt{src/bar/baz.c} the second CU will be chosen to resolve \texttt{foo}). \texttt{\$var->field} or \texttt{@var("var@file.c")->field} traverses a structure's field. The indirection operator may be repeated to follow additional levels of pointers. \texttt{\$var{[}N]} or \texttt{@var("var@file.c"){[}N]} indexes into an array. The index is given with a literal number. \texttt{\&\$var} or \texttt{\&@var("var@file.c")} provides the address of a variable as a long. It can also be used in combination with field access or array indexing to provide the address of a particular field or an element in an array with \texttt{\&var->field}, \texttt{\&@var("var@file.c"){[}N]} or a combination of those accessors. Using a single \texttt{\$} or a double \texttt{\$\$} suffix provides a swallow or deep string representation of the variable data type. Using a single \texttt{\$}, as in \texttt{\$var\$}, will provide a string that only includes the values of all basic type values of fields of the variable structure type but not any nested complex type values (which will be represented with \texttt{\{...\}}). Using a double \texttt{\$\$}, as in \texttt{@var("var")\$\$} will provide a string that also includes all values of nested data types. \texttt{\$\$vars} expands to a character string that is equivalent to \texttt{sprintf("parm1=\%x ... parmN=\%x var1=\%x ... varN=\%x", \$parm1, ..., \$parmN, \$var1, ..., \$varN)} \texttt{\$\$locals} expands to a character string that is equivalent to \texttt{sprintf("var1=\%x ... varN=\%x", \$var1, ..., \$varN)} \texttt{\$\$parms} expands to a character string that is equivalent to \texttt{sprintf("parm1=\%x ... parmN=\%x", \$parm1, ..., \$parmN)} \subsubsection{kernel.function, module().function} \index{kernel.function} \index{module().function} The \textbf{.function} variant places a probe near the beginning of the named function, so that parameters are available as context variables. General syntax: \begin{vindent} \begin{verbatim} kernel.function("func[@file]") module("modname").function("func[@file]") \end{verbatim} \end{vindent} Examples: \begin{vindent} \begin{verbatim} # Refers to all kernel functions with "init" or "exit" # in the name: kernel.function("*init*"), kernel.function("*exit*") # Refers to any functions within the "kernel/time.c" # file that span line 240: kernel.function("*@kernel/time.c:240") # Refers to all functions in the ext3 module: module("ext3").function("*") \end{verbatim} \end{vindent} \subsubsection{kernel.statement, module().statement} \index{kernel.statement} \index{module().statement} The \textbf{.statement} variant places a probe at the exact spot, exposing those local variables that are visible there. General syntax: \begin{vindent} \begin{verbatim} kernel.statement("func@file:linenumber") module("modname").statement("func@file:linenumber") \end{verbatim} \end{vindent} Example: \begin{vindent} \begin{verbatim} # Refers to the statement at line 296 within the # kernel/time.c file: kernel.statement("*@kernel/time.c:296") # Refers to the statement at line bio_init+3 within the fs/bio.c file: kernel.statement("bio_init@fs/bio.c+3") \end{verbatim} \end{vindent} \subsection{Function return probes} \index{return probes} The \texttt{.return} variant places a probe at the moment of return from the named function, so that the return value is available as the \$return context variable. The entry parameters are also accessible in the context of the return probe, though their values may have been changed by the function. Inline functions do not have an identifiable return point, so \texttt{.return} is not supported on \texttt{.inline} probes. \subsection{DWARF-less probing} \index{DWARF-less probing} In the absence of debugging information, you can still use the \emph{kprobe} family of probes to examine the entry and exit points of kernel and module functions. You cannot look up the arguments or local variables of a function using these probes. However, you can access the parameters by following this procedure: When you're stopped at the entry to a function, you can refer to the function's arguments by number. For example, when probing the function declared: \begin{vindent} \begin{verbatim} asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count) \end{verbatim} \end{vindent} You can obtain the values of \texttt{fd}, \texttt{buf}, and \texttt{count}, respectively, as \texttt{uint\_arg(1)}, \texttt{pointer\_arg(2)}, and \texttt{ulong\_arg(3)}. In this case, your probe code must first call \texttt{asmlinkage()}, because on some architectures the asmlinkage attribute affects how the function's arguments are passed. When you're in a return probe, \texttt{\$return} isn't supported without DWARF, but you can call \texttt{returnval()} to get the value of the register in which the function value is typically returned, or call \texttt{returnstr()} to get a string version of that value. And at any code probepoint, you can call \texttt{{register("regname")}} to get the value of the specified CPU register when the probe point was hit. \texttt{u\_register("regname")} is like \texttt{register("regname")}, but interprets the value as an unsigned integer. SystemTap supports the following constructs: \begin{vindent} \begin{verbatim} kprobe.function(FUNCTION) kprobe.function(FUNCTION).return kprobe.module(NAME).function(FUNCTION) kprobe.module(NAME).function(FUNCTION).return kprobe.statement(ADDRESS).absolute \end{verbatim} \end{vindent} Use \textbf{.function} probes for kernel functions and \textbf{.module} probes for probing functions of a specified module. If you do not know the absolute address of a kernel or module function, use \textbf{.statement} probes. Do not use wildcards in \textit{FUNCTION} and \textit{MODULE} names. Wildcards cause the probe to not register. Also, statement probes are available only in guru mode. \subsection{Userspace probing} \index{userspace probing} \index{process} Support for userspace probing is supported on kernels that are configured to include the utrace or uprobes extensions. \subsubsection{Begin/end variants} \label{sec:beginendvariants} Constructs: \begin{vindent} \begin{verbatim} process.begin process("PATH").begin process(PID).begin process.thread.begin process("PATH").thread.begin process(PID).thread.begin process.end process("PATH").end process(PID).end process.thread.end process("PATH").thread.end process(PID).thread.end \end{verbatim} \end{vindent} The \texttt{.begin} variant is called when a new process described by \texttt{PID} or \texttt{PATH} is created. If no \texttt{PID} or \texttt{PATH} argument is specified (for example \texttt{process.begin}), the probe flags any new process being spawned. The \texttt{.thread.begin} variant is called when a new thread described by \texttt{PID} or \texttt{PATH} is created. The \texttt{.end} variant is called when a process described by \texttt{PID} or \texttt{PATH} dies. The \texttt{.thread.end} variant is called when a thread described by \texttt{PID} or \texttt{PATH} dies. \subsubsection{Syscall variants} \label{sec:syscallvariants} Constructs: \begin{vindent} \begin{verbatim} process.syscall process("PATH").syscall process(PID).syscall process.syscall.return process("PATH").syscall.return process(PID).syscall.return \end{verbatim} \end{vindent} The \texttt{.syscall} variant is called when a thread described by \texttt{PID} or \texttt{PATH} makes a system call. The system call number is available in the \texttt{\$syscall} context variable. The first six arguments of the system call are available in the \texttt{\$argN} parameter, for example \texttt{\$arg1}, \texttt{\$arg2}, and so on. The \texttt{.syscall.return} variant is called when a thread described by \texttt{PID} or \texttt{PATH} returns from a system call. The system call number is available in the \texttt{\$syscall} context variable. The return value of the system call is available in the \texttt{\$return} context variable. \subsubsection{Function/statement variants} \label{sec:function-statement} Constructs: \begin{vindent} \begin{verbatim} process("PATH").function("NAME") process("PATH").statement("*@FILE.c:123") process("PATH").function("*").return process("PATH").function("myfun").label("foo") \end{verbatim} \end{vindent} Full symbolic source-level probes in userspace programs and shared libraries are supported. These are exactly analogous to the symbolic DWARF-based kernel or module probes described previously and expose similar contextual \texttt{\$-variables}. See Section~\ref{dwarfprobes} for more information Here is an example of prototype symbolic userspace probing support: \begin{vindent} \begin{verbatim} # stap -e 'probe process("ls").function("*").call { log (probefunc()." ".$$parms) }' \ -c 'ls -l' \end{verbatim} \end{vindent} To run, this script requires debugging information for the named program and utrace support in the kernel. If you see a "pass 4a-time" build failure, check that your kernel supports utrace. \subsubsection{Absolute variant} \label{sec:absolutevariant} A non-symbolic probe point such as \texttt{process(PID).statement(ADDRESS).absolute} is analogous to \newline\texttt{kernel.statement(ADDRESS).absolute} in that both use raw, unverified virtual addresses and provide no \texttt{\$variables}. The target \texttt{PID} parameter must identify a running process and \texttt{ADDRESS} must identify a valid instruction address. All threads of the listed process will be probed. This is a guru mode probe. \subsubsection{Process probe paths} \label{sec:paths} For all process probes, \texttt{PATH} names refer to executables that are searched the same way that shells do: the explicit path specified if the path name begins with a slash (/) character sequence; otherwise \texttt{\$PATH} is searched. For example, the following probe syntax: \begin{vindent} \begin{verbatim} probe process("ls").syscall {} probe process("./a.out").syscall {} \end{verbatim} \end{vindent} works the same as: \begin{vindent} \begin{verbatim} probe process("/bin/ls").syscall {} probe process("/my/directory/a.out").syscall {} \end{verbatim} \end{vindent} If a process probe is specified without a \texttt{PID} or \texttt{PATH} parameter, all user threads are probed. However, if systemtap is invoked in target process mode, process probes are restricted to the process hierarchy associated with the target process. If stap is running in \texttt{--unprivileged} mode, only processes owned by the current user are selected. \subsubsection{Target process mode} \label{sec:targetprocessmode} Target process mode (invoked with \texttt{stap -c CMD} or \texttt{-x PID}) implicitly restricts all \texttt{process.*} probes to the given child process. It does not affect \texttt{kernel.*} or other probe types. The \texttt{CMD} string is normally run directly, rather than from a ``\texttt{/bin/sh -c}'' sub-shell, since utrace and uprobe probes receive a fairly "clean" event stream. If meta-characters such as redirection operators are present in \texttt{CMD}, ``\texttt{/bin/sh -c CMD}'' is still used, and utrace and uprobe probes will receive events from the shell. For example: \begin{vindent} \begin{verbatim} % stap -e 'probe process.syscall, process.end { printf("%s %d %s\n", execname(), pid(), pp())}' \ -c ls \end{verbatim} \end{vindent} Here is the output from this command: \begin{vindent} \begin{verbatim} ls 2323 process.syscall ls 2323 process.syscall ls 2323 process.end \end{verbatim} \end{vindent} If \texttt{PATH} names a shared library, all processes that map that shared library can be probed. If dwarf debugging information is installed, try using a command with this syntax: \begin{vindent} \begin{verbatim} probe process("/lib64/libc-2.8.so").function("....") { ... } \end{verbatim} \end{vindent} This command probes all threads that call into that library. Typing ``\texttt{stap -c CMD}'' or ``\texttt{stap -x PID}'' restricts this to the target command and descendants only. You can use \texttt{\$\$vars} and others. You can provide the location of debug information to the stap command with the \texttt{-d DIRECTORY} option. To qualify a probe point to a location in a library required by a particular process try using a command with this syntax: \begin{vindent} \begin{verbatim} probe process("...").library("...").function("....") { ... } \end{verbatim} \end{vindent} The library name may use wildcards. The first syntax in the following will probe the functions in the program linkage table of a particular process. The second syntax will also add the program linkage tables of libraries required by that process. .plt("...") can be specified to match particular plt entries. \begin{vindent} \begin{verbatim} probe process("...").plt { ... } probe process("...").plt process("...").library("...").plt { ... } \end{verbatim} \end{vindent} \subsubsection{Instruction probes} \label{sec:insnprobes} Constructs: \begin{vindent} \begin{verbatim} process("PATH").insn process(PID).insn process("PATH").insn.block process(PID).insn.block \end{verbatim} \end{vindent} The \texttt{process().insn} and \texttt{process().insn.block} probes inspect the process after each instruction or block of instructions is executed. These probes are not implemented on all architectures. If they are not implemented on your system, you will receive an error message when the script starts. The \texttt{.insn} probe is called for every single-stepped instruction of the process described by \texttt{PID} or \texttt{PATH}. The \texttt{.insn.block} probe is called for every block-stepped instruction of the process described by \texttt{PID} or \texttt{PATH}. To count the total number of instructions that a process executes, type a command similar to: \begin{vindent} \begin{verbatim} $ stap -e 'global steps; probe process("/bin/ls").insn {steps++} probe end {printf("Total instructions: %d\n", steps);}' \ -c /bin/ls \end{verbatim} \end{vindent} Using this feature will significantly slow process execution. \subsubsection{Static userspace probing} \label{sec:staticuserspace} You can probe symbolic static instrumentation compiled into programs and shared libraries with the following syntax: \begin{vindent} \begin{verbatim} process("PATH").mark("LABEL") \end{verbatim} \end{vindent} The \texttt{.mark} variant is called from a static probe defined in the application by \texttt{STAP\_PROBE1(handle,LABEL,arg1)}. \texttt{STAP\_PROBE1} is defined in the sdt.h file. The parameters are: \begin{tabular}{|l|r|c|} Parameter & Definition \\ \hline \texttt{handle} & the application handle \\ \hline \texttt{LABEL} & corresponds to the \texttt{.mark} argument \\ \hline \texttt{arg1} & the argument \\ \hline \end{tabular} Use \texttt{STAP\_PROBE1} for probes with one argument. Use \texttt{STAP\_PROBE2} for probes with 2 arguments, and so on. The arguments of the probe are available in the context variables \texttt{\$arg1}, \texttt{\$arg2}, and so on. As an alternative to the \texttt{STAP\_PROBE} macros, you can use the dtrace script to create custom macros. The sdt.h file also provides dtrace compatible markers through \texttt{DTRACE\_PROBE} and an associated python \texttt{dtrace} script. You can use these in builds based on dtrace that need dtrace -h or -G functionality. \subsection{Java probes} \index{Java probes} Support for probing Java methods is available using Byteman as a backend. Byteman is an instrumentation tool from the JBoss project which systemtap can use to monitor invocations for a specific method or line in a Java program. Systemtap does so by generating a Byteman script listing the probes to instrument and then invoking the Byteman \texttt{bminstall} utility. A custom option \texttt{-D OPTION} (see the Byteman documentation for more details) can be passed to bminstall by invoking systemtap with option \texttt{-J OPTION}. The systemtap option \texttt{-j} is also provided as a shorthand for \texttt{-J org.jboss.byteman.compile.to.bytecode}. This Java instrumentation support is currently a prototype feature with major limitations: Java probes attach only to one Java process at a time; other Java processes beyond the first one to be observed are ignored. Moreover, Java probing currently does not work across users; the stap script must run (with appropriate permissions) under the same user as the Java process being probed. (Thus a stap script under root currently cannot probe Java methods in a non-root-user Java process.) There are four probe point variants supported by the translator: \begin{vindent} \begin{verbatim} java("PNAME").class("CLASSNAME").method("PATTERN") java("PNAME").class("CLASSNAME").method("PATTERN").return java(PID).class("CLASSNAME").method("PATTERN") java(PID).class("CLASSNAME").method("PATTERN").return \end{verbatim} \end{vindent} The first two probe points refer to Java processes by the name of the Java process. The PATTERN parameter specifies the signature of the Java method to probe. The signature must consist of the exact name of the method, followed by a bracketed list of the types of the arguments, for instance \texttt{myMethod(int,double,Foo)}. Wildcards are not supported. The probe can be set to trigger at a specific line within the method by appending a line number with colon, just as in other types of probes: \texttt{myMethod(int,double,Foo):245}. The CLASSNAME parameter identifies the Java class the method belongs to, either with or without the package qualification. By default, the probe only triggers on descendants of the class that do not override the method definition of the original class. However, CLASSNAME can take an optional caret prefix, as in \verb+class("^org.my.MyClass")+, which specifies that the probe should also trigger on all descendants of MyClass that override the original method. For instance, every method with signature foo(int) in program org.my.MyApp can be probed at once using \begin{vindent} \begin{verbatim} java("org.my.MyApp").class("^java.lang.Object").method("foo(int)") \end{verbatim} \end{vindent} The last two probe points work analogously, but refer to Java processes by PID. (PIDs for already running processes can be obtained using the \texttt{jps} utility.) Context variables defined within java probes include \verb+$provider+ (which identifies the class providing the definition of the triggered method) and \verb+$name+ (which gives the signature of the method). Arguments to the method can be accessed using context variables \verb+$arg1$+ through \verb+$arg10+, for up to the first 10 arguments of a method. \subsection{PROCFS probes} \index{PROCFS probes} These probe points allow procfs pseudo-files in \texttt{/proc/systemtap/\textit{MODNAME}} to be created, read and written. Specify the name of the systemtap module as \texttt{\textit{MODNAME}}. There are four probe point variants supported by the translator: \begin{vindent} \begin{verbatim} procfs("PATH").read procfs("PATH").write procfs.read procfs.write \end{verbatim} \end{vindent} \texttt{PATH} is the file name to be created, relative to \texttt{/proc/systemtap/MODNAME}. If no \texttt{PATH} is specified (as in the last two variants in the previous list), \texttt{PATH} defaults to "command". When a user reads \texttt{/proc/systemtap/MODNAME/PATH}, the corresponding procfs read probe is triggered. Assign the string data to be read to a variable named \texttt{\$value}, as follows: \begin{vindent} \begin{verbatim} procfs("PATH").read { $value = "100\n" } \end{verbatim} \end{vindent} When a user writes into \texttt{/proc/systemtap/MODNAME/PATH}, the corresponding procfs write probe is triggered. The data the user wrote is available in the string variable named \texttt{\$value}, as follows: \begin{vindent} \begin{verbatim} procfs("PATH").write { printf("User wrote: %s", $value) } \end{verbatim} \end{vindent} \subsection{Marker probes} \index{marker probes} This family of probe points connects to static probe markers inserted into the kernel or a module. These markers are special macro calls in the kernel that make probing faster and more reliable than with DWARF-based probes. DWARF debugging information is not required to use probe markers. Marker probe points begin with a \texttt{kernel} prefix which identifies the source of the symbol table used for finding markers. The suffix names the marker itself: \texttt{mark.("MARK")}. The marker name string, which can contain wildcard characters, is matched against the names given to the marker macros when the kernel or module is compiled. Optionally, you can specify \texttt{format("FORMAT")}. Specifying the marker format string allows differentiation between two markers with the same name but different marker format strings. The handler associated with a marker probe reads any optional parameters specified at the macro call site named \texttt{\$arg1} through \texttt{\$argNN}, where \texttt{NN} is the number of parameters supplied by the macro. Number and string parameters are passed in a type-safe manner. The marker format string associated with a marker is available in \texttt{\$format}. The marker name string is available in \texttt{\$name}. Here are the marker probe constructs: \begin{vindent} \begin{verbatim} kernel.mark("MARK") kernel.mark("MARK").format("FORMAT") \end{verbatim} \end{vindent} For more information about marker probes, see \url{http://sourceware.org/systemtap/wiki/UsingMarkers}. \subsection{Tracepoints} \label{sec:tracepoints} \index{tracepoints} This family of probe points hooks to static probing tracepoints inserted into the kernel or kernel modules. As with marker probes, these tracepoints are special macro calls inserted by kernel developers to make probing faster and more reliable than with DWARF-based probes. DWARF debugging information is not required to probe tracepoints. Tracepoints have more strongly-typed parameters than marker probes. Tracepoint probes begin with \texttt{kernel}. The next part names the tracepoint itself: \texttt{trace("name")}. The tracepoint \texttt{name} string, which can contain wildcard characters, is matched against the names defined by the kernel developers in the tracepoint header files. The handler associated with a tracepoint-based probe can read the optional parameters specified at the macro call site. These parameters are named according to the declaration by the tracepoint author. For example, the tracepoint probe \texttt{kernel.trace("sched\_switch")} provides the parameters \texttt{\$rq}, \texttt{\$prev}, and \texttt{\$next}. If the parameter is a complex type such as a struct pointer, then a script can access fields with the same syntax as DWARF \texttt{\$target} variables. Tracepoint parameters cannot be modified; however, in guru mode a script can modify fields of parameters. The name of the tracepoint is available in \texttt{\$\$name}, and a string of \texttt{name=value} pairs for all parameters of the tracepoint is available in \texttt{\$\$vars} or \texttt{\$\$parms}. \subsection{Syscall probes} \label{sec:syscall} \index{syscall probes} The \texttt{syscall.*} aliases define several hundred probes. They use the following syntax: \begin{vindent} \begin{verbatim} syscall.NAME syscall.NAME.return \end{verbatim} \end{vindent} Generally, two probes are defined for each normal system call as listed in the syscalls(2) manual page: one for entry and one for return. System calls that never return do not have a corresponding \texttt{.return} probe. Each probe alias defines a variety of variables. Look at the tapset source code to find the most reliable source of variable definitions. Generally, each variable listed in the standard manual page is available as a script-level variable. For example, \texttt{syscall.open} exposes file name, flags, and mode. In addition, a standard suite of variables is available at most aliases, as follows: \begin{itemize} \item \texttt{argstr}: A pretty-printed form of the entire argument list, without parentheses. \item \texttt{name}: The name of the system call. \item \texttt{retstr}: For return probes, a pretty-printed form of the system call result. \end{itemize} Not all probe aliases obey all of these general guidelines. Please report exceptions that you encounter as a bug. \subsection{Timer probes} \index{timer probes} You can use intervals defined by the standard kernel jiffies\index{jiffies} timer to trigger probe handlers asynchronously. A \emph{jiffy} is a kernel-defined unit of time typically between 1 and 60 msec. Two probe point variants are supported by the translator: \begin{vindent} \begin{verbatim} timer.jiffies(N) timer.jiffies(N).randomize(M) \end{verbatim} \end{vindent} The probe handler runs every N jiffies. If the \texttt{randomize}\index{randomize} component is given, a linearly distributed random value in the range {[}-M \ldots{} +M] is added to N every time the handler executes. N is restricted to a reasonable range (1 to approximately 1,000,000), and M is restricted to be less than N. There are no target variables provided in either context. Probes can be run concurrently on multiple processors. Intervals may be specified in units of time. There are two probe point variants similar to the jiffies timer: \begin{vindent} \begin{verbatim} timer.ms(N) timer.ms(N).randomize(M) \end{verbatim} \end{vindent} Here, N and M are specified in milliseconds\index{milliseconds}, but the full options for units are seconds (s or sec), milliseconds (ms or msec), microseconds (us or usec), nanoseconds (ns or nsec), and hertz (hz). Randomization is not supported for hertz timers. The resolution of the timers depends on the target kernel. For kernels prior to 2.6.17, timers are limited to jiffies resolution, so intervals are rounded up to the nearest jiffies interval. After 2.6.17, the implementation uses hrtimers for greater precision, though the resulting resolution will be dependent upon architecture. In either case, if the randomize component is given, then the random value will be added to the interval before any rounding occurs. Profiling timers are available to provide probes that execute on all CPUs at each system tick. This probe takes no parameters, as follows. \begin{vindent} \begin{verbatim} timer.profile.tick \end{verbatim} \end{vindent} Full context information of the interrupted process is available, making this probe suitable for implementing a time-based sampling profiler. It is recommended to use the tapset probe \verb+timer.profile+ rather than \verb+timer.profile.tick+. This probe point behaves identically to \verb+timer.profile.tick+ when the underlying functionality is available, and falls back to using \verb+perf.sw.cpu_clock+ on some recent kernels which lack the corresponding profile timer facility. The following is an example of timer usage. \begin{vindent} \begin{verbatim} # Refers to a periodic interrupt, every 1000 jiffies: timer.jiffies(1000) # Fires every 5 seconds: timer.sec(5) # Refers to a periodic interrupt, every 1000 +/- 200 jiffies: timer.jiffies(1000).randomize(200) \end{verbatim} \end{vindent} \subsection{Special probe points} The probe points \texttt{begin} and \texttt{end} are defined by the translator to refer to the time of session startup and shutdown. There are no target variables available in either context. \subsubsection{begin} \index{begin} The \texttt{begin} probe is the start of the SystemTap session. All \texttt{begin} probe handlers are run during the startup of the session. \subsubsection{end} \index{end} The \texttt{end} probe is the end of the SystemTap session. All \texttt{end} probes are run during the normal shutdown of a session, such as in the aftermath of a SystemTap \texttt{exit} function call, or an interruption from the user. In the case of an shutdown triggered by error, \texttt{end} probes are not run. \subsubsection{error} \index{error} The \emph{error} probe point is similar to the end probe, except the probe handler runs when the session ends if an error occurred. In this case, an \texttt{end} probe is skipped, but each \texttt{error} probe is still attempted. You can use an \texttt{error} probe to clean up or perform a final action on script termination. Here is a simple example: \begin{vindent} \begin{verbatim} probe error { println ("Oops, errors occurred. Here's a report anyway.") foreach (coin in mint) { println (coin) } } \end{verbatim} \end{vindent} \subsubsection{begin, end, and error probe sequence} \index{probe sequence} \texttt{begin}, \texttt{end}, and \texttt{error} probes can be specified with an optional sequence number that controls the order in which they are run. If no sequence number is provided, the sequence number defaults to zero and probes are run in the order that they occur in the script file. Sequence numbers may be either positive or negative, and are especially useful for tapset writers who want to do initialization in a \texttt{begin} probe. The following are examples. \begin{vindent} \begin{verbatim} # In a tapset file: probe begin(-1000) { ... } # In a user script: probe begin { ... } \end{verbatim} \end{vindent} The user script \texttt{begin} probe defaults to sequence number zero, so the tapset \texttt{begin} probe will run first. \subsubsection{never} \index{never} The \texttt{never} probe point is defined by the translator to mean \emph{never}. Its statements are analyzed for symbol and type correctness, but its probe handler is never run. This probe point may be useful in conjunction with optional probes. See Section~\ref{sub:Optional-probe-points}. \section{Language elements\label{sec:Language-Elements}} \subsection{Identifiers} \index{identifiers} \emph{Identifiers} are used to name variables and functions. They are an alphanumeric sequence that may include the underscore (\_) and dollar sign (\$) characters. They have the same syntax as C identifiers, except that the dollar sign is also a legal character. Identifiers that begin with a dollar sign are interpreted as references to variables in the target software, rather than to SystemTap script variables. Identifiers may not start with a plain digit. \subsection{Data types\label{sub:Data-types}} \index{data types} The SystemTap language includes a small number of data types, but no type declarations. A variable's type is inferred\index{inference} from its use. To support this inference, the translator enforces consistent typing of function arguments and return values, array indices and values. There are no implicit type conversions between strings and numbers. Inconsistent type-related use of an identifier signals an error. \subsubsection{Literals} \index{literals} Literals are either strings or integers. Literal integers can be expressed as decimal, octal, or hexadecimal, using C notation. Type suffixes (e.g., \emph{L} or \emph{U}) are not used. \subsubsection{Integers\label{sub:Integers}} \index{integers} \index{numbers} Integers are decimal, hexadecimal, or octal, and use the same notation as in C. Integers are 64-bit signed quantities, although the parser also accepts (and wraps around) values above positive $2^{63}$ but below $2^{64}$. \subsubsection{Strings\label{sub:Strings}} \index{strings} Strings are enclosed in quotation marks ({}``string''), and pass through standard C escape codes with backslashes. A string literal may be split into several pieces, which are glued together, as follows. \begin{vindent} \begin{verbatim} str1 = "foo" "bar" /* --> becomes "foobar" */ str2 = "a good way to do a multi-line\n" "string literal" /* --> becomes "a good way to do a multi-line\nstring literal" */ str3 = "also a good way to " @1 " splice command line args" /* --> becomes "also a good way to foo splice command line args", assuming @1 is given as foo on the command line */ \end{verbatim} \end{vindent} Observe that script arguments can also be glued into a string literal. Strings are limited in length to MAXSTRINGLEN. For more information about this and other limits, see Section~\ref{sub:SystemTap-safety}. \subsubsection{Associative arrays} See Section~\ref{sec:Associative-Arrays} \subsubsection{Statistics} See Section~\ref{sec:Statistics} \subsection{Semicolons} \index{;} The semicolon is the null statement, or do nothing statement. It is optional, and useful as a separator between statements to improve detection of syntax errors and to reduce ambiguities in grammar. \subsection{Comments} \index{comments} Three forms of comments are supported, as follows. \begin{vindent} \begin{verbatim} # ... shell style, to the end of line // ... C++ style, to the end of line /* ... C style ... */ \end{verbatim} \end{vindent} \subsection{Whitespace} \index{whitespace} As in C, spaces, tabs, returns, newlines, and comments are treated as whitespace. Whitespace is ignored by the parser. \subsection{Expressions} \index{expressions} SystemTap supports a number of operators that use the same general syntax, semantics, and precedence as in C and awk. Arithmetic is performed per C rules for signed integers. If the parser detects division by zero or an overflow, it generates an error. The following subsections list these operators. \subsubsection{Binary numeric operators} \index{binary} \texttt{{*} / \% + - >\,{}> <\,{}< \& \textasciicircum{} | \&\& ||} \subsubsection{Binary string operators} \index{binary} \texttt{\textbf{.}} (string concatenation) \subsubsection{Numeric assignment operators} \index{numeric} \texttt{= {*}= /= \%= += -= >\,{}>= <\,{}<= \&= \textasciicircum{}= |=} \subsubsection{String assignment operators} \texttt{= .=} \subsubsection{Unary numeric operators} \index{unary} \texttt{+ - ! \textasciitilde{} ++ -{}-} \subsubsection{Numeric \& string comparison, regular expression matching operators} \index{comparison} \texttt{< > <= >= == !=} \verb+=~+ \verb+!~+ The regular expression matching (\verb+=~+ and \verb+!~+) is a recent feature. The second operand must be a string literal containing a syntactically valid regular expression. The regular expression syntax supports most of the features of POSIX Extended Regular Expressions, except for subexpression reuse (\verb+\1+) functionality. The ability to capture and extract the contents of the matched string and subexpressions has not yet been implemented. \subsubsection{Ternary operator\label{sub:Ternary-operator}} \index{?} \texttt{cond ? exp1 : exp2} \subsubsection{Grouping operator} \index{grouping} \texttt{( exp )} \subsubsection{Function call} \index{fn} General syntax: \texttt{fn ({[} arg1, arg2, ... ])} \subsubsection{\$ptr-\textgreater member} \index{pointer} \texttt{ptr} is a kernel pointer available in a probed context. \subsubsection{Pointer typecasting} \index{Pointer typecasting} \emph{Typecasting} is supported using the \texttt{@cast()} operator. A script can define a pointer type for a \emph{long} value, then access type members using the same syntax as with \texttt{\$target} variables. After a pointer is saved into a script integer variable, the translator loses the necessary type information to access members from that pointer. The \texttt{@cast()} operator tells the translator how to read a pointer. The following statement interprets \texttt{p} as a pointer to a struct or union named \texttt{type\_name} and dereferences the \texttt{member} value: \begin{vindent} \begin{verbatim} @cast(p, "type_name"[, "module"])->member \end{verbatim} \end{vindent} The optional \texttt{module} parameter tells the translator where to look for information about that type. You can specify multiple modules as a list with colon (\texttt{:}) separators. If you do not specify the module parameter, the translator defaults to either the probe module for dwarf probes or to \textit{kernel} for functions and all other probe types. The following statement retrieves the parent PID from a kernel task\_struct: \begin{vindent} \begin{verbatim} @cast(pointer, "task_struct", "kernel")->parent->tgid \end{verbatim} \end{vindent} The translator can create its own module with type information from a header surrounded by angle brackets (\texttt{< >}) if normal debugging information is not available. For kernel headers, prefix it with \texttt{kernel} to use the appropriate build system. All other headers are built with default GCC parameters into a user module. The following statements are examples. \begin{vindent} \begin{verbatim} @cast(tv, "timeval", "")->tv_sec @cast(task, "task_struct", "kernel")->tgid \end{verbatim} \end{vindent} In guru mode, the translator allows scripts to assign new values to members of typecasted pointers. Typecasting is also useful in the case of \texttt{void*} members whose type might be determinable at run time. \begin{vindent} \begin{verbatim} probe foo { if ($var->type == 1) { value = @cast($var->data, "type1")->bar } else { value = @cast($var->data, "type2")->baz } print(value) } \end{verbatim} \end{vindent} \subsubsection{\textless value\textgreater\ in \textless array\_name\textgreater} \index{index} This expression evaluates to true if the array contains an element with the specified index. \subsubsection{{[} \textless value\textgreater, ... ] in \textless array\_name\textgreater} The number of index values must match the number of indexes previously specified. \subsection{Literals passed in from the stap command line\label{sub:Literals-passed-in}} \index{literals} \emph{Literals} are either strings enclosed in double quotes ('' '') or integers. For information about integers, see Section~\ref{sub:Integers}. For information about strings, see Section~\ref{sub:Strings}. Script arguments at the end of a command line are expanded as literals. You can use these in all contexts where literals are accepted. A reference to a nonexistent argument number is an error. \subsubsection{\$1 \ldots{} \$\textless NN\textgreater\ for literal pasting} \index{\$} Use \texttt{\$1 \ldots{} \$} for pasting the entire argument string into the input stream, which will be further lexically tokenized. \subsubsection{@1 \ldots{} @\textless NN\textgreater\ for strings} Use \texttt{@1 \ldots{} @} for casting an entire argument as a string literal. \subsubsection{Examples} For example, if the following script named example.stp \begin{vindent} \begin{verbatim} probe begin { printf("%d, %s\n", $1, @2) } \end{verbatim} \end{vindent} is invoked as follows \begin{vindent} \begin{verbatim} # stap example.stp '5+5' mystring \end{verbatim} \end{vindent} then 5+5 is substituted for \$1 and \char`\"{}mystring\char`\"{} for @2. The output will be \begin{vindent} \begin{verbatim} 10, mystring \end{verbatim} \end{vindent} \subsection{Conditional compilation} \subsubsection{Conditions} \index{conditions} One of the steps of parsing is a simple preprocessing stage. The preprocessor supports conditionals with a general form similar to the ternary operator (Section~\ref{sub:Ternary-operator}). \begin{vindent} \begin{verbatim} %( CONDITION %? TRUE-TOKENS %) %( CONDITION %? TRUE-TOKENS %: FALSE-TOKENS %) \end{verbatim} \end{vindent} The CONDITION is a limited expression whose format is determined by its first keyword. The following is the general syntax. \begin{vindent} \begin{verbatim} %( %? [ %: ] %) \end{verbatim} \end{vindent} \subsubsection{Conditions based on available target variables} \index{defined target variable} The predicate @defined() is available for testing whether a particular \$variable/expression is resolvable at translation time. The following is an example of its use: \begin{vindent} \begin{verbatim} probe foo { if (@defined($bar)) log ("$bar is available here") } \end{verbatim} \end{vindent} \subsubsection{Conditions based on kernel version: kernel\_v, kernel\_vr} \index{kernel version} \index{kernel\_vr} \index{kernel\_v} If the first part of a conditional expression is the identifier \texttt{kernel\_v} or \texttt{kernel\_vr}, the second part must be one of six standard numeric comparison operators {}``\textless'', {}``\textless ='', {}``=='', {}``!='', {}``\textgreater'', or {}``\textgreater ='', and the third part must be a string literal that contains an RPM-style version-release value. The condition returns true if the version of the target kernel (as optionally overridden by the \textbf{-r} option) matches the given version string. The comparison is performed by the glibc function strverscmp. \texttt{kernel\_v} refers to the kernel version number only, such as {}``2.6.13\char`\"{}. \texttt{kernel\_vr} refers to the kernel version number including the release code suffix, such as {}``2.6.13-1.322FC3smp''. \subsubsection{Conditions based on architecture: arch} \index{arch} If the first part of the conditional expression is the identifier \texttt{arch} which refers to the processor architecture, then the second part is a string comparison operator ''=='' or ''!='', and the third part is a string literal for matching it. This comparison is a simple string equality or inequality. The currently supported architecture strings are i386, i686, x86\_64, ia64, s390, and powerpc. \subsubsection{Conditions based on privilege level: systemtap\_privilege} \index{systemtap\_privilege} If the first part of the conditional expression is the identifier \texttt{systemtap\_privilege} which refers to the privilege level the systemtap script is being compiled with, then the second part is a string comparison operator ''=='' or ''!='', and the third part is a string literal for matching it. This comparison is a simple string equality or inequality. The possible privilege strings to consider are \verb+"stapusr"+ for unprivileged scripts, and \verb+"stapsys"+ or \verb+"stapdev"+ for privileged scripts. (In general, to test for a privileged script it is best to use \verb+!= "stapusr"+.) This condition can be used to write scripts that can be run in both privileged and unprivileged modes, with additional functionality made available in the privileged case. \subsubsection{True and False Tokens} \index{tokens} TRUE-TOKENS and FALSE-TOKENS are zero or more general parser tokens, possibly including nested preprocessor conditionals, that are pasted into the input stream if the condition is true or false. For example, the following code induces a parse error unless the target kernel version is newer than 2.6.5. \begin{vindent} \begin{verbatim} %( kernel_v <= "2.6.5" %? **ERROR** %) # invalid token sequence \end{verbatim} \end{vindent} The following code adapts to hypothetical kernel version drift. \begin{vindent} \begin{verbatim} probe kernel.function ( %( kernel_v <= "2.6.12" %? "__mm_do_fault" %: %( kernel_vr == "2.6.13-1.8273FC3smp" %? "do_page_fault" %: UNSUPPORTED %) %)) { /* ... */ } %( arch == "ia64" %? probe syscall.vliw = kernel.function("vliw_widget") {} %) \end{verbatim} \end{vindent} The following code adapts to the presence of a kernel CONFIG option. \begin{vindent} \begin{verbatim} %( CONFIG_UTRACE == "y" %? probe process.syscall {} %) \end{verbatim} \end{vindent} \subsection{Preprocessor macros} This feature lets scripts eliminate some types of repetition. \subsubsection{Local macros} The preprocessor also supports a simple macro facility. Macros taking zero or more arguments are defined using the following construct: \begin{vindent} \begin{verbatim} @define NAME %( BODY %) @define NAME(PARAM_1, PARAM_2, ...) %( BODY %) \end{verbatim} \end{vindent} Macro arguments are referred to in the body by prefixing the argument name with an \texttt{@} symbol. Likewise, once defined, macros are invoked by prefixing the macro name with an \texttt{@} symbol: \begin{vindent} \begin{verbatim} @define foo %( x %) @define add(a,b) %( ((@a)+(@b)) %) @foo = @add(2,2) \end{verbatim} \end{vindent} Macro expansion is currently performed in a separate pass before conditional compilation. Therefore, both TRUE- and FALSE-tokens in conditional expressions will be macroexpanded regardless of how the condition is evaluated. This can sometimes lead to errors: \begin{vindent} \begin{verbatim} // The following results in a conflict: %( CONFIG_UTRACE == "y" %? @define foo %( process.syscall %) %: @define foo %( **ERROR** %) %) // The following works properly as expected: @define foo %( %( CONFIG_UTRACE == "y" %? process.syscall %: **ERROR** %) %) \end{verbatim} \end{vindent} The first example is incorrect because both \texttt{@define}s are evaluated in a pass prior to the conditional being evaluated. \subsubsection{Library macros} Normally, a macro definition is local to the file it occurs in. Thus, defining a macro in a tapset does not make it available to the user of the tapset. Publically available library macros can be defined by including \texttt{.stpm} files on the tapset search path. These files may only contain \texttt{@define} constructs, which become visible across all tapsets and user scripts. \section{Statement types\label{sec:Statement-Types}} Statements enable procedural control flow within functions and probe handlers. The total number of statements executed in response to any single probe event is limited to MAXACTION, which defaults to 1000. See Section~\ref{sub:SystemTap-safety}. \subsection{break and continue} \index{break} \index{continue} Use \texttt{break} or \texttt{continue} to exit or iterate the innermost nesting loop statement, such as within a \texttt{while, for,} or \texttt{foreach} statement. The syntax and semantics are the same as those used in C. \subsection{try/catch} \index{try} \index{catch} Use \texttt{try}/\texttt{catch} to handle most kinds of run-time errors within the script instead of aborting the probe handler in progress. The semantics are similar to C++ in that try/catch blocks may be nested. The error string may be captured by optionally naming a variable which is to receive it. \begin{vindent} \begin{verbatim} try { /* do something */ /* trigger error like kread(0), or divide by zero, or error("foo") */ } catch (msg) { /* omit (msg) entirely if not interested */ /* println("caught error ", msg) */ /* handle error */ } /* execution continues */ \end{verbatim} \end{vindent} \subsection{delete\label{sub:delete}} \index{delete} \texttt{delete} removes an element. The following statement removes from ARRAY the element specified by the index tuple. The value will no longer be available, and subsequent iterations will not report the element. It is not an error to delete an element that does not exist. \begin{vindent} \begin{verbatim} delete ARRAY[INDEX1, INDEX2, ...] \end{verbatim} \end{vindent} The following syntax removes all elements from ARRAY: \begin{vindent} \begin{verbatim} delete ARRAY \end{verbatim} \end{vindent} The following statement removes the value of SCALAR. Integers and strings are cleared to zero and null (\char`\"{}\char`\"{}) respectively, while statistics are reset to their initial empty state. \begin{vindent} \begin{verbatim} delete SCALAR \end{verbatim} \end{vindent} \subsection{EXP (expression)} \index{expression} An \texttt{expression} executes a string- or integer-valued expression and discards the value. \subsection{for} \index{for} General syntax: \begin{vindent} \begin{verbatim} for (EXP1; EXP2; EXP3) STMT \end{verbatim} \end{vindent} The \texttt{for} statement is similar to the \texttt{for} statement in C. The \texttt{for} expression executes EXP1 as initialization. While EXP2 is non-zero, it executes STMT, then the iteration expression EXP3. \subsection{foreach\label{sub:foreach}} \index{foreach} General syntax: \begin{vindent} \begin{verbatim} foreach (VAR in ARRAY) STMT \end{verbatim} \end{vindent} The \texttt{foreach} statement loops over each element of a named global array, assigning the current key to VAR. The array must not be modified within the statement. If you add a single plus (+) or minus (-) operator after the VAR or the ARRAY identifier, the iteration order will be sorted by the ascending or descending index or value. The following statement behaves the same as the first example, except it is used when an array is indexed with a tuple of keys. Use a sorting suffix on at most one VAR or ARRAY identifier. \begin{vindent} \begin{verbatim} foreach ([VAR1, VAR2, ...] in ARRAY) STMT \end{verbatim} \end{vindent} You can combine the first and second syntax to capture both the full tuple and the keys at the same time as follows. \begin{vindent} \begin{verbatim} foreach (VAR = [VAR1, VAR2, ...] in ARRAY) STMT \end{verbatim} \end{vindent} The following statement is the same as the first example, except that the \texttt{limit} keyword limits the number of loop iterations to EXP times. EXP is evaluated once at the beginning of the loop. \begin{vindent} \begin{verbatim} foreach (VAR in ARRAY limit EXP) STMT \end{verbatim} \end{vindent} \subsection{if} \index{if} General syntax: \begin{vindent} \begin{verbatim} if (EXP) STMT1 [ else STMT2 ] \end{verbatim} \end{vindent} The \texttt{if} statement compares an integer-valued EXP to zero. It executes the first STMT if non-zero, or the second STMT if zero. The \texttt{if} command has the same syntax and semantics as used in C. \subsection{next} \index{next} The \texttt{next} statement returns immediately from the enclosing probe handler. When used in functions, the execution will be immediately transferred to the next overloaded function. \subsection{; (null statement)} \index{;} \index{null statement} General syntax: \begin{vindent} \begin{verbatim} statement1 ; statement2 \end{verbatim} \end{vindent} The semicolon represents the null statement, or do nothing. It is useful as an optional separator between statements to improve syntax error detection and to handle certain grammar ambiguities. \subsection{return} \index{return} General syntax: \begin{vindent} \begin{verbatim} return EXP \end{verbatim} \end{vindent} The \texttt{return} statement returns the EXP value from the enclosing function. If the value of the function is not returned, then a return statement is not needed, and the function will have a special \emph{unknown} type with no return value. \subsection{\{ \} (statement block)} \index{\{ \}} \index{statement block} This is the statement block with zero or more statements enclosed within brackets. The following is the general syntax: \begin{vindent} \begin{verbatim} { STMT1 STMT2 ... } \end{verbatim} \end{vindent} The statement block executes each statement in sequence in the block. Separators or terminators are generally not necessary between statements. The statement block uses the same syntax and semantics as in C. \subsection{while} \index{while} General syntax: \begin{vindent} \begin{verbatim} while (EXP) STMT \end{verbatim} \end{vindent} The \texttt{while} statement uses the same syntax and semantics as in C. In the statement above, while the integer-valued EXP evaluates to non-zero, the parser will execute STMT. \section{Associative arrays\label{sec:Associative-Arrays}} \index{associative arrays} Associative arrays are implemented as hash tables with a maximum size set at startup. Associative arrays are too large to be created dynamically for individual probe handler runs, so they must be declared as global. The basic operations for arrays are setting and looking up elements. These operations are expressed in awk syntax: the array name followed by an opening bracket ({[}), a comma-separated list of up to nine index index expressions, and a closing bracket (]). Each index expression may be a string or a number, as long as it is consistently typed throughout the script. \subsection{Examples} \begin{vindent} \begin{verbatim} # Increment the named array slot: foo [4,"hello"] ++ # Update a statistic: processusage [uid(),execname()] ++ # Set a timestamp reference point: times [tid()] = get_cycles() # Compute a timestamp delta: delta = get_cycles() - times [tid()] \end{verbatim} \end{vindent} \subsection{Types of values} Array elements may be set to a number, a string, or an aggregate. The type must be consistent throughout the use of the array. The first assignment to the array defines the type of the elements. Unset array elements may be fetched and return a null value (zero or empty string) as appropriate, but they are not seen by a membership test. \subsection{Array capacity} Array sizes can be specified explicitly or allowed to default to the maximum size as defined by MAXMAPENTRIES. See Section~\ref{sub:SystemTap-safety} for details on changing MAXMAPENTRIES. You can explicitly specify the size of an array as follows: \begin{vindent} \begin{verbatim} global ARRAY[] \end{verbatim} \end{vindent} If you do not specify the size parameter, then the array is created to hold MAXMAPENTRIES number of elements. \subsection{Array wrapping\label{sub:Array-Wrapping}} Arrays may be wrapped using the percentage symbol (\%) causing previously entered elements to be overwritten if more elements are inserted than the array can hold. This works for both regular and statistics typed arrays. You can mark arrays for wrapping as follows: \begin{vindent} \begin{verbatim} global ARRAY1%[], ARRAY2% \end{verbatim} \end{vindent} \subsection{Iteration, foreach} \index{foreach} Like awk, SystemTap's foreach creates a loop that iterates over key tuples of an array, not only values. The iteration may be sorted by any single key or a value by adding an extra plus symbol (+) or minus symbol (-) to the code or limited to only a few elements with the limit keyword. The following are examples. \begin{vindent} \begin{verbatim} # Simple loop in arbitrary sequence: foreach ([a,b] in foo) fuss_with(foo[a,b]) # Loop in increasing sequence of value: foreach ([a,b] in foo+) { ... } # Loop in decreasing sequence of first key: foreach ([a-,b] in foo) { ... } # Print the first 10 tuples and values in the array in decreasing sequence foreach (v = [i,j] in foo- limit 10) printf("foo[%d,%s] = %d\n", i, j, v) \end{verbatim} \end{vindent} The \texttt{break} and \texttt{continue} statements also work inside foreach loops. Since arrays can be large but probe handlers must execute quickly, you should write scripts that exit iteration early, if possible. For simplicity, SystemTap forbids any modification of an array during iteration with a foreach. For a full description of \texttt{foreach} see subsection \ref{sub:foreach}. \subsection{Deletion} \index{delete} The \texttt{delete} statement can either remove a single element by index from an array or clear an entire array at once. See subsection \ref{sub:delete} for details and examples. \section{Statistics (aggregates)\label{sec:Statistics}} \index{aggregates} Aggregate instances are used to collect statistics on numerical values, when it is important to accumulate new data quickly and in large volume. These instances operate without exclusive locks, and store only aggregated stream statistics. Aggregates make sense only for global variables. They are stored individually or as elements of an associative array. For information about wrapping associative arrays with statistics elements, see section~\ref{sub:Array-Wrapping} \subsection{The aggregation (\textless\hspace{1 sp}\textless\hspace{1 sp}\textless) operator} \index{\textless\hspace{1 sp}\textless\hspace{1 sp}\textless} The aggregation operator is {}``\textless\hspace{1 sp}\textless\hspace{1 sp}\textless'', and its effect is similar to an assignment or a C++ output streaming operation. The left operand specifies a scalar or array-index \emph{l-value}, which must be declared global. The right operand is a numeric expression. The meaning is intuitive: add the given number as a sample to the set of numbers to compute their statistics. The specific list of statistics to gather is given separately by the extraction functions. The following is an example. \begin{vindent} \begin{verbatim} a <<< delta_timestamp writes[execname()] <<< count \end{verbatim} \end{vindent} \subsection{Extraction functions} \index{extraction} For each instance of a distinct extraction function operating on a given identifier, the translator computes a set of statistics. With each execution of an extraction function, the aggregation is computed for that moment across all processors. The first argument of each function is the same style of l-value as used on the left side of the aggregation operation. \subsection{Integer extractors} The following functions provide methods to extract information about aggregate. \subsubsection{@count(s)} \index{count} This statement returns the number of samples accumulated in aggregate s. \subsubsection{@sum(s)} \index{sum} This statement returns the total sum of all samples in aggregate s. \subsubsection{@min(s)} \index{min} This statement returns the minimum of all samples in aggregate s. \subsubsection{@max(s)} \index{max} This statement returns the maximum of all samples in aggregate s. \subsubsection{@avg(s)} \index{avg} This statement returns the average value of all samples in aggregate s. \subsection{Histogram extractors} \index{histograms} The following functions provide methods to extract histogram information. Printing a histogram with the print family of functions renders a histogram object as a tabular "ASCII art" bar chart. \subsubsection{@hist\_linear} \index{hist\_linear} The statement \texttt{@hist\_linear(v,L,H,W)} represents a linear histogram of aggregate \texttt{v}, where \emph{L} and \emph{H} represent the lower and upper end of a range of values and \emph{W} represents the width (or size) of each bucket within the range. The low and high values can be negative, but the overall difference (high minus low) must be positive. The width parameter must also be positive. In the output, a range of consecutive empty buckets may be replaced with a tilde (\textasciitilde{}) character. This can be controlled on the command line with -DHIST\_ELISION=\textless\hspace{1 sp}num\textgreater\hspace{1 sp}, where \textless\hspace{1 sp}num\textgreater\hspace{1 sp} specifies how many empty buckets at the top and bottom of the range to print. The default is 2. A \textless\hspace{1 sp}num\textgreater\hspace{1 sp} of 0 removes all empty buckets. A negative \textless\hspace{1 sp}num\textgreater\hspace{1 sp} disables removal. For example, if you specify -DHIST\_ELISION=3 and the histogram has 10 consecutive empty buckets, the first 3 and last 3 empty buckets will be printed and the middle 4 empty buckets will be represented by a tilde (\textasciitilde{}). The following is an example. \begin{vindent} \begin{verbatim} global reads probe netdev.receive { reads <<< length } probe end { print(@hist_linear(reads, 0, 10240, 200)) } \end{verbatim} \end{vindent} This generates the following output. \begin{samepage} \begin{vindent} \begin{verbatim} value |-------------------------------------------------- count 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1650 200 | 8 400 | 0 600 | 0 ~ 1000 | 0 1200 | 0 1400 | 1 1600 | 0 1800 | 0 \end{verbatim} \end{vindent} \end{samepage} This shows that 1650 network reads were of a size between 0 and 199 bytes, 8 reads were between 200 and 399 bytes, and 1 read was between 1200 and 1399 bytes. The tilde (\textasciitilde{}) character indicates the bucket for 800 to 999 bytes was removed because it was empty. Empty buckets for 2000 bytes and larger were also removed because they were empty. \subsubsection{@hist\_log} \index{hist\_log} The statement \texttt{@hist\_log(v)} represents a base-2 logarithmic histogram. Empty buckets are replaced with a tilde (\textasciitilde{}) character in the same way as \texttt{@hist\_linear()} (see above). The following is an example. \begin{vindent} \begin{verbatim} global reads probe netdev.receive { reads <<< length } probe end { print(@hist_log(reads)) } \end{verbatim} \end{vindent} This generates the following output. \begin{samepage} \begin{vindent} \begin{verbatim} value |-------------------------------------------------- count 8 | 0 16 | 0 32 | 254 64 | 3 128 | 2 256 | 2 512 | 4 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16689 2048 | 0 4096 | 0 \end{verbatim} \end{vindent} \end{samepage} \subsection{Deletion} \index{delete} The \texttt{delete} statement (subsection \ref{sub:delete}) applied to an aggregate variable will reset it to the initial empty state. \section{Formatted output} \subsection{print} \index{print} General syntax: \begin{vindent} \begin{verbatim} print () \end{verbatim} \end{vindent} This function prints a single value of any type. \subsection{printf} \index{printf} General syntax: \begin{vindent} \begin{verbatim} printf (fmt:string, ...) \end{verbatim} \end{vindent} The printf function takes a formatting string as an argument, and a number of values of corresponding types, and prints them all. The format must be a literal string constant. The printf formatting directives are similar to those of C, except that they are fully checked for type by the translator. The formatting string can contain tags that are defined as follows: \begin{vindent} \begin{verbatim} %[flags][width][.precision][length]specifier \end{verbatim} \end{vindent} Where \texttt{specifier} is required and defines the type and the interpretation of the value of the corresponding argument. The following table shows the details of the specifier parameter: \begin{table}[H] \caption{printf specifier values} \begin{tabular}{|>{\raggedright}p{1in}|>{\raggedright}p{3.5in}|>{\raggedright}p{1.25in}|} \hline \textbf{Specifier}& \textbf{Output}& \textbf{Example}\tabularnewline \hline \hline d or i& Signed decimal& 392\tabularnewline \hline o& Unsigned octal& 610\tabularnewline \hline s& String& sample\tabularnewline \hline u& Unsigned decimal& 7235\tabularnewline \hline x& Unsigned hexadecimal (lowercase letters)& 7fa\tabularnewline \hline X& Unsigned hexadecimal (uppercase letters)& 7FA\tabularnewline \hline p& Pointer address& 0x0000000000bc614e\tabularnewline \hline b& Writes a binary value as text using the computer's native byte order. The field width specifies the number of bytes to write. Valid specifications are \%b, \%1b, \%2b, \%4b and \%8b. The default width is 8 (64-bits).& See below\tabularnewline \hline \%& A \% followed by another \% character will write \% to stdout.& \%\tabularnewline \hline \end{tabular} \end{table} The tag can also contain \texttt{flags}, \texttt{width}, \texttt{.precision} and \texttt{modifiers} sub-specifiers, which are optional and follow these specifications: \begin{table}[H] \caption{printf flag values} \begin{tabular}{|>{\raggedright}p{1.5in}|>{\raggedright}p{4.5in}|} \hline \textbf{Flags}& \textbf{Description}\tabularnewline \hline \hline - (minus sign)& Left-justify within the given field width. Right justification is the default (see \texttt{width} sub-specifier).\tabularnewline \hline + (plus sign)& Precede the result with a plus or minus sign even for positive numbers. By default, only negative numbers are preceded with a minus sign.\tabularnewline \hline (space)& If no sign is going to be written, a blank space is inserted before the value.\tabularnewline \hline \#& Used with \texttt{o}, \texttt{x} or \texttt{X} specifiers the value is preceded with \texttt{0}, \texttt{0x} or \texttt{0X} respectively for non-zero values.\tabularnewline \hline 0& Left-pads the number with zeroes instead of spaces, where padding is specified (see \texttt{width} sub-specifier).\tabularnewline \hline \end{tabular} \end{table} \begin{table}[H] \caption{printf width values} \begin{tabular}{|>{\raggedright}p{1.5in}|>{\raggedright}p{4.5in}|} \hline \textbf{Width}& \textbf{Description}\tabularnewline \hline \hline (number)& Minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the result is larger.\tabularnewline \hline \end{tabular} \end{table} % \begin{table}[H] \caption{printf precision values} \begin{tabular}{|>{\raggedright}p{1.5in}|>{\raggedright}p{4.5in}|} \hline \textbf{Precision}& \textbf{Description}\tabularnewline \hline \hline .number& For integer specifiers (\texttt{d, i, o, u, x, X}): \texttt{precision} specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer. A precision of 0 means that no character is written for the value 0. For s: this is the maximum number of characters to be printed. By default all characters are printed until the ending null character is encountered. When no \texttt{precision} is specified, the default is 1. If the period is specified without an explicit value for \texttt{precision}, 0 is assumed.\tabularnewline \hline \end{tabular} \end{table} \textbf{Binary Write Examples} The following is an example of using the binary write functions: \begin{vindent} \begin{verbatim} probe begin { for (i = 97; i < 110; i++) printf("%3d: %1b%1b%1b\n", i, i, i-32, i-64) exit() } \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} 97: aA! 98: bB" 99: cC# 100: dD$ 101: eE% 102: fF& 103: gG' 104: hH( 105: iI) 106: jJ* 107: kK+ 108: lL, 109: mM- \end{verbatim} \end{vindent} Another example: \begin{vindent} \begin{verbatim} stap -e 'probe begin{printf("%b%b", 0xc0dedbad, \ 0x12345678);exit()}' | hexdump -C \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} 00000000 ad db de c0 00 00 00 00 78 56 34 12 00 00 00 00 |........xV4.....| 00000010 \end{verbatim} \end{vindent} Another example: \begin{vindent} \begin{verbatim} probe begin{ printf("%1b%1b%1blo %1b%1brld\n", 72,101,108,87,111) exit() } \end{verbatim} \end{vindent} This prints: \begin{vindent} \begin{verbatim} Hello World \end{verbatim} \end{vindent} \subsection{printd} \index{printd} General syntax: \begin{vindent} \begin{verbatim} printd (delimiter:string, ...) \end{verbatim} \end{vindent} This function takes a string delimiter and two or more values of any type, then prints the values with the delimiter interposed. The delimiter must be a literal string constant. For example: \begin{vindent} \begin{verbatim} printd("/", "one", "two", "three", 4, 5, 6) \end{verbatim} \end{vindent} prints: \begin{vindent} \begin{verbatim} one/two/three/4/5/6 \end{verbatim} \end{vindent} \subsection{printdln} \index{printdln} General syntax: \begin{vindent} \begin{verbatim} printdln (delimiter:string, ...) \end{verbatim} \end{vindent} This function operates like \texttt{printd}, but also appends a newline. \subsection{println} \index{println} General syntax: \begin{vindent} \begin{verbatim} println () \end{verbatim} \end{vindent} This function prints a single value like \texttt{print}, but also appends a newline. \subsection{sprint} \index{sprint} General syntax: \begin{vindent} \begin{verbatim} sprint:string () \end{verbatim} \end{vindent} This function operates like \texttt{print}, but returns the string rather than printing it. \subsection{sprintf} \index{sprintf} General syntax: \begin{vindent} \begin{verbatim} sprintf:string (fmt:string, ...) \end{verbatim} \end{vindent} This function operates like \texttt{printf}, but returns the formatted string rather than printing it. \section{Tapset-defined functions\label{sec:Predefined-Functions}} Unlike built-in functions, tapset-defined functions are implemented in tapset scripts. These are individually documented in the in \texttt{tapset::*(3stap)}, \texttt{function::*(3stap)}, and \texttt{probe::*(3stap)} man pages, and implemented under \texttt{/usr/share/systemtap/tapset}. \section{For Further Reference\label{sec:For-Further-Reference}} For more information, see: \begin{itemize} \item The SystemTap tutorial at \url{http://sourceware.org/systemtap/tutorial/} \item The SystemTap wiki at \url{http://sourceware.org/systemtap/wiki} \item The SystemTap documentation page at \url{http://sourceware.org/systemtap/documentation.html} \item From an unpacked source tarball or GIT directory, the examples in in the src/examples directory, the tapsets in the src/tapset directory, and the test scripts in the src/testsuite directory. \item The man pages for tapsets. For a list, run the command \texttt{{}``man -k tapset::}''. \item The man pages for individual probe points. For a list, run the command \texttt{{}``man -k probe::}''. \item The man pages for individual systemtap functions. For a list, run the command \texttt{{}``man -k function::}''. \end {itemize} \setcounter{secnumdepth}{0} \newpage{} \addcontentsline{toc}{section}{Index} \printindex{} \end{document} systemtap-3.1/doc/tutorial.tex000066400000000000000000001472561305163227500165630ustar00rootroot00000000000000% Copyright (C) 2005-2013 Red Hat Inc. % This file is part of systemtap, and is free software. You can % redistribute it and/or modify it under the terms of the GNU General % Public License (GPL); either version 2, or (at your option) any % later version. \documentclass[compatible]{article} \usepackage{html} \usepackage{graphicx} % \usepackage{moreverb} \usepackage{fancyvrb} \usepackage{listings} \usepackage{fullpage} \usepackage{fancybox} % \usepackage{nomencl} % \usepackage{geometry} % \geometry{letterpaper,text={7in,8.5in}} \usepackage{charter} \newenvironment{boxedminipage}%% Boxed minipage {\begin{makeimage}\begin{center}\begin{Sbox}\begin{minipage}}% {\end{minipage}\end{Sbox}\fbox{\TheSbox}\end{center}\end{makeimage}} \newcommand{\nomenclature}[2]{} % \usepackage{draftcopy} % ugly \bibliographystyle{plain} \makeglossary \parindent0.0cm \parskip0.2cm \begin{document} \begin{center} \LARGE {\bf Systemtap tutorial} \end{center} \hfill \begin{minipage}{2.5in} % contributors please add your names to the list Frank Ch. Eigler {\tt \small } \\ \hfill \today \end{minipage} \tableofcontents \section{Introduction} Systemtap is a tool that allows developers and administrators to write and reuse simple scripts to deeply examine the activities of a live Linux system. Data may be extracted, filtered, and summarized quickly and safely, to enable diagnoses of complex performance or functional problems. {\bf NOTE:} This tutorial does not describe every feature available in systemtap. Please see the individual {\verb+stap+} manual pages for the most up-to-date information. These may be available installed on your system, or at \verb+http://sourceware.org/systemtap/man/+. \nomenclature{script}{A simple programming language understood by systemtap.} The essential idea behind a systemtap script is to name {\em events}, and to give them {\em handlers}. Whenever a specified event occurs, the Linux kernel runs the handler as if it were a quick subroutine, then resumes. There are several kind of events, such as entering or exiting a function, a timer expiring, or the entire systemtap session starting or stopping. A handler is a series of script language statements that specify the work to be done whenever the event occurs. This work normally includes extracting data from the event context, storing them into internal variables, or printing results. \nomenclature{event}{An identifiable instant in the operating system's execution state, such as entry to a function, or expiry of a timer.} \nomenclature{session}{A complete run of a systemtap script program.} \nomenclature{handler}{A series of statements, written in script, which is to be performed whenever an event occurs.} \nomenclature{\tt .stp}{The standard file name extension for systemtap scripts.} Systemtap works by translating the script to C, running the system C compiler to create a kernel module from that. When the module is loaded, it activates all the probed events by hooking into the kernel. Then, as events occur on any processor, the compiled handlers run. Eventually, the session stops, the hooks are disconnected, and the module removed. This entire process is driven from a single command-line program, \verb+stap+. \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat hello-world.stp probe begin { print ("hello world\n") exit () } # stap hello-world.stp hello world \end{verbatim} \end{boxedminipage} \label{fig:hello-world} \caption{A systemtap smoke test.} \end{figure} This paper assumes that you have installed systemtap and its prerequisite kernel development tools and debugging data, so that you can run the scripts such as the simple one in Figure~\ref{fig:hello-world}. Log on as \verb+root+, or even better, login as a user that is a member of \verb+stapdev+ group or as a user authorized to \verb+sudo+, before running systemtap. \begin{figure}[ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat strace-open.stp probe syscall.open { printf ("%s(%d) open (%s)\n", execname(), pid(), argstr) } probe timer.ms(4000) # after 4 seconds { exit () } # stap strace-open.stp vmware-guestd(2206) open ("/etc/redhat-release", O_RDONLY) hald(2360) open ("/dev/hdc", O_RDONLY|O_EXCL|O_NONBLOCK) hald(2360) open ("/dev/hdc", O_RDONLY|O_EXCL|O_NONBLOCK) hald(2360) open ("/dev/hdc", O_RDONLY|O_EXCL|O_NONBLOCK) df(3433) open ("/etc/ld.so.cache", O_RDONLY) df(3433) open ("/lib/tls/libc.so.6", O_RDONLY) df(3433) open ("/etc/mtab", O_RDONLY) hald(2360) open ("/dev/hdc", O_RDONLY|O_EXCL|O_NONBLOCK) \end{verbatim} \end{boxedminipage} \label{fig:strace-open} \caption{A taste of systemtap: a system-wide {\tt strace}, just for the {\tt open} system call.} \end{figure} \nomenclature{strace}{A standard ptrace-based command line tool to trace system call activity of a process.} \section{Tracing} The simplest kind of probe is simply to {\em trace} an event. \nomenclature{trace}{A compact textual record of an event occurrence.} This is the effect of inserting strategically located \verb+print+ statements into a program. This is often the first step of problem solving: explore by seeing a history of what has happened. This style of instrumentation is the simplest. It just asks systemtap to print something at each event. To express this in the script language, you need to say where to probe and what to print there. \subsection{Where to probe} Systemtap supports a number of built-in events. The library of scripts that comes with systemtap, each called a ``tapset'', may define additional ones defined in terms of the built-in family. {\bf See the \verb+stapprobes+ man page for details on these and many other probe point families.} \nomenclature{tapset}{A reusable script forming part of the automatically searched tapset library.} All these events are named using a unified syntax with dot-separated parameterized identifiers: \begin{tabular}{rl} \verb+begin+ & The startup of the systemtap session. \\ \verb+end+ & The end of the systemtap session. \\ \verb+kernel.function("sys_open")+ & The entry to the function named \verb+sys_open+ in the kernel. \\ \verb+syscall.close.return+ & The return from the \verb+close+ system call. \\ \verb+module("ext3").statement(0xdeadbeef)+ & The addressed instruction in the \verb+ext3+ filesystem driver. \\ \verb+timer.ms(200)+ & A timer that fires every 200 milliseconds. \\ \verb+timer.profile+ & A timer that fires periodically on every CPU. \\ \verb+perf.hw.cache_misses+ & A particular number of CPU cache misses have occurred. \\ \verb+procfs("status").read+ & A process trying to read a synthetic file. \\ \verb+process("a.out").statement("*@main.c:200")+ & Line 200 of the \verb+a.out+ program. \end{tabular} Let's say that you would like to trace all function entries and exits in a source file, say \verb+net/socket.c+ in the kernel. The \verb+kernel.function+ probe point lets you express that easily, since systemtap examines the kernel's debugging information to relate object code to source code. It works like a debugger: if you can name or place it, you can probe it. Use \verb+kernel.function("*@net/socket.c").call+ for the function entries\footnote{Without the {\tt .call} qualifier, inlined function instances are also probed, but they have no corresponding {\tt .return}.}, and \verb+kernel.function("*@net/socket.c").return+ for matching exits. Note the use of wildcards in the function name part, and the subsequent \verb+@FILENAME+ part. You can also put wildcards into the file name, and even add a colon (\verb+:+) and a line number, if you want to restrict the search that precisely. Since systemtap will put a separate probe in every place that matches a probe point, a few wildcards can expand to hundreds or thousands of probes, so be careful what you ask for. \nomenclature{debug information}{Data created by the compiler when the kernel or application was built, sometimes packaged into {\tt debuginfo} files, for use by a symbolic debugger.} \nomenclature{wildcard}{Presence of \verb+*+ globbing patterns in probe points.} Once you identify the probe points, the skeleton of the systemtap script appears. The \verb+probe+ keyword introduces a probe point, or a comma-separated list of them. The following \verb+{+ and \verb+}+ braces enclose the handler for all listed probe points. \begin{verbatim} probe kernel.function("*@net/socket.c") { } probe kernel.function("*@net/socket.c").return { } \end{verbatim} You can run this script as is, though with empty handlers there will be no output. Put the two lines into a new file. Run \verb+stap -v FILE+. Terminate it any time with \verb+^C+. (The \verb+-v+ option tells systemtap to print more verbose messages during its processing. Try the \verb+-h+ option to see more options.) \subsection{What to print} Since you are interested in each function that was entered and exited, a line should be printed for each, containing the function name. In order to make that list easy to read, systemtap should indent the lines so that functions called by other traced functions are nested deeper. To tell each single process apart from any others that may be running concurrently, systemtap should also print the process ID in the line. Systemtap provides a variety of such contextual data, ready for formatting. They usually appear as function calls within the handler, like you already saw in Figure~\ref{fig:strace-open}. {\bf See the \verb+function::*+ man pages for those functions and more defined in the tapset library}, but here's a sampling: \begin{tabular}{rl} \verb+tid()+ & The id of the current thread. \\ \verb+pid()+ & The process (task group) id of the current thread. \\ \verb+uid()+ & The id of the current user. \\ \verb+execname()+ & The name of the current process. \\ \verb+cpu()+ & The current cpu number. \\ \verb+gettimeofday_s()+ & Number of seconds since epoch. \\ \verb+get_cycles()+ & Snapshot of hardware cycle counter. \\ \verb+pp()+ & A string describing the probe point being currently handled. \\ \verb+ppfunc()+ & If known, the the function name in which this probe was placed. \\ \verb+$$vars+ & If available, a pretty-printed listing of all local variables in scope. \\ \verb+print_backtrace()+ & If possible, print a kernel backtrace. \\ \verb+print_ubacktrace()+ & If possible, print a user-space backtrace. \\ \end{tabular} The values returned may be strings or numbers. The \verb+print()+ built-in function accepts either as its sole argument. Or, you can use the C-style \verb+printf()+ built-in, whose formatting argument may include \verb+%s+ for a string, \verb+%d+ for a number. \verb+printf+ and other functions take comma-separated arguments. Don't forget a \verb+"\n"+ at the end. There exist more printing / formatting functions too. A particularly handy function in the tapset library is \verb+thread_indent+. Given an indentation delta parameter, it stores internally an indentation counter for each thread (\verb+tid()+), and returns a string with some generic trace data plus an appropriate number of indentation spaces. That generic data includes a timestamp (number of microseconds since the initial indentation for the thread), a process name and the thread id itself. It therefore gives an idea not only about what functions were called, but who called them, and how long they took. Figure~\ref{fig:socket-trace} shows the finished script. It lacks a call to the \verb+exit()+ function, so you need to interrupt it with \verb+^C+ when you want the tracing to stop. \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat socket-trace.stp probe kernel.function("*@net/socket.c").call { printf ("%s -> %s\n", thread_indent(1), ppfunc()) } probe kernel.function("*@net/socket.c").return { printf ("%s <- %s\n", thread_indent(-1), ppfunc()) } # stap socket-trace.stp 0 hald(2632): -> sock_poll 28 hald(2632): <- sock_poll [...] 0 ftp(7223): -> sys_socketcall 1159 ftp(7223): -> sys_socket 2173 ftp(7223): -> __sock_create 2286 ftp(7223): -> sock_alloc_inode 2737 ftp(7223): <- sock_alloc_inode 3349 ftp(7223): -> sock_alloc 3389 ftp(7223): <- sock_alloc 3417 ftp(7223): <- __sock_create 4117 ftp(7223): -> sock_create 4160 ftp(7223): <- sock_create 4301 ftp(7223): -> sock_map_fd 4644 ftp(7223): -> sock_map_file 4699 ftp(7223): <- sock_map_file 4715 ftp(7223): <- sock_map_fd 4732 ftp(7223): <- sys_socket 4775 ftp(7223): <- sys_socketcall [...] \end{verbatim} \end{boxedminipage} \caption{Tracing and timing functions in {\tt net/sockets.c}.} \label{fig:socket-trace} \end{figure} \subsection{Exercises} \begin{enumerate} \item Use the \verb+-L+ option to systemtap to list all the kernel functions named with the word ``nit'' in them. \item Trace some system calls (use \verb+syscall.NAME+ and \verb+.return+ probe points), with the same \verb+thread_indent+ probe handler as in Figure~\ref{fig:socket-trace}. Print parameters using \verb+$$parms+ and \verb+$$return+. Interpret the results. \item Change figure~\ref{fig:socket-trace} by removing the \verb+.call+ modifier from the first probe. Note how function entry and function return now don't match anymore. This is because now the first probe will match both normal function entry and inlined functions. Try putting the \verb+.call+ modifier back and add another probe just for \verb+probe kernel.function("*@net/socket.c").inline+ What \verb+printf+ statement can you come up with in the probe handler to show the inlined function entries nicely in between the \verb+.call+ and \verb+.return+ thread indented output? \end{enumerate} \section{Analysis} Pages of generic tracing text may give you enough information for exploring a system. With systemtap, it is possible to analyze that data, to filter, aggregate, transform, and summarize it. Different probes can work together to share data. Probe handlers can use a rich set of control constructs to describe algorithms, with a syntax taken roughly from \verb+awk+. With these tools, systemtap scripts can focus on a specific question and provide a compact response: no \verb+grep+ needed. \nomenclature{awk}{A classic UNIX stream processing language.} \subsection{Basic constructs} Most systemtap scripts include conditionals, to limit tracing or other logic to those processes or users or {\em whatever} of interest. The syntax is simple: \begin{tabular}{rl} \verb+if (+{\em EXPR}\verb+)+ {\em STATEMENT} [\verb+else+ {\em STATEMENT}\verb+]+ & if/else statement \\ \verb+while (+{\em EXPR}\verb+)+ {\em STATEMENT} & while loop \\ \verb+for (+{\em A}\verb+;+ {\em B}\verb+;+ {\em C}\verb+)+ {\em STATEMENT} & for loop \\ \end{tabular} Scripts may use \verb+break+/\verb+continue+ as in C. Probe handlers can return early using \verb+next+ as in \verb+awk+. Blocks of statements are enclosed in \verb+{+ and \verb+}+. In systemtap, the semicolon (\verb+;+) is accepted as a null statement rather than as a statement terminator, so is only rarely\footnote{Use them between consecutive expressions that place unary {\tt +},{\tt -} or mixed pre/post {\tt ++},{\tt --} in an ambiguous manner.} necessary. Shell-style (\verb+#+), C-style (\verb+/* */+), and C++-style (\verb+//+) comments are all accepted. Expressions look like C or \verb+awk+, and support the usual operators, precedences, and numeric literals. Strings are treated as atomic values rather than arrays of characters. String concatenation is done with the dot (\verb+"a" . "b"+). Some examples: \begin{tabular}{rl} \verb+(uid() > 100)+ & probably an ordinary user \\ \verb+(execname() == "sed")+ & current process is sed \\ \verb+(cpu() == 0 && gettimeofday_s() > 1140498000)+ & after Feb. 21, 2006, on CPU 0 \\ \verb+"hello" . " " . "world"+ & a string in three easy pieces \\ \end{tabular} Variables may be used as well. Just pick a name, assign to it, and use it in expressions. They are automatically initialized and declared. The type of each identifier -- string vs. number -- is automatically inferred by systemtap from the kinds of operators and literals used on it. Any inconsistencies will be reported as errors. Conversion between string and number types is done through explicit function calls. \nomenclature{type}{A designation of each identifier such as a variable, or function, or array value or index, as containing a string or number.} \nomenclature{string}{A \verb+\0+-terminated character string of up to a fixed limit in length.} \nomenclature{number}{A 64-bit signed integer.} \nomenclature{type inference}{The automatic determination of the type of each variable, function parameter, array value and index, based on their use.} \begin{tabular}{rl} \verb+foo = gettimeofday_s()+ & foo is a number \\ \verb+bar = "/usr/bin/" . execname()+ & bar is a string \\ \verb|c++| & c is a number \\ \verb+s = sprint(2345)+ & s becomes the string "2345" \\ \end{tabular} By default, variables are local to the probe they are used in. That is, they are initialized, used, and disposed of at each probe handler invocation. To share variables between probes, declare them global anywhere in the script. Because of possible concurrency (multiple probe handlers running on different CPUs), each global variable used by a probe is automatically read- or write-locked while the handler is running. \nomenclature{global variable}{A scalar, array, or aggregate that was named in a \verb+global+ declaration, sharing that object amongst all probe handlers and functions executed during a systemtap session.} \nomenclature{locking}{An automated facility used by systemtap to protect global variables against concurrent modification and/or access.} \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat timer-jiffies.stp global count_jiffies, count_ms probe timer.jiffies(100) { count_jiffies ++ } probe timer.ms(100) { count_ms ++ } probe timer.ms(12345) { hz=(1000*count_jiffies) / count_ms printf ("jiffies:ms ratio %d:%d => CONFIG_HZ=%d\n", count_jiffies, count_ms, hz) exit () } # stap timer-jiffies.stp jiffies:ms ratio 30:123 => CONFIG_HZ=243 \end{verbatim} \end{boxedminipage} \caption{Experimentally measuring {\tt CONFIG\_HZ}.} \label{fig:timer-jiffies} \end{figure} \subsection{Target variables} A class of special ``target variables'' allow access to the probe point context. \nomenclature{target variable}{A value that may be extracted from the kernel context of the probe point, such as a parameter or local variable within a probed function.} In a symbolic debugger, when you're stopped at a breakpoint, you can print values from the program's context. In systemtap scripts, for those probe points that match with specific executable point (rather than an asynchronous event like a timer), you can do the same. In addition, you can take their address (the \verb+&+ operator), pretty-print structures (the \verb+$+ and \verb+$$+ suffix), pretty-print multiple variables in scope (the \verb+$$vars+ and related variables), or cast pointers to their types (the \verb+@cast+ operator), or test their existence / resolvability (the \verb+@defined+ operator). Read about these in the manual pages. To know which variables are likely to be available, you will need to be familiar with the kernel source you are probing. In addition, you will need to check that the compiler has not optimized those values into unreachable nonexistence. You can use \verb+stap -L PROBEPOINT+ to enumerate the variables available there. Let's say that you are trying to trace filesystem reads/writes to a particular device/inode. From your knowledge of the kernel, you know that two functions of interest could be \verb+vfs_read+ and \verb+vfs_write+. Each takes a \verb+struct file *+ argument, inside there is either a \verb+struct dentry *+ or \verb+struct path *+ which has a \verb+struct dentry *+. The \verb+struct dentry *+ contains a \verb+struct inode *+, and so on. Systemtap allows limited dereferencing of such pointer chains. Two functions, \verb+user_string+ and \verb+kernel_string+, can copy \verb+char *+ target variables into systemtap strings. Figure~\ref{fig:inode-watch} demonstrates one way to monitor a particular file (identified by device number and inode number). The script selects the appropriate variants of \verb+dev_nr+ and\verb+inode_nr+ based on the kernel version. This example also demonstrates passing numeric command-line arguments (\verb+$1+ etc.) into scripts. %$ \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat inode-watch.stp probe kernel.function ("vfs_write"), kernel.function ("vfs_read") { if (@defined($file->f_path->dentry)) { dev_nr = $file->f_path->dentry->d_inode->i_sb->s_dev inode_nr = $file->f_path->dentry->d_inode->i_ino } else { dev_nr = $file->f_dentry->d_inode->i_sb->s_dev inode_nr = $file->f_dentry->d_inode->i_ino } if (dev_nr == ($1 << 20 | $2) # major/minor device && inode_nr == $3) printf ("%s(%d) %s 0x%x/%u\n", execname(), pid(), ppfunc(), dev_nr, inode_nr) } # stat -c "%D %i" /etc/crontab fd03 133099 # stap inode-watch.stp 0xfd 3 133099 more(30789) vfs_read 0xfd00003/133099 more(30789) vfs_read 0xfd00003/133099 \end{verbatim} % $ \end{boxedminipage} \caption{Watching for reads/writes to a particular file.} \label{fig:inode-watch} \end{figure} \subsection{Functions} Functions are conveniently packaged reusable software: it would be a shame to have to duplicate a complex condition expression or logging directive in every placed it's used. So, systemtap lets you define functions of your own. Like global variables, systemtap functions may be defined anywhere in the script. They may take any number of string or numeric arguments (by value), and may return a single string or number. The parameter types are inferred as for ordinary variables, and must be consistent throughout the program. Local and global script variables are available, but target variables are {\em not}. That's because there is no specific debugging-level context associated with a function. \nomenclature{function}{A clump of parametrized script statements that may be repeatedly and recursively called from probe handlers and other functions.} A function is defined with the keyword \verb+function+ followed by a name. Then comes a comma-separated formal argument list (just a list of variable names). The \verb+{ }+-enclosed body consists of any list of statements, including expressions that call functions. Recursion is possible, up to a nesting depth limit. Figure~\ref{fig:functions} displays function syntax. \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # Red Hat convention; see /etc/login.defs UID_MIN function system_uid_p (u) { return u < 500 } # kernel device number assembly macro function makedev (major,minor) { return major << 20 | minor } function trace_common () { printf("%d %s(%d)", gettimeofday_s(), execname(), pid()) # no return value necessary } function fibonacci (i) { if (i < 1) return 0 else if (i < 2) return 1 else return fibonacci(i-1) + fibonacci(i-2) } \end{verbatim} \end{boxedminipage} \caption{Some functions of dubious utility.} \label{fig:functions} \end{figure} \subsection{Arrays} Often, probes will want to share data that cannot be represented as a simple scalar value. Much data is naturally tabular in nature, indexed by some tuple of thread numbers, processor ids, names, time, and so on. Systemtap offers associative arrays for this purpose. These arrays are implemented as hash tables with a maximum size that is fixed at startup. Because they are too large to be created dynamically for individual probes handler runs, they must be declared as global. \nomenclature{array}{A global \verb+[+$k_1,k_2,\ldots,k_n\verb+]+\rightarrow value$ associative lookup table, with a string, number for each index; the value may be a string, number, or an aggregate.} \begin{tabular}{rl} \verb|global a| & declare global scalar or array variable \\ \verb|global b[400]| & declare array, reserving space for up to 400 tuples \\ \end{tabular} The basic operations for arrays are setting and looking up elements. These are expressed in \verb+awk+ syntax: the array name followed by an opening \verb+[+ bracket, a comma-separated list of index expressions, and a closing \verb+]+ bracket. Each index expression may be string or numeric, as long as it is consistently typed throughout the script. \nomenclature{arity}{Number of indexes to an array, or number of parameters to a function.} \begin{tabular}{rl} \verb|foo [4,"hello"] ++ | & increment the named array slot \\ \verb|processusage [uid(),execname()] ++| & update a statistic \\ \verb|times [tid()] = get_cycles()| & set a timestamp reference point \\ \verb|delta = get_cycles() - times [tid()]| & compute a timestamp delta \\ \end{tabular} Array elements that have not been set {\em may} be fetched, and return a dummy null value (zero or an empty string) as appropriate. However, assigning a null value does not delete the element: an explicit \verb|delete| statement is required. \nomenclature{null value}{A default initialized value for globals and array elements: a zero or an empty string, depending on type.} Systemtap provides syntactic sugar for these operations, in the form of explicit membership testing and deletion. \begin{tabular}{rl} \verb|if ([4,"hello"] in foo) { }| & membership test \\ \verb|delete times[tid()]| & deletion of a single element \\ \verb|delete times| & deletion of all elements \\ \end{tabular} One final and important operation is iteration over arrays. This uses the keyword \verb+foreach+. Like \verb+awk+, this creates a loop that {\em iterates over key tuples} of an array, not just {\em values}. In addition, the iteration may be {\em sorted} by any single key or the value by adding an extra \verb|+| or \verb|-| code. The \verb+break+ and \verb+continue+ statements work inside \verb+foreach+ loops, too. Since arrays can be large but probe handlers must not run for long, it is a good idea to exit iteration early if possible. The \verb+limit+ option in the \verb+foreach+ expression is one way. For simplicity, systemtap forbids any {\em modification} of an array while it is being iterated using a \verb+foreach+. \begin{tabular}{rp{0.4\textwidth}} \verb|foreach (x = [a,b] in foo) { fuss_with(x) }| & simple loop in arbitrary sequence \\ \verb|foreach ([a,b] in foo+ limit 5) { }| & loop in increasing sequence of value, stop after 5 \\ \verb|foreach ([a-,b] in foo) { }| & loop in decreasing sequence of first key \\ \end{tabular} \subsection{Aggregates} When we said above that values can only be strings or numbers, we lied a little. There is a third type: statistics aggregates, or aggregates for short. Instances of this type are used to collect statistics on numerical values, where it is important to accumulate new data quickly ({\em without} exclusive locks) and in large volume (storing only aggregated stream statistics). This type only makes sense for global variables, and may be stored individually or as elements of an array. \nomenclature{aggregate}{A special ``write-mostly'' data type used to efficiently store aggregated statistical values of a potentially huge data stream.} To add a value to a statistics aggregate, systemtap uses the special operator \verb+<<<+. Think of it like C++'s \verb+<<+ output streamer: the left hand side object accumulates the data sample given on the right hand side. This operation is efficient (taking a shared lock) because the aggregate values are kept separately on each processor, and are only aggregated across processors on request. \begin{verbatim} a <<< delta_timestamp writes[execname()] <<< count \end{verbatim} To read the aggregate value, special functions are available to extract a selected statistical function. {\em The aggregate value cannot be read by simply naming it as if it were an ordinary variable.} These operations take an exclusive lock on the respective globals, and should therefore be relatively rare. The simple ones are: \verb+@min+, \verb+@max+, \verb+@count+, \verb+@avg+, and \verb+@sum+, and evaluate to a single number. In addition, histograms of the data stream may be extracted using the \verb+@hist_log+ and \verb+@hist_linear+. These evaluate to a special sort of array that may at present\footnote{We anticipate support for indexing and looping using {\tt foreach} shortly.} only be printed. \nomenclature{extractor}{A function-like expression in a script that computes a single statistic for a given aggregate.} \begin{tabular}{rp{0.5\textwidth}} \verb+@avg(a)+ & the average of all the values accumulated into \verb+a+ \\ \verb+print(@hist_linear(a,0,100,10))+ & print an ``ascii art'' linear histogram of the same data stream, bounds $0 \ldots 100$, bucket width is $10$ \\ \verb|@count(writes["zsh"])| & the number of times ``zsh'' ran the probe handler \\ \verb+print(@hist_log(writes["zsh"]))+ & print an ``ascii art'' logarithmic histogram of the same data stream \\ \end{tabular} \subsection{Safety} \label{sec:safety} The full expressivity of the scripting language raises good questions of safety. Here is a set of Q\&A: \begin{description} \item{\bf What about infinite loops? recursion?} A probe handler is bounded in time. The C code generated by systemtap includes explicit checks that limit the total number of statements executed to a small number. A similar limit is imposed on the nesting depth of function calls. When either limit is exceeded, that probe handler cleanly aborts and signals an error. The systemtap session is normally configured to abort as a whole at that time. \item{\bf What about running out of memory?} No dynamic memory allocation whatsoever takes place during the execution of probe handlers. Arrays, function contexts, and buffers are allocated during initialization. These resources may run out during a session, and generally result in errors. \item{\bf What about locking?} If multiple probes seek conflicting locks on the same global variables, one or more of them will time out, and be aborted. Such events are tallied as ``skipped'' probes, and a count is displayed at session end. A configurable number of skipped probes can trigger an abort of the session. \item{\bf What about null pointers? division by zero?} The C code generated by systemtap translates potentially dangerous operations to routines that check their arguments at run time. These signal errors if they are invalid. Many arithmetic and string operations silently overflow if the results exceed representation limits. \item{\bf What about bugs in the translator? compiler?} While bugs in the translator, or the runtime layer certainly exist\footnote{See \tt http://sourceware.org/bugzilla}, our test suite gives some assurance. Plus, the entire generated C code may be inspected (try the \verb+-p3+ option). Compiler bugs are unlikely to be of any greater concern for systemtap than for the kernel as a whole. In other words, if it was reliable enough to build the kernel, it will build the systemtap modules properly too. \item{\bf Is that the whole truth?} In practice, there are several weak points in systemtap and the underlying kprobes system at the time of writing. Putting probes indiscriminately into unusually sensitive parts of the kernel (low level context switching, interrupt dispatching) has reportedly caused crashes in the past. We are fixing these bugs as they are found, and constructing a probe point ``blacklist'', but it is not complete. \nomenclature{blacklist}{A list of probe point patterns encoded into the translator or the kernel, where probing is prohibited for safety reasons.} \nomenclature{kprobes}{A breakpoint dispatching system for dynamic kernel probes, used by systemtap to implement some families of probe points.} \end{description} \subsection{Exercises} \begin{enumerate} \item Alter the last probe in \verb+timer-jiffies.stp+ to reset the counters and continue reporting instead of exiting. \item Write a script that, every ten seconds, displays the top five most frequent users of \verb+open+ system call during that interval. \item Write a script that experimentally measures the speed of the \verb+get_cycles()+ counter on each processor. \item Use any suitable probe point to get an approximate profile of process CPU usage: which processes/users use how much of each CPU. \end{enumerate} \section{Tapsets} After writing enough analysis scripts for yourself, you may become known as an expert to your colleagues, who will want to use your scripts. Systemtap makes it possible to share in a controlled manner; to build libraries of scripts that build on each other. In fact, all of the functions (\verb+pid()+, etc.) used in the scripts above come from tapset scripts like that. A ``tapset'' is just a script that designed for reuse by installation into a special directory. \subsection{Automatic selection} Systemtap attempts to resolve references to global symbols (probes, functions, variables) that are not defined within the script by a systematic search through the tapset library for scripts that define those symbols. Tapset scripts are installed under the default directory named \verb+/usr/share/systemtap/tapset+. A user may give additional directories with the \verb+-I DIR+ option. Systemtap searches these directories for script (\verb+.stp+) files. The search process includes subdirectories that are specialized for a particular kernel version and/or architecture, and ones that name only larger kernel families. Naturally, the search is ordered from specific to general, as shown in Figure~\ref{fig:tapset-search}. \nomenclature{tapset search path}{A list of subdirectories searched by systemtap for tapset scripts, allowing specialization by version architecture.} \begin{figure}[!ht] \begin{boxedminipage}{6in} \begin{verbatim} # stap -p1 -vv -e 'probe begin { }' > /dev/null Created temporary directory "/tmp/staplnEBh7" Searched '/usr/share/systemtap/tapset/2.6.15/i686/*.stp', match count 0 Searched '/usr/share/systemtap/tapset/2.6.15/*.stp', match count 0 Searched '/usr/share/systemtap/tapset/2.6/i686/*.stp', match count 0 Searched '/usr/share/systemtap/tapset/2.6/*.stp', match count 0 Searched '/usr/share/systemtap/tapset/i686/*.stp', match count 1 Searched '/usr/share/systemtap/tapset/*.stp', match count 12 Pass 1: parsed user script and 13 library script(s) in 350usr/10sys/375real ms. Running rm -rf /tmp/staplnEBh7 \end{verbatim} \end{boxedminipage} \caption{Listing the tapset search path.} \label{fig:tapset-search} \end{figure} When a script file is found that {\em defines} one of the undefined symbols, that {\em entire file} is added to the probing session being analyzed. This search is repeated until no more references can become satisfied. Systemtap signals an error if any are still unresolved. This mechanism enables several programming idioms. First, it allows some global symbols to be defined only for applicable kernel version/architecture pairs, and cause an error if their use is attempted on an inapplicable host. Similarly, the same symbol can be defined differently depending on kernels, in much the same way that different kernel \verb+include/asm/ARCH/+ files contain macros that provide a porting layer. Another use is to separate the default parameters of a tapset routine from its implementation. For example, consider a tapset that defines code for relating elapsed time intervals to process scheduling activities. The data collection code can be generic with respect to which time unit (jiffies, wall-clock seconds, cycle counts) it can use. It should have a default, but should not require additional run-time checks to let a user choose another. Figure~\ref{fig:tapset-default} shows a way. \begin{figure}[!ht] \begin{boxedminipage}{6in} \begin{verbatim} # cat tapset/time-common.stp global __time_vars function timer_begin (name) { __time_vars[name] = __time_value () } function timer_end (name) { return __time_value() - __time_vars[name] } # cat tapset/time-default.stp function __time_value () { return gettimeofday_us () } # cat tapset-time-user.stp probe begin { timer_begin ("bench") for (i=0; i<100; i++) ; printf ("%d cycles\n", timer_end ("bench")) exit () } function __time_value () { return get_ticks () } # override for greater precision \end{verbatim} \end{boxedminipage} \caption{Providing an overrideable default.} \label{fig:tapset-default} \end{figure} A tapset that exports only {\em data} may be as useful as ones that exports functions or probe point aliases (see below). Such global data can be computed and kept up-to-date using probes internal to the tapset. Any outside reference to the global variable would incidentally activate all the required probes. \subsection{Probe point aliases} \nomenclature{probe point alias}{A probe point that is defined in terms of another probe point.} Probe point aliases allow creation of new probe points from existing ones. This is useful if the new probe points are named to provide a higher level of abstraction. For example, the system-calls tapset defines probe point aliases of the form \verb+syscall.open+ etc., in terms of lower level ones like \verb+kernel.function("sys_open")+. Even if some future kernel renames \verb+sys_open+, the aliased name can remain valid. A probe point alias definition looks like a normal probe. Both start with the keyword \verb+probe+ and have a probe handler statement block at the end. But where a normal probe just lists its probe points, an alias creates a new name using the assignment (\verb+=+) operator. Another probe that names the new probe point will create an actual probe, with the handler of the alias {\em prepended}. This prepending behavior serves several purposes. It allows the alias definition to ``preprocess'' the context of the probe before passing control to the user-specified handler. This has several possible uses: \begin{tabular}{rl} \verb+if ($flag1 != $flag2) next+ & skip probe unless given condition is met \\ \verb+name = "foo"+ & supply probe-describing values \\ \verb+var = $var+ & extract target variable to plain local variable \\ %$ \end{tabular} Figure~\ref{fig:probe-alias} demonstrates a probe point alias definition as well as its use. It demonstrates how a single probe point alias can expand to multiple probe points, even to other aliases. It also includes probe point wildcarding. These functions are designed to compose sensibly. \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat probe-alias.stp probe syscallgroup.io = syscall.open, syscall.close, syscall.read, syscall.write { groupname = "io" } probe syscallgroup.process = syscall.fork, syscall.execve { groupname = "process" } probe syscallgroup.* { groups [execname() . "/" . groupname] ++ } probe end { foreach (eg+ in groups) printf ("%s: %d\n", eg, groups[eg]) } global groups # stap probe-alias.stp 05-wait_for_sys/io: 19 10-udev.hotplug/io: 17 20-hal.hotplug/io: 12 X/io: 73 apcsmart/io: 59 [...] make/io: 515 make/process: 16 [...] xfce-mcs-manage/io: 3 xfdesktop/io: 5 [...] xmms/io: 7070 zsh/io: 78 zsh/process: 5 \end{verbatim} \end{boxedminipage} \caption{Classified system call activity.} \label{fig:probe-alias} \end{figure} \subsection{Embedded C} \label{embedded-c} Sometimes, a tapset needs provide data values from the kernel that cannot be extracted using ordinary target variables (\verb+$var+). %$ This may be because the values are in complicated data structures, may require lock awareness, or are defined by layers of macros. Systemtap provides an ``escape hatch'' to go beyond what the language can safely offer. In certain contexts, you may embed plain raw C in tapsets, exchanging power for the safety guarantees listed in section~\ref{sec:safety}. End-user scripts {\em may not} include embedded C code, unless systemtap is run with the \verb+-g+ (``guru'' mode) option. Tapset scripts get guru mode privileges automatically. \nomenclature{embedded C}{Special syntax permitting tapsets to include literal C code.} Embedded C can be the body of a script function. Instead enclosing the function body statements in \verb+{+ and \verb+}+, use \verb+%{+ and \verb+%}+. Any enclosed C code is literally transcribed into the kernel module: it is up to you to make it safe and correct. In order to take parameters and return a value, macros \verb+STAP_ARG_*+ and \verb+STAP_RETVALUE+ are made available. The familiar data-gathering functions \verb+pid()+, \verb+execname()+, and their neighbours are all embedded C functions. Figure~\ref{fig:embedded-C} contains another example. Since systemtap cannot examine the C code to infer these types, an optional\footnote{This is only necessary if the types cannot be inferred from other sources, such as the call sites.} annotation syntax is available to assist the type inference process. Simply suffix parameter names and/or the function name with \verb+:string+ or \verb+:long+ to designate the string or numeric type. In addition, the script may include a \verb+%{+ \verb+%}+ block at the outermost level of the script, in order to transcribe declarative code like \verb+#include +. These enable the embedded C functions to refer to general kernel types. There are a number of safety-related constraints that should be observed by developers of embedded C code. \begin{enumerate} \item Do not dereference pointers that are not known or testable valid. \item Do not call any kernel routine that may cause a sleep or fault. \item Consider possible undesirable recursion, where your embedded C function calls a routine that may be the subject of a probe. If that probe handler calls your embedded C function, you may suffer infinite regress. Similar problems may arise with respect to non-reentrant locks. \item If locking of a data structure is necessary, use a \verb+trylock+ type call to attempt to take the lock. If that fails, give up, do not block. \end{enumerate} \begin{figure}[!ht] \begin{boxedminipage}{4.5in} \begin{verbatim} # cat embedded-C.stp %{ #include #include %} function task_execname_by_pid:string (pid:long) %{ struct task_struct *p; struct list_head *_p, *_n; list_for_each_safe(_p, _n, ¤t->tasks) { p = list_entry(_p, struct task_struct, tasks); if (p->pid == (int)STAP_ARG_pid) snprintf(STAP_RETVALUE, MAXSTRINGLEN, "%s", p->comm); } %} probe begin { printf("%s(%d)\n", task_execname_by_pid(target()), target()) exit() } # pgrep emacs 16641 # stap -g embedded-C.stp -x 16641 emacs(16641) \end{verbatim} \end{boxedminipage} \caption{Embedded C function.} \label{fig:embedded-C} \end{figure} \subsection{Naming conventions} Using the tapset search mechanism just described, potentially many script files can become selected for inclusion in a single session. This raises the problem of name collisions, where different tapsets accidentally use the same names for functions/globals. This can result in errors at translate or run time. To control this problem, systemtap tapset developers are advised to follow naming conventions. Here is some of the guidance. \nomenclature{naming convention}{Guidelines for naming variables and functions to prevent unintentional duplication.} \begin{enumerate} \item Pick a unique name for your tapset, and substitute it for {\em TAPSET} below. \item Separate identifiers meant to be used by tapset users from those that are internal implementation artifacts. \item Document the first set in the appropriate \verb+man+ pages. \item Prefix the names of external identifiers with {\em TAPSET}\_ if there is any likelihood of collision with other tapsets or end-user scripts. \item Prefix any probe point aliases with an appropriate prefix. \item Prefix the names of internal identifiers with \_\_{\em TAPSET}\_. \end{enumerate} \subsection{Exercises} \begin{enumerate} \item Write a tapset that implements deferred and ``cancelable'' logging. Export a function that enqueues a text string (into some private array), returning an id token. Include a timer-based probe that periodically flushes the array to the standard log output. Export another function that, if the entry was not already flushed, allows a text string to be cancelled from the queue. One might speculate that similar functions and tapsets exist. \item Create a ``relative timestamp'' tapset with functions return all the same values as the ones in the timestamp tapset, except that they are made relative to the start time of the script. \item Create a tapset that exports a global array that contains a mapping of recently seen process ID numbers to process names. Intercept key system calls (\verb+execve+?) to update the list incrementally. \item Send your tapset ideas to the mailing list! \end{enumerate} \section{Further information} For further information about systemtap, several sources are available. There are \verb+man+ pages: \begin{tabular}{rl} \verb+stap+ & systemtap program usage, language summary \\ \verb+stappaths+ & your systemtap installation paths \\ \verb+stapprobes+ & probes / probe aliases provided by built-in tapsets \\ \verb+stapex+ & a few basic example scripts \\ \verb+tapset::*+ & summaries of the probes and functions in each tapset \\ \verb+probe::*+ & detailed descriptions of each probe \\ \verb+function::*+ & detailed descriptions of each function \end{tabular} There is much more documentation and sample scripts included. You may find them under \verb+/usr/share/doc/systemtap*/+. Then, there is the source code itself. Since systemtap is {\em free software}, you should have available the entire source code. The source files in the \verb+tapset/+ directory are also packaged along with the systemtap binary. Since systemtap reads these files rather than their documentation, they are the most reliable way to see what's inside all the tapsets. Use the \verb+-v+ (verbose) command line option, several times if you like, to show inner workings. \nomenclature{free software}{Software licensed under terms such as the GNU GPL, which aims to enforce certain specified user freedoms such as study, modification, and sharing.} Finally, there is the project web site (\verb+http://sourceware.org/systemtap/+) with several articles, an archived public mailing list for users and developers (\verb+systemtap@sourceware.org+), IRC channels, and a live GIT source repository. Come join us! \appendix \section{Glossary} % \renewcommand{\nomname}{} % \printglossary % \begin{htmlonly} {\em Sorry, no glossary available.} % \end{htmlonly} \section{Errors} We explain some common systemtap error messages in this section. Most error messages include line/character numbers with which one can locate the precise location of error in the script code. There is sometimes a subsequent or prior line that elaborates. {\large {\em error} {\tt at:} {\em filename}:{\em line}:{\em column}: {\em details}} \subsection{Parse errors} \begin{description} \item{\bf parse error: expected {\em foo}, saw {\em bar} $\ldots$} \\ The script contained a grammar error. A different type of construct was expected in the given context. \item{\bf parse error: embedded code in unprivileged script} \\ The script contained unsafe constructs such as embedded C (section \ref{embedded-c}), but was run without the \verb+-g+ (guru mode) option. Confirm that the constructs are used safely, then try again with \verb+-g+. \end{description} \subsection{Type errors} \begin{description} \item{\bf semantic error: type mismatch for identifier '{\em foo}' $\ldots$ string vs. long} \\ In this case, the identifier {\em foo} was previously inferred as a numeric type (``long''), but at the given point is being used as a string. Similar messages appear if an array index or function parameter slot is used with conflicting types. \item{\bf semantic error: unresolved type for identifier '{\em foo}'} \\ The identifier {\em foo} was used, for example in a \verb+print+, but without any operations that could assign it a type. Similar messages may appear if a symbol is misspelled by a typo. \item{\bf semantic error: Expecting symbol or array index expression} \\ Something other than an assignable lvalue was on the left hand sign of an assignment. \end{description} \subsection{Symbol errors} \begin{description} \item{\bf while searching for arity {\em N} function, semantic error: unresolved function call} \\ The script calls a function with {\em N} arguments that does not exist. The function may exist with different arity. \item{\bf semantic error: array locals not supported: $\ldots$} \\ An array operation is present for which no matching global declaration was found. Similar messages appear if an array is used with inconsistent arities. \item{\bf semantic error: variable '{\em foo}' modified during 'foreach'} \\ The array {\em foo} is being modified (being assigned to or deleted from) within an active \verb+foreach+ loop. This invalid operation is also detected within a function called from within the loop. \end{description} \subsection{Probing errors } \begin{description} \item{\bf semantic error: probe point mismatch at position {\em N}, while resolving probe point {\em foo}} \\ A probe point was named that neither directly understood by systemtap, nor defined as an alias by a tapset script. The divergence from the ``tree'' of probe point namespace is at position {\em N} (starting with zero at left). \item{\bf semantic error: no match for probe point, while resolving probe point {\em foo}} \\ A probe point cannot be resolved for any of a variety of reasons. It may be a debuginfo-based probe point such as \verb+kernel.function("foobar")+ where no \verb+foobar+ function was found. This can occur if the script specifies a wildcard on function names, or an invalid file name or source line number. \item{\bf semantic error: unresolved target-symbol expression} \\ A target variable was referred to in a probe handler that was not resolvable. Or, a target variable is not valid at all in a context such as a script function. This variable may have been elided by an optimizing compiler, or may not have a suitable type, or there might just be an annoying bug somewhere. Try again with a slightly different probe point (use \verb+statement()+ instead of \verb+function()+) to search for a more cooperative neighbour in the same area. \item{\bf semantic error: libdwfl failure $\ldots$} \\ There was a problem processing the debugging information. It may simply be missing, or may have some consistency / correctness problems. Later compilers tend to produce better debugging information, so if you can upgrade and recompile your kernel/application, it may help. \item{\bf semantic error: cannot find {\em foo} debuginfo} \\ Similarly, suitable debugging information was not found. Check that your kernel build/installation includes a matching version of debugging data. \end{description} \subsection{Runtime errors} Usually, run-time errors cause a script to terminate. Some of these may be caught with the \verb+try { ... } catch { ... }+ construct. \begin{description} \item{\bf WARNING: Number of errors: {\em N}, skipped probes: {\em M}} \\ Errors and/or skipped probes occurred during this run. \nomenclature{skipped probe}{A probe handler that should have run but couldn't, due to contention or temporary resource problems.} \item{\bf division by 0} \\ The script code performed an invalid division. \item{\bf aggregate element not found} \\ An statistics extractor function other than \verb+@count+ was invoked on an aggregate that has not had any values accumulated yet. This is similar to a division by zero. \item{\bf aggregation overflow} \\ An array containing aggregate values contains too many distinct key tuples at this time. \item{\bf MAXNESTING exceeded} \\ Too many levels of function call nesting were attempted. \item{\bf MAXACTION exceeded} \\ The probe handler attempted to execute too many statements. \item{\bf kernel/user string copy fault at {\em 0xaddr}} \\ The probe handler attempted to copy a string from kernel or user space at an invalid address. \item{\bf pointer dereference fault} \\ There was a fault encountered during a pointer dereference operation such as a target variable evaluation. \end{description} \section{Acknowledgments} The author thanks Martin Hunt, Will Cohen, and Jim Keniston for improvement advice for this paper. \end{document} systemtap-3.1/doc/tutorial/000077500000000000000000000000001305163227500160225ustar00rootroot00000000000000systemtap-3.1/doc/tutorial/embedded-C.stp000066400000000000000000000007061305163227500204660ustar00rootroot00000000000000%{ #include #include %} function task_execname_by_pid:string (pid:long) %{ struct task_struct *p; struct list_head *_p, *_n; list_for_each_safe(_p, _n, ¤t->tasks) { p = list_entry(_p, struct task_struct, tasks); if (p->pid == (int)STAP_ARG_pid) snprintf(STAP_RETVALUE, MAXSTRINGLEN, "%s", p->comm); } %} probe begin { printf("%s(%d)\n", task_execname_by_pid(target()), target()) exit() } systemtap-3.1/doc/tutorial/functions.stp000066400000000000000000000006551305163227500205700ustar00rootroot00000000000000# Red Hat convention; see /etc/login.defs UID_MIN function system_uid_p (u) { return u < 500 } # kernel device number assembly macro function makedev (major,minor) { return major << 20 | minor } function trace_common () { printf("%d %s(%d)", gettimeofday_s(), execname(), pid()) # no return value } function fibonacci (i) { if (i < 1) return 0 else if (i < 2) return 1 else return fibonacci(i-1) + fibonacci(i-2) } systemtap-3.1/doc/tutorial/hello-world.stp000066400000000000000000000000651305163227500210030ustar00rootroot00000000000000probe begin { print ("hello world\n") exit () } systemtap-3.1/doc/tutorial/inode-watch.stp000066400000000000000000000007761305163227500207660ustar00rootroot00000000000000probe kernel.function ("vfs_write"), kernel.function ("vfs_read") { if (@defined($file->f_path->dentry)) { dev_nr = $file->f_path->dentry->d_inode->i_sb->s_dev inode_nr = $file->f_path->dentry->d_inode->i_ino } else { dev_nr = $file->f_dentry->d_inode->i_sb->s_dev inode_nr = $file->f_dentry->d_inode->i_ino } if (dev_nr == ($1 << 20 | $2) # major/minor device && inode_nr == $3) printf ("%s(%d) %s 0x%x/%u\n", execname(), pid(), probefunc(), dev_nr, inode_nr) } systemtap-3.1/doc/tutorial/probe-alias.stp000066400000000000000000000005701305163227500207520ustar00rootroot00000000000000probe syscallgroup.io = syscall.open, syscall.close, syscall.read, syscall.write { groupname = "io" } probe syscallgroup.process = syscall.fork, syscall.execve { groupname = "process" } probe syscallgroup.* { groups [execname() . "/" . groupname] ++ } probe end { foreach (eg+ in groups) printf ("%s: %d\n", eg, groups[eg]) } global groups systemtap-3.1/doc/tutorial/socket-trace.stp000066400000000000000000000003231305163227500211340ustar00rootroot00000000000000probe kernel.function("*@net/socket.c").call { printf ("%s -> %s\n", thread_indent(1), probefunc()) } probe kernel.function("*@net/socket.c").return { printf ("%s <- %s\n", thread_indent(-1), probefunc()) } systemtap-3.1/doc/tutorial/strace-open.stp000066400000000000000000000002101305163227500207630ustar00rootroot00000000000000probe syscall.open { printf ("%s(%d) open (%s)\n", execname(), pid(), argstr) } probe timer.ms(4000) # after 4 seconds { exit () } systemtap-3.1/doc/tutorial/tapset-time-user.stp000066400000000000000000000002671305163227500217670ustar00rootroot00000000000000probe begin { timer_begin ("bench") for (i=0; i<100; i++) ; printf ("%d cycles\n", timer_end ("bench")) exit () } function __time_value () { return get_cycles () } # override systemtap-3.1/doc/tutorial/tapset/000077500000000000000000000000001305163227500173225ustar00rootroot00000000000000systemtap-3.1/doc/tutorial/tapset/time-common.stp000066400000000000000000000002401305163227500222720ustar00rootroot00000000000000global __time_vars function timer_begin (name) { __time_vars[name] = __time_value () } function timer_end (name) { return __time_value() - __time_vars[name] } systemtap-3.1/doc/tutorial/tapset/time-default.stp000066400000000000000000000000701305163227500224270ustar00rootroot00000000000000function __time_value () { return gettimeofday_us () } systemtap-3.1/doc/tutorial/timer-jiffies.stp000066400000000000000000000004221305163227500213050ustar00rootroot00000000000000global count_jiffies, count_ms probe timer.jiffies(100) { count_jiffies ++ } probe timer.ms(100) { count_ms ++ } probe timer.ms(12345) { hz=(1000*count_jiffies) / count_ms printf ("jiffies:ms ratio %d:%d => CONFIG_HZ=%d\n", count_jiffies, count_ms, hz) exit () } systemtap-3.1/dtrace.in000066400000000000000000000406171305163227500152140ustar00rootroot00000000000000#!@preferred_python@ # vim: et sta sts=4 sw=4 ts=8 # This handles the systemtap equivalent of # $(DTRACE) $(DTRACEFLAGS) -G -s $^ -o $@ # $(DTRACE) $(DTRACEFLAGS) -h -s $^ -o $@ # which is a step that builds DTrace provider and probe definitions # Copyright (C) 2009-2017 Red Hat Inc. # # This file is part of systemtap, and is free software. You can # redistribute it and/or modify it under the terms of the GNU General # Public License (GPL); either version 2, or (at your option) any # later version. # ignore line too long, missing docstring, method could be a function, # too many public methods # pylint: disable=C0301 # pylint: disable=C0111 # pylint: disable=R0201 # pylint: disable=R0904 import os import sys from shlex import split from subprocess import call from tempfile import mkstemp try: from pyparsing import alphas, cStyleComment, delimitedList, Group, \ Keyword, lineno, Literal, nestedExpr, nums, oneOf, OneOrMore, \ Optional, ParseException, ParserElement, restOfLine, restOfLine, \ Suppress, SkipTo, Word, ZeroOrMore HAVE_PYP = True except ImportError: HAVE_PYP = False # Common file creation methods for pyparsing and string pattern matching class _HeaderCreator(object): def init_semaphores(self, fdesc): # dummy declaration just to make the object file non-empty fdesc.write("/* Generated by the Systemtap dtrace wrapper */\n\n") fdesc.write("static void __dtrace (void) __attribute__((unused));\n") fdesc.write("static void __dtrace (void) {}\n") fdesc.write("\n#include \n\n") def init_probes(self, fdesc): fdesc.write("/* Generated by the Systemtap dtrace wrapper */\n\n") fdesc.write("\n#define _SDT_HAS_SEMAPHORES 1\n\n") fdesc.write("\n#define STAP_HAS_SEMAPHORES 1 /* deprecated */\n\n") fdesc.write("\n#include \n\n") def add_semaphore(self, this_provider, this_probe): # NB: unsigned short is fixed in ABI semaphores_def = '\n#if defined STAP_SDT_V1\n' semaphores_def += '#define %s_%s_semaphore %s_semaphore\n' % \ (this_provider, this_probe, this_probe) semaphores_def += '#endif\n' semaphores_def += '#if defined STAP_SDT_V1 || defined STAP_SDT_V2 \n' semaphores_def += "__extension__ unsigned short %s_%s_semaphore __attribute__ ((unused)) __attribute__ ((section (\".probes\")));\n" % \ (this_provider, this_probe) semaphores_def += '#else\n' semaphores_def += "__extension__ unsigned short %s_%s_semaphore __attribute__ ((unused)) __attribute__ ((section (\".probes\"))) __attribute__ ((visibility (\"hidden\")));\n" % \ (this_provider, this_probe) semaphores_def += '#endif\n' return semaphores_def def add_probe(self, this_provider, this_probe, args): stap_str = "" this_probe_canon = this_provider.upper() + "_" + this_probe.replace("__", "_").upper() define_str = "#define %s(" % (this_probe_canon) comment_str = "/* %s (" % (this_probe_canon) if len(args) == 0: stap_str += "DTRACE_PROBE (" else: stap_str += "DTRACE_PROBE%d (" % len(args) stap_str += "%s, %s" % (this_provider, this_probe) i = 0 while i < len(args): if i != 0: define_str += ", " comment_str += "," define_str = define_str + "arg%s" % (i + 1) stap_str = stap_str + ", arg%s" % (i + 1) for argi in args[i]: if len(argi) > 0: comment_str += " %s" % argi i += 1 stap_str += ")" comment_str += " ) */" define_str += ") \\\n" probe_def = '%s\n' % (comment_str) probe_def += ('#if defined STAP_SDT_V1\n') probe_def += ('#define %s_ENABLED() __builtin_expect (%s_semaphore, 0)\n' % \ (this_probe_canon, this_probe)) probe_def += ('#define %s_%s_semaphore %s_semaphore\n' % \ (this_provider, this_probe, this_probe)) probe_def += ('#else\n') probe_def += ('#define %s_ENABLED() __builtin_expect (%s_%s_semaphore, 0)\n' % \ (this_probe_canon, this_provider, this_probe)) probe_def += ('#endif\n') # NB: unsigned short is fixed in ABI probe_def += ("__extension__ extern unsigned short %s_%s_semaphore __attribute__ ((unused)) __attribute__ ((section (\".probes\")));\n" % \ (this_provider, this_probe)) probe_def += (define_str + stap_str + "\n\n") return probe_def # Parse using pyparsing if it is available class _PypProvider(_HeaderCreator): def __init__(self): self.ast = [] self.bnf = None self.dtrace_statements = None def dtrace_bnf(self): self.current_probe = "" if self.dtrace_statements is not None: return ParserElement.setDefaultWhitespaceChars(' \f\r\n\t\v') ident = Word(alphas+"_", alphas+nums+"_$") probe_ident = Word(alphas+nums+"_$") semi = Literal(";").suppress() integer = Word( nums ) lbrace = Literal("{").suppress() rbrace = Literal("}").suppress() type_name = ident varname = ident PROBE = Keyword("probe") PROVIDER = Keyword("provider") array_size = integer | ident varname_spec = varname + Optional("[" + array_size + "]") struct_decl = Group(oneOf("struct union") + varname + Suppress(nestedExpr('{','}')) + semi) enum_decl = Group("enum" + varname + Suppress(nestedExpr('{','}')) + semi) member_decl = Group((Optional(oneOf("struct unsigned const")) + type_name) + Optional(Word("*"), default="") + Optional(varname_spec)) struct_typedef = Group(Literal("typedef") + Literal("struct") + varname + Suppress(nestedExpr('{','}'))) + Optional(varname) + semi typedef = ZeroOrMore("typedef" + (member_decl)) + semi decls = OneOrMore(struct_typedef | struct_decl | typedef | enum_decl) def memoize_probe(instring, loc, tokens): self.current_probe = tokens[0][1] self.current_lineno = lineno(loc,instring) probe_decl = Group(PROBE + probe_ident + "(" + Optional(Group(delimitedList(member_decl))) + ")" + Optional(Group(Literal(":") + "(" + Optional(Group(delimitedList(member_decl))) + ")")) + Optional(semi)) probe_decl.setParseAction(memoize_probe) probe_decls = OneOrMore(probe_decl) provider_decl = (PROVIDER + Optional(ident) + lbrace + Group(probe_decls) + rbrace + Optional(semi)) dtrace_statement = Group (SkipTo("provider", include=False) + provider_decl) self.dtrace_statements = ZeroOrMore(dtrace_statement) cplusplus_linecomment = Literal("//") + restOfLine cpp_linecomment = Literal("#") + restOfLine self.dtrace_statements.ignore(cStyleComment) self.dtrace_statements.ignore(cplusplus_linecomment) self.dtrace_statements.ignore(cpp_linecomment) self.bnf = self.dtrace_statements def semaphore_write(self, fdesc): semaphores_def = "" self.init_semaphores(fdesc) for asti in self.ast: if len(asti) == 0: continue # ignore SkipTo token if asti[0] != "provider": del asti[0] if asti[0] == "provider": # list of probes for prb in asti[2]: semaphores_def += self.add_semaphore(asti[1], prb[1]) fdesc.write(semaphores_def) def probe_write(self, provider, header): hdr = open(header, mode='w') self.init_probes(hdr) self.dtrace_bnf() try: try: self.ast = self.bnf.parseFile(provider, parseAll=True).asList() except TypeError: # pyparsing-1.5.0 does not support parseAll self.ast = self.bnf.parseFile(provider).asList() except ParseException: err = sys.exc_info()[1] if len(self.current_probe): print("Warning: %s:%s:%d: syntax error near:\nprobe %s\n" % (sys.argv[0], provider, self.current_lineno, self.current_probe)) else: print("Warning: %s:%s:%d syntax error near:\n%s\n" % (sys.argv[0], provider, err.lineno, err.line)) raise err probes_def = "" for asti in self.ast: if len(asti) == 0: continue # ignore SkipTo token if asti[0] != "provider": del asti[0] if asti[0] == "provider": # list of probes for prb in asti[2]: if prb[3] == ')': # No parsed argument list alist = [] else: alist = prb[3] probes_def += self.add_probe(asti[1], prb[1], alist) hdr.write(probes_def) hdr.close() # Parse using regular expressions if pyparsing is not available class _ReProvider(_HeaderCreator): def __init__(self): self.semaphores_def = "\n" self.provider = [] def __semaphore_append(self, this_probe): self.semaphores_def += self.add_semaphore(self.provider, this_probe) def semaphore_write(self, fdesc): self.init_semaphores(fdesc) fdesc.write(self.semaphores_def) def probe_write(self, provider, header): have_provider = False fdesc = open(provider) hdr = open(header, mode='w') self.init_probes(hdr) in_comment = False probes_def = "" while True: line = fdesc.readline() if line == "": break if line.find("/*") != -1: in_comment = True if line.find("*/") != -1: in_comment = False continue if in_comment: continue if line.find("provider") != -1: tokens = line.split() have_provider = True self.provider = tokens[1] elif have_provider and line.find("probe ") != -1: while line.find(")") < 0: line += fdesc.readline() this_probe = line[line.find("probe ")+5:line.find("(")].strip() argstr = (line[line.find("(")+1:line.find(")")]) arg = "" i = 0 args = [] self.__semaphore_append(this_probe) while i < len(argstr): if argstr[i:i+1] == ",": args.append(arg.split()) arg = "" else: arg = arg + argstr[i] i += 1 if len(arg) > 0: args.append(arg.split()) probes_def += self.add_probe(self.provider, this_probe, args) elif line.find("}") != -1 and have_provider: have_provider = False hdr.write(probes_def) hdr.close() def usage(): print("Usage " + sys.argv[0] + " [--help] [-h | -G] [-C [-I]] -s File.d [-o ]") def dtrace_help(): usage() print("Where -h builds a systemtap header file from the .d file") print(" -C when used with -h, also run cpp preprocessor") print(" -o specifies an explicit output file name,") print(" the default for -G is file.o and -h is file.h") print(" -I when running cpp pass through this -I include Path") print(" -s specifies the name of the .d input file") print(" -G builds a stub file.o from file.d,") print(" which is required by some packages that use dtrace.") sys.exit(1) ######################################################################## # main ######################################################################## def main(): if len(sys.argv) < 2: usage() return 1 global HAVE_PYP i = 1 build_header = False build_source = False keep_temps = False use_cpp = False suffix = "" filename = "" s_filename = "" includes = [] defines = [] ignore_options = ["-64", "-32", "-fpic", "-fPIC"] ignore_options2 = ["-x"] # with parameter while i < len(sys.argv): if sys.argv[i] == "-o": i += 1 filename = sys.argv[i] elif sys.argv[i] == "-s": i += 1 s_filename = sys.argv[i] elif sys.argv[i] == "-C": use_cpp = True elif sys.argv[i].startswith("-D"): defines.append(sys.argv[i]) elif sys.argv[i] == "-h": build_header = True suffix = ".h" elif sys.argv[i].startswith("-I"): includes.append(sys.argv[i]) elif sys.argv[i] == "-G": build_source = True suffix = ".o" elif sys.argv[i] == "-k": keep_temps = True elif sys.argv[i] == "--no-pyparsing": HAVE_PYP = False elif sys.argv[i] == "--types": print(sys.argv[0] + ": note: obsolete option --types used") elif sys.argv[i] in ignore_options: pass # dtrace users sometimes pass these flags elif sys.argv[i] in ignore_options2: i += 1 pass # dtrace users sometimes pass these flags elif sys.argv[i] == "--help": dtrace_help() elif sys.argv[i][0] == "-": print(sys.argv[0], "invalid option", sys.argv[i]) usage() return 1 i += 1 if not build_header and not build_source: usage() return 1 if s_filename != "" and use_cpp: (ignore, fname) = mkstemp(suffix=".d") cpp = os.environ.get("CPP", "cpp") retcode = call(split(cpp) + includes + defines + [s_filename, fname]) if retcode != 0: print("\"cpp includes s_filename\" failed") usage() return 1 s_filename = fname if filename == "": if s_filename != "": (filename, ignore) = os.path.splitext(s_filename) filename = os.path.basename(filename) else: usage() return 1 else: suffix = "" if build_header: if HAVE_PYP: providers = _PypProvider() else: providers = _ReProvider() while True: try: providers.probe_write(s_filename, filename + suffix) break; # complex C declarations can fool the pyparsing grammar. # we could increase the complexity of the grammar # instead we fall back to string pattern matching except ParseException: err = sys.exc_info()[1] print("Warning: Proceeding as if --no-pyparsing was given.\n") providers = _ReProvider() elif build_source: if HAVE_PYP: providers = _PypProvider() else: providers = _ReProvider() (ignore, fname) = mkstemp(suffix=".h") while True: try: providers.probe_write(s_filename, fname) break; except ParseException: err = sys.exc_info()[1] print("Warning: Proceeding as if --no-pyparsing was given.\n") providers = _ReProvider() if not keep_temps: os.remove(fname) else: print("header: " + fname) (ignore, fname) = mkstemp(suffix=".c") fdesc = open(fname, mode='w') providers.semaphore_write(fdesc) fdesc.close() cc1 = os.environ.get("CC", "gcc") cflags = "-g " + os.environ.get("CFLAGS", "").replace('\\\n', ' ').replace('\\\r',' ') # sanitize any embedded \n etc. goo; PR21063 retcode = call(split(cc1) + defines + includes + split(cflags) + ["-fPIC", "-I.", "-I@prefix@/include", "-c", fname, "-o", filename + suffix], shell=False) if retcode != 0: print("\"gcc " + fname + "\" failed") usage() return 1 if not keep_temps: os.remove(fname) else: print("source: " + fname) if use_cpp: if not keep_temps: os.remove(s_filename) else: print("cpp: " + s_filename) return 0 if __name__ == "__main__": sys.exit(main()) systemtap-3.1/dwarf_wrappers.cxx000066400000000000000000000165531305163227500171760ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2008-2014 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "dwarf_wrappers.h" #include "staptree.h" #include "util.h" #include #include #include #include #include using namespace std; void dwfl_assert(const string& desc, int rc, const string& file, int line) { if (rc == 0) return; string msg = _F("libdwfl failure (%s): ", desc.c_str()); if (rc < 0) msg += (dwfl_errmsg (rc) ?: "?"); else msg += std::strerror (rc); throw semantic_error (file+":"+lex_cast(line), msg); } void dwarf_assert(const string& desc, int rc, const string& file, int line) { if (rc == 0) return; string msg = _F("libdw failure (%s): ", desc.c_str()); if (rc < 0) msg += dwarf_errmsg (rc); else msg += std::strerror (rc); throw semantic_error (file+":"+lex_cast(line), msg); } #if !_ELFUTILS_PREREQ(0, 143) // Elfutils prior to 0.143 didn't use attr_integrate when looking up the // decl_file or decl_line, so the attributes would sometimes be missed. For // those old versions, we define custom implementations to do the integration. const char * dwarf_decl_file_integrate (Dwarf_Die *die) { Dwarf_Attribute attr_mem; Dwarf_Sword idx = 0; if (dwarf_formsdata (dwarf_attr_integrate (die, DW_AT_decl_file, &attr_mem), &idx) != 0 || idx == 0) return NULL; Dwarf_Die cudie; Dwarf_Files *files = NULL; if (dwarf_getsrcfiles (dwarf_diecu (die, &cudie, NULL, NULL), &files, NULL) != 0) return NULL; return dwarf_filesrc(files, idx, NULL, NULL); } int dwarf_decl_line_integrate (Dwarf_Die *die, int *linep) { Dwarf_Attribute attr_mem; Dwarf_Sword line; int res = dwarf_formsdata (dwarf_attr_integrate (die, DW_AT_decl_line, &attr_mem), &line); if (res == 0) *linep = line; return res; } #endif // !_ELFUTILS_PREREQ(0, 143) static bool dwarf_type_name(Dwarf_Die *type_die, ostream& o, Dwarf_Die& subroutine) { // if we've gotten down to a basic type, then we're done bool done = true; switch (dwarf_tag(type_die)) { case DW_TAG_enumeration_type: o << "enum "; break; case DW_TAG_structure_type: o << "struct "; break; case DW_TAG_union_type: o << "union "; break; case DW_TAG_class_type: o << "class "; break; case DW_TAG_typedef: case DW_TAG_base_type: break; // modifier types that require recursion first case DW_TAG_reference_type: case DW_TAG_rvalue_reference_type: case DW_TAG_pointer_type: case DW_TAG_array_type: case DW_TAG_const_type: case DW_TAG_volatile_type: case DW_TAG_restrict_type: done = false; break; case DW_TAG_subroutine_type: // Subroutine types (function pointers) are a weird case. The modifiers // we've recursed so far need to go in the middle, with the return type // on the left and parameter types on the right. We'll back out now to // get those modifiers, getting the return and parameters separately. subroutine = *type_die; return true; // unknown tag default: return false; } if (done) { // this follows gdb precedent that anonymous structs/unions // are displayed as "struct {...}" and "union {...}". o << (dwarf_diename(type_die) ?: "{...}"); return true; } // otherwise, this die is a type modifier. // recurse into the referent type Dwarf_Die subtype_die_mem, *subtype_die; subtype_die = dwarf_attr_die(type_die, DW_AT_type, &subtype_die_mem); // NB: va_list is a builtin type that shows up in the debuginfo as a // "struct __va_list_tag*", but it has to be called only va_list. if (subtype_die != NULL && dwarf_tag(type_die) == DW_TAG_pointer_type && dwarf_tag(subtype_die) == DW_TAG_structure_type && strcmp(dwarf_diename(subtype_die) ?: "", "__va_list_tag") == 0) { o << "va_list"; return true; } // if it can't be named, just call it "void" if (subtype_die == NULL || !dwarf_type_name(subtype_die, o, subroutine)) o << "void"; switch (dwarf_tag(type_die)) { case DW_TAG_reference_type: o << "&"; break; case DW_TAG_rvalue_reference_type: o << "&&"; break; case DW_TAG_pointer_type: o << "*"; break; case DW_TAG_array_type: o << "[]"; break; case DW_TAG_const_type: // NB: the debuginfo may sometimes have an extra const tag // on reference types, which is redundant to us. if (subtype_die == NULL || (dwarf_tag(subtype_die) != DW_TAG_reference_type && dwarf_tag(subtype_die) != DW_TAG_rvalue_reference_type)) o << " const"; break; case DW_TAG_volatile_type: o << " volatile"; break; case DW_TAG_restrict_type: o << " restrict"; break; default: return false; } return true; } static bool dwarf_subroutine_name(Dwarf_Die *subroutine, ostream& o, const string& modifier) { // First add the return value. Dwarf_Die ret_type; string ret_string; if (dwarf_attr_die (subroutine, DW_AT_type, &ret_type) == NULL) o << "void"; else if (dwarf_type_name (&ret_type, ret_string)) o << ret_string; else return false; // Now the subroutine modifiers. o << " (" << modifier << ")"; // Then write each parameter. o << " ("; bool first = true; Dwarf_Die child; if (dwarf_child (subroutine, &child) == 0) do { auto tag = dwarf_tag (&child); if (tag == DW_TAG_unspecified_parameters || tag == DW_TAG_formal_parameter) { if (first) first = false; else o << ", "; if (tag == DW_TAG_unspecified_parameters) o << "..."; else if (tag == DW_TAG_formal_parameter) { Dwarf_Die param_type; string param_string; if (dwarf_attr_die (&child, DW_AT_type, ¶m_type) == NULL) o << "void"; else if (dwarf_type_name (¶m_type, param_string)) o << param_string; else return false; } } } while (dwarf_siblingof (&child, &child) == 0); if (first) o << "void"; o << ")"; return true; } bool dwarf_type_decl(Dwarf_Die *type_die, const string& var_name, string& decl) { ostringstream o; Dwarf_Die subroutine = { 0, 0, 0, 0 }; if (!dwarf_type_name (type_die, o, subroutine)) return false; if (!var_name.empty()) o << " " << var_name; if (subroutine.addr != 0) { ostringstream subo; if (!dwarf_subroutine_name (&subroutine, subo, o.str())) return false; decl = subo.str(); } else decl = o.str(); return true; } bool dwarf_type_name(Dwarf_Die *type_die, string& type_name) { return dwarf_type_decl(type_die, "", type_name); } string dwarf_type_name(Dwarf_Die *type_die) { string o; return dwarf_type_name (type_die, o) ? o : ""; } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/dwarf_wrappers.h000066400000000000000000000131171305163227500166140ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2008-2014 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef DWARF_WRAPPERS_H #define DWARF_WRAPPERS_H 1 #include "config.h" extern "C" { #include #include #include } #include #if ! _ELFUTILS_PREREQ(0, 148) #define DW_AT_linkage_name 0x6e #endif #if ! _ELFUTILS_PREREQ(0, 153) #define DW_TAG_GNU_call_site 0x4109 #define DW_AT_GNU_tail_call 0x2115 #endif #if ! _ELFUTILS_PREREQ(0, 155) #define DW_ATE_UTF 0x10 #endif #define DWFL_ASSERT(desc, arg) \ dwfl_assert(desc, arg, __FILE__, __LINE__) // NB: "rc == 0" means OK in this case void dwfl_assert(const std::string& desc, int rc, const std::string& file, int line); // Throw error if pointer is NULL inline void dwfl_assert(const std::string& desc, const void* ptr, const std::string& file, int line) { if (!ptr) dwfl_assert(desc, -1, file, line); } // Throw error if condition is false inline void dwfl_assert(const std::string& desc, bool condition, const std::string& file, int line) { if (!condition) dwfl_assert(desc, -1, file, line); } #define DWARF_ASSERT(desc, arg) \ dwarf_assert(desc, arg, __FILE__, __LINE__) // NB: "rc == 0" means OK in this case void dwarf_assert(const std::string& desc, int rc, const std::string& file, int line); // Throw error if pointer is NULL inline void dwarf_assert(const std::string& desc, const void* ptr, const std::string& file, int line) { if (!ptr) dwarf_assert(desc, -1, file, line); } #define DWARF_LINENO(line) \ safe_dwarf_lineno(line, __FILE__, __LINE__) inline int safe_dwarf_lineno(const Dwarf_Line* line, const std::string& errfile, int errline) { int lineno; dwarf_assert("dwarf_lineno", dwarf_lineno(const_cast(line), &lineno), errfile, errline); return lineno; } #define DWARF_LINEADDR(line) \ safe_dwarf_lineaddr(line, __FILE__, __LINE__) inline Dwarf_Addr safe_dwarf_lineaddr(const Dwarf_Line* line, const std::string& errfile, int errline) { Dwarf_Addr addr; dwarf_assert("dwarf_lineaddr", dwarf_lineaddr(const_cast(line), &addr), errfile, errline); return addr; } #define DWARF_LINESRC(line) \ safe_dwarf_linesrc(line, NULL, NULL, __FILE__, __LINE__) #define DWARF_LINESRC2(line, mtime) \ safe_dwarf_linesrc(line, mtime, NULL, __FILE__, __LINE__) #define DWARF_LINESRC3(line, mtime, length) \ safe_dwarf_linesrc(line, mtime, length, __FILE__, __LINE__) inline const char* safe_dwarf_linesrc(const Dwarf_Line* line, Dwarf_Word* mtime, Dwarf_Word* length, const std::string& errfile, int errline) { const char* linesrc = dwarf_linesrc(const_cast(line), mtime, length); dwarf_assert("dwarf_linesrc", linesrc, errfile, errline); return linesrc; } #define DWARF_LINEPROLOGUEEND(line) \ safe_dwarf_lineprologueend(line, __FILE__, __LINE__) inline bool safe_dwarf_lineprologueend(const Dwarf_Line* line, const std::string& errfile, int errline) { bool flag; dwarf_assert("is_prologue_end", dwarf_lineprologueend(const_cast(line), &flag), errfile, errline); return flag; } // Look up the DIE for a reference-form attribute name inline Dwarf_Die * dwarf_attr_die (Dwarf_Die *die, unsigned int attr, Dwarf_Die *result) { Dwarf_Attribute attr_mem; if (dwarf_formref_die (dwarf_attr_integrate (die, attr, &attr_mem), result) != NULL) { /* If we want a type make sure we get the actual DIE describing the real type. */ if (attr == DW_AT_type) { Dwarf_Attribute sigm; Dwarf_Attribute *sig = dwarf_attr (result, DW_AT_signature, &sigm); if (sig != NULL) result = dwarf_formref_die (sig, result); /* A DW_AT_signature might point to a type_unit, then the actual type DIE we want is the first child. */ if (result != NULL && dwarf_tag (result) == DW_TAG_type_unit) DWFL_ASSERT("type_unit child", dwarf_child (result, result)); } return result; } return NULL; } // Retrieve the linkage name of a die, either by the MIPS vendor extension or // DWARF4's standardized attribute. inline const char * dwarf_linkage_name (Dwarf_Die *die) { Dwarf_Attribute attr_mem; return dwarf_formstring (dwarf_attr_integrate (die, DW_AT_MIPS_linkage_name, &attr_mem) ?: dwarf_attr_integrate (die, DW_AT_linkage_name, &attr_mem)); } #if !_ELFUTILS_PREREQ(0, 143) // Elfutils prior to 0.143 didn't use attr_integrate when looking up the // decl_file or decl_line, so the attributes would sometimes be missed. For // those old versions, we define custom implementations to do the integration. const char *dwarf_decl_file_integrate (Dwarf_Die *die); #define dwarf_decl_file dwarf_decl_file_integrate int dwarf_decl_line_integrate (Dwarf_Die *die, int *linep) __nonnull_attribute__ (2); #define dwarf_decl_line dwarf_decl_line_integrate #endif // !_ELFUTILS_PREREQ(0, 143) // Resolve a C declaration for dwarf types bool dwarf_type_decl(Dwarf_Die *type_die, const std::string& var_name, std::string& decl); // Resolve a full name for dwarf types bool dwarf_type_name(Dwarf_Die *type_die, std::string& type_name); std::string dwarf_type_name(Dwarf_Die *type_die); #endif /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/dwflpp.cxx000066400000000000000000004603701305163227500154440ustar00rootroot00000000000000// C++ interface to dwfl // Copyright (C) 2005-2015 Red Hat Inc. // Copyright (C) 2005-2007 Intel Corporation. // Copyright (C) 2008 James.Bottomley@HansenPartnership.com // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "dwflpp.h" #include "config.h" #include #include "staptree.h" #include "elaborate.h" #include "tapsets.h" #include "task_finder.h" #include "translate.h" #include "session.h" #include "util.h" #include "buildrun.h" #include "dwarf_wrappers.h" #include "hash.h" #include "rpm_finder.h" #include "setupdwfl.h" #include #include #include #include #include #include #include #include #include #include #include #include #include extern "C" { #include #include #include #include #include #include #include #include #include #include #include #include "loc2c.h" #define __STDC_FORMAT_MACROS #include } // Older glibc elf.h don't know about this new constant. #ifndef STB_GNU_UNIQUE #define STB_GNU_UNIQUE 10 #endif // debug flag to compare to the uncached version from libdw // #define DEBUG_DWFLPP_GETSCOPES 1 using namespace std; using namespace __gnu_cxx; static string TOK_KERNEL("kernel"); // RAII style tracker for obstack pool, used because of complex exception flows #define obstack_chunk_alloc malloc #define obstack_chunk_free free struct obstack_tracker { struct obstack* p; obstack_tracker(struct obstack*p): p(p) { obstack_init (p); } ~obstack_tracker() { obstack_free (this->p, 0); } }; dwflpp::dwflpp(systemtap_session & session, const string& name, bool kernel_p): sess(session), module(NULL), module_bias(0), mod_info(NULL), module_start(0), module_end(0), cu(NULL), dwfl(NULL), module_dwarf(NULL), function(NULL), blacklist_func(), blacklist_func_ret(), blacklist_file(), blacklist_enabled(false) { if (kernel_p) setup_kernel(name, session); else { vector modules; modules.push_back(name); setup_user(modules); } } dwflpp::dwflpp(systemtap_session & session, const vector& names, bool kernel_p): sess(session), module(NULL), module_bias(0), mod_info(NULL), module_start(0), module_end(0), cu(NULL), dwfl(NULL), module_dwarf(NULL), function(NULL), blacklist_enabled(false) { if (kernel_p) setup_kernel(names); else setup_user(names); } dwflpp::~dwflpp() { delete_map(module_cu_cache); delete_map(cu_function_cache); delete_map(mod_function_cache); delete_map(cu_inl_function_cache); delete_map(global_alias_cache); delete_map(cu_die_parent_cache); for (auto i = cu_lines_cache.begin(); i != cu_lines_cache.end(); ++i) delete_map(*i->second); delete_map(cu_lines_cache); delete_map(cu_entry_pc_cache); if (dwfl) dwfl_end(dwfl); // NB: don't "delete mod_info;", as that may be shared // between dwflpp instances, and are stored in // session.module_cache[] anyway. } module_cache::~module_cache () { delete_map(cache); } void dwflpp::get_module_dwarf(bool required, bool report) { module_dwarf = dwfl_module_getdwarf(module, &module_bias); mod_info->dwarf_status = (module_dwarf ? info_present : info_absent); if (!module_dwarf && report) { string msg = _("cannot find "); if (module_name == "") msg += "kernel"; else msg += string("module ") + module_name; msg += " debuginfo"; int i = dwfl_errno(); if (i) msg += string(": ") + dwfl_errmsg (i); msg += " [man warning::debuginfo]"; /* add module_name to list to find rpm */ find_debug_rpms(sess, module_name.c_str()); if (required) throw SEMANTIC_ERROR (msg); else sess.print_warning(msg); } } void dwflpp::focus_on_module(Dwfl_Module * m, module_info * mi) { module = m; mod_info = mi; if (m) { module_name = dwfl_module_info(module, NULL, &module_start, &module_end, NULL, NULL, NULL, NULL) ?: "module"; } else { assert(mi && mi->name && mi->name == TOK_KERNEL); module_name = mi->name; module_start = 0; module_end = 0; module_bias = mi->bias; } // Reset existing pointers and names module_dwarf = NULL; cu = NULL; function_name.clear(); function = NULL; } void dwflpp::focus_on_cu(Dwarf_Die * c) { assert(c); assert(module); cu = c; // Reset existing pointers and names function_name.clear(); function = NULL; } string dwflpp::cu_name(void) { return dwarf_diename(cu) ?: ""; } void dwflpp::focus_on_function(Dwarf_Die * f) { assert(f); assert(module); assert(cu); function = f; function_name = dwarf_diename(function) ?: "function"; } /* Return the Dwarf_Die for the given address in the current module. * The address should be in the module address address space (this * function will take care of any dw bias). */ Dwarf_Die * dwflpp::query_cu_containing_address(Dwarf_Addr a) { Dwarf_Addr bias; assert(dwfl); assert(module); get_module_dwarf(); Dwarf_Die* cudie = dwfl_module_addrdie(module, a, &bias); assert(bias == module_bias); return cudie; } bool dwflpp::module_name_matches(const string& pattern) { bool t = (fnmatch(pattern.c_str(), module_name.c_str(), 0) == 0); if (t && sess.verbose>3) clog << _F("pattern '%s' matches module '%s'\n", pattern.c_str(), module_name.c_str()); if (!t && sess.verbose>4) clog << _F("pattern '%s' does not match module '%s'\n", pattern.c_str(), module_name.c_str()); return t; } bool dwflpp::name_has_wildcard (const string& pattern) { return (pattern.find('*') != string::npos || pattern.find('?') != string::npos || pattern.find('[') != string::npos); } bool dwflpp::module_name_final_match(const string& pattern) { // Assume module_name_matches(). Can there be any more matches? // Not unless the pattern is a wildcard, since module names are // presumed unique. return !name_has_wildcard(pattern); } bool dwflpp::function_name_matches_pattern(const string& name, const string& pattern) { bool t = (fnmatch(pattern.c_str(), name.c_str(), 0) == 0); if (t && sess.verbose>3) clog << _F("pattern '%s' matches function '%s'\n", pattern.c_str(), name.c_str()); return t; } bool dwflpp::function_name_matches(const string& pattern) { assert(function); return function_name_matches_pattern(function_name, pattern); } bool dwflpp::function_scope_matches(const vector& scopes) { // walk up the containing scopes Dwarf_Die* die = function; for (int i = scopes.size() - 1; i >= 0; --i) { die = get_parent_scope(die); // check if this scope matches, and prepend it if so // NB: a NULL die is the global scope, compared as "" string name = dwarf_diename(die) ?: ""; if (name_has_wildcard(scopes[i]) ? function_name_matches_pattern(name, scopes[i]) : name == scopes[i]) function_name = name + "::" + function_name; else return false; // make sure there's no more if we're at the global scope if (!die && i > 0) return false; } return true; } void dwflpp::setup_kernel(const string& name, systemtap_session & s, bool debuginfo_needed) { if (! sess.module_cache) sess.module_cache = new module_cache (); unsigned offline_search_matches = 0; dwfl = setup_dwfl_kernel(name, &offline_search_matches, sess); if (offline_search_matches < 1) { if (debuginfo_needed) { // Suggest a likely kernel dir to find debuginfo rpm for string dir = string(sess.sysroot + "/lib/modules/" + sess.kernel_release ); find_debug_rpms(sess, dir.c_str()); } throw SEMANTIC_ERROR (_F("missing %s kernel/module debuginfo [man warning::debuginfo] under '%s'", sess.architecture.c_str(), sess.kernel_build_tree.c_str())); } if (dwfl != NULL) { ptrdiff_t off = 0; do { assert_no_interrupts(); off = dwfl_getmodules (dwfl, &add_module_build_id_to_hash, &s, off); } while (off > 0); DWFL_ASSERT("dwfl_getmodules", off == 0); } build_kernel_blacklist(); } void dwflpp::setup_kernel(const vector &names, bool debuginfo_needed) { if (! sess.module_cache) sess.module_cache = new module_cache (); unsigned offline_search_matches = 0; set offline_search_names(names.begin(), names.end()); dwfl = setup_dwfl_kernel(offline_search_names, &offline_search_matches, sess); if (offline_search_matches < offline_search_names.size()) { if (debuginfo_needed) { // Suggest a likely kernel dir to find debuginfo rpm for string dir = string(sess.sysroot + "/lib/modules/" + sess.kernel_release ); find_debug_rpms(sess, dir.c_str()); } throw SEMANTIC_ERROR (_F("missing %s kernel/module debuginfo [man warning::debuginfo] under '%s'", sess.architecture.c_str(), sess.kernel_build_tree.c_str())); } build_kernel_blacklist(); } void dwflpp::setup_user(const vector& modules, bool debuginfo_needed) { if (! sess.module_cache) sess.module_cache = new module_cache (); auto it = modules.begin(); dwfl = setup_dwfl_user(it, modules.end(), debuginfo_needed, sess); if (debuginfo_needed && it != modules.end()) DWFL_ASSERT (string(_F("missing process %s %s debuginfo", (*it).c_str(), sess.architecture.c_str())), dwfl); build_user_blacklist(); } template<> void dwflpp::iterate_over_modules(int (*callback)(Dwfl_Module*, void**, const char*, Dwarf_Addr, void*), void *data) { dwfl_getmodules (dwfl, callback, data, 0); // Don't complain if we exited dwfl_getmodules early. // This could be a $target variable error that will be // reported soon anyway. // DWFL_ASSERT("dwfl_getmodules", off == 0); // PR6864 XXX: For dwarfless case (if .../vmlinux is missing), then the // "kernel" module is not reported in the loop above. However, we // may be able to make do with symbol table data. } template<> void dwflpp::iterate_over_cus(int (*callback)(Dwarf_Die*, void*), void *data, bool want_types) { get_module_dwarf(false); Dwarf *dw = module_dwarf; if (!dw) return; vector* v = module_cu_cache[dw]; if (v == 0) { v = new vector; module_cu_cache[dw] = v; Dwarf_Off off = 0; size_t cuhl; Dwarf_Off noff; while (dwarf_nextcu (dw, off, &noff, &cuhl, NULL, NULL, NULL) == 0) { assert_no_interrupts(); Dwarf_Die die_mem; Dwarf_Die *die; die = dwarf_offdie (dw, off + cuhl, &die_mem); /* Skip partial units. */ if (dwarf_tag (die) == DW_TAG_compile_unit) v->push_back (*die); /* copy */ off = noff; } } if (want_types && module_tus_read.find(dw) == module_tus_read.end()) { // Process type units. Dwarf_Off off = 0; size_t cuhl; Dwarf_Off noff; uint64_t type_signature; while (dwarf_next_unit (dw, off, &noff, &cuhl, NULL, NULL, NULL, NULL, &type_signature, NULL) == 0) { assert_no_interrupts(); Dwarf_Die die_mem; Dwarf_Die *die; die = dwarf_offdie_types (dw, off + cuhl, &die_mem); /* Skip partial units. */ if (dwarf_tag (die) == DW_TAG_type_unit) v->push_back (*die); /* copy */ off = noff; } module_tus_read.insert(dw); } for (auto i = v->begin(); i != v->end(); ++i) { int rc = (*callback)(&*i, data); assert_no_interrupts(); if (rc != DWARF_CB_OK) break; } } bool dwflpp::func_is_inline() { assert (function); return dwarf_func_inline (function) != 0; } bool dwflpp::func_is_exported() { const char *name = dwarf_linkage_name (function) ?: dwarf_diename (function); assert (function); int syms = dwfl_module_getsymtab (module); DWFL_ASSERT (_("Getting symbols"), syms >= 0); for (int i = 0; i < syms; i++) { GElf_Sym sym; GElf_Word shndxp; const char *symname = dwfl_module_getsym(module, i, &sym, &shndxp); if (symname && strcmp (name, symname) == 0) { if (GELF_ST_TYPE(sym.st_info) == STT_FUNC && (GELF_ST_BIND(sym.st_info) == STB_GLOBAL || GELF_ST_BIND(sym.st_info) == STB_WEAK || GELF_ST_BIND(sym.st_info) == STB_GNU_UNIQUE)) return true; else return false; } } return false; } void dwflpp::cache_inline_instances (Dwarf_Die* die) { // If this is an inline instance, link it back to its origin Dwarf_Die origin; if (dwarf_tag(die) == DW_TAG_inlined_subroutine && dwarf_attr_die(die, DW_AT_abstract_origin, &origin)) { vector*& v = cu_inl_function_cache[origin.addr]; if (!v) v = new vector; v->push_back(*die); } // Recurse through other scopes that may contain inlines Dwarf_Die child, import; if (dwarf_child(die, &child) == 0) do { switch (dwarf_tag (&child)) { // tags that could contain inlines case DW_TAG_compile_unit: case DW_TAG_module: case DW_TAG_lexical_block: case DW_TAG_with_stmt: case DW_TAG_catch_block: case DW_TAG_try_block: case DW_TAG_entry_point: case DW_TAG_inlined_subroutine: case DW_TAG_subprogram: cache_inline_instances(&child); break; // imported dies should be followed case DW_TAG_imported_unit: if (dwarf_attr_die(&child, DW_AT_import, &import)) cache_inline_instances(&import); break; // nothing to do for other tags default: break; } } while (dwarf_siblingof(&child, &child) == 0); } template<> void dwflpp::iterate_over_inline_instances(int (*callback)(Dwarf_Die*, void*), void *data) { assert (function); assert (func_is_inline ()); if (cu_inl_function_cache_done.insert(cu->addr).second) cache_inline_instances(cu); vector* v = cu_inl_function_cache[function->addr]; if (!v) return; for (auto i = v->begin(); i != v->end(); ++i) { int rc = (*callback)(&*i, data); assert_no_interrupts(); if (rc != DWARF_CB_OK) break; } } void dwflpp::cache_die_parents(cu_die_parent_cache_t* parents, Dwarf_Die* die) { // Record and recurse through DIEs we care about Dwarf_Die child, import; if (dwarf_child(die, &child) == 0) do { switch (dwarf_tag (&child)) { // normal tags to recurse case DW_TAG_compile_unit: case DW_TAG_module: case DW_TAG_lexical_block: case DW_TAG_with_stmt: case DW_TAG_catch_block: case DW_TAG_try_block: case DW_TAG_entry_point: case DW_TAG_inlined_subroutine: case DW_TAG_subprogram: case DW_TAG_namespace: case DW_TAG_class_type: case DW_TAG_structure_type: parents->insert(make_pair(child.addr, *die)); cache_die_parents(parents, &child); break; // record only, nothing to recurse case DW_TAG_label: parents->insert(make_pair(child.addr, *die)); break; // imported dies should be followed case DW_TAG_imported_unit: if (dwarf_attr_die(&child, DW_AT_import, &import)) { parents->insert(make_pair(import.addr, *die)); cache_die_parents(parents, &import); } break; // nothing to do for other tags default: break; } } while (dwarf_siblingof(&child, &child) == 0); } cu_die_parent_cache_t* dwflpp::get_die_parents() { assert (cu); cu_die_parent_cache_t *& parents = cu_die_parent_cache[cu->addr]; if (!parents) { parents = new cu_die_parent_cache_t; cache_die_parents(parents, cu); if (sess.verbose > 4) clog << _F("die parent cache %s:%s size %zu", module_name.c_str(), cu_name().c_str(), parents->size()) << endl; } return parents; } vector dwflpp::getscopes_die(Dwarf_Die* die) { cu_die_parent_cache_t *parents = get_die_parents(); vector scopes; Dwarf_Die *scope = die; auto it = parents->end(); do { scopes.push_back(*scope); it = parents->find(scope->addr); scope = &it->second; } while (it != parents->end()); #ifdef DEBUG_DWFLPP_GETSCOPES Dwarf_Die *dscopes = NULL; int nscopes = dwarf_getscopes_die(die, &dscopes); assert(nscopes == (int)scopes.size()); for (unsigned i = 0; i < scopes.size(); ++i) assert(scopes[i].addr == dscopes[i].addr); free(dscopes); #endif return scopes; } std::vector dwflpp::getscopes(Dwarf_Die* die) { cu_die_parent_cache_t *parents = get_die_parents(); vector scopes; Dwarf_Die origin; Dwarf_Die *scope = die; auto it = parents->end(); do { scopes.push_back(*scope); if (dwarf_tag(scope) == DW_TAG_inlined_subroutine && dwarf_attr_die(scope, DW_AT_abstract_origin, &origin)) scope = &origin; it = parents->find(scope->addr); scope = &it->second; } while (it != parents->end()); #ifdef DEBUG_DWFLPP_GETSCOPES // there isn't an exact libdw equivalent, but if dwarf_getscopes on the // entrypc returns the same first die, then all the scopes should match Dwarf_Addr pc; if (die_entrypc(die, &pc)) { Dwarf_Die *dscopes = NULL; int nscopes = dwarf_getscopes(cu, pc, &dscopes); if (nscopes > 0 && dscopes[0].addr == die->addr) { assert(nscopes == (int)scopes.size()); for (unsigned i = 0; i < scopes.size(); ++i) assert(scopes[i].addr == dscopes[i].addr); } free(dscopes); } #endif return scopes; } std::vector dwflpp::getscopes(Dwarf_Addr pc) { // The die_parent_cache doesn't help us without knowing where the pc is // contained, so we have to do this one the old fashioned way. assert (cu); vector scopes; Dwarf_Die* dwarf_scopes; int nscopes = dwarf_getscopes(cu, pc, &dwarf_scopes); if (nscopes > 0) { scopes.assign(dwarf_scopes, dwarf_scopes + nscopes); free(dwarf_scopes); } #ifdef DEBUG_DWFLPP_GETSCOPES // check that getscopes on the starting die gets the same result if (!scopes.empty()) { vector other = getscopes(&scopes[0]); assert(scopes.size() == other.size()); for (unsigned i = 0; i < scopes.size(); ++i) assert(scopes[i].addr == other[i].addr); } #endif return scopes; } Dwarf_Die* dwflpp::get_parent_scope(Dwarf_Die* die) { Dwarf_Die specification; if (dwarf_attr_die(die, DW_AT_specification, &specification)) die = &specification; cu_die_parent_cache_t *parents = get_die_parents(); auto it = parents->find(die->addr); while (it != parents->end()) { Dwarf_Die* scope = &it->second; switch (dwarf_tag (scope)) { case DW_TAG_namespace: case DW_TAG_class_type: case DW_TAG_structure_type: return scope; default: break; } it = parents->find(scope->addr); } return NULL; } static const char* cache_type_prefix(Dwarf_Die* type) { switch (dwarf_tag(type)) { case DW_TAG_enumeration_type: return "enum "; case DW_TAG_structure_type: case DW_TAG_class_type: // treating struct/class as equals return "struct "; case DW_TAG_union_type: return "union "; } return ""; } /* GCC might generate a struct/class without DW_AT_declaration, but that only contains members which have DW_AT_declaration set. We aren't interested in those. PR14434 (GCC bug #54181). */ static bool has_only_decl_members (Dwarf_Die *die) { Dwarf_Die child, import; if (dwarf_child(die, &child) != 0) return false; /* no members */ do { if (! dwarf_hasattr(&child, DW_AT_declaration)) return false; /* real member found. */ int tag = dwarf_tag(&child); if ((tag == DW_TAG_namespace || tag == DW_TAG_structure_type || tag == DW_TAG_class_type) && ! has_only_decl_members (&child)) return false; /* real grand child member found. */ // Unlikely to ever happen, but if there is an imported unit // then check its children as if they are children of this DIE. if (tag == DW_TAG_imported_unit && dwarf_attr_die(&child, DW_AT_import, &import) && ! has_only_decl_members (&import)) return false; } while (dwarf_siblingof(&child, &child) == 0); return true; /* Tried all children and grandchildren. */ } int dwflpp::global_alias_caching_callback(Dwarf_Die *die, bool has_inner_types, const string& prefix, cu_type_cache_t *cache) { const char *name = dwarf_diename(die); if (!name || dwarf_hasattr(die, DW_AT_declaration) || has_only_decl_members(die)) return DWARF_CB_OK; int tag = dwarf_tag(die); if (has_inner_types && (tag == DW_TAG_namespace || tag == DW_TAG_structure_type || tag == DW_TAG_class_type)) iterate_over_types(die, has_inner_types, prefix + name + "::", global_alias_caching_callback, cache); if (tag != DW_TAG_namespace) { string type_name = prefix + cache_type_prefix(die) + name; if (cache->find(type_name) == cache->end()) (*cache)[type_name] = *die; } return DWARF_CB_OK; } int dwflpp::global_alias_caching_callback_cus(Dwarf_Die *die, dwflpp *dw) { mod_cu_type_cache_t *global_alias_cache; global_alias_cache = &dw->global_alias_cache; cu_type_cache_t *v = (*global_alias_cache)[die->addr]; if (v != 0) return DWARF_CB_OK; v = new cu_type_cache_t; (*global_alias_cache)[die->addr] = v; iterate_over_globals(die, global_alias_caching_callback, v); return DWARF_CB_OK; } Dwarf_Die * dwflpp::declaration_resolve_other_cus(const string& name) { iterate_over_cus(global_alias_caching_callback_cus, this, true); for (auto i = global_alias_cache.begin(); i != global_alias_cache.end(); ++i) { cu_type_cache_t *v = (*i).second; if (v->find(name) != v->end()) return & ((*v)[name]); } return NULL; } Dwarf_Die * dwflpp::declaration_resolve(const string& name) { cu_type_cache_t *v = global_alias_cache[cu->addr]; if (v == 0) // need to build the cache, just once per encountered module/cu { v = new cu_type_cache_t; global_alias_cache[cu->addr] = v; iterate_over_globals(cu, global_alias_caching_callback, v); if (sess.verbose > 4) clog << _F("global alias cache %s:%s size %zu", module_name.c_str(), cu_name().c_str(), v->size()) << endl; } // XXX: it may be desirable to search other modules' declarations // too, in case a module/shared-library processes a // forward-declared pointer type only, where the actual definition // may only be in vmlinux or the application. if (v->find(name) == v->end()) return declaration_resolve_other_cus(name); return & ((*v)[name]); } Dwarf_Die * dwflpp::declaration_resolve(Dwarf_Die *type) { const char* name = dwarf_diename(type); if (!name) return NULL; string type_name = cache_type_prefix(type) + string(name); return declaration_resolve(type_name); } int dwflpp::cu_function_caching_callback (Dwarf_Die* func, cu_function_cache_t *v) { const char *name = dwarf_diename(func); if (!name) return DWARF_CB_OK; v->insert(make_pair(name, *func)); return DWARF_CB_OK; } int dwflpp::mod_function_caching_callback (Dwarf_Die* cu, cu_function_cache_t *v) { // need to cast callback to func which accepts void* dwarf_getfuncs (cu, (int (*)(Dwarf_Die*, void*))cu_function_caching_callback, v, 0); return DWARF_CB_OK; } template<> int dwflpp::iterate_over_functions(int (*callback)(Dwarf_Die*, void*), void *data, const string& function) { int rc = DWARF_CB_OK; assert (module); assert (cu); cu_function_cache_t *v = cu_function_cache[cu->addr]; if (v == 0) { v = new cu_function_cache_t; cu_function_cache[cu->addr] = v; // need to cast callback to func which accepts void* dwarf_getfuncs (cu, (int (*)(Dwarf_Die*, void*))cu_function_caching_callback, v, 0); if (sess.verbose > 4) clog << _F("function cache %s:%s size %zu", module_name.c_str(), cu_name().c_str(), v->size()) << endl; mod_info->update_symtab(v); } auto range = v->equal_range(function); if (range.first != range.second) { for (auto it = range.first; it != range.second; ++it) { Dwarf_Die& die = it->second; if (sess.verbose > 4) clog << _F("function cache %s:%s hit %s", module_name.c_str(), cu_name().c_str(), function.c_str()) << endl; rc = (*callback)(& die, data); if (rc != DWARF_CB_OK) break; } } else if (startswith(function, "_Z")) { // C++ names are mangled starting with a "_Z" prefix. Most of the time // we can discover the mangled name from a die's MIPS_linkage_name // attribute, so we read that to match against the user's function // pattern. Note that this isn't perfect, as not all will have that // attribute (notably ctors and dtors), but we do what we can... for (auto it = v->begin(); it != v->end(); ++it) { if (pending_interrupts) return DWARF_CB_ABORT; Dwarf_Die& die = it->second; const char* linkage_name = NULL; if ((linkage_name = dwarf_linkage_name (&die)) && function_name_matches_pattern (linkage_name, function)) { if (sess.verbose > 4) clog << _F("function cache %s:%s match %s vs %s", module_name.c_str(), cu_name().c_str(), linkage_name, function.c_str()) << endl; rc = (*callback)(& die, data); if (rc != DWARF_CB_OK) break; } } } else if (name_has_wildcard (function)) { for (auto it = v->begin(); it != v->end(); ++it) { if (pending_interrupts) return DWARF_CB_ABORT; const string& func_name = it->first; Dwarf_Die& die = it->second; if (function_name_matches_pattern (func_name, function)) { if (sess.verbose > 4) clog << _F("function cache %s:%s match %s vs %s", module_name.c_str(), cu_name().c_str(), func_name.c_str(), function.c_str()) << endl; rc = (*callback)(& die, data); if (rc != DWARF_CB_OK) break; } } } else // not a linkage name or wildcard and no match in this CU { // do nothing } return rc; } template<> int dwflpp::iterate_single_function(int (*callback)(Dwarf_Die*, void*), void *data, const string& function) { int rc = DWARF_CB_OK; assert (module); get_module_dwarf(false); if (!module_dwarf) return rc; cu_function_cache_t *v = mod_function_cache[module_dwarf]; if (v == 0) { v = new cu_function_cache_t; mod_function_cache[module_dwarf] = v; iterate_over_cus (mod_function_caching_callback, v, false); if (sess.verbose > 4) clog << _F("module function cache %s size %zu", module_name.c_str(), v->size()) << endl; mod_info->update_symtab(v); } auto range = v->equal_range(function); if (range.first != range.second) { for (auto it = range.first; it != range.second; ++it) { Dwarf_Die cu_mem; Dwarf_Die& die = it->second; if (sess.verbose > 4) clog << _F("module function cache %s hit %s", module_name.c_str(), function.c_str()) << endl; // since we're iterating out of cu-context, we need each focus focus_on_cu(dwarf_diecu(&die, &cu_mem, NULL, NULL)); rc = (*callback)(& die, data); if (rc != DWARF_CB_OK) break; } } // undo the focus_on_cu this->cu = NULL; this->function_name.clear(); this->function = NULL; return rc; } /* This basically only goes one level down from the compile unit so it * only picks up top level stuff (i.e. nothing in a lower scope) */ template<> int dwflpp::iterate_over_globals(Dwarf_Die *cu_die, int (*callback)(Dwarf_Die*, bool, const string&, void*), void *data) { assert (cu_die); assert (dwarf_tag(cu_die) == DW_TAG_compile_unit || dwarf_tag(cu_die) == DW_TAG_type_unit || dwarf_tag(cu_die) == DW_TAG_partial_unit); // Ignore partial_unit, if they get imported by a real unit, then // iterate_over_types will traverse them. if (dwarf_tag(cu_die) == DW_TAG_partial_unit) return DWARF_CB_OK; // If this is C++, recurse for any inner types bool has_inner_types = dwarf_srclang(cu_die) == DW_LANG_C_plus_plus; return iterate_over_types(cu_die, has_inner_types, "", callback, data); } template<> int dwflpp::iterate_over_types(Dwarf_Die *top_die, bool has_inner_types, const string& prefix, int (* callback)(Dwarf_Die*, bool, const string&, void*), void *data) { int rc = DWARF_CB_OK; Dwarf_Die die, import; assert (top_die); if (dwarf_child(top_die, &die) != 0) return rc; do /* We're only currently looking for named types, * although other types of declarations exist */ switch (dwarf_tag(&die)) { case DW_TAG_base_type: case DW_TAG_enumeration_type: case DW_TAG_structure_type: case DW_TAG_class_type: case DW_TAG_typedef: case DW_TAG_union_type: case DW_TAG_namespace: rc = (*callback)(&die, has_inner_types, prefix, data); break; case DW_TAG_imported_unit: // Follow the imported_unit and iterate over its contents // (either a partial_unit or a full compile_unit), all its // children should be treated as if they appear in this place. if (dwarf_attr_die(&die, DW_AT_import, &import)) rc = iterate_over_types(&import, has_inner_types, prefix, callback, data); break; } while (rc == DWARF_CB_OK && dwarf_siblingof(&die, &die) == 0); return rc; } /* For each notes section in the current module call 'callback', use * 'data' for the notes buffer and pass 'object' back in case * 'callback' is a method */ template<> int dwflpp::iterate_over_notes(void *object, void (*callback)(void*, const string&, const string&, int, const char*, size_t)) { Dwarf_Addr bias; // Note we really want the actual elf file, not the dwarf .debug file. // Older binutils had a bug where they mangled the SHT_NOTE type during // --keep-debug. Elf* elf = dwfl_module_getelf (module, &bias); size_t shstrndx; if (elf_getshdrstrndx (elf, &shstrndx)) return elf_errno(); Elf_Scn *scn = NULL; vector notes; while ((scn = elf_nextscn (elf, scn)) != NULL) { GElf_Shdr shdr; if (gelf_getshdr (scn, &shdr) == NULL) continue; switch (shdr.sh_type) { case SHT_NOTE: if (!(shdr.sh_flags & SHF_ALLOC)) { string scn_name = elf_strptr(elf, shstrndx, shdr.sh_name); Elf_Data *data = elf_getdata (scn, NULL); size_t next; GElf_Nhdr nhdr; size_t name_off; size_t desc_off; for (size_t offset = 0; (next = gelf_getnote (data, offset, &nhdr, &name_off, &desc_off)) > 0; offset = next) { const char *note_name_addr = (const char *)data->d_buf + name_off; const char *note_desc_addr = (const char *)data->d_buf + desc_off; string note_name = nhdr.n_namesz > 1 // n_namesz includes NULL ? string(note_name_addr, nhdr.n_namesz-1) : ""; (*callback) (object, scn_name, note_name, nhdr.n_type, note_desc_addr, nhdr.n_descsz); } } break; } } return 0; } /* For each entry in the .dynamic section in the current module call 'callback' * returning 'object' in case 'callback' is a method */ template<> void dwflpp::iterate_over_libraries(void (*callback)(void*, const char*), void *data) { std::set added; string interpreter; assert (this->module_name.length() != 0); Dwarf_Addr bias; // We cannot use this: dwarf_getelf (dwfl_module_getdwarf (module, &bias)) Elf *elf = dwfl_module_getelf (module, &bias); // elf_getphdrnum (elf, &phnum) is not available in all versions of elfutils // needs libelf from elfutils 0.144+ for (int i = 0; ; i++) { GElf_Phdr mem; GElf_Phdr *phdr; phdr = gelf_getphdr (elf, i, &mem); if (phdr == NULL) break; if (phdr->p_type == PT_INTERP) { size_t maxsize; char *filedata = elf_rawfile (elf, &maxsize); if (filedata != NULL && phdr->p_offset < maxsize) interpreter = (char*) (filedata + phdr->p_offset); break; } } if (interpreter.length() == 0) return; // If it gets cumbersome to maintain this whitelist, we could just check for // startswith("/lib/ld") || startswith("/lib64/ld"), and trust that no admin // would install untrustworthy loaders in those paths. // See also http://sourceware.org/git/?p=glibc.git;a=blob;f=shlib-versions;hb=HEAD if (interpreter != "/lib/ld.so.1" // s390, ppc && interpreter != "/lib/ld64.so.1" // s390x, ppc64 && interpreter != "/lib64/ld64.so.1" && interpreter != "/lib/ld-linux-ia64.so.2" // ia64 && interpreter != "/emul/ia32-linux/lib/ld-linux.so.2" && interpreter != "/lib64/ld-linux-x86-64.so.2" // x8664 && interpreter != "/lib/ld-linux.so.2" // x86 && interpreter != "/lib/ld-linux.so.3" // arm && interpreter != "/lib/ld-linux-armhf.so.3" // arm && interpreter != "/lib/ld-linux-aarch64.so.1" // arm64 && interpreter != "/lib64/ld64.so.2" // ppc64le ) { sess.print_warning (_F("module %s --ldd skipped: unsupported interpreter: %s", module_name.c_str(), interpreter.c_str())); return; } vector ldd_command; ldd_command.push_back("/usr/bin/env"); ldd_command.push_back("LD_TRACE_LOADED_OBJECTS=1"); ldd_command.push_back("LD_WARN=yes"); ldd_command.push_back("LD_BIND_NOW=yes"); ldd_command.push_back(interpreter); ldd_command.push_back(module_name); FILE *fp; int child_fd; pid_t child = stap_spawn_piped(sess.verbose, ldd_command, NULL, &child_fd); if (child <= 0 || !(fp = fdopen(child_fd, "r"))) clog << _F("library iteration on %s failed: %s", module_name.c_str(), strerror(errno)) << endl; else { while (1) { char linebuf[256]; char soname[256]; char shlib[256]; unsigned long int addr = 0; char *line = fgets (linebuf, 256, fp); if (line == 0) break; // EOF or error // Try soname => shlib (0xaddr) int nf = sscanf (line, "%255s => %255s (0x%lx)", soname, shlib, &addr); if (nf != 3 || shlib[0] != '/') { // Try shlib (0xaddr) nf = sscanf (line, " %255s (0x%lx)", shlib, &addr); if (nf != 2 || shlib[0] != '/') continue; // fewer than expected fields, or bad shlib. } if (added.find (shlib) == added.end()) { if (sess.verbose > 2) { clog << _F("Added -d '%s", shlib); if (nf == 3) clog << _F("' due to '%s'", soname); else clog << "'"; clog << endl; } added.insert (shlib); } } if ((fclose(fp) || stap_waitpid(sess.verbose, child))) sess.print_warning("failed to read libraries from " + module_name + ": " + strerror(errno)); } for (auto it = added.begin(); it != added.end(); it++) { const string& modname = *it; (callback) (data, modname.c_str()); } } /* For each plt section in the current module call 'callback', pass the plt entry * 'address' and 'name' back, and pass 'object' back in case 'callback' is a method */ template<> int dwflpp::iterate_over_plt(void *object, void (*callback)(void*, const char*, size_t)) { Dwarf_Addr load_addr; // Note we really want the actual elf file, not the dwarf .debug file. Elf* elf = dwfl_module_getelf (module, &load_addr); size_t shstrndx; assert (elf_getshdrstrndx (elf, &shstrndx) >= 0); // Get the load address for (int i = 0; ; i++) { GElf_Phdr mem; GElf_Phdr *phdr; phdr = gelf_getphdr (elf, i, &mem); if (phdr == NULL) break; if (phdr->p_type == PT_LOAD) { load_addr = phdr->p_vaddr; break; } } // Get the plt section header Elf_Scn *scn = NULL; GElf_Shdr *plt_shdr = NULL; GElf_Shdr plt_shdr_mem; while ((scn = elf_nextscn (elf, scn))) { GElf_Shdr *shdr = gelf_getshdr (scn, &plt_shdr_mem); assert (shdr != NULL); if (strcmp (elf_strptr (elf, shstrndx, shdr->sh_name), ".plt") == 0) { plt_shdr = shdr; break; } } if (plt_shdr == NULL) return 0; // Layout of the plt section int plt0_entry_size; int plt_entry_size; GElf_Ehdr ehdr_mem; GElf_Ehdr* em = gelf_getehdr (elf, &ehdr_mem); switch (em->e_machine) { case EM_386: plt0_entry_size = 16; plt_entry_size = 16; break; case EM_X86_64: plt0_entry_size = 16; plt_entry_size = 16; break; case EM_ARM: plt0_entry_size = 20; plt_entry_size = 12; break; case EM_AARCH64:plt0_entry_size = 32; plt_entry_size = 16; break; case EM_PPC64: case EM_S390: case EM_PPC: default: throw SEMANTIC_ERROR(".plt is not supported on this architecture"); } scn = NULL; while ((scn = elf_nextscn (elf, scn))) { GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); bool have_rela = false; bool have_rel = false; if (shdr == NULL) continue; assert (shdr != NULL); if ((have_rela = (strcmp (elf_strptr (elf, shstrndx, shdr->sh_name), ".rela.plt") == 0)) || (have_rel = (strcmp (elf_strptr (elf, shstrndx, shdr->sh_name), ".rel.plt") == 0))) { /* Get the data of the section. */ Elf_Data *data = elf_getdata (scn, NULL); assert (data != NULL); /* Get the symbol table information. */ Elf_Scn *symscn = elf_getscn (elf, shdr->sh_link); GElf_Shdr symshdr_mem; GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem); assert (symshdr != NULL); Elf_Data *symdata = elf_getdata (symscn, NULL); assert (symdata != NULL); unsigned int nsyms = shdr->sh_size / shdr->sh_entsize; for (unsigned int cnt = 0; cnt < nsyms; ++cnt) { GElf_Ehdr ehdr_mem; GElf_Ehdr* em = gelf_getehdr (elf, &ehdr_mem); if (em == 0) { DWFL_ASSERT ("dwfl_getehdr", dwfl_errno()); } GElf_Rela relamem; GElf_Rela *rela = NULL; GElf_Rel relmem; GElf_Rel *rel = NULL; if (have_rela) { rela = gelf_getrela (data, cnt, &relamem); assert (rela != NULL); } else if (have_rel) { rel = gelf_getrel (data, cnt, &relmem); assert (rel != NULL); } GElf_Sym symmem; Elf32_Word xndx; Elf_Data *xndxdata = NULL; GElf_Sym *sym = gelf_getsymshndx (symdata, xndxdata, GELF_R_SYM (have_rela ? rela->r_info : rel->r_info), &symmem, &xndx); assert (sym != NULL); Dwarf_Addr addr = plt_shdr->sh_offset + plt0_entry_size + cnt * plt_entry_size; if (elf_strptr (elf, symshdr->sh_link, sym->st_name)) (*callback) (object, elf_strptr (elf, symshdr->sh_link, sym->st_name), addr + load_addr); } break; // while scn } } return 0; } // Comparator function for sorting static bool compare_lines(Dwarf_Line* a, Dwarf_Line* b) { if (a == b) return false; int lineno_a = DWARF_LINENO(a); int lineno_b = DWARF_LINENO(b); if (lineno_a == lineno_b) return DWARF_LINEADDR(a) < DWARF_LINEADDR(b); return lineno_a < lineno_b; } // Comparator object for searching Dwarf_Lines with a specific lineno when we // don't have a Dwarf_Line of our own to search for (hence why a or b is always // NULL). struct lineno_comparator { int lineno; lineno_comparator(int lineno): lineno(lineno) {} bool operator() (Dwarf_Line* a, Dwarf_Line* b) { assert(a || b); if (a) return DWARF_LINENO(a) < lineno; else return lineno < DWARF_LINENO(b); } }; // Returns a range of lines in between begin and end with wanted lineno. If // none exist, points to where it would have been. static lines_range_t lineno_equal_range(lines_t* v, int lineno) { lineno_comparator lc(lineno); return equal_range(v->begin(), v->end(), (Dwarf_Line*)NULL, lc); } // Interface to CU lines cache sorted by lineno lines_t* dwflpp::get_cu_lines_sorted_by_lineno(const char *srcfile) { assert(cu); srcfile_lines_cache_t *srcfile_lines = cu_lines_cache[cu]; if (!srcfile_lines) { srcfile_lines = new srcfile_lines_cache_t(); cu_lines_cache[cu] = srcfile_lines; } lines_t *lines = (*srcfile_lines)[srcfile]; if (!lines) { size_t nlines_cu = 0; Dwarf_Lines *lines_cu = NULL; DWARF_ASSERT("dwarf_getsrclines", dwarf_getsrclines(cu, &lines_cu, &nlines_cu)); lines = new lines_t(); (*srcfile_lines)[srcfile] = lines; for (size_t i = 0; i < nlines_cu; i++) { Dwarf_Line *line = dwarf_onesrcline(lines_cu, i); const char *linesrc = DWARF_LINESRC(line); if (strcmp(srcfile, linesrc)) continue; lines->push_back(line); } if (lines->size() > 1) sort(lines->begin(), lines->end(), compare_lines); if (sess.verbose > 3) { clog << _F("found the following lines for %s:", srcfile) << endl; for (auto i = lines->begin(); i != lines->end(); ++i) cout << DWARF_LINENO(*i) << " = " << hex << DWARF_LINEADDR(*i) << dec << endl; } } return lines; } static Dwarf_Line* get_func_first_line(Dwarf_Die *cu, base_func_info& func) { // dwarf_getsrc_die() uses binary search to find the Dwarf_Line, but will // return the wrong line if not found. Dwarf_Line *line = dwarf_getsrc_die(cu, func.entrypc); if (line && DWARF_LINEADDR(line) == func.entrypc) return line; // Line not found (or line at wrong addr). We have to resort to a slower // linear method. We won't find an exact match (probably this is an inlined // instance), so just settle on the first Dwarf_Line with lowest addr which // falls in the die. size_t nlines = 0; Dwarf_Lines *lines = NULL; DWARF_ASSERT("dwarf_getsrclines", dwarf_getsrclines(cu, &lines, &nlines)); for (size_t i = 0; i < nlines; i++) { line = dwarf_onesrcline(lines, i); if (dwarf_haspc(&func.die, DWARF_LINEADDR(line))) return line; } return NULL; } static lines_t collect_lines_in_die(lines_range_t range, Dwarf_Die *die) { lines_t lines_in_die; for (auto line = range.first; line != range.second; ++line) if (dwarf_haspc(die, DWARF_LINEADDR(*line))) lines_in_die.push_back(*line); return lines_in_die; } static void add_matching_lines_in_func(Dwarf_Die *cu, lines_t *cu_lines, base_func_info& func, lines_t& matching_lines) { Dwarf_Line *start_line = get_func_first_line(cu, func); if (!start_line) return; for (int lineno = DWARF_LINENO(start_line);;) { lines_range_t range = lineno_equal_range(cu_lines, lineno); // We consider the lineno still part of the die if at least one of them // falls in the die. lines_t lines_in_die = collect_lines_in_die(range, &func.die); if (lines_in_die.empty()) break; // Just pick the first LR even if there are more than one. Since the lines // are sorted by lineno and then addr, the first one is the one with the // lowest addr. matching_lines.push_back(lines_in_die[0]); // break out if there are no more lines, otherwise, go to the next lineno if (range.second == cu_lines->end()) break; lineno = DWARF_LINENO(*range.second); } } void dwflpp::collect_all_lines(char const * srcfile, base_func_info_map_t& funcs, lines_t& matching_lines) { // This is where we handle WILDCARD lineno types. lines_t *cu_lines = get_cu_lines_sorted_by_lineno(srcfile); for (auto func = funcs.begin(); func != funcs.end(); ++func) add_matching_lines_in_func(cu, cu_lines, *func, matching_lines); } static void add_matching_line_in_die(lines_t *cu_lines, lines_t& matching_lines, Dwarf_Die *die, int lineno) { lines_range_t lineno_range = lineno_equal_range(cu_lines, lineno); lines_t lines_in_die = collect_lines_in_die(lineno_range, die); if (lines_in_die.empty()) return; // Even if there are more than 1 LRs, just pick the first one. Since the lines // are sorted by lineno and then addr, the first one is the one with the // lowest addr. This is similar to what GDB does. matching_lines.push_back(lines_in_die[0]); } void dwflpp::collect_lines_for_single_lineno(char const * srcfile, int lineno, bool is_relative, base_func_info_map_t& funcs, lines_t& matching_lines) { /* Here, we handle ABSOLUTE and RELATIVE lineno types. Relative line numbers * are a bit special. The issue is that functions (esp. inlined ones) may not * even have a LR corresponding to the first valid line of code. So, applying * an offset to the 'first' LR found in the DIE can be quite imprecise. * Instead, we use decl_line, which although does not necessarily have a * LR associated with it (it can sometimes still happen esp. if the code is * written in OTB-style), it serves as an anchor on which we can apply the * offset to yield a lineno that will not change with compiler optimization. * It also has the added benefit of being consistent with the lineno * printed by e.g. stap -l kernel.function("vfs_read"), so users can be * confident from what lineno we adjust. */ lines_t *cu_lines = get_cu_lines_sorted_by_lineno(srcfile); for (auto func = funcs.begin(); func != funcs.end(); ++func) add_matching_line_in_die(cu_lines, matching_lines, &func->die, is_relative ? lineno + func->decl_line : lineno); } static bool functions_have_lineno(base_func_info_map_t& funcs, lines_t *lines, int lineno) { lines_range_t lineno_range = lineno_equal_range(lines, lineno); if (lineno_range.first == lineno_range.second) return false; // no LRs at this lineno for (auto func = funcs.begin(); func != funcs.end(); ++func) if (!collect_lines_in_die(lineno_range, &func->die).empty()) return true; return false; } // returns pair of valid linenos surrounding target lineno pair dwflpp::get_nearest_linenos(char const * srcfile, int lineno, base_func_info_map_t& funcs) { assert(cu); lines_t *cu_lines = get_cu_lines_sorted_by_lineno(srcfile); // Look around lineno for linenos with LRs. pair nearest_linenos = make_pair(-1, -1); for (size_t i = 1; i < 6; ++i) { if (nearest_linenos.first == -1 && functions_have_lineno(funcs, cu_lines, lineno-i)) nearest_linenos.first = lineno - i; if (nearest_linenos.second == -1 && functions_have_lineno(funcs, cu_lines, lineno+i)) nearest_linenos.second = lineno + i; } return nearest_linenos; } // returns nearest valid lineno to target lineno int dwflpp::get_nearest_lineno(char const * srcfile, int lineno, base_func_info_map_t& funcs) { assert(cu); pair nearest_linenos = get_nearest_linenos(srcfile, lineno, funcs); if (nearest_linenos.first > 0 && nearest_linenos.second > 0) { // pick the nearest line number (break tie to upper) if (lineno - nearest_linenos.first < nearest_linenos.second - lineno) return nearest_linenos.first; else return nearest_linenos.second; } else if (nearest_linenos.first > 0) return nearest_linenos.first; else if (nearest_linenos.second > 0) return nearest_linenos.second; else return -1; } void dwflpp::suggest_alternative_linenos(char const * srcfile, int lineno, base_func_info_map_t& funcs) { assert(cu); pair nearest_linenos = get_nearest_linenos(srcfile, lineno, funcs); stringstream advice; advice << _F("no line records for %s:%d [man error::dwarf]", srcfile, lineno); if (nearest_linenos.first > 0 || nearest_linenos.second > 0) { //TRANSLATORS: Here we are trying to advise what source file //TRANSLATORS: to attempt. advice << _(" (try "); if (nearest_linenos.first > 0) advice << ":" << nearest_linenos.first; if (nearest_linenos.first > 0 && nearest_linenos.second > 0) advice << _(" or "); if (nearest_linenos.second > 0) advice << ":" << nearest_linenos.second; advice << ")"; } throw SEMANTIC_ERROR (advice.str()); } static base_func_info_map_t get_funcs_in_srcfile(base_func_info_map_t& funcs, const char * srcfile) { base_func_info_map_t matching_funcs; for (auto func = funcs.begin(); func != funcs.end(); ++func) if (func->decl_file == string(srcfile)) matching_funcs.push_back(*func); return matching_funcs; } template<> void dwflpp::iterate_over_srcfile_lines(char const * srcfile, const vector& linenos, enum lineno_t lineno_type, base_func_info_map_t& funcs, void (* callback) (Dwarf_Addr, int, void*), bool has_nearest, void *data) { /* Matching line records (LRs) to user-provided linenos is trickier than it * seems. The fate of all functions is one of three possibilities: * 1. it's a normal function, with a subprogram DIE and a bona fide lowpc * and highpc attribute. * 2. it's an inlined function (one/multiple inlined_subroutine DIE, with one * abstract_origin DIE) * 3. it's both a normal function and an inlined function. For example, if * the funtion has been inlined only in some places, we'll have a DIE for * the normal subprogram DIE as well as inlined_subroutine DIEs. * * Multiple LRs for the same lineno but different addresses can simply happen * due to the function appearing in multiple forms. E.g. a function inlined * in two spots can yield two sets of LRs for its linenos at the different * addresses where it is inlined. * This is why the collect_* functions used here try to match up LRs back * to their originating DIEs. For example, in the function * collect_lines_for_single_lineno(), we filter first by DIE so that a lineno * corresponding to multiple addrs in multiple inlined_subroutine DIEs yields * a probe for each of them. */ assert(cu); // only work on the functions found in the current srcfile base_func_info_map_t current_funcs = get_funcs_in_srcfile(funcs, srcfile); if (current_funcs.empty()) return; // collect lines lines_t matching_lines; if (lineno_type == ABSOLUTE) collect_lines_for_single_lineno(srcfile, linenos[0], false, /* is_relative */ current_funcs, matching_lines); else if (lineno_type == RELATIVE) collect_lines_for_single_lineno(srcfile, linenos[0], true, /* is_relative */ current_funcs, matching_lines); else if (lineno_type == WILDCARD) collect_all_lines(srcfile, current_funcs, matching_lines); else if (lineno_type == ENUMERATED) { set collected_linenos; for (auto it = linenos.begin(); it != linenos.end(); it++) { // have we already collected this lineno? if (collected_linenos.find(*it) != collected_linenos.end()) continue; // remember end iterator so we can tell if things were found later auto itend = matching_lines.end(); collect_lines_for_single_lineno(srcfile, *it, false, /* is_relative */ current_funcs, matching_lines); // add to set if we found LRs if (itend != matching_lines.end()) collected_linenos.insert(*it); // if we didn't find anything and .nearest is given, then try nearest if (itend == matching_lines.end() && has_nearest) { int nearest_lineno = get_nearest_lineno(srcfile, *it, current_funcs); if (nearest_lineno <= 0) // no valid nearest linenos continue; bool new_lineno = collected_linenos.insert(nearest_lineno).second; if (new_lineno) collect_lines_for_single_lineno(srcfile, nearest_lineno, false, /* is_relative */ current_funcs, matching_lines); } } } // should we try to collect the nearest lines if we didn't collect everything // on first try? (ABSOLUTE and RELATIVE only: ENUMERATED handles it already // and WILDCARD doesn't need it) if (matching_lines.empty() && has_nearest && (lineno_type == ABSOLUTE || lineno_type == RELATIVE)) { int lineno = linenos[0]; if (lineno_type == RELATIVE) // just pick the first function and make it relative to that lineno += current_funcs[0].decl_line; int nearest_lineno = get_nearest_lineno(srcfile, lineno, current_funcs); if (nearest_lineno > 0) collect_lines_for_single_lineno(srcfile, nearest_lineno, false, /* is_relative */ current_funcs, matching_lines); } // call back with matching lines if (!matching_lines.empty()) { set probed_addrs; for (auto line = matching_lines.begin(); line != matching_lines.end(); ++line) { int lineno = DWARF_LINENO(*line); Dwarf_Addr addr = DWARF_LINEADDR(*line); bool is_new_addr = probed_addrs.insert(addr).second; if (is_new_addr) callback(addr, lineno, data); } } // No LRs found at the wanted lineno. So let's suggest other ones if user was // targeting a specific lineno (ABSOLUTE or RELATIVE). else if (lineno_type == ABSOLUTE || lineno_type == RELATIVE) { int lineno = linenos[0]; if (lineno_type == RELATIVE) // just pick the first function and make it relative to that lineno += current_funcs[0].decl_line; suggest_alternative_linenos(srcfile, lineno, current_funcs); } else if (lineno_type == WILDCARD) throw SEMANTIC_ERROR(_F("no line records for %s [man error::dwarf]", srcfile)); } template<> void dwflpp::iterate_over_labels(Dwarf_Die *begin_die, const string& sym, const base_func_info& function, const vector& linenos, enum lineno_t lineno_type, void *data, void (* callback)(const base_func_info&, const char*, const char*, int, Dwarf_Die*, Dwarf_Addr, void*)) { get_module_dwarf(); Dwarf_Die die, import; const char *name; int res = dwarf_child (begin_die, &die); if (res != 0) return; // die without children, bail out. do { switch (dwarf_tag(&die)) { case DW_TAG_label: name = dwarf_diename (&die); if (name && (name == sym || (name_has_wildcard(sym) && function_name_matches_pattern (name, sym)))) { // Don't try to be smart. Just drop no addr labels. Dwarf_Addr stmt_addr; if (dwarf_lowpc (&die, &stmt_addr) == 0) { // Get the file/line number for this label int dline; const char *file = dwarf_decl_file (&die) ?: ""; dwarf_decl_line (&die, &dline); vector scopes = getscopes_die(&die); if (scopes.size() > 1) { Dwarf_Die scope; if (!inner_die_containing_pc(scopes[1], stmt_addr, scope)) { sess.print_warning(_F("label '%s' at address %s (dieoffset: %s) is not " "contained by its scope '%s' (dieoffset: %s) -- bad" " debuginfo? [man error::dwarf]", name, lex_cast_hex(stmt_addr).c_str(), lex_cast_hex(dwarf_dieoffset(&die)).c_str(), (dwarf_diename(&scope) ?: ""), lex_cast_hex(dwarf_dieoffset(&scope)).c_str())); } bool matches_lineno; if (lineno_type == ABSOLUTE) matches_lineno = dline == linenos[0]; else if (lineno_type == RELATIVE) matches_lineno = dline == linenos[0] + function.decl_line; else if (lineno_type == ENUMERATED) matches_lineno = (binary_search(linenos.begin(), linenos.end(), dline)); else // WILDCARD matches_lineno = true; if (matches_lineno) callback(function, name, file, dline, &scope, stmt_addr, data); } } } break; case DW_TAG_subprogram: case DW_TAG_inlined_subroutine: // Stay within our filtered function break; case DW_TAG_imported_unit: // Iterate over the children of the imported unit as if they // were inserted in place. if (dwarf_attr_die(&die, DW_AT_import, &import)) iterate_over_labels (&import, sym, function, linenos, lineno_type, data, callback); break; default: if (dwarf_haschildren (&die)) iterate_over_labels (&die, sym, function, linenos, lineno_type, data, callback); break; } } while (dwarf_siblingof (&die, &die) == 0); } // Mini 'query-like' struct to help us navigate callbacks during // external function resolution struct external_function_query { dwflpp* dw; const string name; Dwarf_Die die; Dwarf_Addr addr; bool resolved; external_function_query(dwflpp* dw, const string& name): dw(dw), name(name), die(), addr(0), resolved(false) {} }; int dwflpp::external_function_cu_callback (Dwarf_Die* cu, external_function_query *efq) { efq->dw->focus_on_cu(cu); return efq->dw->iterate_over_functions(external_function_func_callback, efq, efq->name); } int dwflpp::external_function_func_callback (Dwarf_Die* func, external_function_query *efq) { Dwarf_Attribute external; Dwarf_Addr func_addr; if (dwarf_attr_integrate(func, DW_AT_external, &external) != NULL && dwarf_lowpc(func, &func_addr) == 0) { efq->die = *func; efq->addr = func_addr; efq->resolved = true; return DWARF_CB_ABORT; // we found it so stop here } return DWARF_CB_OK; } template<> void dwflpp::iterate_over_callees(Dwarf_Die *begin_die, const string& sym, int64_t recursion_depth, void *data, void (* callback)(base_func_info&, base_func_info&, stack*, void*), base_func_info& caller, stack *callers) { get_module_dwarf(); Dwarf_Die die, import; // DIE of abstract_origin found in die Dwarf_Die origin; // callee's entry pc (= where we'll probe) Dwarf_Addr func_addr; // caller's unwind pc during call (to match against bt for filtering) Dwarf_Addr caller_uw_addr; Dwarf_Attribute attr; base_func_info callee; if (dwarf_child(begin_die, &die) != 0) return; // die without children, bail out. bool free_callers = false; if (callers == NULL) /* first call */ { callers = new stack(); free_callers = true; } do { bool inlined = false; switch (dwarf_tag(&die)) { case DW_TAG_inlined_subroutine: inlined = true; /* FALLTHROUGH */ /* thanks mjw */ case DW_TAG_GNU_call_site: callee.name = dwarf_diename(&die) ?: ""; if (callee.name.empty()) continue; if (callee.name != sym) { if (!name_has_wildcard(sym)) continue; if (!function_name_matches_pattern(callee.name, sym)) continue; } /* In both cases (call sites and inlines), we want the * abstract_origin. The difference is that in inlines, the addr is * in the die itself, whereas for call sites, the addr is in the * abstract_origin's die. * Note that in the case of inlines, we're only calling back * for that inline instance, not all. This is what we want, since * it will only be triggered when 'called' from the target func, * which is something we have to emulate for non-inlined funcs * (which is the purpose of the caller_uw_addr below) */ if (dwarf_attr_die(&die, DW_AT_abstract_origin, &origin) == NULL) continue; // the low_pc of the die in either cases is the pc that would // show up in a backtrace (inlines are a special case in which // the die's low_pc is also the abstract_origin's low_pc = the // 'start' of the inline instance) if (dwarf_lowpc(&die, &caller_uw_addr) != 0) continue; if (inlined) func_addr = caller_uw_addr; else if (dwarf_lowpc(&origin, &func_addr) != 0) { // function doesn't have a low_pc, is it external? if (dwarf_attr_integrate(&origin, DW_AT_external, &attr) != NULL) { // let's iterate over the CUs and find it. NB: it's // possible we could have also done this by creating a // probe point with .exported tacked on and rerunning it // through derive_probe(). But since we're already on the // dwflpp side of things, and we already have access to // everything we need, let's try to be self-sufficient. // remember old focus Dwarf_Die *old_cu = cu; external_function_query efq(this, dwarf_linkage_name(&origin) ?: callee.name); iterate_over_cus(external_function_cu_callback, &efq, false); // restore focus cu = old_cu; if (!efq.resolved) // did we resolve it? continue; func_addr = efq.addr; origin = efq.die; } // non-external function without low_pc, jump ship else continue; } // We now have the addr to probe in func_addr, and the DIE // from which to obtain file/line info in origin // Get the file/line number for this callee callee.decl_file = dwarf_decl_file (&origin) ?: ""; dwarf_decl_line (&origin, &callee.decl_line); // add as a caller to match against if (!inlined) callers->push(caller_uw_addr); callee.die = inlined ? die : origin; callee.entrypc = func_addr; callback(callee, caller, callers, data); // If it's a tail call, print a warning that it may not be caught if (!inlined && dwarf_attr_integrate(&die, DW_AT_GNU_tail_call, &attr) != NULL) sess.print_warning (_F("Callee \"%s\" in function \"%s\" is a tail call: " ".callee probe may not fire. Try placing the probe " "directly on the callee function instead.", callee.name.to_string().c_str(), caller.name.to_string().c_str())); // For .callees(N) probes, we recurse on this callee. Note that we // pass the callee we just found as the caller arg for this recursion, // since it (the callee we just found) will be the caller of whatever // callees found inside this recursion. if (recursion_depth > 1) iterate_over_callees(inlined ? &die : &origin, sym, recursion_depth-1, data, callback, callee, callers); if (!inlined) callers->pop(); break; case DW_TAG_subprogram: break; // don't leave our filtered func case DW_TAG_imported_unit: // Iterate over the children of the imported unit as if they // were inserted in place. if (dwarf_attr_die(&die, DW_AT_import, &import)) // NB: we pass the same caller arg into it iterate_over_callees (&import, sym, recursion_depth, data, callback, caller, callers); break; default: if (dwarf_haschildren (&die)) // NB: we pass the same caller arg into it iterate_over_callees (&die, sym, recursion_depth, data, callback, caller, callers); break; } } while (dwarf_siblingof (&die, &die) == 0); if (free_callers && callers != NULL) delete callers; } void dwflpp::collect_srcfiles_matching (string const & pattern, set & filtered_srcfiles) { assert (module); assert (cu); size_t nfiles; Dwarf_Files *srcfiles; // PR 5049: implicit * in front of given path pattern. // NB: fnmatch() is used without FNM_PATHNAME. string prefixed_pattern = string("*/") + pattern; DWARF_ASSERT ("dwarf_getsrcfiles", dwarf_getsrcfiles (cu, &srcfiles, &nfiles)); { for (size_t i = 0; i < nfiles; ++i) { char const * fname = dwarf_filesrc (srcfiles, i, NULL, NULL); if (fnmatch (pattern.c_str(), fname, 0) == 0 || fnmatch (prefixed_pattern.c_str(), fname, 0) == 0) { filtered_srcfiles.insert (fname); if (sess.verbose>2) clog << _F("selected source file '%s'\n", fname); } } } } void dwflpp::resolve_prologue_endings (func_info_map_t & funcs) { // When a program is compiled with no optimization, GCC does no variable // tracking, which means that location info is actually only really valid // after the prologue, even though GCC reports it as valid during. So we need // to find the prologue ends to get accurate info. This may or may not be the // first address that has a source line distinct from the function // declaration's. assert(module); assert(cu); size_t nlines = 0; Dwarf_Lines *lines = NULL; /* trouble cases: malloc do_symlink in init/initramfs.c tail-recursive/tiny then no-prologue sys_get?id in kernel/timer.c no-prologue sys_exit_group tail-recursive {do_,}sys_open extra-long-prologue (gcc 3.4) cpu_to_logical_apicid NULL-decl_file */ // Fetch all srcline records, sorted by address. No need to free lines, it's a // direct pointer to the CU's cached lines. if (dwarf_getsrclines(cu, &lines, &nlines) != 0 || lines == NULL || nlines == 0) { if (sess.verbose > 2) clog << _F("aborting prologue search: no source lines found for cu '%s'\n", cu_name().c_str()); return; } // Dump them into our own array for easier searching. They should already be // sorted by addr, but we doublecheck that here. We want to keep the indices // between lines and addrs the same. vector addrs; for (size_t i = 0; i < nlines; i++) { Dwarf_Line* line = dwarf_onesrcline(lines, i); Dwarf_Addr addr = DWARF_LINEADDR(line); if (!addrs.empty() && addr < addrs.back()) throw SEMANTIC_ERROR(_("lines from dwarf_getsrclines() not sorted")); addrs.push_back(addr); } // We normally ignore a function's decl_line, since it is associated with the // line at which the identifier appears in the declaration, and has no // meaningful relation to the lineno associated with the entrypc (which is // normally the lineno of '{', which could occur at the same line as the // declaration, or lower down). // However, if the CU was compiled using GCC < 4.4, then the decl_line // actually represents the lineno of '{' as well, in which case if the lineno // associated with the entrypc is != to the decl_line, it means the compiler // scraped/optimized off some of the beginning of the function and the safest // thing we can do is consider it naked. bool consider_decl_line = false; { string prod, vers; if (is_gcc_producer(cu, prod, vers) && strverscmp(vers.c_str(), "4.4.0") < 0) consider_decl_line = true; } for(auto it = funcs.begin(); it != funcs.end(); it++) { #if 0 /* someday */ Dwarf_Addr* bkpts = 0; int n = dwarf_entry_breakpoints (& it->die, & bkpts); // ... free (bkpts); #endif Dwarf_Addr entrypc = it->entrypc; Dwarf_Addr highpc; // NB: highpc is exclusive: [entrypc,highpc) DWFL_ASSERT ("dwarf_highpc", dwarf_highpc (& it->die, & highpc)); unsigned entrypc_srcline_idx = 0; Dwarf_Line *entrypc_srcline = NULL; { auto it_addr = lower_bound(addrs.cbegin(), addrs.cend(), entrypc); if (it_addr != addrs.cend() && *it_addr == entrypc) { entrypc_srcline_idx = it_addr - addrs.cbegin(); entrypc_srcline = dwarf_onesrcline(lines, entrypc_srcline_idx); } } if (!entrypc_srcline) { if (sess.verbose > 2) clog << _F("missing entrypc dwarf line record for function '%s'\n", it->name.to_string().c_str()); // This is probably an inlined function. We'll end up using // its lowpc as a probe address. continue; } if (entrypc == 0) { if (sess.verbose > 2) clog << _F("null entrypc dwarf line record for function '%s'\n", it->name.to_string().c_str()); // This is probably an inlined function. We'll skip this instance; // it is messed up. continue; } if (sess.verbose>2) clog << _F("searching for prologue of function '%s' %#" PRIx64 "-%#" PRIx64 "@%s:%d\n", it->name.to_string().c_str(), entrypc, highpc, it->decl_file.to_string().c_str(), it->decl_line); // For each function, we look for the prologue-end marker (e.g. clang // outputs one). If there is no explicit marker (e.g. GCC does not), we // accept a bigger or equal lineno as a prologue end (this catches GCC's // 0-line advances). // We may have to skip a few because some old compilers plop // in dummy line records for longer prologues. If we go too // far (addr >= highpc), we take the previous one. Or, it may // be the first one, if the function had no prologue, and thus // the entrypc maps to a statement in the body rather than the // declaration. int entrypc_srcline_lineno = DWARF_LINENO(entrypc_srcline); unsigned postprologue_srcline_idx = entrypc_srcline_idx; Dwarf_Line *postprologue_srcline = entrypc_srcline; while (postprologue_srcline_idx < nlines) { postprologue_srcline = dwarf_onesrcline(lines, postprologue_srcline_idx); Dwarf_Addr lineaddr = DWARF_LINEADDR(postprologue_srcline); const char* linesrc = DWARF_LINESRC(postprologue_srcline); int lineno = DWARF_LINENO(postprologue_srcline); bool lineprologue_end = DWARF_LINEPROLOGUEEND(postprologue_srcline); if (sess.verbose>2) clog << _F("checking line record %#" PRIx64 "@%s:%d%s\n", lineaddr, linesrc, lineno, lineprologue_end ? " (marked)" : ""); // have we passed the function? if (lineaddr >= highpc) break; // is there an explicit prologue_end marker? if (lineprologue_end) break; // is it a different file? if (it->decl_file != string(linesrc)) break; // OK, it's the same file, but is it a different line? if (lineno != entrypc_srcline_lineno) break; // Same file and line, is this a second line record (e.g. 0-line advance)? if (postprologue_srcline_idx != entrypc_srcline_idx) break; // This is the first iteration. Is decl_line meaningful and is the // lineno past the decl_line? if (consider_decl_line && lineno != it->decl_line) break; // Let's try the next srcline. postprologue_srcline_idx ++; } // loop over srclines Dwarf_Addr postprologue_addr = DWARF_LINEADDR(postprologue_srcline); if (postprologue_addr >= highpc) { // pick addr of previous line record Dwarf_Line *lr = dwarf_onesrcline(lines, postprologue_srcline_idx-1); postprologue_addr = DWARF_LINEADDR(lr); } it->prologue_end = postprologue_addr; if (sess.verbose>2) { clog << _F("prologue found function '%s'", it->name.to_string().c_str()); // Add a little classification datum //TRANSLATORS: Here we're adding some classification datum (ie Prologue Free) if (postprologue_addr == entrypc) clog << _(" (naked)"); //TRANSLATORS: Here we're adding some classification datum (ie we went over) if (DWARF_LINEADDR(postprologue_srcline) >= highpc) clog << _(" (tail-call?)"); //TRANSLATORS: Here we're adding some classification datum (ie it was marked) if (DWARF_LINEPROLOGUEEND(postprologue_srcline)) clog << _(" (marked)"); clog << " = 0x" << hex << postprologue_addr << dec << "\n"; } } // loop over functions } bool dwflpp::function_entrypc (Dwarf_Addr * addr) { assert (function); // PR10574: reject 0, which tends to be eliminated COMDAT return (dwarf_entrypc (function, addr) == 0 && *addr != 0); } bool dwflpp::die_entrypc (Dwarf_Die * die, Dwarf_Addr * addr) { int rc = 0; string lookup_method; * addr = 0; lookup_method = "dwarf_entrypc"; rc = dwarf_entrypc (die, addr); if (rc) { lookup_method = "dwarf_ranges"; Dwarf_Addr base; Dwarf_Addr begin; Dwarf_Addr end; ptrdiff_t offset = dwarf_ranges (die, 0, &base, &begin, &end); if (offset < 0) rc = -1; else if (offset > 0) { * addr = begin; rc = 0; // Now we need to check that there are no more ranges // associated with this function, which could conceivably // happen if a function is inlined, then pieces of it are // split amongst different conditional branches. It's not // obvious which of them to favour. As a heuristic, we // pick the beginning of the first range, and ignore the // others (but with a warning). unsigned extra = 0; while ((offset = dwarf_ranges (die, offset, &base, &begin, &end)) > 0) extra ++; if (extra) lookup_method += _F(", ignored %s more", lex_cast(extra).c_str()); } } // PR10574: reject subprograms where the entrypc address turns out // to be 0, since they tend to correspond to duplicate-eliminated // COMDAT copies of C++ functions. if (rc == 0 && *addr == 0) { lookup_method += _(" (skip comdat)"); rc = 1; } if (sess.verbose > 2) clog << _F("entry-pc lookup (%s dieoffset: %s) = %#" PRIx64 " (rc %d)", lookup_method.c_str(), lex_cast_hex(dwarf_dieoffset(die)).c_str(), *addr, rc) << endl; return (rc == 0); } void dwflpp::function_die (Dwarf_Die *d) { assert (function); *d = *function; } void dwflpp::function_file (char const ** c) { assert (function); assert (c); *c = dwarf_decl_file (function); if (*c == NULL) { // The line table might know. Dwarf_Addr pc; if (dwarf_lowpc(function, &pc) == 0) *c = pc_line (pc, NULL, NULL); if (*c == NULL) *c = ""; } } void dwflpp::function_line (int *linep) { assert (function); if (dwarf_decl_line (function, linep) != 0) { // The line table might know. Dwarf_Addr pc; if (dwarf_lowpc(function, &pc) == 0) pc_line (pc, linep, NULL); } } bool dwflpp::die_has_pc (Dwarf_Die & die, Dwarf_Addr pc) { int res = dwarf_haspc (&die, pc); // dwarf_ranges will return -1 if a function die has no DW_AT_ranges // if (res == -1) // DWARF_ASSERT ("dwarf_haspc", res); return res == 1; } bool dwflpp::inner_die_containing_pc(Dwarf_Die& scope, Dwarf_Addr addr, Dwarf_Die& result) { result = scope; // Sometimes we're in a bad scope to begin with -- just let it be. This can // happen for example if the compiler outputs a label PC that's just outside // the lexical scope. We can't really do anything about that, but variables // will probably not be accessible in this case. if (!die_has_pc(scope, addr)) return false; Dwarf_Die child, import; int rc = dwarf_child(&result, &child); while (rc == 0) { switch (dwarf_tag (&child)) { case DW_TAG_imported_unit: // The children of the imported unit need to be treated as if // they are inserted here. So look inside and set result if // found. if (dwarf_attr_die(&child, DW_AT_import, &import)) { Dwarf_Die import_result; if (inner_die_containing_pc(import, addr, import_result)) { result = import_result; return true; } } break; // lexical tags to recurse within the same starting scope // NB: this intentionally doesn't cross into inlines! case DW_TAG_lexical_block: case DW_TAG_with_stmt: case DW_TAG_catch_block: case DW_TAG_try_block: case DW_TAG_entry_point: if (die_has_pc(child, addr)) { result = child; rc = dwarf_child(&result, &child); continue; } } rc = dwarf_siblingof(&child, &child); } return true; } void dwflpp::loc2c_error (void *arg, const char *fmt, ...) { const char *msg = "?"; char *tmp = NULL; int rc; va_list ap; va_start (ap, fmt); rc = vasprintf (& tmp, fmt, ap); if (rc < 0) msg = "?"; else msg = tmp; va_end (ap); dwflpp *pp = (dwflpp *) arg; semantic_error err(ERR_SRC, msg); string what = pp->die_location_as_string(pp->l2c_ctx.die); string where = pp->pc_location_as_function_string (pp->l2c_ctx.pc); err.details.push_back(what); err.details.push_back(where); throw err; } // This function generates code used for addressing computations of // target variables. void dwflpp::emit_address (struct obstack *pool, Dwarf_Addr address) { int n = dwfl_module_relocations (module); DWFL_ASSERT ("dwfl_module_relocations", n >= 0); Dwarf_Addr reloc_address = address; const char *secname = ""; if (n > 1) { int i = dwfl_module_relocate_address (module, &reloc_address); DWFL_ASSERT ("dwfl_module_relocate_address", i >= 0); secname = dwfl_module_relocation_info (module, i, NULL); } if (sess.verbose > 2) { clog << _F("emit dwarf addr %#" PRIx64 " => module %s section %s relocaddr %#" PRIx64, address, module_name.c_str (), (secname ?: "null"), reloc_address) << endl; } if (n > 0 && !(n == 1 && secname == NULL)) { DWFL_ASSERT ("dwfl_module_relocation_info", secname); if (n > 1 || secname[0] != '\0') { // This gives us the module name, and section name within the // module, for a kernel module (or other ET_REL module object). obstack_printf (pool, "({ unsigned long addr = 0; "); obstack_printf (pool, "addr = _stp_kmodule_relocate (\"%s\",\"%s\",%#" PRIx64 "); ", module_name.c_str(), secname, reloc_address); obstack_printf (pool, "addr; })"); } else if (n == 1 && module_name == TOK_KERNEL && secname[0] == '\0') { // elfutils' way of telling us that this is a relocatable kernel address, which we // need to treat the same way here as dwarf_query::add_probe_point does: _stext. address -= sess.sym_stext; secname = "_stext"; // Note we "cache" the result here through a static because the // kernel will never move after being loaded (unlike modules and // user-space dynamic share libraries). obstack_printf (pool, "({ static unsigned long addr = 0; "); obstack_printf (pool, "if (addr==0) addr = _stp_kmodule_relocate (\"%s\",\"%s\",%#" PRIx64 "); ", module_name.c_str(), secname, address); // PR10000 NB: not reloc_address obstack_printf (pool, "addr; })"); } else { obstack_printf (pool, "/* pragma:vma */"); obstack_printf (pool, "({ unsigned long addr = 0; "); obstack_printf (pool, "addr = _stp_umodule_relocate (\"%s\",%#" PRIx64 ", current); ", resolve_path(module_name.c_str()).c_str(), address); obstack_printf (pool, "addr; })"); } } else obstack_printf (pool, "%#" PRIx64 "UL", address); // assume as constant } void dwflpp::loc2c_emit_address (void *arg, struct obstack *pool, Dwarf_Addr address) { static_cast(arg)->emit_address (pool, address); } void dwflpp::get_locals(vector& scopes, set& locals) { // XXX Shouldn't this be walking up to outer scopes too? get_locals_die(scopes[0], locals); } void dwflpp::get_locals_die(Dwarf_Die& die, set& locals) { // Try to get the first child of die. Dwarf_Die child, import; if (dwarf_child (&die, &child) == 0) { do { const char *name; // Output each sibling's name (that is a variable or // parameter) to 'o'. switch (dwarf_tag (&child)) { case DW_TAG_variable: case DW_TAG_formal_parameter: name = dwarf_diename (&child); if (name) locals.insert(string("$") + name); break; case DW_TAG_imported_unit: // Treat the imported unit children as if they are // children of the given DIE. if (dwarf_attr_die(&child, DW_AT_import, &import)) get_locals_die (import, locals); break; default: break; } } while (dwarf_siblingof (&child, &child) == 0); } } Dwarf_Attribute * dwflpp::find_variable_and_frame_base (vector& scopes, Dwarf_Addr pc, string const & local, const target_symbol *e, Dwarf_Die *vardie, Dwarf_Attribute *fb_attr_mem) { Dwarf_Die *scope_die = &scopes[0]; Dwarf_Attribute *fb_attr = NULL; assert (cu); int declaring_scope = dwarf_getscopevar (&scopes[0], scopes.size(), local.c_str(), 0, NULL, 0, 0, vardie); if (declaring_scope < 0) { set locals; get_locals(scopes, locals); string sugs = levenshtein_suggest(local, locals); // probably not that many, so no limit if (pc) throw SEMANTIC_ERROR (_F("unable to find local '%s', [man error::dwarf] dieoffset %s in %s, near pc %s %s %s %s (%s)", local.c_str(), lex_cast_hex(dwarf_dieoffset(scope_die)).c_str(), module_name.c_str(), lex_cast_hex(pc).c_str(), (scope_die == NULL) ? "" : _("in"), (dwarf_diename(scope_die) ?: ""), (dwarf_diename(cu) ?: ""), (sugs.empty() ? (_("")) : (_("alternatives: ") + sugs + ")")).c_str()), e->tok); else throw SEMANTIC_ERROR (_F("unable to find global '%s', [man error::dwarf] dieoffset %s in %s, %s %s %s (%s)", local.c_str(), lex_cast_hex(dwarf_dieoffset(scope_die)).c_str(), module_name.c_str(), (scope_die == NULL) ? "" : _("in"), (dwarf_diename(scope_die) ?: ""), cu_name().c_str(), (sugs.empty() ? (_("")) : (_("alternatives: ") + sugs + ")")).c_str()), e->tok); } /* Some GCC versions would output duplicate external variables, one without a location attribute. If so, try to find the other if it exists in the same scope. See GCC PR51410. */ Dwarf_Attribute attr_mem; if (dwarf_attr_integrate (vardie, DW_AT_const_value, &attr_mem) == NULL && dwarf_attr_integrate (vardie, DW_AT_location, &attr_mem) == NULL && dwarf_attr_integrate (vardie, DW_AT_external, &attr_mem) != NULL && dwarf_tag(&scopes[declaring_scope]) == DW_TAG_compile_unit) { Dwarf_Die orig_vardie = *vardie; bool alt_found = false; if (dwarf_child(&scopes[declaring_scope], vardie) == 0) do { // Note, not handling DW_TAG_imported_unit, assuming GCC // version is recent enough to not need this workaround if // we would see an imported unit. if (dwarf_tag (vardie) == DW_TAG_variable && strcmp (dwarf_diename (vardie), local.c_str ()) == 0 && (dwarf_attr_integrate (vardie, DW_AT_external, &attr_mem) != NULL) && ((dwarf_attr_integrate (vardie, DW_AT_const_value, &attr_mem) != NULL) || (dwarf_attr_integrate (vardie, DW_AT_location, &attr_mem) != NULL))) alt_found = true; } while (!alt_found && dwarf_siblingof(vardie, vardie) == 0); if (! alt_found) *vardie = orig_vardie; } // Global vars don't need (cannot use) frame base in location descriptor. if (pc == 0) return NULL; /* We start out walking the "lexical scopes" as returned by * as returned by dwarf_getscopes for the address, starting with the * declaring_scope that the variable was found in. */ vector physcopes, *fbscopes = &scopes; for (size_t inner = declaring_scope; inner < fbscopes->size() && fb_attr == NULL; ++inner) { Dwarf_Die& scope = (*fbscopes)[inner]; switch (dwarf_tag (&scope)) { default: continue; case DW_TAG_subprogram: case DW_TAG_entry_point: fb_attr = dwarf_attr_integrate (&scope, DW_AT_frame_base, fb_attr_mem); break; case DW_TAG_inlined_subroutine: /* Unless we already are going through the "pyshical die tree", * we now need to start walking the die tree where this * subroutine is inlined to find the appropriate frame base. */ if (declaring_scope != -1) { physcopes = getscopes_die(&scope); if (physcopes.empty()) throw SEMANTIC_ERROR (_F("unable to get die scopes for '%s' in an inlined subroutine", local.c_str()), e->tok); fbscopes = &physcopes; inner = 0; // zero is current scope, for look will increase. declaring_scope = -1; } break; } } return fb_attr; } /* Returns a human readable string with suggested locations where a DIE attribute is valid. */ static string suggested_locations_string(Dwarf_Attribute *attr) { string locsstr; if (attr == NULL) locsstr = ""; else { #if _ELFUTILS_PREREQ (0, 158) Dwarf_Op *expr; size_t exprlen; Dwarf_Addr base, start, end; ptrdiff_t off = 0; off = dwarf_getlocations (attr, off, &base, &start, &end, &expr, &exprlen); if (off > 0) { locsstr = _("alternative locations: "); while (off > 0) { locsstr += "["; locsstr += lex_cast_hex(start); locsstr += ","; locsstr += lex_cast_hex(end); locsstr += "]"; off = dwarf_getlocations (attr, off, &base, &start, &end, &expr, &exprlen); if (off > 0) locsstr += ", "; } } else if (off == 0) locsstr = _(""); else locsstr = _F("", dwarf_errmsg(-1)); #else locsstr = ""; #endif /* _ELFUTILS_PREREQ (0, 158) */ } return locsstr; } /* Produce a human readable name for a DIE. */ static string die_name_string (Dwarf_Die *die) { string res; const char *name = dwarf_linkage_name(die); if (name == NULL) name = dwarf_diename (die); size_t demangle_buffer_len = 0; char *demangle_buffer = NULL; if (name != NULL && name[0] == '_' && name[1] == 'Z') { int status = -1; char *dsymname = abi::__cxa_demangle (name, demangle_buffer, &demangle_buffer_len, &status); if (status == 0) name = demangle_buffer = dsymname; } if (name != NULL) res = name; else res = _(" 0) { linestr += ":" + lex_cast(lineno); if (col > 0) linestr += ":" + lex_cast(col); } } else linestr += _("unknown source"); return linestr; } /* Returns a human readable DIE offset for use in error messages. Includes DIE offset and DWARF file used. */ string dwflpp::die_location_as_string(Dwarf_Die *die) { string locstr; /* DIE offset */ locstr += _("dieoffset: "); locstr += lex_cast_hex(dwarf_dieoffset(die)); /* DWARF file */ const char *mainfile, *debugfile; locstr += _(" from "); if (dwfl_module_info (module, NULL, NULL, NULL, NULL, NULL, &mainfile, &debugfile) == NULL || (mainfile == NULL && debugfile == NULL)) { locstr += _("unknown debug file for "); locstr += module_name; } else { if (debugfile != NULL) locstr += debugfile; else locstr += mainfile; } return locstr; } /* Returns a human readable (inlined) function and source file/line location for a pc location. */ string dwflpp::pc_location_as_function_string(Dwarf_Addr pc) { string locstr; locstr = _("function: "); /* Find the first function-like DIE with a name in scope. */ Dwarf_Die funcdie_mem; Dwarf_Die *funcdie = NULL; string funcname = ""; Dwarf_Die *scopes = NULL; int nscopes = dwarf_getscopes (cu, pc, &scopes); for (int i = 0; funcname == "" && i < nscopes; i++) { Dwarf_Die *scope = &scopes[i]; int tag = dwarf_tag (scope); if (tag == DW_TAG_subprogram || tag == DW_TAG_inlined_subroutine || tag == DW_TAG_entry_point) funcname = die_name_string (scope); if (funcname != "") { funcdie_mem = *scope; funcdie = &funcdie_mem; } } free (scopes); /* source location */ if (funcname == "") locstr += _(" at ") + pc_die_line_string (pc, NULL); else { int nscopes = dwarf_getscopes_die (funcdie, &scopes); if (nscopes > 0) { /* scopes[0] == funcdie, the lowest level, for which we already have the name. This is the actual source location where it happened. */ locstr += funcname; locstr += _(" at "); locstr += pc_die_line_string (pc, NULL); /* last_scope is the source location where the next inlined frame/function call was done. */ Dwarf_Die *last_scope = &scopes[0]; for (int i = 1; i < nscopes; i++) { Dwarf_Die *scope = &scopes[i]; int tag = dwarf_tag (scope); if (tag != DW_TAG_inlined_subroutine && tag != DW_TAG_entry_point && tag != DW_TAG_subprogram) continue; locstr += _(" inlined by "); locstr += die_name_string (scope); locstr += _(" at "); locstr += pc_die_line_string (pc, last_scope); /* Found the "top-level" in which everything was inlined. */ if (tag == DW_TAG_subprogram) break; last_scope = scope; } } else { locstr += funcname; locstr += _(" at "); locstr += pc_die_line_string (pc, NULL); } free (scopes); } return locstr; } struct location * dwflpp::translate_location(struct obstack *pool, Dwarf_Attribute *attr, Dwarf_Die *die, Dwarf_Addr pc, Dwarf_Attribute *fb_attr, struct location **tail, const target_symbol *e) { /* DW_AT_data_member_location, can be either constant offsets (struct member fields), or full blown location expressions. */ /* There is no location expression, but a constant value instead. */ if (dwarf_whatattr (attr) == DW_AT_const_value) { l2c_ctx.pc = pc; l2c_ctx.die = die; *tail = c_translate_constant (pool, &loc2c_error, this, &loc2c_emit_address, 0, pc, attr); return *tail; } Dwarf_Op *expr; size_t len; /* PR9768: formerly, we added pc+module_bias here. However, that bias value is not present in the pc value by the time we get it, so adding it would result in false negatives of variable reachibility. In other instances further below, the c_translate_FOO functions, the module_bias value used to be passed in, but instead should now be zero for the same reason. */ retry: switch (dwarf_getlocation_addr (attr, pc /*+ module_bias*/, &expr, &len, 1)) { case 1: /* Should always happen. */ if (len > 0) break; /* Fall through. */ case 0: /* Shouldn't happen.... but can, e.g. due to PR15123. */ { Dwarf_Addr pc2 = pr15123_retry_addr (pc, die); if (pc2 != 0) { pc = pc2; goto retry; } } /* FALLTHROUGH */ { string msg = _F("not accessible at this address (pc: %s) [man error::dwarf]", lex_cast_hex(pc).c_str()); semantic_error err(ERR_SRC, msg, e->tok); err.details.push_back(die_location_as_string(die)); err.details.push_back(pc_location_as_function_string(pc)); err.details.push_back(suggested_locations_string(attr)); throw err; } default: /* Shouldn't happen. */ case -1: { string msg = _F("dwarf_getlocation_addr failed at this address (pc: %s) [man error::dwarf]", lex_cast_hex(pc).c_str()); semantic_error err(ERR_SRC, msg, e->tok); string dwarf_err = _F("dwarf_error: %s", dwarf_errmsg(-1)); err.details.push_back(dwarf_err); err.details.push_back(die_location_as_string(die)); err.details.push_back(pc_location_as_function_string(pc)); err.details.push_back(suggested_locations_string(attr)); throw err; } } Dwarf_Op *cfa_ops; // pc is in the dw address space of the current module, which is what // c_translate_location expects. get_cfa_ops wants the global dwfl address. // cfa_ops only make sense for locals. if (pc) { Dwarf_Addr addr = pc + module_bias; cfa_ops = get_cfa_ops (addr); } else cfa_ops = NULL; l2c_ctx.pc = pc; l2c_ctx.die = die; return c_translate_location (pool, &loc2c_error, this, &loc2c_emit_address, 1, 0 /* PR9768 */, pc, attr, expr, len, tail, fb_attr, cfa_ops); } void dwflpp::get_members(Dwarf_Die *typedie, set& members, set &dupes) { const int typetag = dwarf_tag (typedie); /* compile and partial unit included for recursion through imported_unit below. */ if (typetag != DW_TAG_structure_type && typetag != DW_TAG_class_type && typetag != DW_TAG_union_type && typetag != DW_TAG_compile_unit && typetag != DW_TAG_partial_unit) { throw SEMANTIC_ERROR(_F("Type %s isn't a struct/class/union", dwarf_type_name(typedie).c_str())); } // Try to get the first child of vardie. Dwarf_Die die_mem, import; Dwarf_Die *die = &die_mem; switch (dwarf_child (typedie, die)) { case 1: // No children. throw SEMANTIC_ERROR(_F("Type %s is empty", dwarf_type_name(typedie).c_str())); case -1: // Error. default: // Shouldn't happen. throw SEMANTIC_ERROR(_F("Type %s: %s", dwarf_type_name(typedie).c_str(), dwarf_errmsg(-1))); case 0: // Success. break; } // Add each sibling's name to members set do { int tag = dwarf_tag(die); /* The children of an imported_unit should be treated as members too. */ if (tag == DW_TAG_imported_unit && dwarf_attr_die(die, DW_AT_import, &import)) get_members(&import, members, dupes); if (tag != DW_TAG_member && tag != DW_TAG_inheritance) continue; const char *member = dwarf_diename (die) ; if ( tag == DW_TAG_member && member != NULL ) { // Only output if this is new, to avoid inheritance dupes. if (dupes.insert(member).second) members.insert(member); } else { Dwarf_Die temp_die; if (!dwarf_attr_die (die, DW_AT_type, &temp_die)) { string source = dwarf_decl_file(die) ?: ""; int line = -1; dwarf_decl_line(die, &line); throw SEMANTIC_ERROR(_F("Couldn't obtain type attribute for anonymous " "member at %s:%d", source.c_str(), line)); } get_members(&temp_die, members, dupes); } } while (dwarf_siblingof (die, die) == 0); } bool dwflpp::find_struct_member(const target_symbol::component& c, Dwarf_Die *parentdie, Dwarf_Die *memberdie, vector& dies, vector& locs) { Dwarf_Attribute attr; Dwarf_Die die; /* With inheritance, a subclass may mask member names of parent classes, so * our search among the inheritance tree must be breadth-first rather than * depth-first (recursive). The parentdie is still our starting point. */ deque inheritees(1, *parentdie); for (; !inheritees.empty(); inheritees.pop_front()) { switch (dwarf_child (&inheritees.front(), &die)) { case 0: /* First child found. */ break; case 1: /* No children. */ continue; case -1: /* Error. */ default: /* Shouldn't happen */ throw SEMANTIC_ERROR (dwarf_type_name(&inheritees.front()) + ": " + string (dwarf_errmsg (-1)), c.tok); } do { int tag = dwarf_tag(&die); /* recurse into imported units as if they are anonymoust structs */ Dwarf_Die import; if (tag == DW_TAG_imported_unit && dwarf_attr_die(&die, DW_AT_import, &import) && find_struct_member(c, &import, memberdie, dies, locs)) goto success; if (tag != DW_TAG_member && tag != DW_TAG_inheritance) continue; const char *name = dwarf_diename(&die); if (tag == DW_TAG_inheritance) { /* Remember inheritee for breadth-first search. */ Dwarf_Die inheritee; if (dwarf_attr_die (&die, DW_AT_type, &inheritee)) inheritees.push_back(inheritee); } else if (name == NULL) { /* Need to recurse for anonymous structs/unions. */ Dwarf_Die subdie; if (dwarf_attr_die (&die, DW_AT_type, &subdie) && find_struct_member(c, &subdie, memberdie, dies, locs)) goto success; } else if (name == c.member) { *memberdie = die; goto success; } } while (dwarf_siblingof (&die, &die) == 0); } return false; success: /* As we unwind the recursion, we need to build the chain of * locations that got to the final answer. */ if (dwarf_attr_integrate (&die, DW_AT_data_member_location, &attr)) { dies.insert(dies.begin(), die); locs.insert(locs.begin(), attr); } /* Union members don't usually have a location, * but just use the containing union's location. */ else if (dwarf_tag(parentdie) != DW_TAG_union_type) throw SEMANTIC_ERROR (_F("no location for field '%s':%s", c.member.c_str(), dwarf_errmsg(-1)), c.tok); return true; } static inline void dwarf_die_type (Dwarf_Die *die, Dwarf_Die *typedie_mem, const token *tok=NULL) { if (!dwarf_attr_die (die, DW_AT_type, typedie_mem)) throw SEMANTIC_ERROR (_F("cannot get type of field: %s", dwarf_errmsg(-1)), tok); } void dwflpp::translate_components(struct obstack *pool, struct location **tail, Dwarf_Addr pc, const target_symbol *e, Dwarf_Die *vardie, Dwarf_Die *typedie, unsigned first) { unsigned i = first; while (i < e->components.size()) { const target_symbol::component& c = e->components[i]; /* XXX: This would be desirable, but we don't get the target_symbol token, and printing that gives us the file:line number too early anyway. */ #if 0 // Emit a marker to note which field is being access-attempted, to give // better error messages if deref() fails. string piece = string(...target_symbol token...) + string ("#") + lex_cast(components[i].second); obstack_printf (pool, "c->last_stmt = %s;", lex_cast_qstring(piece).c_str()); #endif switch (dwarf_tag (typedie)) { case DW_TAG_typedef: case DW_TAG_const_type: case DW_TAG_volatile_type: case DW_TAG_restrict_type: /* Just iterate on the referent type. */ dwarf_die_type (typedie, typedie, c.tok); break; case DW_TAG_reference_type: case DW_TAG_rvalue_reference_type: if (pool) { l2c_ctx.die = typedie; c_translate_pointer (pool, 1, 0 /* PR9768*/, typedie, tail); } dwarf_die_type (typedie, typedie, c.tok); break; case DW_TAG_pointer_type: /* A pointer with no type is a void* -- can't dereference it. */ if (!dwarf_hasattr_integrate (typedie, DW_AT_type)) throw SEMANTIC_ERROR (_F("invalid access '%s' vs '%s'", lex_cast(c).c_str(), dwarf_type_name(typedie).c_str()), c.tok); if (pool) { l2c_ctx.die = typedie; c_translate_pointer (pool, 1, 0 /* PR9768*/, typedie, tail); } if (c.type != target_symbol::comp_literal_array_index && c.type != target_symbol::comp_expression_array_index) { dwarf_die_type (typedie, typedie, c.tok); break; } /* Fallthrough */ /* else an array access */ case DW_TAG_array_type: if (c.type == target_symbol::comp_literal_array_index) { if (pool) { l2c_ctx.die = typedie; c_translate_array (pool, 1, 0 /* PR9768 */, typedie, tail, NULL, c.num_index); } } else if (c.type == target_symbol::comp_expression_array_index) { string index = "STAP_ARG_index" + lex_cast(i); if (pool) { l2c_ctx.die = typedie; c_translate_array (pool, 1, 0 /* PR9768 */, typedie, tail, index.c_str(), 0); } } else throw SEMANTIC_ERROR (_F("invalid access '%s' for array type", lex_cast(c).c_str()), c.tok); dwarf_die_type (typedie, typedie, c.tok); *vardie = *typedie; ++i; break; case DW_TAG_structure_type: case DW_TAG_union_type: case DW_TAG_class_type: if (c.type != target_symbol::comp_struct_member) throw SEMANTIC_ERROR (_F("invalid access '%s' for %s", lex_cast(c).c_str(), dwarf_type_name(typedie).c_str())); if (dwarf_hasattr(typedie, DW_AT_declaration)) { Dwarf_Die *tmpdie = declaration_resolve(typedie); if (tmpdie == NULL) throw SEMANTIC_ERROR (_F("unresolved %s", dwarf_type_name(typedie).c_str()), c.tok); *typedie = *tmpdie; } { vector dies; vector locs; if (!find_struct_member(c, typedie, vardie, dies, locs)) { /* Add a file:line hint for anonymous types */ string source; if (!dwarf_hasattr_integrate(typedie, DW_AT_name)) { int line; const char *file = dwarf_decl_file(typedie); if (file && dwarf_decl_line(typedie, &line) == 0) source = " (" + string(file) + ":" + lex_cast(line) + ")"; } set members, member_dupes; get_members(typedie, members, member_dupes); string sugs = levenshtein_suggest(c.member, members); if (!sugs.empty()) sugs = " (alternatives: " + sugs + ")"; throw SEMANTIC_ERROR(_F("unable to find member '%s' for %s%s%s", c.member.c_str(), dwarf_type_name(typedie).c_str(), source.c_str(), sugs.c_str()), c.tok); } for (unsigned j = 0; j < locs.size(); ++j) if (pool) translate_location (pool, &locs[j], &dies[j], pc, NULL, tail, e); } dwarf_die_type (vardie, typedie, c.tok); ++i; break; case DW_TAG_enumeration_type: case DW_TAG_base_type: throw SEMANTIC_ERROR (_F("invalid access '%s' vs. %s", lex_cast(c).c_str(), dwarf_type_name(typedie).c_str()), c.tok); break; case -1: throw SEMANTIC_ERROR (_F("cannot find type: %s", dwarf_errmsg(-1)), c.tok); break; default: throw SEMANTIC_ERROR (_F("%s: unexpected type tag %s", dwarf_type_name(typedie).c_str(), lex_cast(dwarf_tag(typedie)).c_str()), c.tok); break; } } } void dwflpp::resolve_unqualified_inner_typedie (Dwarf_Die *typedie, Dwarf_Die *innerdie, const target_symbol *e) { int typetag = dwarf_tag (typedie); *innerdie = *typedie; while (typetag == DW_TAG_typedef || typetag == DW_TAG_const_type || typetag == DW_TAG_volatile_type || typetag == DW_TAG_restrict_type) { if (!dwarf_attr_die (innerdie, DW_AT_type, innerdie)) throw SEMANTIC_ERROR (_F("cannot get type of pointee: %s", dwarf_errmsg(-1)), e->tok); typetag = dwarf_tag (innerdie); } } void dwflpp::translate_final_fetch_or_store (struct obstack *pool, struct location **tail, Dwarf_Addr /*module_bias*/, Dwarf_Die *vardie, Dwarf_Die *start_typedie, bool lvalue, const target_symbol *e, string &, string & postlude, Dwarf_Die *typedie) { /* First boil away any qualifiers associated with the type DIE of the final location to be accessed. */ resolve_unqualified_inner_typedie (start_typedie, typedie, e); /* If we're looking for an address, then we can just provide what we computed to this point, without using a fetch/store. */ if (e->addressof) { if (lvalue) throw SEMANTIC_ERROR (_("cannot write to member address"), e->tok); if (dwarf_hasattr_integrate (vardie, DW_AT_bit_offset)) throw SEMANTIC_ERROR (_("cannot take address of bit-field"), e->tok); l2c_ctx.die = vardie; c_translate_addressof (pool, 1, 0, vardie, typedie, tail, "STAP_RETVALUE"); return; } /* Then switch behavior depending on the type of fetch/store we want, and the type and pointer-ness of the final location. */ int typetag = dwarf_tag (typedie); switch (typetag) { default: throw SEMANTIC_ERROR (_F("unsupported type tag %s for %s", lex_cast(typetag).c_str(), dwarf_type_name(typedie).c_str()), e->tok); break; case DW_TAG_structure_type: case DW_TAG_class_type: case DW_TAG_union_type: { string type_name = dwarf_type_name(typedie); string decl_file = dwarf_decl_file(typedie) ?: ""; int decl_line = 0; (void) dwarf_decl_line(typedie, &decl_line); string decl_source; // PR20423: assemble an error message at least as informative // as bad-member message in translate_components() if (decl_file[0] && decl_line > 0) decl_source = " (" + decl_file + ":" + lex_cast(decl_line) + ")"; string a_member; try { set members; set dupes; get_members (typedie, members, dupes); if (members.begin() != members.end()) { a_member = " such as '->" + (*members.begin()) + "'"; } } catch (...) { // leave a_member empty } throw SEMANTIC_ERROR (_F("'%s'%s is being accessed instead of a member%s", type_name.c_str(), decl_source.c_str(), a_member.c_str()), (e->components.size() > 0 ? (e->components[e->components.size()-1].tok) : (e->tok))); } break; case DW_TAG_base_type: // Reject types we can't handle in systemtap { Dwarf_Attribute encoding_attr; Dwarf_Word encoding = (Dwarf_Word) -1; dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, &encoding_attr), & encoding); if (encoding == (Dwarf_Word) -1) { // clog << "bad type1 " << encoding << " diestr" << endl; throw SEMANTIC_ERROR (_F("unsupported type (mystery encoding %s for %s", lex_cast(encoding).c_str(), dwarf_type_name(typedie).c_str()), e->tok); } if (encoding == DW_ATE_float || encoding == DW_ATE_complex_float /* XXX || many others? */) { // clog << "bad type " << encoding << " diestr" << endl; throw SEMANTIC_ERROR (_F("unsupported type (encoding %s) for %s", lex_cast(encoding).c_str(), dwarf_type_name(typedie).c_str()), e->tok); } } /* Fallthrough */ // enumeration_types are always scalar. case DW_TAG_enumeration_type: l2c_ctx.die = vardie; if (lvalue) c_translate_store (pool, 1, 0 /* PR9768 */, vardie, typedie, tail, "STAP_ARG_value"); else c_translate_fetch (pool, 1, 0 /* PR9768 */, vardie, typedie, tail, "STAP_RETVALUE"); break; case DW_TAG_array_type: case DW_TAG_pointer_type: case DW_TAG_reference_type: case DW_TAG_rvalue_reference_type: if (lvalue) { if (typetag == DW_TAG_array_type) throw SEMANTIC_ERROR (_("cannot write to array address"), e->tok); if (typetag == DW_TAG_reference_type || typetag == DW_TAG_rvalue_reference_type) throw SEMANTIC_ERROR (_("cannot write to reference"), e->tok); assert (typetag == DW_TAG_pointer_type); l2c_ctx.die = typedie; c_translate_pointer_store (pool, 1, 0 /* PR9768 */, typedie, tail, "STAP_ARG_value"); } else { // We have the pointer: cast it to an integral type via &(*(...)) // NB: per bug #1187, at one point char*-like types were // automagically converted here to systemtap string values. // For several reasons, this was taken back out, leaving // pointer-to-string "conversion" (copying) to tapset functions. l2c_ctx.die = typedie; if (typetag == DW_TAG_array_type) c_translate_array (pool, 1, 0 /* PR9768 */, typedie, tail, NULL, 0); else c_translate_pointer (pool, 1, 0 /* PR9768 */, typedie, tail); c_translate_addressof (pool, 1, 0 /* PR9768 */, NULL, NULL, tail, "STAP_RETVALUE"); } break; } if (lvalue) postlude += " STAP_RETVALUE = STAP_ARG_value;\n"; } string dwflpp::express_as_string (string prelude, string postlude, struct location *head) { size_t bufsz = 0; char *buf = 0; // NB: it would leak to pre-allocate a buffer here FILE *memstream = open_memstream (&buf, &bufsz); assert(memstream); fprintf(memstream, "{\n"); fprintf(memstream, "%s", prelude.c_str()); unsigned int stack_depth; bool deref = c_emit_location (memstream, head, 1, &stack_depth); // Ensure that DWARF keeps loc2c to a "reasonable" stack size // 32 intptr_t leads to max 256 bytes on the stack if (stack_depth > 32) throw SEMANTIC_ERROR("oversized DWARF stack"); fprintf(memstream, "%s", postlude.c_str()); fprintf(memstream, " goto out;\n"); // dummy use of deref_fault label, to disable warning if deref() not used fprintf(memstream, "if (0) goto deref_fault;\n"); // XXX: deref flag not reliable; emit fault label unconditionally (void) deref; fprintf(memstream, "deref_fault:\n" " goto out;\n"); fprintf(memstream, "}\n"); fclose (memstream); string result(buf); free (buf); return result; } Dwarf_Addr dwflpp::vardie_from_symtable (Dwarf_Die *vardie, Dwarf_Addr *addr) { const char *name = dwarf_linkage_name (vardie) ?: dwarf_diename (vardie); if (sess.verbose > 2) clog << _F("finding symtable address for %s\n", name); *addr = 0; int syms = dwfl_module_getsymtab (module); DWFL_ASSERT (_("Getting symbols"), syms >= 0); for (int i = 0; *addr == 0 && i < syms; i++) { GElf_Sym sym; GElf_Word shndxp; const char *symname = dwfl_module_getsym(module, i, &sym, &shndxp); if (symname && ! strcmp (name, symname) && sym.st_shndx != SHN_UNDEF && (GELF_ST_TYPE (sym.st_info) == STT_NOTYPE // PR13284 || GELF_ST_TYPE (sym.st_info) == STT_OBJECT)) *addr = sym.st_value; } // Don't relocate for the kernel, or kernel modules we handle those // specially in emit_address. if (dwfl_module_relocations (module) == 1 && module_name != TOK_KERNEL) dwfl_module_relocate_address (module, addr); if (sess.verbose > 2) clog << _F("found %s @%#" PRIx64 "\n", name, *addr); return *addr; } string dwflpp::literal_stmt_for_local (vector& scopes, Dwarf_Addr pc, string const & local, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem) { Dwarf_Die vardie; Dwarf_Attribute fb_attr_mem, *fb_attr = NULL; // NB: when addr_loc is used for a synthesized DW_OP_addr below, then it // needs to remain valid until express_as_string() has finished with it. Dwarf_Op addr_loc; fb_attr = find_variable_and_frame_base (scopes, pc, local, e, &vardie, &fb_attr_mem); if (sess.verbose>2) { if (pc) clog << _F("finding location for local '%s' near address %#" PRIx64 ", module bias %#" PRIx64 "\n", local.c_str(), pc, module_bias); else clog << _F("finding location for global '%s' in CU '%s'\n", local.c_str(), cu_name().c_str()); } struct obstack pool; obstack_tracker p (&pool); struct location *tail = NULL; /* Given $foo->bar->baz[NN], translate the location of foo. */ struct location *head; Dwarf_Attribute attr_mem; if (dwarf_attr_integrate (&vardie, DW_AT_const_value, &attr_mem) == NULL && dwarf_attr_integrate (&vardie, DW_AT_location, &attr_mem) == NULL) { memset(&addr_loc, 0, sizeof(Dwarf_Op)); addr_loc.atom = DW_OP_addr; // If it is an external variable try the symbol table. PR10622. if (dwarf_attr_integrate (&vardie, DW_AT_external, &attr_mem) != NULL && vardie_from_symtable (&vardie, &addr_loc.number) != 0) { l2c_ctx.pc = pc; l2c_ctx.die = &vardie; head = c_translate_location (&pool, &loc2c_error, this, &loc2c_emit_address, 1, 0, pc, NULL, &addr_loc, 1, &tail, NULL, NULL); } else { string msg = _F("failed to retrieve location attribute for '%s' [man error::dwarf]", local.c_str()); semantic_error err(ERR_SRC, msg, e->tok); err.details.push_back(die_location_as_string(&vardie)); err.details.push_back(pc_location_as_function_string(pc)); throw err; } } else head = translate_location (&pool, &attr_mem, &vardie, pc, fb_attr, &tail, e); /* Translate the ->bar->baz[NN] parts. */ Dwarf_Die typedie; if (dwarf_attr_die (&vardie, DW_AT_type, &typedie) == NULL) { string msg = _F("failed to retrieve type attribute for '%s' [man error::dwarf]", local.c_str()); semantic_error err(ERR_SRC, msg, e->tok); err.details.push_back(die_location_as_string(&vardie)); err.details.push_back(pc_location_as_function_string(pc)); throw err; } translate_components (&pool, &tail, pc, e, &vardie, &typedie); /* Translate the assignment part, either x = $foo->bar->baz[NN] or $foo->bar->baz[NN] = x */ string prelude, postlude; translate_final_fetch_or_store (&pool, &tail, module_bias, &vardie, &typedie, lvalue, e, prelude, postlude, die_mem); /* Write the translation to a string. */ string result = express_as_string(prelude, postlude, head); return result; } Dwarf_Die* dwflpp::type_die_for_local (vector& scopes, Dwarf_Addr pc, string const & local, const target_symbol *e, Dwarf_Die *typedie) { Dwarf_Die vardie; Dwarf_Attribute attr_mem; find_variable_and_frame_base (scopes, pc, local, e, &vardie, &attr_mem); if (dwarf_attr_die (&vardie, DW_AT_type, typedie) == NULL) throw SEMANTIC_ERROR(_F("failed to retrieve type attribute for '%s' [man error::dwarf]", local.c_str()), e->tok); translate_components (NULL, NULL, pc, e, &vardie, typedie); return typedie; } string dwflpp::literal_stmt_for_return (Dwarf_Die *scope_die, Dwarf_Addr pc, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem) { if (sess.verbose>2) clog << _F("literal_stmt_for_return: finding return value for %s (%s)\n", (dwarf_diename(scope_die) ?: ""), (dwarf_diename(cu) ?: "")); struct obstack pool; obstack_tracker p (&pool); struct location *tail = NULL; /* Given $return->bar->baz[NN], translate the location of return. */ const Dwarf_Op *locops; int nlocops = dwfl_module_return_value_location (module, scope_die, &locops); if (nlocops < 0) throw SEMANTIC_ERROR(_F("failed to retrieve return value location for %s [man error::dwarf] (%s)", (dwarf_diename(scope_die) ?: ""), (dwarf_diename(cu) ?: "")), e->tok); // the function has no return value (e.g. "void" in C) else if (nlocops == 0) throw SEMANTIC_ERROR(_F("function %s (%s) has no return value", (dwarf_diename(scope_die) ?: ""), (dwarf_diename(cu) ?: "")), e->tok); l2c_ctx.pc = pc; l2c_ctx.die = scope_die; struct location *head = c_translate_location (&pool, &loc2c_error, this, &loc2c_emit_address, 1, 0 /* PR9768 */, pc, NULL, locops, nlocops, &tail, NULL, NULL); /* Translate the ->bar->baz[NN] parts. */ Dwarf_Die vardie = *scope_die, typedie; if (dwarf_attr_die (&vardie, DW_AT_type, &typedie) == NULL) throw SEMANTIC_ERROR(_F("failed to retrieve return value type attribute for %s [man error::dwarf] (%s)", (dwarf_diename(&vardie) ?: ""), (dwarf_diename(cu) ?: "")), e->tok); translate_components (&pool, &tail, pc, e, &vardie, &typedie); /* Translate the assignment part, either x = $return->bar->baz[NN] or $return->bar->baz[NN] = x */ string prelude, postlude; translate_final_fetch_or_store (&pool, &tail, module_bias, &vardie, &typedie, lvalue, e, prelude, postlude, die_mem); /* Write the translation to a string. */ string result = express_as_string(prelude, postlude, head); return result; } Dwarf_Die* dwflpp::type_die_for_return (Dwarf_Die *scope_die, Dwarf_Addr pc, const target_symbol *e, Dwarf_Die *typedie) { Dwarf_Die vardie = *scope_die; if (dwarf_attr_die (&vardie, DW_AT_type, typedie) == NULL) throw SEMANTIC_ERROR(_F("failed to retrieve return value type attribute for %s [man error::dwarf] (%s)", (dwarf_diename(&vardie) ?: ""), (dwarf_diename(cu) ?: "")), e->tok); translate_components (NULL, NULL, pc, e, &vardie, typedie); return typedie; } string dwflpp::literal_stmt_for_pointer (Dwarf_Die *start_typedie, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem) { if (sess.verbose>2) clog << _F("literal_stmt_for_pointer: finding value for %s (%s)\n", dwarf_type_name(start_typedie).c_str(), (dwarf_diename(cu) ?: "")); struct obstack pool; obstack_tracker p (&pool); l2c_ctx.pc = 1; l2c_ctx.die = start_typedie; struct location *head = c_translate_argument (&pool, &loc2c_error, this, &loc2c_emit_address, 1, "STAP_ARG_pointer"); struct location *tail = head; /* Translate the ->bar->baz[NN] parts. */ unsigned first = 0; Dwarf_Die typedie = *start_typedie, vardie = typedie; /* As a special case when typedie is not an array or pointer, we can * allow array indexing on STAP_ARG_pointer instead (since we do * know the pointee type and can determine its size). PR11556. */ const target_symbol::component* c = e->components.empty() ? NULL : &e->components[0]; if (c && (c->type == target_symbol::comp_literal_array_index || c->type == target_symbol::comp_expression_array_index)) { resolve_unqualified_inner_typedie (&typedie, &typedie, e); int typetag = dwarf_tag (&typedie); if (typetag != DW_TAG_pointer_type && typetag != DW_TAG_array_type) { l2c_ctx.die = &typedie; if (c->type == target_symbol::comp_literal_array_index) c_translate_array_pointer (&pool, 1, &typedie, &tail, NULL, c->num_index); else c_translate_array_pointer (&pool, 1, &typedie, &tail, "STAP_ARG_index0", 0); ++first; } } /* Now translate the rest normally. */ translate_components (&pool, &tail, 0, e, &vardie, &typedie, first); /* Translate the assignment part, either x = (STAP_ARG_pointer)->bar->baz[NN] or (STAP_ARG_pointer)->bar->baz[NN] = x */ string prelude, postlude; translate_final_fetch_or_store (&pool, &tail, module_bias, &vardie, &typedie, lvalue, e, prelude, postlude, die_mem); /* Write the translation to a string. */ string result = express_as_string(prelude, postlude, head); return result; } Dwarf_Die* dwflpp::type_die_for_pointer (Dwarf_Die *start_typedie, const target_symbol *e, Dwarf_Die *typedie) { unsigned first = 0; *typedie = *start_typedie; Dwarf_Die vardie = *typedie; /* Handle the same PR11556 case as above. */ const target_symbol::component* c = e->components.empty() ? NULL : &e->components[0]; if (c && (c->type == target_symbol::comp_literal_array_index || c->type == target_symbol::comp_expression_array_index)) { resolve_unqualified_inner_typedie (typedie, typedie, e); int typetag = dwarf_tag (typedie); if (typetag != DW_TAG_pointer_type && typetag != DW_TAG_array_type) ++first; } translate_components (NULL, NULL, 0, e, &vardie, typedie, first); return typedie; } static bool in_kprobes_function(systemtap_session& sess, Dwarf_Addr addr) { if (sess.sym_kprobes_text_start != 0 && sess.sym_kprobes_text_end != 0) { // If the probe point address is anywhere in the __kprobes // address range, we can't use this probe point. if (addr >= sess.sym_kprobes_text_start && addr < sess.sym_kprobes_text_end) return true; } return false; } enum dwflpp::blacklisted_type dwflpp::blacklisted_p(interned_string funcname, interned_string filename, int, interned_string module, Dwarf_Addr addr, bool has_return) { if (!blacklist_enabled) return dwflpp::blacklisted_none; enum dwflpp::blacklisted_type blacklisted = dwflpp::blacklisted_none; // check against section blacklist string section = get_blacklist_section(addr); // PR6503: modules don't need special init/exit treatment if (module == TOK_KERNEL && !regexec (&blacklist_section, section.c_str(), 0, NULL, 0)) blacklisted = dwflpp::blacklisted_section; // Check for function marked '__kprobes'. else if (module == TOK_KERNEL && in_kprobes_function(sess, addr)) blacklisted = dwflpp::blacklisted_kprobes; // Check probe point against function blacklist else if (!regexec(&blacklist_func, funcname.to_string().c_str(), 0, NULL, 0)) blacklisted = dwflpp::blacklisted_function; // Check probe point against function return blacklist else if (has_return && !regexec(&blacklist_func_ret, funcname.to_string().c_str(), 0, NULL, 0)) blacklisted = dwflpp::blacklisted_function_return; // Check probe point against file blacklist else if (!regexec(&blacklist_file, filename.to_string().c_str(), 0, NULL, 0)) blacklisted = dwflpp::blacklisted_file; if (blacklisted) { if (sess.verbose>1) clog << _(" - blacklisted"); if (sess.guru_mode) { blacklisted = dwflpp::blacklisted_none; if (sess.verbose>1) clog << _(" but not skipped (guru mode enabled)"); } } // This probe point is not blacklisted. return blacklisted; } void dwflpp::build_kernel_blacklist() { // We build up the regexps in these strings // Add ^ anchors at the front; $ will be added just before regcomp. string blfn = "^("; string blfn_ret = "^("; string blfile = "^("; string blsection = "^("; blsection += "\\.init\\."; // first alternative, no "|" blsection += "|\\.exit\\."; blsection += "|\\.devinit\\."; blsection += "|\\.devexit\\."; blsection += "|\\.cpuinit\\."; blsection += "|\\.cpuexit\\."; blsection += "|\\.meminit\\."; blsection += "|\\.memexit\\."; /* NOTE all include/asm .h blfile patterns might need "full path" so prefix those with '.*' - see PR13108 and PR13112. */ blfile += "kernel/kprobes\\.c"; // first alternative, no "|" blfile += "|arch/.*/kernel/kprobes\\.c"; blfile += "|.*/include/asm/io\\.h"; blfile += "|.*/include/asm/io-defs\\.h"; blfile += "|.*/include/asm/io_64\\.h"; blfile += "|.*/include/asm/bitops\\.h"; blfile += "|drivers/ide/ide-iops\\.c"; // paravirt ops blfile += "|arch/.*/kernel/paravirt\\.c"; blfile += "|.*/include/asm/paravirt\\.h"; // XXX: it would be nice if these blacklisted functions were pulled // in dynamically, instead of being statically defined here. // Perhaps it could be populated from script files. A "noprobe // kernel.function("...")" construct might do the trick. // Most of these are marked __kprobes in newer kernels. We list // them here (anyway) so the translator can block them on older // kernels that don't have the __kprobes function decorator. This // also allows detection of problems at translate- rather than // run-time. blfn += "atomic_notifier_call_chain"; // first blfn; no "|" blfn += "|default_do_nmi"; blfn += "|__die"; blfn += "|die_nmi"; blfn += "|do_debug"; blfn += "|do_general_protection"; blfn += "|do_int3"; blfn += "|do_IRQ"; blfn += "|do_page_fault"; blfn += "|do_sparc64_fault"; blfn += "|do_trap"; blfn += "|dummy_nmi_callback"; blfn += "|flush_icache_range"; blfn += "|ia64_bad_break"; blfn += "|ia64_do_page_fault"; blfn += "|ia64_fault"; blfn += "|io_check_error"; blfn += "|mem_parity_error"; blfn += "|nmi_watchdog_tick"; blfn += "|notifier_call_chain"; blfn += "|oops_begin"; blfn += "|oops_end"; blfn += "|program_check_exception"; blfn += "|single_step_exception"; blfn += "|sync_regs"; blfn += "|unhandled_fault"; blfn += "|unknown_nmi_error"; blfn += "|xen_[gs]et_debugreg"; blfn += "|xen_irq_.*"; blfn += "|xen_.*_fl_direct.*"; blfn += "|check_events"; blfn += "|xen_adjust_exception_frame"; blfn += "|xen_iret.*"; blfn += "|xen_sysret64.*"; blfn += "|test_ti_thread_flag.*"; blfn += "|inat_get_opcode_attribute"; blfn += "|system_call_after_swapgs"; blfn += "|HYPERVISOR_[gs]et_debugreg"; blfn += "|HYPERVISOR_event_channel_op"; blfn += "|hash_64"; blfn += "|hash_ptr"; blfn += "|native_set_pte"; // Lots of locks blfn += "|.*raw_.*_lock.*"; blfn += "|.*raw_.*_unlock.*"; blfn += "|.*raw_.*_trylock.*"; blfn += "|.*read_lock.*"; blfn += "|.*read_unlock.*"; blfn += "|.*read_trylock.*"; blfn += "|.*write_lock.*"; blfn += "|.*write_unlock.*"; blfn += "|.*write_trylock.*"; blfn += "|.*write_seqlock.*"; blfn += "|.*write_sequnlock.*"; blfn += "|.*spin_lock.*"; blfn += "|.*spin_unlock.*"; blfn += "|.*spin_trylock.*"; blfn += "|.*spin_is_locked.*"; blfn += "|rwsem_.*lock.*"; blfn += "|.*mutex_.*lock.*"; // atomic functions blfn += "|atomic_.*"; blfn += "|atomic64_.*"; // few other problematic cases blfn += "|get_bh"; blfn += "|put_bh"; // Experimental blfn += "|.*apic.*|.*APIC.*"; blfn += "|.*softirq.*"; blfn += "|.*IRQ.*"; blfn += "|.*_intr.*"; blfn += "|__delay"; blfn += "|.*kernel_text.*"; blfn += "|get_current"; blfn += "|current_.*"; blfn += "|.*exception_tables.*"; blfn += "|.*setup_rt_frame.*"; // PR 5759, CONFIG_PREEMPT kernels blfn += "|.*preempt_count.*"; blfn += "|preempt_schedule"; // These functions don't return, so return probes would never be recovered blfn_ret += "do_exit"; // no "|" blfn_ret += "|sys_exit"; blfn_ret += "|sys_exit_group"; // __switch_to changes "current" on x86_64 and i686, so return probes // would cause kernel panic, and it is marked as "__kprobes" on x86_64 if (sess.architecture == "x86_64") blfn += "|__switch_to"; if (sess.architecture == "i686") blfn_ret += "|__switch_to"; // RHEL6 pre-beta 2.6.32-19.el6 blfn += "|special_mapping_.*"; blfn += "|.*_pte_.*"; // or "|smaps_pte_range"; blfile += "|fs/seq_file\\.c"; blfn += ")$"; blfn_ret += ")$"; blfile += ")$"; blsection += ")"; // NB: no $, sections match just the beginning if (sess.verbose > 2) { clog << _("blacklist regexps:") << endl; clog << "blfn: " << blfn << endl; clog << "blfn_ret: " << blfn_ret << endl; clog << "blfile: " << blfile << endl; clog << "blsection: " << blsection << endl; } int rc = regcomp (& blacklist_func, blfn.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_func regcomp failed")); rc = regcomp (& blacklist_func_ret, blfn_ret.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_func_ret regcomp failed")); rc = regcomp (& blacklist_file, blfile.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_file regcomp failed")); rc = regcomp (& blacklist_section, blsection.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_section regcomp failed")); blacklist_enabled = true; } void dwflpp::build_user_blacklist() { // We build up the regexps in these strings // Add ^ anchors at the front; $ will be added just before regcomp. string blfn = "^("; string blfn_ret = "^("; string blfile = "^("; string blsection = "^("; // Non-matching placeholders until we have real things to match blfn += ".^"; blfile += ".^"; blsection += ".^"; // These functions don't use the normal function-entry ABI, so can't be .return probed safely blfn_ret += "_start"; blfn += ")$"; blfn_ret += ")$"; blfile += ")$"; blsection += ")"; // NB: no $, sections match just the beginning if (sess.verbose > 2) { clog << _("blacklist regexps:") << endl; clog << "blfn: " << blfn << endl; clog << "blfn_ret: " << blfn_ret << endl; clog << "blfile: " << blfile << endl; clog << "blsection: " << blsection << endl; } int rc = regcomp (& blacklist_func, blfn.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_func regcomp failed")); rc = regcomp (& blacklist_func_ret, blfn_ret.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_func_ret regcomp failed")); rc = regcomp (& blacklist_file, blfile.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_file regcomp failed")); rc = regcomp (& blacklist_section, blsection.c_str(), REG_NOSUB|REG_EXTENDED); if (rc) throw SEMANTIC_ERROR (_("blacklist_section regcomp failed")); blacklist_enabled = true; } string dwflpp::get_blacklist_section(Dwarf_Addr addr) { string blacklist_section; Dwarf_Addr bias; // We prefer dwfl_module_getdwarf to dwfl_module_getelf here, // because dwfl_module_getelf can force costly section relocations // we don't really need, while either will do for this purpose. Elf* elf = (dwarf_getelf (dwfl_module_getdwarf (module, &bias)) ?: dwfl_module_getelf (module, &bias)); Dwarf_Addr offset = addr - bias; if (elf) { Elf_Scn* scn = 0; size_t shstrndx; DWFL_ASSERT ("getshdrstrndx", elf_getshdrstrndx (elf, &shstrndx)); while ((scn = elf_nextscn (elf, scn)) != NULL) { GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); if (! shdr) continue; // XXX error? if (!(shdr->sh_flags & SHF_ALLOC)) continue; GElf_Addr start = shdr->sh_addr; GElf_Addr end = start + shdr->sh_size; if (! (offset >= start && offset < end)) continue; blacklist_section = elf_strptr (elf, shstrndx, shdr->sh_name); break; } } return blacklist_section; } /* Find the section named 'section_name' in the current module * returning the section header using 'shdr_mem' */ GElf_Shdr * dwflpp::get_section(string section_name, GElf_Shdr *shdr_mem, Elf **elf_ret) { GElf_Shdr *shdr = NULL; Elf* elf; Dwarf_Addr bias; size_t shstrndx; // Explicitly look in the main elf file first. elf = dwfl_module_getelf (module, &bias); Elf_Scn *probe_scn = NULL; DWFL_ASSERT ("getshdrstrndx", elf_getshdrstrndx (elf, &shstrndx)); bool have_section = false; while ((probe_scn = elf_nextscn (elf, probe_scn))) { shdr = gelf_getshdr (probe_scn, shdr_mem); assert (shdr != NULL); if (elf_strptr (elf, shstrndx, shdr->sh_name) == section_name) { have_section = true; break; } } // Older versions may put the section in the debuginfo dwarf file, // so check if it actually exists, if not take a look in the debuginfo file if (! have_section || (have_section && shdr->sh_type == SHT_NOBITS)) { elf = dwarf_getelf (dwfl_module_getdwarf (module, &bias)); if (! elf) return NULL; DWFL_ASSERT ("getshdrstrndx", elf_getshdrstrndx (elf, &shstrndx)); probe_scn = NULL; while ((probe_scn = elf_nextscn (elf, probe_scn))) { shdr = gelf_getshdr (probe_scn, shdr_mem); if (elf_strptr (elf, shstrndx, shdr->sh_name) == section_name) { have_section = true; break; } } } if (!have_section) return NULL; if (elf_ret) *elf_ret = elf; return shdr; } Dwarf_Addr dwflpp::relocate_address(Dwarf_Addr dw_addr, interned_string& reloc_section) { // PR10273 // libdw address, so adjust for bias gotten from dwfl_module_getdwarf Dwarf_Addr reloc_addr = dw_addr + module_bias; if (!module) { assert(module_name == TOK_KERNEL); reloc_section = ""; } else if (dwfl_module_relocations (module) > 0) { // This is a relocatable module; libdwfl already knows its // sections, so we can relativize addr. int idx = dwfl_module_relocate_address (module, &reloc_addr); const char* r_s = dwfl_module_relocation_info (module, idx, NULL); if (r_s) reloc_section = r_s; if (reloc_section == "" && dwfl_module_relocations (module) == 1) reloc_section = ".dynamic"; } else reloc_section = ".absolute"; return reloc_addr; } /* Returns the call frame address operations for the given program counter * in the libdw address space. */ Dwarf_Op * dwflpp::get_cfa_ops (Dwarf_Addr pc) { Dwarf_Op *cfa_ops = NULL; if (sess.verbose > 2) clog << "get_cfa_ops @0x" << hex << pc << dec << ", module_start @0x" << hex << module_start << dec << endl; // Try debug_frame first, then fall back on eh_frame. size_t cfa_nops = 0; Dwarf_Addr bias = 0; Dwarf_Frame *frame = NULL; Dwarf_CFI *cfi = dwfl_module_dwarf_cfi (module, &bias); if (cfi != NULL) { if (sess.verbose > 3) clog << "got dwarf cfi bias: 0x" << hex << bias << dec << endl; if (dwarf_cfi_addrframe (cfi, pc - bias, &frame) == 0) dwarf_frame_cfa (frame, &cfa_ops, &cfa_nops); else if (sess.verbose > 3) clog << "dwarf_cfi_addrframe failed: " << dwarf_errmsg(-1) << endl; } else if (sess.verbose > 3) clog << "dwfl_module_dwarf_cfi failed: " << dwfl_errmsg(-1) << endl; if (cfa_ops == NULL) { cfi = dwfl_module_eh_cfi (module, &bias); if (cfi != NULL) { if (sess.verbose > 3) clog << "got eh cfi bias: 0x" << hex << bias << dec << endl; Dwarf_Frame *frame = NULL; if (dwarf_cfi_addrframe (cfi, pc - bias, &frame) == 0) dwarf_frame_cfa (frame, &cfa_ops, &cfa_nops); else if (sess.verbose > 3) clog << "dwarf_cfi_addrframe failed: " << dwarf_errmsg(-1) << endl; } else if (sess.verbose > 3) clog << "dwfl_module_eh_cfi failed: " << dwfl_errmsg(-1) << endl; } if (sess.verbose > 2) { if (cfa_ops == NULL) clog << _("not found cfa") << endl; else { Dwarf_Addr frame_start, frame_end; bool frame_signalp; int info = dwarf_frame_info (frame, &frame_start, &frame_end, &frame_signalp); clog << _F("found cfa, info: %d [start: %#" PRIx64 ", end: %#" PRIx64 ", nops: %zu", info, frame_start, frame_end, cfa_nops) << endl; } } return cfa_ops; } int dwflpp::add_module_build_id_to_hash (Dwfl_Module *m, void **userdata __attribute__ ((unused)), const char *name, Dwarf_Addr, void *arg) { string modname = name; systemtap_session * s = (systemtap_session *)arg; if (pending_interrupts) return DWARF_CB_ABORT; // Extract the build ID const unsigned char *bits; GElf_Addr vaddr; int bits_length = dwfl_module_build_id(m, &bits, &vaddr); if(bits_length > 0) { // Convert the binary bits to a hex string string hex = hex_dump(bits, bits_length); // Store the build ID in the session s->build_ids.push_back(hex); } return DWARF_CB_OK; } static int cu_entry_pc_caching_callback (Dwarf_Die *func, pair *data) { auto& dw = data->first; auto& cache = data->second; Dwarf_Addr entry_pc; if (dw.die_entrypc (func, &entry_pc)) cache.insert (entry_pc); return DWARF_CB_OK; } bool dwflpp::check_cu_entry_pc (Dwarf_Die *cu, Dwarf_Addr pc) { auto& entry_pcs = cu_entry_pc_cache[cu->addr]; if (!entry_pcs) { save_and_restore saved_cu(&this->cu, cu); entry_pcs = new entry_pc_cache_t; pair data (*this, *entry_pcs); int rc = iterate_over_functions (cu_entry_pc_caching_callback, &data, "*"); if (rc != DWARF_CB_OK) return false; } return entry_pcs->count(pc) != 0; } // Perform PR15123 heuristic for given variable at given address. // Return alternate pc address to do location-list lookup at, or 0 if // inapplicable. // Dwarf_Addr dwflpp::pr15123_retry_addr (Dwarf_Addr pc, Dwarf_Die* die) { // For PR15123, we'd like to detect the situation where the // incoming PC may point to a couple-of-byte instruction // sequence that gcc emits for CFLAGS=-mfentry, and where // context variables are in fact available throughout, *but* due // to the bug, the dwarf debuginfo location-list only starts a // few instructions later. Prologue searching does not resolve // this as a line-record is in place at the -mfentry prologue. // // Detecting this is complicated because ... // - we only want to do this if -mfentry was actually used // - if points to the a function entry point // - if the architecture is familiar enough that we can have a // hard-coded constant to skip over the prologue. // // Otherwise, we could give a false-positive - return corrupted // data. // // Use of -mfentry is detectable only if CFLAGS=-grecord-gcc-switches // was used. Without it, set the PR15123_ASSUME_MFENTRY environment // variable to override the -mfentry test. if (getenv ("PR15123_DISABLE")) return 0; Dwarf_Die cudie; dwarf_diecu (die, &cudie, NULL, NULL); if (!getenv ("PR15123_ASSUME_MFENTRY")) { string producer, version; if (!is_gcc_producer(&cudie, producer, version)) return 0; if (producer.find("-mfentry") == string::npos) return 0; } // Determine if this pc maps to the beginning of a // real function (not some inlined doppelganger. This // is made tricker by this->function may not be // pointing at the right DIE (say e.g. stap encountered // the inlined copy first, so was focus_on_function'd). if (!check_cu_entry_pc (&cudie, pc)) return 0; // (will fail on retry, so we won't loop more than once) if (sess.architecture == "i386" || sess.architecture == "x86_64") { /* pull the trigger */ if (sess.verbose > 2) clog << _("retrying variable location-list lookup at address pc+5\n"); return pc + 5; } return 0; } bool dwflpp::has_gnu_debugdata () { Dwarf_Addr load_addr; // Note we really want the actual elf file, not the dwarf .debug file. Elf* elf = dwfl_module_getelf (module, &load_addr); size_t shstrndx; assert (elf_getshdrstrndx (elf, &shstrndx) >= 0); // Get the gnu_debugdata section header Elf_Scn *scn = NULL; GElf_Shdr *gnu_debugdata_shdr = NULL; GElf_Shdr gnu_debugdata_shdr_mem; while ((scn = elf_nextscn (elf, scn))) { gnu_debugdata_shdr = gelf_getshdr (scn, &gnu_debugdata_shdr_mem); assert (gnu_debugdata_shdr != NULL); if (strcmp (elf_strptr (elf, shstrndx, gnu_debugdata_shdr->sh_name), ".gnu_debugdata") == 0) return true; } return false; } // If not GCC, return false. Otherwise, return true and set vers. bool dwflpp::is_gcc_producer(Dwarf_Die *cudie, string& producer, string& version) { Dwarf_Attribute producer_attr; if (!dwarf_attr_integrate(cudie, DW_AT_producer, &producer_attr)) return false; // GNU {C|C++|...} x.x.x YYYYMMDD ... const char *cproducer = dwarf_formstring(&producer_attr); if (!cproducer) return false; producer = cproducer; vector tokens; tokenize(producer, tokens); if (tokens.size() < 3 || tokens[0] != "GNU" || tokens[2].find_first_not_of(".0123456789") != string::npos) return false; version = tokens[2]; return true; } static bool die_has_loclist(Dwarf_Die *begin_die) { Dwarf_Die die; Dwarf_Attribute loc; if (dwarf_child(begin_die, &die) != 0) return false; do { switch (dwarf_tag(&die)) { case DW_TAG_formal_parameter: case DW_TAG_variable: if (dwarf_attr_integrate(&die, DW_AT_location, &loc) && dwarf_whatform(&loc) == DW_FORM_sec_offset) return true; break; default: if (dwarf_haschildren (&die)) if (die_has_loclist(&die)) return true; break; } } while (dwarf_siblingof (&die, &die) == 0); return false; } bool dwflpp::has_valid_locs () { assert(cu); // The current CU has valid location info (implying we do not need to skip the // prologue) if // - it was compiled with -O2 -g (in which case, GCC outputs proper location // info for the prologue), and // - it was compiled by GCC >= 4.5 (previous versions could have had invalid // debug info in the prologue, see GDB's PR13777) // Note that clang behaves similarly to GCC here: non-optimized code does not // have location lists, while optimized code does. In the check below, even if // the producer is not GCC, we assume that it is valid to do the loclist check // afterwards (which it is for clang). string prod, vers; if (is_gcc_producer(cu, prod, vers) && strverscmp(vers.c_str(), "4.5") < 0) return false; // We determine if the current CU has been optimized with -O2 -g by looking // for any data objects whose DW_AT_location is a location list. This is also // how GDB determines whether to skip the prologue or not. See GDB's PR12573 // and also RHBZ612253#c6. if (!die_has_loclist(cu)) return false; if (sess.verbose > 2) clog << _F("CU '%s' in module '%s' has valid locs", cu_name().c_str(), module_name.c_str()) << endl; return true; } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/dwflpp.h000066400000000000000000000754661305163227500151010ustar00rootroot00000000000000// C++ interface to dwfl // Copyright (C) 2005-2015 Red Hat Inc. // Copyright (C) 2005-2007 Intel Corporation. // Copyright (C) 2008 James.Bottomley@HansenPartnership.com // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef DWFLPP_H #define DWFLPP_H #include "config.h" #include "dwarf_wrappers.h" #include "elaborate.h" #include "session.h" #include "setupdwfl.h" #include "stringtable.h" #include #include #include #include #include #include #include #include // Old elf.h doesn't know about this machine type. #ifndef EM_AARCH64 #define EM_AARCH64 183 #endif extern "C" { #include #include } struct base_func_info; struct func_info; struct inline_instance_info; struct symbol_table; struct base_query; struct external_function_query; enum lineno_t { ABSOLUTE, RELATIVE, WILDCARD, ENUMERATED }; enum info_status { info_unknown, info_present, info_absent }; // module -> cu die[] typedef std::unordered_map*> module_cu_cache_t; // An instance of this type tracks whether the type units for a given // Dwarf have been read. typedef std::set module_tus_read_t; // typename -> die typedef std::unordered_map cu_type_cache_t; // cu die -> (typename -> die) typedef std::unordered_map mod_cu_type_cache_t; // function -> die typedef std::unordered_multimap cu_function_cache_t; // cu die -> (function -> die) typedef std::unordered_map mod_cu_function_cache_t; // module -> (function -> die) typedef std::unordered_map mod_function_cache_t; // inline function die -> instance die[] typedef std::unordered_map*> cu_inl_function_cache_t; // die -> parent die typedef std::unordered_map cu_die_parent_cache_t; // cu die -> (die -> parent die) typedef std::unordered_map mod_cu_die_parent_cache_t; // Dwarf_Line[] (sorted by lineno) typedef std::vector lines_t; typedef std::pair lines_range_t; // srcfile -> Dwarf_Line[] typedef std::unordered_map srcfile_lines_cache_t; // cu die -> (srcfile -> Dwarf_Line[]) typedef std::unordered_map cu_lines_cache_t; // cu die -> {entry pcs} typedef std::unordered_set entry_pc_cache_t; typedef std::unordered_map cu_entry_pc_cache_t; typedef std::vector base_func_info_map_t; typedef std::vector func_info_map_t; typedef std::vector inline_instance_map_t; struct module_info { Dwfl_Module* mod; const char* name; std::string elf_path; Dwarf_Addr addr; Dwarf_Addr bias; symbol_table *sym_table; info_status dwarf_status; // module has dwarf info? info_status symtab_status; // symbol table cached? std::set inlined_funcs; std::set plt_funcs; std::set > marks; /* */ void get_symtab(); void update_symtab(cu_function_cache_t *funcs); module_info(const char *name) : mod(NULL), name(name), addr(0), bias(0), sym_table(NULL), dwarf_status(info_unknown), symtab_status(info_unknown) {} ~module_info(); }; struct module_cache { std::map cache; bool paths_collected; bool dwarf_collected; module_cache() : paths_collected(false), dwarf_collected(false) {} ~module_cache(); }; struct base_func_info { base_func_info() : decl_line(-1), entrypc(0) { std::memset(&die, 0, sizeof(die)); } interned_string name; interned_string decl_file; int decl_line; Dwarf_Die die; Dwarf_Addr entrypc; }; struct func_info : base_func_info { func_info() : addr(0), prologue_end(0), weak(false), descriptor(false) {} Dwarf_Addr addr; Dwarf_Addr prologue_end; bool weak, descriptor; }; struct inline_instance_info : base_func_info { inline_instance_info() {} bool operator<(const inline_instance_info& other) const; }; /* We'll need some context when dwflpp::loc2c_error is called. So we can attach some detailed information about (the location of) the DWARF that failed to be translated. Needs updating before each loc2c c_translate call. */ struct loc2c_context { Dwarf_Die *die; Dwarf_Addr pc; public: loc2c_context(): die(0), pc(0) {} }; struct dwflpp { systemtap_session & sess; // These are "current" values we focus on. Dwfl_Module * module; Dwarf_Addr module_bias; module_info * mod_info; // These describe the current module's PC address range Dwarf_Addr module_start; Dwarf_Addr module_end; Dwarf_Die * cu; std::string module_name; std::string function_name; // Some context for dwflpp::loc2c_error callback. // Needs updating before each loc2c c_translate call. struct loc2c_context l2c_ctx; dwflpp(systemtap_session & session, const std::string& user_module, bool kernel_p); dwflpp(systemtap_session & session, const std::vector& user_modules, bool kernel_p); ~dwflpp(); void get_module_dwarf(bool required = false, bool report = true); void focus_on_module(Dwfl_Module * m, module_info * mi); void focus_on_cu(Dwarf_Die * c); void focus_on_function(Dwarf_Die * f); std::string cu_name(void); Dwarf_Die *query_cu_containing_address(Dwarf_Addr a); bool module_name_matches(const std::string& pattern); static bool name_has_wildcard(const std::string& pattern); bool module_name_final_match(const std::string& pattern); bool function_name_matches_pattern(const std::string& name, const std::string& pattern); bool function_name_matches(const std::string& pattern); bool function_scope_matches(const std::vector& scopes); template void iterate_over_modules(int (* callback)(Dwfl_Module*, void**, const char*, Dwarf_Addr, T*), T *data) { /* We're using templates here to enforce type-safety between the data arg * we're requested to pass to callback, and the data arg that the callback * actually takes. Rather than putting the implementation here, we simply * call the specialization, which does the real work. * As a result, we need to cast the data arg in the callback signature * and the one passed to void* (which is what elfutils also works with). * */ iterate_over_modules((int (*)(Dwfl_Module*, void**, const char*, Dwarf_Addr, void *))callback, (void*)data); } template void iterate_over_cus(int (* callback)(Dwarf_Die*, T*), T *data, bool want_types) { // See comment block in iterate_over_modules() iterate_over_cus((int (*)(Dwarf_Die*, void*))callback, (void*)data, want_types); } bool func_is_inline(); bool func_is_exported(); template void iterate_over_inline_instances(int (* callback)(Dwarf_Die*, T*), T *data) { // See comment block in iterate_over_modules() iterate_over_inline_instances((int (*)(Dwarf_Die*, void*))callback, (void*)data); } std::vector getscopes_die(Dwarf_Die* die); std::vector getscopes(Dwarf_Die* die); std::vector getscopes(Dwarf_Addr pc); Dwarf_Die *declaration_resolve(Dwarf_Die *type); Dwarf_Die *declaration_resolve(const std::string& name); Dwarf_Die *declaration_resolve_other_cus(const std::string& name); template int iterate_over_functions (int (* callback)(Dwarf_Die*, T*), T *data, const std::string& function) { // See comment block in iterate_over_modules() return iterate_over_functions((int (*)(Dwarf_Die*, void*))callback, (void*)data, function); } template int iterate_single_function (int (* callback)(Dwarf_Die*, T*), T *data, const std::string& function) { // See comment block in iterate_over_modules() return iterate_single_function((int (*)(Dwarf_Die*, void*))callback, (void*)data, function); } template int iterate_over_notes (T *object, void (* callback)(T*, const std::string&, const std::string&, int, const char*, size_t)) { // See comment block in iterate_over_modules() return iterate_over_notes((void*)object, (void (*)(void*, const std::string&, const std::string&, int, const char*, size_t))callback); } template void iterate_over_libraries (void (*callback)(T*, const char*), T *data) { // See comment block in iterate_over_modules() iterate_over_libraries((void (*)(void*, const char*))callback, (void*)data); } template int iterate_over_plt (T *object, void (*callback)(T*, const char*, size_t)) { // See comment block in iterate_over_modules() return iterate_over_plt((void*)object, (void (*)(void*, const char*, size_t))callback); } template void iterate_over_srcfile_lines (char const * srcfile, const std::vector& linenos, enum lineno_t lineno_type, base_func_info_map_t& funcs, void (*callback) (Dwarf_Addr, int, T*), bool has_nearest, T *data) { // See comment block in iterate_over_modules() iterate_over_srcfile_lines(srcfile, linenos, lineno_type, funcs, (void (*)(Dwarf_Addr, int, void*))callback, has_nearest, (void*)data); } template void iterate_over_labels (Dwarf_Die *begin_die, const std::string& sym, const base_func_info& function, const std::vector& linenos, enum lineno_t lineno_type, T *data, void (* callback)(const base_func_info&, const char*, const char*, int, Dwarf_Die*, Dwarf_Addr, T*)) { // See comment block in iterate_over_modules() iterate_over_labels(begin_die, sym, function, linenos, lineno_type, (void*)data, (void (*)(const base_func_info&, const char*, const char*, int, Dwarf_Die*, Dwarf_Addr, void*))callback); } template void iterate_over_callees (Dwarf_Die *begin_die, const std::string& sym, int64_t recursion_depth, T *data, void (* callback)(base_func_info&, base_func_info&, std::stack*, T*), base_func_info& caller, std::stack*callers=NULL) { // See comment block in iterate_over_modules() iterate_over_callees(begin_die, sym, recursion_depth, (void*)data, (void (*)(base_func_info&, base_func_info&, std::stack*, void*))callback, caller, callers); } GElf_Shdr * get_section(std::string section_name, GElf_Shdr *shdr_mem, Elf **elf_ret=NULL); void collect_srcfiles_matching (std::string const & pattern, std::set & filtered_srcfiles); void resolve_prologue_endings (func_info_map_t & funcs); bool function_entrypc (Dwarf_Addr * addr) __attribute__((warn_unused_result)); bool die_entrypc (Dwarf_Die * die, Dwarf_Addr * addr) __attribute__((warn_unused_result)); void function_die (Dwarf_Die *d); void function_file (char const ** c); void function_line (int *linep); bool die_has_pc (Dwarf_Die & die, Dwarf_Addr pc); bool inner_die_containing_pc(Dwarf_Die& scope, Dwarf_Addr addr, Dwarf_Die& result); std::string literal_stmt_for_local (std::vector& scopes, Dwarf_Addr pc, std::string const & local, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem); Dwarf_Die* type_die_for_local (std::vector& scopes, Dwarf_Addr pc, std::string const & local, const target_symbol *e, Dwarf_Die *die_mem); std::string literal_stmt_for_return (Dwarf_Die *scope_die, Dwarf_Addr pc, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem); Dwarf_Die* type_die_for_return (Dwarf_Die *scope_die, Dwarf_Addr pc, const target_symbol *e, Dwarf_Die *die_mem); std::string literal_stmt_for_pointer (Dwarf_Die *type_die, const target_symbol *e, bool lvalue, Dwarf_Die *die_mem); Dwarf_Die* type_die_for_pointer (Dwarf_Die *type_die, const target_symbol *e, Dwarf_Die *die_mem); enum blacklisted_type { blacklisted_none, // not blacklisted blacklisted_section, blacklisted_kprobes, blacklisted_function, blacklisted_function_return, blacklisted_file }; blacklisted_type blacklisted_p(interned_string funcname, interned_string filename, int line, interned_string module, Dwarf_Addr addr, bool has_return); Dwarf_Addr relocate_address(Dwarf_Addr addr, interned_string& reloc_section); void resolve_unqualified_inner_typedie (Dwarf_Die *typedie, Dwarf_Die *innerdie, const target_symbol *e); bool has_gnu_debugdata(); bool has_valid_locs(); private: Dwfl * dwfl; // These are "current" values we focus on. Dwarf * module_dwarf; Dwarf_Die * function; void setup_kernel(const std::string& module_name, systemtap_session &s, bool debuginfo_needed = true); void setup_kernel(const std::vector& modules, bool debuginfo_needed = true); void setup_user(const std::vector& modules, bool debuginfo_needed = true); module_cu_cache_t module_cu_cache; module_tus_read_t module_tus_read; mod_cu_function_cache_t cu_function_cache; mod_function_cache_t mod_function_cache; std::set cu_inl_function_cache_done; // CUs that are already cached cu_inl_function_cache_t cu_inl_function_cache; void cache_inline_instances (Dwarf_Die* die); mod_cu_die_parent_cache_t cu_die_parent_cache; void cache_die_parents(cu_die_parent_cache_t* parents, Dwarf_Die* die); cu_die_parent_cache_t *get_die_parents(); // Cache for cu lines sorted by lineno cu_lines_cache_t cu_lines_cache; // Cache for all entry_pc in each cu cu_entry_pc_cache_t cu_entry_pc_cache; bool check_cu_entry_pc(Dwarf_Die *cu, Dwarf_Addr pc); Dwarf_Die* get_parent_scope(Dwarf_Die* die); /* The global alias cache is used to resolve any DIE found in a * module that is stubbed out with DW_AT_declaration with a defining * DIE found in a different module. The current assumption is that * this only applies to structures and unions, which have a global * namespace (it deliberately only traverses program scope), so this * cache is indexed by name. If other declaration lookups were * added to it, it would have to be indexed by name and tag */ mod_cu_type_cache_t global_alias_cache; static int global_alias_caching_callback(Dwarf_Die *die, bool has_inner_types, const std::string& prefix, cu_type_cache_t *cache); static int global_alias_caching_callback_cus(Dwarf_Die *die, dwflpp *dw); template static int iterate_over_globals (Dwarf_Die *cu_die, int (* callback)(Dwarf_Die*, bool, const std::string&, T*), T *data) { // See comment block in iterate_over_modules() return iterate_over_globals(cu_die, (int (*)(Dwarf_Die*, bool, const std::string&, void*))callback, (void*)data); } template static int iterate_over_types (Dwarf_Die *top_die, bool has_inner_types, const std::string& prefix, int (* callback)(Dwarf_Die*, bool, const std::string&, T*), T *data) { // See comment block in iterate_over_modules() return iterate_over_types(top_die, has_inner_types, prefix, (int (*)(Dwarf_Die*, bool, const std::string&, void*))callback, (void*)data); } static int mod_function_caching_callback (Dwarf_Die* func, cu_function_cache_t *v); static int cu_function_caching_callback (Dwarf_Die* func, cu_function_cache_t *v); lines_t* get_cu_lines_sorted_by_lineno(const char *srcfile); void collect_lines_for_single_lineno(char const * srcfile, int lineno, bool is_relative, base_func_info_map_t& funcs, lines_t& matching_lines); void collect_all_lines(char const * srcfile, base_func_info_map_t& funcs, lines_t& matching_lines); std::pair get_nearest_linenos(char const * srcfile, int lineno, base_func_info_map_t& funcs); int get_nearest_lineno(char const * srcfile, int lineno, base_func_info_map_t& funcs); void suggest_alternative_linenos(char const * srcfile, int lineno, base_func_info_map_t& funcs); static int external_function_cu_callback (Dwarf_Die* cu, external_function_query *efq); static int external_function_func_callback (Dwarf_Die* func, external_function_query *efq); static void loc2c_error (void *, const char *fmt, ...) __attribute__ ((noreturn)); // This function generates code used for addressing computations of // target variables. void emit_address (struct obstack *pool, Dwarf_Addr address); static void loc2c_emit_address (void *arg, struct obstack *pool, Dwarf_Addr address); void get_locals(std::vector& scopes, std::set& locals); void get_locals_die(Dwarf_Die &die, std::set& locals); void get_members(Dwarf_Die *vardie, std::set& members, std::set &dupes); Dwarf_Attribute *find_variable_and_frame_base (std::vector& scopes, Dwarf_Addr pc, std::string const & local, const target_symbol *e, Dwarf_Die *vardie, Dwarf_Attribute *fb_attr_mem); std::string die_location_as_string(Dwarf_Die*); std::string pc_location_as_function_string(Dwarf_Addr); std::string pc_die_line_string(Dwarf_Addr, Dwarf_Die*); /* source file name, line and column info for pc in current cu. */ const char *pc_line (Dwarf_Addr, int *, int *); struct location *translate_location(struct obstack *pool, Dwarf_Attribute *attr, Dwarf_Die *die, Dwarf_Addr pc, Dwarf_Attribute *fb_attr, struct location **tail, const target_symbol *e); bool find_struct_member(const target_symbol::component& c, Dwarf_Die *parentdie, Dwarf_Die *memberdie, std::vector& dies, std::vector& locs); void translate_components(struct obstack *pool, struct location **tail, Dwarf_Addr pc, const target_symbol *e, Dwarf_Die *vardie, Dwarf_Die *typedie, unsigned first=0); void translate_final_fetch_or_store (struct obstack *pool, struct location **tail, Dwarf_Addr module_bias, Dwarf_Die *vardie, Dwarf_Die *typedie, bool lvalue, const target_symbol *e, std::string &, std::string &, Dwarf_Die *enddie); std::string express_as_string (std::string prelude, std::string postlude, struct location *head); regex_t blacklist_func; // function/statement probes regex_t blacklist_func_ret; // only for .return probes regex_t blacklist_file; // file name regex_t blacklist_section; // init/exit sections bool blacklist_enabled; void build_kernel_blacklist(); void build_user_blacklist(); std::string get_blacklist_section(Dwarf_Addr addr); // Returns the call frame address operations for the given program counter. Dwarf_Op *get_cfa_ops (Dwarf_Addr pc); Dwarf_Addr vardie_from_symtable(Dwarf_Die *vardie, Dwarf_Addr *addr); static int add_module_build_id_to_hash (Dwfl_Module *m, void **userdata __attribute__ ((unused)), const char *name, Dwarf_Addr base, void *arg); static bool is_gcc_producer(Dwarf_Die *cudie, std::string& producer, std::string& version); public: Dwarf_Addr pr15123_retry_addr (Dwarf_Addr pc, Dwarf_Die* var); }; // Template specializations for iterate_over_* functions template<> void dwflpp::iterate_over_modules(int (*callback)(Dwfl_Module*, void**, const char*, Dwarf_Addr, void*), void *data); template<> void dwflpp::iterate_over_cus(int (*callback)(Dwarf_Die*, void*), void *data, bool want_types); template<> void dwflpp::iterate_over_inline_instances(int (*callback)(Dwarf_Die*, void*), void *data); template<> int dwflpp::iterate_over_functions(int (*callback)(Dwarf_Die*, void*), void *data, const std::string& function); template<> int dwflpp::iterate_single_function(int (*callback)(Dwarf_Die*, void*), void *data, const std::string& function); template<> int dwflpp::iterate_over_globals(Dwarf_Die *cu_die, int (*callback)(Dwarf_Die*, bool, const std::string&, void*), void *data); template<> int dwflpp::iterate_over_types(Dwarf_Die *top_die, bool has_inner_types, const std::string& prefix, int (* callback)(Dwarf_Die*, bool, const std::string&, void*), void *data); template<> int dwflpp::iterate_over_notes(void *object, void (*callback)(void*, const std::string&, const std::string&, int, const char*, size_t)); template<> void dwflpp::iterate_over_libraries(void (*callback)(void*, const char*), void *data); template<> int dwflpp::iterate_over_plt(void *object, void (*callback)(void*, const char*, size_t)); template<> void dwflpp::iterate_over_srcfile_lines(char const * srcfile, const std::vector& linenos, enum lineno_t lineno_type, base_func_info_map_t& funcs, void (* callback) (Dwarf_Addr, int, void*), bool has_nearest, void *data); template<> void dwflpp::iterate_over_labels(Dwarf_Die *begin_die, const std::string& sym, const base_func_info& function, const std::vector& linenos, enum lineno_t lineno_type, void *data, void (* callback)(const base_func_info&, const char*, const char*, int, Dwarf_Die*, Dwarf_Addr, void*)); template<> void dwflpp::iterate_over_callees(Dwarf_Die *begin_die, const std::string& sym, int64_t recursion_depth, void *data, void (* callback)(base_func_info&, base_func_info&, std::stack*, void*), base_func_info& caller, std::stack *callers); #endif // DWFLPP_H /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/elaborate.cxx000066400000000000000000006347331305163227500161140ustar00rootroot00000000000000// elaboration functions // Copyright (C) 2005-2017 Red Hat Inc. // Copyright (C) 2008 Intel Corporation // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #include "config.h" #include "elaborate.h" #include "translate.h" #include "parse.h" #include "tapsets.h" #include "session.h" #include "util.h" #include "task_finder.h" #include "stapregex.h" #include "stringtable.h" extern "C" { #include #include #define __STDC_FORMAT_MACROS #include } #include #include #include #include #include #include #include #include #include using namespace std; // ------------------------------------------------------------------------ // Used in probe_point condition construction. Either argument may be // NULL; if both, return NULL too. Resulting expression is a deep // copy for symbol resolution purposes. expression* add_condition (expression* a, expression* b) { if (!a && !b) return 0; if (! a) return deep_copy_visitor::deep_copy(b); if (! b) return deep_copy_visitor::deep_copy(a); logical_and_expr la; la.op = "&&"; la.left = a; la.right = b; la.tok = a->tok; // or could be b->tok return deep_copy_visitor::deep_copy(& la); } // ------------------------------------------------------------------------ derived_probe::derived_probe (probe *p, probe_point *l, bool rewrite_loc): base (p), base_pp(l), group(NULL), sdt_semaphore_addr(0), session_index((unsigned)-1) { assert (p); this->tok = p->tok; this->privileged = p->privileged; this->synthetic = p->synthetic; this->body = deep_copy_visitor::deep_copy(p->body); assert (l); // make a copy for subclasses which want to rewrite the location if (rewrite_loc) l = new probe_point(*l); this->locations.push_back (l); } void derived_probe::printsig (ostream& o) const { probe::printsig (o); printsig_nested (o); } void derived_probe::printsig_nested (ostream& o) const { // We'd like to enclose the probe derivation chain in a /* */ // comment delimiter. But just printing /* base->printsig() */ is // not enough, since base might itself be a derived_probe. So we, // er, "cleverly" encode our nesting state as a formatting flag for // the ostream. ios::fmtflags f = o.flags (ios::internal); if (f & ios::internal) { // already nested o << " <- "; base->printsig (o); } else { // outermost nesting o << " /* <- "; base->printsig (o); o << " */"; } // restore flags (void) o.flags (f); } void derived_probe::collect_derivation_chain (std::vector &probes_list) const { probes_list.push_back(const_cast(this)); base->collect_derivation_chain(probes_list); } void derived_probe::collect_derivation_pp_chain (std::vector &pp_list) const { pp_list.push_back(const_cast(this->sole_location())); base->collect_derivation_pp_chain(pp_list); } string derived_probe::derived_locations (bool firstFrom) { ostringstream o; vector reference_point; collect_derivation_pp_chain(reference_point); if (reference_point.size() > 0) for(unsigned i=1; i1) o << " from: "; o << reference_point[i]->str(false); // no ?,!,etc } return o.str(); } probe_point* derived_probe::sole_location () const { if (locations.size() == 0 || locations.size() > 1) throw SEMANTIC_ERROR (_N("derived_probe with no locations", "derived_probe with too many locations", locations.size()), this->tok); else return locations[0]; } probe_point* derived_probe::script_location () const { // This feeds function::pn() in the tapset, which is documented as the // script-level probe point expression, *after wildcard expansion*. vector chain; collect_derivation_pp_chain (chain); // Go backwards until we hit the first well-formed probe point for (int i=chain.size()-1; i>=0; i--) if (chain[i]->well_formed) return chain[i]; // If that didn't work, just fallback to -something-. return sole_location(); } void derived_probe::emit_privilege_assertion (translator_output* o) { // Emit code which will cause compilation to fail if it is compiled in // unprivileged mode. o->newline() << "#if ! STP_PRIVILEGE_CONTAINS (STP_PRIVILEGE, STP_PR_STAPDEV) && \\"; o->newline() << " ! STP_PRIVILEGE_CONTAINS (STP_PRIVILEGE, STP_PR_STAPSYS)"; o->newline() << "#error Internal Error: Probe "; probe::printsig (o->line()); o->line() << " generated in --unprivileged mode"; o->newline() << "#endif"; } void derived_probe::emit_process_owner_assertion (translator_output* o) { // Emit code which will abort should the current target not belong to the // user in unprivileged mode. o->newline() << "#if ! STP_PRIVILEGE_CONTAINS (STP_PRIVILEGE, STP_PR_STAPDEV) && \\"; o->newline() << " ! STP_PRIVILEGE_CONTAINS (STP_PRIVILEGE, STP_PR_STAPSYS)"; o->newline(1) << "if (! is_myproc ()) {"; o->newline(1) << "snprintf(c->error_buffer, sizeof(c->error_buffer),"; o->newline() << " \"Internal Error: Process %d does not belong to user %d in probe %s in --unprivileged mode\","; o->newline() << " current->tgid, _stp_uid, c->probe_point);"; o->newline() << "c->last_error = c->error_buffer;"; // NB: since this check occurs before probe locking, its exit should // not be a "goto out", which would attempt unlocking. o->newline() << "return;"; o->newline(-1) << "}"; o->newline(-1) << "#endif"; } void derived_probe::print_dupe_stamp_unprivileged(ostream& o) { o << _("unprivileged users: authorized") << endl; } void derived_probe::print_dupe_stamp_unprivileged_process_owner(ostream& o) { o << _("unprivileged users: authorized for process owner") << endl; } // ------------------------------------------------------------------------ // Members of derived_probe_builder void derived_probe_builder::build_with_suffix(systemtap_session &, probe *, probe_point *, literal_map_t const &, std::vector &, std::vector const &) { // XXX perhaps build the probe if suffix is empty? // if (suffix.empty()) { // build (sess, use, location, parameters, finished_results); // return; // } throw SEMANTIC_ERROR (_("invalid suffix for probe")); } bool derived_probe_builder::get_param (literal_map_t const & params, interned_string key, interned_string& value) { literal_map_t::const_iterator i = params.find (key); if (i == params.end()) return false; literal_string * ls = dynamic_cast(i->second); if (!ls) return false; value = ls->value; return true; } bool derived_probe_builder::get_param (literal_map_t const & params, interned_string key, int64_t& value) { literal_map_t::const_iterator i = params.find (key); if (i == params.end()) return false; if (i->second == NULL) return false; literal_number * ln = dynamic_cast(i->second); if (!ln) return false; value = ln->value; return true; } bool derived_probe_builder::has_null_param (literal_map_t const & params, interned_string key) { literal_map_t::const_iterator i = params.find(key); return (i != params.end() && i->second == NULL); } bool derived_probe_builder::has_param (literal_map_t const & params, interned_string key) { return (params.find(key) != params.end()); } // ------------------------------------------------------------------------ // Members of match_key. match_key::match_key(interned_string n) : name(n), have_parameter(false), parameter_type(pe_unknown) { } match_key::match_key(probe_point::component const & c) : name(c.functor), have_parameter(c.arg != NULL), parameter_type(c.arg ? c.arg->type : pe_unknown) { } match_key & match_key::with_number() { have_parameter = true; parameter_type = pe_long; return *this; } match_key & match_key::with_string() { have_parameter = true; parameter_type = pe_string; return *this; } string match_key::str() const { string n = name; if (have_parameter) switch (parameter_type) { case pe_string: return n + "(string)"; case pe_long: return n + "(number)"; default: return n + "(...)"; } return n; } bool match_key::operator<(match_key const & other) const { return ((name < other.name) || (name == other.name && have_parameter < other.have_parameter) || (name == other.name && have_parameter == other.have_parameter && parameter_type < other.parameter_type)); } // NB: these are only used in the probe point name components, where // only "*" is permitted. // // Within module("bar"), function("foo"), process("baz") strings, real // wildcards are permitted too. See also util.h:contains_glob_chars static bool isglob(interned_string str) { return(str.find('*') != str.npos); } static bool isdoubleglob(interned_string str) { return(str.find("**") != str.npos); } bool match_key::globmatch(match_key const & other) const { const string & name_str = name; const string & other_str = other.name; return ((fnmatch(name_str.c_str(), other_str.c_str(), FNM_NOESCAPE) == 0) && have_parameter == other.have_parameter && parameter_type == other.parameter_type); } // ------------------------------------------------------------------------ // Members of match_node // ------------------------------------------------------------------------ match_node::match_node() : privilege(privilege_t (pr_stapdev | pr_stapsys)) { } match_node * match_node::bind(match_key const & k) { if (k.name == "*") throw SEMANTIC_ERROR(_("invalid use of wildcard probe point component")); map::const_iterator i = sub.find(k); if (i != sub.end()) return i->second; match_node * n = new match_node(); sub.insert(make_pair(k, n)); return n; } void match_node::bind(derived_probe_builder * e) { ends.push_back (e); } match_node * match_node::bind(interned_string k) { return bind(match_key(k)); } match_node * match_node::bind_str(string const & k) { return bind(match_key(k).with_string()); } match_node * match_node::bind_num(string const & k) { return bind(match_key(k).with_number()); } match_node * match_node::bind_privilege(privilege_t p) { privilege = p; return this; } void match_node::find_and_build (systemtap_session& s, probe* p, probe_point *loc, unsigned pos, vector& results, set& builders) { assert (pos <= loc->components.size()); if (pos == loc->components.size()) // matched all probe point components so far { if (ends.empty()) { string alternatives; for (sub_map_iterator_t i = sub.begin(); i != sub.end(); i++) alternatives += string(" ") + i->first.str(); throw SEMANTIC_ERROR (_F("probe point truncated (follow: %s)", alternatives.c_str()), loc->components.back()->tok); } if (! pr_contains (privilege, s.privilege)) { throw SEMANTIC_ERROR (_F("probe point is not allowed for --privilege=%s", pr_name (s.privilege)), loc->components.back()->tok); } literal_map_t param_map; for (unsigned i=0; icomponents[i]->functor] = loc->components[i]->arg; // maybe 0 unsigned int num_results = results.size(); // Iterate over all bound builders for (unsigned k=0; kbuild (s, p, loc, param_map, results); } // Collect names of builders attempted for error reporting if (results.size() == num_results) { for (unsigned k=0; kname()); } } else if (isdoubleglob(loc->components[pos]->functor)) // ** wildcard? { unsigned int num_results = results.size(); // When faced with "foo**bar", we try "foo*bar" and "foo*.**bar" const probe_point::component *comp = loc->components[pos]; string functor = comp->functor; size_t glob_start = functor.find("**"); size_t glob_end = functor.find_first_not_of('*', glob_start); string prefix = functor.substr(0, glob_start); string suffix = ((glob_end != string::npos) ? functor.substr(glob_end) : ""); // Synthesize "foo*bar" probe_point *simple_pp = new probe_point(*loc); probe_point::component *simple_comp = new probe_point::component(*comp); simple_comp->functor = prefix + "*" + suffix; simple_comp->from_glob = true; simple_pp->components[pos] = simple_comp; try { find_and_build (s, p, simple_pp, pos, results, builders); } catch (const semantic_error& e) { // Ignore semantic_errors. } // Cleanup if we didn't find anything if (results.size() == num_results) { delete simple_pp; delete simple_comp; } num_results = results.size(); // Synthesize "foo*.**bar" // NB: any component arg should attach to the latter part only probe_point *expanded_pp = new probe_point(*loc); probe_point::component *expanded_comp_pre = new probe_point::component(*comp); expanded_comp_pre->functor = prefix + "*"; expanded_comp_pre->from_glob = true; expanded_comp_pre->arg = NULL; probe_point::component *expanded_comp_post = new probe_point::component(*comp); expanded_comp_post->functor = string("**") + suffix; expanded_pp->components[pos] = expanded_comp_pre; expanded_pp->components.insert(expanded_pp->components.begin() + pos + 1, expanded_comp_post); try { find_and_build (s, p, expanded_pp, pos, results, builders); } catch (const semantic_error& e) { // Ignore semantic_errors. } // Cleanup if we didn't find anything if (results.size() == num_results) { delete expanded_pp; delete expanded_comp_pre; delete expanded_comp_post; } // Try suffix expansion only if no matches found: if (num_results == results.size()) this->try_suffix_expansion (s, p, loc, pos, results); if (! loc->optional && num_results == results.size()) { // We didn't find any wildcard matches (since the size of // the result vector didn't change). Throw an error. string sugs = suggest_functors(s, functor); throw SEMANTIC_ERROR (_F("probe point mismatch: didn't find any wildcard matches%s", sugs.empty() ? "" : (" (similar: " + sugs + ")").c_str()), comp->tok); } } else if (isglob(loc->components[pos]->functor)) // wildcard? { match_key match (* loc->components[pos]); // Call find_and_build for each possible match. Ignore errors - // unless we don't find any match. unsigned int num_results = results.size(); for (sub_map_iterator_t i = sub.begin(); i != sub.end(); i++) { const match_key& subkey = i->first; match_node* subnode = i->second; assert_no_interrupts(); if (match.globmatch(subkey)) { if (s.verbose > 2) clog << _F("wildcard '%s' matched '%s'", loc->components[pos]->functor.to_string().c_str(), subkey.name.to_string().c_str()) << endl; // When we have a wildcard, we need to create a copy of // the probe point. Then we'll create a copy of the // wildcard component, and substitute the non-wildcard // functor. probe_point *non_wildcard_pp = new probe_point(*loc); probe_point::component *non_wildcard_component = new probe_point::component(*loc->components[pos]); non_wildcard_component->functor = subkey.name; non_wildcard_component->from_glob = true; non_wildcard_pp->components[pos] = non_wildcard_component; // NB: probe conditions are not attached at the wildcard // (component/functor) level, but at the overall // probe_point level. unsigned int inner_results = results.size(); // recurse (with the non-wildcard probe point) try { subnode->find_and_build (s, p, non_wildcard_pp, pos+1, results, builders); } catch (const semantic_error& e) { // Ignore semantic_errors while expanding wildcards. // If we get done and nothing was expanded, the code // following the loop will complain. } if (results.size() == inner_results) { // If this wildcard didn't match, cleanup. delete non_wildcard_pp; delete non_wildcard_component; } } } // Try suffix expansion only if no matches found: if (num_results == results.size()) this->try_suffix_expansion (s, p, loc, pos, results); if (! loc->optional && num_results == results.size()) { // We didn't find any wildcard matches (since the size of // the result vector didn't change). Throw an error. string sugs = suggest_functors(s, loc->components[pos]->functor); throw SEMANTIC_ERROR (_F("probe point mismatch: didn't find any wildcard matches%s", sugs.empty() ? "" : (" (similar: " + sugs + ")").c_str()), loc->components[pos]->tok); } } else { match_key match (* loc->components[pos]); sub_map_iterator_t i = sub.find (match); if (i != sub.end()) // match found { match_node* subnode = i->second; // recurse subnode->find_and_build (s, p, loc, pos+1, results, builders); return; } unsigned int num_results = results.size(); this->try_suffix_expansion (s, p, loc, pos, results); // XXX: how to correctly report alternatives + position numbers // for alias suffixes? file a separate PR to address the issue if (! loc->optional && num_results == results.size()) { // We didn't find any alias suffixes (since the size of the // result vector didn't change). Throw an error. string sugs = suggest_functors(s, loc->components[pos]->functor); throw SEMANTIC_ERROR (_F("probe point mismatch%s", sugs.empty() ? "" : (" (similar: " + sugs + ")").c_str()), loc->components[pos]->tok); } } } string match_node::suggest_functors(systemtap_session& s, string functor) { // only use prefix if globby (and prefix is non-empty) size_t glob = functor.find('*'); if (glob != string::npos && glob != 0) functor.erase(glob); if (functor.empty()) return ""; // PR18577: There isn't any point in generating a suggestion list if // we're not going to display it. if ((s.dump_mode == systemtap_session::dump_matched_probes || s.dump_mode == systemtap_session::dump_matched_probes_vars) && s.verbose < 2) return ""; set functors; for (sub_map_iterator_t i = sub.begin(); i != sub.end(); i++) { string ftor = i->first.str(); if (ftor.find('(') != string::npos) // trim any parameter ftor.erase(ftor.find('(')); functors.insert(ftor); } return levenshtein_suggest(functor, functors, 5); // print top 5 } void match_node::try_suffix_expansion (systemtap_session& s, probe *p, probe_point *loc, unsigned pos, vector& results) { // PR12210: match alias suffixes. If the components thus far // have been matched, but there is an additional unknown // suffix, we have a potential alias suffix on our hands. We // need to expand the preceding components as probe aliases, // reattach the suffix, and re-run derive_probes() on the // resulting expansion. This is done by the routine // build_with_suffix(). if (strverscmp(s.compatible.c_str(), "2.0") >= 0) { // XXX: technically, param_map isn't used here. So don't // bother actually assembling it unless some // derived_probe_builder appears that actually takes // suffixes *and* consults parameters (currently no such // builders exist). literal_map_t param_map; // for (unsigned i=0; icomponents[i]->functor] = loc->components[i]->arg; // maybe 0 vector suffix (loc->components.begin()+pos, loc->components.end()); // Multiple derived_probe_builders may be bound at a // match_node due to the possibility of multiply defined // aliases. for (unsigned k=0; k < ends.size(); k++) { derived_probe_builder *b = ends[k]; try { b->build_with_suffix (s, p, loc, param_map, results, suffix); } catch (const recursive_expansion_error &e) { // Re-throw: throw semantic_error(e); } catch (const semantic_error &e) { // Adjust source coordinate and re-throw: if (! loc->optional) throw semantic_error(e.errsrc, e.what(), loc->components[pos]->tok); } } } } void match_node::build_no_more (systemtap_session& s) { for (sub_map_iterator_t i = sub.begin(); i != sub.end(); i++) i->second->build_no_more (s); for (unsigned k=0; kbuild_no_more (s); } } void match_node::dump (systemtap_session &s, const string &name) { // Dump this node, if it is complete. for (unsigned k=0; kis_alias ()) continue; // In unprivileged mode, don't show the probes which are not allowed for unprivileged // users. if (pr_contains (privilege, s.privilege)) { cout << name << endl; break; // we need only print one instance. } } // Recursively dump the children of this node string dot; if (! name.empty ()) dot = "."; for (sub_map_iterator_t i = sub.begin(); i != sub.end(); i++) { i->second->dump (s, name + dot + i->first.str()); } } // ------------------------------------------------------------------------ // Alias probes // ------------------------------------------------------------------------ struct alias_derived_probe: public derived_probe { alias_derived_probe (probe* base, probe_point *l, const probe_alias *a, const vector *suffix = 0); ~alias_derived_probe(); void upchuck () { throw SEMANTIC_ERROR (_("inappropriate"), this->tok); } // Alias probes are immediately expanded to other derived_probe // types, and are not themselves emitted or listed in // systemtap_session.probes void join_group (systemtap_session&) { upchuck (); } virtual const probe_alias *get_alias () const { return alias; } virtual probe_point *get_alias_loc () const { return alias_loc; } virtual probe_point *sole_location () const; private: const probe_alias *alias; // Used to check for recursion probe_point *alias_loc; // Hack to recover full probe name }; alias_derived_probe::alias_derived_probe(probe *base, probe_point *l, const probe_alias *a, const vector *suffix): derived_probe (base, l), alias(a) { // XXX pretty nasty -- this was cribbed from printscript() in main.cxx assert (alias->alias_names.size() >= 1); alias_loc = new probe_point(*alias->alias_names[0]); // XXX: [0] is arbitrary; it would make just as much sense to collect all of the names alias_loc->well_formed = true; vector::const_iterator it; for (it = suffix->begin(); it != suffix->end(); ++it) { alias_loc->components.push_back(*it); if (isglob((*it)->functor)) alias_loc->well_formed = false; // needs further derivation } } alias_derived_probe::~alias_derived_probe () { delete alias_loc; } probe_point* alias_derived_probe::sole_location () const { return const_cast(alias_loc); } void alias_expansion_builder::build(systemtap_session & sess, probe * use, probe_point * location, literal_map_t const & parameters, vector & finished_results) { vector empty_suffix; build_with_suffix (sess, use, location, parameters, finished_results, empty_suffix); } void alias_expansion_builder::build_with_suffix(systemtap_session & sess, probe * use, probe_point * location, literal_map_t const &, vector & finished_results, vector const & suffix) { // Don't build the alias expansion if infinite recursion is detected. if (checkForRecursiveExpansion (use)) { stringstream msg; msg << _F("recursive loop in alias expansion of %s at %s", lex_cast(*location).c_str(), lex_cast(location->components.front()->tok->location).c_str()); // semantic_errors thrown here might be ignored, so we need a special class: throw recursive_expansion_error (msg.str()); // XXX The point of throwing this custom error is to suppress a // cascade of "probe mismatch" messages that appear in addition to // the error. The current approach suppresses most of the error // cascade, but leaves one spurious error; in any case, the way // this particular error is reported could be improved. } // We're going to build a new probe and wrap it up in an // alias_expansion_probe so that the expansion loop recognizes it as // such and re-expands its expansion. alias_derived_probe * n = new alias_derived_probe (use, location /* soon overwritten */, this->alias, &suffix); n->body = new block(); // The new probe gets a deep copy of the location list of the alias // (with incoming condition joined) plus the suffix (if any), n->locations.clear(); for (unsigned i=0; ilocations.size(); i++) { probe_point *pp = new probe_point(*alias->locations[i]); pp->components.insert(pp->components.end(), suffix.begin(), suffix.end()); pp->condition = add_condition (pp->condition, location->condition); n->locations.push_back(pp); } // the token location of the alias, n->tok = location->components.front()->tok; // and statements representing the concatenation of the alias' // body with the use's. // // NB: locals are *not* copied forward, from either alias or // use. The expansion should have its locals re-inferred since // there's concatenated code here and we only want one vardecl per // resulting variable. if (alias->epilogue_style) n->body = new block (use->body, alias->body); else n->body = new block (alias->body, use->body); unsigned old_num_results = finished_results.size(); // If expanding for an alias suffix, be sure to pass on any errors // to the caller instead of printing them in derive_probes(): derive_probes (sess, n, finished_results, location->optional, !suffix.empty()); // Check whether we resolved something. If so, put the // whole library into the queue if not already there. if (finished_results.size() > old_num_results) { stapfile *f = alias->tok->location.file; if (find (sess.files.begin(), sess.files.end(), f) == sess.files.end()) sess.files.push_back (f); } } bool alias_expansion_builder::checkForRecursiveExpansion (probe *use) { // Collect the derivation chain of this probe. vectorderivations; use->collect_derivation_chain (derivations); // Check all probe points in the alias expansion against the currently-being-expanded probe point // of each of the probes in the derivation chain, looking for a match. This // indicates infinite recursion. // The first element of the derivation chain will be the derived_probe representing 'use', so // start the search with the second element. assert (derivations.size() > 0); assert (derivations[0] == use); for (unsigned d = 1; d < derivations.size(); ++d) { if (use->get_alias() == derivations[d]->get_alias()) return true; // recursion detected } return false; } // ------------------------------------------------------------------------ // Pattern matching // ------------------------------------------------------------------------ static unsigned max_recursion = 100; struct recursion_guard { unsigned & i; recursion_guard(unsigned & i) : i(i) { if (i > max_recursion) throw SEMANTIC_ERROR(_("recursion limit reached")); ++i; } ~recursion_guard() { --i; } }; // The match-and-expand loop. void derive_probes (systemtap_session& s, probe *p, vector& dps, bool optional, bool rethrow_errors) { // We need a static to track whether the current probe is optional so that // even if we recurse into derive_probes with optional = false, errors will // still be ignored. The undo_parent_optional bool ensures we reset the // static at the same level we had it set. static bool parent_optional = false; bool undo_parent_optional = false; if (optional && !parent_optional) { parent_optional = true; undo_parent_optional = true; } vector optional_errs; for (unsigned i = 0; i < p->locations.size(); ++i) { set builders; assert_no_interrupts(); probe_point *loc = p->locations[i]; if (s.verbose > 4) clog << "derive-probes " << *loc << endl; try { unsigned num_atbegin = dps.size(); try { s.pattern_root->find_and_build (s, p, loc, 0, dps, builders); // <-- actual derivation! } catch (const semantic_error& e) { if (!loc->optional && !parent_optional) throw semantic_error(e); else /* tolerate failure for optional probe */ { // remember err, we will print it (in catch block) if any // non-optional loc fails to resolve semantic_error err(ERR_SRC, _("while resolving probe point"), loc->components[0]->tok, NULL, &e); optional_errs.push_back(err); continue; } } unsigned num_atend = dps.size(); if (! (loc->optional||parent_optional) && // something required, but num_atbegin == num_atend) // nothing new derived! throw SEMANTIC_ERROR (_("no match")); if (loc->sufficient && (num_atend > num_atbegin)) { if (s.verbose > 1) { clog << "Probe point "; p->locations[i]->print(clog); clog << " sufficient, skipped"; for (unsigned j = i+1; j < p->locations.size(); ++j) { clog << " "; p->locations[j]->print(clog); } clog << endl; } break; // we need not try to derive for any other locations } } catch (const semantic_error& e) { // The rethrow_errors parameter lets the caller decide an // alternative to printing the error. This is necessary when // calling derive_probes() recursively during expansion of // an alias with suffix -- any message printed here would // point to the alias declaration and not the invalid suffix // usage, so the caller needs to catch the error themselves // and print a more appropriate message. if (rethrow_errors) { throw semantic_error(e); } // Only output in dump mode if -vv is supplied: else if (!s.dump_mode || (s.verbose > 1)) { // print this one manually first because it's more important than // the optional errs semantic_error err(ERR_SRC, _("while resolving probe point"), loc->components[0]->tok, NULL, &e); // provide some details about which builders were tried if (s.verbose > 0 && !builders.empty()) { string msg; for (auto it = builders.begin(); it != builders.end(); ++it) { if (it != builders.begin()) msg.append(", "); msg.append(*it); } semantic_error err2(ERR_SRC, _F("resolution failed in %s", msg.c_str())); err2.set_chain(err); s.print_error(err2); } else { s.print_error(err); } // print optional errs accumulated while visiting other probe points for (vector::const_iterator it = optional_errs.begin(); it != optional_errs.end(); ++it) { s.print_error(*it); } } } } if (undo_parent_optional) parent_optional = false; } // ------------------------------------------------------------------------ // // Indexable usage checks // struct symbol_fetcher : public throwing_visitor { symbol *&sym; symbol_fetcher (symbol *&sym): sym(sym) {} void visit_symbol (symbol* e) { sym = e; } void visit_arrayindex (arrayindex* e) { e->base->visit (this); } void throwone (const token* t) { throw SEMANTIC_ERROR (_("Expecting symbol or array index expression"), t); } }; symbol * get_symbol_within_expression (expression *e) { symbol *sym = NULL; symbol_fetcher fetcher(sym); e->visit (&fetcher); return sym; // NB: may be null! } static symbol * get_symbol_within_indexable (indexable *ix) { symbol *array = NULL; hist_op *hist = NULL; classify_indexable(ix, array, hist); if (array) return array; else return get_symbol_within_expression (hist->stat); } struct mutated_var_collector : public traversing_visitor { set * mutated_vars; mutated_var_collector (set * mm) : mutated_vars (mm) {} void visit_assignment(assignment* e) { if (e->type == pe_stats && e->op == "<<<") { vardecl *vd = get_symbol_within_expression (e->left)->referent; if (vd) mutated_vars->insert (vd); } traversing_visitor::visit_assignment(e); } void visit_arrayindex (arrayindex *e) { if (is_active_lvalue (e)) { symbol *sym; if (e->base->is_symbol (sym)) mutated_vars->insert (sym->referent); else throw SEMANTIC_ERROR(_("Assignment to read-only histogram bucket"), e->tok); } traversing_visitor::visit_arrayindex (e); } }; struct no_var_mutation_during_iteration_check : public traversing_visitor { systemtap_session & session; map *> & function_mutates_vars; vector vars_being_iterated; no_var_mutation_during_iteration_check (systemtap_session & sess, map *> & fmv) : session(sess), function_mutates_vars (fmv) {} void visit_arrayindex (arrayindex *e) { if (is_active_lvalue(e)) { vardecl *vd = get_symbol_within_indexable (e->base)->referent; if (vd) { for (unsigned i = 0; i < vars_being_iterated.size(); ++i) { vardecl *v = vars_being_iterated[i]; if (v == vd) { string err = _F("variable '%s' modified during 'foreach' iteration", v->unmangled_name.to_string().c_str()); session.print_error (SEMANTIC_ERROR (err, e->tok)); } } } } traversing_visitor::visit_arrayindex (e); } void visit_functioncall (functioncall* e) { for (unsigned fd = 0; fd < e->referents.size(); fd++) { map *>::const_iterator i = function_mutates_vars.find (e->referents[fd]); if (i != function_mutates_vars.end()) { for (unsigned j = 0; j < vars_being_iterated.size(); ++j) { vardecl *m = vars_being_iterated[j]; if (i->second->find (m) != i->second->end()) { string err = _F("function call modifies var '%s' during 'foreach' iteration", m->unmangled_name.to_string().c_str()); session.print_error (SEMANTIC_ERROR (err, e->tok)); } } } } traversing_visitor::visit_functioncall (e); } void visit_foreach_loop(foreach_loop* s) { vardecl *vd = get_symbol_within_indexable (s->base)->referent; if (vd) vars_being_iterated.push_back (vd); traversing_visitor::visit_foreach_loop (s); if (vd) vars_being_iterated.pop_back(); } }; // ------------------------------------------------------------------------ struct stat_decl_collector : public traversing_visitor { systemtap_session & session; stat_decl_collector(systemtap_session & sess) : session(sess) {} void visit_stat_op (stat_op* e) { symbol *sym = get_symbol_within_expression (e->stat); statistic_decl new_stat = statistic_decl(); int bit_shift = (e->params.size() == 0) ? 0 : e->params[0]; int stat_op = STAT_OP_NONE; if ((bit_shift < 0) || (bit_shift > 62)) throw SEMANTIC_ERROR (_F("bit shift (%d) out of range <0..62>", bit_shift), e->tok); // The following helps to track which statistical operators are being // used with given global/local variable. This information later helps // to optimize the runtime behaviour. if (e->ctype == sc_count) stat_op = STAT_OP_COUNT; else if (e->ctype == sc_sum) stat_op = STAT_OP_SUM; else if (e->ctype == sc_min) stat_op = STAT_OP_MIN; else if (e->ctype == sc_max) stat_op = STAT_OP_MAX; else if (e->ctype == sc_average) stat_op = STAT_OP_AVG; else if (e->ctype == sc_variance) stat_op = STAT_OP_VARIANCE; new_stat.bit_shift = bit_shift; new_stat.stat_ops |= stat_op; map::iterator i = session.stat_decls.find(sym->name); if (i == session.stat_decls.end()) session.stat_decls[sym->name] = new_stat; else i->second.stat_ops |= stat_op; // The @variance operator for given stat S (i.e. call to _stp_stat_init()) // is optionally parametrizeable (@variance(S[, N]), where N is a bit shift // (the default is N=0). The bit_shift helps to improve precision if integer // arithemtic, namely divisions (). // // Ref: https://en.wikipedia.org/wiki/Scale_factor_%28computer_science%29 // if (e->tok->content != "@variance") return; else if ((i->second.bit_shift != 0) && (i->second.bit_shift != bit_shift)) { // FIXME: Support multiple co-declared bit shifts // (analogy to multiple co-declared histogram types) throw SEMANTIC_ERROR (_F("conflicting bit shifts declared (previously %d)", i->second.bit_shift), e->tok); } else { i->second.bit_shift = bit_shift; } } void visit_assignment (assignment* e) { if (e->op == "<<<") { symbol *sym = get_symbol_within_expression (e->left); if (session.stat_decls.find(sym->name) == session.stat_decls.end()) session.stat_decls[sym->name] = statistic_decl(); } else traversing_visitor::visit_assignment(e); } void visit_hist_op (hist_op* e) { symbol *sym = get_symbol_within_expression (e->stat); statistic_decl new_stat; if (e->htype == hist_linear) { new_stat.type = statistic_decl::linear; assert (e->params.size() == 3); new_stat.linear_low = e->params[0]; new_stat.linear_high = e->params[1]; new_stat.linear_step = e->params[2]; } else { assert (e->htype == hist_log); new_stat.type = statistic_decl::logarithmic; assert (e->params.size() == 0); } map::iterator i = session.stat_decls.find(sym->name); if (i == session.stat_decls.end()) session.stat_decls[sym->name] = new_stat; else { statistic_decl & old_stat = i->second; if (!(old_stat == new_stat)) { if (old_stat.type == statistic_decl::none) { i->second.type = new_stat.type; i->second.linear_low = new_stat.linear_low; i->second.linear_high = new_stat.linear_high; i->second.linear_step = new_stat.linear_step; } else { // FIXME: Support multiple co-declared histogram types semantic_error se(ERR_SRC, _F("multiple histogram types declared on '%s'", sym->name.to_string().c_str()), e->tok); session.print_error (se); } } } } }; static int semantic_pass_stats (systemtap_session & sess) { stat_decl_collector sdc(sess); for (map::iterator it = sess.functions.begin(); it != sess.functions.end(); it++) it->second->body->visit (&sdc); for (unsigned i = 0; i < sess.probes.size(); ++i) sess.probes[i]->body->visit (&sdc); for (unsigned i = 0; i < sess.globals.size(); ++i) { vardecl *v = sess.globals[i]; if (v->type == pe_stats) { if (sess.stat_decls.find(v->name) == sess.stat_decls.end()) { semantic_error se(ERR_SRC, _F("unable to infer statistic parameters for global '%s'", v->unmangled_name.to_string().c_str())); sess.print_error (se); } } } return sess.num_errors(); } // ------------------------------------------------------------------------ // Enforce variable-related invariants: no modification of // a foreach()-iterated array. static int semantic_pass_vars (systemtap_session & sess) { map *> fmv; no_var_mutation_during_iteration_check chk(sess, fmv); for (map::iterator it = sess.functions.begin(); it != sess.functions.end(); it++) { functiondecl * fn = it->second; if (fn->body) { set * m = new set(); mutated_var_collector mc (m); fn->body->visit (&mc); fmv[fn] = m; } } for (map::iterator it = sess.functions.begin(); it != sess.functions.end(); it++) { functiondecl * fn = it->second; if (fn->body) fn->body->visit (&chk); } for (unsigned i = 0; i < sess.probes.size(); ++i) { if (sess.probes[i]->body) sess.probes[i]->body->visit (&chk); } return sess.num_errors(); } // ------------------------------------------------------------------------ // Rewrite probe condition expressions into probe bodies. Tricky and // exciting business, this. This: // // probe foo if (g1 || g2) { ... } // probe bar { ... g1 ++ ... } // // becomes: // // probe foo { if (! (g1 || g2)) next; ... } // probe bar { ... g1 ++ ...; // if (g1 || g2) %{ enable_probe_foo %} else %{ disable_probe_foo %} // } // // In other words, we perform two transformations: // (1) Inline probe condition into its body. // (2) For each probe that modifies a global var in use in any probe's // condition, re-evaluate those probes' condition at the end of that // probe's body. // // Here, we do all of (1), and half of (2): we simply collect the dependency // info between probes, which the translator will use to emit the affected // probes' condition re-evaluation. The translator will also ensure that the // conditions are evaluated using the globals' starting values prior to any // probes starting. // Adds the condition expression to the front of the probe's body static void derived_probe_condition_inline (derived_probe *p) { expression* e = p->sole_location()->condition; assert(e); if_statement *ifs = new if_statement (); ifs->tok = e->tok; ifs->thenblock = new next_statement (); ifs->thenblock->tok = e->tok; ifs->elseblock = NULL; unary_expression *notex = new unary_expression (); notex->op = "!"; notex->tok = e->tok; notex->operand = e; ifs->condition = notex; p->body = new block (ifs, p->body); } static int semantic_pass_conditions (systemtap_session & sess) { map > vars_read_in_cond; map > vars_written_in_body; // do a first pass through the probes to ensure safety, inline any condition, // and collect var usage for (unsigned i = 0; i < sess.probes.size(); ++i) { if (pending_interrupts) return 1; derived_probe* p = sess.probes[i]; expression* e = p->sole_location()->condition; if (e) { varuse_collecting_visitor vcv_cond(sess); e->visit (& vcv_cond); if (!vcv_cond.written.empty()) sess.print_error (SEMANTIC_ERROR (_("probe condition must not " "modify any variables"), e->tok)); else if (vcv_cond.embedded_seen) sess.print_error (SEMANTIC_ERROR (_("probe condition must not " "include impure embedded-C"), e->tok)); derived_probe_condition_inline(p); vars_read_in_cond[p].insert(vcv_cond.read.begin(), vcv_cond.read.end()); } varuse_collecting_visitor vcv_body(sess); p->body->visit (& vcv_body); vars_written_in_body[p].insert(vcv_body.written.begin(), vcv_body.written.end()); } // do a second pass to collect affected probes for (unsigned i = 0; i < sess.probes.size(); ++i) { if (pending_interrupts) return 1; derived_probe *p = sess.probes[i]; // for each variable this probe modifies... set::const_iterator var; for (var = vars_written_in_body[p].begin(); var != vars_written_in_body[p].end(); ++var) { // collect probes which could be affected for (unsigned j = 0; j < sess.probes.size(); ++j) { if (vars_read_in_cond[sess.probes[j]].count(*var)) { if (!p->probes_with_affected_conditions.count(sess.probes[j])) { p->probes_with_affected_conditions.insert(sess.probes[j]); if (sess.verbose > 2) clog << "probe " << i << " can affect condition of " "probe " << j << endl; } } } } } // PR18115: We create a begin probe which is artificially registered as // affecting every other probe. This will serve as the initializer so that // other probe types with false conditions can be skipped (or registered as // disabled) during module initialization. set targets; for (unsigned i = 0; i < sess.probes.size(); ++i) if (!vars_read_in_cond[sess.probes[i]].empty()) targets.insert(sess.probes[i]); if (!targets.empty()) { stringstream ss("probe begin {}"); // no good token to choose here... let's just use the condition expression // of one of the probes as the token const token *tok = (*targets.begin())->sole_location()->condition->tok; probe *p = parse_synthetic_probe(sess, ss, tok); if (!p) throw SEMANTIC_ERROR (_("can't create cond initializer probe"), tok); vector dps; derive_probes(sess, p, dps); // there should only be one assert(dps.size() == 1); derived_probe* dp = dps[0]; dp->probes_with_affected_conditions.insert(targets.begin(), targets.end()); sess.probes.push_back (dp); dp->join_group (sess); // no need to manually do symresolution since body is empty } return sess.num_errors(); } // ------------------------------------------------------------------------ // Simple visitor that just goes through all embedded code blocks that // are available at the end all the optimizations to register any // relevant pragmas or other indicators found, so that session flags can // be set that can be inspected at translation time to trigger any // necessary initialization of code needed by the embedded code functions. // This is only for pragmas that don't have any other side-effect than // needing some initialization at module init time. Currently handles // /* pragma:vma */ /* pragma:unwind */ /* pragma:symbols */ /* pragma:lines */ // /* pragma:uprobes */ is handled during the typeresolution_info pass. // /* pure */, /* unprivileged */. /* myproc-unprivileged */ and /* guru */ // are handled by the varuse_collecting_visitor. struct embeddedcode_info: public functioncall_traversing_visitor { protected: systemtap_session& session; public: embeddedcode_info (systemtap_session& s): session(s) { } void visit_embeddedcode (embeddedcode* c) { if (! vma_tracker_enabled(session) && c->code.find("/* pragma:vma */") != string::npos) { if (session.verbose > 2) clog << _F("Turning on task_finder vma_tracker, pragma:vma found in %s", current_function->unmangled_name.to_string().c_str()) << endl; // PR15052: stapdyn doesn't have VMA-tracking yet. if (session.runtime_usermode_p()) throw SEMANTIC_ERROR(_("VMA-tracking is only supported by the kernel runtime (PR15052)"), c->tok); enable_vma_tracker(session); } if (! session.need_unwind && c->code.find("/* pragma:unwind */") != string::npos) { if (session.verbose > 2) clog << _F("Turning on unwind support, pragma:unwind found in %s", current_function->unmangled_name.to_string().c_str()) << endl; session.need_unwind = true; } if (! session.need_symbols && c->code.find("/* pragma:symbols */") != string::npos) { if (session.verbose > 2) clog << _F("Turning on symbol data collecting, pragma:symbols found in %s", current_function->unmangled_name.to_string().c_str()) << endl; session.need_symbols = true; } if (! session.need_lines && c->code.find("/* pragma:lines */") != string::npos) { if (session.verbose > 2) clog << _F("Turning on debug line data collecting, pragma:lines found in %s", current_function->unmangled_name.to_string().c_str()) << endl; session.need_lines = true; } } }; void embeddedcode_info_pass (systemtap_session& s) { embeddedcode_info eci (s); for (unsigned i=0; ibody->visit (& eci); } // ------------------------------------------------------------------------ // Simple visitor that collects all the regular expressions in the // file and adds them to the session DFA table. struct regex_collecting_visitor: public functioncall_traversing_visitor { protected: systemtap_session& session; public: regex_collecting_visitor (systemtap_session& s): session(s) { } void visit_regex_query (regex_query *q) { functioncall_traversing_visitor::visit_regex_query (q); string re = q->right->value; regex_to_stapdfa (&session, re, q->right->tok); } }; // Go through the regex match invocations and generate corresponding DFAs. int gen_dfa_table (systemtap_session& s) { regex_collecting_visitor rcv(s); for (unsigned i=0; ibody->visit (& rcv); if (s.probes[i]->sole_location()->condition) s.probes[i]->sole_location()->condition->visit (& rcv); } catch (const semantic_error& e) { s.print_error (e); } } return s.num_errors(); } // ------------------------------------------------------------------------ static int semantic_pass_symbols (systemtap_session&); static int semantic_pass_optimize1 (systemtap_session&); static int semantic_pass_optimize2 (systemtap_session&); static int semantic_pass_types (systemtap_session&); static int semantic_pass_vars (systemtap_session&); static int semantic_pass_stats (systemtap_session&); static int semantic_pass_conditions (systemtap_session&); struct expression_build_no_more_visitor : public expression_visitor { // Clear extra details from every expression, like DWARF type info, so that // builders can safely release them in build_no_more. From here on out, // we're back to basic types only. void visit_expression(expression *e) { e->type_details.reset(); } }; static void build_no_more (systemtap_session& s) { expression_build_no_more_visitor v; for (unsigned i=0; ibody->visit(&v); for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) it->second->body->visit(&v); // Inform all derived_probe builders that we're done with // all resolution, so it's time to release caches. s.pattern_root->build_no_more (s); } // Link up symbols to their declarations. Set the session's // files/probes/functions/globals vectors from the transitively // reached set of stapfiles in s.library_files, starting from // s.user_file. Perform automatic tapset inclusion and probe // alias expansion. static int semantic_pass_symbols (systemtap_session& s) { symresolution_info sym (s); // If we're listing functions, then we need to include all the files. Probe // aliases won't be visited/derived so all we gain are the functions, global // variables, and any real probes (e.g. begin probes). NB: type resolution for // a specific function arg may fail if it could only be determined from a // function call in one of the skipped aliases. if (s.dump_mode == systemtap_session::dump_functions) { s.files.insert(s.files.end(), s.library_files.begin(), s.library_files.end()); } else if (!s.user_files.empty()) { // Normal run: seed s.files with user_files and let it grow through the // find_* functions. NB: s.files can grow during this iteration, so // size() can return gradually increasing numbers. s.files.insert (s.files.end(), s.user_files.begin(), s.user_files.end()); } for (unsigned i = 0; i < s.files.size(); i++) { assert_no_interrupts(); stapfile* dome = s.files[i]; // Pass 1: add globals and functions to systemtap-session master list, // so the find_* functions find them // // NB: tapset global/function definitions may duplicate or conflict // with those already in s.globals/functions. We need to deconflict // here. for (unsigned i=0; iglobals.size(); i++) { vardecl* g = dome->globals[i]; for (unsigned j=0; jname == g2->name) { s.print_error (SEMANTIC_ERROR (_("conflicting global variables"), g->tok, g2->tok)); } } s.globals.push_back (g); } for (unsigned i=0; ifunctions.size(); i++) { functiondecl* f = dome->functions[i]; functiondecl* f2 = s.functions[f->name]; if (f2 && f != f2) { s.print_error (SEMANTIC_ERROR (_("conflicting functions"), f->tok, f2->tok)); } s.functions[f->name] = f; } // NB: embeds don't conflict with each other for (unsigned i=0; iembeds.size(); i++) s.embeds.push_back (dome->embeds[i]); // Pass 2: derive probes and resolve any further symbols in the // derived results. for (unsigned i=0; iprobes.size(); i++) { assert_no_interrupts(); probe* p = dome->probes [i]; vector dps; // much magic happens here: probe alias expansion, wildcard // matching, low-level derived_probe construction. derive_probes (s, p, dps); for (unsigned j=0; jjoin_group (s); try { update_visitor_loop (s, s.code_filters, dp->body); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (& sym); // Process the probe-point condition expression. sym.current_function = 0; sym.current_probe = 0; if (dp->sole_location()->condition) dp->sole_location()->condition->visit (& sym); } catch (const semantic_error& e) { s.print_error (e); } } } // Pass 3: process functions for (unsigned i=0; ifunctions.size(); i++) { assert_no_interrupts(); functiondecl* fd = dome->functions[i]; try { update_visitor_loop (s, s.code_filters, fd->body); sym.current_function = fd; sym.current_probe = 0; fd->body->visit (& sym); } catch (const semantic_error& e) { s.print_error (e); } } } if(s.systemtap_v_check){ for(unsigned i=0;isystemtap_v_conditional) s.print_warning(_("This global uses tapset constructs that are dependent on systemtap version"), s.globals[i]->tok); } for(map::const_iterator i=s.functions.begin();i != s.functions.end();++i){ if(i->second->systemtap_v_conditional) s.print_warning(_("This function uses tapset constructs that are dependent on systemtap version"), i->second->tok); } for(unsigned i=0;i sysvc; s.probes[i]->collect_derivation_chain(sysvc); for(unsigned j=0;jsystemtap_v_conditional) s.print_warning(_("This probe uses tapset constructs that are dependent on systemtap version"), sysvc[j]->tok); if(sysvc[j]->get_alias() && sysvc[j]->get_alias()->systemtap_v_conditional) s.print_warning(_("This alias uses tapset constructs that are dependent on systemtap version"), sysvc[j]->get_alias()->tok); } } } return s.num_errors(); // all those print_error calls } // Keep unread global variables for probe end value display. void add_global_var_display (systemtap_session& s) { // Don't generate synthetic end probes when in listing mode; it would clutter // up the list of probe points with "end ...". In fact, don't bother in any // dump mode at all, since it'll never be used. if (s.dump_mode) return; varuse_collecting_visitor vut(s); for (unsigned i=0; ibody->visit (& vut); if (s.probes[i]->sole_location()->condition) s.probes[i]->sole_location()->condition->visit (& vut); } for (unsigned g=0; g < s.globals.size(); g++) { vardecl* l = s.globals[g]; if ((vut.read.find (l) != vut.read.end() && vut.used.find (l) != vut.used.end()) || vut.written.find (l) == vut.written.end()) continue; // Don't generate synthetic end probes for unread globals // declared only within tapsets. (RHBZ 468139), but rather // only within the end-user script. bool tapset_global = false; for (size_t m=0; m < s.library_files.size(); m++) { for (size_t n=0; n < s.library_files[m]->globals.size(); n++) { if (l->name == s.library_files[m]->globals[n]->name) {tapset_global = true; break;} } } if (tapset_global) continue; stringstream code; code << "probe end {" << endl; string format = l->unmangled_name; string indexes; string foreach_value; if (!l->index_types.empty()) { // Add index values to the printf format, and prepare // a simple list of indexes for passing around elsewhere format += "["; for (size_t i = 0; i < l->index_types.size(); ++i) { if (i > 0) { indexes += ","; format += ","; } indexes += "__idx" + lex_cast(i); if (l->index_types[i] == pe_string) format += "\\\"%#s\\\""; else format += "%#d"; } format += "]"; // Iterate over all indexes in the array, sorted by decreasing value code << "foreach ("; if (l->type != pe_stats) { foreach_value = "__val"; code << foreach_value << " = "; } code << "[" << indexes << "] in " << l->unmangled_name << "-)" << endl; } else if (l->type == pe_stats) { // PR7053: Check scalar globals for empty aggregate code << "if (@count(" << l->unmangled_name << ") == 0)" << endl; code << "printf(\"" << l->unmangled_name << " @count=0x0\\n\")" << endl; code << "else" << endl; } static const string stats[] = { "@count", "@min", "@max", "@sum", "@avg" }; const string stats_format = (strverscmp(s.compatible.c_str(), "1.4") >= 0) ? "%#d" : "%#x"; // Fill in the printf format for values if (l->type == pe_stats) for (size_t i = 0; i < sizeof(stats)/sizeof(stats[0]); ++i) format += " " + stats[i] + "=" + stats_format; else if (l->type == pe_string) format += "=\\\"%#s\\\""; else format += "=%#x"; format += "\\n"; // Output the actual printf code << "printf (\"" << format << "\""; // Feed indexes to the printf, and include them in the value string value = !foreach_value.empty() ? foreach_value : string(l->unmangled_name); if (!l->index_types.empty()) { code << "," << indexes; if (foreach_value.empty()) value += "[" + indexes + "]"; } // Feed the actual values to the printf if (l->type == pe_stats) for (size_t i = 0; i < sizeof(stats)/sizeof(stats[0]); ++i) code << "," << stats[i] << "(" << value << ")"; else code << "," << value; code << ")" << endl; // End of probe code << "}" << endl; probe *p = parse_synthetic_probe (s, code, l->tok); if (!p) throw SEMANTIC_ERROR (_("can't create global var display"), l->tok); vector dps; derive_probes (s, p, dps); for (unsigned i = 0; i < dps.size(); i++) { derived_probe* dp = dps[i]; s.probes.push_back (dp); dp->join_group (s); // Repopulate symbol and type info symresolution_info sym (s); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (& sym); } semantic_pass_types(s); // Mark that variable is read vut.read.insert (l); } } static void gen_monitor_data(systemtap_session& s) { vardecl* v; embeddedcode* ec; v = new vardecl; v->unmangled_name = v->name = "__global___monitor_module_start"; v->set_arity(0, 0); v->type = pe_long; v->synthetic = true; s.globals.push_back(v); ec = new embeddedcode; ec->code = "#define STAP_MONITOR_READ 8192\n" "static char _monitor_buf[STAP_MONITOR_READ];"; s.embeds.push_back(ec); functiondecl* fd = new functiondecl; fd->synthetic = true; fd->unmangled_name = fd->name = "__private___monitor_data_function_probes"; fd->type = pe_string; v = new vardecl; v->type = pe_long; v->unmangled_name = v->name = "index"; fd->formal_args.push_back(v); ec = new embeddedcode; string code; code = "/* unprivileged */ /* pure */" "const struct stap_probe *const p = &stap_probes[STAP_ARG_index];\n" "if (likely (probe_timing(STAP_ARG_index))) {\n" "struct stat_data *stats = _stp_stat_get (probe_timing(STAP_ARG_index), 0);\n" "if (stats->count) {\n" "int64_t avg = _stp_div64 (NULL, stats->sum, stats->count);\n" "snprintf(_monitor_buf, STAP_MONITOR_READ,\n" "\"\\\"index\\\": %zu, \\\"state\\\": \\\"%s\\\", \\\"hits\\\": %lld, " "\\\"min\\\": %lld, \\\"avg\\\": %lld, \\\"max\\\": %lld, \",\n" "p->index, p->cond_enabled ? \"on\" : \"off\", (long long) stats->count,\n" "(long long) stats->min, (long long) avg, (long long) stats->max);\n" "} else {\n" "snprintf(_monitor_buf, STAP_MONITOR_READ,\n" "\"\\\"index\\\": %zu, \\\"state\\\": \\\"%s\\\", \\\"hits\\\": %d, " "\\\"min\\\": %d, \\\"avg\\\": %d, \\\"max\\\": %d, \",\n" "p->index, p->cond_enabled ? \"on\" : \"off\", 0, 0, 0, 0);}}\n" "STAP_RETURN(_monitor_buf);\n"; ec->code = code; fd->body = ec; s.functions[fd->name] = fd; stringstream probe_code; probe_code << "probe begin {" << endl; probe_code << "__monitor_module_start = jiffies()" << endl; probe_code << "}" << endl; probe* p = parse_synthetic_probe(s, probe_code, 0); if (!p) throw SEMANTIC_ERROR (_("can't create begin probe"), 0); vector dps; derive_probes (s, p, dps); derived_probe* dp = dps[0]; s.probes.push_back (dp); dp->join_group (s); // Repopulate symbol info symresolution_info sym (s); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (&sym); } static void monitor_mode_read(systemtap_session& s) { if (!s.monitor) return; gen_monitor_data(s); stringstream code; unsigned long rough_max_json_size = 100 + s.globals.size() * 100 + s.probes.size() * 200; code << "probe procfs(\"monitor_status\").read.maxsize(" << rough_max_json_size << ") {" << endl; code << "try {"; // absorb .= overflows! code << "elapsed = (jiffies()-__monitor_module_start)/HZ()" << endl; code << "hrs = elapsed/3600; mins = elapsed%3600/60; secs = elapsed%3600%60;" << endl; code << "$value .= sprintf(\"{\\n\")" << endl; code << "$value .= sprintf(\"\\\"uptime\\\": \\\"%02d:%02d:%02d\\\",\\n\", hrs, mins, secs)" << endl; code << "$value .= sprintf(\"\\\"uid\\\": \\\"%d\\\",\\n\", uid())" << endl; code << "$value .= sprintf(\"\\\"memory\\\": \\\"%s\\\",\\n\", module_size())" << endl; code << "$value .= sprintf(\"\\\"module_name\\\": \\\"%s\\\",\\n\", module_name())" << endl; code << "$value .= sprintf(\"\\\"globals\\\": {\\n\")" << endl; for (auto it = s.globals.cbegin(); it != s.globals.cend(); ++it) { if ((*it)->synthetic) continue; if (it != s.globals.cbegin()) code << "$value .= sprintf(\",\\n\")" << endl; code << "$value .= sprintf(\"\\\"%s\\\":\", \"" << (*it)->unmangled_name << "\")" << endl; if ((*it)->arity == 0) { if ((*it)->type == pe_stats) code << "$value .= sprintf(\"\\\"%d(count)\\\"\", @count(" << (*it)->name << "))" << endl; else if ((*it)->type == pe_string) code << "$value .= string_quoted(sprintf(\"\\\"%s\\\"\"," << (*it)->name << "))" << endl; else code << "$value .= string_quoted(sprint(" << (*it)->name << "))" << endl; } else if ((*it)->arity > 0) code << "$value .= sprintf(\"\\\"[%d]\\\"\", " << (*it)->maxsize << ")" << endl; } code << "$value .= sprintf(\"\\n},\\n\")" << endl; code << "$value .= sprintf(\"\\\"probe_list\\\": [\\n\")" << endl; for (auto it = s.probes.cbegin(); it != s.probes.cend(); ++it) { if ((*it)->synthetic) continue; if (it != s.probes.cbegin()) code << "$value .= sprintf(\",\\n\")" << endl; istringstream probe_point((*it)->sole_location()->str()); string name; probe_point >> name; /* Escape quotes once for systemtap parser and once more for json parser */ name = lex_cast_qstring(lex_cast_qstring(name)); code << "$value .= sprintf(\"{%s\", __private___monitor_data_function_probes(" << it-s.probes.begin() << "))" << endl; code << "$value .= sprintf(\"\\\"name\\\": %s}\", " << name << ")" << endl; } code << "$value .= sprintf(\"\\n],\\n\")" << endl; code << "$value .= sprintf(\"}\\n\")" << endl; code << "} catch(ex) { warn(\"JSON construction error: \" . ex) }" << endl; code << "}" << endl; probe* p = parse_synthetic_probe(s, code, 0); if (!p) throw SEMANTIC_ERROR (_("can't create procfs probe"), 0); vector dps; derive_probes (s, p, dps); derived_probe* dp = dps[0]; s.probes.push_back (dp); dp->join_group (s); // Repopulate symbol info symresolution_info sym (s); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (&sym); // Resolve types for variables used in the new procfs probe semantic_pass_types(s); } static void monitor_mode_write(systemtap_session& s) { if (!s.monitor) return; for (auto it = s.probes.cbegin(); it != s.probes.cend(); ++it) { vardecl* v = new vardecl; v->unmangled_name = v->name = "__monitor_" + lex_cast(it-s.probes.begin()) + "_enabled"; v->tok = (*it)->tok; v->set_arity(0, (*it)->tok); v->type = pe_long; v->init = new literal_number(1); v->synthetic = true; s.globals.push_back(v); symbol* sym = new symbol; sym->name = v->name; sym->tok = v->tok; sym->type = pe_long; sym->referent = v; if ((*it)->sole_location()->condition) { logical_and_expr *e = new logical_and_expr; e->tok = v->tok; e->left = sym; e->op = "&&"; e->type = pe_long; e->right = (*it)->sole_location()->condition; (*it)->sole_location()->condition = e; } else { (*it)->sole_location()->condition = sym; } } stringstream code; code << "probe procfs(\"monitor_control\").write {" << endl; code << "if ($value == \"clear\") {"; for (auto it = s.globals.cbegin(); it != s.globals.cend(); ++it) { vardecl* v = *it; if (v->synthetic) continue; if (v->arity == 0 && v->init) { if (v->type == pe_long) { literal_number* ln = dynamic_cast(v->init); code << v->name << " = " << ln->value << endl; } else if (v->type == pe_string) { literal_string* ln = dynamic_cast(v->init); code << v->name << " = " << lex_cast_qstring(ln->value) << endl; } } else { // For scalar elements with no initial values, we reset to 0 or empty as // done with arrays and aggregates. code << "delete " << v->name << endl; } } code << "} else if ($value == \"resume\") {" << endl; for (auto it = s.probes.cbegin(); it != s.probes.cend(); ++it) { code << " __monitor_" << it-s.probes.begin() << "_enabled" << " = 1" << endl; } code << "} else if ($value == \"pause\") {" << endl; for (auto it = s.probes.cbegin(); it != s.probes.cend(); ++it) { code << " __monitor_" << it-s.probes.begin() << "_enabled" << " = 0" << endl; } code << "} else if ($value == \"quit\") {" << endl; code << " exit()" << endl; code << "}"; for (auto it = s.probes.cbegin(); it != s.probes.cend(); ++it) { code << " if ($value == \"" << it-s.probes.begin() << "\")" << " __monitor_" << it-s.probes.begin() << "_enabled" << " ^= 1" << endl; } code << "}" << endl; probe* p = parse_synthetic_probe(s, code, 0); if (!p) throw SEMANTIC_ERROR (_("can't create procfs probe"), 0); vector dps; derive_probes (s, p, dps); derived_probe* dp = dps[0]; s.probes.push_back (dp); dp->join_group (s); // Repopulate symbol info symresolution_info sym (s, /* omniscient-unmangled */ true); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (&sym); } static void setup_timeout(systemtap_session& s) { if (!s.timeout) return; stringstream code; code << "probe timer.ms(" << s.timeout << ") {exit()}"; probe* p = parse_synthetic_probe(s, code, 0); if (!p) throw SEMANTIC_ERROR (_("can't create timer probe"), 0); vector dps; derive_probes (s, p, dps); derived_probe* dp = dps[0]; s.probes.push_back (dp); dp->join_group (s); // Repopulate symbol info symresolution_info sym (s); sym.current_function = 0; sym.current_probe = dp; dp->body->visit (&sym); } int semantic_pass (systemtap_session& s) { int rc = 0; try { // FIXME: interactive mode, register_library_aliases handles // both aliases from library files *and* user scripts. It would // be nice to have them in separate lists and register them // separately. s.register_library_aliases(); register_standard_tapsets(s); if (rc == 0) setup_timeout(s); if (rc == 0) rc = semantic_pass_symbols (s); if (rc == 0) monitor_mode_write (s); if (rc == 0) rc = semantic_pass_conditions (s); if (rc == 0) rc = semantic_pass_optimize1 (s); if (rc == 0) rc = semantic_pass_types (s); if (rc == 0) rc = gen_dfa_table(s); if (rc == 0) add_global_var_display (s); if (rc == 0) monitor_mode_read(s); if (rc == 0) rc = semantic_pass_optimize2 (s); if (rc == 0) rc = semantic_pass_vars (s); if (rc == 0) rc = semantic_pass_stats (s); if (rc == 0) embeddedcode_info_pass (s); } catch (const semantic_error& e) { s.print_error (e); rc ++; } bool no_primary_probes = true; for (unsigned i = 0; i < s.probes.size(); i++) if (s.is_primary_probe(s.probes[i])) no_primary_probes = false; if (s.num_errors() == 0 && no_primary_probes && !s.dump_mode) { s.print_error(SEMANTIC_ERROR(_("no probes found"))); rc ++; } build_no_more (s); // PR11443 // NB: listing mode only cares whether we have any probes, // so all previous error conditions are disregarded. if (s.dump_mode == systemtap_session::dump_matched_probes || s.dump_mode == systemtap_session::dump_matched_probes_vars) rc = no_primary_probes; // If we're dumping functions, only error out if no functions were found if (s.dump_mode == systemtap_session::dump_functions) rc = s.functions.empty(); return rc; } // ------------------------------------------------------------------------ // semantic processing: symbol resolution symresolution_info::symresolution_info (systemtap_session& s, bool omniscient_unmangled): session (s), unmangled_p(omniscient_unmangled), current_function (0), current_probe (0) { } void symresolution_info::visit_block (block* e) { for (unsigned i=0; istatements.size(); i++) { try { e->statements[i]->visit (this); } catch (const semantic_error& e) { session.print_error (e); } } } void symresolution_info::visit_foreach_loop (foreach_loop* e) { for (unsigned i=0; iindexes.size(); i++) e->indexes[i]->visit (this); for (unsigned i=0; iarray_slice.size(); i++) if (e->array_slice[i]) e->array_slice[i]->visit(this); symbol *array = NULL; hist_op *hist = NULL; classify_indexable (e->base, array, hist); if (array) { if (!array->referent) { vardecl* d = find_var (array->name, e->indexes.size (), array->tok); if (d) { array->referent = d; array->name = d->name; } else { stringstream msg; msg << _F("unresolved arity-%zu global array %s, missing global declaration?", e->indexes.size(), array->name.to_string().c_str()); throw SEMANTIC_ERROR (msg.str(), array->tok); } } if (!e->array_slice.empty() && e->array_slice.size() != e->indexes.size()) { stringstream msg; msg << _F("unresolved arity-%zu global array %s, missing global declaration?", e->array_slice.size(), array->name.to_string().c_str()); throw SEMANTIC_ERROR (msg.str(), array->tok); } } else { assert (hist); hist->visit (this); } if (e->value) e->value->visit (this); if (e->limit) e->limit->visit (this); e->block->visit (this); } struct delete_statement_symresolution_info: public traversing_visitor { symresolution_info *parent; delete_statement_symresolution_info (symresolution_info *p): parent(p) {} void visit_arrayindex (arrayindex* e) { parent->visit_arrayindex(e, true); } void visit_functioncall (functioncall* e) { parent->visit_functioncall (e); } void visit_symbol (symbol* e) { if (e->referent) return; vardecl* d = parent->find_var (e->name, -1, e->tok); if (d) e->referent = d; else throw SEMANTIC_ERROR (_("unresolved array in delete statement"), e->tok); } }; void symresolution_info::visit_delete_statement (delete_statement* s) { delete_statement_symresolution_info di (this); s->value->visit (&di); } void symresolution_info::visit_symbol (symbol* e) { if (e->referent) return; vardecl* d = find_var (e->name, 0, e->tok); if (d) { e->referent = d; e->name = d->name; } else { // new local vardecl* v = new vardecl; v->unmangled_name = v->name = e->name; v->tok = e->tok; v->set_arity(0, e->tok); if (current_function) current_function->locals.push_back (v); else if (current_probe) current_probe->locals.push_back (v); else // must be probe-condition expression throw SEMANTIC_ERROR (_("probe condition must not reference undeclared global"), e->tok); e->referent = v; } } void symresolution_info::visit_arrayindex (arrayindex* e) { visit_arrayindex(e, false); } void symresolution_info::visit_arrayindex (arrayindex* e, bool wildcard_ok) { for (unsigned i=0; iindexes.size(); i++) { // assuming that if NULL, it was originally a wildcard (*) if (e->indexes[i] == NULL) { if (!wildcard_ok) throw SEMANTIC_ERROR(_("wildcard not allowed in array index"), e->tok); } else e->indexes[i]->visit (this); } symbol *array = NULL; hist_op *hist = NULL; classify_indexable(e->base, array, hist); if (array) { if (array->referent) return; vardecl* d = find_var (array->name, e->indexes.size (), array->tok); if (d) { array->referent = d; array->name = d->name; } else { stringstream msg; msg << _F("unresolved arity-%zu global array %s, missing global declaration?", e->indexes.size(), array->name.to_string().c_str()); throw SEMANTIC_ERROR (msg.str(), e->tok); } } else { assert (hist); hist->visit (this); } } void symresolution_info::visit_array_in (array_in* e) { visit_arrayindex(e->operand, true); } void symresolution_info::visit_functioncall (functioncall* e) { // XXX: we could relax this, if we're going to examine the // vartracking data recursively. See testsuite/semko/fortytwo.stp. if (! (current_function || current_probe)) { // must be probe-condition expression throw SEMANTIC_ERROR (_("probe condition must not reference function"), e->tok); } for (unsigned i=0; iargs.size(); i++) e->args[i]->visit (this); if (!e->referents.empty()) return; vector fds = find_functions (e->function, e->args.size (), e->tok); if (!fds.empty()) { e->referents = fds; function_priority_order order; stable_sort(e->referents.begin(), e->referents.end(), order); // preserve declaration order e->function = e->referents[0]->name; } else { string sugs = levenshtein_suggest(e->function, collect_functions(), 5); // print 5 funcs throw SEMANTIC_ERROR(_F("unresolved function%s", sugs.empty() ? "" : (_(" (similar: ") + sugs + ")").c_str()), e->tok); } // In monitor mode, tapset functions used in the synthetic probe are not resolved and added // to the master list at the same time as the other functions so we must add them here to // allow the translator to generate the functions in the module. if (session.monitor && session.functions.find(e->function) == session.functions.end()) session.functions[e->function] = fds[0]; // no overload } /*find_var will return an argument other than zero if the name matches the var * name ie, if the current local name matches the name passed to find_var*/ vardecl* symresolution_info::find_var (interned_string name, int arity, const token* tok) { if (current_function || current_probe) { // search locals vector& locals = (current_function ? current_function->locals : current_probe->locals); for (unsigned i=0; iname == name) { locals[i]->set_arity (arity, tok); return locals[i]; } } // search function formal parameters (for scalars) if (arity == 0 && current_function) for (unsigned i=0; iformal_args.size(); i++) if (current_function->formal_args[i]->name == name) { // NB: no need to check arity here: formal args always scalar current_function->formal_args[i]->set_arity (0, tok); return current_function->formal_args[i]; } // search processed globals string gname, pname; if (unmangled_p) { gname = pname = string(name); } else { gname = "__global_" + string(name); pname = "__private_" + detox_path(tok->location.file->name) + string(name); } for (unsigned i=0; iname == name && startswith(name, "__global_")) || (session.globals[i]->name == gname) || (session.globals[i]->name == pname)) { if (! session.suppress_warnings) { vardecl* v = session.globals[i]; stapfile* f = tok->location.file; // clog << "resolved " << *tok << " to global " << *v->tok << endl; if (v->tok && v->tok->location.file != f && !f->synthetic) { session.print_warning (_F("cross-file global variable reference to %s from", lex_cast(*v->tok).c_str()), tok); } } session.globals[i]->set_arity (arity, tok); return session.globals[i]; } } // search library globals for (unsigned i=0; iglobals.size(); j++) { vardecl* g = f->globals[j]; if ((g->name == gname) || (g->name == pname)) // private global within tapset probe alias { g->set_arity (arity, tok); // put library into the queue if not already there if (find (session.files.begin(), session.files.end(), f) == session.files.end()) session.files.push_back (f); return g; } } } return 0; } vector symresolution_info::find_functions (const string& name, unsigned arity, const token *tok) { vector functions; functiondecl* last = 0; // used for error message // the common path // internal global functions bypassing the parser, such as __global_dwarf_tvar_[gs]et if ((session.functions.find(name) != session.functions.end()) && startswith(name, "__private_")) { functiondecl* fd = session.functions[name]; assert (fd->name == name); if (fd->formal_args.size() == arity) functions.push_back(fd); else last = fd; } // functions scanned by the parser are overloaded unsigned alternatives = session.overload_count[name]; for (unsigned alt = 0; alt < alternatives; alt++) { bool found = false; // multiple inclusion guard string gname = "__global_" + string(name) + "__overload_" + lex_cast(alt); string pname = "__private_" + detox_path(tok->location.file->name) + string(name) + "__overload_" + lex_cast(alt); // tapset or user script global functions coming from the parser if (!found && session.functions.find(gname) != session.functions.end()) { functiondecl* fd = session.functions[gname]; assert (fd->name == gname); if (fd->formal_args.size() == arity) { functions.push_back(fd); found = true; } else last = fd; } // tapset or user script private functions coming from the parser if (!found && session.functions.find(pname) != session.functions.end()) { functiondecl* fd = session.functions[pname]; assert (fd->name == pname); if (fd->formal_args.size() == arity) { functions.push_back(fd); found = true; } else last = fd; } // search library functions for (unsigned i=0; !found && ifunctions.size(); j++) { if ((f->functions[j]->name == gname) || (f->functions[j]->name == pname)) { if (f->functions[j]->formal_args.size() == arity) { // put library into the queue if not already there if (0) // session.verbose_resolution cerr << _F(" function %s is defined from %s", name.c_str(), f->name.c_str()) << endl; if (find (session.files.begin(), session.files.end(), f) == session.files.end()) session.files.push_back (f); // else .. print different message? functions.push_back(f->functions[j]); found = true; } else last = f->functions[j]; } } } } // suggest last found function with matching name if (last && functions.empty()) { throw SEMANTIC_ERROR(_F("arity mismatch found (function '%s' takes %zu args)", name.c_str(), last->formal_args.size()), tok, last->tok); } return functions; } set symresolution_info::collect_functions(void) { set funcs; for (map::const_iterator it = session.functions.begin(); it != session.functions.end(); ++it) funcs.insert(it->second->unmangled_name); // search library functions for (unsigned i=0; ifunctions.size(); j++) if (! f->functions[j]->name.starts_with("__private_")) funcs.insert(f->functions[j]->unmangled_name); } return funcs; } // ------------------------------------------------------------------------ // optimization // Do away with functiondecls that are never (transitively) called // from probes. void semantic_pass_opt1 (systemtap_session& s, bool& relaxed_p) { functioncall_traversing_visitor ftv; for (unsigned i=0; ibody->visit (& ftv); if (s.probes[i]->sole_location()->condition) s.probes[i]->sole_location()->condition->visit (& ftv); } vector new_unused_functions; for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { functiondecl* fd = it->second; if (ftv.seen.find(fd) == ftv.seen.end()) { if (! fd->synthetic && s.is_user_file(fd->tok->location.file->name)) s.print_warning (_F("Eliding unused function '%s'", fd->unmangled_name.to_string().c_str()), fd->tok); // s.functions.erase (it); // NB: can't, since we're already iterating upon it new_unused_functions.push_back (fd); relaxed_p = false; } } for (unsigned i=0; i::iterator where = s.functions.find (new_unused_functions[i]->name); assert (where != s.functions.end()); s.functions.erase (where); if (s.tapset_compile_coverage) s.unused_functions.push_back (new_unused_functions[i]); } } // ------------------------------------------------------------------------ // Do away with local & global variables that are never // written nor read. void semantic_pass_opt2 (systemtap_session& s, bool& relaxed_p, unsigned iterations) { varuse_collecting_visitor vut(s); for (unsigned i=0; ibody->visit (& vut); if (s.probes[i]->sole_location()->condition) s.probes[i]->sole_location()->condition->visit (& vut); } // NB: Since varuse_collecting_visitor also traverses down // actually called functions, we don't need to explicitly // iterate over them. Uncalled ones should have been pruned // in _opt1 above. // // for (unsigned i=0; ibody->visit (& vut); // Now in vut.read/written, we have a mixture of all locals, globals for (unsigned i=0; ilocals.size(); /* see below */) { vardecl* l = s.probes[i]->locals[j]; // skip over "special" locals if (l->synthetic) { j++; continue; } if (vut.read.find (l) == vut.read.end() && vut.written.find (l) == vut.written.end()) { if (!l->tok->location.file->synthetic && s.is_user_file(l->tok->location.file->name)) s.print_warning (_F("Eliding unused variable '%s'", l->unmangled_name.to_string().c_str()), l->tok); if (s.tapset_compile_coverage) { s.probes[i]->unused_locals.push_back (s.probes[i]->locals[j]); } s.probes[i]->locals.erase(s.probes[i]->locals.begin() + j); relaxed_p = false; // don't increment j } else { if (vut.written.find (l) == vut.written.end()) if (iterations == 0 && ! s.suppress_warnings) { set vars; // like collect_functions() vector::iterator it; for (it = s.probes[i]->locals.begin(); it != s.probes[i]->locals.end(); it++) vars.insert((*it)->unmangled_name); for (it = s.globals.begin(); it != s.globals.end(); it++) if (! (*it)->unmangled_name.starts_with("__private_")) vars.insert((*it)->unmangled_name); vars.erase(l->name); string sugs = levenshtein_suggest(l->name, vars, 5); // suggest top 5 vars s.print_warning (_F("never-assigned local variable '%s'%s", l->unmangled_name.to_string().c_str(), (sugs.empty() ? "" : (_(" (similar: ") + sugs + ")")).c_str()), l->tok); } j++; } } for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { functiondecl *fd = it->second; for (unsigned j=0; jlocals.size(); /* see below */) { vardecl* l = fd->locals[j]; if (vut.read.find (l) == vut.read.end() && vut.written.find (l) == vut.written.end()) { if (!l->tok->location.file->synthetic && s.is_user_file(l->tok->location.file->name)) s.print_warning (_F("Eliding unused variable '%s'", l->unmangled_name.to_string().c_str()), l->tok); if (s.tapset_compile_coverage) { fd->unused_locals.push_back (fd->locals[j]); } fd->locals.erase(fd->locals.begin() + j); relaxed_p = false; // don't increment j } else { if (vut.written.find (l) == vut.written.end()) if (iterations == 0 && ! s.suppress_warnings) { set vars; vector::iterator it; for (it = fd->formal_args.begin() ; it != fd->formal_args.end(); it++) vars.insert((*it)->unmangled_name); for (it = fd->locals.begin(); it != fd->locals.end(); it++) vars.insert((*it)->unmangled_name); for (it = s.globals.begin(); it != s.globals.end(); it++) if (! (*it)->unmangled_name.starts_with("__private_")) vars.insert((*it)->unmangled_name); vars.erase(l->name); string sugs = levenshtein_suggest(l->name, vars, 5); // suggest top 5 vars s.print_warning (_F("never-assigned local variable '%s'%s", l->unmangled_name.to_string().c_str(), (sugs.empty() ? "" : (_(" (similar: ") + sugs + ")")).c_str()), l->tok); } j++; } } } for (unsigned i=0; itok->location.file->synthetic && s.is_user_file(l->tok->location.file->name)) s.print_warning (_F("Eliding unused variable '%s'", l->unmangled_name.to_string().c_str()), l->tok); if (s.tapset_compile_coverage) { s.unused_globals.push_back(s.globals[i]); } s.globals.erase(s.globals.begin() + i); relaxed_p = false; // don't increment i } else { if (vut.written.find (l) == vut.written.end() && ! l->init) // no initializer if (iterations == 0 && ! s.suppress_warnings) { set vars; vector::iterator it; for (it = s.globals.begin(); it != s.globals.end(); it++) if (l->name != (*it)->unmangled_name) if (! (*it)->unmangled_name.starts_with("__private_")) vars.insert((*it)->unmangled_name); string sugs = levenshtein_suggest(l->name, vars, 5); // suggest top 5 vars s.print_warning (_F("never-assigned global variable '%s'%s", l->unmangled_name.to_string().c_str(), (sugs.empty() ? "" : (_(" (similar: ") + sugs + ")")).c_str()), l->tok); } i++; } } } // ------------------------------------------------------------------------ struct dead_assignment_remover: public update_visitor { systemtap_session& session; bool& relaxed_p; const varuse_collecting_visitor& vut; dead_assignment_remover(systemtap_session& s, bool& r, const varuse_collecting_visitor& v): session(s), relaxed_p(r), vut(v) {} void visit_assignment (assignment* e); void visit_try_block (try_block *s); }; // symbol_fetcher augmented to allow target-symbol types, but NULLed. struct assignment_symbol_fetcher : public symbol_fetcher { assignment_symbol_fetcher (symbol *&sym): symbol_fetcher(sym) {} void visit_target_symbol (target_symbol*) { sym = NULL; } void visit_atvar_op (atvar_op*) { sym = NULL; } void visit_cast_op (cast_op*) { sym = NULL; } void visit_autocast_op (autocast_op*) { sym = NULL; } void throwone (const token* t) { if (t->type == tok_operator && t->content == ".") // guess someone misused . in $foo->bar.baz expression // XXX why are we only checking this in lvalues? throw SEMANTIC_ERROR (_("Expecting lvalue expression, try -> instead"), t); else throw SEMANTIC_ERROR (_("Expecting lvalue expression"), t); } }; symbol * get_assignment_symbol_within_expression (expression *e) { symbol *sym = NULL; assignment_symbol_fetcher fetcher(sym); e->visit (&fetcher); return sym; // NB: may be null! } void dead_assignment_remover::visit_assignment (assignment* e) { replace (e->left); replace (e->right); symbol* left = get_assignment_symbol_within_expression (e->left); if (left) // not unresolved $target, so intended sideeffect may be elided { vardecl* leftvar = left->referent; if (vut.read.find(leftvar) == vut.read.end()) // var never read? { // NB: Not so fast! The left side could be an array whose // index expressions may have side-effects. This would be // OK if we could replace the array assignment with a // statement-expression containing all the index expressions // and the rvalue... but we can't. // Another possibility is that we have an unread global variable // which are kept for probe end value display. bool is_global = false; vector::iterator it; for (it = session.globals.begin(); it != session.globals.end(); it++) if (leftvar->name == (*it)->name) { is_global = true; break; } varuse_collecting_visitor lvut(session); e->left->visit (& lvut); if (lvut.side_effect_free () && !is_global // XXX: use _wrt() once we track focal_vars && !leftvar->synthetic) // don't elide assignment to synthetic $context variables { /* PR 1119: NB: This is not necessary here. A write-only variable will also be elided soon at the next _opt2 iteration. if (e->left->tok->location.file->name == session.user_file->name) // !tapset session.print_warning("eliding write-only ", *e->left->tok); else */ if (!e->left->tok->location.file->synthetic && session.is_user_file(e->left->tok->location.file->name)) session.print_warning(_F("Eliding assignment to '%s'", leftvar->unmangled_name.to_string().c_str()), e->tok); provide (e->right); // goodbye assignment* relaxed_p = false; return; } } } provide (e); } void dead_assignment_remover::visit_try_block (try_block *s) { replace (s->try_block); if (s->catch_error_var) { vardecl* errvar = s->catch_error_var->referent; if (vut.read.find(errvar) == vut.read.end()) // never read? { if (session.verbose>2) clog << _F("Eliding unused error string catcher %s at %s", errvar->unmangled_name.to_string().c_str(), lex_cast(*s->tok).c_str()) << endl; s->catch_error_var = 0; } } replace (s->catch_block); provide (s); } // Let's remove assignments to variables that are never read. We // rewrite "(foo = expr)" as "(expr)". This makes foo a candidate to // be optimized away as an unused variable, and expr a candidate to be // removed as a side-effect-free statement expression. Wahoo! void semantic_pass_opt3 (systemtap_session& s, bool& relaxed_p) { // Recompute the varuse data, which will probably match the opt2 // copy of the computation, except for those totally unused // variables that opt2 removed. varuse_collecting_visitor vut(s); for (unsigned i=0; ibody->visit (& vut); // includes reachable functions too dead_assignment_remover dar (s, relaxed_p, vut); // This instance may be reused for multiple probe/function body trims. for (unsigned i=0; ibody); for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) dar.replace (it->second->body); // The rewrite operation is performed within the visitor. // XXX: we could also zap write-only globals here } // ------------------------------------------------------------------------ struct dead_stmtexpr_remover: public update_visitor { systemtap_session& session; bool& relaxed_p; set focal_vars; // vars considered subject to side-effects dead_stmtexpr_remover(systemtap_session& s, bool& r): session(s), relaxed_p(r) {} void visit_block (block *s); void visit_try_block (try_block *s); void visit_null_statement (null_statement *s); void visit_if_statement (if_statement* s); void visit_foreach_loop (foreach_loop *s); void visit_for_loop (for_loop *s); // XXX: and other places where stmt_expr's might be nested void visit_expr_statement (expr_statement *s); }; void dead_stmtexpr_remover::visit_null_statement (null_statement *s) { // easy! if (session.verbose>2) clog << _("Eliding side-effect-free null statement ") << *s->tok << endl; s = 0; provide (s); } void dead_stmtexpr_remover::visit_block (block *s) { vector new_stmts; for (unsigned i=0; istatements.size(); i++ ) { statement* new_stmt = require (s->statements[i], true); if (new_stmt != 0) { // flatten nested blocks into this one block *b = dynamic_cast(new_stmt); if (b) { if (session.verbose>2) clog << _("Flattening nested block ") << *b->tok << endl; new_stmts.insert(new_stmts.end(), b->statements.begin(), b->statements.end()); relaxed_p = false; } else new_stmts.push_back (new_stmt); } } if (new_stmts.size() == 0) { if (session.verbose>2) clog << _("Eliding side-effect-free empty block ") << *s->tok << endl; s = 0; } else if (new_stmts.size() == 1) { if (session.verbose>2) clog << _("Eliding side-effect-free singleton block ") << *s->tok << endl; provide (new_stmts[0]); return; } else s->statements = new_stmts; provide (s); } void dead_stmtexpr_remover::visit_try_block (try_block *s) { replace (s->try_block, true); replace (s->catch_block, true); // null catch{} is ok and useful if (s->try_block == 0) { if (session.verbose>2) clog << _("Eliding empty try {} block ") << *s->tok << endl; s = 0; } provide (s); } void dead_stmtexpr_remover::visit_if_statement (if_statement *s) { replace (s->thenblock, true); replace (s->elseblock, true); if (s->thenblock == 0) { if (s->elseblock == 0) { // We may be able to elide this statement, if the condition // expression is side-effect-free. varuse_collecting_visitor vct(session); s->condition->visit(& vct); if (vct.side_effect_free ()) { if (session.verbose>2) clog << _("Eliding side-effect-free if statement ") << *s->tok << endl; s = 0; // yeah, baby } else { // We can still turn it into a simple expr_statement though... if (session.verbose>2) clog << _("Creating simple evaluation from if statement ") << *s->tok << endl; expr_statement *es = new expr_statement; es->value = s->condition; es->tok = es->value->tok; provide (es); return; } } else { // For an else without a then, we can invert the condition logic to // avoid having a null statement in the thenblock if (session.verbose>2) clog << _("Inverting the condition of if statement ") << *s->tok << endl; unary_expression *ue = new unary_expression; ue->operand = s->condition; ue->tok = ue->operand->tok; ue->op = "!"; s->condition = ue; s->thenblock = s->elseblock; s->elseblock = 0; } } provide (s); } void dead_stmtexpr_remover::visit_foreach_loop (foreach_loop *s) { replace (s->block, true); if (s->block == 0) { // XXX what if s->limit has side effects? // XXX what about s->indexes or s->value used outside the loop? if(session.verbose > 2) clog << _("Eliding side-effect-free foreach statement ") << *s->tok << endl; s = 0; // yeah, baby } provide (s); } void dead_stmtexpr_remover::visit_for_loop (for_loop *s) { replace (s->block, true); if (s->block == 0) { // We may be able to elide this statement, if the condition // expression is side-effect-free. varuse_collecting_visitor vct(session); if (s->init) s->init->visit(& vct); s->cond->visit(& vct); if (s->incr) s->incr->visit(& vct); if (vct.side_effect_free ()) { if (session.verbose>2) clog << _("Eliding side-effect-free for statement ") << *s->tok << endl; s = 0; // yeah, baby } else { // Can't elide this whole statement; put a null in there. s->block = new null_statement(s->tok); } } provide (s); } void dead_stmtexpr_remover::visit_expr_statement (expr_statement *s) { // Run a varuse query against the operand expression. If it has no // side-effects, replace the entire statement expression by a null // statement with the provide() call. // // Unlike many other visitors, we do *not* traverse this outermost // one into the expression subtrees. There is no need - no // expr_statement nodes will be found there. (Function bodies // need to be visited explicitly by our caller.) // // NB. While we don't share nodes in the parse tree, let's not // deallocate *s anyway, just in case... varuse_collecting_visitor vut(session); s->value->visit (& vut); if (vut.side_effect_free_wrt (focal_vars)) { /* PR 1119: NB: this message is not a good idea here. It can name some arbitrary RHS expression of an assignment. if (s->value->tok->location.file->name == session.user_file->name) // not tapset session.print_warning("eliding never-assigned ", *s->value->tok); else */ if (!s->value->tok->location.file->synthetic && session.is_user_file(s->value->tok->location.file->name)) session.print_warning("Eliding side-effect-free expression ", s->tok); // NB: this 0 pointer is invalid to leave around for any length of // time, but the parent parse tree objects above handle it. s = 0; relaxed_p = false; } provide (s); } void semantic_pass_opt4 (systemtap_session& s, bool& relaxed_p) { // Finally, let's remove some statement-expressions that have no // side-effect. These should be exactly those whose private varuse // visitors come back with an empty "written" and "embedded" lists. dead_stmtexpr_remover duv (s, relaxed_p); // This instance may be reused for multiple probe/function body trims. for (unsigned i=0; ilocals.begin(), p->locals.end()); duv.replace (p->body, true); if (p->body == 0) { if (! s.timing && // PR10070 !(p->base->tok->location.file->synthetic)) // don't warn for synthetic probes s.print_warning (_("side-effect-free probe"), p->tok); p->body = new null_statement(p->tok); // XXX: possible duplicate warnings; see below } } for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { assert_no_interrupts(); functiondecl* fn = it->second; duv.focal_vars.clear (); duv.focal_vars.insert (fn->locals.begin(), fn->locals.end()); duv.focal_vars.insert (fn->formal_args.begin(), fn->formal_args.end()); duv.focal_vars.insert (s.globals.begin(), s.globals.end()); duv.replace (fn->body, true); if (fn->body == 0) { s.print_warning (_F("side-effect-free function '%s'", fn->unmangled_name.to_string().c_str()), fn->tok); fn->body = new null_statement(fn->tok); // XXX: the next iteration of the outer optimization loop may // take this new null_statement away again, and thus give us a // fresh warning. It would be better if this fixup was performed // only after the relaxation iterations. // XXX: or else see bug #6469. } } } // ------------------------------------------------------------------------ // The goal of this visitor is to reduce top-level expressions in void context // into separate statements that evaluate each subcomponent of the expression. // The dead-statement-remover can later remove some parts if they have no side // effects. // // All expressions must be overridden here so we never visit their subexpressions // accidentally. Thus, the only visited expressions should be value of an // expr_statement. // // For an expression to replace its expr_statement with something else, it will // let the new statement provide(), and then provide(0) for itself. The // expr_statement will take this as a sign that it's been replaced. struct void_statement_reducer: public update_visitor { systemtap_session& session; bool& relaxed_p; set focal_vars; // vars considered subject to side-effects void_statement_reducer(systemtap_session& s, bool& r): session(s), relaxed_p(r) {} void visit_expr_statement (expr_statement* s); // expressions in conditional / loop controls are definitely a side effect, // but still recurse into the child statements void visit_if_statement (if_statement* s); void visit_for_loop (for_loop* s); void visit_foreach_loop (foreach_loop* s); // these expressions get rewritten into their statement equivalents void visit_logical_or_expr (logical_or_expr* e); void visit_logical_and_expr (logical_and_expr* e); void visit_ternary_expression (ternary_expression* e); // all of these can (usually) be reduced into simpler statements void visit_binary_expression (binary_expression* e); void visit_unary_expression (unary_expression* e); void visit_regex_query (regex_query* e); // XXX depends on subexpr extraction void visit_comparison (comparison* e); void visit_concatenation (concatenation* e); void visit_functioncall (functioncall* e); void visit_print_format (print_format* e); void visit_target_symbol (target_symbol* e); void visit_atvar_op (atvar_op* e); void visit_cast_op (cast_op* e); void visit_autocast_op (autocast_op* e); void visit_defined_op (defined_op* e); // these are a bit hairy to grok due to the intricacies of indexables and // stats, so I'm chickening out and skipping them... void visit_array_in (array_in* e) { provide (e); } void visit_arrayindex (arrayindex* e) { provide (e); } void visit_stat_op (stat_op* e) { provide (e); } void visit_hist_op (hist_op* e) { provide (e); } // these can't be reduced because they always have an effect void visit_return_statement (return_statement* s) { provide (s); } void visit_delete_statement (delete_statement* s) { provide (s); } void visit_pre_crement (pre_crement* e) { provide (e); } void visit_post_crement (post_crement* e) { provide (e); } void visit_assignment (assignment* e) { provide (e); } private: void reduce_target_symbol (target_symbol* e, expression* operand=NULL); }; void void_statement_reducer::visit_expr_statement (expr_statement* s) { replace (s->value, true); // if the expression provides 0, that's our signal that a new // statement has been provided, so we shouldn't provide this one. if (s->value != 0) provide(s); } void void_statement_reducer::visit_if_statement (if_statement* s) { // s->condition is never void replace (s->thenblock); replace (s->elseblock); provide (s); } void void_statement_reducer::visit_for_loop (for_loop* s) { // s->init/cond/incr are never void replace (s->block); provide (s); } void void_statement_reducer::visit_foreach_loop (foreach_loop* s) { // s->indexes/base/value/limit are never void replace (s->block); provide (s); } void void_statement_reducer::visit_logical_or_expr (logical_or_expr* e) { // In void context, the evaluation of "a || b" is exactly like // "if (!a) b", so let's do that instead. if (session.verbose>2) clog << _("Creating if statement from unused logical-or ") << *e->tok << endl; if_statement *is = new if_statement; is->tok = e->tok; is->elseblock = 0; unary_expression *ue = new unary_expression; ue->operand = e->left; ue->tok = e->tok; ue->op = "!"; is->condition = ue; expr_statement *es = new expr_statement; es->value = e->right; es->tok = es->value->tok; is->thenblock = es; is->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_logical_and_expr (logical_and_expr* e) { // In void context, the evaluation of "a && b" is exactly like // "if (a) b", so let's do that instead. if (session.verbose>2) clog << _("Creating if statement from unused logical-and ") << *e->tok << endl; if_statement *is = new if_statement; is->tok = e->tok; is->elseblock = 0; is->condition = e->left; expr_statement *es = new expr_statement; es->value = e->right; es->tok = es->value->tok; is->thenblock = es; is->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_ternary_expression (ternary_expression* e) { // In void context, the evaluation of "a ? b : c" is exactly like // "if (a) b else c", so let's do that instead. if (session.verbose>2) clog << _("Creating if statement from unused ternary expression ") << *e->tok << endl; if_statement *is = new if_statement; is->tok = e->tok; is->condition = e->cond; expr_statement *es = new expr_statement; es->value = e->truevalue; es->tok = es->value->tok; is->thenblock = es; es = new expr_statement; es->value = e->falsevalue; es->tok = es->value->tok; is->elseblock = es; is->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_binary_expression (binary_expression* e) { // When the result of a binary operation isn't needed, it's just as good to // evaluate the operands as sequential statements in a block. if (session.verbose>2) clog << _("Eliding unused binary ") << *e->tok << endl; block *b = new block; b->tok = e->tok; expr_statement *es = new expr_statement; es->value = e->left; es->tok = es->value->tok; b->statements.push_back(es); es = new expr_statement; es->value = e->right; es->tok = es->value->tok; b->statements.push_back(es); b->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_unary_expression (unary_expression* e) { // When the result of a unary operation isn't needed, it's just as good to // evaluate the operand directly if (session.verbose>2) clog << _("Eliding unused unary ") << *e->tok << endl; relaxed_p = false; e->operand->visit(this); } void void_statement_reducer::visit_regex_query (regex_query* e) { // TODOXXX After subexpression extraction is implemented, // regular expression matches *may* have side-effects in // terms of producing matched subexpressions, e.g.: // // str =~ "pat"; println(matched(0)); // // It's debatable if we want to actually allow this, though. // Treat e as a unary expression on the left operand -- since the // right hand side must be a literal (as verified by the parser), // evaluating it never has side effects. if (session.verbose>2) clog << _("Eliding regex query ") << *e->tok << endl; relaxed_p = false; e->left->visit(this); } void void_statement_reducer::visit_comparison (comparison* e) { visit_binary_expression(e); } void void_statement_reducer::visit_concatenation (concatenation* e) { visit_binary_expression(e); } void void_statement_reducer::visit_functioncall (functioncall* e) { // If a function call is pure and its result ignored, we can elide the call // and just evaluate the arguments in sequence if (e->args.empty()) { provide (e); return; } bool side_effect_free = true; for (unsigned i = 0; i < e->referents.size(); i++) { varuse_collecting_visitor vut(session); vut.seen.insert (e->referents[i]); vut.current_function = e->referents[i]; e->referents[i]->body->visit (& vut); if (!vut.side_effect_free_wrt(focal_vars)) { side_effect_free = false; break; } } if (!side_effect_free) { provide (e); return; } if (session.verbose>2) clog << _("Eliding side-effect-free function call ") << *e->tok << endl; block *b = new block; b->tok = e->tok; for (unsigned i=0; iargs.size(); i++ ) { expr_statement *es = new expr_statement; es->value = e->args[i]; es->tok = es->value->tok; b->statements.push_back(es); } b->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_print_format (print_format* e) { // When an sprint's return value is ignored, we can simply evaluate the // arguments in sequence if (e->print_to_stream || !e->args.size()) { provide (e); return; } if (session.verbose>2) clog << _("Eliding unused print ") << *e->tok << endl; block *b = new block; b->tok = e->tok; for (unsigned i=0; iargs.size(); i++ ) { expr_statement *es = new expr_statement; es->value = e->args[i]; es->tok = es->value->tok; b->statements.push_back(es); } b->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::reduce_target_symbol (target_symbol* e, expression* operand) { // When the result of any target_symbol isn't needed, it's just as good to // evaluate the operand and any array indexes directly block *b = new block; b->tok = e->tok; if (operand) { expr_statement *es = new expr_statement; es->value = operand; es->tok = es->value->tok; b->statements.push_back(es); } for (unsigned i=0; icomponents.size(); i++ ) { if (e->components[i].type != target_symbol::comp_expression_array_index) continue; expr_statement *es = new expr_statement; es->value = e->components[i].expr_index; es->tok = es->value->tok; b->statements.push_back(es); } b->visit(this); relaxed_p = false; e = 0; provide (e); } void void_statement_reducer::visit_atvar_op (atvar_op* e) { if (session.verbose>2) clog << _("Eliding unused target symbol ") << *e->tok << endl; reduce_target_symbol (e); } void void_statement_reducer::visit_target_symbol (target_symbol* e) { if (session.verbose>2) clog << _("Eliding unused target symbol ") << *e->tok << endl; reduce_target_symbol (e); } void void_statement_reducer::visit_cast_op (cast_op* e) { if (session.verbose>2) clog << _("Eliding unused typecast ") << *e->tok << endl; reduce_target_symbol (e, e->operand); } void void_statement_reducer::visit_autocast_op (autocast_op* e) { if (session.verbose>2) clog << _("Eliding unused autocast ") << *e->tok << endl; reduce_target_symbol (e, e->operand); } void void_statement_reducer::visit_defined_op (defined_op* e) { // When the result of a @defined operation isn't needed, just elide // it entirely. Its operand $expression must already be // side-effect-free. if (session.verbose>2) clog << _("Eliding unused check ") << *e->tok << endl; relaxed_p = false; e = 0; provide (e); } void semantic_pass_opt5 (systemtap_session& s, bool& relaxed_p) { // Let's simplify statements with unused computed values. void_statement_reducer vuv (s, relaxed_p); // This instance may be reused for multiple probe/function body trims. vuv.focal_vars.insert (s.globals.begin(), s.globals.end()); for (unsigned i=0; ibody); for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) vuv.replace (it->second->body); } void const_folder::get_literal(expression*& e, literal_number*& n, literal_string*& s) { replace (e); n = (e == last_number) ? last_number : NULL; s = (e == last_string) ? last_string : NULL; } literal_number* const_folder::get_number(expression*& e) { replace (e); return (e == last_number) ? last_number : NULL; } void const_folder::visit_literal_number (literal_number* e) { last_number = e; provide (e); } literal_string* const_folder::get_string(expression*& e) { replace (e); return (e == last_string) ? last_string : NULL; } void const_folder::visit_literal_string (literal_string* e) { last_string = e; provide (e); } void const_folder::visit_if_statement (if_statement* s) { literal_number* cond = get_number (s->condition); if (!cond) { replace (s->thenblock); replace (s->elseblock); provide (s); } else { if (session.verbose>2) clog << _F("Collapsing constant-%" PRIi64 " if-statement %s", cond->value, lex_cast(*s->tok).c_str()) << endl; relaxed_p = false; statement* n = cond->value ? s->thenblock : s->elseblock; if (n) n->visit (this); else provide (new null_statement (s->tok)); } } void const_folder::visit_for_loop (for_loop* s) { literal_number* cond = get_number (s->cond); if (!cond || cond->value) { replace (s->init); replace (s->incr); replace (s->block); provide (s); } else { if (session.verbose>2) clog << _("Collapsing constantly-false for-loop ") << *s->tok << endl; relaxed_p = false; if (s->init) s->init->visit (this); else provide (new null_statement (s->tok)); } } void const_folder::visit_foreach_loop (foreach_loop* s) { literal_number* limit = get_number (s->limit); if (!limit || limit->value > 0) { for (unsigned i = 0; i < s->indexes.size(); ++i) replace (s->indexes[i]); replace (s->base); replace (s->value); replace (s->block); provide (s); } else { if (session.verbose>2) clog << _("Collapsing constantly-limited foreach-loop ") << *s->tok << endl; relaxed_p = false; provide (new null_statement (s->tok)); } } void const_folder::visit_binary_expression (binary_expression* e) { int64_t value; literal_number* left = get_number (e->left); literal_number* right = get_number (e->right); if (right && !right->value && (e->op == "/" || e->op == "%")) { // Give divide-by-zero a chance to be optimized out elsewhere, // and if not it will be a runtime error anyway... provide (e); return; } if (left && right) { if (e->op == "+") value = left->value + right->value; else if (e->op == "-") value = left->value - right->value; else if (e->op == "*") value = left->value * right->value; else if (e->op == "&") value = left->value & right->value; else if (e->op == "|") value = left->value | right->value; else if (e->op == "^") value = left->value ^ right->value; else if (e->op == ">>") value = left->value >> max(min(right->value, (int64_t)64), (int64_t)0); else if (e->op == "<<") value = left->value << max(min(right->value, (int64_t)64), (int64_t)0); else if (e->op == "/") value = (left->value == LLONG_MIN && right->value == -1) ? LLONG_MIN : left->value / right->value; else if (e->op == "%") value = (left->value == LLONG_MIN && right->value == -1) ? 0 : left->value % right->value; else throw SEMANTIC_ERROR (_("unsupported binary operator ") + (string)e->op); } else if ((left && ((left->value == 0 && (e->op == "*" || e->op == "&" || e->op == ">>" || e->op == "<<" )) || (left->value ==-1 && (e->op == "|" || e->op == ">>")))) || (right && ((right->value == 0 && (e->op == "*" || e->op == "&")) || (right->value == 1 && (e->op == "%")) || (right->value ==-1 && (e->op == "%" || e->op == "|"))))) { expression* other = left ? e->right : e->left; varuse_collecting_visitor vu(session); other->visit(&vu); if (!vu.side_effect_free()) { provide (e); return; } // we'll pass on type=pe_long inference to the expression if (other->type == pe_unknown) other->type = pe_long; else if (other->type != pe_long) { // this mismatch was not caught in the initial type resolution pass, // generate a mismatch (left doesn't match right) error typeresolution_info ti(session); ti.assert_resolvability = true; // need this to get it throw errors ti.mismatch_complexity = 1; // also needed to throw errors ti.mismatch(e); } if (left) value = left->value; else if (e->op == "%") value = 0; else value = right->value; } else if ((left && ((left->value == 0 && (e->op == "+" || e->op == "|" || e->op == "^")) || (left->value == 1 && (e->op == "*")) || (left->value ==-1 && (e->op == "&")))) || (right && ((right->value == 0 && (e->op == "+" || e->op == "-" || e->op == "|" || e->op == "^")) || (right->value == 1 && (e->op == "*" || e->op == "/")) || (right->value ==-1 && (e->op == "&")) || (right->value <= 0 && (e->op == ">>" || e->op == "<<"))))) { if (session.verbose>2) clog << _("Collapsing constant-identity binary operator ") << *e->tok << endl; relaxed_p = false; // we'll pass on type=pe_long inference to the expression expression* other = left ? e->right : e->left; if (other->type == pe_unknown) other->type = pe_long; else if (other->type != pe_long) { // this mismatch was not caught in the initial type resolution pass, // generate a mismatch (left doesn't match right) error typeresolution_info ti(session); ti.assert_resolvability = true; // need this to get it throw errors ti.mismatch_complexity = 1; // also needed to throw errors ti.mismatch(e); } provide (other); return; } else { provide (e); return; } if (session.verbose>2) clog << _F("Collapsing constant-%" PRIi64 " binary operator %s", value, lex_cast(*e->tok).c_str()) << endl; relaxed_p = false; literal_number* n = new literal_number(value); n->tok = e->tok; n->visit (this); } void const_folder::visit_unary_expression (unary_expression* e) { literal_number* operand = get_number (e->operand); if (!operand) provide (e); else { if (session.verbose>2) clog << _("Collapsing constant unary ") << *e->tok << endl; relaxed_p = false; literal_number* n = new literal_number (*operand); n->tok = e->tok; if (e->op == "+") ; // nothing to do else if (e->op == "-") n->value = -n->value; else if (e->op == "!") n->value = !n->value; else if (e->op == "~") n->value = ~n->value; else throw SEMANTIC_ERROR (_("unsupported unary operator ") + (string)e->op); n->visit (this); } } void const_folder::visit_logical_or_expr (logical_or_expr* e) { int64_t value; literal_number* left = get_number (e->left); literal_number* right = get_number (e->right); if (left && right) value = left->value || right->value; else if ((left && left->value) || (right && right->value)) { // If the const is on the left, we get to short-circuit the right // immediately. Otherwise, we can only eliminate the LHS if it's pure. if (right) { varuse_collecting_visitor vu(session); e->left->visit(&vu); if (!vu.side_effect_free()) { provide (e); return; } } value = 1; } // We might also get rid of useless "0||x" and "x||0", except it does // normalize x to 0 or 1. We could change it to "!!x", but it's not clear // that this would gain us much. else { provide (e); return; } if (session.verbose>2) clog << _("Collapsing constant logical-OR ") << *e->tok << endl; relaxed_p = false; literal_number* n = new literal_number(value); n->tok = e->tok; n->visit (this); } void const_folder::visit_logical_and_expr (logical_and_expr* e) { int64_t value; literal_number* left = get_number (e->left); literal_number* right = get_number (e->right); if (left && right) value = left->value && right->value; else if ((left && !left->value) || (right && !right->value)) { // If the const is on the left, we get to short-circuit the right // immediately. Otherwise, we can only eliminate the LHS if it's pure. if (right) { varuse_collecting_visitor vu(session); e->left->visit(&vu); if (!vu.side_effect_free()) { provide (e); return; } } value = 0; } // We might also get rid of useless "1&&x" and "x&&1", except it does // normalize x to 0 or 1. We could change it to "!!x", but it's not clear // that this would gain us much. else { provide (e); return; } if (session.verbose>2) clog << _("Collapsing constant logical-AND ") << *e->tok << endl; relaxed_p = false; literal_number* n = new literal_number(value); n->tok = e->tok; n->visit (this); } void const_folder::visit_comparison (comparison* e) { int comp; literal_number *left_num, *right_num; literal_string *left_str, *right_str; get_literal(e->left, left_num, left_str); get_literal(e->right, right_num, right_str); if (left_str && right_str) comp = left_str->value.compare(right_str->value); else if (left_num && right_num) comp = left_num->value < right_num->value ? -1 : left_num->value > right_num->value ? 1 : 0; else if ((left_num && ((left_num->value == LLONG_MIN && (e->op == "<=" || e->op == ">")) || (left_num->value == LLONG_MAX && (e->op == ">=" || e->op == "<")))) || (right_num && ((right_num->value == LLONG_MIN && (e->op == ">=" || e->op == "<")) || (right_num->value == LLONG_MAX && (e->op == "<=" || e->op == ">"))))) { expression* other = left_num ? e->right : e->left; varuse_collecting_visitor vu(session); other->visit(&vu); if (!vu.side_effect_free()) provide (e); else { if (session.verbose>2) clog << _("Collapsing constant-boundary comparison ") << *e->tok << endl; relaxed_p = false; // ops <= and >= are true, < and > are false literal_number* n = new literal_number( e->op.length() == 2 ); n->tok = e->tok; n->visit (this); } return; } else { provide (e); return; } if (session.verbose>2) clog << _("Collapsing constant comparison ") << *e->tok << endl; relaxed_p = false; int64_t value; if (e->op == "==") value = comp == 0; else if (e->op == "!=") value = comp != 0; else if (e->op == "<") value = comp < 0; else if (e->op == ">") value = comp > 0; else if (e->op == "<=") value = comp <= 0; else if (e->op == ">=") value = comp >= 0; else throw SEMANTIC_ERROR (_("unsupported comparison operator ") + (string)e->op); literal_number* n = new literal_number(value); n->tok = e->tok; n->visit (this); } void const_folder::visit_concatenation (concatenation* e) { literal_string* left = get_string (e->left); literal_string* right = get_string (e->right); if (left && right) { if (session.verbose>2) clog << _("Collapsing constant concatenation ") << *e->tok << endl; relaxed_p = false; literal_string* n = new literal_string (*left); n->tok = e->tok; n->value = (string)n->value + (string)right->value; n->visit (this); } else if ((left && left->value.empty()) || (right && right->value.empty())) { if (session.verbose>2) clog << _("Collapsing identity concatenation ") << *e->tok << endl; relaxed_p = false; provide(left ? e->right : e->left); } else provide (e); } void const_folder::visit_ternary_expression (ternary_expression* e) { literal_number* cond = get_number (e->cond); if (!cond) { replace (e->truevalue); replace (e->falsevalue); provide (e); } else { if (session.verbose>2) clog << _F("Collapsing constant-%" PRIi64 " ternary %s", cond->value, lex_cast(*e->tok).c_str()) << endl; relaxed_p = false; expression* n = cond->value ? e->truevalue : e->falsevalue; n->visit (this); } } void const_folder::visit_defined_op (defined_op* e) { // If a @defined makes it this far, then it was not resolved by // previous efforts. We could assume that therefore it is a big fat // zero, but for the @defined(autocast) case PR18079, this just // means that we didn't know yet. int64_t value = 0; bool collapse_this = false; /* PR20672: not true; we run a const_folder iteratively during initial probe body variable-expansion, when other @defined()s may be as-yet-unprocessed. We can't presume to map them to zero. // We do know that plain target_symbols aren't going anywhere though. if (get_target_symbol (e->operand)) { if (session.verbose>2) clog << _("Collapsing target_symbol @defined check ") << *e->tok << endl; collapse_this = true; } else */ if (collapse_defines_p && relaxed_p) { if (session.verbose>2) clog << _("Collapsing untouched @defined check ") << *e->tok << endl; // If we got to an expression with a known type, call it defined. if (e->operand->type != pe_unknown) value = 1; collapse_this = true; } if (collapse_this) { // Don't be greedy... we'll only collapse one at a time so type // resolution can have another go at it. relaxed_p = false; literal_number* n = new literal_number (value); n->tok = e->tok; n->visit (this); } else { if (session.verbose>2) clog << _("Preserving unresolved @defined check ") << *e->tok << endl; provide (e); } } target_symbol* const_folder::get_target_symbol(expression*& e) { replace (e); return (e == last_target_symbol) ? last_target_symbol : NULL; } void const_folder::visit_target_symbol (target_symbol* e) { if (collapse_defines_p && session.skip_badvars) { // Upon user request for ignoring context, the symbol is replaced // with a literal 0 and a warning message displayed // ... but don't do this during early runs of the const_folder, only // during the final (collapse_defines_p) one. (Otherwise, during // a dwarf_var "@defined($foo) ? $foo : 0", the inner $foo could // get premature mapping to 0. // // XXX this ignores possible side-effects, e.g. in array indexes literal_number* ln_zero = new literal_number (0); ln_zero->tok = e->tok; provide (ln_zero); session.print_warning (_("Bad $context variable being substituted with literal 0"), e->tok); relaxed_p = false; } else { update_visitor::visit_target_symbol (e); last_target_symbol = e; } } static int initial_typeres_pass(systemtap_session& s); static int semantic_pass_const_fold (systemtap_session& s, bool& relaxed_p) { // attempt an initial type resolution pass to see if there are any type // mismatches before we starting whisking away vars that get switched out // with a const. // return if the initial type resolution pass reported errors (type mismatches) int rc = initial_typeres_pass(s); if (rc) { relaxed_p = true; return rc; } // Let's simplify statements with constant values. const_folder cf (s, relaxed_p, true /* collapse remaining @defined()->0 now */ ); // This instance may be reused for multiple probe/function body trims. for (unsigned i=0; ibody); for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) cf.replace (it->second->body); return 0; } struct dead_control_remover: public traversing_visitor { systemtap_session& session; bool& relaxed_p; statement* control; dead_control_remover(systemtap_session& s, bool& r): session(s), relaxed_p(r), control(NULL) {} void visit_block (block *b); // When a block contains any of these, the following statements are dead. void visit_return_statement (return_statement* s) { control = s; } void visit_next_statement (next_statement* s) { control = s; } void visit_break_statement (break_statement* s) { control = s; } void visit_continue_statement (continue_statement* s) { control = s; } }; void dead_control_remover::visit_block (block* b) { vector& vs = b->statements; if (vs.size() == 0) /* else (size_t) size()-1 => very big */ return; for (size_t i = 0; i < vs.size() - 1; ++i) { vs[i]->visit (this); if (vs[i] == control) { session.print_warning(_("statement will never be reached"), vs[i + 1]->tok); vs.erase(vs.begin() + i + 1, vs.end()); relaxed_p = false; break; } } } static void semantic_pass_dead_control (systemtap_session& s, bool& relaxed_p) { // Let's remove code that follow unconditional control statements dead_control_remover dc (s, relaxed_p); for (unsigned i=0; ibody->visit(&dc); for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) it->second->body->visit(&dc); } // Looks for next statements in function declarations and marks // them. struct function_next_check : public traversing_visitor { functiondecl* current_function; function_next_check() : current_function(0) { } void visit_next_statement(next_statement*) { current_function->has_next = true; } void visit_embeddedcode(embeddedcode* s) { if (s->code.find("STAP_NEXT;") != string::npos) current_function->has_next = true; } }; struct dead_overload_remover : public traversing_visitor { systemtap_session& s; bool& relaxed_p; dead_overload_remover(systemtap_session& sess, bool& r) : s(sess), relaxed_p(r) { } void visit_functioncall(functioncall* e); }; void dead_overload_remover::visit_functioncall(functioncall *e) { unsigned reachable = 1; bool chained = true; for (unsigned fd = 0; fd < e->referents.size(); fd++) { functiondecl* r = e->referents[fd]; // Note that this is not a sound inference but it suffices for most // cases. It may be the case that there is a 'next' statement in the // function that will never be executed by the control flow. // We simply use the presence of a 'next' statement as an indicator // of a potential fall through. Once a function can't be 'nexted' the // remaining functions are unreachable. if (chained && r->has_next) reachable++; else chained = false; } if (reachable < e->referents.size()) { for (unsigned fd = reachable; fd < e->referents.size(); fd++) { functiondecl* r = e->referents[fd]; s.print_warning(_("instance of overloaded function will " "never be reached"), r->tok); } e->referents.erase(e->referents.begin()+reachable, e->referents.end()); relaxed_p = false; } } static void semantic_pass_overload(systemtap_session& s, bool& relaxed_p) { set function_next; function_next_check fnc; for (auto it = s.functions.begin(); it != s.functions.end(); ++it) { functiondecl* fn = it->second; fnc.current_function = fn; fn->body->visit(&fnc); } for (auto it = s.probes.begin(); it != s.probes.end(); ++it) { dead_overload_remover ovr(s, relaxed_p); (*it)->body->visit(&ovr); } for (auto it = s.functions.begin(); it != s.functions.end(); ++it) { dead_overload_remover ovr(s, relaxed_p); it->second->body->visit(&ovr); } } struct duplicate_function_remover: public functioncall_traversing_visitor { systemtap_session& s; map& duplicate_function_map; duplicate_function_remover(systemtap_session& sess, map&dfm): s(sess), duplicate_function_map(dfm) {}; void visit_functioncall (functioncall* e); }; void duplicate_function_remover::visit_functioncall (functioncall *e) { functioncall_traversing_visitor::visit_functioncall (e); // If any of the current function call references points to a function that // is a duplicate, replace it. for (unsigned i = 0; i < e->referents.size(); i++) { functiondecl* referent = e->referents[i]; if (duplicate_function_map.count(referent) != 0) { if (s.verbose>2) clog << _F("Changing %s reference to %s reference\n", referent->unmangled_name.to_string().c_str(), duplicate_function_map[referent]->unmangled_name.to_string().c_str()); e->tok = duplicate_function_map[referent]->tok; e->function = duplicate_function_map[referent]->name; e->referents[i] = duplicate_function_map[referent]; } } } static string get_functionsig (functiondecl* f) { ostringstream s; // Get the "name:args body" of the function in s. We have to // include the args since the function 'x1(a, b)' is different than // the function 'x2(b, a)' even if the bodies of the two functions // are exactly the same. f->printsig(s); f->body->print(s); // printsig puts f->name + ':' on the front. Remove this // (otherwise, functions would never compare equal). string str = s.str().erase(0, f->unmangled_name.size() + 1); // Return the function signature. return str; } void semantic_pass_opt6 (systemtap_session& s, bool& relaxed_p) { // Walk through all the functions, looking for duplicates. map functionsig_map; map duplicate_function_map; vector newly_zapped_functions; for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { functiondecl *fd = it->second; string functionsig = get_functionsig(fd); if (functionsig_map.count(functionsig) == 0) { // This function is unique. Remember it. functionsig_map[functionsig] = fd; } else { // This function is a duplicate. duplicate_function_map[fd] = functionsig_map[functionsig]; newly_zapped_functions.push_back (fd); relaxed_p = false; } } for (unsigned i=0; i::iterator where = s.functions.find (newly_zapped_functions[i]->name); assert (where != s.functions.end()); s.functions.erase (where); } // If we have duplicate functions, traverse down the tree, replacing // the appropriate function calls. // duplicate_function_remover::visit_functioncall() handles the // details of replacing the function calls. if (duplicate_function_map.size() != 0) { duplicate_function_remover dfr (s, duplicate_function_map); for (unsigned i=0; i < s.probes.size(); i++) s.probes[i]->body->visit(&dfr); } } struct stable_analysis: public nop_visitor { bool stable; stable_analysis(): stable(false) {}; void visit_embeddedcode (embeddedcode* s); }; void stable_analysis::visit_embeddedcode (embeddedcode* s) { if (s->tagged_p("/* stable */")) stable = true; if (stable && !s->tagged_p("/* pure */")) throw SEMANTIC_ERROR(_("stable function must also be /* pure */"), s->tok); } // Examines entire subtree for any stable functioncalls. struct stable_finder: public traversing_visitor { bool stable; set& stable_fcs; stable_finder(set&s): stable(false), stable_fcs(s) {}; void visit_functioncall (functioncall* e); }; void stable_finder::visit_functioncall (functioncall* e) { if (stable_fcs.find(e->function) != stable_fcs.end()) stable = true; traversing_visitor::visit_functioncall(e); } // Examines current level of block for stable functioncalls. // Does not descend into sublevels. struct level_check: public traversing_visitor { bool stable; set& stable_fcs; level_check(set& s): stable(false), stable_fcs(s) {}; void visit_block (block* s); void visit_try_block (try_block *s); void visit_if_statement (if_statement* s); void visit_for_loop (for_loop* s); void visit_foreach_loop (foreach_loop* s); void visit_functioncall (functioncall* s); }; void level_check::visit_block (block*) { } void level_check::visit_try_block (try_block* s) { if (s->catch_error_var) s->catch_error_var->visit(this); } void level_check::visit_if_statement (if_statement* s) { s->condition->visit(this); } void level_check::visit_for_loop (for_loop* s) { if (s->init) s->init->visit(this); s->cond->visit(this); if (s->incr) s->incr->visit(this); } void level_check::visit_foreach_loop (foreach_loop* s) { s->base->visit(this); for (unsigned i=0; iindexes.size(); i++) s->indexes[i]->visit(this); if (s->value) s->value->visit(this); if (s->limit) s->limit->visit(this); } void level_check::visit_functioncall (functioncall* e) { if (stable_fcs.find(e->function) != stable_fcs.end()) stable = true; traversing_visitor::visit_functioncall(e); } struct stable_functioncall_visitor: public update_visitor { systemtap_session& session; functiondecl* current_function; derived_probe* current_probe; set& stable_fcs; set scope_vars; map new_vars; vector > new_stmts; unsigned loop_depth; block* top_scope; block* curr_scope; stable_functioncall_visitor(systemtap_session& s, set& sfc): session(s), current_function(0), current_probe(0), stable_fcs(sfc), loop_depth(0), top_scope(0), curr_scope(0) {}; statement* convert_stmt(statement* s); void visit_block (block* s); void visit_try_block (try_block* s); void visit_if_statement (if_statement* s); void visit_for_loop (for_loop* s); void visit_foreach_loop (foreach_loop* s); void visit_functioncall (functioncall* e); }; statement* stable_functioncall_visitor::convert_stmt (statement* s) { if (top_scope == 0 && (dynamic_cast(s) || dynamic_cast(s))) { stable_finder sf(stable_fcs); s->visit(&sf); if (sf.stable) { block* b = new block; b->tok = s->tok; b->statements.push_back(s); return b; } } else if (top_scope == 0 && !dynamic_cast(s)) { level_check lc(stable_fcs); s->visit(&lc); if (lc.stable) { block* b = new block; b->tok = s->tok; b->statements.push_back(s); return b; } } return s; } void stable_functioncall_visitor::visit_block (block* s) { block* prev_top_scope = top_scope; block* prev_scope = curr_scope; if (loop_depth == 0) top_scope = s; curr_scope = s; set current_vars = scope_vars; update_visitor::visit_block(s); if (loop_depth == 0) top_scope = prev_top_scope; curr_scope = prev_scope; scope_vars = current_vars; } void stable_functioncall_visitor::visit_try_block (try_block* s) { if (s->try_block) s->try_block = convert_stmt(s->try_block); replace(s->try_block); replace(s->catch_error_var); if (s->catch_block) s->catch_block = convert_stmt(s->catch_block); replace(s->catch_block); provide(s); } void stable_functioncall_visitor::visit_if_statement (if_statement* s) { block* prev_top_scope = top_scope; if (loop_depth == 0) top_scope = 0; replace(s->condition); s->thenblock = convert_stmt(s->thenblock); replace(s->thenblock); if (loop_depth == 0) top_scope = 0; if (s->elseblock) s->elseblock = convert_stmt(s->elseblock); replace(s->elseblock); provide(s); top_scope = prev_top_scope; } void stable_functioncall_visitor::visit_for_loop (for_loop* s) { replace(s->init); replace(s->cond); replace(s->incr); loop_depth++; s->block = convert_stmt(s->block); replace(s->block); loop_depth--; provide(s); } void stable_functioncall_visitor::visit_foreach_loop (foreach_loop* s) { for (unsigned i = 0; i < s->indexes.size(); ++i) replace(s->indexes[i]); replace(s->base); replace(s->value); replace(s->limit); loop_depth++; s->block = convert_stmt(s->block); replace(s->block); loop_depth--; provide(s); } void stable_functioncall_visitor::visit_functioncall (functioncall* e) { for (unsigned i = 0; i < e->args.size(); ++i) replace (e->args[i]); if (stable_fcs.find(e->function) != stable_fcs.end()) { string name("__stable_"); name.append(e->function).append("_value"); // Variable potentially not in scope since it is in a sibling block if (scope_vars.find(e->function) == scope_vars.end()) { if (new_vars.find(e->function) == new_vars.end()) { // New variable declaration to store result of function call vardecl* v = new vardecl; v->unmangled_name = v->name = name; v->tok = e->tok; v->set_arity(0, e->tok); v->type = e->type; if (current_function) current_function->locals.push_back(v); else current_probe->locals.push_back(v); new_vars[e->function] = v; } symbol* sym = new symbol; sym->name = name; sym->tok = e->tok; sym->referent = new_vars[e->function]; sym->type = e->type; functioncall* fc = new functioncall; fc->tok = e->tok; fc->function = e->function; fc->referents = e->referents; fc->type = e->type; assignment* a = new assignment; a->tok = e->tok; a->op = "="; a->left = sym; a->right = fc; a->type = e->type; expr_statement* es = new expr_statement; es->tok = e->tok; es->value = a; // Store location of the block to put new declaration. if (loop_depth != 0) { assert(top_scope); new_stmts.push_back(make_pair(es,top_scope)); } else { assert(curr_scope); new_stmts.push_back(make_pair(es,curr_scope)); } scope_vars.insert(e->function); provide(sym); } else { symbol* sym = new symbol; sym->name = name; sym->tok = e->tok; sym->referent = new_vars[e->function]; sym->type = e->type; provide(sym); } return; } provide(e); } // Cache stable embedded-c functioncall results and replace // all calls with same name using that value to reduce duplicate // functioncall overhead. Functioncalls are pulled out of any // top-level loops and put into if/try blocks. void semantic_pass_opt7(systemtap_session& s) { set stable_fcs; for (map::iterator it = s.functions.begin(); it != s.functions.end(); ++it) { functiondecl* fn = (*it).second; stable_analysis sa; fn->body->visit(&sa); if (sa.stable && fn->formal_args.size() == 0) stable_fcs.insert(fn->name); } for (vector::iterator it = s.probes.begin(); it != s.probes.end(); ++it) { stable_functioncall_visitor t(s, stable_fcs); t.current_probe = *it; (*it)->body = t.convert_stmt((*it)->body); t.replace((*it)->body); for (vector >::iterator st = t.new_stmts.begin(); st != t.new_stmts.end(); ++st) st->second->statements.insert(st->second->statements.begin(), st->first); } for (map::iterator it = s.functions.begin(); it != s.functions.end(); ++it) { functiondecl* fn = (*it).second; stable_functioncall_visitor t(s, stable_fcs); t.current_function = fn; fn->body = t.convert_stmt(fn->body); t.replace(fn->body); for (vector >::iterator st = t.new_stmts.begin(); st != t.new_stmts.end(); ++st) st->second->statements.insert(st->second->statements.begin(), st->first); } } static int semantic_pass_optimize1 (systemtap_session& s) { // In this pass, we attempt to rewrite probe/function bodies to // eliminate some blatantly unnecessary code. This is run before // type inference, but after symbol resolution and derived_probe // creation. We run an outer "relaxation" loop that repeats the // optimizations until none of them find anything to remove. int rc = 0; // Save the old value of suppress_warnings, as we will be changing // it below. save_and_restore suppress_warnings(& s.suppress_warnings); bool relaxed_p = false; unsigned iterations = 0; while (! relaxed_p) { assert_no_interrupts(); relaxed_p = true; // until proven otherwise // If the verbosity is high enough, always print warnings (overrides -w), // or if not, always suppress warnings for every itteration after the first. if(s.verbose > 2) s.suppress_warnings = false; else if (iterations > 0) s.suppress_warnings = true; if (!s.unoptimized) { semantic_pass_opt1 (s, relaxed_p); semantic_pass_opt2 (s, relaxed_p, iterations); // produce some warnings only on iteration=0 semantic_pass_opt3 (s, relaxed_p); semantic_pass_opt4 (s, relaxed_p); semantic_pass_opt5 (s, relaxed_p); } // For listing mode, we need const-folding regardless of optimization so // that @defined expressions can be properly resolved. PR11360 // We also want it in case variables are used in if/case expressions, // so enable always. PR11366 // rc is incremented if there is an error that got reported. rc += semantic_pass_const_fold (s, relaxed_p); if (!s.unoptimized) semantic_pass_dead_control (s, relaxed_p); if (!s.unoptimized) semantic_pass_overload (s, relaxed_p); iterations ++; } return rc; } static int semantic_pass_optimize2 (systemtap_session& s) { // This is run after type inference. We run an outer "relaxation" // loop that repeats the optimizations until none of them find // anything to remove. int rc = 0; // Save the old value of suppress_warnings, as we will be changing // it below. save_and_restore suppress_warnings(& s.suppress_warnings); bool relaxed_p = false; unsigned iterations = 0; while (! relaxed_p) { assert_no_interrupts(); relaxed_p = true; // until proven otherwise // If the verbosity is high enough, always print warnings (overrides -w), // or if not, always suppress warnings for every itteration after the first. if(s.verbose > 2) s.suppress_warnings = false; else if (iterations > 0) s.suppress_warnings = true; if (!s.unoptimized) semantic_pass_opt6 (s, relaxed_p); iterations++; } if (!s.unoptimized) semantic_pass_opt7(s); return rc; } // ------------------------------------------------------------------------ // type resolution struct autocast_expanding_visitor: public var_expanding_visitor { typeresolution_info& ti; autocast_expanding_visitor (systemtap_session& s, typeresolution_info& ti): var_expanding_visitor(s), ti(ti) {} void resolve_functioncall (functioncall* fc) { // This is a very limited version of semantic_pass_symbols, but we're // late in the game at this point. We won't get a chance to optimize, // but for now the only functions we expect are kernel/user_string from // pretty-printing, which don't need optimization. systemtap_session& s = ti.session; size_t nfiles = s.files.size(); symresolution_info sym (s); sym.current_function = ti.current_function; sym.current_probe = ti.current_probe; fc->visit (&sym); // NB: synthetic functions get tacked onto the origin file, so we won't // see them growing s.files[]. Traverse it directly. for (unsigned i = 0; i < fc->referents.size(); i++) { functiondecl* fd = fc->referents[i]; sym.current_function = fd; sym.current_probe = 0; fd->body->visit (&sym); } while (nfiles < s.files.size()) { stapfile* dome = s.files[nfiles++]; for (size_t i = 0; i < dome->functions.size(); ++i) { functiondecl* fd = dome->functions[i]; sym.current_function = fd; sym.current_probe = 0; fd->body->visit (&sym); // NB: not adding to s.functions just yet... } } // Add only the direct functions we need. functioncall_traversing_visitor ftv; fc->visit (&ftv); for (set::iterator it = ftv.seen.begin(); it != ftv.seen.end(); ++it) { functiondecl* fd = *it; pair::iterator,bool> inserted = s.functions.insert (make_pair (fd->name, fd)); if (!inserted.second && inserted.first->second != fd) throw SEMANTIC_ERROR (_F("resolved function '%s' conflicts with an existing function", fd->unmangled_name.to_string().c_str()), fc->tok); } } void visit_autocast_op (autocast_op* e) { const bool lvalue = is_active_lvalue (e); const exp_type_ptr& details = e->operand->type_details; if (details && !e->saved_conversion_error) { functioncall* fc = details->expand (e, lvalue); if (fc) { ti.num_newly_resolved++; resolve_functioncall (fc); if (lvalue) provide_lvalue_call (fc); fc->visit (this); return; } } var_expanding_visitor::visit_autocast_op (e); } }; struct initial_typeresolution_info : public typeresolution_info { initial_typeresolution_info (systemtap_session& s): typeresolution_info(s) {} // these expressions are not supposed to make its way to the typeresolution // pass. they probably get substituted/replaced, but since this is an initial pass // and not all substitutions are done, replace the functions that throw errors. void visit_target_symbol (target_symbol*) {} void visit_atvar_op (atvar_op*) {} void visit_defined_op (defined_op*) {} void visit_entry_op (entry_op*) {} void visit_cast_op (cast_op*) {} }; static int initial_typeres_pass(systemtap_session& s) { // minimal type resolution based off of semantic_pass_types(), without // checking for complete type resolutions or autocast expanding initial_typeresolution_info ti(s); // Globals never have detailed types. // If we null them now, then all remaining vardecls can be detailed. for (unsigned j=0; jtype_details) gd->type_details = ti.null_type; } ti.assert_resolvability = false; while (1) { assert_no_interrupts(); ti.num_newly_resolved = 0; ti.num_still_unresolved = 0; ti.num_available_autocasts = 0; for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { assert_no_interrupts(); functiondecl* fd = it->second; ti.current_probe = 0; ti.current_function = fd; ti.t = pe_unknown; fd->body->visit (& ti); } for (unsigned j=0; jbody->visit (& ti); probe_point* pp = pn->sole_location(); if (pp->condition) { ti.current_function = 0; ti.current_probe = 0; ti.t = pe_long; // NB: expected type pp->condition->visit (& ti); } } if (ti.num_newly_resolved == 0) // converged { // take into account that if there are mismatches, we'd want to know // about them incase they get whisked away, later in this process if (!ti.assert_resolvability && ti.mismatch_complexity > 0) // found a mismatch!! { ti.assert_resolvability = true; // report errors if (s.verbose > 0) ti.mismatch_complexity = 1; // print out mismatched but not unresolved type mismatches } else break; } else ti.mismatch_complexity = 0; } return s.num_errors(); } static int semantic_pass_types (systemtap_session& s) { int rc = 0; // next pass: type inference unsigned iterations = 0; typeresolution_info ti (s); // Globals never have detailed types. // If we null them now, then all remaining vardecls can be detailed. for (unsigned j=0; jtype_details) gd->type_details = ti.null_type; } ti.assert_resolvability = false; while (1) { assert_no_interrupts(); iterations ++; ti.num_newly_resolved = 0; ti.num_still_unresolved = 0; ti.num_available_autocasts = 0; for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) try { assert_no_interrupts(); functiondecl* fd = it->second; ti.current_probe = 0; ti.current_function = fd; ti.t = pe_unknown; fd->body->visit (& ti); // NB: we don't have to assert a known type for // functions here, to permit a "void" function. // The translator phase will omit the "retvalue". // // if (fd->type == pe_unknown) // ti.unresolved (fd->tok); for (unsigned i=0; i < fd->locals.size(); ++i) ti.check_local (fd->locals[i]); // Check and run the autocast expanding visitor. if (ti.num_available_autocasts > 0) { autocast_expanding_visitor aev (s, ti); aev.replace (fd->body); // PR18079, rerun the const-folder / dead-block-remover // if autocast evaluation enabled a @defined() if (! aev.relaxed()) { bool relaxed_p = true; const_folder cf (s, relaxed_p); cf.replace (fd->body); if (! s.unoptimized) { dead_control_remover dc (s, relaxed_p); fd->body->visit (&dc); } (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag } ti.num_available_autocasts = 0; } } catch (const semantic_error& e) { throw SEMANTIC_ERROR(_F("while processing function %s", it->second->unmangled_name.to_string().c_str())).set_chain(e); } for (unsigned j=0; jbody->visit (& ti); for (unsigned i=0; i < pn->locals.size(); ++i) ti.check_local (pn->locals[i]); // Check and run the autocast expanding visitor. if (ti.num_available_autocasts > 0) { autocast_expanding_visitor aev (s, ti); var_expand_const_fold_loop (s, pn->body, aev); // PR18079, rerun the const-folder / dead-block-remover // if autocast evaluation enabled a @defined() if (! s.unoptimized) { bool relaxed_p; dead_control_remover dc (s, relaxed_p); pn->body->visit (&dc); (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag } ti.num_available_autocasts = 0; } probe_point* pp = pn->sole_location(); if (pp->condition) { ti.current_function = 0; ti.current_probe = 0; ti.t = pe_long; // NB: expected type pp->condition->visit (& ti); } } catch (const semantic_error& e) { throw SEMANTIC_ERROR(_F("while processing probe %s", s.probes[j]->derived_locations(false).c_str())).set_chain(e); } for (unsigned j=0; jtype == pe_unknown) ti.unresolved (gd->tok); if(gd->arity == 0 && gd->wrap == true) { throw SEMANTIC_ERROR(_("wrapping not supported for scalars"), gd->tok); } } if (ti.num_newly_resolved == 0) // converged { if (ti.num_still_unresolved == 0) break; // successfully else if (! ti.assert_resolvability) { // PR18079, before we go asserting anything, try to nullify any // still-unresolved @defined ops. bool relaxed_p = true; const_folder cf (s, relaxed_p, true); // NB: true: collapse remaining @defined's for (auto it = s.probes.begin(); it != s.probes.end(); ++it) cf.replace ((*it)->body); for (auto it = s.functions.begin(); it != s.functions.end(); ++it) cf.replace (it->second->body); if (! s.unoptimized) semantic_pass_dead_control (s, relaxed_p); if (! relaxed_p) ti.mismatch_complexity = 0; // reset for next pass else { ti.assert_resolvability = true; // last pass, with error msgs if (s.verbose > 0) ti.mismatch_complexity = 0; // print every kind of mismatch } } else { // unsuccessful conclusion rc ++; break; } } else ti.mismatch_complexity = 0; // reset for next pass } return rc + s.num_errors(); } struct exp_type_null : public exp_type_details { uintptr_t id () const { return 0; } bool expandable() const { return false; } functioncall *expand(autocast_op*, bool) { return NULL; } }; typeresolution_info::typeresolution_info (systemtap_session& s): session(s), num_newly_resolved(0), num_still_unresolved(0), num_available_autocasts(0), assert_resolvability(false), mismatch_complexity(0), current_function(0), current_probe(0), t(pe_unknown), null_type(make_shared()) { } void typeresolution_info::visit_literal_number (literal_number* e) { assert (e->type == pe_long); if ((t == e->type) || (t == pe_unknown)) return; mismatch (e->tok, t, e->type); } void typeresolution_info::visit_literal_string (literal_string* e) { assert (e->type == pe_string); if ((t == e->type) || (t == pe_unknown)) return; mismatch (e->tok, t, e->type); } void typeresolution_info::visit_logical_or_expr (logical_or_expr *e) { visit_binary_expression (e); } void typeresolution_info::visit_logical_and_expr (logical_and_expr *e) { visit_binary_expression (e); } void typeresolution_info::visit_regex_query (regex_query *e) { // NB: result of regex query is an integer! if (t == pe_stats || t == pe_string) invalid (e->tok, t); t = pe_string; e->left->visit (this); t = pe_string; e->right->visit (this); // parser ensures this is a literal known at compile time if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_comparison (comparison *e) { // NB: result of any comparison is an integer! if (t == pe_stats || t == pe_string) invalid (e->tok, t); t = (e->right->type != pe_unknown) ? e->right->type : pe_unknown; e->left->visit (this); t = (e->left->type != pe_unknown) ? e->left->type : pe_unknown; e->right->visit (this); if (e->left->type != pe_unknown && e->right->type != pe_unknown && e->left->type != e->right->type) mismatch (e); if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_concatenation (concatenation *e) { if (t != pe_unknown && t != pe_string) invalid (e->tok, t); t = pe_string; e->left->visit (this); t = pe_string; e->right->visit (this); if (e->type == pe_unknown) { e->type = pe_string; resolved (e->tok, e->type); } } void typeresolution_info::visit_assignment (assignment *e) { if (t == pe_stats) invalid (e->tok, t); if (e->op == "<<<") // stats aggregation { if (t == pe_string) invalid (e->tok, t); t = pe_stats; e->left->visit (this); t = pe_long; e->right->visit (this); if (e->type == pe_unknown || e->type == pe_stats) { e->type = pe_long; resolved (e->tok, e->type); } } else if (e->left->type == pe_stats) invalid (e->left->tok, e->left->type); else if (e->right->type == pe_stats) invalid (e->right->tok, e->right->type); else if (e->op == "+=" || // numeric only e->op == "-=" || e->op == "*=" || e->op == "/=" || e->op == "%=" || e->op == "&=" || e->op == "^=" || e->op == "|=" || e->op == "<<=" || e->op == ">>=" || false) { visit_binary_expression (e); } else if (e->op == ".=" || // string only false) { if (t == pe_long || t == pe_stats) invalid (e->tok, t); t = pe_string; e->left->visit (this); t = pe_string; e->right->visit (this); if (e->type == pe_unknown) { e->type = pe_string; resolved (e->tok, e->type); } } else if (e->op == "=") // overloaded = for string & numeric operands { // logic similar to ternary_expression exp_type sub_type = t; // Infer types across the l/r values if (sub_type == pe_unknown && e->type != pe_unknown) sub_type = e->type; t = (sub_type != pe_unknown) ? sub_type : (e->right->type != pe_unknown) ? e->right->type : pe_unknown; e->left->visit (this); t = (sub_type != pe_unknown) ? sub_type : (e->left->type != pe_unknown) ? e->left->type : pe_unknown; e->right->visit (this); if ((sub_type != pe_unknown) && (e->type == pe_unknown)) { e->type = sub_type; resolved (e->tok, e->type); } if ((sub_type == pe_unknown) && (e->left->type != pe_unknown)) { e->type = e->left->type; resolved (e->tok, e->type); } if (e->left->type != pe_unknown && e->right->type != pe_unknown && e->left->type != e->right->type) mismatch (e); // Propagate type details from the RHS to the assignment if (e->type == e->right->type && e->right->type_details && !e->type_details) resolved_details(e->right->type_details, e->type_details); // Propagate type details from the assignment to the LHS if (e->type == e->left->type && e->type_details) { if (e->left->type_details && *e->left->type_details != *e->type_details && *e->left->type_details != *null_type) resolved_details(null_type, e->left->type_details); else if (!e->left->type_details) resolved_details(e->type_details, e->left->type_details); } } else throw SEMANTIC_ERROR (_("unsupported assignment operator ") + (string)e->op); } void typeresolution_info::visit_embedded_expr (embedded_expr *e) { if (e->type == pe_unknown) { if (e->code.find ("/* string */") != string::npos) e->type = pe_string; else // if (e->code.find ("/* long */") != string::npos) e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_binary_expression (binary_expression* e) { if (t == pe_stats || t == pe_string) invalid (e->tok, t); t = pe_long; e->left->visit (this); t = pe_long; e->right->visit (this); if (e->left->type != pe_unknown && e->right->type != pe_unknown && e->left->type != e->right->type) mismatch (e); if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_pre_crement (pre_crement *e) { visit_unary_expression (e); } void typeresolution_info::visit_post_crement (post_crement *e) { visit_unary_expression (e); } void typeresolution_info::visit_unary_expression (unary_expression* e) { if (t == pe_stats || t == pe_string) invalid (e->tok, t); t = pe_long; e->operand->visit (this); if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_ternary_expression (ternary_expression* e) { exp_type sub_type = t; t = pe_long; e->cond->visit (this); // Infer types across the true/false arms of the ternary expression. if (sub_type == pe_unknown && e->type != pe_unknown) sub_type = e->type; t = sub_type; e->truevalue->visit (this); t = sub_type; e->falsevalue->visit (this); if ((sub_type == pe_unknown) && (e->type != pe_unknown)) ; // already resolved else if ((sub_type != pe_unknown) && (e->type == pe_unknown)) { e->type = sub_type; resolved (e->tok, e->type); } else if ((sub_type == pe_unknown) && (e->truevalue->type != pe_unknown)) { e->type = e->truevalue->type; resolved (e->tok, e->type); } else if ((sub_type == pe_unknown) && (e->falsevalue->type != pe_unknown)) { e->type = e->falsevalue->type; resolved (e->tok, e->type); } else if (e->type != sub_type) mismatch (e->tok, sub_type, e->type); // Propagate type details from both true/false branches if (!e->type_details && e->type == e->truevalue->type && e->type == e->falsevalue->type && e->truevalue->type_details && e->falsevalue->type_details && *e->truevalue->type_details == *e->falsevalue->type_details) resolved_details(e->truevalue->type_details, e->type_details); } template void resolve_2types (Referrer* referrer, Referent* referent, typeresolution_info* r, exp_type t, bool accept_unknown = false) { exp_type& re_type = referrer->type; const token* re_tok = referrer->tok; exp_type& te_type = referent->type; if (t != pe_unknown && re_type == t && re_type == te_type) ; // do nothing: all three e->types in agreement else if (t == pe_unknown && re_type != pe_unknown && re_type == te_type) ; // do nothing: two known e->types in agreement else if (re_type != pe_unknown && te_type != pe_unknown && re_type != te_type) r->mismatch (re_tok, re_type, referent); // referrer-referent else if (re_type != pe_unknown && t != pe_unknown && re_type != t) r->mismatch (re_tok, t, referent); // referrer-t else if (te_type != pe_unknown && t != pe_unknown && te_type != t) r->mismatch (re_tok, t, referent); // referent-t else if (re_type == pe_unknown && t != pe_unknown) { // propagate from upstream re_type = t; r->resolved (re_tok, re_type); // catch re_type/te_type mismatch later } else if (re_type == pe_unknown && te_type != pe_unknown) { // propagate from referent re_type = te_type; r->resolved (re_tok, re_type); // catch re_type/t mismatch later } else if (re_type != pe_unknown && te_type == pe_unknown) { // propagate to referent te_type = re_type; r->resolved (re_tok, re_type, referent); // catch re_type/t mismatch later } else if (! accept_unknown) r->unresolved (re_tok); } void typeresolution_info::visit_symbol (symbol* e) { if (e->referent == 0) throw SEMANTIC_ERROR (_F("internal error: unresolved symbol '%s'", e->name.to_string().c_str()), e->tok); resolve_2types (e, e->referent, this, t); if (e->type == e->referent->type) { // If both have type details, then they either must agree; // otherwise force them both to null. if (e->type_details && e->referent->type_details && *e->type_details != *e->referent->type_details) { resolved_details(null_type, e->type_details); resolved_details(null_type, e->referent->type_details); } else if (e->type_details && !e->referent->type_details) resolved_details(e->type_details, e->referent->type_details); else if (!e->type_details && e->referent->type_details) resolved_details(e->referent->type_details, e->type_details); } } void typeresolution_info::visit_target_symbol (target_symbol* e) { // This occurs only if a target symbol was not resolved over in // tapset.cxx land, that error was properly suppressed, and the // later unused-expression-elimination pass didn't get rid of it // either. So we have a target symbol that is believed to be of // genuine use, yet unresolved by the provider. // // PR18079, or it can happen if a $target expression is nested within // a @defined() test that has not yet been resolved (but can be soon). if (! assert_resolvability) { num_still_unresolved ++; return; } if (session.verbose > 2) { clog << _("Resolution problem with "); if (current_function) { clog << "function " << current_function->name << endl; current_function->body->print (clog); clog << endl; } else if (current_probe) { clog << "probe " << *current_probe->sole_location() << endl; current_probe->body->print (clog); clog << endl; } else //TRANSLATORS: simply saying not an issue with a probe or function clog << _("other") << endl; } if (e->saved_conversion_error) throw (* (e->saved_conversion_error)); else throw SEMANTIC_ERROR(_("unresolved target-symbol expression"), e->tok); } void typeresolution_info::visit_atvar_op (atvar_op* e) { // This occurs only if an @var() was not resolved over in // tapset.cxx land, that error was properly suppressed, and the // later unused-expression-elimination pass didn't get rid of it // either. So we have an @var() that is believed to be of // genuine use, yet unresolved by the provider. if (session.verbose > 2) { clog << _("Resolution problem with "); if (current_function) { clog << "function " << current_function->name << endl; current_function->body->print (clog); clog << endl; } else if (current_probe) { clog << "probe " << *current_probe->sole_location() << endl; current_probe->body->print (clog); clog << endl; } else //TRANSLATORS: simply saying not an issue with a probe or function clog << _("other") << endl; } if (e->saved_conversion_error) throw (* (e->saved_conversion_error)); else throw SEMANTIC_ERROR(_("unresolved @var() expression"), e->tok); } void typeresolution_info::visit_defined_op (defined_op* e) { // PR18079: if a @defined is still around, it may have a parameter that // wasn't resolvable one way or another earlier. Maybe an autocast_op. // Let's give it a visit just in case. e->operand->visit(this); if (assert_resolvability) throw SEMANTIC_ERROR(_("unexpected @defined"), e->tok); else num_still_unresolved ++; } void typeresolution_info::visit_entry_op (entry_op* e) { throw SEMANTIC_ERROR(_("@entry is only valid in .return probes"), e->tok); } void typeresolution_info::visit_cast_op (cast_op* e) { // Like target_symbol, a cast_op shouldn't survive this far // unless it was not resolved and its value is really needed. if (e->saved_conversion_error) throw (* (e->saved_conversion_error)); else throw SEMANTIC_ERROR(_F("type definition '%s' not found in '%s'", e->type_name.to_string().c_str(), e->module.to_string().c_str()), e->tok); } void typeresolution_info::visit_autocast_op (autocast_op* e) { // Like cast_op, a implicit autocast_op shouldn't survive this far // unless it was not resolved and its value is really needed. if (assert_resolvability && e->saved_conversion_error) throw (* (e->saved_conversion_error)); else if (assert_resolvability) throw SEMANTIC_ERROR(_("unknown type in dereference"), e->tok); t = pe_long; e->operand->visit (this); num_still_unresolved++; if (e->operand->type_details && e->operand->type_details->expandable()) num_available_autocasts++; } void typeresolution_info::visit_perf_op (perf_op* e) { // A perf_op should already be resolved if (t == pe_stats || t == pe_string) invalid (e->tok, t); e->type = pe_long; // XXX: ... but but but ... ::visit_defined_op interprets this ->type // as meaning that @defined(@perf("JUNK JUNK JUNK")) is valid. // The dwarf_var_expanding_visitor::visit_perf_op() code that validates // the JUNK parameter is not even called in time. // (There is no real need to visit our operand - by parser // construction, it's always a string literal, with its type already // set.) t = pe_string; e->operand->visit (this); } void typeresolution_info::visit_arrayindex (arrayindex* e) { symbol *array = NULL; hist_op *hist = NULL; classify_indexable(e->base, array, hist); // Every hist_op has type [int]:int, that is to say, every hist_op // is a pseudo-one-dimensional integer array type indexed by // integers (bucket numbers). if (hist) { if (e->indexes.size() != 1) unresolved (e->tok); t = pe_long; e->indexes[0]->visit (this); if (e->indexes[0]->type != pe_long) unresolved (e->tok); hist->visit (this); if (e->type != pe_long) { e->type = pe_long; resolved (e->tok, e->type); } return; } // Now we are left with "normal" map inference and index checking. assert (array); assert (array->referent != 0); resolve_2types (e, array->referent, this, t); // now resolve the array indexes // if (e->referent->index_types.size() == 0) // // redesignate referent as array // e->referent->set_arity (e->indexes.size ()); if (e->indexes.size() != array->referent->index_types.size()) unresolved (e->tok); // symbol resolution should prevent this else for (unsigned i=0; iindexes.size(); i++) { if (e->indexes[i]) { expression* ee = e->indexes[i]; exp_type& ft = array->referent->index_types [i]; t = ft; ee->visit (this); exp_type at = ee->type; if ((at == pe_string || at == pe_long) && ft == pe_unknown) { // propagate to formal type ft = at; resolved (ee->tok, ft, array->referent, i); } if (at == pe_stats) invalid (ee->tok, at); if (ft == pe_stats) invalid (ee->tok, ft); if (at != pe_unknown && ft != pe_unknown && ft != at) mismatch (ee->tok, ee->type, array->referent, i); if (at == pe_unknown) unresolved (ee->tok); } } } void typeresolution_info::visit_functioncall (functioncall* e) { if (e->referents.empty()) throw SEMANTIC_ERROR (_F("internal error: unresolved function call to '%s'", e->function.to_string().c_str()), e->tok); exp_type original = t; for (unsigned fd = 0; fd < e->referents.size(); fd++) { t = original; // type may be changed by overloaded functions so restore it functiondecl* referent = e->referents[fd]; resolve_2types (e, referent, this, t, true); // accept unknown type if (e->type == pe_stats) invalid (e->tok, e->type); const exp_type_ptr& func_type = referent->type_details; if (func_type && referent->type == e->type && (!e->type_details || *func_type != *e->type_details)) resolved_details(referent->type_details, e->type_details); // now resolve the function parameters if (e->args.size() != referent->formal_args.size()) unresolved (e->tok); // symbol resolution should prevent this else for (unsigned i=0; iargs.size(); i++) { expression* ee = e->args[i]; exp_type& ft = referent->formal_args[i]->type; const token* fe_tok = referent->formal_args[i]->tok; t = ft; ee->visit (this); exp_type at = ee->type; if (((at == pe_string) || (at == pe_long)) && ft == pe_unknown) { // propagate to formal arg ft = at; resolved (ee->tok, ft, referent->formal_args[i], i); } if (at == pe_stats) invalid (ee->tok, at); if (ft == pe_stats) invalid (fe_tok, ft); if (at != pe_unknown && ft != pe_unknown && ft != at) mismatch (ee->tok, ee->type, referent->formal_args[i], i); if (at == pe_unknown) unresolved (ee->tok); } } } void typeresolution_info::visit_block (block* e) { for (unsigned i=0; istatements.size(); i++) { t = pe_unknown; e->statements[i]->visit (this); } } void typeresolution_info::visit_try_block (try_block* e) { if (e->try_block) e->try_block->visit (this); if (e->catch_error_var) { t = pe_string; e->catch_error_var->visit (this); } if (e->catch_block) e->catch_block->visit (this); } void typeresolution_info::visit_embeddedcode (embeddedcode* s) { // PR11573. If we have survived thus far with a piece of embedded // code that requires uprobes, we need to track this. // // This is an odd place for this check, as opposed // to a separate 'optimization' pass, or c_unparser::visit_embeddedcode // over yonder in pass 3. However, we want to do it during pass 2 so // that cached sessions also get the uprobes treatment. if (! session.need_uprobes && s->code.find("/* pragma:uprobes */") != string::npos) { if (session.verbose > 2) clog << _("Activating uprobes support because /* pragma:uprobes */ seen.") << endl; session.need_uprobes = true; } // PR15065. Likewise, we need to detect /* pragma:tagged_dfa */ // before the gen_dfa_table pass. Again, the typechecking part of // pass 2 is a good place for this. if (! session.need_tagged_dfa && s->code.find("/* pragma:tagged_dfa */") != string::npos) { // if (session.verbose > 2) // clog << _F("Turning on DFA subexpressions, pragma:tagged_dfa found in %s", // current_function->name.c_str()) << endl; // session.need_tagged_dfa = true; throw SEMANTIC_ERROR (_("Tagged DFA support is not yet available"), s->tok); } } void typeresolution_info::visit_if_statement (if_statement* e) { t = pe_long; e->condition->visit (this); t = pe_unknown; e->thenblock->visit (this); if (e->elseblock) { t = pe_unknown; e->elseblock->visit (this); } } void typeresolution_info::visit_for_loop (for_loop* e) { t = pe_unknown; if (e->init) e->init->visit (this); t = pe_long; e->cond->visit (this); t = pe_unknown; if (e->incr) e->incr->visit (this); t = pe_unknown; e->block->visit (this); } void typeresolution_info::visit_foreach_loop (foreach_loop* e) { // See also visit_arrayindex. // This is different in that, being a statement, we can't assign // a type to the outer array, only propagate to/from the indexes // if (e->referent->index_types.size() == 0) // // redesignate referent as array // e->referent->set_arity (e->indexes.size ()); exp_type wanted_value = pe_unknown; symbol *array = NULL; hist_op *hist = NULL; classify_indexable(e->base, array, hist); if (hist) { if (e->indexes.size() != 1) unresolved (e->tok); t = pe_long; e->indexes[0]->visit (this); if (e->indexes[0]->type != pe_long) unresolved (e->tok); hist->visit (this); wanted_value = pe_long; } else { assert (array); if (e->indexes.size() != array->referent->index_types.size()) unresolved (e->tok); // symbol resolution should prevent this else { for (unsigned i=0; iindexes.size(); i++) { expression* ee = e->indexes[i]; exp_type& ft = array->referent->index_types [i]; t = ft; ee->visit (this); exp_type at = ee->type; if ((at == pe_string || at == pe_long) && ft == pe_unknown) { // propagate to formal type ft = at; resolved (ee->tok, ee->type, array->referent, i); } if (at == pe_stats) invalid (ee->tok, at); if (ft == pe_stats) invalid (ee->tok, ft); if (at != pe_unknown && ft != pe_unknown && ft != at) mismatch (ee->tok, ee->type, array->referent, i); if (at == pe_unknown) unresolved (ee->tok); } for (unsigned i=0; iarray_slice.size(); i++) if (e->array_slice[i]) { expression* ee = e->array_slice[i]; exp_type& ft = array->referent->index_types [i]; t = ft; ee->visit (this); exp_type at = ee->type; if ((at == pe_string || at == pe_long) && ft == pe_unknown) { // propagate to formal type ft = at; resolved (ee->tok, ee->type, array->referent, i); } if (at == pe_stats) invalid (ee->tok, at); if (ft == pe_stats) invalid (ee->tok, ft); if (at != pe_unknown && ft != pe_unknown && ft != at) mismatch (ee->tok, ee->type, array->referent, i); if (at == pe_unknown) unresolved (ee->tok); } } t = pe_unknown; array->visit (this); wanted_value = array->type; } if (e->value) { if (wanted_value == pe_stats) invalid(e->value->tok, wanted_value); else if (wanted_value != pe_unknown) check_arg_type(wanted_value, e->value); else { t = pe_unknown; e->value->visit (this); } } /* Prevent @sum etc. aggregate sorting on non-statistics arrays. */ if (wanted_value != pe_unknown) if (e->sort_aggr != sc_none && wanted_value != pe_stats) invalid (array->tok, wanted_value); if (e->limit) { t = pe_long; e->limit->visit (this); } t = pe_unknown; e->block->visit (this); } void typeresolution_info::visit_null_statement (null_statement*) { } void typeresolution_info::visit_expr_statement (expr_statement* e) { t = pe_unknown; e->value->visit (this); } struct delete_statement_typeresolution_info: public throwing_visitor { typeresolution_info *parent; delete_statement_typeresolution_info (typeresolution_info *p): throwing_visitor (_("invalid operand of delete expression")), parent (p) {} void visit_arrayindex (arrayindex* e) { parent->visit_arrayindex (e); } void visit_symbol (symbol* e) { exp_type ignored = pe_unknown; assert (e->referent != 0); resolve_2types (e, e->referent, parent, ignored); } }; void typeresolution_info::visit_delete_statement (delete_statement* e) { delete_statement_typeresolution_info di (this); t = pe_unknown; e->value->visit (&di); } void typeresolution_info::visit_next_statement (next_statement*) { } void typeresolution_info::visit_break_statement (break_statement*) { } void typeresolution_info::visit_continue_statement (continue_statement*) { } void typeresolution_info::visit_array_in (array_in* e) { // all unary operators only work on numerics exp_type t1 = t; t = pe_unknown; // array value can be anything e->operand->visit (this); if (t1 == pe_unknown && e->type != pe_unknown) ; // already resolved else if (t1 == pe_string || t1 == pe_stats) mismatch (e->tok, t1, pe_long); else if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } } void typeresolution_info::visit_return_statement (return_statement* e) { // This is like symbol, where the referent is // the return value of the function. // translation pass will print error if (current_function == 0) return; exp_type& e_type = current_function->type; t = current_function->type; e->value->visit (this); if (e_type != pe_unknown && e->value->type != pe_unknown && e_type != e->value->type) mismatch (e->value->tok, e->value->type, current_function); if (e_type == pe_unknown && (e->value->type == pe_long || e->value->type == pe_string)) { // propagate non-statistics from value e_type = e->value->type; resolved (e->value->tok, e_type, current_function); } if (e->value->type == pe_stats) invalid (e->value->tok, e->value->type); const exp_type_ptr& value_type = e->value->type_details; if (value_type && current_function->type == e->value->type) { exp_type_ptr& func_type = current_function->type_details; if (!func_type) // The function can take on the type details of the return value. resolved_details(value_type, func_type); else if (*func_type != *value_type && *func_type != *null_type) // Conflicting return types? NO TYPE FOR YOU! resolved_details(null_type, func_type); } } void typeresolution_info::visit_print_format (print_format* e) { size_t unresolved_args = 0; if (e->hist) { e->hist->visit(this); } else if (e->print_with_format) { // If there's a format string, we can do both inference *and* // checking. // First we extract the subsequence of formatting components // which are conversions (not just literal string components) unsigned expected_num_args = 0; std::vector components; for (size_t i = 0; i < e->components.size(); ++i) { if (e->components[i].type == print_format::conv_unspecified) throw SEMANTIC_ERROR (_("Unspecified conversion in print operator format string"), e->tok); else if (e->components[i].type == print_format::conv_literal) continue; components.push_back(e->components[i]); ++expected_num_args; if (e->components[i].widthtype == print_format::width_dynamic) ++expected_num_args; if (e->components[i].prectype == print_format::prec_dynamic) ++expected_num_args; } // Then we check that the number of conversions and the number // of args agree. if (expected_num_args != e->args.size()) throw SEMANTIC_ERROR (_("Wrong number of args to formatted print operator"), e->tok); // Then we check that the types of the conversions match the types // of the args. unsigned argno = 0; for (size_t i = 0; i < components.size(); ++i) { // Check the dynamic width, if specified if (components[i].widthtype == print_format::width_dynamic) { check_arg_type (pe_long, e->args[argno]); ++argno; } // Check the dynamic precision, if specified if (components[i].prectype == print_format::prec_dynamic) { check_arg_type (pe_long, e->args[argno]); ++argno; } exp_type wanted = pe_unknown; switch (components[i].type) { case print_format::conv_unspecified: case print_format::conv_literal: assert (false); break; case print_format::conv_pointer: case print_format::conv_number: case print_format::conv_binary: case print_format::conv_char: case print_format::conv_memory: case print_format::conv_memory_hex: wanted = pe_long; break; case print_format::conv_string: wanted = pe_string; break; } assert (wanted != pe_unknown); check_arg_type (wanted, e->args[argno]); ++argno; } } else { // Without a format string, the best we can do is require that // each argument resolve to a concrete type. for (size_t i = 0; i < e->args.size(); ++i) { t = pe_unknown; e->args[i]->visit (this); if (e->args[i]->type == pe_unknown) { unresolved (e->args[i]->tok); ++unresolved_args; } } } if (unresolved_args == 0) { if (e->type == pe_unknown) { if (e->print_to_stream) e->type = pe_long; else e->type = pe_string; resolved (e->tok, e->type); } } else { e->type = pe_unknown; unresolved (e->tok); } } void typeresolution_info::visit_stat_op (stat_op* e) { t = pe_stats; e->stat->visit (this); if (e->type == pe_unknown) { e->type = pe_long; resolved (e->tok, e->type); } else if (e->type != pe_long) mismatch (e->tok, pe_long, e->type); } void typeresolution_info::visit_hist_op (hist_op* e) { t = pe_stats; e->stat->visit (this); } void typeresolution_info::check_arg_type (exp_type wanted, expression* arg) { t = wanted; arg->visit (this); if (arg->type == pe_unknown) { arg->type = wanted; resolved (arg->tok, arg->type); } else if (arg->type != wanted) { mismatch (arg->tok, wanted, arg->type); } } void typeresolution_info::check_local (vardecl* v) { if (v->arity != 0) { num_still_unresolved ++; if (assert_resolvability) session.print_error (SEMANTIC_ERROR (_("array locals not supported, missing global declaration? "), v->tok)); } if (v->type == pe_unknown) unresolved (v->tok); else if (v->type == pe_stats) { num_still_unresolved ++; if (assert_resolvability) session.print_error (SEMANTIC_ERROR (_("stat locals not supported, missing global declaration? "), v->tok)); } else if (!(v->type == pe_long || v->type == pe_string)) invalid (v->tok, v->type); } void typeresolution_info::unresolved (const token* tok) { num_still_unresolved ++; if (assert_resolvability && mismatch_complexity <= 0) { stringstream msg; msg << _("unresolved type "); session.print_error (SEMANTIC_ERROR (msg.str(), tok)); } } void typeresolution_info::invalid (const token* tok, exp_type pe) { num_still_unresolved ++; if (assert_resolvability) { stringstream msg; if (tok && tok->type == tok_operator) msg << _("invalid operator"); else msg << _("invalid type ") << pe; session.print_error (SEMANTIC_ERROR (msg.str(), tok)); } } void typeresolution_info::mismatch (const binary_expression* e) { num_still_unresolved ++; if (assert_resolvability && mismatch_complexity <= 1) { stringstream msg; msg << _F("type mismatch: left and right sides don't agree (%s vs %s)", lex_cast(e->left->type).c_str(), lex_cast(e->right->type).c_str()); session.print_error (SEMANTIC_ERROR (msg.str(), e->tok)); } else if (!assert_resolvability) mismatch_complexity = max(1, mismatch_complexity); } /* tok token where mismatch occurred * t1 type we expected (the 'good' type) * t2 type we received (the 'bad' type) * */ void typeresolution_info::mismatch (const token* tok, exp_type t1, exp_type t2) { num_still_unresolved ++; if (assert_resolvability && mismatch_complexity <= 2) { stringstream msg; msg << _F("type mismatch: expected %s", lex_cast(t1).c_str()); if (t2 != pe_unknown) msg << _F(" but found %s", lex_cast(t2).c_str()); session.print_error (SEMANTIC_ERROR (msg.str(), tok)); } else if (!assert_resolvability) mismatch_complexity = max(2, mismatch_complexity); } /* tok token where the mismatch happened * type type we received (the 'bad' type) * decl declaration of mismatched symbol * index if index-based (array index or function arg) * */ void typeresolution_info::mismatch (const token *tok, exp_type type, const symboldecl* decl, int index) { num_still_unresolved ++; if (assert_resolvability && mismatch_complexity <= 3) { assert(decl != NULL); // If mismatch is against a function parameter from within the function // itself (rather than a function call), then the index will be -1. We // check here if the decl corresponds to one of the params and if so, // adjust the index. if (current_function != NULL && index == -1) { vector& args = current_function->formal_args; for (unsigned i = 0; i < args.size() && index < 0; i++) if (args[i] == decl) index = i; } // get the declaration's original type and token const resolved_type *original = NULL; for (vector::const_iterator it = resolved_types.begin(); it != resolved_types.end() && original == NULL; ++it) { if (it->decl == decl && it->index == index) original = &(*it); } // print basic mismatch msg if we couldn't find the decl (this can happen // for explicitly typed decls e.g. myvar:long or for fabricated (already // resolved) decls e.g. __perf_read_*) if (original == NULL) { session.print_error (SEMANTIC_ERROR ( _F("type mismatch: expected %s but found %s", lex_cast(type).c_str(), lex_cast(decl->type).c_str()), tok)); return; } // print where mismatch happened and chain with origin of decl type // resolution stringstream msg; if (index >= 0) msg << _F("index %d ", index); msg << _F("type mismatch (%s)", lex_cast(type).c_str()); semantic_error err(ERR_SRC, msg.str(), tok); stringstream chain_msg; chain_msg << _("type"); if (index >= 0) chain_msg << _F(" of index %d", index); chain_msg << _F(" was first inferred here (%s)", lex_cast(decl->type).c_str()); semantic_error chain(ERR_SRC, chain_msg.str(), original->tok); err.set_chain(chain); session.print_error (err); } else if (!assert_resolvability) mismatch_complexity = max(3, mismatch_complexity); } /* tok token where resolution occurred * type type to which we resolved * decl declaration of resolved symbol * index if index-based (array index or function arg) * */ void typeresolution_info::resolved (const token *tok, exp_type, const symboldecl* decl, int index) { num_newly_resolved ++; // We only use the resolved_types vector to give better mismatch messages // involving symbols. So don't bother adding it if we're not given a decl if (decl != NULL) { // As a fail-safe, if the decl & index is already in the vector, then // modify it instead of adding another one to ensure uniqueness. This // should never happen since we only call resolved once for each decl & // index, but better safe than sorry. (IE. if it does happen, better have // the latest resolution info for better mismatch reporting later). for (unsigned i = 0; i < resolved_types.size(); i++) { if (resolved_types[i].decl == decl && resolved_types[i].index == index) { resolved_types[i].tok = tok; return; } } resolved_type res(tok, decl, index); resolved_types.push_back(res); } } void typeresolution_info::resolved_details (const exp_type_ptr& src, exp_type_ptr& dest) { num_newly_resolved ++; dest = src; } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/elaborate.h000066400000000000000000000467311305163227500155340ustar00rootroot00000000000000// -*- C++ -*- // Copyright (C) 2005-2017 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. #ifndef ELABORATE_H #define ELABORATE_H #include "staptree.h" #include "parse.h" #include "stringtable.h" #include "session.h" #include #include //#include #include #include #include #include extern "C" { #include } #include "privilege.h" struct recursive_expansion_error : public semantic_error { ~recursive_expansion_error () throw () {} recursive_expansion_error (const std::string& msg, const token* t1=0): SEMANTIC_ERROR (msg, t1) {} recursive_expansion_error (const std::string& msg, const token* t1, const token* t2): SEMANTIC_ERROR (msg, t1, t2) {} }; // ------------------------------------------------------------------------ struct derived_probe; class match_node; struct symresolution_info: public traversing_visitor { protected: systemtap_session& session; bool unmangled_p; public: functiondecl* current_function; derived_probe* current_probe; symresolution_info (systemtap_session& s, bool omniscient_unmangled = false); vardecl* find_var (interned_string name, int arity, const token *tok); std::vector find_functions (const std::string& name, unsigned arity, const token *tok); std::set collect_functions(void); void visit_block (block *s); void visit_symbol (symbol* e); void visit_foreach_loop (foreach_loop* e); void visit_arrayindex (arrayindex* e); void visit_arrayindex (arrayindex *e, bool wildcard_ok); void visit_functioncall (functioncall* e); void visit_delete_statement (delete_statement* s); void visit_array_in (array_in *e); }; struct typeresolution_info: public visitor { typeresolution_info (systemtap_session& s); systemtap_session& session; unsigned num_newly_resolved; unsigned num_still_unresolved; unsigned num_available_autocasts; bool assert_resolvability; int mismatch_complexity; functiondecl* current_function; derived_probe* current_probe; // Holds information about a type we resolved (see PR16097) struct resolved_type { const token *tok; const symboldecl *decl; int index; resolved_type(const token *ct, const symboldecl *cdecl, int cindex): tok(ct), decl(cdecl), index(cindex) {} }; // Holds an element each time we resolve a decl. Unique by decl & index. // Possible values: // - resolved function type -> decl = functiondecl, index = -1 // - resolved function arg type -> decl = vardecl, index = index of arg // - resolved array/var type -> decl = vardecl, index = -1 // - resolved array index type -> decl = vardecl, index = index of type std::vector resolved_types; // see PR16097 void check_arg_type (exp_type wanted, expression* arg); void check_local (vardecl* v); void unresolved (const token* tok); void invalid (const token* tok, exp_type t); void mismatch (const binary_expression* e); void mismatch (const token* tok, exp_type t1, exp_type t2); void mismatch (const token* tok, exp_type type, const symboldecl* decl, int index = -1); void resolved (const token* tok, exp_type type, const symboldecl* decl = NULL, int index = -1); void resolved_details (const exp_type_ptr& src, exp_type_ptr& dest); exp_type t; // implicit parameter for nested visit call; may clobber // Upon entry to one of the visit_* calls, the incoming // `t' value is the type inferred for that node from // context. It may match or conflict with the node's // preexisting type, or it may be unknown. // Expressions with NULL type_details may be as-yet-unknown. // If they have this null_type, they're explicitly *not* a rich type. const exp_type_ptr null_type; void visit_block (block* s); void visit_try_block (try_block* s); void visit_embeddedcode (embeddedcode* s); void visit_null_statement (null_statement* s); void visit_expr_statement (expr_statement* s); void visit_if_statement (if_statement* s); void visit_for_loop (for_loop* s); void visit_foreach_loop (foreach_loop* s); void visit_return_statement (return_statement* s); void visit_delete_statement (delete_statement* s); void visit_next_statement (next_statement* s); void visit_break_statement (break_statement* s); void visit_continue_statement (continue_statement* s); void visit_literal_string (literal_string* e); void visit_literal_number (literal_number* e); void visit_embedded_expr (embedded_expr* e); void visit_binary_expression (binary_expression* e); void visit_unary_expression (unary_expression* e); void visit_pre_crement (pre_crement* e); void visit_post_crement (post_crement* e); void visit_logical_or_expr (logical_or_expr* e); void visit_logical_and_expr (logical_and_expr* e); void visit_array_in (array_in* e); void visit_regex_query (regex_query* e); void visit_comparison (comparison* e); void visit_concatenation (concatenation* e); void visit_ternary_expression (ternary_expression* e); void visit_assignment (assignment* e); void visit_symbol (symbol* e); void visit_target_symbol (target_symbol* e); void visit_arrayindex (arrayindex* e); void visit_functioncall (functioncall* e); void visit_print_format (print_format* e); void visit_stat_op (stat_op* e); void visit_hist_op (hist_op* e); void visit_cast_op (cast_op* e); void visit_autocast_op (autocast_op* e); void visit_atvar_op (atvar_op* e); void visit_defined_op (defined_op* e); void visit_entry_op (entry_op* e); void visit_perf_op (perf_op* e); }; // ------------------------------------------------------------------------ // A derived_probe is a probe that has been elaborated by // binding to a matching provider. The locations std::vector // may be smaller or larger than the base probe, since a // provider may transform it. class translator_output; struct derived_probe_group; struct derived_probe: public probe { derived_probe (probe* b, probe_point* l, bool rewrite_loc=false); probe* base; // the original parsed probe probe_point* base_pp; // the probe_point that led to this derivation derived_probe_group* group; // the group we belong to virtual ~derived_probe () {} virtual void join_group (systemtap_session& s) = 0; virtual probe_point* sole_location () const; virtual probe_point* script_location () const; virtual void printsig (std::ostream &o) const; // return arguments of probe if there virtual void getargs (std::list &) const {} void printsig_nested (std::ostream &o) const; virtual void collect_derivation_chain (std::vector &probes_list) const; virtual void collect_derivation_pp_chain (std::vector &pp_list) const; std::string derived_locations (bool firstFrom = true); virtual void print_dupe_stamp(std::ostream&) {} // To aid duplication elimination, print a stamp which uniquely identifies // the code that will be added to the probe body. (Doesn't need to be the // actual code...) virtual void initialize_probe_context_vars (translator_output*) {} // From within unparser::emit_probe, initialized any extra variables // in this probe's context locals. virtual void emit_probe_local_init (systemtap_session&, translator_output*) {} // From within unparser::emit_probe, emit any extra processing block // for this probe. virtual void emit_privilege_assertion (translator_output*); // From within unparser::emit_probe, emit any unprivileged mode // checking for this probe. public: static void emit_common_header (translator_output* o); // from c_unparser::emit_common_header // XXX: probably can move this stuff to a probe_group::emit_module_decls static void emit_process_owner_assertion (translator_output*); // From within unparser::emit_probe, emit a check that the current // process belongs to the user. static void print_dupe_stamp_unprivileged(std::ostream& o); static void print_dupe_stamp_unprivileged_process_owner(std::ostream& o); virtual bool needs_global_locks () { return true; } // by default, probes need locks around global variables // Location of semaphores to activate sdt probes Dwarf_Addr sdt_semaphore_addr; // perf.counter probes that this probe references std::set perf_counter_refs; // index into session.probes[], set and used during translation unsigned session_index; // List of other derived probes whose conditions may be affected by // this probe. std::set probes_with_affected_conditions; virtual void use_internal_buffer(const std::string&) {} }; // ------------------------------------------------------------------------ struct unparser; // Various derived classes derived_probe_group manage the // registration/invocation/unregistration of sibling probes. struct derived_probe_group { virtual ~derived_probe_group () {} virtual void emit_kernel_module_init (systemtap_session&) {} // Similar to emit_module_init(), but code emitted here gets run // with root access. The _init-generated code may assume that it is // called only once. If that code fails at run time, it must set // rc=1 and roll back any partial initializations, for its _exit // friend will NOT be invoked. The generated code may use // pre-declared "int i, j;". Note that the message transport isn't // available, so printk()/errk() is the only output option. virtual void emit_kernel_module_exit (systemtap_session&) {} // Similar to emit_module_exit(), but code emitted here gets run // with root access. The _exit-generated code may assume that it is // executed exactly zero times (if the _init-generated code failed) // or once. (_exit itself may be called a few times, to generate // the code in a few different places in the probe module.) The // generated code may use pre-declared "int i, j;". Note that the // message transport isn't available, so printk()/errk() is the only // output option. virtual void emit_module_decls (systemtap_session& s) = 0; // The _decls-generated code may assume that declarations such as // the context, embedded-C code, function and probe handler bodies // are all already generated. That is, _decls is called near the // end of the code generation process. It should minimize the // number of separate variables (and to a lesser extent, their // size). virtual void emit_module_init (systemtap_session& s) = 0; // The _init-generated code may assume that it is called only once. // If that code fails at run time, it must set rc=1 and roll back // any partial initializations, for its _exit friend will NOT be // invoked. The generated code may use pre-declared "int i, j;" // and set "const char* probe_point;". virtual void emit_module_post_init (systemtap_session&) {} // The emit_module_post_init() code is called once session_state is // set to running. virtual void emit_module_refresh (systemtap_session&) {} // The _refresh-generated code may be called multiple times during // a session run, bracketed by _init and _exit calls. // Upon failure, it must set enough state so that // a subsequent _exit call will clean up everything. // The generated code may use pre-declared "int i, j;". virtual void emit_module_exit (systemtap_session& s) = 0; // The _exit-generated code may assume that it is executed exactly // zero times (if the _init-generated code failed) or once. (_exit // itself may be called a few times, to generate the code in a few // different places in the probe module.) // The generated code may use pre-declared "int i, j;". // Support for on-the-fly operations is implemented in the runtime using a // workqueue which calls module_refresh(). Depending on the probe type, it may // not be safe to manipulate the workqueue in the context of the probe handler // (otf_safe_context() = false). In this case, we rely on a background timer // to schedule the work. Otherwise, if the probe context is safe // (otf_safe_context() = true), we can directly schedule the work. virtual bool otf_supported (systemtap_session&) { return false; } // Support for on-the-fly arming/disarming depends on probe type virtual bool otf_safe_context (systemtap_session&) { return false; } // Whether this probe type occurs in a safe context. To be safe, we default to // no, which means we'll rely on a background timer. }; // ------------------------------------------------------------------------ typedef std::map literal_map_t; struct derived_probe_builder { virtual void build(systemtap_session & sess, probe* base, probe_point* location, literal_map_t const & parameters, std::vector & finished_results) = 0; virtual void build_with_suffix(systemtap_session & sess, probe * use, probe_point * location, literal_map_t const & parameters, std::vector & finished_results, std::vector const & suffix); virtual ~derived_probe_builder() {} virtual void build_no_more (systemtap_session &) {} virtual bool is_alias () const { return false; } virtual std::string name() = 0; static bool has_null_param (literal_map_t const & parameters, interned_string key); static bool get_param (literal_map_t const & parameters, interned_string key, interned_string& value); static bool get_param (literal_map_t const & parameters, interned_string key, int64_t& value); static bool has_param (literal_map_t const & parameters, interned_string key); }; struct match_key { interned_string name; bool have_parameter; exp_type parameter_type; match_key(interned_string n); match_key(probe_point::component const & c); match_key & with_number(); match_key & with_string(); std::string str() const; bool operator<(match_key const & other) const; bool globmatch(match_key const & other) const; }; class match_node { typedef std::map sub_map_t; typedef std::map::iterator sub_map_iterator_t; sub_map_t sub; std::vector ends; public: match_node(); void find_and_build (systemtap_session& s, probe* p, probe_point *loc, unsigned pos, std::vector& results, std::set& builders); std::string suggest_functors(systemtap_session& s, std::string functor); void try_suffix_expansion (systemtap_session& s, probe *p, probe_point *loc, unsigned pos, std::vector& results); void build_no_more (systemtap_session &s); void dump (systemtap_session &s, const std::string &name = ""); match_node* bind(match_key const & k); match_node* bind(interned_string k); match_node* bind_str(std::string const & k); match_node* bind_num(std::string const & k); match_node* bind_privilege(privilege_t p = privilege_t (pr_stapdev | pr_stapsys)); void bind(derived_probe_builder* e); private: privilege_t privilege; }; // ------------------------------------------------------------------------ struct alias_expansion_builder : public derived_probe_builder { probe_alias * alias; alias_expansion_builder(probe_alias * a) : alias(a) {} virtual void build(systemtap_session & sess, probe * use, probe_point * location, literal_map_t const &, std::vector & finished_results); virtual void build_with_suffix(systemtap_session & sess, probe * use, probe_point * location, literal_map_t const &, std::vector & finished_results, std::vector const & suffix); virtual bool is_alias () const { return true; } virtual std::string name() { return "alias expansion builder"; } bool checkForRecursiveExpansion (probe *use); }; // ------------------------------------------------------------------------ /* struct systemtap_session moved to session.h */ int semantic_pass (systemtap_session& s); void derive_probes (systemtap_session& s, probe *p, std::vector& dps, bool optional = false, bool rethrow_errors = false); // A helper we use here and in translate, for pulling symbols out of lvalue // expressions. symbol * get_symbol_within_expression (expression *e); struct unparser; struct const_folder: public update_visitor { systemtap_session& session; bool& relaxed_p; bool collapse_defines_p; const_folder(systemtap_session& s, bool& r, bool collapse_defines = false): session(s), relaxed_p(r), collapse_defines_p(collapse_defines), last_number(0), last_string(0), last_target_symbol(0) {} literal_number* last_number; literal_number* get_number(expression*& e); void visit_literal_number (literal_number* e); literal_string* last_string; literal_string* get_string(expression*& e); void visit_literal_string (literal_string* e); void get_literal(expression*& e, literal_number*& n, literal_string*& s); void visit_if_statement (if_statement* s); void visit_for_loop (for_loop* s); void visit_foreach_loop (foreach_loop* s); void visit_binary_expression (binary_expression* e); void visit_unary_expression (unary_expression* e); void visit_logical_or_expr (logical_or_expr* e); void visit_logical_and_expr (logical_and_expr* e); // void visit_regex_query (regex_query* e); // XXX: would require executing dfa at compile-time void visit_comparison (comparison* e); void visit_concatenation (concatenation* e); void visit_ternary_expression (ternary_expression* e); void visit_defined_op (defined_op* e); target_symbol* last_target_symbol; target_symbol* get_target_symbol(expression*& e); void visit_target_symbol (target_symbol* e); }; // Run the given code filter visitors against the given body. // Repeat until they all report having relaxed. template void update_visitor_loop (systemtap_session& sess, std::vector& filters, T& body) { bool relaxed_p; do { relaxed_p = true; for (unsigned k=0; kreset (); filters[k]->replace (body); relaxed_p = (relaxed_p && filters[k]->relaxed()); } if (! relaxed_p && sess.verbose > 3) std::clog << _("Rerunning the code filters.") << std::endl; } while (! relaxed_p); } // Run given code filter visitor, then a round of const folder, over and over, until they chill. template void var_expand_const_fold_loop(systemtap_session& sess, X& body, Y& v) { bool relaxed_p; /* ignored */ const_folder cf (sess, relaxed_p); std::vector k; k.push_back (& v); k.push_back (& cf); update_visitor_loop (sess, k, body); } #endif // ELABORATE_H /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ systemtap-3.1/emacs/000077500000000000000000000000001305163227500145025ustar00rootroot00000000000000systemtap-3.1/emacs/systemtap-init.el000066400000000000000000000003201305163227500200110ustar00rootroot00000000000000(autoload 'systemtap-mode "systemtap-mode.el") (setq auto-mode-alist (append '(("\\.stp$" . systemtap-mode)) auto-mode-alist)) (setq auto-mode-alist (append '(("\\.stpm$" . systemtap-mode)) auto-mode-alist)) systemtap-3.1/emacs/systemtap-mode.el000066400000000000000000000133321305163227500200010ustar00rootroot00000000000000;;; systemtap-mode.el --- A mode for SystemTap ;; Copyright (C) 2008 Tomoki Sekiyama ;; Copyright (C) 2012 Rüdiger Sonderfeld ;; Authors: 2008 Tomoki Sekiyama ;; 2012 Rüdiger Sonderfeld ;; Maintainer: ruediger@c-plusplus.de ;; Keywords: tools languages ;; Version: 0.02 ;; URL: https://github.com/ruediger/systemtap-mode ;; This file is NOT part of GNU Emacs. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; This code is based on the original systemtap-mode.el written by ;; Tomoki Sekiyama. It can be found at ;; http://coderepos.org/share/browser/lang/elisp/systemtap-mode/systemtap-mode.el?format=txt ;; TODO: ;; - indent embedded-C %{ ... %} correctly ;; - add parameter for indentation ;; - ... ;;; Code: (defconst systemtap-mode-version "0.02" "SystemTap Mode version number.") (defgroup systemtap-mode nil "A mode for SystemTap." :prefix "systemtap-" :group 'tools :group 'languages) (require 'cc-mode) (require 'cc-awk) (eval-when-compile (require 'cc-langs) (require 'cc-fonts) (require 'cl)) (eval-and-compile (c-add-language 'systemtap-mode 'awk-mode)) ;; Syntax definitions for SystemTap (c-lang-defconst c-primitive-type-kwds systemtap '("string" "long" "global" "private")) (c-lang-defconst c-modifier-kwds systemtap (append '("probe" "function") (c-lang-const c-modifier-kwds))) (c-lang-defconst c-block-stmt-2-kwds systemtap '("else" "for" "foreach" "if" "while")) (c-lang-defconst c-simple-stmt-kwds systemtap '("break" "continue" "delete" "next" "return")) (c-lang-defconst c-identifier-syntax-modifications systemtap '((?. . "_") (?' . "."))) (defcustom systemtap-font-lock-extra-types nil "Font-lock extra types for SystemTap mode." :group 'systemtap-mode) (defconst systemtap-font-lock-keywords-1 (c-lang-const c-matchers-1 systemtap) "Minimal highlighting for SystemTap mode.") (defconst systemtap-font-lock-keywords-2 (c-lang-const c-matchers-2 systemtap) "Fast normal highlighting for SystemTap mode.") (defconst systemtap-font-lock-keywords-3 (c-lang-const c-matchers-3 systemtap) "Accurate normal highlighting for SystemTap mode.") (defvar systemtap-font-lock-keywords systemtap-font-lock-keywords-3 "Default expressions to highlight in SystemTap mode.") (defvar systemtap-mode-syntax-table nil "Syntax table used in systemtap-mode buffers.") (unless systemtap-mode-syntax-table (setq systemtap-mode-syntax-table (funcall (c-lang-const c-make-mode-syntax-table systemtap)))) (defvar systemtap-mode-abbrev-table nil "Abbreviation table used in systemtap-mode buffers.") (defvar systemtap-mode-map (let ((map (c-make-inherited-keymap))) (define-key map "\C-ce" 'systemtap-execute-script) (define-key map "\C-cc" 'systemtap-interrupt-script) map) "Keymap used in systemtap-mode buffers.") (easy-menu-define systemtap-menu systemtap-mode-map "SystemTap Mode Commands" (cons "SystemTap" (append '(["Execute This Script" systemtap-execute-script t] ["Interrupt Execution of Script" systemtap-interrupt-script (get-process "systemtap-script")] "----") (c-lang-const c-mode-menu systemtap)))) ;; Execution function of Current Script (defvar systemtap-buffer-name "*SystemTap*" "Name of the SystemTap execution buffer.") (defcustom systemtap-stap-program "stap" "SystemTap's stap program to execute scripts." :type 'file :group 'systemtap-mode) (defcustom systemtap-stap-options '("-v") "A list of options to give to stap." :type '(repeat string) :group 'systemtap-mode) (defun systemtap-execute-script () "Execute current SystemTap script." (interactive) (when (get-buffer systemtap-buffer-name) (kill-buffer systemtap-buffer-name)) (get-buffer-create systemtap-buffer-name) (display-buffer systemtap-buffer-name) (let* ((file-name (buffer-file-name)) (options (append systemtap-stap-options (list file-name)))) (apply #'start-process "systemtap-script" systemtap-buffer-name systemtap-stap-program options)) (message "Execution of SystemTap script started.")) (defun systemtap-interrupt-script () "Interrupt running SystemTap script." (interactive) (interrupt-process "systemtap-script") (message "SystemTap script is interrupted.")) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.stp\\'" . systemtap-mode)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.stpm\\'" . systemtap-mode)) (require 'simple) ;;;###autoload ; prog-mode is newer than emacs 23 (define-derived-mode systemtap-mode fundamental-mode "SystemTap" "Major mode for editing SystemTap scripts. Key bindings: \\{systemtap-mode-map}" :group 'systemtap :syntax-table systemtap-mode-syntax-table :abbrev-table systemtap-mode-abbrev-table (c-initialize-cc-mode t) (use-local-map systemtap-mode-map) (c-init-language-vars systemtap-mode) (c-common-init 'systemtap-mode) (easy-menu-add systemtap-menu) (c-run-mode-hooks 'c-mode-common-hook) (c-update-modeline)) (provide 'systemtap-mode) ;;; systemtap-mode.el ends here systemtap-3.1/git_version.sh000077500000000000000000000270231305163227500163050ustar00rootroot00000000000000#!/bin/sh # # Generate some basic versioning information which can be piped to a header. # # Copyright (c) 2006-2007 Luc Verhaegen # Copyright (C) 2007 Hans Ulrich Niedermann # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # This script is based on the one written for xf86-video-unichrome by # Luc Verhaegen, but was rewritten almost completely by Hans Ulrich # Niedermann. The script contains a few bug fixes from Egbert Eich, # Matthias Hopf, Joerg Sonnenberger, and possibly others. # # The author thanks the nice people on #git for the assistance. # # Simple testing of this script: # /sbin/busybox sh git_version.sh --example > moo.c \ # && gcc -Wall -Wextra -Wno-unused -o moo moo.c \ # && ./moo # (bash should also do) # # For how to hook this up to your automake- and/or imake-based build # system, best take a look at how the RadeonHD.am and/or RadeonHD.tmpl # work in the xf86-video-radeonhd build system. For non-recursive make, # you can probably make things a little bit simpler. # # KNOWN BUGS: # * Uses hyphenated ("git-foo-bar") program names, which git upstream # have declared deprecated. # # Help messages USAGE="[

;WV =+>퉶rZDTcCM[ona-vօ^OВK eFp7qRC@r wp[Cr3@uՔy)/LHq  @^*3n 'D[X$.q_H5Jhr}ʗ|GOB'ZC2۳)K('2-y;i\V嗙 .`4 endstream endobj 2469 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2470 0 R >> endobj 2471 0 obj 496 endobj 2473 0 obj << /Length 2474 0 R /Filter /FlateDecode >> stream xUn0+!bA=5"4K }l颇:a. z"~EiHc g}D.O!_~:uQ endstream endobj 2472 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2473 0 R >> endobj 2474 0 obj 545 endobj 2476 0 obj << /Length 2477 0 R /Filter /FlateDecode >> stream xTn0+%R-E#=5,40HJ}l@6R3  K`Hݤ" \Q8 d<>~.WGdxo,|3HEji%-T bϒ5<~ld)]uWr\7ZC-."Ŏo`gkBr jL9?!S-tVvEny 8\oi~⿳|SjOضZb>f.$ULdvHeP+k .zIg)Tߪ C̕%n7H h۪Zdu`j,o}_IR2<ͪ^bcy *m \M4϶zBF])*:zSސ endstream endobj 2475 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2476 0 R >> endobj 2477 0 obj 552 endobj 2479 0 obj << /Length 2480 0 R /Filter /FlateDecode >> stream xTKo0 WQ[V`; btTIU?r繝RǀR?~$&Je 0T<2;rm. ?Y&Op?]GK%eo"bۢy,=B•&,-l,Ҭn]o:Q|5Ӿ~ƒ^A"l[oO<ۇaj fΓ:p+*vx@쬂V\k= $rCX]5䴈AuS=_qպo\ڔAR(DAEO.6)6dR}@r7D*к ̾Nfד[WEέ(<{ݡqc/OY]C6XͭIe@!()UHvnOmxhk H"kNN1ЏP' (> endobj 2480 0 obj 490 endobj 2482 0 obj << /Length 2483 0 R /Filter /FlateDecode >> stream xVn0+rњ[ E{(DhI`c (GTjEV9Q${3_ H}o% l 祙A3=P@3!׻zҎnRqS@ pt8;wz}x~[K|FCn{j=O!Gl-fHWY),`R9kˌصeHSfvbjޫúmVUmˍ[]Ievx2%LP?0 endstream endobj 2481 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2482 0 R >> endobj 2483 0 obj 769 endobj 2485 0 obj << /Length 2486 0 R /Filter /FlateDecode >> stream xTn0+bEڌ-@[$%ECQMɵ f[*!A  # !d#v;Z!lgP_GJ ;r=x,&.WG8B(DICi fR-yp6eC֭n!|JH.E}4}f&C0ўPE7BG iYۺ4/vM˷Ӄ`vޠ endstream endobj 2484 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2485 0 R >> endobj 2486 0 obj 536 endobj 2488 0 obj << /Type /Action /S /GoTo /D [2325 0 R /XYZ 72.0 720.0 null] >> endobj 2489 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 262.6 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2488 0 R /H /I >> endobj 2491 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.701 709.5 541.701 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2488 0 R /H /I >> endobj 2492 0 obj << /Type /Action /S /GoTo /D [2328 0 R /XYZ 72.0 720.0 null] >> endobj 2493 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 235.95 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2492 0 R /H /I >> endobj 2494 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.888 697.5 541.888 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2492 0 R /H /I >> endobj 2495 0 obj << /Type /Action /S /GoTo /D [2331 0 R /XYZ 72.0 720.0 null] >> endobj 2496 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 234.83 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2495 0 R /H /I >> endobj 2497 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.894 685.5 541.894 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2495 0 R /H /I >> endobj 2498 0 obj << /Type /Action /S /GoTo /D [2334 0 R /XYZ 72.0 720.0 null] >> endobj 2499 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 252.04 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2498 0 R /H /I >> endobj 2500 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.776 673.5 541.776 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2498 0 R /H /I >> endobj 2501 0 obj << /Type /Action /S /GoTo /D [2337 0 R /XYZ 72.0 720.0 null] >> endobj 2502 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 241.49 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2501 0 R /H /I >> endobj 2503 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.847 661.5 541.847 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2501 0 R /H /I >> endobj 2504 0 obj << /Type /Action /S /GoTo /D [2340 0 R /XYZ 72.0 720.0 null] >> endobj 2505 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 246.5 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2504 0 R /H /I >> endobj 2506 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.814 649.5 541.814 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2504 0 R /H /I >> endobj 2507 0 obj << /Type /Action /S /GoTo /D [2343 0 R /XYZ 72.0 720.0 null] >> endobj 2508 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 242.6 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2507 0 R /H /I >> endobj 2509 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 637.5 541.842 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2507 0 R /H /I >> endobj 2510 0 obj << /Type /Action /S /GoTo /D [2346 0 R /XYZ 72.0 720.0 null] >> endobj 2511 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 271.5 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2510 0 R /H /I >> endobj 2512 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.639 625.5 541.639 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2510 0 R /H /I >> endobj 2513 0 obj << /Type /Action /S /GoTo /D [2349 0 R /XYZ 72.0 720.0 null] >> endobj 2514 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 249.28 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2513 0 R /H /I >> endobj 2515 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.793 613.5 541.793 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2513 0 R /H /I >> endobj 2516 0 obj << /Type /Action /S /GoTo /D [2352 0 R /XYZ 72.0 720.0 null] >> endobj 2517 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 250.39 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2516 0 R /H /I >> endobj 2518 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.785 601.5 541.785 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2516 0 R /H /I >> endobj 2519 0 obj << /Type /Action /S /GoTo /D [2355 0 R /XYZ 72.0 720.0 null] >> endobj 2520 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 259.28 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2519 0 R /H /I >> endobj 2521 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.725 589.5 541.725 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2519 0 R /H /I >> endobj 2522 0 obj << /Type /Action /S /GoTo /D [2358 0 R /XYZ 72.0 720.0 null] >> endobj 2523 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 269.27 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2522 0 R /H /I >> endobj 2524 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.656 577.5 541.656 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2522 0 R /H /I >> endobj 2525 0 obj << /Type /Action /S /GoTo /D [2361 0 R /XYZ 72.0 720.0 null] >> endobj 2526 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 260.39 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2525 0 R /H /I >> endobj 2527 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.717 565.5 541.717 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2525 0 R /H /I >> endobj 2528 0 obj << /Type /Action /S /GoTo /D [2364 0 R /XYZ 72.0 720.0 null] >> endobj 2529 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 278.16 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2528 0 R /H /I >> endobj 2530 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.594 553.5 541.594 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2528 0 R /H /I >> endobj 2531 0 obj << /Type /Action /S /GoTo /D [2367 0 R /XYZ 72.0 720.0 null] >> endobj 2532 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 301.5 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2531 0 R /H /I >> endobj 2533 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.432 541.5 541.432 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2531 0 R /H /I >> endobj 2534 0 obj << /Type /Action /S /GoTo /D [2370 0 R /XYZ 72.0 720.0 null] >> endobj 2535 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 254.82 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2534 0 R /H /I >> endobj 2536 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.756 529.5 541.756 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2534 0 R /H /I >> endobj 2537 0 obj << /Type /Action /S /GoTo /D [2373 0 R /XYZ 72.0 720.0 null] >> endobj 2538 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 254.84 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2537 0 R /H /I >> endobj 2539 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.755 517.5 541.755 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2537 0 R /H /I >> endobj 2540 0 obj << /Type /Action /S /GoTo /D [2376 0 R /XYZ 72.0 720.0 null] >> endobj 2541 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 243.16 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2540 0 R /H /I >> endobj 2542 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.837 505.5 541.837 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2540 0 R /H /I >> endobj 2543 0 obj << /Type /Action /S /GoTo /D [2379 0 R /XYZ 72.0 720.0 null] >> endobj 2544 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 250.94 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2543 0 R /H /I >> endobj 2545 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.784 493.5 541.784 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2543 0 R /H /I >> endobj 2546 0 obj << /Type /Action /S /GoTo /D [2382 0 R /XYZ 72.0 720.0 null] >> endobj 2547 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 229.83 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2546 0 R /H /I >> endobj 2548 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.929 481.5 541.929 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2546 0 R /H /I >> endobj 2549 0 obj << /Type /Action /S /GoTo /D [2385 0 R /XYZ 72.0 720.0 null] >> endobj 2550 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 234.84 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2549 0 R /H /I >> endobj 2551 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.894 469.5 541.894 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2549 0 R /H /I >> endobj 2552 0 obj << /Type /Action /S /GoTo /D [2388 0 R /XYZ 72.0 720.0 null] >> endobj 2553 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 236.5 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2552 0 R /H /I >> endobj 2554 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.884 457.5 541.884 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2552 0 R /H /I >> endobj 2555 0 obj << /Type /Action /S /GoTo /D [2391 0 R /XYZ 72.0 720.0 null] >> endobj 2556 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 258.16 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2555 0 R /H /I >> endobj 2557 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.731 445.5 541.731 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2555 0 R /H /I >> endobj 2558 0 obj << /Type /Action /S /GoTo /D [2394 0 R /XYZ 72.0 720.0 null] >> endobj 2559 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 252.05 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2558 0 R /H /I >> endobj 2560 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.775 433.5 541.775 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2558 0 R /H /I >> endobj 2561 0 obj << /Type /Action /S /GoTo /D [2397 0 R /XYZ 72.0 720.0 null] >> endobj 2562 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 421.5 227.161 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2561 0 R /H /I >> endobj 2563 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.824 421.5 541.824 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2561 0 R /H /I >> endobj 2564 0 obj << /Type /Action /S /GoTo /D [2400 0 R /XYZ 72.0 720.0 null] >> endobj 2565 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 258.99 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2564 0 R /H /I >> endobj 2566 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.728 409.5 541.728 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2564 0 R /H /I >> endobj 2567 0 obj << /Type /Action /S /GoTo /D [2403 0 R /XYZ 72.0 720.0 null] >> endobj 2568 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 242.33 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2567 0 R /H /I >> endobj 2569 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 397.5 541.842 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2567 0 R /H /I >> endobj 2570 0 obj << /Type /Action /S /GoTo /D [2406 0 R /XYZ 72.0 720.0 null] >> endobj 2571 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 239.55 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2570 0 R /H /I >> endobj 2572 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.862 385.5 541.862 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2570 0 R /H /I >> endobj 2573 0 obj << /Type /Action /S /GoTo /D [2409 0 R /XYZ 72.0 720.0 null] >> endobj 2574 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 250.65 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2573 0 R /H /I >> endobj 2575 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.786 373.5 541.786 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2573 0 R /H /I >> endobj 2576 0 obj << /Type /Action /S /GoTo /D [2412 0 R /XYZ 72.0 720.0 null] >> endobj 2577 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 233.69 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2576 0 R /H /I >> endobj 2578 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.902 361.5 541.902 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2576 0 R /H /I >> endobj 2579 0 obj << /Type /Action /S /GoTo /D [2415 0 R /XYZ 72.0 720.0 null] >> endobj 2580 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 228.14 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2579 0 R /H /I >> endobj 2581 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.941 349.5 541.941 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2579 0 R /H /I >> endobj 2582 0 obj << /Type /Action /S /GoTo /D [2418 0 R /XYZ 72.0 720.0 null] >> endobj 2583 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 269.8 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2582 0 R /H /I >> endobj 2584 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.652 337.5 541.652 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2582 0 R /H /I >> endobj 2585 0 obj << /Type /Action /S /GoTo /D [2421 0 R /XYZ 72.0 720.0 null] >> endobj 2586 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 224.82 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2585 0 R /H /I >> endobj 2587 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.964 325.5 541.964 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2585 0 R /H /I >> endobj 2588 0 obj << /Type /Action /S /GoTo /D [2424 0 R /XYZ 72.0 720.0 null] >> endobj 2589 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 237.58 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2588 0 R /H /I >> endobj 2590 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.875 313.5 541.875 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2588 0 R /H /I >> endobj 2591 0 obj << /Type /Action /S /GoTo /D [2427 0 R /XYZ 72.0 720.0 null] >> endobj 2592 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 227.04 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2591 0 R /H /I >> endobj 2593 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.949 301.5 541.949 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2591 0 R /H /I >> endobj 2594 0 obj << /Type /Action /S /GoTo /D [2430 0 R /XYZ 72.0 720.0 null] >> endobj 2595 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 289.5 191.778 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2594 0 R /H /I >> endobj 2596 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.054 289.5 542.054 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2594 0 R /H /I >> endobj 2597 0 obj << /Type /Action /S /GoTo /D [2433 0 R /XYZ 72.0 720.0 null] >> endobj 2598 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 232.88 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2597 0 R /H /I >> endobj 2599 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.908 277.5 541.908 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2597 0 R /H /I >> endobj 2600 0 obj << /Type /Action /S /GoTo /D [2436 0 R /XYZ 72.0 720.0 null] >> endobj 2601 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 243.43 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2600 0 R /H /I >> endobj 2602 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.836 265.5 541.836 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2600 0 R /H /I >> endobj 2603 0 obj << /Type /Action /S /GoTo /D [2439 0 R /XYZ 72.0 720.0 null] >> endobj 2604 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 242.89 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2603 0 R /H /I >> endobj 2605 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.838 253.5 541.838 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2603 0 R /H /I >> endobj 2606 0 obj << /Type /Action /S /GoTo /D [2442 0 R /XYZ 72.0 720.0 null] >> endobj 2607 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 230.66 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2606 0 R /H /I >> endobj 2608 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 241.5 541.924 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2606 0 R /H /I >> endobj 2609 0 obj << /Type /Action /S /GoTo /D [2445 0 R /XYZ 72.0 720.0 null] >> endobj 2610 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 241.21 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2609 0 R /H /I >> endobj 2611 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.85 229.5 541.85 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2609 0 R /H /I >> endobj 2612 0 obj << /Type /Action /S /GoTo /D [2448 0 R /XYZ 72.0 720.0 null] >> endobj 2613 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 221.78 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2612 0 R /H /I >> endobj 2614 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.985 217.5 541.985 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2612 0 R /H /I >> endobj 2615 0 obj << /Type /Action /S /GoTo /D [2451 0 R /XYZ 72.0 720.0 null] >> endobj 2616 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 246.78 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2615 0 R /H /I >> endobj 2617 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.811 205.5 541.811 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2615 0 R /H /I >> endobj 2618 0 obj << /Type /Action /S /GoTo /D [2454 0 R /XYZ 72.0 720.0 null] >> endobj 2619 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 257.59 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2618 0 R /H /I >> endobj 2620 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.736 193.5 541.736 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2618 0 R /H /I >> endobj 2621 0 obj << /Type /Action /S /GoTo /D [2457 0 R /XYZ 72.0 720.0 null] >> endobj 2622 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 283.97 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2621 0 R /H /I >> endobj 2623 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.553 181.5 541.553 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2621 0 R /H /I >> endobj 2624 0 obj << /Type /Action /S /GoTo /D [2460 0 R /XYZ 72.0 720.0 null] >> endobj 2625 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 242.59 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2624 0 R /H /I >> endobj 2626 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 169.5 541.842 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2624 0 R /H /I >> endobj 2627 0 obj << /Type /Action /S /GoTo /D [2463 0 R /XYZ 72.0 720.0 null] >> endobj 2628 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 268.97 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2627 0 R /H /I >> endobj 2629 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.658 157.5 541.658 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2627 0 R /H /I >> endobj 2630 0 obj << /Type /Action /S /GoTo /D [2466 0 R /XYZ 72.0 720.0 null] >> endobj 2631 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 238.16 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2630 0 R /H /I >> endobj 2632 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.871 145.5 541.871 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2630 0 R /H /I >> endobj 2633 0 obj << /Type /Action /S /GoTo /D [2469 0 R /XYZ 72.0 720.0 null] >> endobj 2634 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 264.54 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2633 0 R /H /I >> endobj 2635 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.688 133.5 541.688 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2633 0 R /H /I >> endobj 2636 0 obj << /Type /Action /S /GoTo /D [2472 0 R /XYZ 72.0 720.0 null] >> endobj 2637 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 218.72 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2636 0 R /H /I >> endobj 2638 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.005 121.5 542.005 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2636 0 R /H /I >> endobj 2639 0 obj << /Type /Action /S /GoTo /D [2475 0 R /XYZ 72.0 720.0 null] >> endobj 2640 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 242.59 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2639 0 R /H /I >> endobj 2641 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 109.5 541.842 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2639 0 R /H /I >> endobj 2642 0 obj << /Type /Action /S /GoTo /D [2478 0 R /XYZ 72.0 720.0 null] >> endobj 2643 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 268.97 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2642 0 R /H /I >> endobj 2644 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.658 97.5 541.658 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2642 0 R /H /I >> endobj 2645 0 obj << /Type /Action /S /GoTo /D [2481 0 R /XYZ 72.0 720.0 null] >> endobj 2646 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 225.38 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2645 0 R /H /I >> endobj 2647 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.959 85.5 541.959 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2645 0 R /H /I >> endobj 2648 0 obj << /Type /Action /S /GoTo /D [2484 0 R /XYZ 72.0 720.0 null] >> endobj 2649 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 251.76 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2648 0 R /H /I >> endobj 2650 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.777 73.5 541.777 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2648 0 R /H /I >> endobj 2651 0 obj << /Length 2652 0 R /Filter /FlateDecode >> stream xKiVy 9v[h.m4}(ǎ"!)"%mWτ(2^߱#KϿ_m{c?j_h{۫o_?|_m_u^m_G~g/۫?lox=vϾX?ǫ~O͏{z7OzOǛz_~/~''ws>8w?ۧϿz}xW?vַ ?C&x%N&16l"Jp[sxAK&qH,S.\ ` ;` !!!!))))M6"E!CN"8EpFb sA0wϧmGh&7ZE7ocMQhF7׏AٍM}~>xd|'|#qxB|8%o!Ep`-kIkI XKb Z6l"JplK%u?nTONuR=A5YN\dreZ,k ԻX*Ų@}e,,,,,,,,Y6ldɲe'A,Yd9r"EK,k bYhZF#XB4Reeeeeee59okqZp8ȩ{ 篾_}ۇiwVQUB|t1{`t;]|+uR=>J-..!!AAAAIIII,Y۶xAw!ب;KyPݨ&E,XIX&ebX.qebYYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.M,s2w],s<2C, $$$Z|Ǖ&/\ڷcbǹFMƟ7oF$^q|q ^f_NkAuzA}mX^jj6[Z,V& $$$F,Y6dɲ A,'YNd9r"%>,P],Xk7ׇX^@MAAAIIII,Y6dɲ A,YNd9r"%F-PU bymX^۵>ڰj LLgr~ Z7}͜7$8_k(i~z0_s3.[_kxb:T/0ԍ u-E:Z"XRŲH- $$$$F,6XCT0AuzI]onT"EK,cZ"XRw(Re-EZ,k) AAAAIII,Y6dɲe'A,YNd9r"EK,k)bYKQŲH-Ej(ReeeeeeeJXq qJGE<,8*m~iT򛧯QG!>rnU3vlkm=0C꠺S>RR7'5^Z,k.5^Z,k!5^,,,,,,,,Y6ldɲe'A,Yd9r"EK,k"XxEjbYddddddddȲe#N,;Yvd9r$I,Y.\dIJ+ReWŲ+ReWHMAAAIIIJm͵n//W[{<*8]Y_}|Ox7=>uyማx:ިR?R'Cc:T/,,,,,,Y6ldȲe'N,Yd9r$E,Xօ!Re].uabY@}e]"5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,Xօ!Re]"Xօ!Re]!uadddddddYo쵱ő/>᭓Aǃb~:ay|Q~~M)oOkii|'Z@9R% jjjjjjjj3fTvS:Lu0aTNS]Luj^TkZ+$?H0PnaaaaiiiT6SMj7aTNS:Mu2eTkuZ$IV8PNƁrRUjjjjjjjWV{^ӋkcU=qfIJ֦yz<֦karA><ǸGݷ7G9qn֏P,ZkH('ZEB9:M5L5L5L5M5M5Mj3VǚzISSTFuPM,Y.\bY+JZQ.Dj%PbY+J& $$$$F,Yvdr A,'YNdrZQ"X֊ŲVH-C,kEdddddddyrI!y%(˻Z%y|R~j'(70000444fTvSM0aTNSLu2E5TkR!N5TkRA9֤rS S S SMSMSMSmLj3nTS:Lu4iT.S]Z I&Z I&Z M5L5L5L5M5M5M&mep-YuAE~ *_aEuj:6Slaqw7')9i<%<,jjjj3fTvSMu0aTNS]Lu":%T\T딜rRSrIN)7000444fT6SM0aTNS:Mu2EuJN9);)9ZZ䔛jjjjjjyvpZklCsZbk7ǝqsN><}۷OtȺ]sk6_'wODY>)ټifEy7nTS:Mu4iT.R6Tm INrR ks;M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HNrRT$'k;RvTTTTTTTϷ0ض>p~a__%YaP7K{7}ŨJ~Y>%RZ? պ!Lj3nTS:Lu4iT.S]zZ?TjPTjjjjjjjj3fTvSMu0aTNS]Lu"պ!Z?|'պ!Z?Tjjjjjjj-Xgݎ)8_7?NA_ݏ7ގA#o ^;ǿH˛SPTk "A5TTTTTTTT6Sm:[IwA,˻yX,7eTrR1ZcI ZcM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujA('HjA('PN5TTTTTTT ۞]Aڶ7ǝ?F7c ; ~OoŻoy`A9o@ovM]\+G9aPB^Jw嵩)yo('՚Hjo('՚H~jo(70004444fT[m?}<-[(rS]Lujo('՚PN5Tk~#A5TTTTTTTT6SmMj7nTS:Mu2eTrR;rR ZM5L5L5L5M5M5MZ2͌m fr?oo=Xr<<2o2*zbW8iO/$iyyX-_Z;cRN3&Z;cJLj3nTvS:Lu4iT.S]HvƤTkgLwR1)'rR1)7000444fT6SM0aTNS:Mu2E3&Z;cJjI9ΘZ;cRnaaaiiiuvdq-zqz7ǝ?7CΘ&?a^r`?TnZ^qs̡K>(Ey-Y>)_Luj (')妺Lu2E5xTk$N5xTkD9rS S S SMSMSMSmLj3nTS:Lu4iT.S]Z'IOZ'IOZ'M5L5L5L5M5M5MVd]:5xZ\[;/7?ͻDž:fzysϘضqEy H,׹i$Mu걑걑걑걓걓걓qqqjݗI000444fT\`5o@^P/LFNNuuPM,Y.\bYaZ,&LPbY`Z,LPbY_,,,,,,,,Y6ldɲe'A,Yd9r"EK,.KRecIj;,I-u%+IMAAAAIII5ʾֶY˶VnfTk&AwKj놛c?Xq[$ x)oO.Tk^I6)_i&EN55TkjB9D0000444fTvSM0aTNSLu2E55Tkj"N55TkjB9ԄrS S S SMSMSMSmLj3nTS:Lu4iT.S]ZSI&ZSI&ZSM5L5L5L5M5M5MrZm-/#ffj>í_}k#1N[#ss0u8_%?_)O?ay|Q^$7EuG+Ih%NuG+Ih%AuG+M5L5L5L5M5M5M5Mj3VZ$i|lE<,o2eTVjъrR;ZQNuG+R;ZQnaaaaiiiT6SMj7aTNS:Mu2eTVjJTVjъrR;ZQnaaaiiimkqv%ضro7:ϒχcڛGป$<9qtX,|P>7n.S]HTjͩ$ITjͩ$?HTjjjjjjjj3fTvS:Lu0aTNS]Lujͩ('՚SQN5TkN%A5TTTTTTTT6SmMj7nTS:Mu2eT֜rR9;֜rR9Zs*M5L5L5L5M5M5MT6M>I_]s˽̩ͩ~q<Zu*?nQlnP^$J, l%O yXnT.S]Zc-IZZc-IZZc-M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HZj('kQN5֒ kQnaaaaiiiT6SMj7aTNS:Mu2eTkE9XKTkE9XrRZ^Vѵǚ7>Z-/>}V?ung p7[1ϻ=89,oOk'OAy)yX-'c#c#c#c'c'c' 0000444fT6SM0aTNS:Mu2EjlNj;AqjLj3nTS:Lu4iT.S]Fjn;Njaaaaaiiiݳƶ/N^gvsHf0g[@{YOsz.j7 qO!Aay|Q~)DyT.S]Z*T^ejݫrR{I~jݫrS S S S SMSMSMSmLj%y,˻qX,T.S]HUF9ֽ$IUF9ֽ('պWLj3fTvS:Lu4iT.S]HUF9ֽ$IUF9ֽ$?HUF^h$}q oڶqyl0/O I}|6_|/͏W|!?:5um]7)Af6SmMj7aTNS:Mu2eTׄT|y/R}^rS S S SMSMSMSMSmLj7nTS:Lu4iT.R}^rR}^rR}^rR}^AkBnaaaaiiiT6SMj7aTNS:Mu2eTׄT|yjl)m6[J-͖fKiRM;[Z-fkf0y,/?߭?}o~׿޽߾û!zY͇pÿ\E r{8KɃay|Q^'7'u .RsjTkZ+$?HVQnaaaaiiiTC\/A[(ɛ:y<-7eT.Rsj|'Z9G99IVQnaaaiiiT6SmMj7aTNS:Mu2eTkZ+$IVQNrNTkZ+ڙo.k6\f>!aoݷOo&%s<\G7r=n;sn \N|Q=%@Re-zZ#X?Reeeeeeee#F,Zʗ}<-[(rS]LujTkZ}('Z#AއrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z}('Z#NއrR>jTTTTTTTkF׵ǐǵWmwԿwyHͻ}=OjWz77.תO$ᨻZEu)ZZ/wR}\ rR}\AϗkAnaaaiiiiT6SM0aTNS:Mu2EϗkANϗkANϗkANϗk6n|7Mu2E5wTkD9܉rR܉rS S S S SMSMSMSmLj7nTS:Lu4iT.S]Zs'INZs'INj͝(7000444՚;3o:ץ]iѾqs\f4?MӇO+ybm}7<#svwY>)?_)OK4ay|I~lzlzlzzzz[NAaaaaiiiTRmc(_f|얧Y4eTFjl;NjAqjjjjjjjj3fTvS:Lu0aTNS]LujnFj;Nyj5X2ܝ%7m6naΣƼy89Ocq樇 yO] NI "8Ep% k X+^ X ZZ6l"J0};^|P>6n|7Mu2ErRGj?Tk#M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Luj?Tk;#IQNrS S S SMSMSMS:-cxZ4sw&q3m{X#?b=<,f|~~v=o{k얧Z)yX-_!ʛZK('Z"$ADrR%B6SmLj7nTS:Mu4iT.R%Bj-|'Z"D9!R%Bjjjjjjjj3fTvS:Lu0aTNS]Luj-TkZK('Z"$ADrS S S S SMSMSMS̖Lf$sǷ?f+V=y=2KjcGincNyX-_7IncN9m%S S S SMSMSMSmLjPk/fyX-_f|妺Lu2EusInc.NusIncN9m)7000444fT6SM0aTNS:Mu2EusInc.NusInc.AusM5L5L5L5M5M5Ms20ƨ[d7nu'6^}zhOȱq=^=s<<:q>?x݉*W|P^r%˻Z+6SmZrs;?Z Aoo.ժ>Rv/EY>%3('BCTk IҐ NrS S S SMSMSMSMSmL#^|P>6n|7Mu2EoZNZlPNɆ&jjjjjjjj3fTvSMu0aTNS]Lu"drRM6$I6٠Tk I6٠TTTTTTT=b|_\Wt[9,cߜ//ܯym!~^Xz\Pָ9|?,/k5ɛZ!yZ>(S S S SMSMSMSmLw|/䵼C[(7'嵼CT.S]HZ!9^; IZ!9^;$'kyLj3fTvS:Lu4iT.S]HZ!9^; IZ!9^; ?HZ!u@9@o"EI Q, Q?(Mu2eTm|$'kwRTm| ?HGrS S S SMSMSMSMSmLik%ym#yZ>(m|$˻Gf.S]H56RTm| IGrRTm| S S S SMSMSMSmLj7nTS:Lu4iT.S]zm#9^@굍zm#9^Hnaaaiiiemuv 3h=9܌~i}ax:]y3yɞgwl渻 Z<$y|J^CAYN54TkhB9D0004444fT[5{]PfyX-_f.S]H&j M('PN54 PnaaaaiiiT6SMj7aTNS:Mu2eTkhB9DTkhB9ЄrR Z f8&cm[9.c=ߝ(4 endstream endobj 2490 0 obj [ 2489 0 R 2491 0 R 2493 0 R 2494 0 R 2496 0 R 2497 0 R 2499 0 R 2500 0 R 2502 0 R 2503 0 R 2505 0 R 2506 0 R 2508 0 R 2509 0 R 2511 0 R 2512 0 R 2514 0 R 2515 0 R 2517 0 R 2518 0 R 2520 0 R 2521 0 R 2523 0 R 2524 0 R 2526 0 R 2527 0 R 2529 0 R 2530 0 R 2532 0 R 2533 0 R 2535 0 R 2536 0 R 2538 0 R 2539 0 R 2541 0 R 2542 0 R 2544 0 R 2545 0 R 2547 0 R 2548 0 R 2550 0 R 2551 0 R 2553 0 R 2554 0 R 2556 0 R 2557 0 R 2559 0 R 2560 0 R 2562 0 R 2563 0 R 2565 0 R 2566 0 R 2568 0 R 2569 0 R 2571 0 R 2572 0 R 2574 0 R 2575 0 R 2577 0 R 2578 0 R 2580 0 R 2581 0 R 2583 0 R 2584 0 R 2586 0 R 2587 0 R 2589 0 R 2590 0 R 2592 0 R 2593 0 R 2595 0 R 2596 0 R 2598 0 R 2599 0 R 2601 0 R 2602 0 R 2604 0 R 2605 0 R 2607 0 R 2608 0 R 2610 0 R 2611 0 R 2613 0 R 2614 0 R 2616 0 R 2617 0 R 2619 0 R 2620 0 R 2622 0 R 2623 0 R 2625 0 R 2626 0 R 2628 0 R 2629 0 R 2631 0 R 2632 0 R 2634 0 R 2635 0 R 2637 0 R 2638 0 R 2640 0 R 2641 0 R 2643 0 R 2644 0 R 2646 0 R 2647 0 R 2649 0 R 2650 0 R ] endobj 2487 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 2490 0 R /Contents 2651 0 R >> endobj 2652 0 obj 15884 endobj 2654 0 obj << /Length 2655 0 R /Filter /FlateDecode >> stream xTKo0 Wz a@Pc;EJb̑]YQ;޲(R>#.␮ $>}(쩉 wG (^=zx]~W称>/>0 bȧ$ nM,^Ç|ijt{7.ޫF0w9tw={_dv C㶡ZDq:XV?W%??2JQ+vH˽G$'> TRT/}{t#N*m,]'DHN82L  jG)GCdK4:!sa+ف aDJFJ> endobj 2655 0 obj 668 endobj 2657 0 obj << /Length 2658 0 R /Filter /FlateDecode >> stream xTKo0 WQKV; jlqS~$v^>~H:/LC8X'JPft%2F;*ܚrc/ ?gp?e V:c?% ]F9z+LYVݻr d_M6S|5aƒ^ˇAyd[;#OjxBV\B*h-N.v0գ@"O5UKNjԮU78o ,u#)hɥP*o"xaTA{)>͟.}ޗ FrcSUˍ SJ'CC7Ƅ뛶+ i9#:׃sB*1*fWŖمܤ9K 2''[,W (U۸4> S ڦd endstream endobj 2656 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2657 0 R >> endobj 2658 0 obj 486 endobj 2660 0 obj << /Length 2661 0 R /Filter /FlateDecode >> stream xU[O0~ϯ8Tܙ4&؅ 5(Bibڈ\Jw&mk+>\> (~xll \ӘlE 4sRyJv:52r…qs1Ptx6vܡOaeO60 }"c),h0 ܔB8v1\ju9\RzgöքEq˭Z3*!jQ8hգW%?tdx;`Y`rF]<&pJ\zLxEO)56b)NNʺ ,,T{by`q™I)C-0:OfY!1ub;> endobj 2661 0 obj 732 endobj 2663 0 obj << /Length 2664 0 R /Filter /FlateDecode >> stream xTn@ W:,hr,血=9(b Ihd[\䐏 }c%%{}  p&YtKdl;'v@5 %bx\nHc 6C @ O䡲Q"3I7wJ f?Y = 33|,hG&K>xl*Ʃoě?/ oU//qy4[j't{> $rC]5䴈FBM[?f77ݰe=6_S=#@K.Bҿ+// H^mHR?4 RNʼʫ -ۤ8l Һl;b "#C Ea2KOU7]RMDֆ2Ib, FI|oI ^hH[khW*)Cx. @6ay/ v$Wc I P [} endstream endobj 2662 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2663 0 R >> endobj 2664 0 obj 497 endobj 2666 0 obj << /Length 2667 0 R /Filter /FlateDecode >> stream xVMs0+/>[9驙xC`#Lm w`ƙAxzo߮O s $yjboBT̃54cV΀mGx` !ݹ{_:7~3Cޝ4q>~[<\!z6YmHL\&?l8e!ZC-1 7 ?i]ք0bԪZsBcG m~W+ 7k!xg4ܻ|80Ż9%!7 E6UnqW4pD ('#p2za$X14qtHXBA(dފ&S*}|M:A偼peJЂ qa8#VQ"ᐓC!eߒ-=,z P>N!c8v,L **,}I{k1& l;Y*6SW1תŽQ3je+eT,k\uZF:Au'T E]%(L7u\*aQdU>7cħhmz__:S',7ejֱjP'<`Q"fWjp1XzR րs`{6bi@EgIuns^]\' ݟg4]ʴܙMѥZ'0ޟ>bx軔!T/q7'lkkm*ύ endstream endobj 2665 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2666 0 R >> endobj 2667 0 obj 805 endobj 2669 0 obj << /Length 2670 0 R /Filter /FlateDecode >> stream xWKo6W̭Nm.REa0ȢG2)Yn/i3C GPȶg-s!Z ` ,~MHlY5#i .@PuFI٭e_wOqbok8@xT>*-a^| ϥC4龼c#/zdbAnҠd(QRoM*GQ' & bG1w5~ "'' vt!(q"lq;&0!x:]؇,qaUԬJ9?:qѝ:p%X!85XQ=mow%kYyv5Rm:1&e! CH¾⻦hzd"Q$Q$! 3R S;XFǦ]?rO G*U閝UwRea ԀEzUY[ ӈZ;UL`>בa' xxt0@_kKZ=ּۭD,+aUTk~imhv,+Evzݎݑ۽s:v6OxcMZln%ɰ=>QEdxvS4缏4H~ [ѴG68xFl|y1U]k1/*z ϷEpT(dwyE/3YUW@x]"ip@M'uAp%iH77۪-^jИB3FR vN zɔ%^3NIٿ, endstream endobj 2668 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2669 0 R >> endobj 2670 0 obj 1389 endobj 2672 0 obj << /Length 2673 0 R /Filter /FlateDecode >> stream xTn0+rH1]Clɶd/dR|| !6f+ 9ZT!+1 1,@#\! TW90v~ߓ a7g0'SK Ar,Q̨?@B!,]r^eKHuSo N>7f48Fw6uwN?f9xn ] Cǯ} v;7%<9IgH]WH}#A0z£1&~.7)|t+vw:P(HP%c]M> endobj 2673 0 obj 578 endobj 2675 0 obj << /Length 2676 0 R /Filter /FlateDecode >> stream xTKo0 WQ[V= jl(DMٰ?r;/:DH~鬙ߍ?0/z 0T<2;rk. ?Y' . af>Wdw)%%ң,$\IofiV2!u g %;=3z4N#%޾ >>SH0p{8f1݊?d Z peՎk( }cNtՐ"M޶֕gqqݦ)R(DA54F\828/)@%̨֪\B *k[WE-E&8V c/Uݮ-ԞPjnMbm,zRq"Z?|v=PMmxhk mM*SoWXVewplѶk.>}L!k(f:f?14 endstream endobj 2674 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2675 0 R >> endobj 2676 0 obj 496 endobj 2678 0 obj << /Length 2679 0 R /Filter /FlateDecode >> stream xVMO0WG̍jUQ{]kMBJcIH Hͼyr1>"a=v[A'<tq>G! = _+<\EGw69F!=HP ?BBL!jBo4$- }JC7M M͌9E 1~vwZn{uSm!m>g6oJ>o% U r)=G#ܔR5TVō:91ʼny2NgY31p&(eXbh cfrM<%\| 4\-;Po+aSe߉{g#QpaZQ?EiOdKu̸ >x64{P{b23?"aK%z<ݩ١1L]Y*UVʨNk]PܢtPr\!=g$( Ēԩ[&@N`LYFIV2Џ26zX kXzmc1Jۗ'˵M6Sz5f-d82˦}^l)V;yݼ)_e1Ϳ ė-ř2JB.THj;ӘDpԿ*uWbw:K+Z8VWmꬴ)UV<Z> ;8}sso5ˎvԚ@EZMsSClz08({  endstream endobj 2677 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2678 0 R >> endobj 2679 0 obj 776 endobj 2681 0 obj << /Length 2682 0 R /Filter /FlateDecode >> stream xSK0W$0~%HFpXVQغو6IAi>TJx3{mOɻpz/Qh, JL,ղ,4;~3\6 ߃oX_S?@ad;e'`P5Mm:C# |y`s[qS ]"g49Xj't;>^419egYUo3K86/ ە^*߅77aiU@ BSo}౭ʎv%# "A> endobj 2682 0 obj 508 endobj 2684 0 obj << /Length 2685 0 R /Filter /FlateDecode >> stream xUn0+hEsKHE !f,"Hr}Z,Ze8{~(׋/ws3^r=\A+S:  1R bayiBZ>@ }\b{\ lδ5 wp7[m%Fy)=_OQ6m͡_ϷF\[!8{m jlmJڮkC|lOYOś_;RbGqF؇|80bx͜JAmByWWe=vZ>TO*I$O a6db@J)ZXQcrL7*B5ZU*.d:m`tPly~{_,/Uٹ ~ ǂLSq! -o<":>B|Sc e.Q2t*a/ײcidFnPVna!BjQǚKCoi\KY2JI`A**&.נ M"M)Ghpw3W˭H: `> i#/M腞EMBzNָ > endobj 2685 0 obj 773 endobj 2687 0 obj << /Length 2688 0 R /Filter /FlateDecode >> stream xTM0W{[ć6òBu[k${vҦIr*m%[3yޛ)`@OmAADm(ICA{!O.E@CpP 谜ЫSot}lQHI$~nسt/̦rHH?7f48n1q>IfzKpPF> endobj 2688 0 obj 589 endobj 2690 0 obj << /Length 2691 0 R /Filter /FlateDecode >> stream xSMO0 WI# q@Vv[]Mhv_F[)gٯs&{c 6} Ե+ &PVàp_ .8t*pu}/^av@H>w#ki#-\7̒ ]q1!ty݇'-6R?V=TW;&^-# l;oUP>[H0p;dVE@> endobj 2691 0 obj 427 endobj 2693 0 obj << /Length 2694 0 R /Filter /FlateDecode >> stream xSK0W$0~ŎHFp]Eav#$gmTѼf/ x*h`H=" \QA A&i(B*Tr0LCq!yI|a7g!sA>(bTK?i!Rxgpfo$k:׿}+H.cCEbsu]ŸQFy;`S)0>3NAExj'{>4ZƘ 5muÉEA[o*P=3Tpǖ] B}=BHs6Z<PkȠn]l ׻ՎEPAkbZMwT{UԚZ-t5x.$ULGP{VlO2TZw1$UY..s)05>hk{Tv}{$)AqB=[;c#-馭MSjW-_Il endstream endobj 2692 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2693 0 R >> endobj 2694 0 obj 502 endobj 2696 0 obj << /Length 2697 0 R /Filter /FlateDecode >> stream xTMO@W$-P*ѐ@Q%X$zdm'%H;o޼Y: (>%kmcp~m|`.,{з p1p wNP?somcE|=JQ BBH[Yq2ODq^D_~P#jnsHsic ־VbkQw^M"fkAmͩxWh $li) ۚjFI)ȦF/j{jr™a&1Bi;~r1JI:$Te SO8Ao'I̎I%`?t6+|4μV0R͡ A?% Ӌӹ}40Ëc0bCbc3IqW#b դZ[F : endstream endobj 2695 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2696 0 R >> endobj 2697 0 obj 685 endobj 2699 0 obj << /Length 2700 0 R /Filter /FlateDecode >> stream xRn0 +q;,stMݴݪ!PZ(H/!еvsggwքSUv=&Jx &>J~93]2N-&w6]܁'t`{En9'hqG|@;Baq6TkĹNA]cz {sAᝇ6QWrj?%76vH}A\u͟"H h2qx${1u(I^B)S\(W$& Uի&t uFS!Ht-? W\I`U&MJ%H Fco# endstream endobj 2698 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2699 0 R >> endobj 2700 0 obj 345 endobj 2702 0 obj << /Length 2703 0 R /Filter /FlateDecode >> stream xTKo0 WإM?s۰lء-QvQc+m #?c@75KpK18w!0Jc𽅋~zʣ{x%P xq.[8 z} ks}P'IpHKxk*H]-߽yz@F0,: n|p]Aa}豵ѶZZ ִ|ziPš(Z"(E\k'4>8%.'3ЪUySTj6FF[gZs™!K` ax10G ON|EXPkʋKx+ JC^-垉0yQ?pa~D6vuQC3M`4$H&IB,̶Z8SBS~붔 3P1~"GE/0:nd2ՖR,^@1aœ࠺d_dbg'qƉNx?tS0O%T5zlZ+ 6^jc;"|Z'\cF[N6߸F{~c~:,XH3?L?~ < 'SPʹZMu^m+Â5|o~ endstream endobj 2701 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2702 0 R >> endobj 2703 0 obj 628 endobj 2705 0 obj << /Length 2706 0 R /Filter /FlateDecode >> stream xVMo0 WC t$m; jlDI #n,VR;ݩK &Hɓǀ{s E=u>u0BBnr ~bBc?ңŻ(~{4] n&B߼>)>܄(E!'$CpquYA*j. ]Gb|ۖC˾1A9€G-[zlmʻuWKĚVNꠃ 8^7->%&\7ڋAڽ8%O L(~'h+MVVNF[#= b8̧!`38cV xaι8pSB654*<|@  d 7yI/pQ^n_V:dD?ID$;6lŪ8˫r}֘_Ί! (Í]ʦFx b| ;,:j.q*x>'f'z ww ,-dar@r"v5l$;+dsWnYĢ>z9# 5O7Y  7r{9#MMhv58drH'Udpܩa.pv-[ 6;BZEVܡɏ@'o :FLjȜA4[Qؠ [VJkl{YpB3/]N%B$# }t*Aw endstream endobj 2704 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2705 0 R >> endobj 2706 0 obj 736 endobj 2708 0 obj << /Length 2709 0 R /Filter /FlateDecode >> stream xUKo@W̭ %}˭UJ=bE`6MqLS H;fx( 8WJ$\x w ]=_`?izhoFf'tvgm kCm\Y;XY}KCd%d@]7f MNIox>QQJE hϗuZY}WuiPK9LPʰs`ta C0 G6e\6+7lQd{ I `ix b.10 0ټUiu U# $B?->gY02ܲ6qy5t(J" ;2:=)di XZ4; Җ"%ax|eղLwfK^[-8948N:ޤLf ݦ9K߻i͚tJz2ɲͽ~ IKu7q[]ntOe 'Z+LIv1xW qd XIFFBp ]ok?* V MVZ١S.c;&.|LW®,کIJ4w??91 H";Luĺ(PATqwk.W9hy@b)UJl!pQb$nk4 Io4K endstream endobj 2707 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2708 0 R >> endobj 2709 0 obj 772 endobj 2711 0 obj << /Length 2712 0 R /Filter /FlateDecode >> stream xTMo0 W0`ɡ$nźءqĀc ~d[ko;uNIGa@w%0 ynC) wh'S99OxC޹)lOB1-9qCD\ˇCōU Izhvw& 2ܩTJb(/.|^X30؍U%t -:*;ѺU^gyPC,.MC(b.OxR(}^͟$`~LT!NU٢0W`WKd8ؽJ'g(G/O%\`rsr GeOۢisa,+94 +v{>YZg;9_cZVMFͫF=:r]񳰘'fAga(ӹWksRqeyu '/ F}^a3%6j>bSJFZdb}J endstream endobj 2710 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2711 0 R >> endobj 2712 0 obj 698 endobj 2714 0 obj << /Length 2715 0 R /Filter /FlateDecode >> stream xRKo0 WG)~e kb;t3C[ [Jm,7,$ H N<> M<d:Zw)E#/R/`H GM?w8>`#0meڋr(e-?{'cP;3=K߈W<^s<8Ox9p'9#Yu~Kj>Y0#dk\7tاy6 _dlك.lJ'}042U`M3T̨Fh~};eLkQuі~bc5jt`>Uڦk,TzX37/ ٱ׃牳+vr5NZ`g!7b%TmX : endstream endobj 2713 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2714 0 R >> endobj 2715 0 obj 427 endobj 2717 0 obj << /Length 2718 0 R /Filter /FlateDecode >> stream xUKo0 W&F X;4E:cT[ߗd;eJQH~H%\CtZ!V!UF$%v _;4nóA畱WzbC`bl,pGL!7oPͲoz뒦ۢA$45:2m]ѢG'Ct\T\4p#;a'¬ic'> qͶmGUR䋅L,J2,N83)e|azgf3BmrބYsNsz4s%y aYQVbI)ʢDFt !lBqEӬ^b_&eQZp&t,"WlNzwH̴EaLU e,^צ>]Ǝy;1,I̡j8[M?yb:'QF2٫8禍3N,(=@?{BpBكq4.cq$$\GQ^Bǟ'OAQ M*vͨy0> endobj 2718 0 obj 624 endobj 2720 0 obj << /Length 2721 0 R /Filter /FlateDecode >> stream xRr0[B/2$ϤP8>'>,ǒa_(,9 :T̥܃ ރRyY $N|1G7+ ^݁tz~9b-nm_:ѵ&=P݈f5Mā^z6.$7O003w@T8|\ʄٙY¼ha !f2MfP]ԖwhH]c<25W> endobj 2721 0 obj 380 endobj 2723 0 obj << /Length 2724 0 R /Filter /FlateDecode >> stream xSn0 +xL(ʶ:a),uҴ8ζ(I)zd"H=Z ߹ی%fb50H !aN ZCl<­gqw@xx] V~GpBHf{˧&&ASk1M!kqthEͨ.1odN i ο veӵfxQmݩ8iaP;DXrh x5초BM>E>~ݓ{1$IiDEawEZqoD埪L+&OE QgZ¬,2sZ 6۲NYuw="Yo^eXoG&6WpY{%(\sE9di^j zZÃR8v>>V|2c# endstream endobj 2722 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2723 0 R >> endobj 2724 0 obj 477 endobj 2726 0 obj << /Length 2727 0 R /Filter /FlateDecode >> stream xSn0 +xL(ʶ:a),u8ζ})Izd"H==>Z ߹ی%fb50H !aN ZCl[  #|#F-~#D A!$}˧&&AC{1M!<2ъQC~cȺѝ@`7 sвZDT@T((QptN\Wt;='G ;-"FlOE_?}~4$;"5xLd_[i"/Jx2d?fe2O?Vvu1ԇE7y^PS&6ɕW]{ )(\sE9di^r zZÃRh;MK_V|b endstream endobj 2725 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2726 0 R >> endobj 2727 0 obj 476 endobj 2729 0 obj << /Length 2730 0 R /Filter /FlateDecode >> stream xSn0+-$ommу=A،ƢYNѿϒeTŒ]>1H[Z¤dOmN@*A%m*N@D\PBǰph (x26w|F{n_a>ݧB~+Q:S2vyO re[ȿF ܌/XҗrFawgo]Lv[k0 I.S"u@L>֦h x.kCpg`Rˢ6Sh*45 {k坩aLDfdz|iƃ]>~Smb1lKc ӣ(<"S N6YA)cE3qH\?{h! endstream endobj 2728 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2729 0 R >> endobj 2730 0 obj 516 endobj 2732 0 obj << /Length 2733 0 R /Filter /FlateDecode >> stream xSKs0W19DÒ,nMv7&!Ɂ LLߕeMިafwV}'0V<' ugRxB:]&x PD'T^'w `tm#v V>#) 偢Ģ6R* ,[dm~?=37A%l2X~e%OnjD5,v([q„@h:ZD pe> 2H)6{2#R$X/պڇ,q5Z] l z¥ 㸑]ɝf(KuXkpڸKC6xrɥۘ1fsA endstream endobj 2731 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2732 0 R >> endobj 2733 0 obj 481 endobj 2735 0 obj << /Length 2736 0 R /Filter /FlateDecode >> stream xRn0+\y_Ro=8MԼH*v zq]ͮwgv#L6^ -n8< pP`:k䈣IRNRWڨ` .|\yI:_hV{_Eed~FbzP>Lzqc29 ל> endobj 2736 0 obj 375 endobj 2738 0 obj << /Length 2739 0 R /Filter /FlateDecode >> stream xTMo0 WQeKmӲء),q QةDz$H @zX ˂t:w*P@'k]=A%Z&6 {|" ^kl֋-xk!e>kh5" +i#!-c^gKWՇtwVO ]M >Jp(K`-86 :҄޴*٭! >a4b)7 ~I͠=\mګB'> $ƾω&#/.t\Y`7rHr) e1 >)ԯs)Kz ́d!-U4~/(S!8>PV&oP;BU`mbXNWx3LLPG(: L(T屉MZ\{R@ߪtY 1\(olw=fͲwouGR cgn_e~-~-'7_3ys endstream endobj 2737 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2738 0 R >> endobj 2739 0 obj 516 endobj 2741 0 obj << /Length 2742 0 R /Filter /FlateDecode >> stream xTM0Wk;skҍò"b aqH`a'6 y4<~&+ˊ<>@HގtY#C,\|M a<8t5f)1x rɗK[7;ml$lj;}0 x.n'(d05 = $׫<@Y*ͯ$vDTWpS{1H'h~ Sct*~Z?n< & *xQ\,_=\4.؍Iz!D|^ ^+`7VU3w(]38P)޶E{(U(s&Hzy6Y/&&5ADCQOv1\)*PUՙuan7M U@v[7״"QFvטv`O|f;W'"r('9tct>GGqN\ endstream endobj 2740 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2741 0 R >> endobj 2742 0 obj 547 endobj 2744 0 obj << /Length 2745 0 R /Filter /FlateDecode >> stream xUM0Wqv]$v̭U?J76+@DHĨw؞( y{IOnQt>+B#XCkGS-\!4n΀bkQлSX_d~"5>|*3e{2v>#@2 |KN QSH(;aGo(=mm'MǯWy# eq_rDWp[h>)Q8]NxTSEKh-6+p.ǵS;g\{n'!3C5C*C(%n.su+Ƃ]p Gn.[,tO+MPCQI> endobj 2745 0 obj 605 endobj 2747 0 obj << /Length 2748 0 R /Filter /FlateDecode >> stream xUKo0+H`ۮ!iC"51)8wK"y71t8,Vk1DXI ,&<:|GᕐxD~F(,[DOuƷM/OO):~$(%B,M(,Eaɷ [7Kml|RvD>Yn>W}vP0t9xHt?$1=c?pc;2t2>Oz<<`>ID:CF:XU4)}L*qcf\yfsStUGJ+9L&aba3UƜ$&5ps.O 8}%. N mOHzw[S۪ݙf#U`4%TYrl)鿓a"!1e8}ih 2NTY&qf:;Smb: z,).br%> endobj 2748 0 obj 655 endobj 2750 0 obj << /Length 2751 0 R /Filter /FlateDecode >> stream xTK0Wk;NlskՇSFaY6$lbT;tO4Ɍ|}2fk8(QҪ"5r ^%lBaIA|'OhC?kɸ[3X)- ][L3x FG@3WV[j&CHں3?a@8nj~6?1ĒZ:8&at )o'ٮ }G(gr2h~ΉQL%ȸ6j]t k)+64> endobj 2751 0 obj 576 endobj 2753 0 obj << /Length 2754 0 R /Filter /FlateDecode >> stream xTK0Wq9GZ!TzXVU "&+}vmO4Ѽ?3y&PZlC;%@f*̀'TNNaz8HxD'VX y|Bv.?Ig$ s A8]z,er*bw\uw LGPָ_ɧbPrNB]h `H6?iCAui1ٝ(F<񼊃`>ܴ!Q>3#Q^kH*\>&tU8ٙj;Wܘ$9$ .qu f8-̩PX5u< y+Ɓ[߲Ew 9eGbmBeT\L]m|N@ǭk*x]<{/\4aY696\&4B eҥ/|+L8?)t/iYSm=o &3nܮm`oQ5mVlMmYU:3 oY6vlX  endstream endobj 2752 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2753 0 R >> endobj 2754 0 obj 535 endobj 2756 0 obj << /Length 2757 0 R /Filter /FlateDecode >> stream xTK0W֪ҍòZ!0 61]G Ƕ'Dh3}yE"5> [We`v`%m ~!|CO>89/'D k@yF(̙bOemfƺz<!mcKc) Ctg8 d#'qwؐ'!nl$OZo  rʢ?)wm~{HdHx)nOBȇ#XkoީbgghTjn^SJ P f,Bw8NJ e c> endobj 2757 0 obj 533 endobj 2759 0 obj << /Length 2760 0 R /Filter /FlateDecode >> stream xTKo0 WPMOmNjIvjGYv> endobj 2760 0 obj 531 endobj 2762 0 obj << /Length 2763 0 R /Filter /FlateDecode >> stream xTn0+’Bѷ]F@q6m PT}d[ғ+x3,z!J$/Ľ*TDPB/GP[#A  E*y|B:vs~ Q~ga7`M>8tu(Rq$4=>F/lmvfe''fFɗa`80xJv?2D!;c?hסvdz ^|y;`cǓrׇD:Ghr4vH{'ĵs« G? jaNM&D4dvѬcA! "E$TJt~>&rvGWV5xYBDu0[C$EC/jۚ* UVjo3c:V֭k;F_젗= endstream endobj 2761 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2762 0 R >> endobj 2763 0 obj 543 endobj 2765 0 obj << /Length 2766 0 R /Filter /FlateDecode >> stream xUK0W]$v̭URot#Y!ȃML+}q HoɻǀRqX{c 9UX@x9rA]Ba £{yEPh]~B{OB`DxKRBϕ}89^?T{HFo!okmƯg }id/I3CsKg0 ;j\lkNKĉ;y eq>)w ><$%xRvHNĵr« Go -w¤e1yamfx^LA g>.p~NFK O¹-ְeM߷ydW B:_i}+DH)6|'baY{YidqI@aS)y%PJIgl+C- l˴0"F1a ʩû :9s|k TJvn-*S]UԝYn*<jT>SI(6*4t^WS/ endstream endobj 2764 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2765 0 R >> endobj 2766 0 obj 593 endobj 2768 0 obj << /Length 2769 0 R /Filter /FlateDecode >> stream xRMO0 W#N]ALT0qִԏm@{lF03Lbٰ͈ $A> endobj 2769 0 obj 345 endobj 2771 0 obj << /Length 2772 0 R /Filter /FlateDecode >> stream xUKo0 W&ɲea`إh\Gqκw(RɏKH!ʜV@rpVdHKs5|vr{Kxt衻|\[ }byFaJ$|"P*re83Xq07fw0༝qt&st2^?hnCMۚҶm$҈ fAtb,5DH d{ gQ#m잏 w| JT*JZmJ2,Km>uCpR0`h=1No1z<s_tVpK׵xHvKxŦLN0U((Ŭ 6Fy@EVƗee9BLxDP#ٺ26y3B>ǔ'qjܐdI|aCU9bGzU,* 3c M~]:w"T.#lsEDDpF͢x.>TRNh/B<*b :`Fu)\ȮyHE/~צ =`rpJ~*%ˎu<f,lpH7 TfU~A znӪ$M-d4)28+M?AӏtT%dTL5_;?2 endstream endobj 2770 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2771 0 R >> endobj 2772 0 obj 726 endobj 2774 0 obj << /Length 2775 0 R /Filter /FlateDecode >> stream xTn0+ M"[Eb)ش"ZBhjc=yf|P]A("L~LC܇Lx?áu {G+»w;)$ާF!Z)J 4~_f4+72X_n܌N0W+"ònJkJ> endobj 2775 0 obj 674 endobj 2777 0 obj << /Length 2778 0 R /Filter /FlateDecode >> stream xTK0Wk;NURUò68!@BhO4 y<3gwȐC9N@rpNdk 𣄋uBa P> endobj 2778 0 obj 618 endobj 2780 0 obj << /Length 2781 0 R /Filter /FlateDecode >> stream xTn0+T@LBɷ]Т@X@qD)ؒ ߡ͎873b@ԋ8ąu} ]!܅zۅ\|p1x_ViQj= BN%r<'|GOlCX͏*TA.!n}O،9dAN\FfS0'ohz }1c֫:$UŻ_%,8>:\Wأ8%\n (v/(=qrN:Qwp™M)Cd9q\Dc:{˹8Oo%F DPȦ2 m퓄;Tփ[>]t9{RVF5CjpA? {FMd,`KpXȲ  n@<?TǡCث=B].XKx>a89lZ5<gRwhe}ɩɎ2UٱF=dF#G\NFVYi`[r]ڗLU#of[׀;g5Ї -(I8lHj TUZ eJ X(Ipto̓ endstream endobj 2779 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2780 0 R >> endobj 2781 0 obj 633 endobj 2783 0 obj << /Length 2784 0 R /Filter /FlateDecode >> stream xUn0+-KR{n-E/A@[,T#R ZeIOl gy3oG{1]<2!7D~#܇ emå=rj7)P4xr詻sk7)ΧF!yB/#/<6Mu8( |Ip\cMɱ ѥb$ǀn/CIۨʡm'o{> endobj 2784 0 obj 719 endobj 2786 0 obj << /Length 2787 0 R /Filter /FlateDecode >> stream xUMo0+JkH{hlҶeZQ0H;HJ[7ao̘< (~zq}Qa.\"܆:ۆ\|knBc iP21EA5[zp?Bj\g Kd9r-,%kՙ٪dت!XpfRʐ(ZØIs1P Sz)QRPa$a$ܪ0`^vPl8nv#ժʪ-)]uj_Lr,YdzZT鬪џ.NLXuYt]Y 6O_Z.Fk? % {U60KhbB?}3>Br~8Nc'bmޤ  'Vu-]_\w:bmKQEeִ҃s"pSΈ7LI%]Nlo/nw1L"%+dH4{6A8+Vyejx*+ɪ819NsNqw{&"@9v2)Uhn/T5UP)<Нtz\CbJ2x_op- endstream endobj 2785 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2786 0 R >> endobj 2787 0 obj 734 endobj 2789 0 obj << /Length 2790 0 R /Filter /FlateDecode >> stream xTMo0 W&s۰tإXqrj) GN"ISf@񉤟ne<6C8C>Ey2f ?P<<]@O<S|W%$QNG '2 hFB7'0v8ptJ+-صGNf{D5X$Ix1zۍhB2fY1|11,IDxǮ6J?I HI`8X(qeڮ֪e, CiJXZRiTQIϊ QX鶚x[1M;MmΧY> endobj 2790 0 obj 645 endobj 2792 0 obj << /Length 2793 0 R /Filter /FlateDecode >> stream xR=O0+vHlU#1Ti#{8)-kH,ݝ߽;3L a8 (Pa#\?5>:[|0` 2AſtzEؓ~9(dN Ysn`}#zS;`8(aCR3'3*}i](w^=vH}@T_b 0kzf{ZbީNaa2SjSix7J{(pKFU@չ)ZVkOU[4mչrK^6t49 endstream endobj 2791 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2792 0 R >> endobj 2793 0 obj 343 endobj 2795 0 obj << /Length 2796 0 R /Filter /FlateDecode >> stream xTMo0 Wö:l[;4J" cK?ɒ'MR'R|E}r:ꂏJR 1 Ġe5ӳ V-O E4w|ї<-bD'!Fi{t7˽)FbG-?] d6F&pCA}k6/7^Ձ2T~ܴH0N"q >a@1ejWu 1 V4mfNFzygSD ØXq/)CA0-l VQzut{ͨ94sκ`gyMJPqA<)<"Y`c{y5E-gKPݬ_k٘ KD4vP%Hp(hWl-UJk&SV!!a. evnB%Ŕ`7JøMa)ƹB۫jV}[E6 MlVYov"H䵝G endstream endobj 2794 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2795 0 R >> endobj 2796 0 obj 562 endobj 2798 0 obj << /Length 2799 0 R /Filter /FlateDecode >> stream xTM0+9kZ[(H=lV+ N@M1%۞R?̛Gߣ^˜CV: yPBoOYXChS9;/́":YYu=?%q>=($ۑ"x!DDΒVhU LBPH~8ߒI_.UWCH7mt#|N#Ƈ[)Ę샎mP>4B dDQxQtSwf u8%!vOx4DgL)umˣ|mt7Ç g. A0F<UC#(ImiؽxʄhNE&KsG]S@U}@^ HFqCXXJ`%K`O> endobj 2799 0 obj 611 endobj 2801 0 obj << /Length 2802 0 R /Filter /FlateDecode >> stream xS0+{;8֪J!"VQ0iI E6=р4?{3CcP`ޏ͝8t /\u-x]^a|NOpt}i #M_ aR8za~4G&k 4[<@=tI.yˡN[_vD83Xsm .FKyNOgo ]^ Y2Z07]{7HWG@5QEA Z˼)r6;SVhH@(i4t3 'n)>)'O“/Mɫz> endobj 2802 0 obj 532 endobj 2804 0 obj << /Length 2805 0 R /Filter /FlateDecode >> stream xUn0+M }k͍Pd"QHߗdv8̛y2k$@QÐb,$0Tvgea1; n!@9Mzv,= -8D7@RbMӳ^ntKBA?)!|NxQLq&旄n'ӈ'?{]B:gmC8q ́ϰ^fgqwM~Yb'`];w m\vٚ'Gёж.ZP5ţ R`$$"M)O )93y c/#$9K输 ^.khp4ҹyHZ$5⳶aqlے nI (yrt,|&F>2J鮔+1ޮ (d>wRO*xĈ\ !s (kyW Q@^M/5lJEWrGF|'qBY EGeR\VN=ݨa8K=vEeX6 zzV8a_{$5}_^NjnCN.r\ endstream endobj 2803 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2804 0 R >> endobj 2805 0 obj 650 endobj 2807 0 obj << /Length 2808 0 R /Filter /FlateDecode >> stream xUKo0 W&YmiA(N,(Yn{Icr P|0/!9t 0q89xwW{ ;@)] }e[ r3@2BcO$ %!7GlyY5YS5,V,_BC_ [mNW;!ѡZ0luisϽBcOmP1?5<5qd#RDQ{6H'Ne{«R62o=c]D)DpRʰ9hn )0ey!|~$2jzMUCS-U '];i;G$E)QsH0)R)AX]nuvuz,IDRTovXD$II) &tu u)aDt^GC'g(G\lD@7~_=z<­EKm2Ys dXf=nhQSYIH0F(zQՃb~shf+ޫr):@$"Z/J~֊=ZՏEG\D6%rJJ/QYn-+ז^UX&eu&?"CP~ endstream endobj 2806 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2807 0 R >> endobj 2808 0 obj 713 endobj 2810 0 obj << /Length 2811 0 R /Filter /FlateDecode >> stream xTn0+JR+sK͈ Pe!jQI9ߗlSRG3|3# nRPMCA GWNcA r7~D"B-hk@y:VA}A^6TEfT'-bM3W uҼQP{#Tߣ/ՄWr=8";I K4?{]׶x~׋<Й YL/K@r"xsOŅ!'0NJFBA4wWby<υɤ%$&8A~H> 3' -<RkkAh6) cG"eOl&<93HK'IԪgn2pR#gv~L/ZNk.:НQsA)އND`zvh|6Zt_jͩ&/m8 endstream endobj 2809 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2810 0 R >> endobj 2811 0 obj 647 endobj 2813 0 obj << /Length 2814 0 R /Filter /FlateDecode >> stream xTKo0 W&Oa݂ء)Qa~$bNl;ev1G-ޱ19Q #`!!nཅK =|JGo5wzs| ;cQHc|Fh( bHϝ=K x[IV3<eϐ~>g|USCC6_L€G&r[zZlʻuk[Hk|*:ҠS)ui.Q"Uܸko>>pJbSN5F̬hߍu pSʰk0^&sy|ӟ  j^Y۪ GwY}G'Ȓ]ǡFQя?`S gF#"D']A twRjilz*̀2Uwއzw*Ti2:BA$"F)4y q8նm_tЖf6@!I]$j}pc8$Ұnp ANw%?ͽ+NUU+7z endstream endobj 2812 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2813 0 R >> endobj 2814 0 obj 627 endobj 2816 0 obj << /Type /Action /S /GoTo /D [2653 0 R /XYZ 72.0 720.0 null] >> endobj 2817 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 230.94 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2816 0 R /H /I >> endobj 2819 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.921 709.5 541.921 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2816 0 R /H /I >> endobj 2820 0 obj << /Type /Action /S /GoTo /D [2656 0 R /XYZ 72.0 720.0 null] >> endobj 2821 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 257.32 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2820 0 R /H /I >> endobj 2822 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.738 697.5 541.738 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2820 0 R /H /I >> endobj 2823 0 obj << /Type /Action /S /GoTo /D [2659 0 R /XYZ 72.0 720.0 null] >> endobj 2824 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 237.6 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2823 0 R /H /I >> endobj 2825 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.876 685.5 541.876 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2823 0 R /H /I >> endobj 2826 0 obj << /Type /Action /S /GoTo /D [2662 0 R /XYZ 72.0 720.0 null] >> endobj 2827 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 263.98 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2826 0 R /H /I >> endobj 2828 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.692 673.5 541.692 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2826 0 R /H /I >> endobj 2829 0 obj << /Type /Action /S /GoTo /D [2665 0 R /XYZ 72.0 720.0 null] >> endobj 2830 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 217.05 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2829 0 R /H /I >> endobj 2831 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.018 661.5 542.018 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2829 0 R /H /I >> endobj 2832 0 obj << /Type /Action /S /GoTo /D [2668 0 R /XYZ 72.0 720.0 null] >> endobj 2833 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 243.43 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2832 0 R /H /I >> endobj 2834 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.836 649.5 541.836 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2832 0 R /H /I >> endobj 2835 0 obj << /Type /Action /S /GoTo /D [2671 0 R /XYZ 72.0 720.0 null] >> endobj 2836 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 262.6 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2835 0 R /H /I >> endobj 2837 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.701 637.5 541.701 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2835 0 R /H /I >> endobj 2838 0 obj << /Type /Action /S /GoTo /D [2674 0 R /XYZ 72.0 720.0 null] >> endobj 2839 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 288.98 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2838 0 R /H /I >> endobj 2840 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.518 625.5 541.518 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2838 0 R /H /I >> endobj 2841 0 obj << /Type /Action /S /GoTo /D [2677 0 R /XYZ 72.0 720.0 null] >> endobj 2842 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 237.62 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2841 0 R /H /I >> endobj 2843 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.876 613.5 541.876 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2841 0 R /H /I >> endobj 2844 0 obj << /Type /Action /S /GoTo /D [2680 0 R /XYZ 72.0 720.0 null] >> endobj 2845 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 264.0 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2844 0 R /H /I >> endobj 2846 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.691 601.5 541.691 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2844 0 R /H /I >> endobj 2847 0 obj << /Type /Action /S /GoTo /D [2683 0 R /XYZ 72.0 720.0 null] >> endobj 2848 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 232.62 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2847 0 R /H /I >> endobj 2849 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.909 589.5 541.909 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2847 0 R /H /I >> endobj 2850 0 obj << /Type /Action /S /GoTo /D [2686 0 R /XYZ 72.0 720.0 null] >> endobj 2851 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 224.84 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2850 0 R /H /I >> endobj 2852 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.963 577.5 541.963 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2850 0 R /H /I >> endobj 2853 0 obj << /Type /Action /S /GoTo /D [2689 0 R /XYZ 72.0 720.0 null] >> endobj 2854 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 251.22 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2853 0 R /H /I >> endobj 2855 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.781 565.5 541.781 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2853 0 R /H /I >> endobj 2856 0 obj << /Type /Action /S /GoTo /D [2692 0 R /XYZ 72.0 720.0 null] >> endobj 2857 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 254.0 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2856 0 R /H /I >> endobj 2858 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.76 553.5 541.76 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2856 0 R /H /I >> endobj 2859 0 obj << /Type /Action /S /GoTo /D [2695 0 R /XYZ 72.0 720.0 null] >> endobj 2860 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 229.82 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2859 0 R /H /I >> endobj 2861 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.929 541.5 541.929 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2859 0 R /H /I >> endobj 2862 0 obj << /Type /Action /S /GoTo /D [2698 0 R /XYZ 72.0 720.0 null] >> endobj 2863 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 529.5 189.006 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2862 0 R /H /I >> endobj 2864 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.072 529.5 542.072 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2862 0 R /H /I >> endobj 2865 0 obj << /Type /Action /S /GoTo /D [2701 0 R /XYZ 72.0 720.0 null] >> endobj 2866 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 218.99 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2865 0 R /H /I >> endobj 2867 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.003 517.5 542.003 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2865 0 R /H /I >> endobj 2868 0 obj << /Type /Action /S /GoTo /D [2704 0 R /XYZ 72.0 720.0 null] >> endobj 2869 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 221.77 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2868 0 R /H /I >> endobj 2870 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.986 505.5 541.986 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2868 0 R /H /I >> endobj 2871 0 obj << /Type /Action /S /GoTo /D [2707 0 R /XYZ 72.0 720.0 null] >> endobj 2872 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 216.77 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2871 0 R /H /I >> endobj 2873 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.019 493.5 542.019 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2871 0 R /H /I >> endobj 2874 0 obj << /Type /Action /S /GoTo /D [2710 0 R /XYZ 72.0 720.0 null] >> endobj 2875 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 218.99 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2874 0 R /H /I >> endobj 2876 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.003 481.5 542.003 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2874 0 R /H /I >> endobj 2877 0 obj << /Type /Action /S /GoTo /D [2713 0 R /XYZ 72.0 720.0 null] >> endobj 2878 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 469.5 200.6 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2877 0 R /H /I >> endobj 2879 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.996 469.5 541.996 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2877 0 R /H /I >> endobj 2880 0 obj << /Type /Action /S /GoTo /D [2716 0 R /XYZ 72.0 720.0 null] >> endobj 2881 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 244.56 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2880 0 R /H /I >> endobj 2882 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.827 457.5 541.827 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2880 0 R /H /I >> endobj 2883 0 obj << /Type /Action /S /GoTo /D [2719 0 R /XYZ 72.0 720.0 null] >> endobj 2884 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 445.5 194.52 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2883 0 R /H /I >> endobj 2885 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.036 445.5 542.036 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2883 0 R /H /I >> endobj 2886 0 obj << /Type /Action /S /GoTo /D [2722 0 R /XYZ 72.0 720.0 null] >> endobj 2887 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 216.78 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2886 0 R /H /I >> endobj 2888 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.02 433.5 542.02 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2886 0 R /H /I >> endobj 2889 0 obj << /Type /Action /S /GoTo /D [2725 0 R /XYZ 72.0 720.0 null] >> endobj 2890 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 216.22 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2889 0 R /H /I >> endobj 2891 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.024 421.5 542.024 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2889 0 R /H /I >> endobj 2892 0 obj << /Type /Action /S /GoTo /D [2728 0 R /XYZ 72.0 720.0 null] >> endobj 2893 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 219.55 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2892 0 R /H /I >> endobj 2894 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.002 409.5 542.002 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2892 0 R /H /I >> endobj 2895 0 obj << /Type /Action /S /GoTo /D [2731 0 R /XYZ 72.0 720.0 null] >> endobj 2896 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 246.76 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2895 0 R /H /I >> endobj 2897 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.812 397.5 541.812 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2895 0 R /H /I >> endobj 2898 0 obj << /Type /Action /S /GoTo /D [2734 0 R /XYZ 72.0 720.0 null] >> endobj 2899 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 385.5 263.457 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2898 0 R /H /I >> endobj 2900 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.588 385.5 541.588 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2898 0 R /H /I >> endobj 2901 0 obj << /Type /Action /S /GoTo /D [2737 0 R /XYZ 72.0 720.0 null] >> endobj 2902 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 214.55 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2901 0 R /H /I >> endobj 2903 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.036 373.5 542.036 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2901 0 R /H /I >> endobj 2904 0 obj << /Type /Action /S /GoTo /D [2740 0 R /XYZ 72.0 720.0 null] >> endobj 2905 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 210.11 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2904 0 R /H /I >> endobj 2906 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.065 361.5 542.065 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2904 0 R /H /I >> endobj 2907 0 obj << /Type /Action /S /GoTo /D [2743 0 R /XYZ 72.0 720.0 null] >> endobj 2908 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 259.55 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2907 0 R /H /I >> endobj 2909 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.723 349.5 541.723 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2907 0 R /H /I >> endobj 2910 0 obj << /Type /Action /S /GoTo /D [2746 0 R /XYZ 72.0 720.0 null] >> endobj 2911 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 287.32 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2910 0 R /H /I >> endobj 2912 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.53 337.5 541.53 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2910 0 R /H /I >> endobj 2913 0 obj << /Type /Action /S /GoTo /D [2749 0 R /XYZ 72.0 720.0 null] >> endobj 2914 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 263.44 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2913 0 R /H /I >> endobj 2915 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.696 325.5 541.696 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2913 0 R /H /I >> endobj 2916 0 obj << /Type /Action /S /GoTo /D [2752 0 R /XYZ 72.0 720.0 null] >> endobj 2917 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 231.77 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2916 0 R /H /I >> endobj 2918 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.916 313.5 541.916 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2916 0 R /H /I >> endobj 2919 0 obj << /Type /Action /S /GoTo /D [2755 0 R /XYZ 72.0 720.0 null] >> endobj 2920 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 227.33 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2919 0 R /H /I >> endobj 2921 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.947 301.5 541.947 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2919 0 R /H /I >> endobj 2922 0 obj << /Type /Action /S /GoTo /D [2758 0 R /XYZ 72.0 720.0 null] >> endobj 2923 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 228.44 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2922 0 R /H /I >> endobj 2924 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.939 289.5 541.939 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2922 0 R /H /I >> endobj 2925 0 obj << /Type /Action /S /GoTo /D [2761 0 R /XYZ 72.0 720.0 null] >> endobj 2926 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 258.42 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2925 0 R /H /I >> endobj 2927 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.731 277.5 541.731 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2925 0 R /H /I >> endobj 2928 0 obj << /Type /Action /S /GoTo /D [2764 0 R /XYZ 72.0 720.0 null] >> endobj 2929 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 251.77 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2928 0 R /H /I >> endobj 2930 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.778 265.5 541.778 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2928 0 R /H /I >> endobj 2931 0 obj << /Type /Action /S /GoTo /D [2767 0 R /XYZ 72.0 720.0 null] >> endobj 2932 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 253.5 200.054 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2931 0 R /H /I >> endobj 2933 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.0 253.5 542.0 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2931 0 R /H /I >> endobj 2934 0 obj << /Type /Action /S /GoTo /D [2770 0 R /XYZ 72.0 720.0 null] >> endobj 2935 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 205.66 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2934 0 R /H /I >> endobj 2936 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.097 241.5 542.097 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2934 0 R /H /I >> endobj 2937 0 obj << /Type /Action /S /GoTo /D [2773 0 R /XYZ 72.0 720.0 null] >> endobj 2938 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 202.32 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2937 0 R /H /I >> endobj 2939 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.119 229.5 542.119 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2937 0 R /H /I >> endobj 2940 0 obj << /Type /Action /S /GoTo /D [2776 0 R /XYZ 72.0 720.0 null] >> endobj 2941 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 197.89 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2940 0 R /H /I >> endobj 2942 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.152 217.5 542.152 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2940 0 R /H /I >> endobj 2943 0 obj << /Type /Action /S /GoTo /D [2779 0 R /XYZ 72.0 720.0 null] >> endobj 2944 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 205.65 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2943 0 R /H /I >> endobj 2945 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.097 205.5 542.097 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2943 0 R /H /I >> endobj 2946 0 obj << /Type /Action /S /GoTo /D [2782 0 R /XYZ 72.0 720.0 null] >> endobj 2947 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 195.67 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2946 0 R /H /I >> endobj 2948 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.166 193.5 542.166 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2946 0 R /H /I >> endobj 2949 0 obj << /Type /Action /S /GoTo /D [2785 0 R /XYZ 72.0 720.0 null] >> endobj 2950 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 206.78 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2949 0 R /H /I >> endobj 2951 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.09 181.5 542.09 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2949 0 R /H /I >> endobj 2952 0 obj << /Type /Action /S /GoTo /D [2788 0 R /XYZ 72.0 720.0 null] >> endobj 2953 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 202.88 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2952 0 R /H /I >> endobj 2954 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.115 169.5 542.115 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2952 0 R /H /I >> endobj 2955 0 obj << /Type /Action /S /GoTo /D [2791 0 R /XYZ 72.0 720.0 null] >> endobj 2956 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 157.5 231.578 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2955 0 R /H /I >> endobj 2957 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.796 157.5 541.796 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2955 0 R /H /I >> endobj 2958 0 obj << /Type /Action /S /GoTo /D [2794 0 R /XYZ 72.0 720.0 null] >> endobj 2959 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 216.22 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2958 0 R /H /I >> endobj 2960 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.024 145.5 542.024 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2958 0 R /H /I >> endobj 2961 0 obj << /Type /Action /S /GoTo /D [2797 0 R /XYZ 72.0 720.0 null] >> endobj 2962 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 210.11 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2961 0 R /H /I >> endobj 2963 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.065 133.5 542.065 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2961 0 R /H /I >> endobj 2964 0 obj << /Type /Action /S /GoTo /D [2800 0 R /XYZ 72.0 720.0 null] >> endobj 2965 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 214.0 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2964 0 R /H /I >> endobj 2966 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.04 121.5 542.04 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2964 0 R /H /I >> endobj 2967 0 obj << /Type /Action /S /GoTo /D [2803 0 R /XYZ 72.0 720.0 null] >> endobj 2968 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 233.44 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2967 0 R /H /I >> endobj 2969 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.903 109.5 541.903 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2967 0 R /H /I >> endobj 2970 0 obj << /Type /Action /S /GoTo /D [2806 0 R /XYZ 72.0 720.0 null] >> endobj 2971 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 220.67 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2970 0 R /H /I >> endobj 2972 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.994 97.5 541.994 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2970 0 R /H /I >> endobj 2973 0 obj << /Type /Action /S /GoTo /D [2809 0 R /XYZ 72.0 720.0 null] >> endobj 2974 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 252.88 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2973 0 R /H /I >> endobj 2975 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.77 85.5 541.77 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2973 0 R /H /I >> endobj 2976 0 obj << /Type /Action /S /GoTo /D [2812 0 R /XYZ 72.0 720.0 null] >> endobj 2977 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 219.0 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2976 0 R /H /I >> endobj 2978 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.003 73.5 542.003 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 2976 0 R /H /I >> endobj 2979 0 obj << /Length 2980 0 R /Filter /FlateDecode >> stream xOu=?5yL3Lf,;hR#DJo?yHMl8x???~Ï?׮?|>ӧ/?##ڞGJ1{_>O~_?{7/}7߼~.|Zyf/^O|zU?r5zzK&qH%^/\"@@@@AAAA8@8@8D0D0D0D0E0E0E0E`&]v"8Dp)S.\"@06 c@|c'1q` 6l"D`.]"8Ep%K. s@0ws<@0bΟ߳?*WuWen8oR3yzo<qBAG7>Ef~:P)AuzI}Q-!!AAAAAIII,Y6dɲe'A,YNd9r"EK,c26],c|k@X!JddddddȲe#F,;Yvd9r$I,'Y.\d򼋣Z,s2w],s<2̃,,,,,,,W5pc_Ӈq~uz[e[mDq;~xx޷<5ydd=m1ʘ=wR7s!\꠺S-&&&...!!!AAAAIII,Y6ldɲe'A,YNd9r"EK,c26],c2vC,82222222ɲe#F,;Yvd9r I,'Y.\d27M,s2w],s<2̃,,,,,,,,kYyԟfmc'7s&7Y9r~XڈWL'8e3 u:RAuzI}kZ,kCAAAIIII,Ylר1QzH=6NzT7r"%OR-UDj"Rem0"5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.$Rem&zN"X!Dj=%PYYY&Y&Y&YW<߭OA_=ue8"hG^[-%緻ֶ= !N꠺S>Iݨ&I,'Y.\dre-Z,kq ԻXŲH-8Fj LLLldȲ\kzISSTFuPM,Y.\bYcZ.8Fj1PbYc& $$$$F,Yvdr A,'YNdrZ#XŲH-8C,kqdddddddY|~%eIJVIMAAAAIII,Y6dɲe'A,YNd9r"EK,kEbY+ŲVI-"HjAReeeeeeek?1`Dql7Hf{W(_՟;o<εn=(*aoeӀNZHݨR_ENWŲZHMAAAIII,Y>p|FՍ)ةNs:&I,Y.Re-zZh!XB Reeeeeeee#F,;Yvd9r A,'YN\dre-Z,kbY -Zh!Bj LL=CMッaq@~@؏ .v;͚=o֚?^vw+*uzI}ފJݨRR'CF,[Ym??^RFzT'CQT$E,X֭bYPbYRe݊B}e݊JMAAAIIII,Y6dɲ A,YNd9r"%u+*X֭bYRe݊B}e݊JMAAAAIII~!sm?nx,s<޹/z߿Of~*t<*DZmmQ˛[rSLu"kz-r|'kz-r kLj-r:mI|P^ $˻Z$yT.S]^k$'k;^$'kz}tTw%s=ҵk=V|m9H|R~O<-r n|'ZD9r IILj3nTvS:Lu4iT.S]HQNHTk9Zˁ('ZD6SmLj7nTS:Mu4iT.R@j-|'ZD9r R@jjjjjjjMdo23mk\_=/ N+\༝Z}\v7z@]N~jԇXCj LLLldȲB?'<,//%oO/%OMu2eTkA9֠CTkA9֠rRALj3fTvS:Lu4iT.S]Hj :$Ij :$?Hjjjjjjj֘2FL׸K7s'_}OYBFܽµ~?m[G{/C$c$˻zI2eTkD9֘rRAZ&RaLj3nTvS:Lu4iT.S]HNj͝$INj͝('՚;QnaaaiiiT6SmMj7aTNS:Mu2eTkD9ITkD9ITkD־~Ksk_1lw?i??,b(;oO;7~|w:3o^gWzfpw> 73wʛ ij3fTvS:Lu0iTNS]LujD9։MZ'6QNub։Mjjjjjjjj3fTvS:Lu0aTNS]LujD9։Mj$AubLj3nTvS:Lu4iT.S]HNlT&wR('մRl)m6[J-͖fKiRl&-~¨1[P?Q߿?W޿}ٶ>|IS󊌻 fwY>)i|4iT.S]ZS3IfZS3IfZS3M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HfjM('՚QN55 ՚QnaaaaiiiT6SMj7aTNS:Mu2eTkjF9LTkjF9ԌrRZSzz& vݎò^?M>u;6[Oc1n^ZfjOGmݍ(_JxɛZ /yZ>(4iT.R1Zc0wR1Zc0R1Lj3nTS:Lu4iT.S]rR1;rR1Zc0TTTTTTT6SmMj7nTS:Mu2eTrR1;rR1Zc0M5L5L5L5M5M5M[=itme7Sc> gC09)ǡnyZ>(oEy}SYnTNS]Lu"c#c#c#c'c'c' 0000444fT6SM0aTNS:Mu2EjlNj;AqjLj3nTS:Lu4iT.S]Fjn;Njaaaaaii6[lmLef#è->=۟_~0)̇ẋ `ay|QgIG3iTNS]LuǛ3Ǜ3=I͙I͙gLj3nTS:Lu4iT.S]~99~9T?ޜT?ޜT?ޜyjjjjjjj3fTvSMu0aTNS]Lu"Տ7g>#'Տ7gzǛ3Ǜ3Ǜ3jjjjjjG3a(̇ O/c>_pFM߼Oz'`[sqs@@yZ>(oay|QMj7aTNS:Mu2eTkH9tQTkH9tQTkH6SmLj7nTS:Mu4eTtrR"ZEIZEM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujM)'՚.JjM)'՚.RN5]Tm6[J-͖fKi{^Ƕniݵum;~'} /q5{^oolv~J>x)_s׈~/{Lϯk.ay|I^[*)'R)NrR-jmTTTTTTT6SmLj7nTS:Mu4eT֖JITJjmTkK֖JM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HTRNrR-jm RIDf?)Ị̂f.ˏaf }՟_g?_S;Wy?ڶ=ͅcA^C?ɛIkAa6SM0aTNS:Mu2Eׂ2IZPNׂ2IZPAׂ2M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HZP&9^ $'kAz-( kALj3nTvS:Lu4iT.S]HZP&9^ IZP&9^ $'մRl)m6[J-͖fKikX4 _mM\PK/;g?-)?v3V;_|B-.{h햧zay|Q^OPYnTNS]Lu" wR 9^OPT'(HnaaaiiiTY y|R^OP<-$Mu2eT'(HN Izz=AT'(HnaaaiiiiT6SM0aTNS:Mu2E$' Iz^OPTTTTTTTTڙ1`\~sY?_õv'7OO8fgͅ[(?(oO)rS:Mu4eT5IVIj^Tk5M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HVQNzrRkj^ ZF6SmLj7nTS:Mu4eT.Rkj^|'ZF95IVQnaaaii6[0^;ȝfX׀툳wï8`gl?s3'km۶?> fZ-n0ͅ3|P^K%˻Z-y|R>Mu4eT.Rij-H|'ZF9ւ4IQnaaaiiiT6SmMj7aTNS:Mu2eTkAZ $IQN MTkALj3nTS:Lu4iT.S]Z ('ZF9ւ4II~j-HTTTTTTTTxRJxmϽ\L̎?Bwoy޾9aO p~7r='̧Lc\w7<-ay|I^#ʛZ#IF2Z#IF26SmJ~w#ay|R>vA,Mu2eTk$C9HFTk$C9HFTk$C6SmLj7nTS:Mu4eTHrR Z#IF2Z#M5L5L5L5L5M5M5M wmvv\O؏moG- ׺7'o~O?vpzAΈ_ϵĀ5P՝%uQ=Pqeeeeeeee#F8$Kw嵀^fK2eTFj;NjT 8L5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujnFj;NyjQL1Fmm,E~,oz>?~Np{yEic߃ f Z_)y|R^+%O嵾RTNS:Mu2E5LTkF9@rRPrS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z5IkZ5Ikj(7000444fT6SM0aTNS:Mu2E5_Tk&N5_Tk&A5_TTTTTTmἢm6 룧=^}L?|?>Ԏ:|>x 3~.|[.ay|Q~~˥Y>):Lu4iT.S]HTqwR)':o\TqM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HTqITqR)70000444fTvSM0aTNSLu2Eu8ZKj7N9y㔓j7Nl)m6[wqBohBvz۶#.̾nwo W޿_ϏxX7;񶧵uㇰ[$s(oOϯGT"I!ܒ5^=ovƙ6۶\x[?EyYnTR_fyX-_f|妺Lu2EqrR3Zg('8C9M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LujmTk;I6H~jmTTTTTTT`޶nrkyLs.~s+>=wh~׺:w2u\G>?<,/\ɛ: WrRÅ[>շvx>Կ+>~7nƭ̝<+\Ojw#\ϸap9P(?(oO;Ay@.S]Z;2('ڑ!N#rRjȠTTTTTTT6SmLj7nTS:Mu4eT IhHjmҠTkF M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HvpPNrR]j A֓ܶ1wi?<q3x?ZZPĶm{}>p})Ow"n{$햧;ay|Q~~'YnT.RQjTk}Z$?HGQnaaaaiiiTRUN7NzT7s:&E,Y.QRe-zZ %XR(ŲBIMAAAIII,Y6ldɲe'A,YNd9r"EK,kbYŲ:I- C,kdddddddYsq|XckΔ}mr͜o_?|ӞWL$:@Iu*!i:[nT.R=6R=6R=6R=vR=vR=vR=vR=R=R=S S S SMSMSMSMSmLj7nTS:Lu4iT.RTc#H56RTc'I5RT00000444fTvSM0aTNSLu2EjnNjAyjZS>:<tͨ⼪/̨}Wo}X _^~iFu>n^C{Ώ3uwc ʛS yZ>(CwI8H8H8L5L5L5L5M5M5M5Mj3V}۷nyZ>(ay|Q>˛妺Lu"H56RTc#I5vRT 8H5S S S S SMSMSMSmLj7nTS:Lu4iT.S]Fj;NyjaaaaiiiS~r\O9u9`}h/o^y[zxÜOfO{k6o{<+uX,Ԅ|PojMM('՚PN55ϛ2p*aC4Y=n.Qw ɛziS:Lu4iT.S]ZS>I|jM('՚I~jM(70000444fT[mϹ[(J,Z%OMu2eTkG9֔OTkG9֔rR)Lj3fTvS:Lu4iT.S]H|jM$I|jM$?H|jjjjjjjȹm7ekOk漛X7_}ۇ]ܶm>1Vjysøc%c%y|R^<-s$7nTS:Mu4eT.R=6R=6R=6R=vR=vR=vR=R=R=R=S S S SMSMSMSmLj3nTS:Lu4iT.S]Fj;NjaaaaiiiiT6SM0aTNS:Mu2EjnFj;AyjjRl)m6[F#y˻sӷ \篔7mǝ?n𑍻C;ǬwﰼY>)|P~9RwMj7nTS:Mu4eTцjm(Nu!ZGJ~jmH6SmLj7nTS:Mu4eTцjmH9цjm(Au!Lj3nTvS:Lu4iT.S]H6ThCwR )':ڐrR )7U-͖fKiRl;{6~safx9o֧߾WSxU\LJyֶ=n.|mEy\/y|R^'K0aTNS:Mu2ErR Ȕjm@TkdM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]Lujm@Tk;dI6 SNrS S S SMSMSMSmLj3nTS:Lu4iT.S]Z)'ڀ,NrR ȒZ)700U-͖fKi6 @ ȏ)$OuԕaNS]LujmoTk{;fI7K~jmoTTTTTTTT6SmMj7aTS:Mu2eTk{3Zۛ)'L9fR͔jjjjjjjj)癌0Z{]3n|?L5fYbmεj7>vAy,˻~X,7aTNS:Mu2eTk2Z%I6!SN YTk2Lj+նDZ?'i|lE<,o2eTc#ڄL9&dwRMȔjmBTkaaaaiiiT6SMj7aTNS:Mu2eTk2Z%I6!SN rRMȔjjjjjj,#jײƠ s͸U}fo<~vd>4o}tl‡yCHyH%yX-_׉T7'u"Mu0aTNSLu"ڲL9֖eI,SNeYTk2LjHcy}~mEyH%y|R^'RI2eT֖eI,KjmYTk2Z[)7000444fT6SM0aTNS:Mu2EerR-˒Z[)'ڲ,AerS S S SMSMSMS2ϻ}x4JqsaSQvg_^_翿~ӏ}^=vrS:Mu4eTrR; rR9,rS S S SMSMSMSMSmLj7nTS:Lu4iT.R Z6I&ljM$?H&ljjjjjjjj3fTvSMu0aTNS]Lu"՚QN5a|'՚QN5aTkFlZyN3kgky79nFlӻ~I@=i]=s=y-ͅAy,˻~X,S:Lu4iT.S]Z;IwZ;IwZ;M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HIIwj('՚I~j(70000444fTvSM0aTNSLu2E5Tk~'N5Tk~G9rS S S SRl)mt⼅>ߔфmG]sw_뇍ywՇn]\{j.qsnR^U;'ay|Q~~TNS:Mu2eTyj=UTyj=rRRnaaaiiiTS7pmV(I-Os<,7iT.RRNc\8I+(˻{IrS]ZSNu>ZSNuqjjjjjjjj3fTvSMu0aTNS]Lu":NrR%IӧT8}IӧTTTTTTT6SmLj7nTS:Mu4eTqj/Nu>ZK~jOöڶC5ub~7ɵ݌OOFxǷYCq 2(?Rw˗ f|K9&4RMhjmB7rSLu"ڄF9&4wRMhjmB ڄF6SmLj7nTS:Mu4eT&4I6QN rRMhZ(70000444zZl۶juLMrW޿|th\aovNخ]u7=L;K:F:ROd9r"EK,tŲIz:"]jҡ>IJG,,,,,,,,Y67߷s:}C|P^oHwurS]LujlZgSNu&;֙蔓jN9֙蒇6SmLj7nTS:Mu4eT.R3)':]TLtIDTLtM5L5L5L5M5M5Mvo& 㘶cv•+>\O_~?! endstream endobj 2818 0 obj [ 2817 0 R 2819 0 R 2821 0 R 2822 0 R 2824 0 R 2825 0 R 2827 0 R 2828 0 R 2830 0 R 2831 0 R 2833 0 R 2834 0 R 2836 0 R 2837 0 R 2839 0 R 2840 0 R 2842 0 R 2843 0 R 2845 0 R 2846 0 R 2848 0 R 2849 0 R 2851 0 R 2852 0 R 2854 0 R 2855 0 R 2857 0 R 2858 0 R 2860 0 R 2861 0 R 2863 0 R 2864 0 R 2866 0 R 2867 0 R 2869 0 R 2870 0 R 2872 0 R 2873 0 R 2875 0 R 2876 0 R 2878 0 R 2879 0 R 2881 0 R 2882 0 R 2884 0 R 2885 0 R 2887 0 R 2888 0 R 2890 0 R 2891 0 R 2893 0 R 2894 0 R 2896 0 R 2897 0 R 2899 0 R 2900 0 R 2902 0 R 2903 0 R 2905 0 R 2906 0 R 2908 0 R 2909 0 R 2911 0 R 2912 0 R 2914 0 R 2915 0 R 2917 0 R 2918 0 R 2920 0 R 2921 0 R 2923 0 R 2924 0 R 2926 0 R 2927 0 R 2929 0 R 2930 0 R 2932 0 R 2933 0 R 2935 0 R 2936 0 R 2938 0 R 2939 0 R 2941 0 R 2942 0 R 2944 0 R 2945 0 R 2947 0 R 2948 0 R 2950 0 R 2951 0 R 2953 0 R 2954 0 R 2956 0 R 2957 0 R 2959 0 R 2960 0 R 2962 0 R 2963 0 R 2965 0 R 2966 0 R 2968 0 R 2969 0 R 2971 0 R 2972 0 R 2974 0 R 2975 0 R 2977 0 R 2978 0 R ] endobj 2815 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 2818 0 R /Contents 2979 0 R >> endobj 2980 0 obj 16461 endobj 2982 0 obj << /Length 2983 0 R /Filter /FlateDecode >> stream xTKo0 W&Yma@P;:c,cIΰ?N9DH~g!$@pFC(aCضF?XxOO{y\ErTЛק{d} %>5qfI wF5 \ Brϐ|$^>ײ#m_n@id$ =}67}#ϋ</KC@FI<E ^-}D>W:%ҋEm_nc&A3s b8̧a7W@e!',iLĹ8D)_j FՍ΂UfVCw (Ձ1ggceGQԎEjg {ʙ10)b)# 3b[i֙BlnU5$ 8hT{f %@Jp]*g!'p3`GjySS/h \[AeU+vt kvz{{z`淑@u>+b7i MÃڒMatk6^4A r4r,TVe^7dph endstream endobj 2981 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2982 0 R >> endobj 2983 0 obj 597 endobj 2985 0 obj << /Length 2986 0 R /Filter /FlateDecode >> stream xTn0+-˗^hS7#zHQhD" Dّ۹.H~IsemHTPP&FCwd# ?;|^7~C?>e\( Fh#SȈ}=+jwp7ΛAN;(~E?=]k>p O0XvPPfB~7HA_eЩ}|hH{ $3஽d_{G$ŗ} )blMcgwTA $' J9 kv`&3 g"kn9O9\j( 5 ziY9x.ɔqL6t g$Iߥ4Թ~GhB4C<sЏYƪZϜo'WJ1I:r]v~Ga$d7p89(d$Nqke8H<[8TkhPetâiX#U,F=o4CڕYgy.${8:r|ҭZ`Hc6e8]6эPil>T2ֵ̣ endstream endobj 2984 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2985 0 R >> endobj 2986 0 obj 609 endobj 2988 0 obj << /Length 2989 0 R /Filter /FlateDecode >> stream xTM0++6έU?ޢ \Tb;IBXSJ"y47o(7K;rA<hv0T(`w-G #r#~CnO>eއP<$ ~L3vpe/a.;]dbI}wKv+?Z{ ob# 9k Ì6[pq֫:YMɯ[#1@J!S{q'F_&<`BAЦW.kX4]~^7JBoؙ)g4 bSR \S R%Lg=2L5 , 5XcQ N&DZHzߕgS q?NCt(؏7ϕ J|kі'-~Ky^JænTZQjoO;Lk,-cY!IttX-;8ZVuA# Ԇ> endstream endobj 2987 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2988 0 R >> endobj 2989 0 obj 570 endobj 2991 0 obj << /Length 2992 0 R /Filter /FlateDecode >> stream xTMo0+hwY|zj?EECSU.qRvZBRHo]Ì̛1GKA^xQ عh pvv`K '_=@,[p~[[}%m'QO!֚YV n0Jk^K#;+?Ե9Blo[~Br?z-aq[D:[g 2ȸP-?90id=#>> rt9QUy}]U(`T!"'d h@d.!8jCVs@t 7Eu( Tl^Oer {@#ѫM_PJTI 㸕wj~ʓ4YD]UnWWu)֦QgF !t7P abE'ar9̶6XIǸim!"%0,Amj{+vicxiF´.uި>5,$G.{Rbf޽6',"ߺ[aM# 7yUpama깧Fa3{2wuu5?[w8_+@ms4YuU_-7zI_ endstream endobj 2990 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2991 0 R >> endobj 2992 0 obj 669 endobj 2994 0 obj << /Length 2995 0 R /Filter /FlateDecode >> stream xRMO0 W~W qD0Plf[i|5eul=~~v,l~dtXLy ~83_2N_D72_` hsɟdޜ? b_:=ps23 $1N#N:c6ToĻ^Wu(/qPx;r5y5 W;l"C*xn?]w"vH}pOd!pF1M Qrꠗf;ŮS|aJ02! T*j8n Z_]o÷VZC endstream endobj 2993 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 2994 0 R >> endobj 2995 0 obj 318 endobj 2997 0 obj << /Length 2998 0 R /Filter /FlateDecode >> stream xSMo0 WFrۀm!m׀-@?r;u2 RO#ߘ5JKx.$x B>0đ{;D+<0~#%_ |֓61=#!V "Im q ļT%zi!N6!ɾ3^za 2l[ҧY"q?FQնbh]#u|=4pb?/ ey4i.<|<SNtTQP#7{jH0?_r)> endobj 2998 0 obj 489 endobj 3000 0 obj << /Length 3001 0 R /Filter /FlateDecode >> stream xRO0_qgq>aiCb$ăi$Z?;NcVw @I`Ӣ9G!aFqha94V}dw< ܢ'S,?>rra`9L[/r <"`qKg'˙öfvz>:=e}@r%o;Ol#%8e0[x<ㄜ?A]o]{HYp:?EQ҄NJZ8jUPB I&ds84lwjN~ucmBb%Y؛.R#LwK8Kbh>teCֺzk/}vZ__rPSHD1@{nW@bIu$#G8e^$t[ЊukFW~srwG endstream endobj 2999 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3000 0 R >> endobj 3001 0 obj 460 endobj 3003 0 obj << /Length 3004 0 R /Filter /FlateDecode >> stream xUKS0WUK苡B)S?l`,'M=Q'CvIP}0C$9+n18p0!p*J |-`'?^Q8nЙŀGN/ 'wOa}J`|"*|)e@LTpup^@Zg] ZA=E|ČRDNVyW4u IjUgc&C[.z } =Y8#3f|:8lطV|}" -6qbE[AeP15~fE&QPܵironM85BD ҮlL4u gO yc62"\sMĠL9`RCT릂JתJU~Z&L7xlKah`YE;zhHdKx@ϴGF>HL[m8Lħ I8,| DP I!u8uƻ"VMQwJC?`c„.Es] [^g`ٗi'8  +FW[*GۨM(HGm }[u].qlɲh(KGuq|v˅䢰$mG夝fԍZjUbُiEDa7ySł8܅ / endstream endobj 3002 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3003 0 R >> endobj 3004 0 obj 666 endobj 3006 0 obj << /Length 3007 0 R /Filter /FlateDecode >> stream xTn0+rH֢ Лk=$AZ#TC))-+vړ+[`FyLj;(a]G Q'%101TT;  #j" _;4@wDUz64z%F!-qE&pHkZl659YϨ!D3J) 8E)u_Mil|?G,ˡ, 92Ē[&lZ|%Aۛq b'g6贋cz]4yf)(Gl)?K j>ᙬ*T亘{.fyh(R3˂cB#WaW!n9Ws|l;\oy9seP_5֭{5$<\]Ni]\ ,MQژ0|&0,^eyxJ )76Om})XȉZbCWB ~>IS۶lzoCZ2Z >nʭ[w]e^`k]Ѻ ĴdN endstream endobj 3005 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3006 0 R >> endobj 3007 0 obj 553 endobj 3009 0 obj << /Length 3010 0 R /Filter /FlateDecode >> stream xUKo0 We[mni +Ne'E(&NYEG1`0ɽV V%>>;  {@ţswŷ')ϱBJCBHpsxX&+v)IѨg- 18(F)e"Ng^bSgeQA+];ۯ,PuI! _HL|I'#6AIӡŶG8֫y! :bJά2JԄ >W p㪽i#,Cr]Z֦Ї_}b\"HN8xYu0bLWX@ȷ.9=swYW@N4:rGW}Vv.a;<^XeUg](BpϨ CYIH dv\u\G$P8 CIcg^mduW7k j> endobj 3010 0 obj 632 endobj 3012 0 obj << /Length 3013 0 R /Filter /FlateDecode >> stream xUKo0 Wemni +Ne'E(KN7v($?览(aYEOA@qIP pIx 9->5 Ba?:=(PbB*@ 5)HN8xWU0`k%FR doڮ@x(P/C:eSw'U^'I⪢x][P FUuӀ ?"̷M~ɋzqw LDRt .?2uwD8.@5IR I۹Wۘ^6f(36m ]3LJlSCiJp'R{_L1-zqƉ8;N8AEq9uy0 yg'O5;ϏN6ϛwk½x.M_DXmKFg endstream endobj 3011 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3012 0 R >> endobj 3013 0 obj 631 endobj 3015 0 obj << /Length 3016 0 R /Filter /FlateDecode >> stream xUKo0 We[mni +Ne'E(&NY^(H~b=F6DЪ$܇Zه>5x'Ba?£{x(xt1֣<>9>~QCxHQ)?)ECA  Ny٨W.Y{몂ƦZoMC"J&쉌/ژh8Dr~n^qZ-,Nvlk77I/.]pu\Hd)M{ُ8 KcZA$;Td4) endstream endobj 3014 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3015 0 R >> endobj 3016 0 obj 629 endobj 3018 0 obj << /Length 3019 0 R /Filter /FlateDecode >> stream xUn0+h’%JD@Im P}nOp8Cs" 8EMEQ|Tm}EX\,릆,4w1M_f4` pc> q %QZVPˡLZi\D\Fy\kpoO .)Ύ *[*/{וk93pd{J5<> e>3bi'I+.^ s="(Ca?1WEW) (3zq9h:茳* UPC|z \cMUU q3NGxqG9% SM),#)wŃKOm2hia!^J]G娨8VqbU,_S\lݸqUdt[?tHF endstream endobj 3017 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3018 0 R >> endobj 3019 0 obj 634 endobj 3021 0 obj << /Length 3022 0 R /Filter /FlateDecode >> stream xUn0+rDҷ]ޜ! mP}d-ݞ\/p<^nò^[Aĭ*GP@+Gŧ$\C(lGPO/xEN ;7Oa|J_#`UPk"PDp>kH ITf/|!QRʄN'^VrUYCjx/eqX‘,3:B:>:h۶]}"^b//3K:CF!"ntOdbX>*QbB7mI~PA go rL.Cu3rj^3M )t7P75%l0Ee߻;l 6> endobj 3022 0 obj 632 endobj 3024 0 obj << /Length 3025 0 R /Filter /FlateDecode >> stream xUn0+hUZ[.@oIkӎP-$'w($/^,3ԓGZ`UzOFG!aFBEP#(~GU=@⑹|]+ y#J 8X 䜧~0J隼ڂְFB>nq/$ Bh#3/}j!Vv=PhsK蛅/L-nN5:2ͪѢG' 2b^tg% HN!"xgR T''xWkGTr`_TxhE%L!d> &sƌ"*v:c,s,[06M]NJYͫ-#PT<8c$x]ʏ0C')1K5-`RR/wbnEb~@it E^?|eGe M&ߩ87P _@!7Pd{[OacGmPO+Wpٔy%:TdFQd7bt͡ڭ8gk%*,E1B8·6+lľ#$Y'5F(5 ͩRi̪]:qĚpln~ "FuIa3:tܿ`S endstream endobj 3023 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3024 0 R >> endobj 3025 0 obj 772 endobj 3027 0 obj << /Length 3028 0 R /Filter /FlateDecode >> stream xUn0+h Eo݁ޒ!mPt}6+ۓ 9ۛ7Գǀ.QaUzϭAA*PB+Pੱ; wGkhˣSww;owSzSt3@#B$I@LOCZ\m!SkXg&-Q!_P7I(LDV&T iq_#X&,isxgĦ^?htqVѶ]]"Ntlt(8UgVd %%Q{HGX&GxWk£*亘{)SL͓reƏ3\Qc',% dwne ."T/RA!`\RPʲү]a‚c;aČڛUU:;&$$ y&  ',gzET,O!PJe0 c##dPcgmo|"Dk,L] n[/TO<]|2EF2W3awą,ݗF hMH̓n1lçAl^W8-sS&vm_8͔,]ɠJQeȝԺ,|*5lU_a CF2z endstream endobj 3026 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3027 0 R >> endobj 3028 0 obj 682 endobj 3030 0 obj << /Length 3031 0 R /Filter /FlateDecode >> stream xVKO0W$λ7}=RiI6iĿINiYNl[gG$|mB )>` F]v>&Vۓ=.@#߯O`}{E@ "$,K#He| '7*,-% vz6H)% F,:e-M#Zu>%?r=00/LLW6vkſ -:wT.D<m)>4qf%#%~:aCDQ|0j z&'xW=r=أlG()f85ۮnE{=NB|F<5X;Bޡ •b%az cɾCҧ[4Ár6+נXeX#t)=RN^difϒ4bsNxQYUxh!HGB-Xt(I4Y7=ѮBc]](M}ǚD_Dr3-1( ӧp~Cɣ"rZ.hZ@ƭ,h R@6WB9ErljXxB00]1^J'\'ъ 6J٬Ħ⹆I[_lJ^+lnS`8Nq5b ;R`|kt:SsR3EkNȬX;-[ʓ,qnc"ZXLS+<ϑ^9pZ:E˰l8; m#`)8޽sٮyy^{Ŗ? endstream endobj 3029 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3030 0 R >> endobj 3031 0 obj 834 endobj 3033 0 obj << /Length 3034 0 R /Filter /FlateDecode >> stream xUMo0 WIlYm:`vh Xba~eqg=uhR$'9;q6]h0T CA+]v-~ S;`vY>%dշ5Rcb&ѸB5,EҒ¾ o}X,8Bj@~euȗuV$}ek%E m5 4k30-'l:{-^Gۙǯu ~ZŐ^|Y9 B!F ]{5HXtLtWD[5) q]{:enUsjχPD+#BB!dog9gʡ yQ;k0s`< M(úk5Ekno?ys5!xČ0ngS{Yi9$!S\'$ag]tWjbR粎6llPl ꢻX-d%,vo(%Bsl2|ղAh"z*I$<*g~=/zޖGyr h-D s%F`{LHJw0㐩ϾBvr;΂qa endstream endobj 3032 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3033 0 R >> endobj 3034 0 obj 632 endobj 3036 0 obj << /Length 3037 0 R /Filter /FlateDecode >> stream xUKo0 WIlYm:`vh Xba~qg=ey@4)O'wmV{ 2hT~FaGNl%ZM$lᇗzzdoI~g7a}>Ѻojƥ2Ƅ>LqhweX1r %}%o}X(8Bj@~e}LWeDCaK4h20T%TdAiV1f`ZN{-4ung5oH-h/V1M3K;GY8`/p7ڛA]=1Y]qZmդ4uyFS[թYƋcMzBPPH:;"L9T2o#>!sq.lW~Jk0PamE5CwE5J7ɟ4;IѺ <`F6P3އY{[q>e$N MH).M渷ia#d!ݕT /yD[v9ۢ2k/V %`gwLHg9V>b'ǠkCL =&L`b&w187lE%F@\@3h!R+1zlkclWY<^UB KL~E"qV endstream endobj 3035 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3036 0 R >> endobj 3037 0 obj 631 endobj 3039 0 obj << /Length 3040 0 R /Filter /FlateDecode >> stream xVn0+hXDѷm FEq6∲}$^ 9loސyPTH~؊ <yNx7 W7@Qɣcsw=ow>އxKB}ϕpsXAR,` TzvF 2_#+M1Ӳ0'kk%ރgrФАW1{;6Nnem.7̃Ҡ,O3KZEFIdž' ƨ-%ÜDB#zOuU4]s,tGD 8Ǧ^caD8f˱<]ok?Kò*sp@zr-> endobj 3040 0 obj 762 endobj 3042 0 obj << /Length 3043 0 R /Filter /FlateDecode >> stream xVn0+hXDѷm FEq6∲}$^ 9loސyPTH~؊ <yNx7 W7@Qɣcsw=ow>އxKB}ϕpsXAR,` TzvF 2_#+M1Ӳ0'kk%ރgrФАW1{;6Nnem.7̃Ҡ,O3KZEFIdžxc i}aNxTP!ߺ*tvoKT#"pc`H/[Q˱0"\bCS3XAS﮷%saY9x yY=w9 ٶab$ۋ(&5:DHGN&p[.Ţf%N'(‘9ZsuUfL^Nʐ䭳j3|Sf"aDj6z6aJXmm ewUkq{P(62Bq>-j2Ƙdۈ6UOpIjw5$$͒_~e |#sYymӜ4@-& |"MMzw~Vl_Ժ">U[n9/ǛF!C;J#ҭޥq#<KZ<]w<"x)˪6@[O?/ϰL6Y (w \sϾ7, ﭿI^{;) endstream endobj 3041 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3042 0 R >> endobj 3043 0 obj 762 endobj 3045 0 obj << /Length 3046 0 R /Filter /FlateDecode >> stream xUK0+9c;V}H$H dc^aR xd u" SS.[nf@Q9ssmw;)lqF!^%PcM7涩bIA4 T eFhF)eB3+c6yY'6^s|R(˪M O1'2;4 Q/Cv]I_/A44Sx]ed)('hL^pHV8+9QBX3x/V?mRϔ$r™\҇b\cXP9Ws|֐@)-MY \$P8 mDuSwQU͙*01]P XbsdYG.!:qof84$8£s^/vPhvR2pl]CSӂ;Җz]7$5&NhON8$8emlplAs.΁Ij?bڤ{'?"A0㏭ʁy޾j73h(sΒɤY1 endstream endobj 3044 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3045 0 R >> endobj 3046 0 obj 613 endobj 3048 0 obj << /Length 3049 0 R /Filter /FlateDecode >> stream xUK0+9skՇ[H=lV+opc dy<G _J}8${xLo@)R`4*uGH~>8xYʊDJ]9ۯɨ,PEC! DƌWlg->N.oG7^A0Ř^7 ~Y5d#6,JWA=aab­*%r]L=ץ6O2O'erB]|N8x_07䢱@X엜Gӭb]jWk(l PJwc{'CЖ#j{8Yٙ  b)CI3F>fy8qdOrulΫ>B:$a=0B4v6/YT[=X,*ni6`0aW|b|d˓'>vtG'^3بIcB7yK~ր&|o@z4?}W6jny\W,-t9LaqT˙у-Zeh2U /@ endstream endobj 3047 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3048 0 R >> endobj 3049 0 obj 641 endobj 3051 0 obj << /Length 3052 0 R /Filter /FlateDecode >> stream xUn0+rDҷ]! Umr;YӜ\CfЏwnC;Aĝ*GN`oMKP (| 0ko$;WOa|L_"`X". ZE==6uQn -s&ڠ+69cW` ۛ3E`4&Z*c/wUIi02dYC9M y`g4~ڹY4[38Zh4^q^ X"LPh8$5XŻ!p\{eZ'{;IiSA1O㏩a}hH~tVV#40pkgY@ endstream endobj 3050 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3051 0 R >> endobj 3052 0 obj 613 endobj 3054 0 obj << /Length 3055 0 R /Filter /FlateDecode >> stream xUM0+9;VzKUłCɪc$=$3ټx ( 5dt6!!;S W;-~zG)Ptx4\|-G y~ )>| QVE<$TZk"kppwTyA\M A9m!(L$j_$M^5D6",[ m X8C*d"HM}lhqԦu@\ګuС :T^7M~]Yud5L]Y;HGX%xWk¥!5j]LXkSʋIWN|>' <+j0&Q#e.*oMH(&RmVZ?nKڌ8544`LX_Ue)E3v>:[P e@4Aa~hxfð%97G,g Fwn_C9ᔢl N?o ][K/ܓ2 endstream endobj 3053 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3054 0 R >> endobj 3055 0 obj 635 endobj 3057 0 obj << /Length 3058 0 R /Filter /FlateDecode >> stream xUK0+9skՇ[H=*@HVl c7?R7읗 ]=C`1NP<ĉ>#}MN Pu*/¨OdJ󰃇b+.Nt„G\Pu]ȏUvܫ P> endobj 3058 0 obj 635 endobj 3060 0 obj << /Length 3061 0 R /Filter /FlateDecode >> stream xUM0+9֪Ro"XpRY YcLd{flpոÏ=l"WxyO8EWNõrЛ秐y"Wh5PBZ>Dpm*/2Ҹ2h0͞ >RDNEeQCj8/ -@˲ЖЊ? bN&|IOgFj_ISnq]WkA2踊Sy4ue֑QnF}=*9b\. ШQb"b_W^4J /p"Cp& `r`DF;y0uo9wM 1(9&3@ݔIԻ81Ǫ%O-WJYr]:!*Pk>MYdwqV;7&|")Cu!?V~kG8.@5Q!ކjYfxɣYg`<^ 뫪ܾ0$L]ϦN|g8Drԃ*`_<w?#T-a,?b#" Suk(~"0RT I!kk= endstream endobj 3059 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3060 0 R >> endobj 3061 0 obj 635 endobj 3063 0 obj << /Length 3064 0 R /Filter /FlateDecode >> stream xUKs0+H>fzsLIC@N]!@4'׏a~xP.Cj{| $v :;^Q=d ^<:OzQ};C^B}_`͉". Z~8D{m .RH&ʠΌ4O^D8z\m;붿{: t> :b*,i%j2k6VqOTSLޫձ6կhk %r)fNj|ѐNpϹ;Ǧ1oTꦬLN>ĉ{a1eFv> endobj 3064 0 obj 633 endobj 3066 0 obj << /Length 3067 0 R /Filter /FlateDecode >> stream xUK0+9k&V}Hj'AJL@wd ǞëǀQa^6 .`wJ8M(l෧= ?'\Lѣcw7ŷ+)/sE2I|ۇ|wB  u@ ?ON QJ#/J/,̓}Jgm>g?2sK1@JMWPbۥmsqǍ렧2h!n2"k(6_$Q{s6vWoaׄ[#TuD*yt|LvEEHpud5c"$!!{cy4\mV^ppH̍JQ6(R|.M6v;|_dEkѐđ&)|L^/45N "(C5^?uSTd$ #$Jmg^?IMw{N**Clt^Br1#z謒l[Ez k6f endstream endobj 3065 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3066 0 R >> endobj 3067 0 obj 645 endobj 3069 0 obj << /Length 3070 0 R /Filter /FlateDecode >> stream xUn0+P*] 1CDBmQ!w(JiN3l  7b./1D,%GY,snn5u ensuwvpEDҐj_REiuC[BKߔ,4ZE{j|l펿}"~: :bJw ~Y3 )6Č$; ]bׄ[STfu>HkqH@ 9^L=̮W/_:X2 kci 6cK0ViYBUL/™p.g1'IIVLoA! Re ]R \Y^OGcyq$8#"=Z; cv#Gs )mi^i{C1By_Y(ԮU,pö< endstream endobj 3068 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3069 0 R >> endobj 3070 0 obj 734 endobj 3072 0 obj << /Length 3073 0 R /Filter /FlateDecode >> stream xUn0+PԞ[.@!ZmT;XR$ 8} sdr{]($K8'6;h ߃[4V@11t}up5o-SXŷB "EQ $b0ڨYo**f0qH$)a,)M- sja\(d~, 32$1[lzItqi߯'yzrzCfVfCJ$b#my" L蚡@Gz_^vZlw\5n#9Č0ݼ&-L"gXEc4 }-~-4pEo;H%*ny)D>7> endobj 3073 0 obj 750 endobj 3075 0 obj << /Length 3076 0 R /Filter /FlateDecode >> stream xUKo0 WaYVnvj`XI $vj9-_?ISEG0{9cc8UxH= pP(| p1ko([WOa|L_$0 f(WPkK=U^l!-2:ʠ?^̃iqSz]5ef)g('l\^$ ]>ᘬWs­ .f^.OT?ZIC g "f FtQ|s57_3& )Odee2 pXӵ.wk> tE.j'cU~tlybqrlȲ;p> endobj 3076 0 obj 622 endobj 3078 0 obj << /Length 3079 0 R /Filter /FlateDecode >> stream xUK0WZ!F7Rj%"A: !/'l=o>Ofykd BnЈG;h>lTO3!lී9~8OϸECjGgovSX;_bwxACB]O pw4y,uAf $ egvFvҠ, "$UBm>ar Q(޳YU(Rlr]l"8 ܶYE<񒝛Yp[ iU+RPV ˥:exd.yi!|_IU\р0"Q>#f<[/&2INߏ>(C5v?uSYن\$'ȘZxZFQ=PEe~j JdEfWU,u7E688gTu,z!O!ؽpۅ ]Z>KltT-;5 Ńt*wsɁ*/D? CoD _ԌUYl%m鵱Z endstream endobj 3077 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3078 0 R >> endobj 3079 0 obj 646 endobj 3081 0 obj << /Length 3082 0 R /Filter /FlateDecode >> stream xUn0+hU.[.@oI k3Kr(9ACR %/)zH@PO# E( xҪX h1l->Kxx  nи/WXȻ'.?bCX !3a~, 9jt^A+XFVPϨ$ŒB(OI]la!jŨ-Ж [`_ډ∌-4AQȝ5.1mZۧ+< 0b<^dƑ0MCң]#p3)>&|5EYw@S "2qY`b0f2umSpvY{Ur: f3$D^es(i&D2Dog\|Sq6l24ao/2{ 0"GMEw*!ۇH&^)3EJ4#LUT%qw&A' v.kDJCȵj+^Uy]~h@>|#ob 蛪:ߚ8K <OO Z񖇳K[Y=(LP6ϤtQAw>d.$:>%qbB~8Cҍ@zX#kE.Nf-j]-PVrUHex hMFc =4·G{ $@{ \+z0>-}\MdҤn4ыwP endstream endobj 3080 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3081 0 R >> endobj 3082 0 obj 796 endobj 3084 0 obj << /Length 3085 0 R /Filter /FlateDecode >> stream xVn0+VHUZ[.@oI kӲr$9iCR%͡H9{Cɡ@~D:w6 ,9 O JPG99/3w !o@|Z:@ ,}XĮǸ0Xp?T% 6PJTg`wnL !ԋAP,žK7HLքG#Tr7bqdXyTmc˨\1ƞ؛:Y1 KpkYV`#B$} 2z۲A^e[bw< CݝB~b_UkO.bC[#Q#VXfS.B%W> endobj 3085 0 obj 855 endobj 3087 0 obj << /Length 3088 0 R /Filter /FlateDecode >> stream xWKo8W1RDskt[dc`M(m )GfwȡHJ`i@3C{#- e&Z'"ŰMǰ[. t - X|%/Owfik["z~yŐy!^=tM%6Pʢ+(Qv Z#QeA'VֽXuU-ZXwrT0`?,*&ftGę&#Rd(!hۯ=4|7xJ4,?;\FJ&PNrXWS8doo7Oڙ'/)יDDcA[1L.HϏe$~|j둱t]Riy^lbuSAX!Per'e'I"}K>U;3#/OYWXlQa=q^q¹SAlr/) P)'M̷+w|Z;L磵k.S9Ԣ)!v8+-X3vc:I!r% Zٽ7M݋R3-]=LV8CCܪhy厞)3Hگ\6\bOgjZ^%2hD(0UЍNoq7Zu[E #J&a0ZH~zekYZniVl񂓌’w#@u:,bkC9Di, 9T-"U|Aam1n`4(Z!ʌ ;DB]8 y{o3EH(gEc:B--d# e`A0ckpgKKw_)BAƸs/.XlIM% 1gʥ*L9A$mJ͜3ȧRi_"b endstream endobj 3086 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3087 0 R >> endobj 3088 0 obj 1233 endobj 3090 0 obj << /Length 3091 0 R /Filter /FlateDecode >> stream xVY6~ׯD%{hӤ@61Ї8XpejQwx%{ӼlfF׀ :jm2QjMI ,Y5X9# lap3_nS@n_!/>}!J`#bYH(<_SAg X8ߪj8 5lnȦ9Ћ$ObeYg \RYp՞Bϻyu 7FM\Tl.aH-& * n>:''b٣(TxKwAF;靓,0y~_= EsZMG0 ' v ?Hq? [-z3d$ߢ/w-wHMJU-К, yE:$öV*1"\WQ}e<4VZYz ZkZ{V.}Fǂ cUckPYw) endstream endobj 3089 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3090 0 R >> endobj 3091 0 obj 977 endobj 3093 0 obj << /Length 3094 0 R /Filter /FlateDecode >> stream xVKo0 W'ܺkڢPm%1ȉd7#v.Ia"E'/KHs 8[)0q8489%zIN(,'<߽G\,`#ۙ;v_O`}zh0X/CkCͭni >OA6ȸ]z}hJu`@l q$v0H'LN)szGɤU\>)sf6mvz(4`En{.Hĺ @ivSf^. Ԛ)PL=pI\G^EVB#p$4f("1+K9Y(_R~DdJM_Vt8 oct֓S͎E4 >B\)h:]F`C;Y^r W֚?oԏ(^q7z|+n>Nr9,p3dt^rwL^W/\i+밃ìӷ .g&ϫ뛛^+L W+DH4 `e-tLzV'%_/r<)E-u-J3,zY*qbGi9NnGxѬ9NnѶ!VʺĮvRY=_FS\|hdY\!vFdEF"ʎ`ayapGӪQ|9LOlfQ 8U{ endstream endobj 3092 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3093 0 R >> endobj 3094 0 obj 844 endobj 3096 0 obj << /Length 3097 0 R /Filter /FlateDecode >> stream xUMo0 WI-Ym:`vh"@ba~ev=uhR$'9{m RH #A+G]C; )prp]0w9/I6!Y-B͸ 1q1h!]]fy ^@iIa_Hwɏ>HXp΅Ԁ$/+H[2j2o04%4dAi0fdB> tZLzi|ngڶoWċN21>44s#6D' ]{5HXtLtW k.O=*[>U͙yz>MJ(_1PH:9 L(HK0w`PZuH ݩ?i ^&nys5g!bF([ iZζo2b!6r}ټ>"#\gEHM j\ɩ> endobj 3097 0 obj 630 endobj 3099 0 obj << /Length 3100 0 R /Filter /FlateDecode >> stream xUMo0 WImYm:`vh @b'a~ev=uhR$' Ei;6: A*}졑ѮDD~yL89e[ 6ޗtb\Z(I*l,dY-00/e*ͳ4"k u 5Y~Ռ-=6>NGۚvqǭu ޯbHM>,egр ஽}GZ&++5VEJM\N)e}fS^dq]W:G#C!w'42ZDa:p@~6l?)uPX[Ȟð{oʴl]F2"C IRv9 0 bs9MV+ˆHE lѩF> endobj 3100 0 obj 630 endobj 3102 0 obj << /Length 3103 0 R /Filter /FlateDecode >> stream xUn0+hX֢MҪ! զZrPdY^^K䐳yC>z (~/I{d "~؉ <y9Ox?JW7@QɣSsz7Oa}JW0 j2 &>!)⇩r iejR e;HAbF)e~NraԐ3`nchSh1{;#6 Nn].7̃Ҡ,O3+x /NQ;(=[&GxWs£ %rݟ{>ou3Y%z3[zLڍH1p! rMs 3D9 >ߢctaZt y.t*@!Q,ecngp-n/岞Ngk(‰1:cU]z^Nʐڝ)Til1tm1 Nrc*ɃrJk0U=+09*h$8Ё 5+ӵ"jT^L 4߹zcM|#sYEml/d:e .1L {w fe¨Ԩ rQ[U 6Cvl7#ڥ`q<*?:4]c,"xlh|j",EyUP 9-'pI_YWY5{ endstream endobj 3101 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3102 0 R >> endobj 3103 0 obj 755 endobj 3105 0 obj << /Length 3106 0 R /Filter /FlateDecode >> stream xUn0+hX֢MҪ! զZrPdY^^K䐳yC>z (~/I{d "~؉ <y9Ox?JW7@QɣSsz7Oa}JW0 j2 &>!)⇩r iejR e;HAbF)e~NraԐ3`nchSh1{;#6 Nn].7̃Ҡ,O3+x $vPH{ǷLG#J?|hUgK4" g>  $cB<*kgrusXU6(TQ}>EǶ'`0D\V^UB "XʐN[^e=+ΦP cuޫ/ߙ,!;WuS bb1^ճA cT*cu`zV`psTH61q>-jV+ZkE%<=ҽ .His2vGHҋ:V9_t"8>JAOs˪\x[c} @:&χQuQAd'V] *ol0ؾ?n(5GB[g[Kr;x"(TbthYD*TwDX:j %-lAr[O%6gq";{ endstream endobj 3104 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3105 0 R >> endobj 3106 0 obj 755 endobj 3108 0 obj << /Length 3109 0 R /Filter /FlateDecode >> stream xVKo0 WVOmo`vhBM@lgӢ~$ۊt;u}@$e>>~tdR ~;L@:SC@ NN`O%\,&q\ׁ!9 )Doaqv`Uk=V]Tktx, _iEC}ŝ;8jHTI!1b$\[Z~i~XG0K6YϣF&Rk^-^)F7=jS3(8Fk}"Oaw"&&ٟ2 endstream endobj 3107 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3108 0 R >> endobj 3109 0 obj 889 endobj 3111 0 obj << /Length 3112 0 R /Filter /FlateDecode >> stream xUn0+rHʷ]! f6划;%YV' 4rf<>R/ߙjt>+cBg'Uc>"4gd# ߢ{\ŀ׈Nӵ7bTЋקGч 0 ˧E\*4Munnꪰ9dv Π20{]!I(L(t婱(es_G-CB+?EZM$1=i>~jm @ ϳ}Ctű.Zd#5$BY{ЏJVxW{¥ )j]L=7TMak&C'H5Ĝp& `rĘD3F%{s5 ,ܚ509{,j@&7McesC|v OORzTwMOpè$i*gD|S*[`^  )C v9?Vy5 XHWBqٝէ"g3" |eh*Пք ?gVUzOqsHUTxS_,!Z=~؃A<ȷ2 ʋn(BudpL6U9 ^:}}!Z8}lYCZaqcZDxS endstream endobj 3110 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3111 0 R >> endobj 3112 0 obj 646 endobj 3114 0 obj << /Length 3115 0 R /Filter /FlateDecode >> stream xUK0+9ɭURoFawb!HbȪc MҞ젳⪱{ ni7 '3i6[zr5Fa>R#BDZ @c}]:Dg%uB:o$O$2,FuQjdoTbNhZ-V,is2tf'j۩mq=/Amqiʊl D!nڻ~UrwŸ'\3Fƨ)t-k )r9L! !{h_ ,+m\ 5  ɶQ`¹!>0$U}¥=p0DEmK{S>4> !#!PhYlK?%YV9sw$Lħ %XNz@` bJ#Ng^Yy.ިi`(c.TACR&IboEuMqsHUTxS` -@l?Ac'~d[`Ac 3w !:28PoY/_ To€.kHk/[EF]6v endstream endobj 3113 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3114 0 R >> endobj 3115 0 obj 645 endobj 3117 0 obj << /Length 3118 0 R /Filter /FlateDecode >> stream xUn0+rE֢ [=$A،"QJ~}$ˊzC̛G9a@{$ϽAAޕ*6)q'·'W@15t]ur5fS(O"*1F&|8,6psvԥ+ w+XME}A,HI42,[6e<,MأE0h0t-tbHTF΋ID'S~gO|ڠ.uǕ@FSC*Q7j iO4CA//[otH r<̎pƨboSr{#exC|Y8%/-l /ƹ!>|iE pgD+QYr֗~5aTic=PLh\W=W:GDJ$e(>Ǻh75#rKjx5f(..T=PDd'AH`R ݒ#?Ӛ0fe?[m{JQ# TE[M})0FqVQX+'1$RGFo[WݬR}*7^U %.֖L. endstream endobj 3116 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3117 0 R >> endobj 3118 0 obj 645 endobj 3120 0 obj << /Length 3121 0 R /Filter /FlateDecode >> stream xUK0Wq9íURotz]`B$p8ac,Оh xy PM퐤$DUQ <$<x9- ppP@Oh\Eõ|ZSȃOź'0MS$}]:L`T ꀺ,AHF)e"NGQ֍^E ,Q8E0`5-dOH˘CSˀMG}7$Pr[o]!Ntbo8M_fVb% Ewis Þpi.Fеt$r™\ #=a4f#> endobj 3121 0 obj 641 endobj 3123 0 obj << /Length 3124 0 R /Filter /FlateDecode >> stream xUn0+hrњ[.@! EmT;)kzp===fw::U N`%\!v+= ߼[4@ѣpw5o,SzVއ0 ~$q1<1/,uS[HTHT-oa}$fR&"teӖ.R*j`?rеБ'"c&SˈMGůOա6{nXc׳}С :bJwM~Yqd6>;KwFك4gŸ'<2A//[% L|N8xW`v$y5~ڛ,^nhKUlKC!ݷhŢ@i&& |ap"7AU ջ&'a4$I'IcW,.zyc02d ٶYc%XljR1Ngf|C30R~|JL@4 ]1aX&,UKz GD]V:ehyaeSSnYALV  dS9qZȊE_ i?m<2KSDžYvzndRhWm4He-\"g"M+$ڦA*xg(TbS5HJ!Gu BpWw:h5zIF'@ endstream endobj 3122 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3123 0 R >> endobj 3124 0 obj 746 endobj 3126 0 obj << /Length 3127 0 R /Filter /FlateDecode >> stream xUn0+h’Ԟ[.@!Em6R;NsJ@zP^GrȏCcsVFC8B+p]cw>&˓o-7@ɣpw5o-SyVއ!0  4M~8pt!w l*-P!Q!HQJ(ZUUVQ9/ ,>,1i31ZFl5.5o'~lth]gVl%Ʉ aQ{q6wߏo]1 ƨLޗ>({ʴtm&H 3y= F "c,E5!z~ji1;L4j be`,]k'vg0GQdaۻT)L皞@шqO3JEh'.] CP$l~Ի(d՗Ŝ'LI#u?&<60*ݦ-ZU[KduQZ">8 8^aGdA^"CSu'unHҭl"](-,yaB~cT9o)d/_ SH֋B ~_l0J)WZ/']lPkAU윫)G+=mt^=Q 5HE%r<q2?A%YgkL*3a*;9iM,HW^WE:hzIF/+/V endstream endobj 3125 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3126 0 R >> endobj 3127 0 obj 768 endobj 3129 0 obj << /Length 3130 0 R /Filter /FlateDecode >> stream xUn0+r(֢ Л=$Aڴ-QJ~}viNlH= (nݠ4!xnt 50. W J8E(gh\E׀NwbYS!0 MW C=+4Ba uGX~HIbF)eB(*[iYX&GkJe9E0`Y5-dWfJ: {-CLfEߏ/A6谋12sd#6R\$Q;HG8&++=RJ\z5Sewyp (2 g r9LK|~l,o2n3%WlJьe=&+%gcWEztzwq"9^aK@U<[nUibSOngI/n :`5B""gwǮaݬe"8! KJ \]/ endstream endobj 3128 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3129 0 R >> endobj 3130 0 obj 632 endobj 3132 0 obj << /Length 3133 0 R /Filter /FlateDecode >> stream xUKs0+JB ȭ>fzKLf+1ZvOߊ'Ȕr<:C(.`w IM(lO ?{4@i6w)"M$%d`ijhZh'IØ!tlן$:δm]}!^bv1׻&,%Ɉ  Ψ=;H'tLxW {­)r=zhsF @Y Uݨ -cWܽ$!,tlߔ]b9Dp H5=C3Д}m=ytO!uqPGk]<@WL+L?7oO;K 1c]A^t貂^܊j*+Qdp/" endstream endobj 3131 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3132 0 R >> endobj 3133 0 obj 656 endobj 3135 0 obj << /Length 3136 0 R /Filter /FlateDecode >> stream xTn0+V`D-Ƕh X@IEB_.H/Aocϼ7VIs'AL&1$shLT wI?.H {:D'z| NxC䲜M^'(/V^.cr 7۽6M[\oj& Dǽ ~ }(SH Xn> tt[| 8?'u<~m/O J_L-OnbO86H_h$<-O3<Lsbq|#i/ endstream endobj 3134 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3135 0 R >> endobj 3136 0 obj 556 endobj 3138 0 obj << /Length 3139 0 R /Filter /FlateDecode >> stream xUn0+ M sk- PmjIEjzGC̛Gc@{mPqXdޫ19$܇ W Y8Ehl= g\ŀGnTOOa}>0 jHpBR* #0B fukH%,:}zAJ1J)!p:IjEyqtmc'w-V)!ir0Kz83RDXzlm3u{F Ě;mqe@FIt_gɬm#C(= .&Eme/MR6O##p& Y`rԘI` fy8 .#h]Amdh  YQw=A{a%t{^쪴B  #D#?d,oEZc~1"&|")Cݹ_u!!|EH*Z8SVF"3 Djqe..$+6Q@ܕou1/fF*e3Bn.$MNfNeW`Ȃa݃_ͤ'sh:DYI׻ ɐIe1oFEKq'\ّUn~mRiETXjϮQdtyy ^ endstream endobj 3137 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3138 0 R >> endobj 3139 0 obj 675 endobj 3141 0 obj << /Length 3142 0 R /Filter /FlateDecode >> stream xUn0+ KR(֢ [=Aڴ-Ԓ-1۹^ѐ3zP^A*{v>:W㪱; rO'@1y6޻73Sz_cx3PsBR*D7B u[H5:czאA1J)%p:KiUyqrtmcN|'-V)rLNgFRև[L޻ǎgCtT[Z dD5Bf#M(YE1 Jt*Ժ? j.sJs''x^$0;hL: fYr.YWx{I 2k׈oz93Np04E5^PUNphH ygr;ȷ\k,Pt.rd:{D@0JIJgʟTD}&XW!\,2͒bQ ].] m1-Z2e3~ժLF}AFӠӘpN$,  V{7ڦ/:ݣe'Np$C&]E?w"uw ׸)2W{DrN$A&ŘV!M)ȊUOF endstream endobj 3140 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3141 0 R >> endobj 3142 0 obj 676 endobj 3144 0 obj << /Type /Action /S /GoTo /D [2981 0 R /XYZ 72.0 720.0 null] >> endobj 3145 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 245.67 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3144 0 R /H /I >> endobj 3147 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.819 709.5 541.819 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3144 0 R /H /I >> endobj 3148 0 obj << /Type /Action /S /GoTo /D [2984 0 R /XYZ 72.0 720.0 null] >> endobj 3149 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 242.34 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3148 0 R /H /I >> endobj 3150 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.842 697.5 541.842 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3148 0 R /H /I >> endobj 3151 0 obj << /Type /Action /S /GoTo /D [2987 0 R /XYZ 72.0 720.0 null] >> endobj 3152 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 277.88 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3151 0 R /H /I >> endobj 3153 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.596 685.5 541.596 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3151 0 R /H /I >> endobj 3154 0 obj << /Type /Action /S /GoTo /D [2990 0 R /XYZ 72.0 720.0 null] >> endobj 3155 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 241.78 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3154 0 R /H /I >> endobj 3156 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.844 673.5 541.844 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3154 0 R /H /I >> endobj 3157 0 obj << /Type /Action /S /GoTo /D [2993 0 R /XYZ 72.0 720.0 null] >> endobj 3158 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 661.5 240.382 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3157 0 R /H /I >> endobj 3159 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.738 661.5 541.738 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3157 0 R /H /I >> endobj 3160 0 obj << /Type /Action /S /GoTo /D [2996 0 R /XYZ 72.0 720.0 null] >> endobj 3161 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 211.22 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3160 0 R /H /I >> endobj 3162 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.058 649.5 542.058 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3160 0 R /H /I >> endobj 3163 0 obj << /Type /Action /S /GoTo /D [2999 0 R /XYZ 72.0 720.0 null] >> endobj 3164 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 637.5 309.682 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3163 0 R /H /I >> endobj 3165 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.288 637.5 541.288 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3163 0 R /H /I >> endobj 3166 0 obj << /Type /Action /S /GoTo /D [3002 0 R /XYZ 72.0 720.0 null] >> endobj 3167 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 255.1 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3166 0 R /H /I >> endobj 3168 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.753 625.5 541.753 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3166 0 R /H /I >> endobj 3169 0 obj << /Type /Action /S /GoTo /D [3005 0 R /XYZ 72.0 720.0 null] >> endobj 3170 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 232.32 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3169 0 R /H /I >> endobj 3171 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.912 613.5 541.912 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3169 0 R /H /I >> endobj 3172 0 obj << /Type /Action /S /GoTo /D [3008 0 R /XYZ 72.0 720.0 null] >> endobj 3173 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 230.09 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3172 0 R /H /I >> endobj 3174 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 601.5 541.928 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3172 0 R /H /I >> endobj 3175 0 obj << /Type /Action /S /GoTo /D [3011 0 R /XYZ 72.0 720.0 null] >> endobj 3176 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 223.44 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3175 0 R /H /I >> endobj 3177 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.973 589.5 541.973 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3175 0 R /H /I >> endobj 3178 0 obj << /Type /Action /S /GoTo /D [3014 0 R /XYZ 72.0 720.0 null] >> endobj 3179 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 230.66 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3178 0 R /H /I >> endobj 3180 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 577.5 541.924 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3178 0 R /H /I >> endobj 3181 0 obj << /Type /Action /S /GoTo /D [3017 0 R /XYZ 72.0 720.0 null] >> endobj 3182 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 241.21 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3181 0 R /H /I >> endobj 3183 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.85 565.5 541.85 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3181 0 R /H /I >> endobj 3184 0 obj << /Type /Action /S /GoTo /D [3020 0 R /XYZ 72.0 720.0 null] >> endobj 3185 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 232.88 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3184 0 R /H /I >> endobj 3186 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.908 553.5 541.908 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3184 0 R /H /I >> endobj 3187 0 obj << /Type /Action /S /GoTo /D [3023 0 R /XYZ 72.0 720.0 null] >> endobj 3188 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 235.66 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3187 0 R /H /I >> endobj 3189 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.89 541.5 541.89 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3187 0 R /H /I >> endobj 3190 0 obj << /Type /Action /S /GoTo /D [3026 0 R /XYZ 72.0 720.0 null] >> endobj 3191 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 245.66 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3190 0 R /H /I >> endobj 3192 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.818 529.5 541.818 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3190 0 R /H /I >> endobj 3193 0 obj << /Type /Action /S /GoTo /D [3029 0 R /XYZ 72.0 720.0 null] >> endobj 3194 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 267.88 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3193 0 R /H /I >> endobj 3195 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.666 517.5 541.666 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3193 0 R /H /I >> endobj 3196 0 obj << /Type /Action /S /GoTo /D [3032 0 R /XYZ 72.0 720.0 null] >> endobj 3197 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 293.99 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3196 0 R /H /I >> endobj 3198 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.484 505.5 541.484 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3196 0 R /H /I >> endobj 3199 0 obj << /Type /Action /S /GoTo /D [3035 0 R /XYZ 72.0 720.0 null] >> endobj 3200 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 293.99 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3199 0 R /H /I >> endobj 3201 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.484 493.5 541.484 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3199 0 R /H /I >> endobj 3202 0 obj << /Type /Action /S /GoTo /D [3038 0 R /XYZ 72.0 720.0 null] >> endobj 3203 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 261.77 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3202 0 R /H /I >> endobj 3204 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.707 481.5 541.707 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3202 0 R /H /I >> endobj 3205 0 obj << /Type /Action /S /GoTo /D [3041 0 R /XYZ 72.0 720.0 null] >> endobj 3206 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 261.77 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3205 0 R /H /I >> endobj 3207 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.707 469.5 541.707 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3205 0 R /H /I >> endobj 3208 0 obj << /Type /Action /S /GoTo /D [3044 0 R /XYZ 72.0 720.0 null] >> endobj 3209 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 221.76 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3208 0 R /H /I >> endobj 3210 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.986 457.5 541.986 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3208 0 R /H /I >> endobj 3211 0 obj << /Type /Action /S /GoTo /D [3047 0 R /XYZ 72.0 720.0 null] >> endobj 3212 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 246.75 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3211 0 R /H /I >> endobj 3213 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.811 445.5 541.811 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3211 0 R /H /I >> endobj 3214 0 obj << /Type /Action /S /GoTo /D [3050 0 R /XYZ 72.0 720.0 null] >> endobj 3215 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 215.11 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3214 0 R /H /I >> endobj 3216 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.031 433.5 542.031 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3214 0 R /H /I >> endobj 3217 0 obj << /Type /Action /S /GoTo /D [3053 0 R /XYZ 72.0 720.0 null] >> endobj 3218 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 225.11 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3217 0 R /H /I >> endobj 3219 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.961 421.5 541.961 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3217 0 R /H /I >> endobj 3220 0 obj << /Type /Action /S /GoTo /D [3056 0 R /XYZ 72.0 720.0 null] >> endobj 3221 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 225.11 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3220 0 R /H /I >> endobj 3222 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.961 409.5 541.961 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3220 0 R /H /I >> endobj 3223 0 obj << /Type /Action /S /GoTo /D [3059 0 R /XYZ 72.0 720.0 null] >> endobj 3224 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 225.11 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3223 0 R /H /I >> endobj 3225 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.961 397.5 541.961 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3223 0 R /H /I >> endobj 3226 0 obj << /Type /Action /S /GoTo /D [3062 0 R /XYZ 72.0 720.0 null] >> endobj 3227 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 220.11 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3226 0 R /H /I >> endobj 3228 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.998 385.5 541.998 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3226 0 R /H /I >> endobj 3229 0 obj << /Type /Action /S /GoTo /D [3065 0 R /XYZ 72.0 720.0 null] >> endobj 3230 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 240.1 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3229 0 R /H /I >> endobj 3231 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.857 373.5 541.857 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3229 0 R /H /I >> endobj 3232 0 obj << /Type /Action /S /GoTo /D [3068 0 R /XYZ 72.0 720.0 null] >> endobj 3233 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 222.33 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3232 0 R /H /I >> endobj 3234 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.981 361.5 541.981 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3232 0 R /H /I >> endobj 3235 0 obj << /Type /Action /S /GoTo /D [3071 0 R /XYZ 72.0 720.0 null] >> endobj 3236 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 247.32 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3235 0 R /H /I >> endobj 3237 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.806 349.5 541.806 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3235 0 R /H /I >> endobj 3238 0 obj << /Type /Action /S /GoTo /D [3074 0 R /XYZ 72.0 720.0 null] >> endobj 3239 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 224.55 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3238 0 R /H /I >> endobj 3240 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.966 337.5 541.966 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3238 0 R /H /I >> endobj 3241 0 obj << /Type /Action /S /GoTo /D [3077 0 R /XYZ 72.0 720.0 null] >> endobj 3242 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 249.54 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3241 0 R /H /I >> endobj 3243 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.79 325.5 541.79 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3241 0 R /H /I >> endobj 3244 0 obj << /Type /Action /S /GoTo /D [3080 0 R /XYZ 72.0 720.0 null] >> endobj 3245 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 227.33 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3244 0 R /H /I >> endobj 3246 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.947 313.5 541.947 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3244 0 R /H /I >> endobj 3247 0 obj << /Type /Action /S /GoTo /D [3083 0 R /XYZ 72.0 720.0 null] >> endobj 3248 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 237.33 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3247 0 R /H /I >> endobj 3249 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.877 301.5 541.877 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3247 0 R /H /I >> endobj 3250 0 obj << /Type /Action /S /GoTo /D [3086 0 R /XYZ 72.0 720.0 null] >> endobj 3251 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 269.55 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3250 0 R /H /I >> endobj 3252 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.653 289.5 541.653 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3250 0 R /H /I >> endobj 3253 0 obj << /Type /Action /S /GoTo /D [3089 0 R /XYZ 72.0 720.0 null] >> endobj 3254 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 262.32 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3253 0 R /H /I >> endobj 3255 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.703 277.5 541.703 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3253 0 R /H /I >> endobj 3256 0 obj << /Type /Action /S /GoTo /D [3092 0 R /XYZ 72.0 720.0 null] >> endobj 3257 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 259.55 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3256 0 R /H /I >> endobj 3258 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.723 265.5 541.723 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3256 0 R /H /I >> endobj 3259 0 obj << /Type /Action /S /GoTo /D [3095 0 R /XYZ 72.0 720.0 null] >> endobj 3260 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 285.66 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3259 0 R /H /I >> endobj 3261 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.541 253.5 541.541 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3259 0 R /H /I >> endobj 3262 0 obj << /Type /Action /S /GoTo /D [3098 0 R /XYZ 72.0 720.0 null] >> endobj 3263 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 285.66 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3262 0 R /H /I >> endobj 3264 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.541 241.5 541.541 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3262 0 R /H /I >> endobj 3265 0 obj << /Type /Action /S /GoTo /D [3101 0 R /XYZ 72.0 720.0 null] >> endobj 3266 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 253.44 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3265 0 R /H /I >> endobj 3267 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.766 229.5 541.766 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3265 0 R /H /I >> endobj 3268 0 obj << /Type /Action /S /GoTo /D [3104 0 R /XYZ 72.0 720.0 null] >> endobj 3269 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 253.44 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3268 0 R /H /I >> endobj 3270 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.766 217.5 541.766 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3268 0 R /H /I >> endobj 3271 0 obj << /Type /Action /S /GoTo /D [3107 0 R /XYZ 72.0 720.0 null] >> endobj 3272 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 252.32 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3271 0 R /H /I >> endobj 3273 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.774 205.5 541.774 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3271 0 R /H /I >> endobj 3274 0 obj << /Type /Action /S /GoTo /D [3110 0 R /XYZ 72.0 720.0 null] >> endobj 3275 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 230.11 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3274 0 R /H /I >> endobj 3276 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.927 193.5 541.927 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3274 0 R /H /I >> endobj 3277 0 obj << /Type /Action /S /GoTo /D [3113 0 R /XYZ 72.0 720.0 null] >> endobj 3278 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 230.11 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3277 0 R /H /I >> endobj 3279 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.927 181.5 541.927 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3277 0 R /H /I >> endobj 3280 0 obj << /Type /Action /S /GoTo /D [3116 0 R /XYZ 72.0 720.0 null] >> endobj 3281 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 230.11 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3280 0 R /H /I >> endobj 3282 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.927 169.5 541.927 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3280 0 R /H /I >> endobj 3283 0 obj << /Type /Action /S /GoTo /D [3119 0 R /XYZ 72.0 720.0 null] >> endobj 3284 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 225.11 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3283 0 R /H /I >> endobj 3285 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.961 157.5 541.961 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3283 0 R /H /I >> endobj 3286 0 obj << /Type /Action /S /GoTo /D [3122 0 R /XYZ 72.0 720.0 null] >> endobj 3287 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 227.33 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3286 0 R /H /I >> endobj 3288 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.947 145.5 541.947 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3286 0 R /H /I >> endobj 3289 0 obj << /Type /Action /S /GoTo /D [3125 0 R /XYZ 72.0 720.0 null] >> endobj 3290 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 252.32 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3289 0 R /H /I >> endobj 3291 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.774 133.5 541.774 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3289 0 R /H /I >> endobj 3292 0 obj << /Type /Action /S /GoTo /D [3128 0 R /XYZ 72.0 720.0 null] >> endobj 3293 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 229.55 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3292 0 R /H /I >> endobj 3294 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.932 121.5 541.932 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3292 0 R /H /I >> endobj 3295 0 obj << /Type /Action /S /GoTo /D [3131 0 R /XYZ 72.0 720.0 null] >> endobj 3296 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 254.54 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3295 0 R /H /I >> endobj 3297 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.757 109.5 541.757 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3295 0 R /H /I >> endobj 3298 0 obj << /Type /Action /S /GoTo /D [3134 0 R /XYZ 72.0 720.0 null] >> endobj 3299 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 97.5 299.884 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3298 0 R /H /I >> endobj 3300 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.352 97.5 541.352 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3298 0 R /H /I >> endobj 3301 0 obj << /Type /Action /S /GoTo /D [3137 0 R /XYZ 72.0 720.0 null] >> endobj 3302 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 246.2 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3301 0 R /H /I >> endobj 3303 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.816 85.5 541.816 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3301 0 R /H /I >> endobj 3304 0 obj << /Type /Action /S /GoTo /D [3140 0 R /XYZ 72.0 720.0 null] >> endobj 3305 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 239.55 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3304 0 R /H /I >> endobj 3306 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.862 73.5 541.862 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3304 0 R /H /I >> endobj 3307 0 obj << /Length 3308 0 R /Filter /FlateDecode >> stream xOW>9qffaP\EuI|ZJfHo#~[ ?Oӯc嗱WʿO8ꟑ8OwoދgܿzGǏ}??_姏~v>}es/?k/׌[x$ uH$c%NAAAAA8@8@8D0D0D0D0E0E0E0E`v O^{.qJ< !qxA<"Dp@06 c A0v8D0D0D0D0D0E0E0E`&]v"8Dp)S.\"Dp`n ` ;y` ۼ;2+#_ɕ_8oQwMttWyP#ޏm^r~,YFYz@}_=K-&&...!!AAAAAIII,YΏuߨ;KFԍ)ܩNr"EK,c26],c2C,JddddddȲe#F,;Yvd9r$I,'Y.\d27M,s2w],s<2̃,,,,,,,krd3cr^o\ur~F|ŀ_۟~ǿOrת9>ycˮnnTOg!y,uPݩ&$$$F,[Y^-n}:T/AuzJ=wj\dr˺}Z,],YjgŲn& $$$F,Y6dɲ A,'YNd9r"%u,X3ԻXbYPbYReeeeee:uV߶ys꯷'֛۷_\׷Λ5|}Ϸq:/juKyPݨRz@]Z XxEj ԇXxEj LLLldȲe'N,;Yd9r$I,Y.\bYŲ+PbYŲ+ReW& $$$F,Y6dɲ A,'YNd9r"%5^Z,k.5^Z,k!5^,,,,,,,:X+|,?^w߾_}q{QSsz?ǻHsu^FA >HNA uPݩ^Rd9r$I,Y.\bylbY¤ccc $$$F,Y6dɲ A,'YNd9r"%elbX.ebX!qeddddddddȲe#N,;Yd9r$I,Y.\bX&enbX.ebXAAAAA4IԐ_}(*amn{\$֗|7/s~^Ow_Oş/÷g?oC+j9CN};zR_zUPݩ^RR7秳Iz A,'YNdroR-Aj Re-oZ 5YYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y. Re-ozZ XŲ7HMAAAIIIuByKp+S 9:ݯmǻۧ`~}ǯ?÷鋋:]r|ZbGsWzї v{^mB;m@{߭vYnn~ nnnn n n n n rkq;IzlT՝%v@c?QA=jjjjjjjj3fTvS:Lu0aTNS]Lucn 9>6HN-t ַ Z[+zAMM־9Ⲷ˳<~$o__˻#bs\{K<`}kl׽AYAyX-_7'T.RPNDIC9Su$?HC6SmJ5lN7NzT7s:&E,Y.GH-wGH-Ų#5YYYY&Y&Y&Y6ldȲe'N,Yd9r$I,Y.GH-wGH-GHMAAAIII58g729ɯ׵-.&Goyrtqk82/^֧gu/3>DF[(?oF(oOMu2eTz(ICIjTk=Z(7000444fT6SM0aTNS:Mu2ErRPZ('Z%ArS S S SMSMSMSMSmLj7nTS:Lu4iT.RPjTk=Z$?HCQnaaaaii55m#CF8մmy1/ykթ>/%>ގQ~ 5'iw<,/ʗ.S]Z'+QNu;)Kj$AuLj+c1}<-[(rS]Lu7-':rRC(':IT&M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujD9!NZ8QNuZG9QnaaaiiiUg՗9*}?⺶S?O>|e7'QI_MG^ҡy˴^8IG4i#[$Cj-|'Z:D9!IQnaaaiiiTRmEy?,oOnyZ>(aNS]Luj-Tk;!II~j-TTTTTTTT6SmMj7aTS:Mu2eTkZK('Z:D9!RCjjjjjjj p\s%̶=zYܟ7?^3!yYy{:Kxtq_YwY>)?THjD9Hj$Au8Lj+N^Ok<,/ay|R>wrS]Lu":+rRӒ$IKT$ILTTTTTTT6SmLj7nTS:Mu4eTaJj$NuZG*I~jD>N>Ac-6֬n/m\ƛr^7lC{y[̫@3`˵Zrp[(7'3@Tk8D9prRZ!RLj ֝vHw3@fvH2eTprR;prRZ!M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luj ('Ij ('I~j (7000444mF\o~sXg2Qo/׵m^L'o}b|er'6ock{uYw矡7˧uri9=jC9=j#yjjjjjjj3fTvS:Lu0aTNS]Lu7-':rR{(':GTM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujC9=Z'PNurZ'Pnaaaiii5yIcbmNc>u[Әot1B_UoV eVs52/{?,oO)OrS S S SMSMSMSmLjl1nK~PݨRzH=7jdr:FjC`ŲZ,_& $$$$F,Yvdr A,'YNdr:Ej3^:Ej]>IJNw,,,,,,,,?m߶1wŮi@mͶ_]by4>a2`EZW7\_lp׽lNAy}!yX-_Wj3nTS:Lu4iT.S]7)'Ƶ;7)'5Z߸Nݖ[͙6u=_ޭw/xn߿[};[yX-_?ݭMj7nTS:Lu4iT.R}[ꍜTVo|v~TTTTTTTT6SmMj7nTS:Mu2eT>߭In|'9>߭InFnaaaiiiOwoV_kwu7OEj~8[7d<%x2Iː!' 0000444fT6SM0aTNS:Mu2ErRuݒZ+)'IwSN[0004444fTvSMu0aTNSLu"ZM9oI~SN[Tk7Z۱V? Ԭb|z~q]bVwn*^Yō|I<7'OyZ>(UIyVq#7000444fT6SM0aTNS:Mu2Eϳ9>*wR}UIyVv~FnaaaiiiiT6SM0aTNS:Mu2Eϳ9>*n< YōTTTTTTTTf'ϳڞzSƗ~o~rp~: <[WA[|Om͋^FuЖ:jKfNے<-ׁ[4iT.Rg8PN wRg8PN R}l.TTTTTTTT6SE!]~ʽvAym.<,/ksrS]Lujl\$9>6Acs\$9>6ALj3nTvS:Lu4iT.S]HHrR}l.|'"IHrR}l.TTTTTTT+}!C:u.k{b9_ foo{/9ﭟw1_\:-Ozn If9>$INIX$9>$ALj3fTvS:Lu4iT.S]H IrR},H|'ǂ$I T $70004444fTvSMu0aTNSLu"ǂ$I IrR},HT ?H IrS S S S SMSMSMS}IQNOTkLj3nTvS:Lu4iT.S]HQNOTkZ('GұmLylyq]XX_^_Xk=ֺ7'kAZwT.S]Hiu''է֍|'է֝TZ7TZwrS S S SMSMSMSMSmLj7nTS:Lu4iT.R}kIiu''է֝TZ7TZwrS S S S SMSMSMSmLj7nTS:Lu4iT.S]4ֺXFXNNOc;9>LZ׵}]7hcW9zZoOcy|R4ֺ֍<,7iT.R}kIyvXFNcTZ7rS S S SMSMSMSMSmLj7nTS:Lu4iT.R}kIyu#'֍TZo>nLj3nTvS:Lu4iT.S]Hyu#'Nc9>n<ֺjjjjjjXyr];Vqw>~ksm_S}ZשVZ>(W$˻:{Ef|4iT.S]ZSNu8;jO9jjjjjjj3fuʶmu+_+7'ui^<,7iT.R)':_Tp|IǗ :rS S S SMSMSMSMSmLj7nTS:Lu4iT.R)':rR)':_Tp|M5L5L5L5L5M5M22=`kf^\׎bovzsxjVKw~q<&-ג'nԵ zH]˝;KZu,Y.\bXX>8A-NPcy&2222222ɲe#F,;Yvd9r I,'Y.\drc bXt| j|,^Z,K& $$$˚s2 y<_]׎/iM{~_˷m)i|n4iT.R!ZC,wR!ZC,R!Lj+}3}:R꠺SՍj\dre bI-5ĒZ,k!5Ē,,,,,,,,Y6ldɲe'N,Yd9r"E,XKj!ԻXKj!bYC,222222j};hHXr45G2q1o^C5Gql6Uor{qWwqc<-"nvuQ,'E9֮.R]]jHN!X"9>@~cZ{ya0uXÀ|8⟇WGS^_FufZc}QB|I^BY>)?ؤ<-_lRN($M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]Luj= rRG!Ij= rRG!I~j= rS S S SMSMSMSMSmLj7nTS:Lu4iT.RG!QN($ID9֣$?HD[y([l۱졽u2e/xr_qڶr0!,/kTAy|R^3IRQZ TTTTTT6Sm9VՍ)ةNu7A5YN\dre&˚L@e%˚J@}e$& $$$$F,Yvdr A,'YNdr=H-5xZ,k XC,k 5YYYYY&Y&Y֨okycpc}:IŨ:z>uF@=Tg/^̒C_{]?Yy|Rxf irSMSmLj7nTS:Lu4iT.RI3K 'O,T?=~~g@naaaaiiiT6SMj7aTNS:Mu2eT?=rR̒NY9~zf %jjjjjjqp<6o܉֍smͶ_]⸸qUo_^uvt|#oOʟnoiFjj3fTvS:Lu0aTNS]LuToo||#'TooLj3nTvS:Lu4iT.S]HFN7o;>8IFN77rS S S SMSMSMS}q'|r]qNٻV~d#?um{(U&/;j uay|I^+)oOD)IVK~jTkaaaiiiT6SmMj7aTNS:Mu2eTk!=ZK%ISN^TkA=Lj3nTS:Lu4iT.S]Z+)'ZkO9j{IK~jTTTTTTTknn?FNϏwTTTTTTT6SmMj7aTS:Mu2eTc#ǻIno;>?FNϏwTTTTTTT6SmMj7nTS:Mu2eT>?FNϏw{;In7rR}~ۍTv#7000444էǻG~9 .^~yѶm9.{:[ nՠY>)_Luj-Tk Zm('Zn#A܆rS S S S SMSMSMSmLj[k?;y,˻qX,T.S]HVPNFTkZkp('ZC6SmLj7nTS:Mu4iT.R9j-Б|'ZC9"Re:jjjjjj㰣ycN3/kuct^xb\bN{uh]A$_i E~XN5 PnaaaaiiiT6SMj7aTNS:Mu2eTk B9DTk B9rR1Lj3fTvS:Lu4iT.S]H jA$I jA$?H jjjjjjj-crNל-.kCrǗ_P?}寿_O|旿rTnn(Ysvq]u}Vy??}y,ɏUvߌ:[(_)yAyZNuBZ'tPNuBZ'tHLj3nTS:Lu4iT.S]Z#IF2jd('H~jd(70000444fTvSM0aTNSLu2E5Tk$#N5Tk$C9HrS S S SMSMSMS}Xf5zQK~1>W>uF) C~IDrR}TA ?HDrS S S S SMSMSMSmLmѮ(~lEyY>) 妺Lu2E c?;>HN c?Lj3fTvS:Lu4iT.S]HDrR}|'~ITA$7000444Ķ]F)yOU16tWxz( endstream endobj 3146 0 obj [ 3145 0 R 3147 0 R 3149 0 R 3150 0 R 3152 0 R 3153 0 R 3155 0 R 3156 0 R 3158 0 R 3159 0 R 3161 0 R 3162 0 R 3164 0 R 3165 0 R 3167 0 R 3168 0 R 3170 0 R 3171 0 R 3173 0 R 3174 0 R 3176 0 R 3177 0 R 3179 0 R 3180 0 R 3182 0 R 3183 0 R 3185 0 R 3186 0 R 3188 0 R 3189 0 R 3191 0 R 3192 0 R 3194 0 R 3195 0 R 3197 0 R 3198 0 R 3200 0 R 3201 0 R 3203 0 R 3204 0 R 3206 0 R 3207 0 R 3209 0 R 3210 0 R 3212 0 R 3213 0 R 3215 0 R 3216 0 R 3218 0 R 3219 0 R 3221 0 R 3222 0 R 3224 0 R 3225 0 R 3227 0 R 3228 0 R 3230 0 R 3231 0 R 3233 0 R 3234 0 R 3236 0 R 3237 0 R 3239 0 R 3240 0 R 3242 0 R 3243 0 R 3245 0 R 3246 0 R 3248 0 R 3249 0 R 3251 0 R 3252 0 R 3254 0 R 3255 0 R 3257 0 R 3258 0 R 3260 0 R 3261 0 R 3263 0 R 3264 0 R 3266 0 R 3267 0 R 3269 0 R 3270 0 R 3272 0 R 3273 0 R 3275 0 R 3276 0 R 3278 0 R 3279 0 R 3281 0 R 3282 0 R 3284 0 R 3285 0 R 3287 0 R 3288 0 R 3290 0 R 3291 0 R 3293 0 R 3294 0 R 3296 0 R 3297 0 R 3299 0 R 3300 0 R 3302 0 R 3303 0 R 3305 0 R 3306 0 R ] endobj 3143 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 3146 0 R /Contents 3307 0 R >> endobj 3308 0 obj 15670 endobj 3310 0 obj << /Length 3311 0 R /Filter /FlateDecode >> stream xUn0+ M"[.@oIjӶPKr$9FCQ۹^P3zP^A,xn} 0. !aO Y8 ( qq kQ}B?>u5>QWEʍ1ZiD8 gqL5$ILkt\=Bk %ьRʄN')V|QE^A*['miQ ǟ"\BIWFRC햶޷MߏA6踋cm}hR.QJ}Vڛt~S‹b>iPb"_[v-3rAr™p.gQc \a}4s4 @ h$۽2k׉ps(+7^bWUjNhDD\h3>Kƙ]c̯GDH$e6rl^ L!(TKʟJ}*"؎?l1nN2&Y0]&]l mP S2V)jQ;'KB4d֪ "N4 ENNJLzkؼ> endobj 3311 0 obj 674 endobj 3313 0 obj << /Length 3314 0 R /Filter /FlateDecode >> stream xUn0+ M[.@oNjӶPKw(J,/^ѐ3y (~o4yZAK}H}ડ; 5vj};: tbo8֧,+e%|/ Y;H[ЏJVxQ {¥ .FGm5Ef6<*SNp#Cp& @ B!L38@] '<֦zo6Pp@jҼx']CC{GA`Q 2)P} FUu~NiMŢ "lǠ EئZdb:$ 75<Mǡ 6eiY(ҋsU~JFHNA:!i1 d<3agvYr^$[+kjB4Jnub8<d9yoǽJL?nCHy0ۼA:S~=վC<9~"C21e'`vuF6ui _ª.jHܭS  endstream endobj 3312 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3313 0 R >> endobj 3314 0 obj 682 endobj 3316 0 obj << /Length 3317 0 R /Filter /FlateDecode >> stream xUn0+ M sk- PmjIEڦ% 8rf<>Jk3Ċì^AADF%!ָ7nBcAP<=(l:N?w^}B?>e- n~(EʕRI@B1r4yh\BValE3$ 2yU6fF6G:D081-JI/B(pœ_a}豵ڝ-k~xzh] *6d0gɬG%{­1:j]}{~R_UU;`F& 9LA<ecaHAJugy<.#^i@[4X P袪wCO]E!&v4y U'h`4"*Nxgt*_^oL>6Nj%Z/B":*T$JR1*3Ϟfr*"]&X7<=[\\e /8 H|GPZ]~L"+̄YA9fVKB4I) 70sb8̜sDowM2^oj؏gB<׽`y]u]|tshxǯP$LF#vYd.GGP-`\trxO׻s" endstream endobj 3315 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3316 0 R >> endobj 3317 0 obj 679 endobj 3319 0 obj << /Length 3320 0 R /Filter /FlateDecode >> stream xUn0+ M[.@oijӶPKr$w(R,/ 7sߵȃgc8Ȼ$<w [8Mhl.( ?G\\ŀ׀Nuͨ]^:($=Eʵֱ!&š9Kr6UV!-L^A#$$12IU[,,jH]m=9D080t-tJUB(HJş$jۥ?{?: tltwq-~^V2J5!;+f ma[:5j]L=0ۧ6$' 2<0n, WArus5 .^jSC \SCyl/<(,+ʿoE'(`4"ZZG> endobj 3320 0 obj 661 endobj 3322 0 obj << /Length 3323 0 R /Filter /FlateDecode >> stream xUn0+ KQ IZtzK" 80TJ%iCQ-q,\2dSs3V|ȠHԩ: {;ڡyx-P4xq]c|ܜ7;S;_#\ nc2)((]U$z6bx) W<>.80:qJr]BKUYe&) 4tm>PZij:f+m{߮6+zz:AOsC7.%bĆ `g i&s(Nk£M\"TU.Yk[ 8z84`2rn(㘇[W+Ԁ_2{lUB 6 ;'JC:@2kWga ))%:?IٙP\Ʌ!mfcbzI9Nv{u~zH6Зb_gJW}~L$Hqb":LckV-˙wp C'Aڔ8R-qz4VOWܪc^TC]IE^L ,chri_aiEV= kS2ꢆ,*X-q ]> endstream endobj 3321 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3322 0 R >> endobj 3323 0 obj 718 endobj 3325 0 obj << /Length 3326 0 R /Filter /FlateDecode >> stream xRMo0Wmc8VmުECILL1ML\S@0xQ ]C$ Vڍ> A. 1Phs(-`9%cՈz}75y!zyo02' $C2x'0p>qmO73w^AN0<oלNG@\DJp0H+xq!}Fܘ !m#Xa ,b BH9LEղ Է=lI9_P4Mq"}Ҫ; ?ӍZ6ӲKYd{մwOӮ +\iϑg}Iڶ^:r|J"rFIdϖTWY23Bu#] RIhrX9f-m)8#LDS,6Wu !5UH|co_Q endstream endobj 3324 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3325 0 R >> endobj 3326 0 obj 466 endobj 3328 0 obj << /Length 3329 0 R /Filter /FlateDecode >> stream xTM0WqZ]J"C> CAU}mLȒݞR@ho̘@;K :t> w.0`~W`'-a3vzyu5q-z>BO`w@H0,cA%H̙SS5P/Vҟ[:)bfmmmyFz3p_-!> >wM֐H0A.2H_p(J~{$;WM#=YFpnx_ۚ8"NЦ)VuVөY|q FIf+C@1J,Pߢ%LիX [1W]8p(6'JIU"4e?~Nn|s>W>;~p,#gc5f+(7YP7K)H3jo{S(S]f4+VW&I'a%}U.5:5TdeS5] w endstream endobj 3327 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3328 0 R >> endobj 3329 0 obj 537 endobj 3331 0 obj << /Length 3332 0 R /Filter /FlateDecode >> stream xUM0W̭\ıíUU{CòLJĉVIH@{< ?37:Nm 6$#`!rhn`»~Nv3( O+&7@s ;?4 >~(,+HR" 2JT?ˑhjhoZHQBtx 1xnڷMkG_z=~eС)J~%z)U5qzpJCMUa0Vж.Uv(cRdk/n:B !' |C),xpa*+%@UfijJH`TpF-ȝϿf*HtG\4ܦsuLHRiOTun/'*1t [jc$XVn0gZ-'μn?ܚք cb̎C?9$RYfP/̰ެݺuSOLf%O;ʺ(uz˪]Mjkʙ=ufm"߫iҜ4R6 ~zo/ endstream endobj 3330 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3331 0 R >> endobj 3332 0 obj 595 endobj 3334 0 obj << /Length 3335 0 R /Filter /FlateDecode >> stream xUMo0 W&ɖla[݂ء-/QQN4)S罻)M<>1P.!E (7=L@:(&zZK V.B߼?<>|(wӈ'2@BBúۋֶdj{XȄ2C7&GlFއۅ^xEtA,M/C%&!BH{$7| L)aOhךM+sue3]+O8"N8 Ar')&K;Z&:7Y@WiUA۪l;S Qv2UJ&7Ϧzu=g3*I''=:@wOuUT&{ QWhD#lHL4q^R Nδ/ejHUщڦpIbo5\D¸7cvFc'jm2ÒL1,ngs[M%mvmWu=i7 L @[e<,emeA`qY,H"%yYxϢ8.ӅvȬzjU5߯~Vm endstream endobj 3333 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3334 0 R >> endobj 3335 0 obj 634 endobj 3337 0 obj << /Length 3338 0 R /Filter /FlateDecode >> stream xTK0+{;6AnڮChz!'A`P_d<7|1w3XQ Bѹ!搹]=,MW\Zӵ`w;?6srD%8"  YI/OM@]WH~ߒ fV߶Oσp񶄡YvkZBPܕ> endobj 3338 0 obj 537 endobj 3340 0 obj << /Length 3341 0 R /Filter /FlateDecode >> stream xRN0+g9$nHMD괉 _@%̚0@#+8TK0Y:A"P.` -s"[!> endobj 3341 0 obj 426 endobj 3343 0 obj << /Length 3344 0 R /Filter /FlateDecode >> stream xUKo0 W&ɖe=ݲpǘ#a,N@4GR̫ǀ,RqHޫ1ЩD< \,Scw. xG;ss-[zs2{E)DLPJ2E&M^j(P7n o $Rg躩r[E}L3ұnchoWS&"ӝQAVlnX,:РcӶ(& mgw7,qF9QJw^zgyc]IHA g> øK0) /|˹<&?jؗ07xdgaZy˗:;Bѐ()DZ\ζf4x.2cJ}n80+E(PJbtiHr`FXSBbFa 5)*1~A8$ pW1W%o^r޶ ͡*O١W倯GE^ՃWqҤ[T.*{E>XiSnwWaqQd4R endstream endobj 3342 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3343 0 R >> endobj 3344 0 obj 596 endobj 3346 0 obj << /Length 3347 0 R /Filter /FlateDecode >> stream xUKo0W̱=[WiDqjHo@ao?D'?aM^OA:L*BlhթECXD~%6=yzp~?&~x~$@p,a28JB$AlfS̛P-53Ջg8H53 _]Sv˝m:9C t[ } kr6R~>s7e2rM8B > ~Ź>4uEegjP_f#}C?+q-5PѨt%zI3H * J2IiO%hvu_ͺa|ۻ'%ӵ%=pƄdlJAF,7Y,HhSƉQa#b)$^mQ9=,sC 7w}zgeva(鲴A:B4An^/^CF\uI< P.;q]o_ŌU =@l3# $GԌ0kї&w} [;? q endstream endobj 3345 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3346 0 R >> endobj 3347 0 obj 614 endobj 3349 0 obj << /Length 3350 0 R /Filter /FlateDecode >> stream xTn0+-˧$斢4z@e[L;ܠߥHٲ,ٷZjYF (~?!Mb "!+@+w3K8YïDGOϸkC/[*<>}S(̖G&)SR% %k0=۪*.6Ydf?[Ș$ 8mSf˽i7uv"`?rhɷ&KH딓%JE1IavKU80z"~dXWqjwM>%T& Ϊ}G8''xGkW j |}wF]/qD3A)C*;uo1<%S4vzv;4[٬!3f]]}S tӏvgKA4D'1OOy.]m|zWuL(")Cj)LsG8+MTjZ\mPWR7[E% 莩4lc'e"g%(-m1+ LiB{epg1:]S1@u(9:.%Ǩ#Oiڡ\p„[c6˝=.]9\('Y8[c Ń54Xp?~] һ: endstream endobj 3348 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3349 0 R >> endobj 3350 0 obj 658 endobj 3352 0 obj << /Length 3353 0 R /Filter /FlateDecode >> stream xUn0+-EknPP$*S6%%w(j68j7ÀYCsAA󁻄{V Ƿ$\K(lQo=@١sw7'S8·0 "yRO@Ha۳KHrÄG\ʐaKwRU}>BB^DЍy ] [ V28M,K SO*<.vPI&̉eloqPqrûOYZp583trGvۦm.͜8XL}Y76qR|++V/|yiR#~*8^i?zqҠc/h˷rRhPj[~xZdPdjљn5 j$6ldWnwgx> endobj 3353 0 obj 717 endobj 3355 0 obj << /Length 3356 0 R /Filter /FlateDecode >> stream xUn0+hX.ZsK-TYؤC)үP(YݜR/ 5p޼yC=F (~ܐmdDڛxLx[ lpt‡~N3..ΏDny| "%Faь,&r"x>[Jm6ue[%A5`l)^^>xD,NgV>/:n; N$rpe`6niӗ=?dtLN8՛?92J5$8)7fE!]쐏pJ[34'Ohzi}~Gs9LP wcP/9|^Kv]C.5`VS-aLuy+uiHHyɳ+X4M+YiZєMyc@Fս=zf#8o7 &S돾ѫ6 B(jvU<10!IH*6Vuj=0B:C]O,)*߸a8 9PfgyxB58wI~U 4%|_nܑ5lv endstream endobj 3357 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3358 0 R >> endobj 3359 0 obj 551 endobj 3361 0 obj << /Length 3362 0 R /Filter /FlateDecode >> stream xUn0+ E[C"Ӷr$mCZ,[-g8#13Csޛ19d'\,Ucwv ;iwkv-{7)lOwMlDLRJd7E&/5TjxǰPtT jC0ߒ/$-SN ҧzſOա6µݍ6+|8Ҡ,Ni $:a ,>jg4|arw8'\2s"\BK$zS6 #9LP0`)FcX yϥRpdz)Q.J&UalRll]:;h|!uF# ~lx8O v/Ϊ`hw\G4{]^MNtErJ*Ucs1'WUFmUEy2C|v!ū Qxڹ>UWzy6>Xc|2Ow1uswmN cu\ݨ-s Q+Yk} +  endstream endobj 3360 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3361 0 R >> endobj 3362 0 obj 679 endobj 3364 0 obj << /Length 3365 0 R /Filter /FlateDecode >> stream xUn0+h)E$R4 Zh8ŖeHt}"X[q,$V;*Ow `V C c~8Cڹ5P8t] s=z q|t)! G)DP8,vp?UeJE*\O`•Re'A]-!jupϥ+.j.F[/ev4Dh18hGqVoxG( hq^Rn}#1ω5}=UGuH>\N82d1 bLc)j_D`l 026 )!fyTU GBeTP:Ǐ:3N;T@1Dmky9=O aYGeŹj!^Hd}\TGBmcכ*@E~faS4qTTisGkjUF+&-+mT/V@$T dy d&ceݎK'L74}U>hO8IrbZ`sbW7@wHJ5Zvbzl`hgIQ["|i>|1/2+]iQ $ עL@.؊1MQ~yrsf9%{C endstream endobj 3363 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3364 0 R >> endobj 3365 0 obj 715 endobj 3367 0 obj << /Length 3368 0 R /Filter /FlateDecode >> stream xUK0WqG^FmEawUeHĨw'İ&Ag];C"9`$D܉xHx[lp?  'k· h+Z`ŷzVyk|9@%IYD)Dpi-> endobj 3368 0 obj 640 endobj 3370 0 obj << /Length 3371 0 R /Filter /FlateDecode >> stream xUn8}Wc4,o---@ 4Eʴ-@6ߡ(bo/ Ù9<=E (~#9icr4'%1lacqUh |tD] N."{Dۍ>ogǧXDoQX_@Ե*MhhVЛB/ny-dB8{Uz Au8C0sEQ)3~7#.c.gzdԗA*eO+*@FIv8N Y{q6abk¥)xOTNF0_Qx3A)DNavjVdDtpۗEϠ}4ŷZA)* [DغyexIX>Rónھw &$O1gSN?^T佩4ƨh?^:C&b")CNnUS$d7fsl=15Q 5>lf[`烾@lv"f:.NxAڶuzw޾͎S1l/A#\•Hf㎽ҽ #~nk XI0@WuM-bPnY> m|9P0"3ԩL`@ʨclǑ_.%aBvUk{չǓHNs~pqL'Ҧw~(K՚`IMfoV^Zݡ1'7^z:޹yλ%2$b6 НnAEn2:Sm]Xg.S}evz4(]*ۙ"w4?xG?P endstream endobj 3369 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3370 0 R >> endobj 3371 0 obj 854 endobj 3373 0 obj << /Length 3374 0 R /Filter /FlateDecode >> stream xWIs6Wq,\}K˸77!΁ S THi QrONނgk€wGQqƠ rkr)P?D%~O>}-P-q:1y)<%?e(w~E"%(^8l^nUj3)ҜpECר'؝Icԯ:?`Ӽ b2sd){9i ]{{AϋsP? M_FT12J7E/9𼌶kOj;beG5]4W;yżH=Xgğ89}Pl386ũu_f_KFkL*F7UvG-PkbevWtN.fqAM9Ay/OO!ِPUxB4,0p݆oB]aoݹօ #{' '<}ujP@UhT5՝` -fg¿XU-,Ǭn3R*TGURZ&`} -C׌%(T̸(ZMO:pexHXs endstream endobj 3372 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3373 0 R >> endobj 3374 0 obj 1087 endobj 3376 0 obj << /Length 3377 0 R /Filter /FlateDecode >> stream xRMo +B5J"UQH6l V_0^nƶü7D/EŠۊQ(9 3#1%"ܣgW|6Ceor)esX̅pN <#dpѥ.` }iX^@$AOXA 򹏫5'С5qǁ~#%d#<]\?Cn®}p?EQʂAӯ^l;0rj^O0;9SL3͡ F+;^LAw&嬄$+*GpW8H&BՖ#oL^[v$T4#X2i76Q(yaۈ>Iy2)ۃ6ҫ99Q3'zsvpf $l[z}5Ft%}DlI endstream endobj 3375 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3376 0 R >> endobj 3377 0 obj 445 endobj 3379 0 obj << /Length 3380 0 R /Filter /FlateDecode >> stream xTK0+9ao*RT=lV ,&[C %%Dƞ7{gHKqUJh :5D'_z$53o:ow6ǹKa!!KxT|Gu^+*s u{^b%8rT&Tee WPq^>ϏMbz%ksx3 Ak0HbۭeBDq:/U3/LZC,>E(EF؇z|iIccXLmA=JlY=2 =MC >"#dDk,N-cy }eךٺZAemPpî L L#իaq'r^ 7C[˵iz5LgcrgW9Wˆ/x- eej' endstream endobj 3378 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3379 0 R >> endobj 3380 0 obj 606 endobj 3382 0 obj << /Length 3383 0 R /Filter /FlateDecode >> stream xTn0+IQrk =0"8YT"(r,ɱӓ$f8{|s ȷsoȤ7D̄-sN~FCXD F6Bݓs H"lP{,MGVb)WHD&E~eU/ټ-k`U7s]_Cs0Ę"9IGJk6uqPZ Yf#$YCӍON<#q~3ld Џ0 xx`Xi-~Zdrdf I\_HiM-dLx?æ\by' LW͏,Ӏ\M(-=Xa(OHMēC\9&,&MaL.7b1rRUSm ۺssЍI ]دPƥiR)+(` ՞yaˑ߭.N, O endstream endobj 3381 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3382 0 R >> endobj 3383 0 obj 519 endobj 3385 0 obj << /Length 3386 0 R /Filter /FlateDecode >> stream xUKo W̱ZCZiݦCSU㤖H 6~yݲN,``oۈC Z!LZSa m? W;|-+ d@G3a!zq| 8=Fa<d,"Q) yf%<]=*kRI sUZr1z^P'C\:3\IS iPvQw  7944Dݙ:T*m]"q:/UELXGFIXGpa6bwV~MT1ãmK_on+%כg˜DڸzYHӥ'Hm&P&--}͎4n6'qߩJ-tq<,3Q~-t^++S aD"VIiMb/jF~d?)`ti ㍶ {7Iw^ިʹ6,hrŮd )bp-qQ2 ΨMU Z5]?X endstream endobj 3384 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3385 0 R >> endobj 3386 0 obj 664 endobj 3388 0 obj << /Length 3389 0 R /Filter /FlateDecode >> stream xTn0+).Rn-=p㢇8 YȒC r,Kzre $f4{_L* [EϝΤ4Ʉt{%}߈ݎm'"#9g0]|z^a}G)"X"Q E`(?04j{h7ρCI kWU ,֞%oz MOQ$ԡH9fr~fW4R ɥ YW?TKcikإ &GTYAw fX2^f g9dJ>tQh( µ endstream endobj 3387 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3388 0 R >> endobj 3389 0 obj 576 endobj 3391 0 obj << /Length 3392 0 R /Filter /FlateDecode >> stream xTKo0+;6޺ڇCSU! 1)&1hُT" ƝI "&$젛K(ip" ~M'0+@ 4]<f΃ 8B>R$$KDD"JP$wSEɚ2U [=?Y4C(S]Y[@VJȶBa6g fm-V7>Z2±g gJBo#\enǓ8(Jh"S.##]H%O ¬HWO4b ԟ'P۪~˿ 3H0CDN&ǎKM(HyBi@|.TB}e Oؠ=ر|}h v1KNXzWdrWvi9LXR6WewTӚy}mV{G׹  ({YYnU^n~+jBqbKڳ3 li6 endstream endobj 3390 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3391 0 R >> endobj 3392 0 obj 529 endobj 3394 0 obj << /Length 3395 0 R /Filter /FlateDecode >> stream xTMo0 WQ%ٽmÀ vhpĀ#~4Ӥ=eR㣞q@z?m8R&AL(B?WPѪDg4E4F?;r.)9i.xރGXG_![Z$KBDjT¤H# ՟V;emv;~ $ 1HN8I`] ymۦ <4J Uv!l!Ь#FgX'C8 j?X鏙 6lz%c($L08d1VEO@,B}RFzW>kе1DK S::'?'77^qus6sFgby' Lלi*5?NLכ3aNMH(OZ@(MH2+>4}0GRIMϔjq~\*#'M4ݶ;rR ]hI¸8 q 7߮s  ݞv頿EwztoAw@f? endstream endobj 3393 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3394 0 R >> endobj 3395 0 obj 518 endobj 3397 0 obj << /Length 3398 0 R /Filter /FlateDecode >> stream xTMo0 WQeYm0`d)qRZΊQn2@)QOz8 l=u6ZL:J@L(C7WPҪD3"Z*Ʊg WJd%`{W)C!a$> endobj 3398 0 obj 516 endobj 3400 0 obj << /Length 3401 0 R /Filter /FlateDecode >> stream xTn0+-KRZ C.z@h[L:""ߡ(Ųj;=^ gy| PuKq(Scp%bj56`7 (w,bNu`6")gb 1A)ER}8,pwVueaժVZXZS=,322ZFPl@k|Z02u3t`:p%A@D02֋DBCBu~xItQ*O,q@"IO ¬u i:gc &=8?4HPZ7f"N8 )e8+e`r혈H8:KΓiB|.V沖&m@ե$S&qqI|;S!5;B1ɒ4bgjy,$ a7v+5)b ʣKniJX"Q>JS4qv!gDQ*#`5t+׍nU⧷qg ^M.-V2e8 endstream endobj 3399 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3400 0 R >> endobj 3401 0 obj 569 endobj 3403 0 obj << /Length 3404 0 R /Filter /FlateDecode >> stream xWmo6_6r$EQRt؆%vQ uQ(2- THJ"%[.0,/ݑ|9:+"k;GQ')_ 1cX7q}3f?EgdNf !/>AlGR|QDcah}@,ϚʢFB:+'bB8DRXE,Qe˴6Y~Y({ЇѺa`-s2Dav9̘Jhf#fhc =Pi/H hR/Y!y< LdVIs-I9^x8ÌzP$hr Y6ZZ5{td.U>KЃ,:[xBJ: .^+0W| .Pqa  Y! .",FxJ(Npx%B"Q~iAkQ`N(BUz<Ȣ~)"6 /-+V"#Dp(|uY(eqǗQՅ"T\xlx 11I*{R}pYbHBU p+ښz+z:q%{~6i?uNZ7,m j#ōyc3 $,7XBrTkGOYe^Y'5lGs,:;1VWEs@ႪF]-.l젞B@טqa`6_c=12o95T%|V>24ɿ)\}>k넪WuKM8u@ |V֭iuN¶Fu- Nf­w0n96Fϱ1J;ߋ=WXI =F]G- q@]8mzPi)5w1Kq2 [ի5G~u_k;Wv;}]Hdeu }UV=n,nJ;h[!~ԕw?d7 OWx?@ endstream endobj 3402 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3403 0 R >> endobj 3404 0 obj 1139 endobj 3406 0 obj << /Length 3407 0 R /Filter /FlateDecode >> stream xUn0+-CRo݁ނ8! Vm"Ht}dS^ҞRǀ;9GC8C < W>pppAPޣ=L7_W^}o^: .(,W{xLrSJ<e nyն)M+W?,4HuA ݘNWPlD׃je12z M # kg[j[W5*a]#n,A}si"Km $"Y1kGikV)^>&\1ǣsXqNeqYH).NcwvxE[,Wз`4+*;w6IA^4U?'3<J.zrJ}0&e1n1߮lD'qN /1 en\~*l,eyZ?r6(6P0YFXh=QJ|}ѩ5QqIˍQWNdi" _۶n;%n+D> endobj 3407 0 obj 709 endobj 3409 0 obj << /Length 3410 0 R /Filter /FlateDecode >> stream xUKO0W$0oiom-$N~q%Cxgc@{i8吕Kcs^FC(C(pTۄ~{Gw(:z0\|L[ Vw=Faܵ$e!aQ/ e`VQj`khU`s%!0/=#FA+SPzո({jtIG=C}˄X~@|CmMEτ~u8qQtNQ3C'Yl%/„%w mo91ń[cTxtpNU> endobj 3410 0 obj 756 endobj 3412 0 obj << /Length 3413 0 R /Filter /FlateDecode >> stream xVn8+hCQocf`$vITH OQԞ̜^bzAo#+muԅ1QbhahZ`>]@gܬs@w*ۡ)=@R I bph{+i_xJ+Ug4NKN(2ĸtwFB:Ue͵AN{A( @aa(f OFl6nwVĚ15>jF&O}=yAUl,s!%IήQ.\O8ᵱ f,ptiNmeW"/3ˆ \#@9Ǝ N>1 qyUg `z^ x[ (ZT,7]rT_a.FC C*޽t7LhB"ˋ"e%62tSF|QBb"G?ӹEs>ͅ9rg^moqGWjѪ'Q we %oQLw!~Բ_XHBJZ7YNRh& z`rV,JCᪿ,_/{5*vc+#|ZenjL+ Y_cQ7M'N|53Ȳvٯֲ#ǼzeVV{20F> endobj 3413 0 obj 830 endobj 3415 0 obj << /Length 3416 0 R /Filter /FlateDecode >> stream xVKo8W1KRZ[P{hX=JCQ(GN{Jep^?~ ("W3T4Ө(e(LFU a0i/7 7hD^rnp{|x~]Qv"Ƅ*!ЮAoFҼCFvFN^xd<)%ax%*֨FEŕFEuw.ʟB!e7 )ȳ0YZR@$o#K/gGJ^V7@F[; W JAB $V>Il0u񿾶IK=+pP<zK%7~~IF/E]voxO\ڛ]=g`Δ[wޘC-Ysyr]-'Փ)8 $]mq\Jak |ޛi{Rݣ&SV + migM;Ek~9x endstream endobj 3414 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3415 0 R >> endobj 3416 0 obj 851 endobj 3418 0 obj << /Length 3419 0 R /Filter /FlateDecode >> stream xTK0+wl̫VmVf.! pllBcJ<fK@oc$cPd0@9a04'wI*tY;w:5tcc7{}ҁa8߄Ù9"s7Yǂim\tFh&t0:G8(Bw{@$ey- e(߾*Ny:|4%o&Qc UzO3?l;Aɂ 4Cy_/@F endstream endobj 3417 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3418 0 R >> endobj 3419 0 obj 576 endobj 3421 0 obj << /Length 3422 0 R /Filter /FlateDecode >> stream xTn0+ KR Z)C B{Hh[$:" _R/2zrep5 -Su#('@"DcakPS]!kW6X o޿K n'.ώa|΂71 bpD(OABC!]Ygb Y+] Z[-#d߃qP@d$CBնMǯYv2JKgjWjU4^ɫ.ԈZ>\./{ ;ț-n\mó.qE-nxN?v()8lK6Y.T+#~S"7QUVdesr 8G8rc9oeUN0QJ4D endstream endobj 3420 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3421 0 R >> endobj 3422 0 obj 654 endobj 3424 0 obj << /Length 3425 0 R /Filter /FlateDecode >> stream xTKo0 W&Ci;(l(\[iږk GIl'M0`@E#g߅["!-獎A7 &@Np_^Qޡ1kg(wO2>^(̗EL)~\ü۳kcU1O*I55Q?o 6:C 2~v ^>3n־^QtA(3ɏG%d08<:A#]8%^1&<R@UmecIRIݗM|3R圎} YtfyrY׳,ή] f*mkm_Q_t9ri"ڔ` tn#%l+0 WU(M5 j 2 y;Tj}"{߇eƼH )#>iTW]m' + @:WHMGX֦@u杩L 8?]_(dQ݁?Vww;}Ik]9u#8DpFi+]+l5\pm{P8j;Meӣ Ij$_Ma^TFrغԀTU)4kZ ڪ24k9±>wEأIեʡ0YΛRDܽ'yZѻ{l{- endstream endobj 3423 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3424 0 R >> endobj 3425 0 obj 694 endobj 3427 0 obj << /Length 3428 0 R /Filter /FlateDecode >> stream xTn0+-M s="$J# %Em^d4͛7s@{{zWሆPCoPS3}CXϠ 0| nf^_W3~ߜS) >\@0DD B} bTBZ6N m*3ҜC=hcmW]^qj1}g#xwgvsߋ:$Uț/Gd1$^l7E:QQl~SئgMŅ6YYQ<62')aLl:3 ]!憎0> :EQ6OrUH0dvHd&(r0RPq#'BD4E eċɪ-!51.Dl[RMf֋Fc8` ê$+YUoZޝN,{Zm\CjȥrUV;Qp y[n\ϜjyJ)`wYR9ٯ6QT+ǥ0؝aQN,7۬^GGȋ s9[f'|~7βy\Qf&h= / endstream endobj 3426 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3427 0 R >> endobj 3428 0 obj 637 endobj 3430 0 obj << /Length 3431 0 R /Filter /FlateDecode >> stream xTn0+JsH)Л=AtF--%EɖW8̛7~!5DodQ@f0L`p *Dz|rpZ\ K>J YJD5G P3I )IH;ۀlMwg1)ܖC8sC Hl;ȃi7c3$'gy 2g?#W??;R`DJ+W{ˇ#XsrWSj7|$T7޶]Z,6GV $OE( 3 .K1 -1 It;c!_Li %`Ha"=e\zP 8}t9-}e6o'W}XKuTp:C0e zAEo c%nBnsMG1འej8 {6/YcʽEi&^G F >igv.m̐[ϳzT]Yo23dgDV| endstream endobj 3429 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3430 0 R >> endobj 3431 0 obj 538 endobj 3433 0 obj << /Length 3434 0 R /Filter /FlateDecode >> stream xTK0+JjShQ{خ"BLBڠU}mK=a3|3c}?EH YuUa#B{9t7Ya?:-xz `pc; ;>m9 >-B X"">11*C!ө*I[HtZ2 ר3$߃Ɍ#?p[9x2~ mBHGȼj<3W=^偏4|F ~}> endobj 3434 0 obj 572 endobj 3436 0 obj << /Length 3437 0 R /Filter /FlateDecode >> stream xTK0WqP/0cՇ[6I ٭;$!O͌?͌J80|?A6ZLSWT$P0O Fd?IM|#/\CoNS2;?5_ !EP.>Ja# awmykk_nz=@|ɏI.IC*.Ӵ/#Q3j` e%rW9pc qv*{C g4;jİ p笝2pHj> endobj 3437 0 obj 529 endobj 3439 0 obj << /Length 3440 0 R /Filter /FlateDecode >> stream xTKo0 Weq:`vhAIă_ ,'qvlI?[Ā/JsX۠c8dP 0Ix % r 5N%lBa?*5z~E(:i):Ec`աDL)>!+uLYk*Wn_!}Ɏ YC ;So!2EС&`{S1pXC"A |:Ƀh1)x((I#lrn\Fz=~ *Tjz1jzn\g(2PP3A)T#@q8l"!?l ;¹:/Ǽ.B /wi]^aQ`U^wO18;> endobj 3440 0 obj 567 endobj 3442 0 obj << /Length 3443 0 R /Filter /FlateDecode >> stream xTKo0 We*˰unA( v-g(I'vbph#`&o A a(H[ ~0Fи ;N??Xػ3x!s> _[ )Ȩ&<5<<[綁/mWn N$ۤ! Ӵ!Q2Z~eԡ&bS9p8c!Q|y`c;C@hvv2Ȁ#A09FgwSW-"3MQ(Aq,r)M4 -Bcu+ =(Loz?o- h v4HUoC͙EΌIER˅1[n1Oa4͔17!:8-Eu+aCeJ4C:\21~d<-yxfnYBu] j@OK }g endstream endobj 3441 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3442 0 R >> endobj 3443 0 obj 540 endobj 3445 0 obj << /Length 3446 0 R /Filter /FlateDecode >> stream xTKo0 W-a` vhAIԃ~$N@ )G~K€>,JsXl@qYoJ3`6S©wCy65y|B(Iy.xLCoOa|,_R`ձEL)>áy)LEk2n:|.N IWC$&H7G*g hE%bWϰ_c!qu=ҠC)> endobj 3446 0 obj 570 endobj 3448 0 obj << /Length 3449 0 R /Filter /FlateDecode >> stream xTMo0 W˖cmnA*'q%wC(I|a #) OqFӒ>Z{WWTdΠXMhO"  >CS28?r[_3 ŮDP.>Ja#\#nYJoW ~;RI.IC;.iQ Slֿv2Гc{د)d&=i=d\xȌ:9A##V ?Ԅ[5: 5~=w77 ml|*@ *dc'k&Șz `ZVq쪱>Dg]ͽ|մavQ#tQ|$<_P )Q˜\ tXs\HX(?lHxɕy8 ԅPW';1T t8?~[_yH_Q&yReP1U3m(lQy{hak fM菝vtp '/N endstream endobj 3447 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3448 0 R >> endobj 3449 0 obj 525 endobj 3451 0 obj << /Length 3452 0 R /Filter /FlateDecode >> stream xTMo0 W*ɲe8-PR%ZQI$z||"׈Ⱚ@rޔ T(f8E8yQQ=<(D8|}"L@Fb!fnrBږ55ї|-f?hmsb|9~l>r$=-alh U5ǐH=aA2PŸGJ>%٨1L6w{'N?ԄK%6} jfi-i<;!" g1 8?2> endobj 3452 0 obj 562 endobj 3454 0 obj << /Length 3455 0 R /Filter /FlateDecode >> stream xTKo0 We*˰unA( v-g(I'zb_І|:P*U$)aS(H[ ~&UB[P t}C2 }w| y>F!_[ aIȈ&<5<<[綁/mWn | I_C$&I?C*e;^CMrpB"A,w]/`1R..;wd{GDsBWJK/BM[ݝlC='ZDg"3p&(eX S/PD˦i)_^*- B WYڮ햂yQ+pJ _m9HbtfY :K,H>> endobj 3455 0 obj 539 endobj 3457 0 obj << /Length 3458 0 R /Filter /FlateDecode >> stream xTMo0 W/[Vv bl(TI=8qjGYNb'qSfB^aQbt6:SnBmnK73$%|? =ׂɤ<V"5FXi8'ux8k9oׅBј('_66isbB9i>p=֖PDZ"wpU] 5&QO\GuЃ W1쑫 @FI>hT2p(&TQcӋNжy%[㜈Ar™a!)˲e/`M %Dٍ7k4ݩA11;: on7֕ng@KUu:Q~qA$ wTvψ|L*Rk 9stPCg 0.6Mi!}&GuK٠TL$giOlY6W,m 0U8Z8Hf:=ze/׶^>ѤbIn ] IZ endstream endobj 3456 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3457 0 R >> endobj 3458 0 obj 559 endobj 3460 0 obj << /Length 3461 0 R /Filter /FlateDecode >> stream xTKo0 We*˺unA( v-g(I켰SfCw{ȸWE1pEEk k G ~0FѸ ; 9?[)g.%rI$T n֮ӬJWdmu};I.IC ;.i!RllNv2P{؟! ><˃i!\xhMF\jG;>~ jTzjf\մΜԖ@DQTJP%cS9Bɘ~b~a*>.܇.B ӛ_ռ*~z!=o`8~Pr{ _V՜(QĘX$$K\H(BȊݡ"1,WƉ2F(\=.Oy+ a/} 5y6+r-ʄ_7y^) cg,MϮj˼6]Vf]n %8Zd} `'/r endstream endobj 3459 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3460 0 R >> endobj 3461 0 obj 540 endobj 3463 0 obj << /Length 3464 0 R /Filter /FlateDecode >> stream xTM WqWjY)6IH֭֐V I$zJmKokD,F@PyoJ8h% j0"7yQa=>9 v! _&Ew_ !ED"B{R)Ǜ7cuVUPnmo }FbBYC+N'PW#ax~vq9Ka?@4 |*=rUH0JGH9WI!=^O #P[*Q{AM[/A2ygR`QcL\CN瞏SRq `UkjfYM^hz!l t[z-v'+)# GqY.nLnvPy&#!)R)9M$( bqWV)%aI)\GNmL^W#ʾh0=B~ߪC#{aO,ۼqb(87Ruj?ƂZ[݂q\A'@EܟQ.3[oyJMEǻBV[ @a} endstream endobj 3462 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3463 0 R >> endobj 3464 0 obj 576 endobj 3466 0 obj << /Length 3467 0 R /Filter /FlateDecode >> stream xTKo0 We*[Pc;4E$ίZΆQ8OD"?~$׈_0/A@sjP $<9 |#6QQ=>qD0\MFBOg1(]!S| CZ_2H۬rE-௳ߢ/76sd|9~m3Ē[F#=:lo*kH$OX;tbF ~~r Ѓf^M^Xza!~ٶb]톘 g¶+呅\Uݸm\͉INQ< N'q qA$ב!X-*b2J1g#Z:?Nyu+ 0!> endobj 3467 0 obj 557 endobj 3469 0 obj << /Length 3470 0 R /Filter /FlateDecode >> stream xTKo0 W*ɲd8MQ(z# ,;ev)?~HJo ǰ(a^'oI` jT᫽ p~&MB[p=!:?eHf(]&S|r9IǛwm]i\e|u>A=RhK&}QL8ǟ"}w֞06DઆkL$n;t_\||\%R1]= 9$O.IJ endstream endobj 3468 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3469 0 R >> endobj 3470 0 obj 567 endobj 3472 0 obj << /Type /Action /S /GoTo /D [3309 0 R /XYZ 72.0 720.0 null] >> endobj 3473 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 246.77 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3472 0 R /H /I >> endobj 3475 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.812 709.5 541.812 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3472 0 R /H /I >> endobj 3476 0 obj << /Type /Action /S /GoTo /D [3312 0 R /XYZ 72.0 720.0 null] >> endobj 3477 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 257.32 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3476 0 R /H /I >> endobj 3478 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.738 697.5 541.738 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3476 0 R /H /I >> endobj 3479 0 obj << /Type /Action /S /GoTo /D [3315 0 R /XYZ 72.0 720.0 null] >> endobj 3480 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 248.99 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3479 0 R /H /I >> endobj 3481 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.795 685.5 541.795 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3479 0 R /H /I >> endobj 3482 0 obj << /Type /Action /S /GoTo /D [3318 0 R /XYZ 72.0 720.0 null] >> endobj 3483 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 251.77 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3482 0 R /H /I >> endobj 3484 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.778 673.5 541.778 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3482 0 R /H /I >> endobj 3485 0 obj << /Type /Action /S /GoTo /D [3321 0 R /XYZ 72.0 720.0 null] >> endobj 3486 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 261.77 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3485 0 R /H /I >> endobj 3487 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.707 661.5 541.707 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3485 0 R /H /I >> endobj 3488 0 obj << /Type /Action /S /GoTo /D [3324 0 R /XYZ 72.0 720.0 null] >> endobj 3489 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 649.5 187.357 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3488 0 R /H /I >> endobj 3490 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.084 649.5 542.084 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3488 0 R /H /I >> endobj 3491 0 obj << /Type /Action /S /GoTo /D [3327 0 R /XYZ 72.0 720.0 null] >> endobj 3492 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 212.33 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3491 0 R /H /I >> endobj 3493 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.052 637.5 542.052 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3491 0 R /H /I >> endobj 3494 0 obj << /Type /Action /S /GoTo /D [3330 0 R /XYZ 72.0 720.0 null] >> endobj 3495 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 204.55 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3494 0 R /H /I >> endobj 3496 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.106 625.5 542.106 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3494 0 R /H /I >> endobj 3497 0 obj << /Type /Action /S /GoTo /D [3333 0 R /XYZ 72.0 720.0 null] >> endobj 3498 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 201.77 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3497 0 R /H /I >> endobj 3499 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.123 613.5 542.123 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3497 0 R /H /I >> endobj 3500 0 obj << /Type /Action /S /GoTo /D [3336 0 R /XYZ 72.0 720.0 null] >> endobj 3501 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 209.55 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3500 0 R /H /I >> endobj 3502 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.069 601.5 542.069 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3500 0 R /H /I >> endobj 3503 0 obj << /Type /Action /S /GoTo /D [3339 0 R /XYZ 72.0 720.0 null] >> endobj 3504 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 589.5 300.423 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3503 0 R /H /I >> endobj 3505 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.348 589.5 541.348 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3503 0 R /H /I >> endobj 3506 0 obj << /Type /Action /S /GoTo /D [3342 0 R /XYZ 72.0 720.0 null] >> endobj 3507 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 207.9 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3506 0 R /H /I >> endobj 3508 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.082 577.5 542.082 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3506 0 R /H /I >> endobj 3509 0 obj << /Type /Action /S /GoTo /D [3345 0 R /XYZ 72.0 720.0 null] >> endobj 3510 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 207.34 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3509 0 R /H /I >> endobj 3511 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.086 565.5 542.086 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3509 0 R /H /I >> endobj 3512 0 obj << /Type /Action /S /GoTo /D [3348 0 R /XYZ 72.0 720.0 null] >> endobj 3513 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 226.76 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3512 0 R /H /I >> endobj 3514 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.952 553.5 541.952 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3512 0 R /H /I >> endobj 3515 0 obj << /Type /Action /S /GoTo /D [3351 0 R /XYZ 72.0 720.0 null] >> endobj 3516 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 237.89 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3515 0 R /H /I >> endobj 3517 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.873 541.5 541.873 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3515 0 R /H /I >> endobj 3518 0 obj << /Type /Action /S /GoTo /D [3354 0 R /XYZ 72.0 720.0 null] >> endobj 3519 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 212.89 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3518 0 R /H /I >> endobj 3520 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.048 529.5 542.048 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3518 0 R /H /I >> endobj 3521 0 obj << /Type /Action /S /GoTo /D [3357 0 R /XYZ 72.0 720.0 null] >> endobj 3522 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 205.11 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3521 0 R /H /I >> endobj 3523 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.102 517.5 542.102 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3521 0 R /H /I >> endobj 3524 0 obj << /Type /Action /S /GoTo /D [3360 0 R /XYZ 72.0 720.0 null] >> endobj 3525 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 203.45 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3524 0 R /H /I >> endobj 3526 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.112 505.5 542.112 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3524 0 R /H /I >> endobj 3527 0 obj << /Type /Action /S /GoTo /D [3363 0 R /XYZ 72.0 720.0 null] >> endobj 3528 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 206.78 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3527 0 R /H /I >> endobj 3529 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.09 493.5 542.09 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3527 0 R /H /I >> endobj 3530 0 obj << /Type /Action /S /GoTo /D [3366 0 R /XYZ 72.0 720.0 null] >> endobj 3531 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 212.89 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3530 0 R /H /I >> endobj 3532 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.048 481.5 542.048 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3530 0 R /H /I >> endobj 3533 0 obj << /Type /Action /S /GoTo /D [3369 0 R /XYZ 72.0 720.0 null] >> endobj 3534 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 217.89 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3533 0 R /H /I >> endobj 3535 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.011 469.5 542.011 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3533 0 R /H /I >> endobj 3536 0 obj << /Type /Action /S /GoTo /D [3372 0 R /XYZ 72.0 720.0 null] >> endobj 3537 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 216.77 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3536 0 R /H /I >> endobj 3538 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.019 457.5 542.019 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3536 0 R /H /I >> endobj 3539 0 obj << /Type /Action /S /GoTo /D [3375 0 R /XYZ 72.0 720.0 null] >> endobj 3540 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 445.5 346.394 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3539 0 R /H /I >> endobj 3541 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.048 445.5 541.048 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3539 0 R /H /I >> endobj 3542 0 obj << /Type /Action /S /GoTo /D [3378 0 R /XYZ 72.0 720.0 null] >> endobj 3543 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 253.97 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3542 0 R /H /I >> endobj 3544 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.761 433.5 541.761 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3542 0 R /H /I >> endobj 3545 0 obj << /Type /Action /S /GoTo /D [3381 0 R /XYZ 72.0 720.0 null] >> endobj 3546 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 251.21 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3545 0 R /H /I >> endobj 3547 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.781 421.5 541.781 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3545 0 R /H /I >> endobj 3548 0 obj << /Type /Action /S /GoTo /D [3384 0 R /XYZ 72.0 720.0 null] >> endobj 3549 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 256.21 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3548 0 R /H /I >> endobj 3550 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.745 409.5 541.745 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3548 0 R /H /I >> endobj 3551 0 obj << /Type /Action /S /GoTo /D [3387 0 R /XYZ 72.0 720.0 null] >> endobj 3552 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 261.2 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3551 0 R /H /I >> endobj 3553 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.711 397.5 541.711 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3551 0 R /H /I >> endobj 3554 0 obj << /Type /Action /S /GoTo /D [3390 0 R /XYZ 72.0 720.0 null] >> endobj 3555 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 251.76 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3554 0 R /H /I >> endobj 3556 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.777 385.5 541.777 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3554 0 R /H /I >> endobj 3557 0 obj << /Type /Action /S /GoTo /D [3393 0 R /XYZ 72.0 720.0 null] >> endobj 3558 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 255.1 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3557 0 R /H /I >> endobj 3559 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.753 373.5 541.753 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3557 0 R /H /I >> endobj 3560 0 obj << /Type /Action /S /GoTo /D [3396 0 R /XYZ 72.0 720.0 null] >> endobj 3561 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 240.66 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3560 0 R /H /I >> endobj 3562 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.853 361.5 541.853 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3560 0 R /H /I >> endobj 3563 0 obj << /Type /Action /S /GoTo /D [3399 0 R /XYZ 72.0 720.0 null] >> endobj 3564 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 248.43 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3563 0 R /H /I >> endobj 3565 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.798 349.5 541.798 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3563 0 R /H /I >> endobj 3566 0 obj << /Type /Action /S /GoTo /D [3402 0 R /XYZ 72.0 720.0 null] >> endobj 3567 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 240.66 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3566 0 R /H /I >> endobj 3568 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.853 337.5 541.853 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3566 0 R /H /I >> endobj 3569 0 obj << /Type /Action /S /GoTo /D [3405 0 R /XYZ 72.0 720.0 null] >> endobj 3570 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 207.89 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3569 0 R /H /I >> endobj 3571 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.082 325.5 542.082 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3569 0 R /H /I >> endobj 3572 0 obj << /Type /Action /S /GoTo /D [3408 0 R /XYZ 72.0 720.0 null] >> endobj 3573 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 235.11 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3572 0 R /H /I >> endobj 3574 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.894 313.5 541.894 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3572 0 R /H /I >> endobj 3575 0 obj << /Type /Action /S /GoTo /D [3411 0 R /XYZ 72.0 720.0 null] >> endobj 3576 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 237.88 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3575 0 R /H /I >> endobj 3577 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 301.5 541.874 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3575 0 R /H /I >> endobj 3578 0 obj << /Type /Action /S /GoTo /D [3414 0 R /XYZ 72.0 720.0 null] >> endobj 3579 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 265.1 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3578 0 R /H /I >> endobj 3580 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.684 289.5 541.684 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3578 0 R /H /I >> endobj 3581 0 obj << /Type /Action /S /GoTo /D [3417 0 R /XYZ 72.0 720.0 null] >> endobj 3582 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 277.5 255.227 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3581 0 R /H /I >> endobj 3583 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.642 277.5 541.642 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3581 0 R /H /I >> endobj 3584 0 obj << /Type /Action /S /GoTo /D [3420 0 R /XYZ 72.0 720.0 null] >> endobj 3585 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 255.92 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3584 0 R /H /I >> endobj 3586 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.747 265.5 541.747 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3584 0 R /H /I >> endobj 3587 0 obj << /Type /Action /S /GoTo /D [3423 0 R /XYZ 72.0 720.0 null] >> endobj 3588 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 250.92 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3587 0 R /H /I >> endobj 3589 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.783 253.5 541.783 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3587 0 R /H /I >> endobj 3590 0 obj << /Type /Action /S /GoTo /D [3426 0 R /XYZ 72.0 720.0 null] >> endobj 3591 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 249.8 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3590 0 R /H /I >> endobj 3592 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.792 241.5 541.792 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3590 0 R /H /I >> endobj 3593 0 obj << /Type /Action /S /GoTo /D [3429 0 R /XYZ 72.0 720.0 null] >> endobj 3594 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 239.8 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3593 0 R /H /I >> endobj 3595 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.86 229.5 541.86 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3593 0 R /H /I >> endobj 3596 0 obj << /Type /Action /S /GoTo /D [3432 0 R /XYZ 72.0 720.0 null] >> endobj 3597 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 230.92 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3596 0 R /H /I >> endobj 3598 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.922 217.5 541.922 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3596 0 R /H /I >> endobj 3599 0 obj << /Type /Action /S /GoTo /D [3435 0 R /XYZ 72.0 720.0 null] >> endobj 3600 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 213.16 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3599 0 R /H /I >> endobj 3601 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 205.5 542.045 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3599 0 R /H /I >> endobj 3602 0 obj << /Type /Action /S /GoTo /D [3438 0 R /XYZ 72.0 720.0 null] >> endobj 3603 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 230.1 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3602 0 R /H /I >> endobj 3604 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 193.5 541.928 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3602 0 R /H /I >> endobj 3605 0 obj << /Type /Action /S /GoTo /D [3441 0 R /XYZ 72.0 720.0 null] >> endobj 3606 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 230.1 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3605 0 R /H /I >> endobj 3607 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 181.5 541.928 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3605 0 R /H /I >> endobj 3608 0 obj << /Type /Action /S /GoTo /D [3444 0 R /XYZ 72.0 720.0 null] >> endobj 3609 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 217.6 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3608 0 R /H /I >> endobj 3610 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.013 169.5 542.013 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3608 0 R /H /I >> endobj 3611 0 obj << /Type /Action /S /GoTo /D [3447 0 R /XYZ 72.0 720.0 null] >> endobj 3612 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 218.16 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3611 0 R /H /I >> endobj 3613 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.009 157.5 542.009 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3611 0 R /H /I >> endobj 3614 0 obj << /Type /Action /S /GoTo /D [3450 0 R /XYZ 72.0 720.0 null] >> endobj 3615 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 213.16 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3614 0 R /H /I >> endobj 3616 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 145.5 542.045 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3614 0 R /H /I >> endobj 3617 0 obj << /Type /Action /S /GoTo /D [3453 0 R /XYZ 72.0 720.0 null] >> endobj 3618 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 230.1 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3617 0 R /H /I >> endobj 3619 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 133.5 541.928 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3617 0 R /H /I >> endobj 3620 0 obj << /Type /Action /S /GoTo /D [3456 0 R /XYZ 72.0 720.0 null] >> endobj 3621 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 213.16 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3620 0 R /H /I >> endobj 3622 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 121.5 542.045 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3620 0 R /H /I >> endobj 3623 0 obj << /Type /Action /S /GoTo /D [3459 0 R /XYZ 72.0 720.0 null] >> endobj 3624 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 230.1 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3623 0 R /H /I >> endobj 3625 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 109.5 541.928 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3623 0 R /H /I >> endobj 3626 0 obj << /Type /Action /S /GoTo /D [3462 0 R /XYZ 72.0 720.0 null] >> endobj 3627 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 213.16 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3626 0 R /H /I >> endobj 3628 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 97.5 542.045 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3626 0 R /H /I >> endobj 3629 0 obj << /Type /Action /S /GoTo /D [3465 0 R /XYZ 72.0 720.0 null] >> endobj 3630 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 230.1 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3629 0 R /H /I >> endobj 3631 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 85.5 541.928 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3629 0 R /H /I >> endobj 3632 0 obj << /Type /Action /S /GoTo /D [3468 0 R /XYZ 72.0 720.0 null] >> endobj 3633 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 213.16 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3632 0 R /H /I >> endobj 3634 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 73.5 542.045 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3632 0 R /H /I >> endobj 3635 0 obj << /Length 3636 0 R /Filter /FlateDecode >> stream xMG~Ջqsv@O̢r0FC`IL5';l)QE\aqG۫ÿ|U^ECZi+_W꛿~|W~X^ß_-՟˫uyh{}yϺO?۫?O}o>oo՟˟?X?_3ٷJ.ͯ?a|Ǐ|~~!~|i,,P]?)bGO}@v5Ͽo>{ˏ?ſ-][>w[;}WS}wUimeUOJ7?C*o&q   MCCCSSS,"XD`*M6"E`!C`, + ` ````````"EV"D`&]v"8Dp`. ` + `n x q```````YLzh%-z1(ٟ~To}z4(˲@E>kQ}f~:nP?~TՕ!kԅj666 LLL,dYȲe%J,+Y6ldȲe'N,YbX"ebX*o O LLL,dYȲe!J,+Y6ldȲe'N,YbX"ebX*enbXFAAAIII_FK9}h.K-㼬8mç%=5~1|x}ղӀOJOBuz{|:nRbbbbmbmbmddddddddYȲe!J,+Y6ldȲe'N,YbTe,bX*ebX&eeeeeeee!B,+YVdYɲe#F,;Yvd9r\2E,s\2WM,s27 LLL_G[X1(e,1I|tzq/7aZɆCuBuzN6Ns1b9'RlH-sueeeeeee!B,+YVdȲe#F,;Yvd9rlH-s!XɆb9'Pob9'Reeeeeeee!B,+YVdYɲe#F,;Yvd9r9ِZ,dU,dCj rN6& $$$}=쓍֗y^Vzlz㻋Af:=pTPIuz~Z,K&& $$$B, YdYɲe#F,;Yvdr !P~z r~~ ddddddddYȲe!J,+Y6ldȲe'N,Yb_OXT@-P~Iz 2222222rN6F}ߪeoJٞc' ^o:ڏioui9YuY׷Iuϳ81!qx@ qC qJ "XE`&Mv"Ep!b sv 1% 8```````"EV"XE`&]v"8Dp9p~MB s0y?@p%!"EV"XE`&Mv"8Dp9}bGApΩ#"(3LL&e&2Iayje]e"/Ke~YJgwyV}ݒןNo~i||.PR=A]RN@ɲe#N,;Yd9r,XΛy3b9ofzy3ddddddddYȲ3RFoܨZ@TW..Tw]@T A,XΛy33ԫXΛy3b9of,,,,,,, Y,dYȲe%J,Y6dɲe'A,XΛy33ԫXΛy33ԛXΛ& $$$9&{|[,,ju\|R<&߿R[ϯ\m#/ONs=~=GB]RP'Myꠚ,+Y6ldȲe'N,YbZ,cU,cP~,j܏BMAAAIII, Y,dYɲe%F,Yvdɲ AC,cP~,~~,j܏ޯ7܏BMAAAIIII, YdYɲe#F,Yvdr !Xr? XbXzX,dddIsO'i4u呌T,_un݇o?y}rϯ>mx~<A$/w!hF|BZMj3fTvS:Lu0AsG9+:QnaaaiiiTS-ZMj5fTvSM0aT\rRAWRAIuN%Hu)70004444bTVSZMj3fTvS:Lu 98TrRCIu%Hu)70U-͖fKiRli$uY&Q=]/ja)b~.>~_ϯ.!i鏕 QxFyX^-?ްQ^,7SmLj7nTS:I9'dJ|F&:)F9jjjjjjjj1bek;y]-Om<,fyTS|&:I9hJ|&ZLj1jTVSmLj7nTS:Hu>brRٔ|%MIu>hrRڤTTTTTTTNGw|Ö Ki<>vzHF׿/'{_?돟^ίd36ǯeɵ\h}YMǛQJFTBu~䝼XW}XnTRoC)'6rRoC)'6TTPM5L5L5L5L5M5M5Mj1bTVSLj3nTS:Lu|J9η:߆RNm(:߆Rnaaaiii"#iJwH~~zhTտ^IO_V K(/w"oДrSmLj7nTS:HuT1WR('yhrR(7000444bTT]eߟn;m<-oTS:HuT1WR('yhLT1M5L5L5L5M5M5M5Mj1bTVSmLj3nTS:HuT1IuT17R(70000444o(ϏUpia)bWcۏo}b7ČyO}\Z6FDn<-oHW-Mj3fTvS:Lu yȌrR$_Iu2T!37R(70004444bTVSZMj3fTvS:Lu XHuT>WR('չrR$S S S SMSMSMS-ZLj5jT6SmLj7nTS:wQNsw+}G9}jj͖fKiy#Nw}1zĕ\/ÏN?~ jO4C̗d۱uYjyZ(5<,oM(/0aTTTTTTTTTTTTTTTTTTS-ZMj5jT6SM0aTBj,+JjlFjjjjjjj1bTVSZMj3fTvS:Lu \H5RͅTs%\I5WR͕Ts#H57S S S SMSMSMS[]X9Q1J/J]/U7?MxZwl;aw;j9TA;Iu؝䤺?NrS S S SMSMSMS-ZLj1jT6SmLj7nTS?NrRvJ$'awo?NrS S S SMSMSMSMS-ZLj5jT6SmLj7nTRv'9TIN Hu؝:CQV7q㳌>ZXXj^?8r͇UrWwqݲv:QNs:IGS-ZLj5jT6SmMj7aTR{('չOT?IuT?M5L5L5L5M5M5Mu=*Xm=>eXXjmas/Vlr7$_Ws߁rRw|%|Iu>߁rRwTTTTTTTS-ZLj5jT6SMj7aT;PN:@9;H|ZLj1jT6SmLj7nTS:@9;PN|;Pnaaaaii6[dw<~G*>}o~ݟw~޿/_^#}y?.}^׵Rj7A~6by<+JjFjjjjjjjj1bTVSLj3fTvS:Luj. Bj+Jjn7AF߮oKNJ[-L_3m?˛~Ӈ7o=[>s?/_4_um\{c?/(_%/wyrS:Lu 䤺|%䤺Tjjjjjjj1bTVSZMj3fTvS:Lu 䤺|%䤺|#:y9ius??ϧcssxgr =w3u1HS>V&PW+Ω :&ꜚHZLj~9ay|P6ˋZ0aTΩ :&:&ꜚPNsjBS-ZLj5jT6SmMj7nTRSIuNM$_IuNM('95|#95TTTTTTT;L#I_z<5d}jr8lOq15iO?ڭubyX^-ϣ;od)OIuTQxM5L5L5L5M5M5Mj12UcY_nY^,QrS:Lu y*rRb$_IuT7Rb(70004444bTVSZMj3fTvS:Lu y*rRb('y*rRb$HuTTTTTTT\m2.}9FY\c5>hc<+urf)^;O]|XFnSZ>(Hu>rS S S SMSMSMSMS-ZLj5jT6SmLj7nTRTa)'|XWRχTa)'|XTTTTTTTS-ZMj5jT6SM0aTRN:K9RNjjjjjj~gV 쳊XWZ^*E׳{0zދ͸؃Okk~4yA,/wԄQ.ꜚPNsjB9ΩaaaiiiiTTy]-Om<,fyTS:&ꜚPNsjB9ΩΩ ZLj1jTVSmLj7nTS:HuNM('95|%95TԄrRSM5L5L5L5M5M5Mucc8bw^+\LM{OLM_<^|/PФ>|b ~<x> NqH sq?@p: "E}>ڭ|/yZ(KW>~ɋ:Lu 9ՠTTrRS IuN5$HuN5(70000444bTVSZMj3fTvS:Lu0AsA9Ω+Ω:jPnaaaiii,m!y>(vWV/[L߽yd^x qlW3W72ꓟ Дw_)O可Д!wrRHwrRPNM5L5L5L5M5M5Mj1bTVSLj3nTvS:LuwrRHwrRHwrS S S SMSMSMSMS-ZLj5jT6SmLj7nTRPNIu;B9{G$Hu;B(e{Jk||ǟiR/s/syc˲yZul;/Mj9'PN 7o:pCS-Z7XWmX)iS:Lu| :H|%IuTn(7000444bTSZMj3fTvSMu0A 7|+'PN 7o:pCO˺lbOXz~1`/aCPsZw:6; 57Q~Ps#˫C㆚97ԼzPs#'㆚97M5L5L5L5M5M5Mj1bTVSLj3nTvS:LuqC͍Tj^WR=nqCF 57rS S S SMSMSMSMS-ZLj5jT6SmLj7nTR=nqC͍TjnzPrqC͍TTTTTTTTjRjNJt߾ͻOa|Oŭgp˅§<,yS>E$OayT6SmMj7aTR>IuN$_IuN('9T紏rS S S SMSMSMS-ZLj1jT6SmLj7nTS:}IQNs'FsGS-ZLj5jT6SmMj7aTi:}QNs'FsGl)m6[J-i_ye]im˲XXr͝<7~ i'ykrb{,yj$Dȋɉɉ:Hu[Hu[Hu[Hu[Iu[Iu[IuHuHuHuL5L5L5L5M5M5Mj1bTVSLj3nTvS:Lu&QNs$JsD9aaZLj1jT6SmLj7nTS:I&QNsD9aa:wecM&/^˺eXWz1Z|xCz kxbXw5X)iy|,rRIu{$_Iu{('9T縇rS S S SMSMSMS-ZLu^rj#y,/wjyZ(%M0aT縇rRWRIu{$Hu{(70004444bTVSZMj3fTvS:Lu 9T縇rRIu{$Hu{(70000444\Z[r|>j1{uoӡWoC;Gȟ?H|#yn)/oNf$/w%F<$yXN%TTTTTTSrF>($/w%F<$yXnTS[TsK[TsKo[TTTTTTTTS-ZMj5fT6SM0aTsK~nIrR-IN%7R-InaaaaiiǷR-%c,yYJ ~1{a7_П>~ן^i3mw-]|kOS>FlNNsZby|%OsCa9n+nnnS-:7TXu;P-yZ(%˫ZbS:H5RTc!XH5VRTc%H56RTTTTTTTTS-ZMj5jT6SM0aTBj.+JjnFjjjjjj꜑|re>$nb]lpQ_׿>??_@㓍SnsYjubyX^-ϭ;/\:~PNsZLj1bTVSmLj7nTS:HunTWR[?('չCTM5L5L5L5M5M5M5Mj1bTVSmLj3nTS:HunTIunT7R[?(700004449ioʼ|a ye[XWzw\OA}|"7SӇ_ 2O<֬N44iy|OAW+n+n+nnnS-Zy],˫'ȋ'rS:Lu XH5RTc%XI5VRTc#H56S S S SMSMSMS-ZLj1jT6SmLj7nTS wXJNj߰ 9F~000444`,c*}hҷGXVz7z\L>~43iO&%Ӈ"d}ZGպ$-o?I<,ʋTIuKTM5L5L5L5M5M5Mj12UfުuPݥn+Iu/Tdr !s#b9@܄"X-(Pob97HMAAAIIII, YdYɲe#F,Yvdr !sb9wH-sb9w@_"5YYYYY&Y&Y&Y7u2|'$sǶ^+]HJ#~y|q<(-.VfsӸi\Z>(%/wM*IETM*IETM*jjjjjjjj1bsx,˺q'%OsӸay|P>7K^,7aTΛT('y :oRTM*o:oRTTTTTTTTS-ZMj5jT6SM0aTΛT('y+ΛT('y :oRTTTTTTTk[)k#,q5~)G=ey~y=C^.&K9j8O~}]<{QZ/WžJ9_e<,fySVMj7nTS:HuN('9|%9T NTrS S S SMSMSMSMS-ZLLXW^ (Om<,fyTS:rQNs G9΁΁ZLj1jTVSmLj7nTS:Hu('9|%9T@rR9M5L5L5L5M5M5Mu>Aqۖ%F*y}’y2.|6'rx"yY(!yZ(<,j7nTS:GfQNsdF9ΑΑZLj1jTVSmLj7nTS:Hu('92|%92TȌrR#3M5L5L5L5M5M5Mj1bTVSLj3nTvS:LuQNsd&JsdF9ΑΑ:@}_n~Jp}Kel3:;7wЬ«NKEQ>R<,j7nTS:fQNshF9ΡΡZLKe|9wHW.ɋyiS:LuQNsh&JshF9Ρ:fjjjjjjj1bTVSZMj3fTvS:Lu 94TLTЌrRC37RC3M5L5L5L5M5M5MuLj-cYD_,,#/ffoN;uZ~pyX^-;击oLj7nTSzFNǻ_WR=u#']/ﺿjjjjjjjj1b_wFyX^-Mu0A99_IxTwIxyjjjjjjj1bTVSZMj3fTvS:Lu ]7rR=ur9ﺿ2DtҕcpʱӺ()-oAʱyS>Lu c7rR=^9v#'c7rR=^9rʱS-ZLj5jT6SmMj7aTR=^9v#'c/+ʱ9jjjjjjj1bTVSZMj3fTvS:Lu c7rR=^9rʱ9{9Hx؍TTTTTTTWݟ;+^ Kw??sy vZ~w+iip r~ v#˫VyS~ v#7fTvS:Lu V9z v#'VT[nZLa+a+؍<-ojF^,7aTBǭ`7rR=n{9_IFNǭ`7rR=n{9S S S SMSMSMS-ZLj5jT6SmLj7nTSz v#'VT[nz v#'V촰v奇 [V()-oNWn;TR=la+؝T[z v#HNnaaaaiiiTSZMj5fTvSMu0aT[z v#_INN`wrR=ljjjjjjj1bTVSZMj3fTvS:Lu V;9WR=la+؍|#V;~ :`ueMϯ;l;/4qv+؍ۭ`wZ>(v+؝X)v+؝TvSM0aT[z v#_INN`7T[ZL[nnojۭ`wbS:H5R=la+؍|%V;9IFZLj1jTVSmLj7nTS:HNN`7T[z v''V;~LF^`e\tOnn;;Fa+؍<,[nN0aT[nz v#'V9oz v#70000444bTVSZMj3fTvS:Lu0Aǭ`7rR=n{9_IFNǭ`7rR=njjjjjjj1bTVSZMj3fTvS:Lu V9z v#'VT[nz vs vZWb/]GV[N OVVyX^-ȋV6SMj7aTI|%V9oz v#70004444bT[^[niyFW凭`7bS:H5R=nq+Jǭ`7rR=nq+yjjjjjjj1bTVSZMj3fTvS:Lu V9z v#'V9M5L5L5L5M5M5M F^ǭ`uY?//ԚV endstream endobj 3474 0 obj [ 3473 0 R 3475 0 R 3477 0 R 3478 0 R 3480 0 R 3481 0 R 3483 0 R 3484 0 R 3486 0 R 3487 0 R 3489 0 R 3490 0 R 3492 0 R 3493 0 R 3495 0 R 3496 0 R 3498 0 R 3499 0 R 3501 0 R 3502 0 R 3504 0 R 3505 0 R 3507 0 R 3508 0 R 3510 0 R 3511 0 R 3513 0 R 3514 0 R 3516 0 R 3517 0 R 3519 0 R 3520 0 R 3522 0 R 3523 0 R 3525 0 R 3526 0 R 3528 0 R 3529 0 R 3531 0 R 3532 0 R 3534 0 R 3535 0 R 3537 0 R 3538 0 R 3540 0 R 3541 0 R 3543 0 R 3544 0 R 3546 0 R 3547 0 R 3549 0 R 3550 0 R 3552 0 R 3553 0 R 3555 0 R 3556 0 R 3558 0 R 3559 0 R 3561 0 R 3562 0 R 3564 0 R 3565 0 R 3567 0 R 3568 0 R 3570 0 R 3571 0 R 3573 0 R 3574 0 R 3576 0 R 3577 0 R 3579 0 R 3580 0 R 3582 0 R 3583 0 R 3585 0 R 3586 0 R 3588 0 R 3589 0 R 3591 0 R 3592 0 R 3594 0 R 3595 0 R 3597 0 R 3598 0 R 3600 0 R 3601 0 R 3603 0 R 3604 0 R 3606 0 R 3607 0 R 3609 0 R 3610 0 R 3612 0 R 3613 0 R 3615 0 R 3616 0 R 3618 0 R 3619 0 R 3621 0 R 3622 0 R 3624 0 R 3625 0 R 3627 0 R 3628 0 R 3630 0 R 3631 0 R 3633 0 R 3634 0 R ] endobj 3471 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 3474 0 R /Contents 3635 0 R >> endobj 3636 0 obj 16276 endobj 3638 0 obj << /Length 3639 0 R /Filter /FlateDecode >> stream xTKo0 Weq:`vhBIƃa~8;eѤȏI=a@9{c8W0Ix kk$K܄ ~$.5y~A(:Nq)[H>>(}&S|r 9\C继?P4ʴoɗ‛`?pt9D2?ERI-{m(5;b׋<8_%`d_W{#S9VJC/zBuهߚXE 9LP0 6,Fr+t_P@azl++ m][ךܸ%9FfGgYjw MKsg%*:yt:[k "i!jkT> endobj 3639 0 obj 536 endobj 3641 0 obj << /Length 3642 0 R /Filter /FlateDecode >> stream xTKo0 W%a` vhAIփ㸖~$Ϋ)s!'R~!~Xy|W+*2X`gP]#Cl-\&4 t=xJ&#aWgD>× 8b?"n) \ANPf:*\EPn }\h\m$&v\оLh$v'ɇCaM$3IEl/UU/@h~0ɋpS;id 5xǚpAš]]\CNA *dcѐKLȧ)|&90\ەDJHE]ife*rLÏ۪S~ eBVQkrkD[\HX|(];F;P+k =qu}?CuB6Ò9kK70MeSO>,ڲު%bg,ۍKb˲~mBnbC rs_]Ÿfз=~] :f endstream endobj 3640 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3641 0 R >> endobj 3642 0 obj 537 endobj 3644 0 obj << /Length 3645 0 R /Filter /FlateDecode >> stream xTK0W̍Ư,j#8lWuiPfĿgmҗ8p`k8RDWT$^N ^A$< +N* y~A&8]D&`a7g|ȇ8lyh O R|Ƿn5dM^2o7 _Ⱦو?pt5D2avcƖJm(5;~ bϋ<؁M/ t p㮝 2`HCNjPiqeOn63ۼuZDgRP .X S.T˦i_]Ǣ*- B ӻyj[Ow@Wu/W~j0ZZER˅1ŷܺ=*breN7 :MuqJjW|]ò_+o|V7r,Ɯ7E^) cg,/;kˢq~n} 34yQиvTtp&/w endstream endobj 3643 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3644 0 R >> endobj 3645 0 obj 521 endobj 3647 0 obj << /Length 3648 0 R /Filter /FlateDecode >> stream xSn0+’CJM !ڑcA/)J'W6 ޼Y"!¢z'JrG_:GD?ׁd#^Y!F![JaHݓ H GǛؼtY+ֶn>A3i IC;/I@,~d4[sC뾇 fγ:N؟遌to0+W{R"59z jzbNTD 28n0&!g/`juk4, ,ۺ::18ﺚ$/Mf JJ%бK 9+<{tǜLHB)ށzg)]:97ԦlQF0+[gwɄ0#BoYEc4JD 4ZPmW@^|zbh '_b endstream endobj 3646 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3647 0 R >> endobj 3648 0 obj 534 endobj 3650 0 obj << /Length 3651 0 R /Filter /FlateDecode >> stream xTKo W1 Izڭ[=$QElj x`ڧzzWba~7~^{B4 B Ɵ t9a #a=<9sx~>|^e~P+(PL(5<\K@ijnkE{s-&?`j`ĩ!MeFQ?iq9MM~ b֓8QrO#bN];=≁b ?NPc-oXhFGPDI1q圏!tR22r||v<,v-uVF=fZdnYpn+;%c-IR'Co|cf05Ir cBd9p] J/ŸJ5vPv=ne2r6r:z kf1i*a)()nG/ߞq'RV>9e{1H[? [ٴR PPq:r!sk[x+m6׫ni#V[U,Za'4w_'': endstream endobj 3649 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3650 0 R >> endobj 3651 0 obj 609 endobj 3653 0 obj << /Length 3654 0 R /Filter /FlateDecode >> stream xT0+cv+-jՊ&NI}m c <73p`};8((.)FގF[&g7R n9y@V#~a7g|H8t{*ה#sO"!> endobj 3654 0 obj 536 endobj 3656 0 obj << /Length 3657 0 R /Filter /FlateDecode >> stream xTn0+PM!٢m" 9g83GwĊü UP P[JxK(WPh́K@O wOa|Nt/SqDBBW!~cҬjSfm!|M IqI#C(`$vO(5>3CQtO8wM>>sd$Gdt޹jgtw|pJb\CNx5F¡kfج-.ySۮ)*mLԞ+E HN82CqQ<ԁ]r>m ᄋp F`'5GQBנnZSz J'JE> endobj 3657 0 obj 640 endobj 3659 0 obj << /Length 3660 0 R /Filter /FlateDecode >> stream xTKo0 Weq:lvhIƫ-cؿe9zJRH?~_h#`QA `bJh#;\!ܬ'K`t}]pj"n( DAB0polfHj ֺ~'_ 7p52^q?M{'Hg4;`CKbpXC!a,,3rU} g4 Fr׎;>/h48r i깽i]iUk]aQ (Aq迉 d_XS㫈9 > З[WOXkV.sy] fB8oAUoڼ݆0$]j%t.$U ~dEgw}Εq8#A̭Ϫpk (s ϶l1y9[tLlEo2 AVۼ-Z%.2 %P0򿠓 endstream endobj 3658 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3659 0 R >> endobj 3660 0 obj 541 endobj 3662 0 obj << /Length 3663 0 R /Filter /FlateDecode >> stream xTMs0W= $Y(3B=ph:%S,'`gFʮv߾+ 7~QZ"/%)NK*b`PSp p& >t.a+a;2{8>g.#ooc D\S.>FBG@VoLkڼe5OC6qq?EOdSh$ -ۻʡ ''y 6f19d0NU;h@09QFC mhnnmWTOj]i#Gq诉 d]=S2懙B\|`E {[ֵ]eja(Bu{aۓ$ͧnֶP}D -V։HC9ΡsQWIF!ӗѹT4I Gtcne=> K_nta˙ڢ#:`7vkߞsjP)8c߷Ek,|-%z{S CG7vFqϡ endstream endobj 3661 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3662 0 R >> endobj 3663 0 obj 547 endobj 3665 0 obj << /Length 3666 0 R /Filter /FlateDecode >> stream xUM0WqP|loUzCe0)qBlT;7aD͌g7P|qKrU19QoE#ߏt6| :3x{G( y.5wz,xz-0NI$${8d=nUU&ZM)m4>C+p Ou7&]O#AO=G#]k;W_=|:ȃhc3r@FIr2cpg.j)?Gc48aOi\=?+vQz>ڶu91r<+'2|pHHQ)^$p[5  }a8#:x*3yQ9yEf^ $4x>AC"DF1 KL$Jפ K+[\l兖Ρ^Hǂ4`WjHТPMd$- &|k<:hsXoHym3> endobj 3666 0 obj 626 endobj 3668 0 obj << /Length 3669 0 R /Filter /FlateDecode >> stream xRn0ol@VM u:$ EMH) ޝΚx"c@yHF!/Qڬ#~> endobj 3669 0 obj 363 endobj 3671 0 obj << /Length 3672 0 R /Filter /FlateDecode >> stream xTM0WqPwlz(J ]wH=Ìg޼q^_R-aQ' ' ".c(c]=Cv-a,C)$+>mElPH0 MGy6Dq.|H)>'ښS#j vL^*^iIA$ QP!cxnL8FTq 2}8(lSAݸ®;S%g $H_EALDfm9OB;7Vdbk|X qX$/XJqQQu*2.D: ?zኝWO"@;MQC74LwyHfcumA]w7 endstream endobj 3670 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3671 0 R >> endobj 3672 0 obj 538 endobj 3674 0 obj << /Length 3675 0 R /Filter /FlateDecode >> stream xVn0+JR6zhI`eIE_ߥh%Y$.P 5(a0[:o> /v!Pe,a0mN8!yz 9]~3B>:v@ }hOK̇x OW^EaT*s浾~OHG`՘-gfߏxb׿m=ۇ= M>m iYd/86ɧGd3B5'g{FO&agBJMݝ̵ҭxv+'-~ >s`ٟ8?tiuyf,:Cx\֠7rT+]l R8Y$)aDvFR B,$Dq,3)\0=X/va+BG4 =E:?g*yB^/ y~  z8_@j9E*oV0OèBU--xYp"d?cU}pGj-0 [eiJmmͶE'BQ*-A 9(=J|8ux'i5_-1asr^/u0o|`E L>YVq[zE j^wjS!ČށÌTÌ}.̈X7g(Do ># ^[/Sh̎6GEě*^pi. 37:IaN5ǣNb endstream endobj 3673 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3674 0 R >> endobj 3675 0 obj 815 endobj 3677 0 obj << /Length 3678 0 R /Filter /FlateDecode >> stream xVM0WqWj]{Z*eUe|mn}8]¥dk7o9c@L& &$>}Hք6d ߽̣{xP=Owϼi߮ЫSxއ|}lR)%DDpe?)t^Ċ\=dIVZEWPVSoM^jgE{ k|W5) .7> endobj 3678 0 obj 657 endobj 3680 0 obj << /Length 3681 0 R /Filter /FlateDecode >> stream xU0sܕm{Ta(Q{خ"6j,w!BHOi7fjs ׯ&>0 젶'5:o,&46I \"о qS"⻚pII)ukAY$.Hf$W[ja[8̥ၮ먭<^0;cxa*)d ]tzK}߄CXgIhr@>,hD9.(7\kݫ#723O?%0*P\*6Z /{HgB X|Q^'8"RwW0zPN"k1~yۅYIy_ǥ}&۰%GDirys{rue@ ÝYV-ǻ \?->6I*VL, S[Q D)ДF> endobj 3681 0 obj 656 endobj 3683 0 obj << /Length 3684 0 R /Filter /FlateDecode >> stream xUo0~_qzqI{B)8U;@lOTwwg0Tf}oc 9xob`!a`eOy~f 2#xzA(|4]< ЛSX_(F!;XBB*x \?>=棪`T4Llctc^ |O{ܸ-/I# iY[@lhqֵ7qBqEA}!)6Q&#fXFZ#7G%T mU?BV HQxaTHi@Qک(l-4^ endstream endobj 3682 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3683 0 R >> endobj 3684 0 obj 637 endobj 3686 0 obj << /Length 3687 0 R /Filter /FlateDecode >> stream xVK6W1 lTz =X`![MD&w(eI 9p'߷vG GV4#r95h'B;!94xv]c܏ y]M1P%n@4Mi|(lV?Kxࡖ*3df?3pGpM)9_6u?S9׌zvۨʶ&bE>/  2Fq$r#nr\lWfmVH%n7~ ƸBP䖽{' fr8 K=ޅ @FЛFi<5 JD 6^- yVg &`(2Ë3M𧁛IF4F&𭟿x b7Jpr, L-:S5dy \ɊR'S_ܾP±nfTbXlcE~* ū#ߢ[bۭwY:iwr &N9>/8S1[TRsSˇ$3@h*;^nr\lfȯt(WrXqzY`K|`| R;ū1;K3|")4[İhhV=ιHcFc\bXg6hlwE!Y5?O{‰:ITIIVh rIW!5`L݋[VJlF3!~]풏<ÒBƁ.tV-&(3]3:dJ'rhr fG4^QpՐAWB#> endobj 3687 0 obj 916 endobj 3689 0 obj << /Length 3690 0 R /Filter /FlateDecode >> stream xV]o0}ϯf/qژJl{*d$MXwJ:@>{lb9@}ρ.ǵkzVAw-|Vfb=>` [zǙaC`R䄶K]9u!Eaǫ{Yo&*0R,%DQɺ~WHsЬUKNMݏ</b%״4-5]Ԥ5ٲ^ްik:A/uX3/Bg_kQx~Gb?dk]C/b>n?-#Rz|Xļ87ky|fo;LEUTkOގ' ە AGoSS~P7s qQ[7Z3"}D"Za-Y,9޿/ {j endstream endobj 3688 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3689 0 R >> endobj 3690 0 obj 828 endobj 3692 0 obj << /Length 3693 0 R /Filter /FlateDecode >> stream xVˎ6+ |eN. hi`!,$3^R%A(0 CR ?G3HηBȀ}\5jK $l~,MTkي e\F9!.*Þb7fD*3N  -([МCǤDU> 3/iqP:QV(X^KU5@Ebύ(u5)l̔q# G<ޭWRĕi s,DPm-""R @^${PQSMU֪dlgt^yr "nzTy2J${w, ׎4O yI^^2fR OpP1.&Ga>nݫ ]$j4i?YAn(k!}fk{lS1 4t{3fBG㩉Vh'LQ4^ N&:uFk c2Tv%D&<wwt* SgOÏN_}:ö[ we #s;5}2 ljKnDֲa{QOb{F_KT(;@21 `4p %pYlKRVਪj[ !ȃж;}t2[ endstream endobj 3691 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3692 0 R >> endobj 3693 0 obj 931 endobj 3695 0 obj << /Length 3696 0 R /Filter /FlateDecode >> stream xV]o0}ϯok-G>8mJh{h+C-BLS])M:@es Ofcyj( x,Pe>S:#p W73 9O~Cޜ4u>^@ LD4r=q<\ba0]ō;UZ&ZR4TBW0|)9jLBцO՚5\f+o،6;qҖA86ɛ#4@Jxcz4z80xk£!.Ƅ)\\]MݕR ڽ a<2 xa[s7"g3vn'R ,PgQ&9d/` OWQE(((ZK6 &88` *2FMw=p6$߶-A>5B7<+T `?r![N3qwNMi_vr:(&8sg%CuPT'bq]rV4OzL`'KPnyf*t LFCHYDRb:I+<ΤwT3f5x}dI^Dkh \hQ`@VKUgvg]m7Yr./MiIשg݇'ΉKbKYTi)7S {lScR*LsK&R|e0}hn} \b^QxO.XHl$Hxpu:N endstream endobj 3694 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3695 0 R >> endobj 3696 0 obj 796 endobj 3698 0 obj << /Length 3699 0 R /Filter /FlateDecode >> stream xVMo@+B;*5zjmdbo,ű; 6`ږXf͛7@~ 30ɭćC~gSr8}̩ނVxibVaa~ ovȧZߖ֗˴k8DKc#Rƒ8,*ؖÒW?3qCF9_hs?=rD50p8)Y6zEA*MC ] pz\k£!cB{T*ET6r8Km"MM\;"49<>,` ^TR払%W8pnlgrauQR } =;8hԀ.(#vk{6I~l[^d;^h4mfW,Gx*ZT3 iƶ5 *U F< 7,MuI{+Tni{+.]κ]v{|xV,"g8njB&D E aVOԞ%zOg0FbY(50V {m|ԟt}8)cIӗ;M5͗3y VV$$BA=;2w)<٫7ü>O<4ef]gh ,$b#{}QӍ0+yQ]y׭3뙦d endstream endobj 3697 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3698 0 R >> endobj 3699 0 obj 779 endobj 3701 0 obj << /Length 3702 0 R /Filter /FlateDecode >> stream xTM0+0cR+EAaZ`v&5ژMr&l{3k@pAa ^N](Fn֝m.ݼ 0m2l˵U 9?[|]D@0"BBC!ç{ jɞ%YU˦{z&rj}?KD!>f?E[Bc6]j5[E|*·`MFLصQ#Q/6(0ƬTwweQBW(S`T# Q0&6EW9#"(y_`UlX'+iF]sibu!q;C/z+uU*. B$x"DLR>L(C!62_W#3;Z8 U^hK(4d@Xl7= -re+yB]@bҎ֠@.R^D[PW̥,%[{wT `e35~k)<幑uh *a_Kumdx; endstream endobj 3700 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3701 0 R >> endobj 3702 0 obj 593 endobj 3704 0 obj << /Length 3705 0 R /Filter /FlateDecode >> stream xTn0 +x(J,v(]Qxul7P'Ynl'qwl"H=>=3m ;h$8%N FZ~Y{/ Ou[CΏe2q@6Cኔ.Ɇ ݻ[׾'XU[,o=+MIAAܲ;CTZNӼ$(FF3qގPFD*&k> endobj 3705 0 obj 460 endobj 3707 0 obj << /Length 3708 0 R /Filter /FlateDecode >> stream xT0+c+5zX) j=dE%j6& !1"y47ofW[FkDػz;x7Y~0Am0fou Y]ݜ388=GTZ ӽi/-x[5m>?B|/  nݝq-GWE 22Yvobxv*.3]LFܸjWt'=QeoPݪS3D/'swW Mˊy 'j"#H Ƹ=lw 5eD?j K_m`ghmV ']>*mn ʧܼed'kI1)K ,3s"׬\*FRv> endobj 3708 0 obj 516 endobj 3710 0 obj << /Length 3711 0 R /Filter /FlateDecode >> stream xTM0W̱=6cR+EAal0[T,]w$![ HB80|?v{8R@WT kw qp ?IN|#!q!a7gLD* J%!UBYkJaG@y+?J3mYw5'?C_.#8ގPzz?rFËBvȖG`j­1&{AeU<ÏmNHyʕ:{8l8\EJC(GˬS؁^&|e)Ds8iK&~ endstream endobj 3709 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3710 0 R >> endobj 3711 0 obj 499 endobj 3713 0 obj << /Length 3714 0 R /Filter /FlateDecode >> stream xTK0W̱= XJQP{خ> endobj 3714 0 obj 576 endobj 3716 0 obj << /Length 3717 0 R /Filter /FlateDecode >> stream xUKo0+X[H]4+6ʿH9lY$[3of8 (E*Qm $M%܃{rsj.nS:~8w茁"աp=xCO!um+mr* ]w! +ppVwU ,װ&L5lú]?3q n`՘s|%~\z~b+7qDE$UU/χ4@FIp6>.6i>)x㇚DM$jWѳ8S7 tӸO> endobj 3717 0 obj 616 endobj 3719 0 obj << /Length 3720 0 R /Filter /FlateDecode >> stream xVn0+R; zhi`e+"#ߥdK^F/c@R;fX@N_65N1 | w XI]Hv!OuK.dd nF@p4H?]^~C>2,\EV`: Ð:6 *y pXd;+VH ~WlqU =r_߬~:r&F+Ba[ik]HIA*.M5"fp  =6Pbx⻚Q!!> *|Xq^iʊZHKjR&BP'hO F9<,MTtyKD LX=8T|NB y#C =ԠsMPǮbɁ78$|?8 hOrpōyay͓ @j!TPXx X\J8 `4/(zEW3P!r փD]"Q^::|c "dG'l7:71ز힯9HJ#(9t6-%l96dsg"^cH 6^)͂ͯW1U?S7SӘ?YC>?­~7p8y] ;jnEeZۘlLCy\r|g8)NH;9pWp]{ MOaLq#鳱+w /^ endstream endobj 3718 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3719 0 R >> endobj 3720 0 obj 803 endobj 3722 0 obj << /Length 3723 0 R /Filter /FlateDecode >> stream xŔo0+q=qʤ*!UUCtU9BHo |B80~6Үqd.E1pEEhDg8p ?IA|#7L;|îg&_Seg) UBcJaG@O~+war ek il]> endobj 3723 0 obj 536 endobj 3725 0 obj << /Length 3726 0 R /Filter /FlateDecode >> stream xTKo0 WWÖ;bl(\GIUi?Jb3ۀ(Rɏ1>%9d19``pJ>#𽄋= zG9PlvAeq<$7 >>2JW&NI )bGiwX-4Y iU:/DF 9LP01> endobj 3726 0 obj 590 endobj 3728 0 obj << /Length 3729 0 R /Filter /FlateDecode >> stream xU=o0+nL$C@AfH($:#GіdIV:RG{C~u(^%J `1ƒ). >mq <8C)2t׀9!O`|[8_nY">$a>Įa(V轪^FZok'Xt/NyqwM V)9_6u?9|rzYBbQ~(aحc׳:H'U6ɧ)q=v>9kBVN|_^ИBmj7S[<}ZTVD^|2B1Y'`t3nB11^~3 noaKQj833j+**:<#ŨRФ$nKe}&)H0(NtN3e'gNH;f~1"l⫍xֲgF)~#J 5H^o\dR1N r+fۨ=\"{p+77ZQНnwEVv|L;)4 k1WTӁ2#IN t/ 3#Ll#ے_ͩ;[ Fh-$FsK d9_'3%=qMAJ=5˜]0|lԵXy)ּ-;M i+|C. !#V!DlSe͋y@*执r#"zw_ endstream endobj 3727 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3728 0 R >> endobj 3729 0 obj 749 endobj 3731 0 obj << /Length 3732 0 R /Filter /FlateDecode >> stream xTMo0W̱=X[HE!́*_Ҩ6]`<73Q s(H<]AT`@@v 6Xv~m9?g%FwPqz)`B)D3quV`g2 g qR5m>>B}'8e nߝq-g$2fx;B}](د z\dܔ|}>RdvH}Á,k[u*BUuiYZg:i׸P`QNgH>q)w:/ p;13ha`5-+]')AwYd5Y1l0tŐ>_QViZV2R*d-⥌cAsHW}׼adXB2EڧhpPO [&"u1lIn-Q9Q0utMɋ endstream endobj 3730 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3731 0 R >> endobj 3732 0 obj 494 endobj 3734 0 obj << /Length 3735 0 R /Filter /FlateDecode >> stream xUMo0+w{Xi*Uݪ"`oSp$@譛Db͛73v^-7z| |׹\C 9t ub𣅏v;x .&@p8\^Y'f~:?mm}sQXCX@aCսUuTBOi}_Z5>i~:|d&zmև,e]gHkzEtAOUɧ_%dxsq>jF^ O&3ڝRq{[5IUIjQ$)N}+r,N'ٔ2Lf)A0Bm%i?cęC *EihJfZ`=3ۈBpF|A zq8cA~E^:%fO/,EZWZB]lsp;ukSO2UlGN$,RUMa_ݛQ]Zfe2!Ryp%Ld4P]85`Ҡw,T"@W5@%|t~dQl1l2TFjȣ,.=I1):L47&규wGQT󍨖&Ce9q&@$Fo> endobj 3735 0 obj 716 endobj 3737 0 obj << /Length 3738 0 R /Filter /FlateDecode >> stream xTMo0W̱=q]VC%D{h* q(_bh‘$gff~`󽳋2x}0 <,Cߠ 0 Mp v>O/WFcXߓ,!Y -"1K))1*BR̓vuP6]+HFN>C;cr;rj~~9>x8 s>qmد"t|:4T$W->aD 'p}}Àb$?d cjUW+Vuvm)p'<N% cbn2\F%4D8Kx- +rUuՍj.ՙeJcCu5"->ѹ>@kɑh215\?iUǢת f{R}Ti9= BPE"B.6o&P4*8> endobj 3738 0 obj 590 endobj 3740 0 obj << /Length 3741 0 R /Filter /FlateDecode >> stream xTKo0 Wz ء@c;tErk,\Y?rDZ[D#)z (~%T6;19s0I;lvW.n/+< ?G @p0] ^yЛSxׅBJ""TJq \xus0_X[ Tɳ8)kԟ!} ?@ܲ=Sc[g_Ho&%·mCۮLǭ:I8OGhl2LvH}#Sk­!:Ttʬ]$3%9Ty_9#HN82<|piNNF)}v~6E=[S*irS+V=P<T{J SyU#EP0R*Mf\I9Fpi~%۽>2#%5! "|B #`2h^t;8ayaf)Gb[_+1T:Ia\z q浏 endstream endobj 3739 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3740 0 R >> endobj 3741 0 obj 564 endobj 3743 0 obj << /Length 3744 0 R /Filter /FlateDecode >> stream xVێ6}Wc4,EɺEE"b! YJBһqCIPخE̙3[Sy}|Q? A x5&OOz~>}(^<:7ׂ[Oip¾R'$da,,u 5|/J?8#AFs:쑣nT ZNIsj-/%ves6%]٭ ՙ4%*W&%\&ƸtLy:L Œ4]'^ܱ!vRem-@Ns'Lۤ _z@wm,sk-m0 `BS3=Ǫ76Hnw}YגPI S/\,i^g :=⦵9Cc+/mCZQ3W(L nv^ endstream endobj 3742 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3743 0 R >> endobj 3744 0 obj 921 endobj 3746 0 obj << /Length 3747 0 R /Filter /FlateDecode >> stream xVMS0Ẁ+ˎ?8:큁`a+DmI&ÿ*2c'FCfZӾ])<{;CQ+P5!|: Z{3蛅ۄzGws=2 _y=~B>u}>A@`$ R?Qe4if?|:f-Õ=rFc\ .}gaݕ^OlwC:z]*";3]>n< ,vCGbӝΈ`|jBZm>!P'x9!$lZ)OO\V0Kt4Q iދ.PwU3$xQ[J! J֚\|[>U/5تW\iߠ)ϒ4b:ЄS 4fe÷<&ďS|lB }X\\Ӕq6k^ii pQ`Zzx3@F s1uS=ëmKËip6,6y` =RK XH%gxcMΆAM4aśXAJq\q̻HJQLS0 f: 3[B/mHRws%Vf+10hgu#8b?O%LWk7ŗn߮#a5fB\`cl= [[ˊֱsqxMoziicoTZO܀^6(_zP endstream endobj 3745 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3746 0 R >> endobj 3747 0 obj 796 endobj 3749 0 obj << /Length 3750 0 R /Filter /FlateDecode >> stream xVn0+R$0.)CFzH@D-*"4Mzd(PzfyD@^RAXOAJ%'ưo0wtm݄|g@~x\i imQr!吅 0]ѹ4/}j.abTK捖Fky)E?wUcGN񗆫wbN+;!s>8n4CW3]=z-VɛGj 2& 6À0[ޚSB/i՝<9KYZ,*sJ_6=p҈aF .vas"bitż3U}H]|u=̶f.JĶ'u'jtP"̈́Hh@c=c( 9™tϗrCCaA@V ]G}W#5T5J&Pڌ0O+~,p8v#M+5j6r1/Gbڼ֥lbU,AϲwvlѶ.8u"tqnr?_*K8dgn ]^JFa^HYsE8ORm՘jc/IDSLRGݳm*uaC3wQ坐==zLj)@f1F7=mlIҫL(,Yic-T3 w.߻߷ endstream endobj 3748 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3749 0 R >> endobj 3750 0 obj 782 endobj 3752 0 obj << /Length 3753 0 R /Filter /FlateDecode >> stream xTn0+s,!h`=$AJ-TQIRmY՞R$g3G" zO *|8l6a|p1Wuw;+ O:J )LH)Ld w7}p]V VmݤkI35|>''8eAmwƖ/򻺟, z0mBǍgu 2Tq$J~?" ďO:#lkBZ&$^Ю+]iqE ('YRqofDˇn7hJ0JˤH2ka:WM C."UY>`o>>"y ^[KQ endstream endobj 3751 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3752 0 R >> endobj 3753 0 obj 638 endobj 3755 0 obj << /Length 3756 0 R /Filter /FlateDecode >> stream xTMo0 W˖ceۡ-QaQh{JbH=qdܻ"5v50#\Bc?II|#Ä'u328>%NIAط'T e *n?fmUgK iil|;I.Aܴ i}G; >l*!g ̠'gu 6T1^9h3b.v4H#A0j«1&{AmEC*+evӺ jOG%\2Ƒ՛A6xe1a1?v'>L0/%dylB%dwUp$In.H*ϞjӸfjNt$$ֆp!b#Jj? 14|iܕ.uUܞ#\9wyڕycZ@W uLnB/k>\|'sƢDӕk~uغ˶i׍)Μ endstream endobj 3754 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3755 0 R >> endobj 3756 0 obj 537 endobj 3758 0 obj << /Length 3759 0 R /Filter /FlateDecode >> stream xUn0+s,P!h`#=$Aش%XnRTd6@,GKba ^51uKaLy;u23!d;( ߃G\Ek@Z<=w;)ljX["TJq \?hZ5[兆taF[?o3s`ݸ+I{g;'8W[BpsnBEh8ɇ_G쀌,]\>)?Gc\TRY__kCp$EUm83A)C-%8>oiĆ%8Ép3òuiuiNe vOmUݼ[;O o:}[Y&7P5%"xи)^]ZIL$J+< o)|iL~tj1P{TӬmҬu[-bRE*Y(rSC0NOa6`m_|] D#qO(oZ!jcSa?>Ϲݥf˦; ]cy' _NQjm?-vj^,7\fMX_m_D endstream endobj 3757 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3758 0 R >> endobj 3759 0 obj 648 endobj 3761 0 obj << /Length 3762 0 R /Filter /FlateDecode >> stream xTMs0W= C'88JRKYYn؎˩ęfoI?CHPǰnCw&yC؄{-.")t-x] }u~ wѻetv\[2"TJq \O.{2O(+ gN2Z-,?GAU[CP㏜?%,Ē<-1nTu؍0 zxTˠ}&yUH=Q8#^k;=8%)&ܚbPQJE'hۘ^[ӂ‰ $' JVr4 &V]1g<./PTUei kYΞi(Loe6&w <6Aԓ$IOmP5%J3T3XDR+R _QHrdJ _т6fSi}4U*C> endobj 3762 0 obj 640 endobj 3764 0 obj << /Length 3765 0 R /Filter /FlateDecode >> stream xU]o0}WUZ=c>Lu4Um]UQbS˿5& !uI${9.1gUSk!fDi6 JVgö;\KYoOzzwEGԻ[}s~ j>YOsBBw¼z WE)`jT> +->w@\ 9ScKIH=ֆ0p68n*";:=n=eЮ&yS[OIrQl7Q!-NO' _)A+hUqq!sMpZsp 'a!#($''1"a,1\_M!+ ! j Xr ۼVhQ?z'Y^ZQٴĎbj T8> endobj 3765 0 obj 763 endobj 3767 0 obj << /Length 3768 0 R /Filter /FlateDecode >> stream xUn0+-KQO؇$ Pd:" Iwiʶ,- pArf8K _y/ nVvW'` %*O@hnz}B?\“u}DS-)SsBHI0RT0)JS#U$`Z}~ޏفg ΍-9_B6u?XBz~v#9qvl؎ .t~x۠]M#@30:A!Oo|nMpSJP䣸`%\V<0xqp4[E$L!cIr2,De@ ]J 02'?Wdy%Yjzyjql8[%k]-I ORc:Ic> HHFQw( S|l H4ds֔LX BV1јb%PUp7!젟`,%-氐 Ja=:+P(O=Q=l~BC1!d9B28q Q`˙qĨ be.dzˢ~䲩`f_й*j3V]> endobj 3768 0 obj 734 endobj 3770 0 obj << /Length 3771 0 R /Filter /FlateDecode >> stream xUn0+rHAR ! E!t;4X,! ͛7 0}XqAADQp>mv[/%@С x:?C?QH]XB$J).!!+śSmJ6mv!VF[үtO`?;ոsdS=C(龥 gx⹝ح>z:dо&yUQuF$x嬍 鸟8}Mx5CE)U\룣09iu>_ HN827. .B<9/ J][@>[7Gj.> endobj 3771 0 obj 667 endobj 3773 0 obj << /Length 3774 0 R /Filter /FlateDecode >> stream xTMs0W=ꑁ0pP)GN=8v*=+M1Ji$}zo0qC8d[csQF$!lPS U@Cp{kx0\ ^=~C_&x .!0 "ɥRKH8p{vEQjX6I7VƞS~u$N0]wj\9ch#xa%~ W<*"vz=~<dоc*i(I^9kB:; Ƹ(3w}yY4#F:ڋHL@r™ebr8H 7K8j,t@h!wktx6E!FjlӦi%IGQ{¾@DV$*NxA'1G̸ rܑI'E111|btH tsLLB\iH pz}+-RqT p?MP$ΚTTePXxz HzGg/FU\LàjFƤ͵ `rygHk:`< ymf]3g'[r;ihL$  endstream endobj 3772 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3773 0 R >> endobj 3774 0 obj 640 endobj 3776 0 obj << /Length 3777 0 R /Filter /FlateDecode >> stream xTn0+s,P!a=AZ-TRNп/)ʶ^Vnn.g3Gfエ1!!?aއžligwlv+= _gL[vmߜ{> qvDS."Ĩ=<=R`Vu89hYgy8FlؖSdq?әsm㶩mb֫:EMɯGh7]5r0w5 1kT[>K(CSGy5c^CDҀF6 26epH/> endobj 3777 0 obj 596 endobj 3779 0 obj << /Length 3780 0 R /Filter /FlateDecode >> stream xUK0Wqԯ> endobj 3780 0 obj 649 endobj 3782 0 obj << /Length 3783 0 R /Filter /FlateDecode >> stream xVn0+JQԖc!Hj#=$AJt,DVzJm|f )?{~CQȗ@B!(4%lTvWkBw3&,W{{XA#}wԻn3$l~(H}FYeA4 %ܞ] &e%`jf{:Ʌ]obpؒS%J'uC:Z]E܎.7udigmw%?O;GdjBZ}>!P'x9!$&(G\\s4R<.#Ұi`@opďm ;J> d yUڀ`$pp1/`~Zh:X8:=}eKfGȘ%i4u P\astës#<`(MXɪx/N.[A}@ÕU(xqzlc~\/ !8/Ysq(^P`2(%v^_[rA=ǿMè Uҥ#!EV1Rh×n`(VZ0 *ܢb(B2h9J4a*cƱOjHR}ړ9__U٘B`aHO'%N"z!#o͕h3^q6n^-^Rw(_"eI(/|w+s!1֓N/Vo endstream endobj 3781 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3782 0 R >> endobj 3783 0 obj 774 endobj 3785 0 obj << /Length 3786 0 R /Filter /FlateDecode >> stream xUMs0+/؏tC&f2*1 fﻲ0l[j> endobj 3786 0 obj 655 endobj 3788 0 obj << /Length 3789 0 R /Filter /FlateDecode >> stream xV]o0}ϯ Ap$ bj5Uiv;ݍ빎6M6Ivl{M^!(w߮Rv)N |C<ҞLa;[ G/\AGܻ޻*bsJQ0#eYF#!E?}eQ;%*2XfF?އYpa@Cp׍.[rl#NGjC5\qvl؎7ubFq.'%Δ8kBZc ׫9%g€ދVI!wCîacoz`Oh3 ?$K{!k",eYBg4)ڀ~D(D3q;vdE!m~2֕$l5]Z-si:GS&Y&n"hX r :@n⫝յTA <]]^VM=b\uX:[z;ådGLm|'釘Ƹ 0oݲ1dQu䂛݂Nv+NjL{6=Qiܗ,ޭi!FBo,)Ӿ`]Yzw sm:(uHCtxh3](^)bmɰe !ki-y'wL vB+LN+VT/C*nZWy>{ VPɋ㓖h4뽞l Ma-AHkc5o~/19ĵj9 endstream endobj 3787 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3788 0 R >> endobj 3789 0 obj 838 endobj 3791 0 obj << /Length 3792 0 R /Filter /FlateDecode >> stream xVR0+̀+o]A]0dF XADZ!3zsK /!N)d+] GR4vE}gЭ=:Cs{9l2k3级_'|;/By MS@4?+tFg=qFcuネ.9o6un}v WvUElG5mb_~v{x˷ xٷ+~+;(R;λ9L=ݎ^V&^;t~ endstream endobj 3790 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3791 0 R >> endobj 3792 0 obj 784 endobj 3794 0 obj << /Length 3795 0 R /Filter /FlateDecode >> stream xV]O0}ϯ mc'q7`bXM nH;0w&mxRk{DZͽ߷#Bʹom.dvWg#4pp ?ܡɹ9P<:O]{称t#ݩ.hR"wB;'Fre!:&r}X=ijZƆ.emoH3li;/in"+n} t)l(#sp`<ݜp@cH)mBEf| XFޠЫItKi x0Sb@ (|11N!R@>K@`b}Ά Y S 54R#a& hc.ģ W<8g|F! L( K|g\ e+Cn R7nԌWRj jq"qĔqUF)Qf=,5+;J;EB) LjUjnU@lL*#5(TiT[R |6r5/{ĉ 1'9mL*>WN @vJcqQݙWgKMg$]{]˃=]*x{|9yc'I=Er8:H-9 w},^+WlT a{:O|pOG;٨,#lw?\]٧ l\|:)ŒQN2s [TybV9mj$pf\uuTqnU,ct%p7t endstream endobj 3793 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3794 0 R >> endobj 3795 0 obj 871 endobj 3797 0 obj << /Length 3798 0 R /Filter /FlateDecode >> stream xTM0W̱=WxUKVBDaw)68l׎)Ahoo ߇H`Aodޕ@fl3㮁VXҦ`W Cvsglv endstream endobj 3796 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3797 0 R >> endobj 3798 0 obj 530 endobj 3800 0 obj << /Type /Action /S /GoTo /D [3637 0 R /XYZ 72.0 720.0 null] >> endobj 3801 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 230.1 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3800 0 R /H /I >> endobj 3803 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 709.5 541.928 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3800 0 R /H /I >> endobj 3804 0 obj << /Type /Action /S /GoTo /D [3640 0 R /XYZ 72.0 720.0 null] >> endobj 3805 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 213.16 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3804 0 R /H /I >> endobj 3806 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.045 697.5 542.045 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3804 0 R /H /I >> endobj 3807 0 obj << /Type /Action /S /GoTo /D [3643 0 R /XYZ 72.0 720.0 null] >> endobj 3808 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 230.1 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3807 0 R /H /I >> endobj 3809 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.928 685.5 541.928 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3807 0 R /H /I >> endobj 3810 0 obj << /Type /Action /S /GoTo /D [3646 0 R /XYZ 72.0 720.0 null] >> endobj 3811 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 218.72 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3810 0 R /H /I >> endobj 3812 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.005 673.5 542.005 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3810 0 R /H /I >> endobj 3813 0 obj << /Type /Action /S /GoTo /D [3649 0 R /XYZ 72.0 720.0 null] >> endobj 3814 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 245.1 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3813 0 R /H /I >> endobj 3815 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.823 661.5 541.823 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3813 0 R /H /I >> endobj 3816 0 obj << /Type /Action /S /GoTo /D [3652 0 R /XYZ 72.0 720.0 null] >> endobj 3817 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 246.77 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3816 0 R /H /I >> endobj 3818 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.812 649.5 541.812 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3816 0 R /H /I >> endobj 3819 0 obj << /Type /Action /S /GoTo /D [3655 0 R /XYZ 72.0 720.0 null] >> endobj 3820 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 299.8 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3819 0 R /H /I >> endobj 3821 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.444 637.5 541.444 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3819 0 R /H /I >> endobj 3822 0 obj << /Type /Action /S /GoTo /D [3658 0 R /XYZ 72.0 720.0 null] >> endobj 3823 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 261.49 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3822 0 R /H /I >> endobj 3824 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.71 625.5 541.71 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3822 0 R /H /I >> endobj 3825 0 obj << /Type /Action /S /GoTo /D [3661 0 R /XYZ 72.0 720.0 null] >> endobj 3826 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 269.26 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3825 0 R /H /I >> endobj 3827 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.656 613.5 541.656 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3825 0 R /H /I >> endobj 3828 0 obj << /Type /Action /S /GoTo /D [3664 0 R /XYZ 72.0 720.0 null] >> endobj 3829 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 294.81 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3828 0 R /H /I >> endobj 3830 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.477 601.5 541.477 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3828 0 R /H /I >> endobj 3831 0 obj << /Type /Action /S /GoTo /D [3667 0 R /XYZ 72.0 720.0 null] >> endobj 3832 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 589.5 257.411 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3831 0 R /H /I >> endobj 3833 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.627 589.5 541.627 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3831 0 R /H /I >> endobj 3834 0 obj << /Type /Action /S /GoTo /D [3670 0 R /XYZ 72.0 720.0 null] >> endobj 3835 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 219.54 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3834 0 R /H /I >> endobj 3836 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.002 577.5 542.002 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3834 0 R /H /I >> endobj 3837 0 obj << /Type /Action /S /GoTo /D [3673 0 R /XYZ 72.0 720.0 null] >> endobj 3838 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 240.08 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3837 0 R /H /I >> endobj 3839 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.857 565.5 541.857 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3837 0 R /H /I >> endobj 3840 0 obj << /Type /Action /S /GoTo /D [3676 0 R /XYZ 72.0 720.0 null] >> endobj 3841 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 243.97 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3840 0 R /H /I >> endobj 3842 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.83 553.5 541.83 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3840 0 R /H /I >> endobj 3843 0 obj << /Type /Action /S /GoTo /D [3679 0 R /XYZ 72.0 720.0 null] >> endobj 3844 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 255.63 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3843 0 R /H /I >> endobj 3845 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.75 541.5 541.75 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3843 0 R /H /I >> endobj 3846 0 obj << /Type /Action /S /GoTo /D [3682 0 R /XYZ 72.0 720.0 null] >> endobj 3847 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 262.87 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3846 0 R /H /I >> endobj 3848 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.7 529.5 541.7 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3846 0 R /H /I >> endobj 3849 0 obj << /Type /Action /S /GoTo /D [3685 0 R /XYZ 72.0 720.0 null] >> endobj 3850 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 251.76 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3849 0 R /H /I >> endobj 3851 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.777 517.5 541.777 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3849 0 R /H /I >> endobj 3852 0 obj << /Type /Action /S /GoTo /D [3688 0 R /XYZ 72.0 720.0 null] >> endobj 3853 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 505.5 243.98 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3852 0 R /H /I >> endobj 3854 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.832 505.5 541.832 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3852 0 R /H /I >> endobj 3855 0 obj << /Type /Action /S /GoTo /D [3691 0 R /XYZ 72.0 720.0 null] >> endobj 3856 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 243.42 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3855 0 R /H /I >> endobj 3857 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.836 493.5 541.836 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3855 0 R /H /I >> endobj 3858 0 obj << /Type /Action /S /GoTo /D [3694 0 R /XYZ 72.0 720.0 null] >> endobj 3859 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 247.31 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3858 0 R /H /I >> endobj 3860 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.807 481.5 541.807 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3858 0 R /H /I >> endobj 3861 0 obj << /Type /Action /S /GoTo /D [3697 0 R /XYZ 72.0 720.0 null] >> endobj 3862 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 237.31 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3861 0 R /H /I >> endobj 3863 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.877 469.5 541.877 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3861 0 R /H /I >> endobj 3864 0 obj << /Type /Action /S /GoTo /D [3700 0 R /XYZ 72.0 720.0 null] >> endobj 3865 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 240.65 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3864 0 R /H /I >> endobj 3866 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.853 457.5 541.853 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3864 0 R /H /I >> endobj 3867 0 obj << /Type /Action /S /GoTo /D [3703 0 R /XYZ 72.0 720.0 null] >> endobj 3868 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 445.5 250.64 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3867 0 R /H /I >> endobj 3869 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.785 445.5 541.785 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3867 0 R /H /I >> endobj 3870 0 obj << /Type /Action /S /GoTo /D [3706 0 R /XYZ 72.0 720.0 null] >> endobj 3871 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 222.88 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3870 0 R /H /I >> endobj 3872 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.978 433.5 541.978 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3870 0 R /H /I >> endobj 3873 0 obj << /Type /Action /S /GoTo /D [3709 0 R /XYZ 72.0 720.0 null] >> endobj 3874 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 224.54 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3873 0 R /H /I >> endobj 3875 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.965 421.5 541.965 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3873 0 R /H /I >> endobj 3876 0 obj << /Type /Action /S /GoTo /D [3712 0 R /XYZ 72.0 720.0 null] >> endobj 3877 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 226.21 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3876 0 R /H /I >> endobj 3878 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.953 409.5 541.953 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3876 0 R /H /I >> endobj 3879 0 obj << /Type /Action /S /GoTo /D [3715 0 R /XYZ 72.0 720.0 null] >> endobj 3880 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 220.1 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3879 0 R /H /I >> endobj 3881 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.998 397.5 541.998 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3879 0 R /H /I >> endobj 3882 0 obj << /Type /Action /S /GoTo /D [3718 0 R /XYZ 72.0 720.0 null] >> endobj 3883 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 227.88 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3882 0 R /H /I >> endobj 3884 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.944 385.5 541.944 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3882 0 R /H /I >> endobj 3885 0 obj << /Type /Action /S /GoTo /D [3721 0 R /XYZ 72.0 720.0 null] >> endobj 3886 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 222.32 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3885 0 R /H /I >> endobj 3887 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.981 373.5 541.981 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3885 0 R /H /I >> endobj 3888 0 obj << /Type /Action /S /GoTo /D [3724 0 R /XYZ 72.0 720.0 null] >> endobj 3889 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 220.09 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3888 0 R /H /I >> endobj 3890 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.997 361.5 541.997 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3888 0 R /H /I >> endobj 3891 0 obj << /Type /Action /S /GoTo /D [3727 0 R /XYZ 72.0 720.0 null] >> endobj 3892 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 238.42 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3891 0 R /H /I >> endobj 3893 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.87 349.5 541.87 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3891 0 R /H /I >> endobj 3894 0 obj << /Type /Action /S /GoTo /D [3730 0 R /XYZ 72.0 720.0 null] >> endobj 3895 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 230.64 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3894 0 R /H /I >> endobj 3896 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.924 337.5 541.924 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3894 0 R /H /I >> endobj 3897 0 obj << /Type /Action /S /GoTo /D [3733 0 R /XYZ 72.0 720.0 null] >> endobj 3898 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 234.54 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3897 0 R /H /I >> endobj 3899 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.896 325.5 541.896 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3897 0 R /H /I >> endobj 3900 0 obj << /Type /Action /S /GoTo /D [3736 0 R /XYZ 72.0 720.0 null] >> endobj 3901 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 223.43 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3900 0 R /H /I >> endobj 3902 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.973 313.5 541.973 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3900 0 R /H /I >> endobj 3903 0 obj << /Type /Action /S /GoTo /D [3739 0 R /XYZ 72.0 720.0 null] >> endobj 3904 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 241.76 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3903 0 R /H /I >> endobj 3905 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.846 301.5 541.846 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3903 0 R /H /I >> endobj 3906 0 obj << /Type /Action /S /GoTo /D [3742 0 R /XYZ 72.0 720.0 null] >> endobj 3907 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 237.88 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3906 0 R /H /I >> endobj 3908 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.874 289.5 541.874 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3906 0 R /H /I >> endobj 3909 0 obj << /Type /Action /S /GoTo /D [3745 0 R /XYZ 72.0 720.0 null] >> endobj 3910 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 277.5 262.32 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3909 0 R /H /I >> endobj 3911 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.703 277.5 541.703 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3909 0 R /H /I >> endobj 3912 0 obj << /Type /Action /S /GoTo /D [3748 0 R /XYZ 72.0 720.0 null] >> endobj 3913 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 263.99 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3912 0 R /H /I >> endobj 3914 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.692 265.5 541.692 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3912 0 R /H /I >> endobj 3915 0 obj << /Type /Action /S /GoTo /D [3751 0 R /XYZ 72.0 720.0 null] >> endobj 3916 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 253.5 231.19 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3915 0 R /H /I >> endobj 3917 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.919 253.5 541.919 262.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3915 0 R /H /I >> endobj 3918 0 obj << /Type /Action /S /GoTo /D [3754 0 R /XYZ 72.0 720.0 null] >> endobj 3919 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 241.5 277.86 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3918 0 R /H /I >> endobj 3920 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.596 241.5 541.596 250.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3918 0 R /H /I >> endobj 3921 0 obj << /Type /Action /S /GoTo /D [3757 0 R /XYZ 72.0 720.0 null] >> endobj 3922 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 229.5 235.1 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3921 0 R /H /I >> endobj 3923 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.894 229.5 541.894 238.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3921 0 R /H /I >> endobj 3924 0 obj << /Type /Action /S /GoTo /D [3760 0 R /XYZ 72.0 720.0 null] >> endobj 3925 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 217.5 226.76 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3924 0 R /H /I >> endobj 3926 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.952 217.5 541.952 226.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3924 0 R /H /I >> endobj 3927 0 obj << /Type /Action /S /GoTo /D [3763 0 R /XYZ 72.0 720.0 null] >> endobj 3928 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 205.5 224.53 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3927 0 R /H /I >> endobj 3929 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.965 205.5 541.965 214.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3927 0 R /H /I >> endobj 3930 0 obj << /Type /Action /S /GoTo /D [3766 0 R /XYZ 72.0 720.0 null] >> endobj 3931 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 193.5 248.97 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3930 0 R /H /I >> endobj 3932 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.795 193.5 541.795 202.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3930 0 R /H /I >> endobj 3933 0 obj << /Type /Action /S /GoTo /D [3769 0 R /XYZ 72.0 720.0 null] >> endobj 3934 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 181.5 250.64 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3933 0 R /H /I >> endobj 3935 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.785 181.5 541.785 190.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3933 0 R /H /I >> endobj 3936 0 obj << /Type /Action /S /GoTo /D [3772 0 R /XYZ 72.0 720.0 null] >> endobj 3937 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 169.5 235.08 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3936 0 R /H /I >> endobj 3938 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.894 169.5 541.894 178.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3936 0 R /H /I >> endobj 3939 0 obj << /Type /Action /S /GoTo /D [3775 0 R /XYZ 72.0 720.0 null] >> endobj 3940 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 157.5 237.31 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3939 0 R /H /I >> endobj 3941 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.877 157.5 541.877 166.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3939 0 R /H /I >> endobj 3942 0 obj << /Type /Action /S /GoTo /D [3778 0 R /XYZ 72.0 720.0 null] >> endobj 3943 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 145.5 236.75 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3942 0 R /H /I >> endobj 3944 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.882 145.5 541.882 154.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3942 0 R /H /I >> endobj 3945 0 obj << /Type /Action /S /GoTo /D [3781 0 R /XYZ 72.0 720.0 null] >> endobj 3946 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 133.5 261.19 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3945 0 R /H /I >> endobj 3947 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.712 133.5 541.712 142.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3945 0 R /H /I >> endobj 3948 0 obj << /Type /Action /S /GoTo /D [3784 0 R /XYZ 72.0 720.0 null] >> endobj 3949 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 121.5 262.86 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3948 0 R /H /I >> endobj 3950 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.7 121.5 541.7 130.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3948 0 R /H /I >> endobj 3951 0 obj << /Type /Action /S /GoTo /D [3787 0 R /XYZ 72.0 720.0 null] >> endobj 3952 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 109.5 227.87 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3951 0 R /H /I >> endobj 3953 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.943 109.5 541.943 118.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3951 0 R /H /I >> endobj 3954 0 obj << /Type /Action /S /GoTo /D [3790 0 R /XYZ 72.0 720.0 null] >> endobj 3955 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 97.5 252.31 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3954 0 R /H /I >> endobj 3956 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.772 97.5 541.772 106.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3954 0 R /H /I >> endobj 3957 0 obj << /Type /Action /S /GoTo /D [3793 0 R /XYZ 72.0 720.0 null] >> endobj 3958 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 85.5 253.98 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3957 0 R /H /I >> endobj 3959 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.762 85.5 541.762 94.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3957 0 R /H /I >> endobj 3960 0 obj << /Type /Action /S /GoTo /D [3796 0 R /XYZ 72.0 720.0 null] >> endobj 3961 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 73.5 212.6 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3960 0 R /H /I >> endobj 3962 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.05 73.5 542.05 82.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 3960 0 R /H /I >> endobj 3963 0 obj << /Length 3964 0 R /Filter /FlateDecode >> stream xOW>D9_/ zY Kou -2rduA1MO%KH&//|C{y}޿]?ϯ_kW<)xl]<$nO.\ xl xl xl xl x x x x x x""""""""D`.]v"8Dp)S.\"@06 cA0v8@0<)!!!)))M6l"E`!CN"8Ep% s@07sA0w_;KOFFP I,'YN\dr屉屉屉屋屋屋屋qqqeeeeeeee#F,c7O}:R꠺SՍj\drelbX&ebX.qebYYYYY&Y&Y&Y6ldȲe'N,Yd9r$E,Y.M,s2w],s<2C, $$$8-!7띞2222222ɲe#F,;Yvd9r I,'Y.\droVB=QoB}77롞7+222222ɲe#F,;Yvd9r I,'YN\droJ=QoK}7˥7 ^b%SOdddddddKfe}ǡЇk8n v_a0pA%^^7'K)x)S.\ X Z|`-fk) b   LLLLl"D־T'CQTwQM,Y.8V0=<5J;4Ug׊q=P7Եz@}:km.ZX^k{,,,,,,,Y6ldɲe'N,Yd9r"E,X^k{km.ZX^k{& $$$F,Y6dɲ A,'YNd9r"%Z|嵶j<_by큚,,,,,,,kmϾo6g`fn}~8ޜ?B:2w~yoF&em7=*v!:T/mԍjb=Ztk.{TTwR՝%@Fe'N,Yd9r$E,XjRem5Z,kԇXV2222222ɲe#F,;Yvd9r I,'Y.\drem5Z,kԻXVŲH-@j LLL6kU|Zg{e}Oo_~|?G: yq@,k5Wg:mי}GQH= Nu[qN:@j LLLLldȲe'N,Yd9r$I,Y.bYŲ Re >IJ Reeeeeeee#F,;Yvdr A,'YN\dr(H-5Pz(H-5PZ,k 5YYYY&Y&Y&Y?mߖ|T8/Y{ ;lD :|oz'ɵ~Fun6K,׾zAyjjjjjjj3f~x=P՝%uQ==P'dr"%{c|jC-{222222ɲe#F,;Yvd9r I,'YN\drj?_byZ,=ׇX^{& $$$l_78`ɇpۧ}tɄb|65T<ൺ!^Zsu6 EfVHw奺}?|Q˛[fyXnT.S]Z{)'ڭ,N_rR˒Z{)70004444fTvSMu0aTNSLu"L9vfI64SNYTkS3Z+ے_NZ2>s)Oˇu;ay|Q~YNu;Z_KLj+վyQlE8,oOnyZnT.S]Z߾SN;7j}O9ַjjjjjjj3fTvSMu0aTNSLu"zrR/%ITKzR)7000444/o?x]ߏ.~߽^߿Y@-5rqQGd}0ͅ3:FAyR#yX-_I57'TNS]Lu"պZ0|'պZ1T?.TTTTTTT6S mk}*__ˆ oOʯeCkaNS]LueCeC;~\69~\6|~eCjjjjjjjj3fTvS:Lu0aTNS]LueCeCeCeC~\6t0IC45{q35k_8?|ƖO=>ufm^ u>;n{o(yX-_מCɛS:\rRE%ITQRCF)70004444fTvSMu0aTNSLu"HTRwR#H)':rRcH%S S S SMSMSMSmLj7nTS:Lu4iT.S]ZRNuB;jRJ99jjjjjjj4YR`V7K?(I4eTւIHj-ءTkւM5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]HPN`rR;j-ؑ ZCg?KRw59˴qs]g|Pڿp~zwkv9oڍ7n/־t[$6.I,%rR6.IN%M5L5L5L5M5M5Mj3fTvS:Lu0iTNS]LuqIrR6.AqIrR6.A~qIrS S S SMSMSMSMSmLj7nTS:Lu4iT.R6.IN%Iڸ$9^ ?Hڸ$i?ud릻wW ?'}657sZm{7~~?QϾDž/W=u0ay|Q~DY>)?PNuaaaaiiiT6SMj7aTNS:Mu2eTtaIN|':]rRӅ)':]rS S S SMSMSMSmLj3nTS:Lu4iT.S]Z SNu;”j.,Au0Zv}5qK]8wO;w}o?2Z|7s=ywNSnC͛O9O9ʛS:k|P~TITTTTTTTT6Sm:b<-[(rS]LujlZgPNuֈ;Y#j5B9Y#6SmLj7nTS:Mu4eT.RF(':kDTITM5L5L5L5M5M5MF&m%kj2ƶͭ\y35ٿrǩf&uH-q(jkm\0wF F$Ouֈay|I~5"9^g@uֈz5"9^gHnaaaiiiT6SmMj7aTNS:Mu2eTF$'wRTF ?H:kDrS S S SMSMSMSMSmLj7nTS:Lu4iT.RTF$'I:kTF$70000444묑^B0Z[s;S_9,42I>nӓ7zcysgP~c<,/w7˧rR8Z+p('Z#ArS S S SMSMSMSMSmLGe:R꠺SՍj\drZq#XzŲV@}e,,,,,,,,Y6ldɲe'N,Yd9r"E,X֊Ų@eZ,k-bY+i& $$$kSSn/6>`Zݽv3o72(lwc<-#nP,'ZC9֚R51j7rSLu"ZC9֚wR51j ZC6SmLj7nTS:Mu4eT֚IPN&rR51Zkb(7000044՚l盠L/6ϻXwΔ_^ݷuW?<<`zs usz/yZ>(EyYNrR4Z+h('ZA#ArS S S SMSMSMSMSmLj7nTS:Lu4iT.RTkA ZKj$IPNrR56SmLj7nTS:Mu4eT.R7j|'ZuC9ֺIVPnaaaiii5)?BSҒ%uWiI4;^wTJKN]%7000444fT6SM0aTNS:Mu2E]%'ҐzUZrR* A]%70004444fTvSMu0aTNSLu"ҒuWiIzUTJKnaaaaiii59įCF)׸mqs]?f3|O|q5_zOǹNV^/qsϺ&Q9uSf~.Jin|'պ76ZƦTؒ6SmJ`3uߨ;KCݨR׬ꤚ,Y.\dIJn-X֭Ųn-Xm˺ dddddddȲe#F,;Yvd9r$I,'Y.\dIJu-X֝Ųs-X]>IJq-5YYYY&Y&Y&Y֍~&5Ͷm#ouߛz?}?̟/Go$5#\c0:`\028?@]SNnTO&WP$E,Y.nX^zby jj5YYYY&Y&Y&Y6ldYs+T({YI,׽$Ou/+rSLu"^Vu/+wRe%9^ ^Vjjjjjjjj3fTvS:Lu0aTNS]Luu/+IzJrReA׽$70000444Z3׶?,eT35Ƨ≠#θ>OK5=QCGo)G͚=\8Zח)M q}|kX.\"@N !ANz>>@NXCCCSSSS6Glv<Ay.<,/krS]Luj-D9Bj-D9BZg QnaaaaiiiT6SMj7aTNS:Mu2eTl!I|':[rR(':[rS S S SMSMSMSFRZC&>H7?jQ~??Լm}7q=qwRg?aAay|Q~Q,/E妺Lu2ErRUZ('Z^E9+M5L5L5L5M5M5Mj3VcW|Q˛[fyXnT.S]ZK('Zj%NԊrRVZK(70004444fTvSMu0aTNSLu"ZjE9R+IZQNJTkZѷ=)ckPbێ7c ӻT9_jJ݁K[s#wCoE8,oOʧNSLu2E5Tk&N5TkF9 rS S S SMSMSMSmLj3nTS:Lu4iT.S]Z30If`Z30If`Z30M5L5L5L5M5M5M5Mj3fTvS:Lu0iT.S]Hf`j('՚QN5 ՚Qnaaaaii5[Ckƚmu73?/#ӌkUsC&3y>NuqH%%K֎@Av> X;!||`XCCCSSSS6SI5TAyJ"yX-_ש$7Mu2E#rRjTkG֎@M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujTkG;֎@IvRN#rS S S SMSMSMSZy.CkȔmۑ7c +ðW/3> !S}߶ys(uY>)i|n4iT.RZ#.wR1Z.RqLj3nTS:Lu4iT.S]ZC0I`j ('I~j (70000444fTvSM0aTNSLu2E5Tk&N5TkF9rS S S SMSMSMSxR{ 2]C9Zv3k_9w?|> C[ :/8JP[(톒7'TNS]Lu"kzm7|'kzm7T톒jjjjjjj3fp5џPfJkaNS]LuPrRBPrRB~PrS S S SMSMSMSMSmLj7nTS:Lu4iT.RJNvCIn(9^ !?Hn(^ m!ӧ۶ys]fֿr6| 7c)5$OayTkC9ּGTkC9ּrRyLj-mm۷dVfJkɬaNS]Luj{('՚Hj{('՚H~j{(70004444fTvSMu0aTNSLu"՚PN5TkC9ּGTkCּ|MXuԼnĴ~7q{WXw^?|_Znzþ}<᪇! x@|]% kW X;ꞏwt`{>>@vA,!!!))))M}<-[(rS]Luj헣TkZ('/'A_rS S S S SMSMSMSmLj7nTS:Lu4iT.S]Z('/'N_rRrj헣TTTTTTTkt~|q.s-:? {{G܌WN&?6 A/fv^Vkuw!nyZ>(?(˻T֘rRQ;ָrR؈rS S S SMSMSMSMSmLj7nTS:Lu4iT.RaZ$IIj $?HIjjjjjjjj3fTvSMu0aTNS]Lu"&QN5L|'&QN5LTkD0)ǙwjuHշ_G>r ~㯏'x^>ozeܜtcFfypIw%y|R^/\4eT.Rujm|'^G9:IQnaaaiiiTRξY>)/E$OaNS]LujmTk{;:II~jmTTTTTTTT6SmMj7aTS:Mu2eTk{Z('^G9:Rujjjjjjux; ]k+onZWZ)q>u>ݛ0\8/k[Iymk<-ArR=6R=6R=vR=vR=vR=R=R=S S S S SMSMSMSmL5cpяC[(m 7'嵭AT.S]H56RTc#I5vRT 8H5RTTTTTTT6SmLj7nTS:Mu4eTFٕrR͝Ts'*('=qay|R~<-)˻Zu('Z#N\rR:j-סTTTTTTT6S?Wg~?~X,|P^%Mu2eTkZu$IPN\GTkLj3nTS:Lu4iT.S]Zu('ZC9rIH~j-סTTTTTTTTóǶӛ/N^Јuw]q39almNJz̛C×v?)Yk۶摮'z+t3{h/l[\8LYK[($':W0004444fTvSMu0aTNSLu":rRz)':rRz%?HTTTTTTTT6SmMj7nTS:Mu2eTYj+NuV/ZgRNuV/Z/'=u~PW<\c݌qz^C#1>ޚ=?g񢇉C}i :RP՝%"EK,k$X֠ ],k$X֐ C,k$5YYYY&Y&Y&Y&Y6ldȲe'N,Yd9r$E,X$Ij9bYS$ŲfHPbY$2222222ɲe#F,;Yvd9r I,'Y.\dre͉˚Ae͈˚I-5,,,,,,,k;L[۞.:궆5=U=n?}^}߿>|pn/o꩞oo7u^涝\9Y>)K%OuzayTTTT6SKXsg:꠺SKnTORj\drR:zR:j),,,,,,,Y6ldȲe'N,Yd9r$E,X^B-Y׻X^'B-9ׇX^BMAAAIIIcO>9>Tie=k??w |whi?mwy?:T =I|P~<,7EuZ'HjB9 jB6SmLj7nTS:Mu4iT.R@(':DTIN :rS S S SMSMSMSMSmLj7nTS:Lu4iT.R@(':rR@(':DTM5L5L5L5L5M5MV[Tѕ~d8j}?Q##\Opܝqɏ=vAByX-_/-7Mu2EueInL9$I I~j-ATTTTTTTT6SmMj7nTS:Mu2eT֊$I$IjJTk]Z+(7000444fT6SM0aTNS:Mu2EdrREKZ˖('Z$AtrS S S SMSMSMS9O1е/kn7s,mǶT_at'8o𼟯Dnn{9DD7'+i|%<,7iT.Ri(':FTtIΧ :rS S S SMSMSMSMSmLj7nTS:Lu4iT.Rk(':rRk(':FTM5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujnC96ZPNu ZPnaaaiii5֚ZCFX7̛un|^=\g5Kq>f,w밼Y>%n4%yZ>(Iєzh TMInaaaiiiiT֍=3yhJ|P^7<,/FS7Mu2Eu)I;^7TMIN׍ S S S SMSMSMSmLj7nTS:Lu4iT.S]zhJrRn4N׍$'FSu)M5L5L5L5M5M5M^j|]uն=ju=͌庝Wg,s*_$?>Χyb}q ,WCpEyX-_Z('pE9ֆ+TTTTTTT6S"N{o";KF:&E,Y.VRez]%X*ŲvVIMAAAIII,Y6ldɲe'A,YNd9r"EK,kbYۧŲ6OI-u C,kdddddddyM=Ak1۶E{߳L=j>O}xXWRg+q F}沇A|]>CݨR׉P'C:ꠚ,X^G=C-A׻X^(%Mu2eT%'`gwRvT!?H:YrS S S SMSMSMSMSmLj7nTS:Lu4iT.RvT%'`gI:T%7000044տ=f+9fSk2ݿ<Klkc\O1^guk?N]vA[(?S,'E9֖(wR-Qjm E6SmLj7nTS:Mu4eTrR-QjmTkK֖(M5L5L5L5L5M5M5Mj3fTvS:Lu0iT.S]LujmTkK;֖(IDQN%rS S S SMSMSMSP5g}MlzΛioq8Tj k[溻i|nE:,oj(' Ij(' I~j(70004444fT[۶i|lE<,o2eTk,D9XrRZc!RLj3nTvS:Lu4iT.S]HBj$IBj(' Qnaaaiiiך/_\cy~R-nnBX<m;2o _ӳo[;uw ʧ5<-tn ՚TPnaaaiiiiTlkk}i֧Kw>]f.S]H&jM*('՚TPN5 ՚TPnaaaaiiiT6SMj7aTNS:Mu2eTkRA9֤BTkRA9֤rRIZ۴3'6q~Lw#޶IפTm46OͧFiuߣ'g=W]8z|躳su?'˧ix(6ʧi|(6jOFiQhmԞ6jOFiQh> endobj 3964 0 obj 16042 endobj 3966 0 obj << /Length 3967 0 R /Filter /FlateDecode >> stream xTK0WqԏJR+!P{]U8`5$ؔ_1@zɣ=@T0Bʀ'{WB v uf߄U@K6OXQ 8fa"! 9`ge7uFT0u+ 1ʚ7~ >O/q.Ƶ? w}sPo~xM$ߞ) HܹjF:)sM5E 𽠦g*LJ[JE "2 8x1R$}+ciDϥRa-V~r`Fq.E*lk1,N0Wڽ/ endstream endobj 3965 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3966 0 R >> endobj 3967 0 obj 630 endobj 3969 0 obj << /Length 3970 0 R /Filter /FlateDecode >> stream xUn0+)EskѦ@! ƢlH}c֒R/"=y3?y (?!V[iocq|~@fwu&mۄ rxq-xu p~ k|0OܗRrb"/-_楨4̚Rk sUֺ/`>? N0k}pؔsDBӕNMGkK( -.e$G爛x8=AQɇGd2 -VH}G$ߍ FhRG}}uBVVv (s™#pp= Y/8b 73u&_oLUWޙJMZ,.!-p{ft޼'Q,ecK2ɸ > g}D>'#"det>B&PFrܡ> endobj 3970 0 obj 716 endobj 3972 0 obj << /Length 3973 0 R /Filter /FlateDecode >> stream xVr6}W[Ņ%o,'n43QC)E2$e B@.iQ N5^ Z?6 M#claAfFO2Gt&@h̺39?an~=J`:Ü Y~̷l*Ǽe*`Ve0JaM8e f:u <9c䐶ċ`mEs+W?}7:ݞ fm)i}x HxuRqÁÊ7c©BTRĎK{r0QNŝ\ Zv(fѧ^wc1z(D A)ֻ4*a6/qFQ]rE+ǩY$W9a> ຮʕygOY^Tz= ; pA}baq^k )RvYٮ*i@*Td'D +,ڊan78ZEFE2f. Vi~%nD v`Z!q, Lx/+nzjPr%E9Lׁ5t]UΌ8h[q1sԿwHaR;=VfP:\'~vu2Vuj(KY4eUC5 %/:jwS(]vpW%I;ir#˺e0w?n,qW6.Mtﭣa}ZᧀJj ?<8SkC{1E^Ur6  hyN/z;6ՅzL/W6JTq)Z$lo.Wl /rnX[S,}2q+CW=> endobj 3973 0 obj 967 endobj 3975 0 obj << /Length 3976 0 R /Filter /FlateDecode >> stream xTn0+r z`XhiP(m RNڿ/)ʶ =Cy|3z`~C((XЇGԇ5 nWyxf1l;o;+1Oq%" !(1*C!.ݽl_k 6y!a*9HFV9rju}Y9]xF;Bb&R7Aq|*nM-`8#Ţ޸jFZ&54A1fFO en6=:35p(as2\#( +f247;RHJ2 F .!-rYg1j6't:[F 3u0"`P8V#s%I^H 唕k "l "P'1̛u =JHLIޏ4O/(<[' ZT̵θgFhc2 \圢`c;uYJi'gLWѽ}8?q? endstream endobj 3974 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3975 0 R >> endobj 3976 0 obj 572 endobj 3978 0 obj << /Length 3979 0 R /Filter /FlateDecode >> stream xTMo@ﯘcsv lJ=DCU,Ҩ,Փk[>޼Y^ ߏZ@^_Xz=5pCR_3&c`x'qxK6~a7g'Ci L-UBiJG@x}/Xgm[@Uig/H?t585v>>Jg;qt18n!\E, U[ g4mq&'=>&nEZ` y:O:զoS(Gn/3[Ԏ}YQצil㽘^XiThj$8nZm!k`"?/ |" endstream endobj 3977 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3978 0 R >> endobj 3979 0 obj 561 endobj 3981 0 obj << /Length 3982 0 R /Filter /FlateDecode >> stream xTM0+=Ա JMVfUQ0U61&_6dgyW'DC^E, |{ ( ?pqp^Q=`2Gu൷ě/($ŹD,&<\dϳ'i KUJXZ[ IڴҴ/|$W|U-H"י8юw18n*&Ώ[g|(,Q_MFUi>S FR7||6'u#+nA '2T1 >?cH'b^ \C+ҩj )!-j Yde|h j r߫iU{" (J44=ȸO1=-nY07T@nw? ٥UffvX'[M l.OôP \fZ <ײmN 6&2Os߀T,5¼7wm̴LA+#Y+3\iB?;twOX9]S[jUtop$ endstream endobj 3980 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3981 0 R >> endobj 3982 0 obj 592 endobj 3984 0 obj << /Length 3985 0 R /Filter /FlateDecode >> stream xUn0+Pc@ ! Ţl(r4[d6@bW;GĂjP |}}ao;\C|0AG7 yw~kt%O-@H|΄0XlA6/J0oNimdcn`8)f385v Y" yc=rÈ㶩b֋:I87ɻ_Glə3]4;wm0H}Á?7 1(!Tk,d>WJmED%H `> "K> ԿZ\mQ!]a0m U`U:̖أ( R)TtD!"8ЅVLS0"r/:$AG b17GG(qpY4 yMu( H)uE𳨧O9Yޢ4˴4ƞ|ʬlxrCh``վSQR4iԠ '(|^f`V&Ty4Nm endstream endobj 3983 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3984 0 R >> endobj 3985 0 obj 668 endobj 3987 0 obj << /Length 3988 0 R /Filter /FlateDecode >> stream xUM0W̭ʇXTa%j˪J! vHHBFL޼yp(~K$1)@i@nly{7;+&7@~~!w'>/O(eڎƾ`BJ>g~,RY+XԥN IeTm_a)MN=ro*rxo !w18nOxZ]#n ]&+mDH_9# Myj=#]MhAI'A."5kUR+'rd,"|F9!H{Zn&İȊ<[QfHMK*nH0#\ߢLfP92)|R,v⧈) 3"ߓ.:$"[~| B9rm(V.%I%HwӜC.)6z"Ӧ*5dl$WŶA_Ї=6絟Y5gy F+cl'׮A .Z'I4uOs}qA7N=t|uCDuG|Og:N<"'yU=_q0 endstream endobj 3986 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3987 0 R >> endobj 3988 0 obj 637 endobj 3990 0 obj << /Length 3991 0 R /Filter /FlateDecode >> stream xUn0+P6X)CF{H@([,)ܠߡE{zJm/Ov${9DDxt!0p(쮎O.n;o#Sx0] ^yw~Oa}Y{o`٥D,&>܇.zoUZg V:j#{_=q =Sc[@~3g C㶡Lǭ:EɻGd7a;WmH}#Sj­:%Tպ̤ )P;ec9LP0K9%8?$!RӐs%lM9> endobj 3991 0 obj 656 endobj 3993 0 obj << /Length 3994 0 R /Filter /FlateDecode >> stream xV]o0}Wܷƌg'PJ=UE$( _k.dsϽ&O_%Gi }(]#Tꩣ }~;Css98dn#~B>v^Xc$ !vMԇnήx҈\U׈taw?8 z؃VZNC' O+G8@t #[-U&G=zxRecS|(iD 78# T= (q#<ǚ !yu!s+xk EcK=F[9t%qhm\ PteB֢U%7 Li1Jfaj鬫׺ie)ߠɂw(NFQt_i+raU6@<;&-!d'"?CYgUs }i .%aEͫC$sxl݆ɜ5 C9^*x3`c ? g<}Z qIB12' fm]cg50Hk}53 M:[gf)dm*:(%,~@ܞ۷4 U=g0pܗ)e{8[({zU-ӹ6XD[n#}s̟) c5@J*vм,{gM^0A/k/ endstream endobj 3992 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3993 0 R >> endobj 3994 0 obj 726 endobj 3996 0 obj << /Length 3997 0 R /Filter /FlateDecode >> stream xUn0+P/=c@!զlr}mɒ,Hrv8K%`@-/0& a}[w.n63( ߂'L"-r x4Wo4:_(6#MZpY4rckRSCnE e<1 endstream endobj 3995 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3996 0 R >> endobj 3997 0 obj 634 endobj 3999 0 obj << /Length 4000 0 R /Filter /FlateDecode >> stream xUK0+PRS]Ut1Ҩ6&I$[3of, H} /{0pL ā=t{2}j!Z!I[>[ORZݝAl}0?K=& <?=<}ͩ~&$욢 b ~Pֲ=QLmQ[NԏmGg0{om )֮kbD1U*CrW5#Mp/z(dsu㇚Q!D;AeUyTڿؕ̃4"<`&"U2k1ot3wB|7;귬%I= ^T9yOœ2溮Mݟ(>Cłnl=!\kĘP!< _(/uN]OU\@ :aA4zSñV#,sbAyu4ZBӟ!vR ueJ<̔"\ dXؔXI]eC"n3LoVx>g:M3H/%|6M]L:ov逘GZqM"!-!JֵN`,ӓ7.1qUm_? endstream endobj 3998 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 3999 0 R >> endobj 4000 0 obj 620 endobj 4002 0 obj << /Length 4003 0 R /Filter /FlateDecode >> stream xVn0+hU3 4zhIPe V$_ߥ!-u Xjv8u}KQ(m,( iG6my7k@i|V޷*ڗ(HYRL(,5W/UpUWy/}_cn;5? Ɂ'v}t$d&ím=f=eC&yWH40 ~z8NOf5Rs0O?Ԅ&!l+ݒ_^,}7gRH&}cbdrSL W x4_ݮUJU'hjު71L)&U^q췯mZA:d%i45xP< +oER7?Nqr%˓ B'Q\|>> endobj 4003 0 obj 755 endobj 4005 0 obj << /Length 4006 0 R /Filter /FlateDecode >> stream xUn0+-ˇ^̱@S,Q`YRH9A]~ȒH,51lHrH7ˮ ])>^wnV˫< ߽'<̀"ͣuw'),sm' Jvq }|X@8|~<ng`~U,]Q-!Kr]o浆,TxW6zNDa^Ս)*LADF!h(qA|3)@tcFG$]a:P.@J k5!9GD/Ei*EβUb`Tu*$pnkZu> endobj 4006 0 obj 683 endobj 4008 0 obj << /Length 4009 0 R /Filter /FlateDecode >> stream xTM0W̱=0cR+EAab*hWc>l/idkƏ7og€,Rqx:>@r~|`=8@ 7F~b& >GL@BuxG#~7称'B~&CXUJqGpe~#Ə5QAE).軻"ibEtVJG\p&(eX8Xp`*0Xs9Hl'4kb$&e OyAܰY#p}OQVMjEr@)}qḔc%%.9+?Dt6IΈ5Dם4*V&P6L9q "mz{lX/Z#_<~%%zlNyM2hb͛|Uro {ageM5dDq\1Wo^ r+M/w- 7] endstream endobj 4007 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4008 0 R >> endobj 4009 0 obj 577 endobj 4011 0 obj << /Length 4012 0 R /Filter /FlateDecode >> stream xTKo@+lJ=DCE,6 $}gY?x\ciof7Y;oGAGs `Gۃdb7NP<=c0Ok+g7zs~ [[|]x(ɥD, .wR܅̏CG|+,Lê)h!Z73?aO`?[9X5}<#8/ޖPXz, e&W5^A/2hWEHnJ~}>2Jd]WmH}#S"w5VNE)GAeUyR=ꛨ gRy\_w cH}6Ư9Cb>tisS 8|dΛ$af`}7uguȋNTMTCD@)4.'ジc+ ǜ̕%qZjۘB5; 6;([> endobj 4012 0 obj 583 endobj 4014 0 obj << /Length 4015 0 R /Filter /FlateDecode >> stream xVn0+-KR9h   P$,K E'HKѱ,VzJm$v9ݡ'!zO0J{hvCYo(n1EGǏ fSXyߖ׫e޷$Kke^jT0NV I*^}93t585v?ts$€3G8hGFM!WW:=n=2豊I>?2J3"6>S"k£R5~TUfEF9y'p™O)2N[$q ;%aX<\_-UYitE,1 mk iYʼ h#٨8(l3{⵪hߠDd@x@s$3࿒r7d QU=ЁUzvN?hޥ6 EL!2QR!TZ59$][@|qz' _{l,s\űhE3K8ř9;iz?3<8en 穦{!\:y[M -H.? .cX|HW-v㵗"+MŠ%JUP7R-˧ckyf ,ʺߜ/G3 endstream endobj 4013 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4014 0 R >> endobj 4015 0 obj 692 endobj 4017 0 obj << /Length 4018 0 R /Filter /FlateDecode >> stream xRn sL%VmޢX!R#ƱI}8,6afQBoAZh2@PÈ}t)P'jw)gD]A:pyN}!vQ/ sajx΅_K3nCA֮ؔjTzM#>f4}G+N=J .;EJpVcװ7A^`nkO|<`K _"(fQH LZw1 6OU"h ;,#0"F&G\1YԼ:MGQXϡIunvȳdO86ύmx˦#o JCZ8!_2*x#F W\ɢlN8iO;Jȹ2wt۩ }("\b籭/6d endstream endobj 4016 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4017 0 R >> endobj 4018 0 obj 413 endobj 4020 0 obj << /Length 4021 0 R /Filter /FlateDecode >> stream xUK0Wu[>^*H{X@!a#&yBB{Ì3ëǀ]O@sqI'\B -!o-\&4^< ߽g b›G/лקp>o$0 HDa [9ۤx8s<[>u3"Xuu2ҧ`: CmCIYFua!Lܵ8h( F?;wfJH[#S1VNC) XV/3JeO' skZ;ov;{6Kmp ߠI=ՍNCX "7vegaL |j1DRĤ"*R*y2xg? s endstream endobj 4019 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4020 0 R >> endobj 4021 0 obj 611 endobj 4023 0 obj << /Length 4024 0 R /Filter /FlateDecode >> stream xTMo0 WQ-ٹ6`vhzb;5GYJb'vl"H=~%*}+ .C!vĐGwj𝽾Q0$oǍ{~={Jo!$?K\E1=*+iM,rM5qQB.뱆Ò>6adNwL<. g~u8qMxSk`,P fMxsU#m >D[ 9cDTP>;;֫UZtm:z K?Ԥ5|#H*0>Ͷ,CRBwk=Qdq uZkm51CWtGh @cC -#_=^Cʦo^(hA_PeuO c ƈ+nN/or3/6}E7md,5 >b endstream endobj 4022 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4023 0 R >> endobj 4024 0 obj 479 endobj 4026 0 obj << /Length 4027 0 R /Filter /FlateDecode >> stream xTKo0 WFIda`vhzhm'۩ GYJ[A >Ť#A5Jv kwjdȝE?D ~!dOϴRi!MG޼>’}/?bšEqUҧRHΤJx{Y~l]?>;⢄\0aIÇ1m$CA}:,7=^8fq.Hqj( ]1':jș" }9YO&mx ^hI@$ QkÄ> endobj 4027 0 obj 572 endobj 4029 0 obj << /Length 4030 0 R /Filter /FlateDecode >> stream xTKo@+,䖪JQ,F@x, fq$[bv̷0 8"_FB"qf7 )֧6NM Q]؟" cJ˷9'3Ja +i?8 H1_K100qԤ('qxo!0\뵮Ηɵ^QtV:6VQf%D^2*pkcOlt 6k2s4Ͷv|3v}y'{RI[U0i(urNok7pf 28H[ Cjh u Zq3~ endstream endobj 4028 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4029 0 R >> endobj 4030 0 obj 673 endobj 4032 0 obj << /Length 4033 0 R /Filter /FlateDecode >> stream xRn0+RJڪZ!"8!@kDZ^ibi6ϼy3!XZ Yv@L:W <BBo j5%%l q -*kh6|sa>ҁJN9 > Oy ݤ;i1c> endobj 4033 0 obj 401 endobj 4035 0 obj << /Length 4036 0 R /Filter /FlateDecode >> stream xUKo@+Hv_>ZEA!,j6UX;b=3| "{m} .?& !>50›{5G(&yp&{ԷzVާF!^-JFQ(D^n|8T}C0ǿ"͘G_qd {jK;8q> endobj 4036 0 obj 662 endobj 4038 0 obj << /Length 4039 0 R /Filter /FlateDecode >> stream xVn0+)KR+}sAjKaQ%wHlYI/lf潙'wzy=;9S alxބG(i:|uk}އ{9F!][2āICB|.!-7Hm%'HoOirg0f11c9€=  -vmjحc׋<kM_C%IOQB/ v6H]$ o((#ثy.d*,Yer YbI)H 3R%'ؤm*#F#v44!W\ͺLpuWxiIPQ yPZWMhq"DNL6Z>^9WVIf!S.n5m{j]Wx2I$ %NwKD%r %Q&Z8 LW!pݶ\MzM3k3`{jeժorw٦s뒌L HiEj R?Q8 Nu*Ŷ>Y+Ǒ"2f"_鲸ykO lh&'$Ts,+h^m"F.7jx[Jy ycT endstream endobj 4037 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4038 0 R >> endobj 4039 0 obj 671 endobj 4041 0 obj << /Length 4042 0 R /Filter /FlateDecode >> stream xUێ0}W㮴u}ͼQ"VHPͥ" V}q lB͌g30yg@rX$kmcp~m|`.$P=ؚS ovCYÓ:8/T@1CUSgҪo<)Bvʃh6LܴqL $ pc.ijxۜhFI)5>],~Y:yEo<Ѹ.,\N82)> endobj 4042 0 obj 622 endobj 4044 0 obj << /Length 4045 0 R /Filter /FlateDecode >> stream xUM0WqWںHU? e(1V ʉ$;3~3L7[0[mȨ6r!,ݩFwCYb /)0!4\A#g0'sA2;(4Pq Rhw Hrxyx~d]g)ii\-CEU[0`mOcJ( ->s-ի'^_;u Tў&倜Ѹ5Q,:U;k}#A0oj£ 1&kAzOtldqnJ\  b\2Ƒm;ZbBBgFB`OS@ S/b`(rUQ>pgW"+P}A> endobj 4045 0 obj 598 endobj 4047 0 obj << /Length 4048 0 R /Filter /FlateDecode >> stream xUێ0}W㮴u}Ib7^ i\*bXZnO4 y23sx qN^k%@&+NGTĐCmǰYMh8y~`  ;NWר#Lɧ|gN-9Tdh*4V-_ }$_Җҫ8TW:V X; COC5 f֋:AkhM_停QDˋp㮝#A0oj­ 1&kAt~K7eٰ(s7qP{?HP%cY+l\K1C4@u 02A( mKCZ$o i[\b5gsP1uqΫ,n:svB!x=_U Li8c]nr=U$zklhͦp*r`y|,x,'Pj2^_d i 9j$u`Uq)lFngKLPygpi|~Ǯ9k=#D endstream endobj 4046 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4047 0 R >> endobj 4048 0 obj 569 endobj 4050 0 obj << /Length 4051 0 R /Filter /FlateDecode >> stream xTMo0 WFɲeo E (.~e;;uIQG>}o, qPs!pDtv52Do./{׷t$p-x]|ާ-- 8JjIq.?@ljӜB|}\.Wm mk|tH<>I`mBrۣYBYxcǚxAY G !x㮝  )zcNtUS#ZeU*HwYg͙`y9 0+4̍j _4Ф l%ݷ|EDh>M7 CVH}Ymz6ǐiiO ㋼*nuʢq?`9)q+L %QA35(V8΁ba72) 4fQĸoOvᾘz6V/HpA?8j8ߊP.N{{*%!IB2YBz=S)͖ ko~N~ffl IFNN9aH\VfrZ:T}ݘI6PT]n#W_? endstream endobj 4049 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4050 0 R >> endobj 4051 0 obj 639 endobj 4053 0 obj << /Length 4054 0 R /Filter /FlateDecode >> stream xUn0+HXZ(]CE[*,ɑrB˲^RYY<," ynu7hU~CԇZهIcOp0|wfX::xN;9V~=?9v>|`E>A(ȥz(9Ϯn~@7h!v;Zn5 ^0/Cw6|X-NԘjkݞY5@h1߃u lWp;0H0 w! άň n$MTFc-(狪Uż6m3U6UV'XB(ŘHlL>%n/llJMFgm&0eh"+WA]Qb2bK@-f2ܽ5E,-.|YA|U[^63, ?ɉc;F*>£ⷵv7@f~qp/y/btڭ;ڐ)dƶD}eZv˔ Ib&^&=6b]LG郐AFal=JD,d:j endstream endobj 4052 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4053 0 R >> endobj 4054 0 obj 785 endobj 4056 0 obj << /Length 4057 0 R /Filter /FlateDecode >> stream xVMo0 W4Ii"Pc%۩ۿ%9$nOc%=>QB'9, 19A`>>*; ?frJ'Sq:|Xj;>%q>~QHD>#^qp7 4= jqhaoH6&|g{t=[M=뾆1M={ڗA*=!ThAlwV`#8%!p&\3]AX*նl۹kw޴u^b#"yxpRʐ3IOiΞSsT\k``@. %|1+Ua#ٰ PoYmمGa4 qq>_) ya̼L y3'eؾj[ȲGG1 " Cl:ד: ?dTTKh*~=bGѵt4;+ϕ7_VK&k m20niΜ#dk&9F%X(bQJӰo8*sՌt_eMWEÈxx`9bv 5HeJZ^hgZztYW9 xgwSWx 5%DLGBlY*ُ mǢ7M ]ޏ{)MLXr+ ض>8jNq&-G)i*/yM].#`aJ'H*bq endstream endobj 4055 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4056 0 R >> endobj 4057 0 obj 785 endobj 4059 0 obj << /Length 4060 0 R /Filter /FlateDecode >> stream xUM0W 8;Nl舘VDaYKK6 돐 lO&~TL:Ouw{W|lKȺ^#ׅ]Y*MWi9G"Sh _jȒggY+g endstream endobj 4058 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4059 0 R >> endobj 4060 0 obj 562 endobj 4062 0 obj << /Length 4063 0 R /Filter /FlateDecode >> stream xUK0W 8ԵǏ=UZeR,-I8꿯!؞hΌgf>3@-R3X蹱Q "јbcC>;۰.'{TZ&D <]TOSr_|ihDs0!Ԗz&T2LCfu)~CLJ#Ǜ)Ma,O+C韢ܙ9)XK`׻g:hcNY}YQK3BoaweRFuE՛(ÜQBC J|n }ۘvf]dPw~tv;ʼ1uFmWLgC&F]a'Hk yZ2^w/c HGBX endstream endobj 4061 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4062 0 R >> endobj 4063 0 obj 565 endobj 4065 0 obj << /Length 4066 0 R /Filter /FlateDecode >> stream xUMo0 WX5I%mÊ"vhClb~$rd=uNєG>%O3(aVEO@qw% < ž pqИï(oq/݅UwO1E'(d%%N\ۇCVbz|ٙ[63\ 5 Udh#tH`z[ ?3B ACcMkrP6Q S}PܵW7|b(!'<Щ)'T島9?5]ꗫ^U-gwbe=)N8)eX՛m0D1F*srB>+ YɚClN[pRJ堦fٕ:TϨ$ZZKtͤ+٧. <~SִDB q69}܀zk~VDžϟBB N߀k޲n֖˾lc i֔-x'G93\삗tcmՇCYX>MFj;+>? ˶aΕacTɪ3I8\/_\GNA#wmG6/W aAf(<S OMI k٨tP[,{PH_r%8 endstream endobj 4064 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4065 0 R >> endobj 4066 0 obj 688 endobj 4068 0 obj << /Length 4069 0 R /Filter /FlateDecode >> stream xUo0~篸`ܧm"")@ 1IL Y:}w'ϥYȽ@rl){ {5 7SS6֛9}Vޗ=F!^[0"P*"seqwۛ'Z7_{eNWv̽@#mևlmu-Ě]Gy# k]A@FIB޹kir)x]NxTSQJP,w]rlwͼnX͟N[N8)eX[ Xĉ`u.nڔM mRg<2'=Iahz"-ퟢYU R!|~?-\ſkb~@eshEaIUITKgҎQ Ek & %4hw5 r>}N΋H ǜV6M o%|#Em,Ή^O (>ig:[:u\{EZ$M*s7Wڤ-MdxŮdHt,0tWjR;Ja9t/=#ql>aoY EXM8ɳKQ­'M{%k.9"Ux;5FlEb!_ d4 endstream endobj 4067 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4068 0 R >> endobj 4069 0 obj 684 endobj 4071 0 obj << /Length 4072 0 R /Filter /FlateDecode >> stream xVO0~_!1Ͽ'cN#+Xmt {:aZăCCļd·RHDxąOdbR22Il^4ޡiqIhZ/$G}!;K`4s* a endstream endobj 4070 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4071 0 R >> endobj 4072 0 obj 868 endobj 4074 0 obj << /Length 4075 0 R /Filter /FlateDecode >> stream xR=O0+qU1TҴҤ*=vlđt~yȝoL.1[M $!B(.5VF EY5=uͯl48pDmۋtrZqfCvIH:*m$O128a v!EٿsL(V_xfj'> Y7-\f4p_NvDqzgQV}eg˪Yƃ+Bi/WvnC-UqR&S|U]/ffm1v-m@I endstream endobj 4073 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4074 0 R >> endobj 4075 0 obj 336 endobj 4077 0 obj << /Length 4078 0 R /Filter /FlateDecode >> stream xTI0W u\/Y칵" MQFv,0@D yAݻ- O*NFPCc:zn "==[ 8 r ~DI}g!7O`>f(l5,qKId5<؛vo`UmKЇJ![]3d?wwt#gnG8"ǖ ' r_ۙaa8LQ/#u`qČDq^ pGԾ)&Zj S5#x)aF9!^r)@96P_X0D«Ӏٔ/.It$q}H}?iuPy:% 2a"î bڔ8"r*d[R}48%BQo@J;K$}ܧRu3VQ#F gJ b>}R-'RUvnl8:&vFMu<*s>1)P#p LvOMNŢn,e/QSD/fx z endstream endobj 4076 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 4077 0 R >> endobj 4078 0 obj 572 endobj 4080 0 obj << /Type /Action /S /GoTo /D [3965 0 R /XYZ 72.0 720.0 null] >> endobj 4081 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 709.5 222.61 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4080 0 R /H /I >> endobj 4083 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.98 709.5 541.98 718.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4080 0 R /H /I >> endobj 4084 0 obj << /Type /Action /S /GoTo /D [3968 0 R /XYZ 72.0 720.0 null] >> endobj 4085 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 697.5 215.92 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4084 0 R /H /I >> endobj 4086 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.026 697.5 542.026 706.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4084 0 R /H /I >> endobj 4087 0 obj << /Type /Action /S /GoTo /D [3971 0 R /XYZ 72.0 720.0 null] >> endobj 4088 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 685.5 225.92 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4087 0 R /H /I >> endobj 4089 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.956 685.5 541.956 694.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4087 0 R /H /I >> endobj 4090 0 obj << /Type /Action /S /GoTo /D [3974 0 R /XYZ 72.0 720.0 null] >> endobj 4091 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 673.5 225.38 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4090 0 R /H /I >> endobj 4092 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.959 673.5 541.959 682.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4090 0 R /H /I >> endobj 4093 0 obj << /Type /Action /S /GoTo /D [3977 0 R /XYZ 72.0 720.0 null] >> endobj 4094 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 661.5 219.83 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4093 0 R /H /I >> endobj 4095 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.0 661.5 542.0 670.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4093 0 R /H /I >> endobj 4096 0 obj << /Type /Action /S /GoTo /D [3980 0 R /XYZ 72.0 720.0 null] >> endobj 4097 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 649.5 211.49 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4096 0 R /H /I >> endobj 4098 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.057 649.5 542.057 658.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4096 0 R /H /I >> endobj 4099 0 obj << /Type /Action /S /GoTo /D [3983 0 R /XYZ 72.0 720.0 null] >> endobj 4100 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 637.5 242.88 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4099 0 R /H /I >> endobj 4101 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.84 637.5 541.84 646.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4099 0 R /H /I >> endobj 4102 0 obj << /Type /Action /S /GoTo /D [3986 0 R /XYZ 72.0 720.0 null] >> endobj 4103 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 625.5 236.19 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4102 0 R /H /I >> endobj 4104 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.886 625.5 541.886 634.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4102 0 R /H /I >> endobj 4105 0 obj << /Type /Action /S /GoTo /D [3989 0 R /XYZ 72.0 720.0 null] >> endobj 4106 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 613.5 240.1 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4105 0 R /H /I >> endobj 4107 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.857 613.5 541.857 622.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4105 0 R /H /I >> endobj 4108 0 obj << /Type /Action /S /GoTo /D [3992 0 R /XYZ 72.0 720.0 null] >> endobj 4109 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 601.5 229.53 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4108 0 R /H /I >> endobj 4110 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.932 601.5 541.932 610.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4108 0 R /H /I >> endobj 4111 0 obj << /Type /Action /S /GoTo /D [3995 0 R /XYZ 72.0 720.0 null] >> endobj 4112 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 589.5 242.31 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4111 0 R /H /I >> endobj 4113 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.843 589.5 541.843 598.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4111 0 R /H /I >> endobj 4114 0 obj << /Type /Action /S /GoTo /D [3998 0 R /XYZ 72.0 720.0 null] >> endobj 4115 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 577.5 241.75 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4114 0 R /H /I >> endobj 4116 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.846 577.5 541.846 586.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4114 0 R /H /I >> endobj 4117 0 obj << /Type /Action /S /GoTo /D [4001 0 R /XYZ 72.0 720.0 null] >> endobj 4118 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 565.5 232.87 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4117 0 R /H /I >> endobj 4119 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.908 565.5 541.908 574.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4117 0 R /H /I >> endobj 4120 0 obj << /Type /Action /S /GoTo /D [4004 0 R /XYZ 72.0 720.0 null] >> endobj 4121 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 553.5 209.26 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4120 0 R /H /I >> endobj 4122 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.072 553.5 542.072 562.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4120 0 R /H /I >> endobj 4123 0 obj << /Type /Action /S /GoTo /D [4007 0 R /XYZ 72.0 720.0 null] >> endobj 4124 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 541.5 221.48 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4123 0 R /H /I >> endobj 4125 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.987 541.5 541.987 550.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4123 0 R /H /I >> endobj 4126 0 obj << /Type /Action /S /GoTo /D [4010 0 R /XYZ 72.0 720.0 null] >> endobj 4127 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 529.5 217.61 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4126 0 R /H /I >> endobj 4128 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.014 529.5 542.014 538.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4126 0 R /H /I >> endobj 4129 0 obj << /Type /Action /S /GoTo /D [4013 0 R /XYZ 72.0 720.0 null] >> endobj 4130 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 517.5 212.6 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4129 0 R /H /I >> endobj 4131 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.05 517.5 542.05 526.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4129 0 R /H /I >> endobj 4132 0 obj << /Type /Action /S /GoTo /D [4016 0 R /XYZ 72.0 720.0 null] >> endobj 4133 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 505.5 183.276 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4132 0 R /H /I >> endobj 4134 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.11 505.5 542.11 514.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4132 0 R /H /I >> endobj 4135 0 obj << /Type /Action /S /GoTo /D [4019 0 R /XYZ 72.0 720.0 null] >> endobj 4136 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 493.5 213.45 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4135 0 R /H /I >> endobj 4137 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.044 493.5 542.044 502.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4135 0 R /H /I >> endobj 4138 0 obj << /Type /Action /S /GoTo /D [4022 0 R /XYZ 72.0 720.0 null] >> endobj 4139 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 481.5 211.77 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4138 0 R /H /I >> endobj 4140 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.056 481.5 542.056 490.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4138 0 R /H /I >> endobj 4141 0 obj << /Type /Action /S /GoTo /D [4025 0 R /XYZ 72.0 720.0 null] >> endobj 4142 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 469.5 220.1 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4141 0 R /H /I >> endobj 4143 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.998 469.5 541.998 478.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4141 0 R /H /I >> endobj 4144 0 obj << /Type /Action /S /GoTo /D [4028 0 R /XYZ 72.0 720.0 null] >> endobj 4145 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 457.5 228.44 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4144 0 R /H /I >> endobj 4146 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.939 457.5 541.939 466.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4144 0 R /H /I >> endobj 4147 0 obj << /Type /Action /S /GoTo /D [4031 0 R /XYZ 72.0 720.0 null] >> endobj 4148 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 445.5 190.119 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4147 0 R /H /I >> endobj 4149 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.066 445.5 542.066 454.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4147 0 R /H /I >> endobj 4150 0 obj << /Type /Action /S /GoTo /D [4034 0 R /XYZ 72.0 720.0 null] >> endobj 4151 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 433.5 244.54 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4150 0 R /H /I >> endobj 4152 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.827 433.5 541.827 442.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4150 0 R /H /I >> endobj 4153 0 obj << /Type /Action /S /GoTo /D [4037 0 R /XYZ 72.0 720.0 null] >> endobj 4154 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 421.5 312.86 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4153 0 R /H /I >> endobj 4155 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.353 421.5 541.353 430.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4153 0 R /H /I >> endobj 4156 0 obj << /Type /Action /S /GoTo /D [4040 0 R /XYZ 72.0 720.0 null] >> endobj 4157 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 409.5 302.87 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4156 0 R /H /I >> endobj 4158 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.421 409.5 541.421 418.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4156 0 R /H /I >> endobj 4159 0 obj << /Type /Action /S /GoTo /D [4043 0 R /XYZ 72.0 720.0 null] >> endobj 4160 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 397.5 287.32 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4159 0 R /H /I >> endobj 4161 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.53 397.5 541.53 406.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4159 0 R /H /I >> endobj 4162 0 obj << /Type /Action /S /GoTo /D [4046 0 R /XYZ 72.0 720.0 null] >> endobj 4163 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 385.5 277.33 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4162 0 R /H /I >> endobj 4164 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.598 385.5 541.598 394.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4162 0 R /H /I >> endobj 4165 0 obj << /Type /Action /S /GoTo /D [4049 0 R /XYZ 72.0 720.0 null] >> endobj 4166 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 373.5 244.55 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4165 0 R /H /I >> endobj 4167 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.826 373.5 541.826 382.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4165 0 R /H /I >> endobj 4168 0 obj << /Type /Action /S /GoTo /D [4052 0 R /XYZ 72.0 720.0 null] >> endobj 4169 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 361.5 311.75 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4168 0 R /H /I >> endobj 4170 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.36 361.5 541.36 370.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4168 0 R /H /I >> endobj 4171 0 obj << /Type /Action /S /GoTo /D [4055 0 R /XYZ 72.0 720.0 null] >> endobj 4172 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 349.5 301.76 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4171 0 R /H /I >> endobj 4173 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.429 349.5 541.429 358.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4171 0 R /H /I >> endobj 4174 0 obj << /Type /Action /S /GoTo /D [4058 0 R /XYZ 72.0 720.0 null] >> endobj 4175 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 337.5 262.88 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4174 0 R /H /I >> endobj 4176 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.7 337.5 541.7 346.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4174 0 R /H /I >> endobj 4177 0 obj << /Type /Action /S /GoTo /D [4061 0 R /XYZ 72.0 720.0 null] >> endobj 4178 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 325.5 265.66 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4177 0 R /H /I >> endobj 4179 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.679 325.5 541.679 334.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4177 0 R /H /I >> endobj 4180 0 obj << /Type /Action /S /GoTo /D [4064 0 R /XYZ 72.0 720.0 null] >> endobj 4181 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 313.5 286.21 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4180 0 R /H /I >> endobj 4182 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.538 313.5 541.538 322.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4180 0 R /H /I >> endobj 4183 0 obj << /Type /Action /S /GoTo /D [4067 0 R /XYZ 72.0 720.0 null] >> endobj 4184 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 301.5 276.22 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4183 0 R /H /I >> endobj 4185 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.607 301.5 541.607 310.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4183 0 R /H /I >> endobj 4186 0 obj << /Type /Action /S /GoTo /D [4070 0 R /XYZ 72.0 720.0 null] >> endobj 4187 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 289.5 210.66 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4186 0 R /H /I >> endobj 4188 0 obj << /Type /Annot /Subtype /Link /Rect [ 527.062 289.5 542.062 298.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4186 0 R /H /I >> endobj 4189 0 obj << /Type /Action /S /GoTo /D [4073 0 R /XYZ 72.0 720.0 null] >> endobj 4190 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 277.5 252.485 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4189 0 R /H /I >> endobj 4191 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.66 277.5 541.66 286.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4189 0 R /H /I >> endobj 4192 0 obj << /Type /Action /S /GoTo /D [4076 0 R /XYZ 72.0 720.0 null] >> endobj 4193 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.0 265.5 227.33 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4192 0 R /H /I >> endobj 4194 0 obj << /Type /Annot /Subtype /Link /Rect [ 526.947 265.5 541.947 274.5 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 4192 0 R /H /I >> endobj 4195 0 obj << /Length 4196 0 R /Filter /FlateDecode >> stream x]Gv{_6"GKv h5õa~q[ԙM{3x fuu>dWETdwmo3ݫ7/w⏿d~6ݏU_O{E/_o~yў>q^_~տ~㋿qhzw߾>~w?߾?/~~ݷ7(}|?c ş˯_P~m׮O_>}/Fw?(/)Wn?gʧX_+8Aݿ>~{͛ןn믉ftޞ;vj~ Zms@mtn %p}Fwmm}Fwcm}1n pSM7n 9psm &p -[n rMھ}7inݤIw&cMƾ &M7n )p3f̀7n&pm p -[iwӶmM۾}7ntw p&M7noېy5eͧǸ|5|·XpFJs:kNCQ^#Rk<@+u~^][mueUn [Qojvj~Vk}Z7n)pS̀7+h:IՆ VTORGCYLd2e`"5ULIJV2Xj&PbY+H,Y dR"KE, YtdґDYNd9e @,Y&LbYkHM,ke"5PIJDY d)R"KE,Ӂ*'dRf_-E5yv߿OERjgw5YUbNC5P^R+'Ԃjd2e"$<IJ'ZDjbY˓@=e-O"5d)R"KE,Y4d ^65!zz @H-vT'Ԇjd2e&<IJ'X$PbY˓H,Y d)R"KE, Ytdґ#ˉ,'2e @,Y&LbY˓HM,ky;I&<IJ'Y d)R"KEtS&yn ɦl]#y>~vw#>~:t©v1ԿsMIZjA:I= A@,Y&Ld2$ X_wby,5su_wX/NRNR녓ԊIIjd9D,YLd2hr4b9XN,G'1r d)R KA,Y*4di2[_F ՂjGuzTQF,Y&Lb)XJ#҈tb)XJ'2 b)XY dR"KC, YtdґDYNd2e @,Y&F,KmR;N,KRA,u KA,Y*TdȲ&Fn]\Ա<.sihO_N̽2'<=ƱlSյ|yd P IԆu];GjbY΁˺vIJ u KA,Y*TdҐ!K[ sFՊICԂjGu: 2e"$7QM,9R˺vIJ u KA,Y*TdҐ!KC,Y:td9DY d2e"DI,9R˺vԝXֵs&ue];Gjd)R KE,Yֵsc=yQ{.z>}Vkz?̭\׮5Z+1W[^aٕjA:I˓P^I&0IJƐXRZA,ka KA,Y*TdҐ!KC,Y:td9DY d2e"DI,ka e-u'0IJƐXR#KA,Y*TdҐ!KC,Y:td9DY d2e"DI,ka e-u'0IJƀzZCjd)R KE,Y̍Zc&,E·?w}mczjc<-]]E6kO/;ϙ('a ˝uzQn,ג#ZTCTkY ʑj-!@LU0UaT*SUjL՘jdS{Gzz6T I6T#D,XD5U6&ʆIJVـzZeCjd)R KA,Y*4diҐ#KG,YNd9D,YLd2eZeCjbYl@݉e!5U6&ʆR KA,Y*.f~zϧjAg\oMfNǝM@re$y]2rZMeS(GuRKPT S*LU2UeTSuLՙ3T'SL5j0`T&SMZUeU$H.B9RKPT*3UaT*SUL՘1UcT:Su:dS L5j2dT+#պ֕W(GuRPT SLU2Շs22̍+{tdv57y'.|vL긫'cX(re$yܠ ʑjܠ R3UaT SULU1UcT:SuLu2T'S L5j2dT ʑjܐ#՚A9R#՚A9S*LU2UeTS5jLՙ3UgN:j0`T&SMHfnPTk ʑjܐ| ՚A9S*LU2UeTggFfnUs7͏-<3_= dMf].;M:Dy"Y(rcy<;˙j"՚JB9R$#՚JB9R$ZSI(gT SLU2UcT:SuLՙdNL5j0dT&R$#՚J"yG5rZSI(G5r*LU0UeTS5jL՘3UgT'SLu2`TSML5jM%T;R$#՚J"@5r*LU0UeTT?!5E\mf]SI6YuXf'yq jgZfUױٰO ̊D:(7ʽ\Y>Q>dNL5j0dT| >3UaT SULU1Ucu _> ˝򺄏@y]Gre9SML5j">#>wz\Grz\Grz\Gr*LU0UeTS5jL՘3UgT'SLu2`TSML5q ɑq ;R=.#9R=.@%|$gT SULUj݊A6͐٭͞r^wks__yY\.2p:]}ݫI0kw@+'k@ ˝`T&SMH&PTk H&PTk$ʙ0UaT*SUL՘1UcT:Su:dS L5j2dTk H&HޑjM$ʑjM S*LU2UeTS5Lՙ3T'SL5j0`T&SMZ`(G5 FTk H&H>jM S*LU2Ue-L2K/R8gC폯in!st6/VٚJ^x,7ʽ\Y>Q>˅rL5j0dT;;;;| c13UaT SULU1UcT:SuLu2T'S L5j2dT;;#c1#c1#c13UaT*SUL՘1UcT:Su:dS L5j2dTHT@ޑ걃ɑ걃R=v#9S*LU2UeTkX0AR±MIcg'.[G? ; 7ʏ@T'S L5j0dTTGC!ёHut::RT`T SULU2UcTM=X ɏM=A,(?6Y(?6&SMHURT!UiHU:RT#UHURT S*LU2UeTSuLՙ3T'SL5j0`T&SM jCڐvjG:`T SULUqݗ>єGmj̧^L޾L}㫗"ۜ^\md]xs' @\Y>Q`(gNL5j0dT',GGʑj}rZ{đ| 1r*LU0UaT*S5jL՘3UgTN:dTSML5j"#H#yGGʑjrZ{ġ S*LU2UeTS5Lՙ3T'SL5j0`T&SMZ{ġq$HC9R=H>jr*LU0UelnIÌ\n]є1#g/i3rt+/3rF>np>yqs}wXmW_<,(_ ˝5A7v#a򷶆Iq<ËՓ5y&Ggˍzzrg9SML5q$ɑq$;R=$9R=@Փ$gT SULU2UcT:SuLu2T'SL5j0`T&RT'IT'Aޑq$ɑq$ɑq$ȅ S*LU2UeTSuLՙ3T'SL5j0`T&SMz\=Irz\= T'IT'IT'IT SLU2՚&I*YG\}q\lF?Oۗ?ޟ7[D\ߜ\Qʠ\X,O2(7ʍS5Lՙ3UgN:j0`T&SMHz S*LU2UeuG^6.OyO/ wo{߽]Ę1:Q~5Y.Ձ:⸫)קK$WOקK$;˓5%rZS2$HdPTkJHdPT SLU2UcT/ַDy\&?>3TǬޜ^eqjz'Y(|OrLu2T'SL5j0`T&RMPTk#H6} @ʙ0UaT*SUL՘1UcT:Su:dS L5j2dTk#֦(Gʑjmr*LU0UeT;W]jD^/I"~#g=JkSx~ kg8%|%Y(}uIn,gT=B"v^l"Y(+Hn,=H,gT&SMZwE9RwZwE9RHTr*LU0UeTS5jL՘3UgT'SLu2`TSML5jݩHTKTN(GuZZwE9S*LU2UeTk VmdhYᇭf\1.዁W?%]o~F;k:J#.:}H,(}H.,w'k.˙2UeTS5jLՙ3UgN:j0`T&SMHاHا tt| c.3UaT*SULU1UcT:Su:dNL5j0dTtttt| c.3UaT SUL+?=9׸?(olw??|euf]|VOOűKk.+'k. ˝Ic.#c.wzErzErzEr*LU0UeTS5ZtdKə0UaT*SUL՘1UcT:SLu2T'S L5j2dT]HT]HT]HT]@>Kə0UaT*SUzՏ\&]s^327/_}x8?=٤/|mţ׾\p8<2$WOI.,w''SLu2`T&SML5j-XG9R$H24#Zr*LU0UeTS5jL՘3UgT'SLu2`TSML5j-XG9R$HւuZ QT SLU2csgg8[{jXac1zycECQC|x+/ݮ7ӎ]χCPՓVԂjGuڑ#KGYNd9e @,Y&LdTLnDOF9S*LU2UeTS5jLՙ3UgN:j0`T&SMH>OF9RϓIޑj}rZ'| <LU0UaT*S]nka>dkxqǼuȧd?7NSr뮸_<}n:usܯVsw;~tsƵ[ιsTueֹ׭s[^νm{:umֹs[~nuֹs[>}l:usܯAVsאn;~ ඪsk;9kpUm{:ueֹ׭s[UÇU|(tGU5𛃪^)Y3Ƚ=h_ŭMgX^w 4 ˝r,7ʵ\YTS5jLՙ3UgN:j0`T&SMH(ewZQTk2R(gT SULU2UcT:SuLu2T'SL5j0`T&R(GHV1:fZ+QT S*LU2Jz}JNNqy1}*<|y`{N_q4fc-.;\X,O Hn, H,gT*SUjL՘"ZG͝X.,w'cXT&SM* JCҐ4*JGґ *`T SLU2UcT:SuLՙdNL5j0dT&RՆT!UmHU;RՎT#UHURՁTu0UaT*SUL>n=S6!kWy!xzq_ ?- >]Oo*xlٍ^qQ(H,(_(;哩N:j0`T&SMHąrZw"yGHԠ֒3UaT*SUL՘1U+վ^'}X(h,3`T&R%5(G֒#ZRCTkI ʙ0UaT*SUL՘1UcT:SLu2T'S L5j2dTkI ʑj-A9R%5(G֒3UaT SULUj}ޥ4 6C녡h_Nyı2}_៎58_>Wz_~ۗ?ޟxܮ}:Nnqt:<,Ow(72˕5ʑjB9RQ(G>T SULU2UcTToY,(rgy<ˍL5j2D> HG(#ZETk}ʙ0UaT*SUL՘1UcT:Su:dS L5j2dTk}ʑj"yG> HG(3UaT*SULGl54qy8䀚;O߽曇jNlWB.yXkdtvqiҡF&$WOȄrgyF&$73dT]>PT.(Gu#պR| S*LU2UeTSIck&T;5(:H]#P+e"D,Xm=HM,IJnAjbY7 5yY d)R"KE, Y4dґ#ˉ,'2e @,Y&LbYw 5{v˺ceݯԃX:H,Y dR"K-Vd&R=8So_~%w endstream endobj 4082 0 obj [ 4081 0 R 4083 0 R 4085 0 R 4086 0 R 4088 0 R 4089 0 R 4091 0 R 4092 0 R 4094 0 R 4095 0 R 4097 0 R 4098 0 R 4100 0 R 4101 0 R 4103 0 R 4104 0 R 4106 0 R 4107 0 R 4109 0 R 4110 0 R 4112 0 R 4113 0 R 4115 0 R 4116 0 R 4118 0 R 4119 0 R 4121 0 R 4122 0 R 4124 0 R 4125 0 R 4127 0 R 4128 0 R 4130 0 R 4131 0 R 4133 0 R 4134 0 R 4136 0 R 4137 0 R 4139 0 R 4140 0 R 4142 0 R 4143 0 R 4145 0 R 4146 0 R 4148 0 R 4149 0 R 4151 0 R 4152 0 R 4154 0 R 4155 0 R 4157 0 R 4158 0 R 4160 0 R 4161 0 R 4163 0 R 4164 0 R 4166 0 R 4167 0 R 4169 0 R 4170 0 R 4172 0 R 4173 0 R 4175 0 R 4176 0 R 4178 0 R 4179 0 R 4181 0 R 4182 0 R 4184 0 R 4185 0 R 4187 0 R 4188 0 R 4190 0 R 4191 0 R 4193 0 R 4194 0 R ] endobj 4079 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /CropBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 4082 0 R /Contents 4195 0 R >> endobj 4196 0 obj 11552 endobj 4197 0 obj << /Type /Action /S /GoTo /D [8 0 R /XYZ 72.0 720.0 null] >> endobj 4199 0 obj << /Title (SystemTap Tapset Reference Manual) /Parent 4198 0 R /Next 4201 0 R /A 4197 0 R >> endobj 4200 0 obj << /Type /Action /S /GoTo /D [170 0 R /XYZ 72.0 720.0 null] >> endobj 4201 0 obj << /Title (Table of Contents) /Parent 4198 0 R /Prev 4199 0 R /Next 4202 0 R /A 4200 0 R >> endobj 4202 0 obj << /Title /Parent 4198 0 R /Prev 4201 0 R /Next 4203 0 R /A 171 0 R >> endobj 4203 0 obj << /Title /Parent 4198 0 R /Prev 4202 0 R /Next 4331 0 R /First 4204 0 R /Last 4330 0 R /Count -127 /A 175 0 R >> endobj 4204 0 obj << /Title (function::addr) /Parent 4203 0 R /Next 4205 0 R /A 178 0 R >> endobj 4205 0 obj << /Title (function::asmlinkage) /Parent 4203 0 R /Prev 4204 0 R /Next 4206 0 R /A 181 0 R >> endobj 4206 0 obj << /Title (function::backtrace) /Parent 4203 0 R /Prev 4205 0 R /Next 4207 0 R /A 184 0 R >> endobj 4207 0 obj << /Title (function::caller) /Parent 4203 0 R /Prev 4206 0 R /Next 4208 0 R /A 187 0 R >> endobj 4208 0 obj << /Title (function::caller_addr) /Parent 4203 0 R /Prev 4207 0 R /Next 4209 0 R /A 190 0 R >> endobj 4209 0 obj << /Title (function::callers) /Parent 4203 0 R /Prev 4208 0 R /Next 4210 0 R /A 193 0 R >> endobj 4210 0 obj << /Title (function::cmdline_arg) /Parent 4203 0 R /Prev 4209 0 R /Next 4211 0 R /A 196 0 R >> endobj 4211 0 obj << /Title (function::cmdline_args) /Parent 4203 0 R /Prev 4210 0 R /Next 4212 0 R /A 199 0 R >> endobj 4212 0 obj << /Title (function::cmdline_str) /Parent 4203 0 R /Prev 4211 0 R /Next 4213 0 R /A 202 0 R >> endobj 4213 0 obj << /Title (function::cpu) /Parent 4203 0 R /Prev 4212 0 R /Next 4214 0 R /A 205 0 R >> endobj 4214 0 obj << /Title (function::cpuid) /Parent 4203 0 R /Prev 4213 0 R /Next 4215 0 R /A 208 0 R >> endobj 4215 0 obj << /Title (function::egid) /Parent 4203 0 R /Prev 4214 0 R /Next 4216 0 R /A 211 0 R >> endobj 4216 0 obj << /Title (function::env_var) /Parent 4203 0 R /Prev 4215 0 R /Next 4217 0 R /A 214 0 R >> endobj 4217 0 obj << /Title (function::euid) /Parent 4203 0 R /Prev 4216 0 R /Next 4218 0 R /A 217 0 R >> endobj 4218 0 obj << /Title (function::execname) /Parent 4203 0 R /Prev 4217 0 R /Next 4219 0 R /A 220 0 R >> endobj 4219 0 obj << /Title (function::fastcall) /Parent 4203 0 R /Prev 4218 0 R /Next 4220 0 R /A 223 0 R >> endobj 4220 0 obj << /Title (function::gid) /Parent 4203 0 R /Prev 4219 0 R /Next 4221 0 R /A 226 0 R >> endobj 4221 0 obj << /Title (function::int_arg) /Parent 4203 0 R /Prev 4220 0 R /Next 4222 0 R /A 229 0 R >> endobj 4222 0 obj << /Title (function::is_myproc) /Parent 4203 0 R /Prev 4221 0 R /Next 4223 0 R /A 232 0 R >> endobj 4223 0 obj << /Title (function::is_return) /Parent 4203 0 R /Prev 4222 0 R /Next 4224 0 R /A 235 0 R >> endobj 4224 0 obj << /Title (function::long_arg) /Parent 4203 0 R /Prev 4223 0 R /Next 4225 0 R /A 238 0 R >> endobj 4225 0 obj << /Title (function::longlong_arg) /Parent 4203 0 R /Prev 4224 0 R /Next 4226 0 R /A 241 0 R >> endobj 4226 0 obj << /Title (function::modname) /Parent 4203 0 R /Prev 4225 0 R /Next 4227 0 R /A 244 0 R >> endobj 4227 0 obj << /Title (function::module_name) /Parent 4203 0 R /Prev 4226 0 R /Next 4228 0 R /A 247 0 R >> endobj 4228 0 obj << /Title (function::module_size) /Parent 4203 0 R /Prev 4227 0 R /Next 4229 0 R /A 250 0 R >> endobj 4229 0 obj << /Title (function::ns_egid) /Parent 4203 0 R /Prev 4228 0 R /Next 4230 0 R /A 253 0 R >> endobj 4230 0 obj << /Title (function::ns_euid) /Parent 4203 0 R /Prev 4229 0 R /Next 4231 0 R /A 256 0 R >> endobj 4231 0 obj << /Title (function::ns_gid) /Parent 4203 0 R /Prev 4230 0 R /Next 4232 0 R /A 259 0 R >> endobj 4232 0 obj << /Title (function::ns_pgrp) /Parent 4203 0 R /Prev 4231 0 R /Next 4233 0 R /A 262 0 R >> endobj 4233 0 obj << /Title (function::ns_pid) /Parent 4203 0 R /Prev 4232 0 R /Next 4234 0 R /A 265 0 R >> endobj 4234 0 obj << /Title (function::ns_ppid) /Parent 4203 0 R /Prev 4233 0 R /Next 4235 0 R /A 268 0 R >> endobj 4235 0 obj << /Title (function::ns_sid) /Parent 4203 0 R /Prev 4234 0 R /Next 4236 0 R /A 271 0 R >> endobj 4236 0 obj << /Title (function::ns_tid) /Parent 4203 0 R /Prev 4235 0 R /Next 4237 0 R /A 274 0 R >> endobj 4237 0 obj << /Title (function::ns_uid) /Parent 4203 0 R /Prev 4236 0 R /Next 4238 0 R /A 277 0 R >> endobj 4238 0 obj << /Title (function::pexecname) /Parent 4203 0 R /Prev 4237 0 R /Next 4239 0 R /A 280 0 R >> endobj 4239 0 obj << /Title (function::pgrp) /Parent 4203 0 R /Prev 4238 0 R /Next 4240 0 R /A 283 0 R >> endobj 4240 0 obj << /Title (function::pid) /Parent 4203 0 R /Prev 4239 0 R /Next 4241 0 R /A 286 0 R >> endobj 4241 0 obj << /Title (function::pid2execname) /Parent 4203 0 R /Prev 4240 0 R /Next 4242 0 R /A 289 0 R >> endobj 4242 0 obj << /Title (function::pid2task) /Parent 4203 0 R /Prev 4241 0 R /Next 4243 0 R /A 292 0 R >> endobj 4243 0 obj << /Title (function::pn) /Parent 4203 0 R /Prev 4242 0 R /Next 4244 0 R /A 295 0 R >> endobj 4244 0 obj << /Title (function::pnlabel) /Parent 4203 0 R /Prev 4243 0 R /Next 4245 0 R /A 298 0 R >> endobj 4245 0 obj << /Title (function::pointer_arg) /Parent 4203 0 R /Prev 4244 0 R /Next 4246 0 R /A 301 0 R >> endobj 4246 0 obj << /Title (function::pp) /Parent 4203 0 R /Prev 4245 0 R /Next 4247 0 R /A 304 0 R >> endobj 4247 0 obj << /Title (function::ppfunc) /Parent 4203 0 R /Prev 4246 0 R /Next 4248 0 R /A 307 0 R >> endobj 4248 0 obj << /Title (function::ppid) /Parent 4203 0 R /Prev 4247 0 R /Next 4249 0 R /A 310 0 R >> endobj 4249 0 obj << /Title (function::print_backtrace) /Parent 4203 0 R /Prev 4248 0 R /Next 4250 0 R /A 313 0 R >> endobj 4250 0 obj << /Title (function::print_regs) /Parent 4203 0 R /Prev 4249 0 R /Next 4251 0 R /A 316 0 R >> endobj 4251 0 obj << /Title (function::print_stack) /Parent 4203 0 R /Prev 4250 0 R /Next 4252 0 R /A 319 0 R >> endobj 4252 0 obj << /Title (function::print_syms) /Parent 4203 0 R /Prev 4251 0 R /Next 4253 0 R /A 322 0 R >> endobj 4253 0 obj << /Title (function::print_ubacktrace) /Parent 4203 0 R /Prev 4252 0 R /Next 4254 0 R /A 490 0 R >> endobj 4254 0 obj << /Title (function::print_ubacktrace_brief) /Parent 4203 0 R /Prev 4253 0 R /Next 4255 0 R /A 494 0 R >> endobj 4255 0 obj << /Title (function::print_ustack) /Parent 4203 0 R /Prev 4254 0 R /Next 4256 0 R /A 497 0 R >> endobj 4256 0 obj << /Title (function::print_usyms) /Parent 4203 0 R /Prev 4255 0 R /Next 4257 0 R /A 500 0 R >> endobj 4257 0 obj << /Title (function::probe_type) /Parent 4203 0 R /Prev 4256 0 R /Next 4258 0 R /A 503 0 R >> endobj 4258 0 obj << /Title (function::probefunc) /Parent 4203 0 R /Prev 4257 0 R /Next 4259 0 R /A 506 0 R >> endobj 4259 0 obj << /Title (function::probemod) /Parent 4203 0 R /Prev 4258 0 R /Next 4260 0 R /A 509 0 R >> endobj 4260 0 obj << /Title (function::pstrace) /Parent 4203 0 R /Prev 4259 0 R /Next 4261 0 R /A 512 0 R >> endobj 4261 0 obj << /Title (function::register) /Parent 4203 0 R /Prev 4260 0 R /Next 4262 0 R /A 515 0 R >> endobj 4262 0 obj << /Title (function::registers_valid) /Parent 4203 0 R /Prev 4261 0 R /Next 4263 0 R /A 518 0 R >> endobj 4263 0 obj << /Title (function::regparm) /Parent 4203 0 R /Prev 4262 0 R /Next 4264 0 R /A 521 0 R >> endobj 4264 0 obj << /Title (function::remote_id) /Parent 4203 0 R /Prev 4263 0 R /Next 4265 0 R /A 524 0 R >> endobj 4265 0 obj << /Title (function::remote_uri) /Parent 4203 0 R /Prev 4264 0 R /Next 4266 0 R /A 527 0 R >> endobj 4266 0 obj << /Title (function::s32_arg) /Parent 4203 0 R /Prev 4265 0 R /Next 4267 0 R /A 530 0 R >> endobj 4267 0 obj << /Title (function::s64_arg) /Parent 4203 0 R /Prev 4266 0 R /Next 4268 0 R /A 533 0 R >> endobj 4268 0 obj << /Title (function::sid) /Parent 4203 0 R /Prev 4267 0 R /Next 4269 0 R /A 536 0 R >> endobj 4269 0 obj << /Title (function::sprint_backtrace) /Parent 4203 0 R /Prev 4268 0 R /Next 4270 0 R /A 539 0 R >> endobj 4270 0 obj << /Title (function::sprint_stack) /Parent 4203 0 R /Prev 4269 0 R /Next 4271 0 R /A 542 0 R >> endobj 4271 0 obj << /Title (function::sprint_syms) /Parent 4203 0 R /Prev 4270 0 R /Next 4272 0 R /A 545 0 R >> endobj 4272 0 obj << /Title (function::sprint_ubacktrace) /Parent 4203 0 R /Prev 4271 0 R /Next 4273 0 R /A 548 0 R >> endobj 4273 0 obj << /Title (function::sprint_ustack) /Parent 4203 0 R /Prev 4272 0 R /Next 4274 0 R /A 551 0 R >> endobj 4274 0 obj << /Title (function::sprint_usyms) /Parent 4203 0 R /Prev 4273 0 R /Next 4275 0 R /A 554 0 R >> endobj 4275 0 obj << /Title (function::stack) /Parent 4203 0 R /Prev 4274 0 R /Next 4276 0 R /A 557 0 R >> endobj 4276 0 obj << /Title (function::stack_size) /Parent 4203 0 R /Prev 4275 0 R /Next 4277 0 R /A 560 0 R >> endobj 4277 0 obj << /Title (function::stack_unused) /Parent 4203 0 R /Prev 4276 0 R /Next 4278 0 R /A 563 0 R >> endobj 4278 0 obj << /Title (function::stack_used) /Parent 4203 0 R /Prev 4277 0 R /Next 4279 0 R /A 566 0 R >> endobj 4279 0 obj << /Title (function::stp_pid) /Parent 4203 0 R /Prev 4278 0 R /Next 4280 0 R /A 569 0 R >> endobj 4280 0 obj << /Title (function::symdata) /Parent 4203 0 R /Prev 4279 0 R /Next 4281 0 R /A 572 0 R >> endobj 4281 0 obj << /Title (function::symfile) /Parent 4203 0 R /Prev 4280 0 R /Next 4282 0 R /A 575 0 R >> endobj 4282 0 obj << /Title (function::symfileline) /Parent 4203 0 R /Prev 4281 0 R /Next 4283 0 R /A 578 0 R >> endobj 4283 0 obj << /Title (function::symline) /Parent 4203 0 R /Prev 4282 0 R /Next 4284 0 R /A 581 0 R >> endobj 4284 0 obj << /Title (function::symname) /Parent 4203 0 R /Prev 4283 0 R /Next 4285 0 R /A 584 0 R >> endobj 4285 0 obj << /Title (function::target) /Parent 4203 0 R /Prev 4284 0 R /Next 4286 0 R /A 587 0 R >> endobj 4286 0 obj << /Title (function::task_ancestry) /Parent 4203 0 R /Prev 4285 0 R /Next 4287 0 R /A 590 0 R >> endobj 4287 0 obj << /Title (function::task_backtrace) /Parent 4203 0 R /Prev 4286 0 R /Next 4288 0 R /A 593 0 R >> endobj 4288 0 obj << /Title (function::task_cpu) /Parent 4203 0 R /Prev 4287 0 R /Next 4289 0 R /A 596 0 R >> endobj 4289 0 obj << /Title (function::task_current) /Parent 4203 0 R /Prev 4288 0 R /Next 4290 0 R /A 599 0 R >> endobj 4290 0 obj << /Title (function::task_cwd_path) /Parent 4203 0 R /Prev 4289 0 R /Next 4291 0 R /A 602 0 R >> endobj 4291 0 obj << /Title (function::task_egid) /Parent 4203 0 R /Prev 4290 0 R /Next 4292 0 R /A 605 0 R >> endobj 4292 0 obj << /Title (function::task_euid) /Parent 4203 0 R /Prev 4291 0 R /Next 4293 0 R /A 608 0 R >> endobj 4293 0 obj << /Title (function::task_exe_file) /Parent 4203 0 R /Prev 4292 0 R /Next 4294 0 R /A 611 0 R >> endobj 4294 0 obj << /Title (function::task_execname) /Parent 4203 0 R /Prev 4293 0 R /Next 4295 0 R /A 614 0 R >> endobj 4295 0 obj << /Title (function::task_fd_lookup) /Parent 4203 0 R /Prev 4294 0 R /Next 4296 0 R /A 617 0 R >> endobj 4296 0 obj << /Title (function::task_gid) /Parent 4203 0 R /Prev 4295 0 R /Next 4297 0 R /A 620 0 R >> endobj 4297 0 obj << /Title (function::task_max_file_handles) /Parent 4203 0 R /Prev 4296 0 R /Next 4298 0 R /A 623 0 R >> endobj 4298 0 obj << /Title (function::task_nice) /Parent 4203 0 R /Prev 4297 0 R /Next 4299 0 R /A 626 0 R >> endobj 4299 0 obj << /Title (function::task_ns_egid) /Parent 4203 0 R /Prev 4298 0 R /Next 4300 0 R /A 629 0 R >> endobj 4300 0 obj << /Title (function::task_ns_euid) /Parent 4203 0 R /Prev 4299 0 R /Next 4301 0 R /A 632 0 R >> endobj 4301 0 obj << /Title (function::task_ns_gid) /Parent 4203 0 R /Prev 4300 0 R /Next 4302 0 R /A 635 0 R >> endobj 4302 0 obj << /Title (function::task_ns_pid) /Parent 4203 0 R /Prev 4301 0 R /Next 4303 0 R /A 638 0 R >> endobj 4303 0 obj << /Title (function::task_ns_tid) /Parent 4203 0 R /Prev 4302 0 R /Next 4304 0 R /A 641 0 R >> endobj 4304 0 obj << /Title (function::task_ns_uid) /Parent 4203 0 R /Prev 4303 0 R /Next 4305 0 R /A 644 0 R >> endobj 4305 0 obj << /Title (function::task_open_file_handles) /Parent 4203 0 R /Prev 4304 0 R /Next 4306 0 R /A 647 0 R >> endobj 4306 0 obj << /Title (function::task_parent) /Parent 4203 0 R /Prev 4305 0 R /Next 4307 0 R /A 650 0 R >> endobj 4307 0 obj << /Title (function::task_pid) /Parent 4203 0 R /Prev 4306 0 R /Next 4308 0 R /A 818 0 R >> endobj 4308 0 obj << /Title (function::task_prio) /Parent 4203 0 R /Prev 4307 0 R /Next 4309 0 R /A 822 0 R >> endobj 4309 0 obj << /Title (function::task_state) /Parent 4203 0 R /Prev 4308 0 R /Next 4310 0 R /A 825 0 R >> endobj 4310 0 obj << /Title (function::task_tid) /Parent 4203 0 R /Prev 4309 0 R /Next 4311 0 R /A 828 0 R >> endobj 4311 0 obj << /Title (function::task_uid) /Parent 4203 0 R /Prev 4310 0 R /Next 4312 0 R /A 831 0 R >> endobj 4312 0 obj << /Title (function::tid) /Parent 4203 0 R /Prev 4311 0 R /Next 4313 0 R /A 834 0 R >> endobj 4313 0 obj << /Title (function::u32_arg) /Parent 4203 0 R /Prev 4312 0 R /Next 4314 0 R /A 837 0 R >> endobj 4314 0 obj << /Title (function::u64_arg) /Parent 4203 0 R /Prev 4313 0 R /Next 4315 0 R /A 840 0 R >> endobj 4315 0 obj << /Title (function::u_register) /Parent 4203 0 R /Prev 4314 0 R /Next 4316 0 R /A 843 0 R >> endobj 4316 0 obj << /Title (function::uaddr) /Parent 4203 0 R /Prev 4315 0 R /Next 4317 0 R /A 846 0 R >> endobj 4317 0 obj << /Title (function::ubacktrace) /Parent 4203 0 R /Prev 4316 0 R /Next 4318 0 R /A 849 0 R >> endobj 4318 0 obj << /Title (function::ucallers) /Parent 4203 0 R /Prev 4317 0 R /Next 4319 0 R /A 852 0 R >> endobj 4319 0 obj << /Title (function::uid) /Parent 4203 0 R /Prev 4318 0 R /Next 4320 0 R /A 855 0 R >> endobj 4320 0 obj << /Title (function::uint_arg) /Parent 4203 0 R /Prev 4319 0 R /Next 4321 0 R /A 858 0 R >> endobj 4321 0 obj << /Title (function::ulong_arg) /Parent 4203 0 R /Prev 4320 0 R /Next 4322 0 R /A 861 0 R >> endobj 4322 0 obj << /Title (function::ulonglong_arg) /Parent 4203 0 R /Prev 4321 0 R /Next 4323 0 R /A 864 0 R >> endobj 4323 0 obj << /Title (function::umodname) /Parent 4203 0 R /Prev 4322 0 R /Next 4324 0 R /A 867 0 R >> endobj 4324 0 obj << /Title (function::user_mode) /Parent 4203 0 R /Prev 4323 0 R /Next 4325 0 R /A 870 0 R >> endobj 4325 0 obj << /Title (function::ustack) /Parent 4203 0 R /Prev 4324 0 R /Next 4326 0 R /A 873 0 R >> endobj 4326 0 obj << /Title (function::usymdata) /Parent 4203 0 R /Prev 4325 0 R /Next 4327 0 R /A 876 0 R >> endobj 4327 0 obj << /Title (function::usymfile) /Parent 4203 0 R /Prev 4326 0 R /Next 4328 0 R /A 879 0 R >> endobj 4328 0 obj << /Title (function::usymfileline) /Parent 4203 0 R /Prev 4327 0 R /Next 4329 0 R /A 882 0 R >> endobj 4329 0 obj << /Title (function::usymline) /Parent 4203 0 R /Prev 4328 0 R /Next 4330 0 R /A 885 0 R >> endobj 4330 0 obj << /Title (function::usymname) /Parent 4203 0 R /Prev 4329 0 R /A 888 0 R >> endobj 4331 0 obj << /Title /Parent 4198 0 R /Prev 4203 0 R /Next 4354 0 R /First 4332 0 R /Last 4353 0 R /Count -22 /A 891 0 R >> endobj 4332 0 obj << /Title (function::HZ) /Parent 4331 0 R /Next 4333 0 R /A 894 0 R >> endobj 4333 0 obj << /Title (function::cpu_clock_ms) /Parent 4331 0 R /Prev 4332 0 R /Next 4334 0 R /A 897 0 R >> endobj 4334 0 obj << /Title (function::cpu_clock_ns) /Parent 4331 0 R /Prev 4333 0 R /Next 4335 0 R /A 900 0 R >> endobj 4335 0 obj << /Title (function::cpu_clock_s) /Parent 4331 0 R /Prev 4334 0 R /Next 4336 0 R /A 903 0 R >> endobj 4336 0 obj << /Title (function::cpu_clock_us) /Parent 4331 0 R /Prev 4335 0 R /Next 4337 0 R /A 906 0 R >> endobj 4337 0 obj << /Title (function::delete_stopwatch) /Parent 4331 0 R /Prev 4336 0 R /Next 4338 0 R /A 909 0 R >> endobj 4338 0 obj << /Title (function::get_cycles) /Parent 4331 0 R /Prev 4337 0 R /Next 4339 0 R /A 912 0 R >> endobj 4339 0 obj << /Title (function::gettimeofday_ms) /Parent 4331 0 R /Prev 4338 0 R /Next 4340 0 R /A 915 0 R >> endobj 4340 0 obj << /Title (function::gettimeofday_ns) /Parent 4331 0 R /Prev 4339 0 R /Next 4341 0 R /A 918 0 R >> endobj 4341 0 obj << /Title (function::gettimeofday_s) /Parent 4331 0 R /Prev 4340 0 R /Next 4342 0 R /A 921 0 R >> endobj 4342 0 obj << /Title (function::gettimeofday_us) /Parent 4331 0 R /Prev 4341 0 R /Next 4343 0 R /A 924 0 R >> endobj 4343 0 obj << /Title (function::jiffies) /Parent 4331 0 R /Prev 4342 0 R /Next 4344 0 R /A 927 0 R >> endobj 4344 0 obj << /Title (function::local_clock_ms) /Parent 4331 0 R /Prev 4343 0 R /Next 4345 0 R /A 930 0 R >> endobj 4345 0 obj << /Title (function::local_clock_ns) /Parent 4331 0 R /Prev 4344 0 R /Next 4346 0 R /A 933 0 R >> endobj 4346 0 obj << /Title (function::local_clock_s) /Parent 4331 0 R /Prev 4345 0 R /Next 4347 0 R /A 936 0 R >> endobj 4347 0 obj << /Title (function::local_clock_us) /Parent 4331 0 R /Prev 4346 0 R /Next 4348 0 R /A 939 0 R >> endobj 4348 0 obj << /Title (function::read_stopwatch_ms) /Parent 4331 0 R /Prev 4347 0 R /Next 4349 0 R /A 942 0 R >> endobj 4349 0 obj << /Title (function::read_stopwatch_ns) /Parent 4331 0 R /Prev 4348 0 R /Next 4350 0 R /A 945 0 R >> endobj 4350 0 obj << /Title (function::read_stopwatch_s) /Parent 4331 0 R /Prev 4349 0 R /Next 4351 0 R /A 948 0 R >> endobj 4351 0 obj << /Title (function::read_stopwatch_us) /Parent 4331 0 R /Prev 4350 0 R /Next 4352 0 R /A 951 0 R >> endobj 4352 0 obj << /Title (function::start_stopwatch) /Parent 4331 0 R /Prev 4351 0 R /Next 4353 0 R /A 954 0 R >> endobj 4353 0 obj << /Title (function::stop_stopwatch) /Parent 4331 0 R /Prev 4352 0 R /A 957 0 R >> endobj 4354 0 obj << /Title /Parent 4198 0 R /Prev 4331 0 R /Next 4359 0 R /First 4355 0 R /Last 4358 0 R /Count -4 /A 960 0 R >> endobj 4355 0 obj << /Title (function::ctime) /Parent 4354 0 R /Next 4356 0 R /A 963 0 R >> endobj 4356 0 obj << /Title (function::tz_ctime) /Parent 4354 0 R /Prev 4355 0 R /Next 4357 0 R /A 966 0 R >> endobj 4357 0 obj << /Title (function::tz_gmtoff) /Parent 4354 0 R /Prev 4356 0 R /Next 4358 0 R /A 969 0 R >> endobj 4358 0 obj << /Title (function::tz_name) /Parent 4354 0 R /Prev 4357 0 R /A 972 0 R >> endobj 4359 0 obj << /Title /Parent 4198 0 R /Prev 4354 0 R /Next 4361 0 R /First 4360 0 R /Last 4360 0 R /Count -1 /A 975 0 R >> endobj 4360 0 obj << /Title (function::system) /Parent 4359 0 R /A 978 0 R >> endobj 4361 0 obj << /Title /Parent 4198 0 R /Prev 4359 0 R /Next 4387 0 R /First 4362 0 R /Last 4386 0 R /Count -25 /A 1146 0 R >> endobj 4362 0 obj << /Title (function::addr_to_node) /Parent 4361 0 R /Next 4363 0 R /A 1150 0 R >> endobj 4363 0 obj << /Title (function::bytes_to_string) /Parent 4361 0 R /Prev 4362 0 R /Next 4364 0 R /A 1153 0 R >> endobj 4364 0 obj << /Title (function::mem_page_size) /Parent 4361 0 R /Prev 4363 0 R /Next 4365 0 R /A 1156 0 R >> endobj 4365 0 obj << /Title (function::pages_to_string) /Parent 4361 0 R /Prev 4364 0 R /Next 4366 0 R /A 1159 0 R >> endobj 4366 0 obj << /Title (function::proc_mem_data) /Parent 4361 0 R /Prev 4365 0 R /Next 4367 0 R /A 1162 0 R >> endobj 4367 0 obj << /Title (function::proc_mem_rss) /Parent 4361 0 R /Prev 4366 0 R /Next 4368 0 R /A 1165 0 R >> endobj 4368 0 obj << /Title (function::proc_mem_shr) /Parent 4361 0 R /Prev 4367 0 R /Next 4369 0 R /A 1168 0 R >> endobj 4369 0 obj << /Title (function::proc_mem_size) /Parent 4361 0 R /Prev 4368 0 R /Next 4370 0 R /A 1171 0 R >> endobj 4370 0 obj << /Title (function::proc_mem_string) /Parent 4361 0 R /Prev 4369 0 R /Next 4371 0 R /A 1174 0 R >> endobj 4371 0 obj << /Title (function::proc_mem_txt) /Parent 4361 0 R /Prev 4370 0 R /Next 4372 0 R /A 1177 0 R >> endobj 4372 0 obj << /Title (function::vm_fault_contains) /Parent 4361 0 R /Prev 4371 0 R /Next 4373 0 R /A 1180 0 R >> endobj 4373 0 obj << /Title (probe::vm.brk) /Parent 4361 0 R /Prev 4372 0 R /Next 4374 0 R /A 1183 0 R >> endobj 4374 0 obj << /Title (probe::vm.kfree) /Parent 4361 0 R /Prev 4373 0 R /Next 4375 0 R /A 1186 0 R >> endobj 4375 0 obj << /Title (probe::vm.kmalloc) /Parent 4361 0 R /Prev 4374 0 R /Next 4376 0 R /A 1189 0 R >> endobj 4376 0 obj << /Title (probe::vm.kmalloc_node) /Parent 4361 0 R /Prev 4375 0 R /Next 4377 0 R /A 1192 0 R >> endobj 4377 0 obj << /Title (probe::vm.kmem_cache_alloc) /Parent 4361 0 R /Prev 4376 0 R /Next 4378 0 R /A 1195 0 R >> endobj 4378 0 obj << /Title (probe::vm.kmem_cache_alloc_node) /Parent 4361 0 R /Prev 4377 0 R /Next 4379 0 R /A 1198 0 R >> endobj 4379 0 obj << /Title (probe::vm.kmem_cache_free) /Parent 4361 0 R /Prev 4378 0 R /Next 4380 0 R /A 1201 0 R >> endobj 4380 0 obj << /Title (probe::vm.mmap) /Parent 4361 0 R /Prev 4379 0 R /Next 4381 0 R /A 1204 0 R >> endobj 4381 0 obj << /Title (probe::vm.munmap) /Parent 4361 0 R /Prev 4380 0 R /Next 4382 0 R /A 1207 0 R >> endobj 4382 0 obj << /Title (probe::vm.oom_kill) /Parent 4361 0 R /Prev 4381 0 R /Next 4383 0 R /A 1210 0 R >> endobj 4383 0 obj << /Title (probe::vm.pagefault) /Parent 4361 0 R /Prev 4382 0 R /Next 4384 0 R /A 1213 0 R >> endobj 4384 0 obj << /Title (probe::vm.pagefault.return) /Parent 4361 0 R /Prev 4383 0 R /Next 4385 0 R /A 1216 0 R >> endobj 4385 0 obj << /Title (probe::vm.write_shared) /Parent 4361 0 R /Prev 4384 0 R /Next 4386 0 R /A 1219 0 R >> endobj 4386 0 obj << /Title (probe::vm.write_shared_copy) /Parent 4361 0 R /Prev 4385 0 R /A 1222 0 R >> endobj 4387 0 obj << /Title /Parent 4198 0 R /Prev 4361 0 R /Next 4399 0 R /First 4388 0 R /Last 4398 0 R /Count -11 /A 1225 0 R >> endobj 4388 0 obj << /Title (function::cputime_to_msecs) /Parent 4387 0 R /Next 4389 0 R /A 1228 0 R >> endobj 4389 0 obj << /Title (function::cputime_to_string) /Parent 4387 0 R /Prev 4388 0 R /Next 4390 0 R /A 1231 0 R >> endobj 4390 0 obj << /Title (function::cputime_to_usecs) /Parent 4387 0 R /Prev 4389 0 R /Next 4391 0 R /A 1234 0 R >> endobj 4391 0 obj << /Title (function::msecs_to_string) /Parent 4387 0 R /Prev 4390 0 R /Next 4392 0 R /A 1237 0 R >> endobj 4392 0 obj << /Title (function::nsecs_to_string) /Parent 4387 0 R /Prev 4391 0 R /Next 4393 0 R /A 1240 0 R >> endobj 4393 0 obj << /Title (function::task_start_time) /Parent 4387 0 R /Prev 4392 0 R /Next 4394 0 R /A 1243 0 R >> endobj 4394 0 obj << /Title (function::task_stime) /Parent 4387 0 R /Prev 4393 0 R /Next 4395 0 R /A 1246 0 R >> endobj 4395 0 obj << /Title (function::task_time_string) /Parent 4387 0 R /Prev 4394 0 R /Next 4396 0 R /A 1249 0 R >> endobj 4396 0 obj << /Title (function::task_time_string_tid) /Parent 4387 0 R /Prev 4395 0 R /Next 4397 0 R /A 1252 0 R >> endobj 4397 0 obj << /Title (function::task_utime) /Parent 4387 0 R /Prev 4396 0 R /Next 4398 0 R /A 1255 0 R >> endobj 4398 0 obj << /Title (function::usecs_to_string) /Parent 4387 0 R /Prev 4397 0 R /A 1258 0 R >> endobj 4399 0 obj << /Title /Parent 4198 0 R /Prev 4387 0 R /Next 4416 0 R /First 4400 0 R /Last 4415 0 R /Count -16 /A 1261 0 R >> endobj 4400 0 obj << /Title (probe::scheduler.balance) /Parent 4399 0 R /Next 4401 0 R /A 1264 0 R >> endobj 4401 0 obj << /Title (probe::scheduler.cpu_off) /Parent 4399 0 R /Prev 4400 0 R /Next 4402 0 R /A 1267 0 R >> endobj 4402 0 obj << /Title (probe::scheduler.cpu_on) /Parent 4399 0 R /Prev 4401 0 R /Next 4403 0 R /A 1270 0 R >> endobj 4403 0 obj << /Title (probe::scheduler.ctxswitch) /Parent 4399 0 R /Prev 4402 0 R /Next 4404 0 R /A 1273 0 R >> endobj 4404 0 obj << /Title (probe::scheduler.kthread_stop) /Parent 4399 0 R /Prev 4403 0 R /Next 4405 0 R /A 1276 0 R >> endobj 4405 0 obj << /Title (probe::scheduler.kthread_stop.return) /Parent 4399 0 R /Prev 4404 0 R /Next 4406 0 R /A 1279 0 R >> endobj 4406 0 obj << /Title (probe::scheduler.migrate) /Parent 4399 0 R /Prev 4405 0 R /Next 4407 0 R /A 1282 0 R >> endobj 4407 0 obj << /Title (probe::scheduler.process_exit) /Parent 4399 0 R /Prev 4406 0 R /Next 4408 0 R /A 1285 0 R >> endobj 4408 0 obj << /Title (probe::scheduler.process_fork) /Parent 4399 0 R /Prev 4407 0 R /Next 4409 0 R /A 1288 0 R >> endobj 4409 0 obj << /Title (probe::scheduler.process_free) /Parent 4399 0 R /Prev 4408 0 R /Next 4410 0 R /A 1291 0 R >> endobj 4410 0 obj << /Title (probe::scheduler.process_wait) /Parent 4399 0 R /Prev 4409 0 R /Next 4411 0 R /A 1294 0 R >> endobj 4411 0 obj << /Title (probe::scheduler.signal_send) /Parent 4399 0 R /Prev 4410 0 R /Next 4412 0 R /A 1297 0 R >> endobj 4412 0 obj << /Title (probe::scheduler.tick) /Parent 4399 0 R /Prev 4411 0 R /Next 4413 0 R /A 1300 0 R >> endobj 4413 0 obj << /Title (probe::scheduler.wait_task) /Parent 4399 0 R /Prev 4412 0 R /Next 4414 0 R /A 1303 0 R >> endobj 4414 0 obj << /Title (probe::scheduler.wakeup) /Parent 4399 0 R /Prev 4413 0 R /Next 4415 0 R /A 1306 0 R >> endobj 4415 0 obj << /Title (probe::scheduler.wakeup_new) /Parent 4399 0 R /Prev 4414 0 R /A 1474 0 R >> endobj 4416 0 obj << /Title /Parent 4198 0 R /Prev 4399 0 R /Next 4435 0 R /First 4417 0 R /Last 4434 0 R /Count -18 /A 1478 0 R >> endobj 4417 0 obj << /Title (probe::ioblock.end) /Parent 4416 0 R /Next 4418 0 R /A 1481 0 R >> endobj 4418 0 obj << /Title (probe::ioblock.request) /Parent 4416 0 R /Prev 4417 0 R /Next 4419 0 R /A 1484 0 R >> endobj 4419 0 obj << /Title (probe::ioblock_trace.bounce) /Parent 4416 0 R /Prev 4418 0 R /Next 4420 0 R /A 1487 0 R >> endobj 4420 0 obj << /Title (probe::ioblock_trace.end) /Parent 4416 0 R /Prev 4419 0 R /Next 4421 0 R /A 1490 0 R >> endobj 4421 0 obj << /Title (probe::ioblock_trace.request) /Parent 4416 0 R /Prev 4420 0 R /Next 4422 0 R /A 1493 0 R >> endobj 4422 0 obj << /Title (probe::ioscheduler.elv_add_request) /Parent 4416 0 R /Prev 4421 0 R /Next 4423 0 R /A 1496 0 R >> endobj 4423 0 obj << /Title (probe::ioscheduler.elv_add_request.kp) /Parent 4416 0 R /Prev 4422 0 R /Next 4424 0 R /A 1499 0 R >> endobj 4424 0 obj << /Title (probe::ioscheduler.elv_add_request.tp) /Parent 4416 0 R /Prev 4423 0 R /Next 4425 0 R /A 1502 0 R >> endobj 4425 0 obj << /Title (probe::ioscheduler.elv_completed_request) /Parent 4416 0 R /Prev 4424 0 R /Next 4426 0 R /A 1505 0 R >> endobj 4426 0 obj << /Title (probe::ioscheduler.elv_next_request) /Parent 4416 0 R /Prev 4425 0 R /Next 4427 0 R /A 1508 0 R >> endobj 4427 0 obj << /Title (probe::ioscheduler.elv_next_request.return) /Parent 4416 0 R /Prev 4426 0 R /Next 4428 0 R /A 1511 0 R >> endobj 4428 0 obj << /Title (probe::ioscheduler_trace.elv_abort_request) /Parent 4416 0 R /Prev 4427 0 R /Next 4429 0 R /A 1514 0 R >> endobj 4429 0 obj << /Title (probe::ioscheduler_trace.elv_completed_request) /Parent 4416 0 R /Prev 4428 0 R /Next 4430 0 R /A 1517 0 R >> endobj 4430 0 obj << /Title (probe::ioscheduler_trace.elv_issue_request) /Parent 4416 0 R /Prev 4429 0 R /Next 4431 0 R /A 1520 0 R >> endobj 4431 0 obj << /Title (probe::ioscheduler_trace.elv_requeue_request) /Parent 4416 0 R /Prev 4430 0 R /Next 4432 0 R /A 1523 0 R >> endobj 4432 0 obj << /Title (probe::ioscheduler_trace.plug) /Parent 4416 0 R /Prev 4431 0 R /Next 4433 0 R /A 1526 0 R >> endobj 4433 0 obj << /Title (probe::ioscheduler_trace.unplug_io) /Parent 4416 0 R /Prev 4432 0 R /Next 4434 0 R /A 1529 0 R >> endobj 4434 0 obj << /Title (probe::ioscheduler_trace.unplug_timer) /Parent 4416 0 R /Prev 4433 0 R /A 1532 0 R >> endobj 4435 0 obj << /Title /Parent 4198 0 R /Prev 4416 0 R /Next 4442 0 R /First 4436 0 R /Last 4441 0 R /Count -6 /A 1535 0 R >> endobj 4436 0 obj << /Title (probe::scsi.iocompleted) /Parent 4435 0 R /Next 4437 0 R /A 1538 0 R >> endobj 4437 0 obj << /Title (probe::scsi.iodispatching) /Parent 4435 0 R /Prev 4436 0 R /Next 4438 0 R /A 1541 0 R >> endobj 4438 0 obj << /Title (probe::scsi.iodone) /Parent 4435 0 R /Prev 4437 0 R /Next 4439 0 R /A 1544 0 R >> endobj 4439 0 obj << /Title (probe::scsi.ioentry) /Parent 4435 0 R /Prev 4438 0 R /Next 4440 0 R /A 1547 0 R >> endobj 4440 0 obj << /Title (probe::scsi.ioexecute) /Parent 4435 0 R /Prev 4439 0 R /Next 4441 0 R /A 1550 0 R >> endobj 4441 0 obj << /Title (probe::scsi.set_state) /Parent 4435 0 R /Prev 4440 0 R /A 1553 0 R >> endobj 4442 0 obj << /Title /Parent 4198 0 R /Prev 4435 0 R /Next 4454 0 R /First 4443 0 R /Last 4453 0 R /Count -11 /A 1556 0 R >> endobj 4443 0 obj << /Title (probe::tty.init) /Parent 4442 0 R /Next 4444 0 R /A 1559 0 R >> endobj 4444 0 obj << /Title (probe::tty.ioctl) /Parent 4442 0 R /Prev 4443 0 R /Next 4445 0 R /A 1562 0 R >> endobj 4445 0 obj << /Title (probe::tty.open) /Parent 4442 0 R /Prev 4444 0 R /Next 4446 0 R /A 1565 0 R >> endobj 4446 0 obj << /Title (probe::tty.poll) /Parent 4442 0 R /Prev 4445 0 R /Next 4447 0 R /A 1568 0 R >> endobj 4447 0 obj << /Title (probe::tty.read) /Parent 4442 0 R /Prev 4446 0 R /Next 4448 0 R /A 1571 0 R >> endobj 4448 0 obj << /Title (probe::tty.receive) /Parent 4442 0 R /Prev 4447 0 R /Next 4449 0 R /A 1574 0 R >> endobj 4449 0 obj << /Title (probe::tty.register) /Parent 4442 0 R /Prev 4448 0 R /Next 4450 0 R /A 1577 0 R >> endobj 4450 0 obj << /Title (probe::tty.release) /Parent 4442 0 R /Prev 4449 0 R /Next 4451 0 R /A 1580 0 R >> endobj 4451 0 obj << /Title (probe::tty.resize) /Parent 4442 0 R /Prev 4450 0 R /Next 4452 0 R /A 1583 0 R >> endobj 4452 0 obj << /Title (probe::tty.unregister) /Parent 4442 0 R /Prev 4451 0 R /Next 4453 0 R /A 1586 0 R >> endobj 4453 0 obj << /Title (probe::tty.write) /Parent 4442 0 R /Prev 4452 0 R /A 1589 0 R >> endobj 4454 0 obj << /Title /Parent 4198 0 R /Prev 4442 0 R /Next 4463 0 R /First 4455 0 R /Last 4462 0 R /Count -8 /A 1592 0 R >> endobj 4455 0 obj << /Title (probe::irq_handler.entry) /Parent 4454 0 R /Next 4456 0 R /A 1595 0 R >> endobj 4456 0 obj << /Title (probe::irq_handler.exit) /Parent 4454 0 R /Prev 4455 0 R /Next 4457 0 R /A 1598 0 R >> endobj 4457 0 obj << /Title (probe::softirq.entry) /Parent 4454 0 R /Prev 4456 0 R /Next 4458 0 R /A 1601 0 R >> endobj 4458 0 obj << /Title (probe::softirq.exit) /Parent 4454 0 R /Prev 4457 0 R /Next 4459 0 R /A 1604 0 R >> endobj 4459 0 obj << /Title (probe::workqueue.create) /Parent 4454 0 R /Prev 4458 0 R /Next 4460 0 R /A 1607 0 R >> endobj 4460 0 obj << /Title (probe::workqueue.destroy) /Parent 4454 0 R /Prev 4459 0 R /Next 4461 0 R /A 1610 0 R >> endobj 4461 0 obj << /Title (probe::workqueue.execute) /Parent 4454 0 R /Prev 4460 0 R /Next 4462 0 R /A 1613 0 R >> endobj 4462 0 obj << /Title (probe::workqueue.insert) /Parent 4454 0 R /Prev 4461 0 R /A 1616 0 R >> endobj 4463 0 obj << /Title /Parent 4198 0 R /Prev 4454 0 R /Next 4532 0 R /First 4464 0 R /Last 4531 0 R /Count -68 /A 1619 0 R >> endobj 4464 0 obj << /Title (function::format_ipaddr) /Parent 4463 0 R /Next 4465 0 R /A 1622 0 R >> endobj 4465 0 obj << /Title (function::htonl) /Parent 4463 0 R /Prev 4464 0 R /Next 4466 0 R /A 1625 0 R >> endobj 4466 0 obj << /Title (function::htonll) /Parent 4463 0 R /Prev 4465 0 R /Next 4467 0 R /A 1628 0 R >> endobj 4467 0 obj << /Title (function::htons) /Parent 4463 0 R /Prev 4466 0 R /Next 4468 0 R /A 1631 0 R >> endobj 4468 0 obj << /Title (function::ip_ntop) /Parent 4463 0 R /Prev 4467 0 R /Next 4469 0 R /A 1634 0 R >> endobj 4469 0 obj << /Title (function::ntohl) /Parent 4463 0 R /Prev 4468 0 R /Next 4470 0 R /A 1832 0 R >> endobj 4470 0 obj << /Title (function::ntohll) /Parent 4463 0 R /Prev 4469 0 R /Next 4471 0 R /A 1836 0 R >> endobj 4471 0 obj << /Title (function::ntohs) /Parent 4463 0 R /Prev 4470 0 R /Next 4472 0 R /A 1839 0 R >> endobj 4472 0 obj << /Title (probe::netdev.change_mac) /Parent 4463 0 R /Prev 4471 0 R /Next 4473 0 R /A 1842 0 R >> endobj 4473 0 obj << /Title (probe::netdev.change_mtu) /Parent 4463 0 R /Prev 4472 0 R /Next 4474 0 R /A 1845 0 R >> endobj 4474 0 obj << /Title (probe::netdev.change_rx_flag) /Parent 4463 0 R /Prev 4473 0 R /Next 4475 0 R /A 1848 0 R >> endobj 4475 0 obj << /Title (probe::netdev.close) /Parent 4463 0 R /Prev 4474 0 R /Next 4476 0 R /A 1851 0 R >> endobj 4476 0 obj << /Title (probe::netdev.get_stats) /Parent 4463 0 R /Prev 4475 0 R /Next 4477 0 R /A 1854 0 R >> endobj 4477 0 obj << /Title (probe::netdev.hard_transmit) /Parent 4463 0 R /Prev 4476 0 R /Next 4478 0 R /A 1857 0 R >> endobj 4478 0 obj << /Title (probe::netdev.ioctl) /Parent 4463 0 R /Prev 4477 0 R /Next 4479 0 R /A 1860 0 R >> endobj 4479 0 obj << /Title (probe::netdev.open) /Parent 4463 0 R /Prev 4478 0 R /Next 4480 0 R /A 1863 0 R >> endobj 4480 0 obj << /Title (probe::netdev.receive) /Parent 4463 0 R /Prev 4479 0 R /Next 4481 0 R /A 1866 0 R >> endobj 4481 0 obj << /Title (probe::netdev.register) /Parent 4463 0 R /Prev 4480 0 R /Next 4482 0 R /A 1869 0 R >> endobj 4482 0 obj << /Title (probe::netdev.rx) /Parent 4463 0 R /Prev 4481 0 R /Next 4483 0 R /A 1872 0 R >> endobj 4483 0 obj << /Title (probe::netdev.set_promiscuity) /Parent 4463 0 R /Prev 4482 0 R /Next 4484 0 R /A 1875 0 R >> endobj 4484 0 obj << /Title (probe::netdev.transmit) /Parent 4463 0 R /Prev 4483 0 R /Next 4485 0 R /A 1878 0 R >> endobj 4485 0 obj << /Title (probe::netdev.unregister) /Parent 4463 0 R /Prev 4484 0 R /Next 4486 0 R /A 1881 0 R >> endobj 4486 0 obj << /Title (probe::netfilter.arp.forward) /Parent 4463 0 R /Prev 4485 0 R /Next 4487 0 R /A 1884 0 R >> endobj 4487 0 obj << /Title (probe::netfilter.arp.in) /Parent 4463 0 R /Prev 4486 0 R /Next 4488 0 R /A 1887 0 R >> endobj 4488 0 obj << /Title (probe::netfilter.arp.out) /Parent 4463 0 R /Prev 4487 0 R /Next 4489 0 R /A 1890 0 R >> endobj 4489 0 obj << /Title (probe::netfilter.bridge.forward) /Parent 4463 0 R /Prev 4488 0 R /Next 4490 0 R /A 1893 0 R >> endobj 4490 0 obj << /Title (probe::netfilter.bridge.local_in) /Parent 4463 0 R /Prev 4489 0 R /Next 4491 0 R /A 1896 0 R >> endobj 4491 0 obj << /Title (probe::netfilter.bridge.local_out) /Parent 4463 0 R /Prev 4490 0 R /Next 4492 0 R /A 1899 0 R >> endobj 4492 0 obj << /Title (probe::netfilter.bridge.post_routing) /Parent 4463 0 R /Prev 4491 0 R /Next 4493 0 R /A 1902 0 R >> endobj 4493 0 obj << /Title (probe::netfilter.bridge.pre_routing) /Parent 4463 0 R /Prev 4492 0 R /Next 4494 0 R /A 1905 0 R >> endobj 4494 0 obj << /Title (probe::netfilter.ip.forward) /Parent 4463 0 R /Prev 4493 0 R /Next 4495 0 R /A 1908 0 R >> endobj 4495 0 obj << /Title (probe::netfilter.ip.local_in) /Parent 4463 0 R /Prev 4494 0 R /Next 4496 0 R /A 1911 0 R >> endobj 4496 0 obj << /Title (probe::netfilter.ip.local_out) /Parent 4463 0 R /Prev 4495 0 R /Next 4497 0 R /A 1914 0 R >> endobj 4497 0 obj << /Title (probe::netfilter.ip.post_routing) /Parent 4463 0 R /Prev 4496 0 R /Next 4498 0 R /A 1917 0 R >> endobj 4498 0 obj << /Title (probe::netfilter.ip.pre_routing) /Parent 4463 0 R /Prev 4497 0 R /Next 4499 0 R /A 1920 0 R >> endobj 4499 0 obj << /Title (probe::sunrpc.clnt.bind_new_program) /Parent 4463 0 R /Prev 4498 0 R /Next 4500 0 R /A 1923 0 R >> endobj 4500 0 obj << /Title (probe::sunrpc.clnt.call_async) /Parent 4463 0 R /Prev 4499 0 R /Next 4501 0 R /A 1926 0 R >> endobj 4501 0 obj << /Title (probe::sunrpc.clnt.call_sync) /Parent 4463 0 R /Prev 4500 0 R /Next 4502 0 R /A 1929 0 R >> endobj 4502 0 obj << /Title (probe::sunrpc.clnt.clone_client) /Parent 4463 0 R /Prev 4501 0 R /Next 4503 0 R /A 1932 0 R >> endobj 4503 0 obj << /Title (probe::sunrpc.clnt.create_client) /Parent 4463 0 R /Prev 4502 0 R /Next 4504 0 R /A 1935 0 R >> endobj 4504 0 obj << /Title (probe::sunrpc.clnt.restart_call) /Parent 4463 0 R /Prev 4503 0 R /Next 4505 0 R /A 1938 0 R >> endobj 4505 0 obj << /Title (probe::sunrpc.clnt.shutdown_client) /Parent 4463 0 R /Prev 4504 0 R /Next 4506 0 R /A 1941 0 R >> endobj 4506 0 obj << /Title (probe::sunrpc.sched.delay) /Parent 4463 0 R /Prev 4505 0 R /Next 4507 0 R /A 1944 0 R >> endobj 4507 0 obj << /Title (probe::sunrpc.sched.execute) /Parent 4463 0 R /Prev 4506 0 R /Next 4508 0 R /A 1947 0 R >> endobj 4508 0 obj << /Title (probe::sunrpc.sched.new_task) /Parent 4463 0 R /Prev 4507 0 R /Next 4509 0 R /A 1950 0 R >> endobj 4509 0 obj << /Title (probe::sunrpc.sched.release_task) /Parent 4463 0 R /Prev 4508 0 R /Next 4510 0 R /A 1953 0 R >> endobj 4510 0 obj << /Title (probe::sunrpc.svc.create) /Parent 4463 0 R /Prev 4509 0 R /Next 4511 0 R /A 1956 0 R >> endobj 4511 0 obj << /Title (probe::sunrpc.svc.destroy) /Parent 4463 0 R /Prev 4510 0 R /Next 4512 0 R /A 1959 0 R >> endobj 4512 0 obj << /Title (probe::sunrpc.svc.drop) /Parent 4463 0 R /Prev 4511 0 R /Next 4513 0 R /A 1962 0 R >> endobj 4513 0 obj << /Title (probe::sunrpc.svc.process) /Parent 4463 0 R /Prev 4512 0 R /Next 4514 0 R /A 1965 0 R >> endobj 4514 0 obj << /Title (probe::sunrpc.svc.recv) /Parent 4463 0 R /Prev 4513 0 R /Next 4515 0 R /A 1968 0 R >> endobj 4515 0 obj << /Title (probe::sunrpc.svc.register) /Parent 4463 0 R /Prev 4514 0 R /Next 4516 0 R /A 1971 0 R >> endobj 4516 0 obj << /Title (probe::sunrpc.svc.send) /Parent 4463 0 R /Prev 4515 0 R /Next 4517 0 R /A 1974 0 R >> endobj 4517 0 obj << /Title (probe::tcp.disconnect) /Parent 4463 0 R /Prev 4516 0 R /Next 4518 0 R /A 1977 0 R >> endobj 4518 0 obj << /Title (probe::tcp.disconnect.return) /Parent 4463 0 R /Prev 4517 0 R /Next 4519 0 R /A 1980 0 R >> endobj 4519 0 obj << /Title (probe::tcp.receive) /Parent 4463 0 R /Prev 4518 0 R /Next 4520 0 R /A 1983 0 R >> endobj 4520 0 obj << /Title (probe::tcp.recvmsg) /Parent 4463 0 R /Prev 4519 0 R /Next 4521 0 R /A 1986 0 R >> endobj 4521 0 obj << /Title (probe::tcp.recvmsg.return) /Parent 4463 0 R /Prev 4520 0 R /Next 4522 0 R /A 1989 0 R >> endobj 4522 0 obj << /Title (probe::tcp.sendmsg) /Parent 4463 0 R /Prev 4521 0 R /Next 4523 0 R /A 1992 0 R >> endobj 4523 0 obj << /Title (probe::tcp.sendmsg.return) /Parent 4463 0 R /Prev 4522 0 R /Next 4524 0 R /A 2160 0 R >> endobj 4524 0 obj << /Title (probe::tcp.setsockopt) /Parent 4463 0 R /Prev 4523 0 R /Next 4525 0 R /A 2164 0 R >> endobj 4525 0 obj << /Title (probe::tcp.setsockopt.return) /Parent 4463 0 R /Prev 4524 0 R /Next 4526 0 R /A 2167 0 R >> endobj 4526 0 obj << /Title (probe::udp.disconnect) /Parent 4463 0 R /Prev 4525 0 R /Next 4527 0 R /A 2170 0 R >> endobj 4527 0 obj << /Title (probe::udp.disconnect.return) /Parent 4463 0 R /Prev 4526 0 R /Next 4528 0 R /A 2173 0 R >> endobj 4528 0 obj << /Title (probe::udp.recvmsg) /Parent 4463 0 R /Prev 4527 0 R /Next 4529 0 R /A 2176 0 R >> endobj 4529 0 obj << /Title (probe::udp.recvmsg.return) /Parent 4463 0 R /Prev 4528 0 R /Next 4530 0 R /A 2179 0 R >> endobj 4530 0 obj << /Title (probe::udp.sendmsg) /Parent 4463 0 R /Prev 4529 0 R /Next 4531 0 R /A 2182 0 R >> endobj 4531 0 obj << /Title (probe::udp.sendmsg.return) /Parent 4463 0 R /Prev 4530 0 R /A 2185 0 R >> endobj 4532 0 obj << /Title /Parent 4198 0 R /Prev 4463 0 R /Next 4563 0 R /First 4533 0 R /Last 4562 0 R /Count -30 /A 2188 0 R >> endobj 4533 0 obj << /Title (function::inet_get_ip_source) /Parent 4532 0 R /Next 4534 0 R /A 2191 0 R >> endobj 4534 0 obj << /Title (function::inet_get_local_port) /Parent 4532 0 R /Prev 4533 0 R /Next 4535 0 R /A 2194 0 R >> endobj 4535 0 obj << /Title (function::sock_fam_num2str) /Parent 4532 0 R /Prev 4534 0 R /Next 4536 0 R /A 2197 0 R >> endobj 4536 0 obj << /Title (function::sock_fam_str2num) /Parent 4532 0 R /Prev 4535 0 R /Next 4537 0 R /A 2200 0 R >> endobj 4537 0 obj << /Title (function::sock_prot_num2str) /Parent 4532 0 R /Prev 4536 0 R /Next 4538 0 R /A 2203 0 R >> endobj 4538 0 obj << /Title (function::sock_prot_str2num) /Parent 4532 0 R /Prev 4537 0 R /Next 4539 0 R /A 2206 0 R >> endobj 4539 0 obj << /Title (function::sock_state_num2str) /Parent 4532 0 R /Prev 4538 0 R /Next 4540 0 R /A 2209 0 R >> endobj 4540 0 obj << /Title (function::sock_state_str2num) /Parent 4532 0 R /Prev 4539 0 R /Next 4541 0 R /A 2212 0 R >> endobj 4541 0 obj << /Title (probe::socket.aio_read) /Parent 4532 0 R /Prev 4540 0 R /Next 4542 0 R /A 2215 0 R >> endobj 4542 0 obj << /Title (probe::socket.aio_read.return) /Parent 4532 0 R /Prev 4541 0 R /Next 4543 0 R /A 2218 0 R >> endobj 4543 0 obj << /Title (probe::socket.aio_write) /Parent 4532 0 R /Prev 4542 0 R /Next 4544 0 R /A 2221 0 R >> endobj 4544 0 obj << /Title (probe::socket.aio_write.return) /Parent 4532 0 R /Prev 4543 0 R /Next 4545 0 R /A 2224 0 R >> endobj 4545 0 obj << /Title (probe::socket.close) /Parent 4532 0 R /Prev 4544 0 R /Next 4546 0 R /A 2227 0 R >> endobj 4546 0 obj << /Title (probe::socket.close.return) /Parent 4532 0 R /Prev 4545 0 R /Next 4547 0 R /A 2230 0 R >> endobj 4547 0 obj << /Title (probe::socket.create) /Parent 4532 0 R /Prev 4546 0 R /Next 4548 0 R /A 2233 0 R >> endobj 4548 0 obj << /Title (probe::socket.create.return) /Parent 4532 0 R /Prev 4547 0 R /Next 4549 0 R /A 2236 0 R >> endobj 4549 0 obj << /Title (probe::socket.read_iter) /Parent 4532 0 R /Prev 4548 0 R /Next 4550 0 R /A 2239 0 R >> endobj 4550 0 obj << /Title (probe::socket.read_iter.return) /Parent 4532 0 R /Prev 4549 0 R /Next 4551 0 R /A 2242 0 R >> endobj 4551 0 obj << /Title (probe::socket.readv) /Parent 4532 0 R /Prev 4550 0 R /Next 4552 0 R /A 2245 0 R >> endobj 4552 0 obj << /Title (probe::socket.readv.return) /Parent 4532 0 R /Prev 4551 0 R /Next 4553 0 R /A 2248 0 R >> endobj 4553 0 obj << /Title (probe::socket.receive) /Parent 4532 0 R /Prev 4552 0 R /Next 4554 0 R /A 2251 0 R >> endobj 4554 0 obj << /Title (probe::socket.recvmsg) /Parent 4532 0 R /Prev 4553 0 R /Next 4555 0 R /A 2254 0 R >> endobj 4555 0 obj << /Title (probe::socket.recvmsg.return) /Parent 4532 0 R /Prev 4554 0 R /Next 4556 0 R /A 2257 0 R >> endobj 4556 0 obj << /Title (probe::socket.send) /Parent 4532 0 R /Prev 4555 0 R /Next 4557 0 R /A 2260 0 R >> endobj 4557 0 obj << /Title (probe::socket.sendmsg) /Parent 4532 0 R /Prev 4556 0 R /Next 4558 0 R /A 2263 0 R >> endobj 4558 0 obj << /Title (probe::socket.sendmsg.return) /Parent 4532 0 R /Prev 4557 0 R /Next 4559 0 R /A 2266 0 R >> endobj 4559 0 obj << /Title (probe::socket.write_iter) /Parent 4532 0 R /Prev 4558 0 R /Next 4560 0 R /A 2269 0 R >> endobj 4560 0 obj << /Title (probe::socket.write_iter.return) /Parent 4532 0 R /Prev 4559 0 R /Next 4561 0 R /A 2272 0 R >> endobj 4561 0 obj << /Title (probe::socket.writev) /Parent 4532 0 R /Prev 4560 0 R /Next 4562 0 R /A 2275 0 R >> endobj 4562 0 obj << /Title (probe::socket.writev.return) /Parent 4532 0 R /Prev 4561 0 R /A 2278 0 R >> endobj 4563 0 obj << /Title /Parent 4198 0 R /Prev 4532 0 R /Next 4601 0 R /First 4564 0 R /Last 4600 0 R /Count -37 /A 2281 0 R >> endobj 4564 0 obj << /Title (function::ipmib_filter_key) /Parent 4563 0 R /Next 4565 0 R /A 2284 0 R >> endobj 4565 0 obj << /Title (function::ipmib_get_proto) /Parent 4563 0 R /Prev 4564 0 R /Next 4566 0 R /A 2287 0 R >> endobj 4566 0 obj << /Title (function::ipmib_local_addr) /Parent 4563 0 R /Prev 4565 0 R /Next 4567 0 R /A 2290 0 R >> endobj 4567 0 obj << /Title (function::ipmib_remote_addr) /Parent 4563 0 R /Prev 4566 0 R /Next 4568 0 R /A 2293 0 R >> endobj 4568 0 obj << /Title (function::ipmib_tcp_local_port) /Parent 4563 0 R /Prev 4567 0 R /Next 4569 0 R /A 2296 0 R >> endobj 4569 0 obj << /Title (function::ipmib_tcp_remote_port) /Parent 4563 0 R /Prev 4568 0 R /Next 4570 0 R /A 2299 0 R >> endobj 4570 0 obj << /Title (function::linuxmib_filter_key) /Parent 4563 0 R /Prev 4569 0 R /Next 4571 0 R /A 2302 0 R >> endobj 4571 0 obj << /Title (function::tcpmib_filter_key) /Parent 4563 0 R /Prev 4570 0 R /Next 4572 0 R /A 2305 0 R >> endobj 4572 0 obj << /Title (function::tcpmib_get_state) /Parent 4563 0 R /Prev 4571 0 R /Next 4573 0 R /A 2308 0 R >> endobj 4573 0 obj << /Title (function::tcpmib_local_addr) /Parent 4563 0 R /Prev 4572 0 R /Next 4574 0 R /A 2311 0 R >> endobj 4574 0 obj << /Title (function::tcpmib_local_port) /Parent 4563 0 R /Prev 4573 0 R /Next 4575 0 R /A 2314 0 R >> endobj 4575 0 obj << /Title (function::tcpmib_remote_addr) /Parent 4563 0 R /Prev 4574 0 R /Next 4576 0 R /A 2317 0 R >> endobj 4576 0 obj << /Title (function::tcpmib_remote_port) /Parent 4563 0 R /Prev 4575 0 R /Next 4577 0 R /A 2320 0 R >> endobj 4577 0 obj << /Title (probe::ipmib.ForwDatagrams) /Parent 4563 0 R /Prev 4576 0 R /Next 4578 0 R /A 2488 0 R >> endobj 4578 0 obj << /Title (probe::ipmib.FragFails) /Parent 4563 0 R /Prev 4577 0 R /Next 4579 0 R /A 2492 0 R >> endobj 4579 0 obj << /Title (probe::ipmib.FragOKs) /Parent 4563 0 R /Prev 4578 0 R /Next 4580 0 R /A 2495 0 R >> endobj 4580 0 obj << /Title (probe::ipmib.InAddrErrors) /Parent 4563 0 R /Prev 4579 0 R /Next 4581 0 R /A 2498 0 R >> endobj 4581 0 obj << /Title (probe::ipmib.InDiscards) /Parent 4563 0 R /Prev 4580 0 R /Next 4582 0 R /A 2501 0 R >> endobj 4582 0 obj << /Title (probe::ipmib.InNoRoutes) /Parent 4563 0 R /Prev 4581 0 R /Next 4583 0 R /A 2504 0 R >> endobj 4583 0 obj << /Title (probe::ipmib.InReceives) /Parent 4563 0 R /Prev 4582 0 R /Next 4584 0 R /A 2507 0 R >> endobj 4584 0 obj << /Title (probe::ipmib.InUnknownProtos) /Parent 4563 0 R /Prev 4583 0 R /Next 4585 0 R /A 2510 0 R >> endobj 4585 0 obj << /Title (probe::ipmib.OutRequests) /Parent 4563 0 R /Prev 4584 0 R /Next 4586 0 R /A 2513 0 R >> endobj 4586 0 obj << /Title (probe::ipmib.ReasmReqds) /Parent 4563 0 R /Prev 4585 0 R /Next 4587 0 R /A 2516 0 R >> endobj 4587 0 obj << /Title (probe::ipmib.ReasmTimeout) /Parent 4563 0 R /Prev 4586 0 R /Next 4588 0 R /A 2519 0 R >> endobj 4588 0 obj << /Title (probe::linuxmib.DelayedACKs) /Parent 4563 0 R /Prev 4587 0 R /Next 4589 0 R /A 2522 0 R >> endobj 4589 0 obj << /Title (probe::linuxmib.ListenDrops) /Parent 4563 0 R /Prev 4588 0 R /Next 4590 0 R /A 2525 0 R >> endobj 4590 0 obj << /Title (probe::linuxmib.ListenOverflows) /Parent 4563 0 R /Prev 4589 0 R /Next 4591 0 R /A 2528 0 R >> endobj 4591 0 obj << /Title (probe::linuxmib.TCPMemoryPressures) /Parent 4563 0 R /Prev 4590 0 R /Next 4592 0 R /A 2531 0 R >> endobj 4592 0 obj << /Title (probe::tcpmib.ActiveOpens) /Parent 4563 0 R /Prev 4591 0 R /Next 4593 0 R /A 2534 0 R >> endobj 4593 0 obj << /Title (probe::tcpmib.AttemptFails) /Parent 4563 0 R /Prev 4592 0 R /Next 4594 0 R /A 2537 0 R >> endobj 4594 0 obj << /Title (probe::tcpmib.CurrEstab) /Parent 4563 0 R /Prev 4593 0 R /Next 4595 0 R /A 2540 0 R >> endobj 4595 0 obj << /Title (probe::tcpmib.EstabResets) /Parent 4563 0 R /Prev 4594 0 R /Next 4596 0 R /A 2543 0 R >> endobj 4596 0 obj << /Title (probe::tcpmib.InSegs) /Parent 4563 0 R /Prev 4595 0 R /Next 4597 0 R /A 2546 0 R >> endobj 4597 0 obj << /Title (probe::tcpmib.OutRsts) /Parent 4563 0 R /Prev 4596 0 R /Next 4598 0 R /A 2549 0 R >> endobj 4598 0 obj << /Title (probe::tcpmib.OutSegs) /Parent 4563 0 R /Prev 4597 0 R /Next 4599 0 R /A 2552 0 R >> endobj 4599 0 obj << /Title (probe::tcpmib.PassiveOpens) /Parent 4563 0 R /Prev 4598 0 R /Next 4600 0 R /A 2555 0 R >> endobj 4600 0 obj << /Title (probe::tcpmib.RetransSegs) /Parent 4563 0 R /Prev 4599 0 R /A 2558 0 R >> endobj 4601 0 obj << /Title /Parent 4198 0 R /Prev 4563 0 R /Next 4612 0 R /First 4602 0 R /Last 4611 0 R /Count -10 /A 2561 0 R >> endobj 4602 0 obj << /Title (function::get_loadavg_index) /Parent 4601 0 R /Next 4603 0 R /A 2564 0 R >> endobj 4603 0 obj << /Title (function::sprint_loadavg) /Parent 4601 0 R /Prev 4602 0 R /Next 4604 0 R /A 2567 0 R >> endobj 4604 0 obj << /Title (function::target_set_pid) /Parent 4601 0 R /Prev 4603 0 R /Next 4605 0 R /A 2570 0 R >> endobj 4605 0 obj << /Title (function::target_set_report) /Parent 4601 0 R /Prev 4604 0 R /Next 4606 0 R /A 2573 0 R >> endobj 4606 0 obj << /Title (probe::kprocess.create) /Parent 4601 0 R /Prev 4605 0 R /Next 4607 0 R /A 2576 0 R >> endobj 4607 0 obj << /Title (probe::kprocess.exec) /Parent 4601 0 R /Prev 4606 0 R /Next 4608 0 R /A 2579 0 R >> endobj 4608 0 obj << /Title (probe::kprocess.exec_complete) /Parent 4601 0 R /Prev 4607 0 R /Next 4609 0 R /A 2582 0 R >> endobj 4609 0 obj << /Title (probe::kprocess.exit) /Parent 4601 0 R /Prev 4608 0 R /Next 4610 0 R /A 2585 0 R >> endobj 4610 0 obj << /Title (probe::kprocess.release) /Parent 4601 0 R /Prev 4609 0 R /Next 4611 0 R /A 2588 0 R >> endobj 4611 0 obj << /Title (probe::kprocess.start) /Parent 4601 0 R /Prev 4610 0 R /A 2591 0 R >> endobj 4612 0 obj << /Title /Parent 4198 0 R /Prev 4601 0 R /Next 4646 0 R /First 4613 0 R /Last 4645 0 R /Count -33 /A 2594 0 R >> endobj 4613 0 obj << /Title (function::get_sa_flags) /Parent 4612 0 R /Next 4614 0 R /A 2597 0 R >> endobj 4614 0 obj << /Title (function::get_sa_handler) /Parent 4612 0 R /Prev 4613 0 R /Next 4615 0 R /A 2600 0 R >> endobj 4615 0 obj << /Title (function::is_sig_blocked) /Parent 4612 0 R /Prev 4614 0 R /Next 4616 0 R /A 2603 0 R >> endobj 4616 0 obj << /Title (function::sa_flags_str) /Parent 4612 0 R /Prev 4615 0 R /Next 4617 0 R /A 2606 0 R >> endobj 4617 0 obj << /Title (function::sa_handler_str) /Parent 4612 0 R /Prev 4616 0 R /Next 4618 0 R /A 2609 0 R >> endobj 4618 0 obj << /Title (function::signal_str) /Parent 4612 0 R /Prev 4617 0 R /Next 4619 0 R /A 2612 0 R >> endobj 4619 0 obj << /Title (function::sigset_mask_str) /Parent 4612 0 R /Prev 4618 0 R /Next 4620 0 R /A 2615 0 R >> endobj 4620 0 obj << /Title (probe::signal.check_ignored) /Parent 4612 0 R /Prev 4619 0 R /Next 4621 0 R /A 2618 0 R >> endobj 4621 0 obj << /Title (probe::signal.check_ignored.return) /Parent 4612 0 R /Prev 4620 0 R /Next 4622 0 R /A 2621 0 R >> endobj 4622 0 obj << /Title (probe::signal.checkperm) /Parent 4612 0 R /Prev 4621 0 R /Next 4623 0 R /A 2624 0 R >> endobj 4623 0 obj << /Title (probe::signal.checkperm.return) /Parent 4612 0 R /Prev 4622 0 R /Next 4624 0 R /A 2627 0 R >> endobj 4624 0 obj << /Title (probe::signal.do_action) /Parent 4612 0 R /Prev 4623 0 R /Next 4625 0 R /A 2630 0 R >> endobj 4625 0 obj << /Title (probe::signal.do_action.return) /Parent 4612 0 R /Prev 4624 0 R /Next 4626 0 R /A 2633 0 R >> endobj 4626 0 obj << /Title (probe::signal.flush) /Parent 4612 0 R /Prev 4625 0 R /Next 4627 0 R /A 2636 0 R >> endobj 4627 0 obj << /Title (probe::signal.force_segv) /Parent 4612 0 R /Prev 4626 0 R /Next 4628 0 R /A 2639 0 R >> endobj 4628 0 obj << /Title (probe::signal.force_segv.return) /Parent 4612 0 R /Prev 4627 0 R /Next 4629 0 R /A 2642 0 R >> endobj 4629 0 obj << /Title (probe::signal.handle) /Parent 4612 0 R /Prev 4628 0 R /Next 4630 0 R /A 2645 0 R >> endobj 4630 0 obj << /Title (probe::signal.handle.return) /Parent 4612 0 R /Prev 4629 0 R /Next 4631 0 R /A 2648 0 R >> endobj 4631 0 obj << /Title (probe::signal.pending) /Parent 4612 0 R /Prev 4630 0 R /Next 4632 0 R /A 2816 0 R >> endobj 4632 0 obj << /Title (probe::signal.pending.return) /Parent 4612 0 R /Prev 4631 0 R /Next 4633 0 R /A 2820 0 R >> endobj 4633 0 obj << /Title (probe::signal.procmask) /Parent 4612 0 R /Prev 4632 0 R /Next 4634 0 R /A 2823 0 R >> endobj 4634 0 obj << /Title (probe::signal.procmask.return) /Parent 4612 0 R /Prev 4633 0 R /Next 4635 0 R /A 2826 0 R >> endobj 4635 0 obj << /Title (probe::signal.send) /Parent 4612 0 R /Prev 4634 0 R /Next 4636 0 R /A 2829 0 R >> endobj 4636 0 obj << /Title (probe::signal.send.return) /Parent 4612 0 R /Prev 4635 0 R /Next 4637 0 R /A 2832 0 R >> endobj 4637 0 obj << /Title (probe::signal.send_sig_queue) /Parent 4612 0 R /Prev 4636 0 R /Next 4638 0 R /A 2835 0 R >> endobj 4638 0 obj << /Title (probe::signal.send_sig_queue.return) /Parent 4612 0 R /Prev 4637 0 R /Next 4639 0 R /A 2838 0 R >> endobj 4639 0 obj << /Title (probe::signal.sys_tgkill) /Parent 4612 0 R /Prev 4638 0 R /Next 4640 0 R /A 2841 0 R >> endobj 4640 0 obj << /Title (probe::signal.sys_tgkill.return) /Parent 4612 0 R /Prev 4639 0 R /Next 4641 0 R /A 2844 0 R >> endobj 4641 0 obj << /Title (probe::signal.sys_tkill) /Parent 4612 0 R /Prev 4640 0 R /Next 4642 0 R /A 2847 0 R >> endobj 4642 0 obj << /Title (probe::signal.syskill) /Parent 4612 0 R /Prev 4641 0 R /Next 4643 0 R /A 2850 0 R >> endobj 4643 0 obj << /Title (probe::signal.syskill.return) /Parent 4612 0 R /Prev 4642 0 R /Next 4644 0 R /A 2853 0 R >> endobj 4644 0 obj << /Title (probe::signal.systkill.return) /Parent 4612 0 R /Prev 4643 0 R /Next 4645 0 R /A 2856 0 R >> endobj 4645 0 obj << /Title (probe::signal.wakeup) /Parent 4612 0 R /Prev 4644 0 R /A 2859 0 R >> endobj 4646 0 obj << /Title /Parent 4198 0 R /Prev 4612 0 R /Next 4651 0 R /First 4647 0 R /Last 4650 0 R /Count -4 /A 2862 0 R >> endobj 4647 0 obj << /Title (function::errno_str) /Parent 4646 0 R /Next 4648 0 R /A 2865 0 R >> endobj 4648 0 obj << /Title (function::return_str) /Parent 4646 0 R /Prev 4647 0 R /Next 4649 0 R /A 2868 0 R >> endobj 4649 0 obj << /Title (function::returnstr) /Parent 4646 0 R /Prev 4648 0 R /Next 4650 0 R /A 2871 0 R >> endobj 4650 0 obj << /Title (function::returnval) /Parent 4646 0 R /Prev 4649 0 R /A 2874 0 R >> endobj 4651 0 obj << /Title /Parent 4198 0 R /Prev 4646 0 R /Next 4653 0 R /First 4652 0 R /Last 4652 0 R /Count -1 /A 2877 0 R >> endobj 4652 0 obj << /Title (function::rlimit_from_str) /Parent 4651 0 R /A 2880 0 R >> endobj 4653 0 obj << /Title /Parent 4198 0 R /Prev 4651 0 R /Next 4658 0 R /First 4654 0 R /Last 4657 0 R /Count -4 /A 2883 0 R >> endobj 4654 0 obj << /Title (function::MAJOR) /Parent 4653 0 R /Next 4655 0 R /A 2886 0 R >> endobj 4655 0 obj << /Title (function::MINOR) /Parent 4653 0 R /Prev 4654 0 R /Next 4656 0 R /A 2889 0 R >> endobj 4656 0 obj << /Title (function::MKDEV) /Parent 4653 0 R /Prev 4655 0 R /Next 4657 0 R /A 2892 0 R >> endobj 4657 0 obj << /Title (function::usrdev2kerndev) /Parent 4653 0 R /Prev 4656 0 R /A 2895 0 R >> endobj 4658 0 obj << /Title /Parent 4198 0 R /Prev 4653 0 R /Next 4669 0 R /First 4659 0 R /Last 4668 0 R /Count -10 /A 2898 0 R >> endobj 4659 0 obj << /Title (function::d_name) /Parent 4658 0 R /Next 4660 0 R /A 2901 0 R >> endobj 4660 0 obj << /Title (function::d_path) /Parent 4658 0 R /Prev 4659 0 R /Next 4661 0 R /A 2904 0 R >> endobj 4661 0 obj << /Title (function::fullpath_struct_file) /Parent 4658 0 R /Prev 4660 0 R /Next 4662 0 R /A 2907 0 R >> endobj 4662 0 obj << /Title (function::fullpath_struct_nameidata) /Parent 4658 0 R /Prev 4661 0 R /Next 4663 0 R /A 2910 0 R >> endobj 4663 0 obj << /Title (function::fullpath_struct_path) /Parent 4658 0 R /Prev 4662 0 R /Next 4664 0 R /A 2913 0 R >> endobj 4664 0 obj << /Title (function::inode_name) /Parent 4658 0 R /Prev 4663 0 R /Next 4665 0 R /A 2916 0 R >> endobj 4665 0 obj << /Title (function::inode_path) /Parent 4658 0 R /Prev 4664 0 R /Next 4666 0 R /A 2919 0 R >> endobj 4666 0 obj << /Title (function::real_mount) /Parent 4658 0 R /Prev 4665 0 R /Next 4667 0 R /A 2922 0 R >> endobj 4667 0 obj << /Title (function::reverse_path_walk) /Parent 4658 0 R /Prev 4666 0 R /Next 4668 0 R /A 2925 0 R >> endobj 4668 0 obj << /Title (function::task_dentry_path) /Parent 4658 0 R /Prev 4667 0 R /A 2928 0 R >> endobj 4669 0 obj << /Title /Parent 4198 0 R /Prev 4658 0 R /Next 4677 0 R /First 4670 0 R /Last 4676 0 R /Count -7 /A 2931 0 R >> endobj 4670 0 obj << /Title (function::assert) /Parent 4669 0 R /Next 4671 0 R /A 2934 0 R >> endobj 4671 0 obj << /Title (function::error) /Parent 4669 0 R /Prev 4670 0 R /Next 4672 0 R /A 2937 0 R >> endobj 4672 0 obj << /Title (function::exit) /Parent 4669 0 R /Prev 4671 0 R /Next 4673 0 R /A 2940 0 R >> endobj 4673 0 obj << /Title (function::ftrace) /Parent 4669 0 R /Prev 4672 0 R /Next 4674 0 R /A 2943 0 R >> endobj 4674 0 obj << /Title (function::log) /Parent 4669 0 R /Prev 4673 0 R /Next 4675 0 R /A 2946 0 R >> endobj 4675 0 obj << /Title (function::printk) /Parent 4669 0 R /Prev 4674 0 R /Next 4676 0 R /A 2949 0 R >> endobj 4676 0 obj << /Title (function::warn) /Parent 4669 0 R /Prev 4675 0 R /A 2952 0 R >> endobj 4677 0 obj << /Title /Parent 4198 0 R /Prev 4669 0 R /Next 4689 0 R /First 4678 0 R /Last 4688 0 R /Count -11 /A 2955 0 R >> endobj 4678 0 obj << /Title (function::qs_done) /Parent 4677 0 R /Next 4679 0 R /A 2958 0 R >> endobj 4679 0 obj << /Title (function::qs_run) /Parent 4677 0 R /Prev 4678 0 R /Next 4680 0 R /A 2961 0 R >> endobj 4680 0 obj << /Title (function::qs_wait) /Parent 4677 0 R /Prev 4679 0 R /Next 4681 0 R /A 2964 0 R >> endobj 4681 0 obj << /Title (function::qsq_blocked) /Parent 4677 0 R /Prev 4680 0 R /Next 4682 0 R /A 2967 0 R >> endobj 4682 0 obj << /Title (function::qsq_print) /Parent 4677 0 R /Prev 4681 0 R /Next 4683 0 R /A 2970 0 R >> endobj 4683 0 obj << /Title (function::qsq_service_time) /Parent 4677 0 R /Prev 4682 0 R /Next 4684 0 R /A 2973 0 R >> endobj 4684 0 obj << /Title (function::qsq_start) /Parent 4677 0 R /Prev 4683 0 R /Next 4685 0 R /A 2976 0 R >> endobj 4685 0 obj << /Title (function::qsq_throughput) /Parent 4677 0 R /Prev 4684 0 R /Next 4686 0 R /A 3144 0 R >> endobj 4686 0 obj << /Title (function::qsq_utilization) /Parent 4677 0 R /Prev 4685 0 R /Next 4687 0 R /A 3148 0 R >> endobj 4687 0 obj << /Title (function::qsq_wait_queue_length) /Parent 4677 0 R /Prev 4686 0 R /Next 4688 0 R /A 3151 0 R >> endobj 4688 0 obj << /Title (function::qsq_wait_time) /Parent 4677 0 R /Prev 4687 0 R /A 3154 0 R >> endobj 4689 0 obj << /Title /Parent 4198 0 R /Prev 4677 0 R /Next 4691 0 R /First 4690 0 R /Last 4690 0 R /Count -1 /A 3157 0 R >> endobj 4690 0 obj << /Title (function::randint) /Parent 4689 0 R /A 3160 0 R >> endobj 4691 0 obj << /Title /Parent 4198 0 R /Prev 4689 0 R /Next 4736 0 R /First 4692 0 R /Last 4735 0 R /Count -44 /A 3163 0 R >> endobj 4692 0 obj << /Title (function::atomic_long_read) /Parent 4691 0 R /Next 4693 0 R /A 3166 0 R >> endobj 4693 0 obj << /Title (function::atomic_read) /Parent 4691 0 R /Prev 4692 0 R /Next 4694 0 R /A 3169 0 R >> endobj 4694 0 obj << /Title (function::kernel_char) /Parent 4691 0 R /Prev 4693 0 R /Next 4695 0 R /A 3172 0 R >> endobj 4695 0 obj << /Title (function::kernel_int) /Parent 4691 0 R /Prev 4694 0 R /Next 4696 0 R /A 3175 0 R >> endobj 4696 0 obj << /Title (function::kernel_long) /Parent 4691 0 R /Prev 4695 0 R /Next 4697 0 R /A 3178 0 R >> endobj 4697 0 obj << /Title (function::kernel_pointer) /Parent 4691 0 R /Prev 4696 0 R /Next 4698 0 R /A 3181 0 R >> endobj 4698 0 obj << /Title (function::kernel_short) /Parent 4691 0 R /Prev 4697 0 R /Next 4699 0 R /A 3184 0 R >> endobj 4699 0 obj << /Title (function::kernel_string) /Parent 4691 0 R /Prev 4698 0 R /Next 4700 0 R /A 3187 0 R >> endobj 4700 0 obj << /Title (function::kernel_string_n) /Parent 4691 0 R /Prev 4699 0 R /Next 4701 0 R /A 3190 0 R >> endobj 4701 0 obj << /Title (function::kernel_string_quoted) /Parent 4691 0 R /Prev 4700 0 R /Next 4702 0 R /A 3193 0 R >> endobj 4702 0 obj << /Title (function::kernel_string_quoted_utf16) /Parent 4691 0 R /Prev 4701 0 R /Next 4703 0 R /A 3196 0 R >> endobj 4703 0 obj << /Title (function::kernel_string_quoted_utf32) /Parent 4691 0 R /Prev 4702 0 R /Next 4704 0 R /A 3199 0 R >> endobj 4704 0 obj << /Title (function::kernel_string_utf16) /Parent 4691 0 R /Prev 4703 0 R /Next 4705 0 R /A 3202 0 R >> endobj 4705 0 obj << /Title (function::kernel_string_utf32) /Parent 4691 0 R /Prev 4704 0 R /Next 4706 0 R /A 3205 0 R >> endobj 4706 0 obj << /Title (function::user_char) /Parent 4691 0 R /Prev 4705 0 R /Next 4707 0 R /A 3208 0 R >> endobj 4707 0 obj << /Title (function::user_char_warn) /Parent 4691 0 R /Prev 4706 0 R /Next 4708 0 R /A 3211 0 R >> endobj 4708 0 obj << /Title (function::user_int) /Parent 4691 0 R /Prev 4707 0 R /Next 4709 0 R /A 3214 0 R >> endobj 4709 0 obj << /Title (function::user_int16) /Parent 4691 0 R /Prev 4708 0 R /Next 4710 0 R /A 3217 0 R >> endobj 4710 0 obj << /Title (function::user_int32) /Parent 4691 0 R /Prev 4709 0 R /Next 4711 0 R /A 3220 0 R >> endobj 4711 0 obj << /Title (function::user_int64) /Parent 4691 0 R /Prev 4710 0 R /Next 4712 0 R /A 3223 0 R >> endobj 4712 0 obj << /Title (function::user_int8) /Parent 4691 0 R /Prev 4711 0 R /Next 4713 0 R /A 3226 0 R >> endobj 4713 0 obj << /Title (function::user_int_warn) /Parent 4691 0 R /Prev 4712 0 R /Next 4714 0 R /A 3229 0 R >> endobj 4714 0 obj << /Title (function::user_long) /Parent 4691 0 R /Prev 4713 0 R /Next 4715 0 R /A 3232 0 R >> endobj 4715 0 obj << /Title (function::user_long_warn) /Parent 4691 0 R /Prev 4714 0 R /Next 4716 0 R /A 3235 0 R >> endobj 4716 0 obj << /Title (function::user_short) /Parent 4691 0 R /Prev 4715 0 R /Next 4717 0 R /A 3238 0 R >> endobj 4717 0 obj << /Title (function::user_short_warn) /Parent 4691 0 R /Prev 4716 0 R /Next 4718 0 R /A 3241 0 R >> endobj 4718 0 obj << /Title (function::user_string) /Parent 4691 0 R /Prev 4717 0 R /Next 4719 0 R /A 3244 0 R >> endobj 4719 0 obj << /Title (function::user_string_n) /Parent 4691 0 R /Prev 4718 0 R /Next 4720 0 R /A 3247 0 R >> endobj 4720 0 obj << /Title (function::user_string_n_quoted) /Parent 4691 0 R /Prev 4719 0 R /Next 4721 0 R /A 3250 0 R >> endobj 4721 0 obj << /Title (function::user_string_n_warn) /Parent 4691 0 R /Prev 4720 0 R /Next 4722 0 R /A 3253 0 R >> endobj 4722 0 obj << /Title (function::user_string_quoted) /Parent 4691 0 R /Prev 4721 0 R /Next 4723 0 R /A 3256 0 R >> endobj 4723 0 obj << /Title (function::user_string_quoted_utf16) /Parent 4691 0 R /Prev 4722 0 R /Next 4724 0 R /A 3259 0 R >> endobj 4724 0 obj << /Title (function::user_string_quoted_utf32) /Parent 4691 0 R /Prev 4723 0 R /Next 4725 0 R /A 3262 0 R >> endobj 4725 0 obj << /Title (function::user_string_utf16) /Parent 4691 0 R /Prev 4724 0 R /Next 4726 0 R /A 3265 0 R >> endobj 4726 0 obj << /Title (function::user_string_utf32) /Parent 4691 0 R /Prev 4725 0 R /Next 4727 0 R /A 3268 0 R >> endobj 4727 0 obj << /Title (function::user_string_warn) /Parent 4691 0 R /Prev 4726 0 R /Next 4728 0 R /A 3271 0 R >> endobj 4728 0 obj << /Title (function::user_uint16) /Parent 4691 0 R /Prev 4727 0 R /Next 4729 0 R /A 3274 0 R >> endobj 4729 0 obj << /Title (function::user_uint32) /Parent 4691 0 R /Prev 4728 0 R /Next 4730 0 R /A 3277 0 R >> endobj 4730 0 obj << /Title (function::user_uint64) /Parent 4691 0 R /Prev 4729 0 R /Next 4731 0 R /A 3280 0 R >> endobj 4731 0 obj << /Title (function::user_uint8) /Parent 4691 0 R /Prev 4730 0 R /Next 4732 0 R /A 3283 0 R >> endobj 4732 0 obj << /Title (function::user_ulong) /Parent 4691 0 R /Prev 4731 0 R /Next 4733 0 R /A 3286 0 R >> endobj 4733 0 obj << /Title (function::user_ulong_warn) /Parent 4691 0 R /Prev 4732 0 R /Next 4734 0 R /A 3289 0 R >> endobj 4734 0 obj << /Title (function::user_ushort) /Parent 4691 0 R /Prev 4733 0 R /Next 4735 0 R /A 3292 0 R >> endobj 4735 0 obj << /Title (function::user_ushort_warn) /Parent 4691 0 R /Prev 4734 0 R /A 3295 0 R >> endobj 4736 0 obj << /Title /Parent 4198 0 R /Prev 4691 0 R /Next 4744 0 R /First 4737 0 R /Last 4743 0 R /Count -7 /A 3298 0 R >> endobj 4737 0 obj << /Title (function::set_kernel_char) /Parent 4736 0 R /Next 4738 0 R /A 3301 0 R >> endobj 4738 0 obj << /Title (function::set_kernel_int) /Parent 4736 0 R /Prev 4737 0 R /Next 4739 0 R /A 3304 0 R >> endobj 4739 0 obj << /Title (function::set_kernel_long) /Parent 4736 0 R /Prev 4738 0 R /Next 4740 0 R /A 3472 0 R >> endobj 4740 0 obj << /Title (function::set_kernel_pointer) /Parent 4736 0 R /Prev 4739 0 R /Next 4741 0 R /A 3476 0 R >> endobj 4741 0 obj << /Title (function::set_kernel_short) /Parent 4736 0 R /Prev 4740 0 R /Next 4742 0 R /A 3479 0 R >> endobj 4742 0 obj << /Title (function::set_kernel_string) /Parent 4736 0 R /Prev 4741 0 R /Next 4743 0 R /A 3482 0 R >> endobj 4743 0 obj << /Title (function::set_kernel_string_n) /Parent 4736 0 R /Prev 4742 0 R /A 3485 0 R >> endobj 4744 0 obj << /Title /Parent 4198 0 R /Prev 4736 0 R /Next 4749 0 R /First 4745 0 R /Last 4748 0 R /Count -4 /A 3488 0 R >> endobj 4745 0 obj << /Title (function::mdelay) /Parent 4744 0 R /Next 4746 0 R /A 3491 0 R >> endobj 4746 0 obj << /Title (function::panic) /Parent 4744 0 R /Prev 4745 0 R /Next 4747 0 R /A 3494 0 R >> endobj 4747 0 obj << /Title (function::raise) /Parent 4744 0 R /Prev 4746 0 R /Next 4748 0 R /A 3497 0 R >> endobj 4748 0 obj << /Title (function::udelay) /Parent 4744 0 R /Prev 4747 0 R /A 3500 0 R >> endobj 4749 0 obj << /Title /Parent 4198 0 R /Prev 4744 0 R /Next 4761 0 R /First 4750 0 R /Last 4760 0 R /Count -11 /A 3503 0 R >> endobj 4750 0 obj << /Title (function::isdigit) /Parent 4749 0 R /Next 4751 0 R /A 3506 0 R >> endobj 4751 0 obj << /Title (function::isinstr) /Parent 4749 0 R /Prev 4750 0 R /Next 4752 0 R /A 3509 0 R >> endobj 4752 0 obj << /Title (function::str_replace) /Parent 4749 0 R /Prev 4751 0 R /Next 4753 0 R /A 3512 0 R >> endobj 4753 0 obj << /Title (function::string_quoted) /Parent 4749 0 R /Prev 4752 0 R /Next 4754 0 R /A 3515 0 R >> endobj 4754 0 obj << /Title (function::stringat) /Parent 4749 0 R /Prev 4753 0 R /Next 4755 0 R /A 3518 0 R >> endobj 4755 0 obj << /Title (function::strlen) /Parent 4749 0 R /Prev 4754 0 R /Next 4756 0 R /A 3521 0 R >> endobj 4756 0 obj << /Title (function::strtol) /Parent 4749 0 R /Prev 4755 0 R /Next 4757 0 R /A 3524 0 R >> endobj 4757 0 obj << /Title (function::substr) /Parent 4749 0 R /Prev 4756 0 R /Next 4758 0 R /A 3527 0 R >> endobj 4758 0 obj << /Title (function::text_str) /Parent 4749 0 R /Prev 4757 0 R /Next 4759 0 R /A 3530 0 R >> endobj 4759 0 obj << /Title (function::text_strn) /Parent 4749 0 R /Prev 4758 0 R /Next 4760 0 R /A 3533 0 R >> endobj 4760 0 obj << /Title (function::tokenize) /Parent 4749 0 R /Prev 4759 0 R /A 3536 0 R >> endobj 4761 0 obj << /Title /Parent 4198 0 R /Prev 4749 0 R /Next 4775 0 R /First 4762 0 R /Last 4774 0 R /Count -13 /A 3539 0 R >> endobj 4762 0 obj << /Title (function::ansi_clear_screen) /Parent 4761 0 R /Next 4763 0 R /A 3542 0 R >> endobj 4763 0 obj << /Title (function::ansi_cursor_hide) /Parent 4761 0 R /Prev 4762 0 R /Next 4764 0 R /A 3545 0 R >> endobj 4764 0 obj << /Title (function::ansi_cursor_move) /Parent 4761 0 R /Prev 4763 0 R /Next 4765 0 R /A 3548 0 R >> endobj 4765 0 obj << /Title (function::ansi_cursor_restore) /Parent 4761 0 R /Prev 4764 0 R /Next 4766 0 R /A 3551 0 R >> endobj 4766 0 obj << /Title (function::ansi_cursor_save) /Parent 4761 0 R /Prev 4765 0 R /Next 4767 0 R /A 3554 0 R >> endobj 4767 0 obj << /Title (function::ansi_cursor_show) /Parent 4761 0 R /Prev 4766 0 R /Next 4768 0 R /A 3557 0 R >> endobj 4768 0 obj << /Title (function::ansi_new_line) /Parent 4761 0 R /Prev 4767 0 R /Next 4769 0 R /A 3560 0 R >> endobj 4769 0 obj << /Title (function::ansi_reset_color) /Parent 4761 0 R /Prev 4768 0 R /Next 4770 0 R /A 3563 0 R >> endobj 4770 0 obj << /Title (function::ansi_set_color) /Parent 4761 0 R /Prev 4769 0 R /Next 4771 0 R /A 3566 0 R >> endobj 4771 0 obj << /Title (function::indent) /Parent 4761 0 R /Prev 4770 0 R /Next 4772 0 R /A 3569 0 R >> endobj 4772 0 obj << /Title (function::indent_depth) /Parent 4761 0 R /Prev 4771 0 R /Next 4773 0 R /A 3572 0 R >> endobj 4773 0 obj << /Title (function::thread_indent) /Parent 4761 0 R /Prev 4772 0 R /Next 4774 0 R /A 3575 0 R >> endobj 4774 0 obj << /Title (function::thread_indent_depth) /Parent 4761 0 R /Prev 4773 0 R /A 3578 0 R >> endobj 4775 0 obj << /Title /Parent 4198 0 R /Prev 4761 0 R /Next 4803 0 R /First 4776 0 R /Last 4802 0 R /Count -27 /A 3581 0 R >> endobj 4776 0 obj << /Title (probe::stap.cache_add_mod) /Parent 4775 0 R /Next 4777 0 R /A 3584 0 R >> endobj 4777 0 obj << /Title (probe::stap.cache_add_nss) /Parent 4775 0 R /Prev 4776 0 R /Next 4778 0 R /A 3587 0 R >> endobj 4778 0 obj << /Title (probe::stap.cache_add_src) /Parent 4775 0 R /Prev 4777 0 R /Next 4779 0 R /A 3590 0 R >> endobj 4779 0 obj << /Title (probe::stap.cache_clean) /Parent 4775 0 R /Prev 4778 0 R /Next 4780 0 R /A 3593 0 R >> endobj 4780 0 obj << /Title (probe::stap.cache_get) /Parent 4775 0 R /Prev 4779 0 R /Next 4781 0 R /A 3596 0 R >> endobj 4781 0 obj << /Title (probe::stap.pass0) /Parent 4775 0 R /Prev 4780 0 R /Next 4782 0 R /A 3599 0 R >> endobj 4782 0 obj << /Title (probe::stap.pass0.end) /Parent 4775 0 R /Prev 4781 0 R /Next 4783 0 R /A 3602 0 R >> endobj 4783 0 obj << /Title (probe::stap.pass1.end) /Parent 4775 0 R /Prev 4782 0 R /Next 4784 0 R /A 3605 0 R >> endobj 4784 0 obj << /Title (probe::stap.pass1a) /Parent 4775 0 R /Prev 4783 0 R /Next 4785 0 R /A 3608 0 R >> endobj 4785 0 obj << /Title (probe::stap.pass1b) /Parent 4775 0 R /Prev 4784 0 R /Next 4786 0 R /A 3611 0 R >> endobj 4786 0 obj << /Title (probe::stap.pass2) /Parent 4775 0 R /Prev 4785 0 R /Next 4787 0 R /A 3614 0 R >> endobj 4787 0 obj << /Title (probe::stap.pass2.end) /Parent 4775 0 R /Prev 4786 0 R /Next 4788 0 R /A 3617 0 R >> endobj 4788 0 obj << /Title (probe::stap.pass3) /Parent 4775 0 R /Prev 4787 0 R /Next 4789 0 R /A 3620 0 R >> endobj 4789 0 obj << /Title (probe::stap.pass3.end) /Parent 4775 0 R /Prev 4788 0 R /Next 4790 0 R /A 3623 0 R >> endobj 4790 0 obj << /Title (probe::stap.pass4) /Parent 4775 0 R /Prev 4789 0 R /Next 4791 0 R /A 3626 0 R >> endobj 4791 0 obj << /Title (probe::stap.pass4.end) /Parent 4775 0 R /Prev 4790 0 R /Next 4792 0 R /A 3629 0 R >> endobj 4792 0 obj << /Title (probe::stap.pass5) /Parent 4775 0 R /Prev 4791 0 R /Next 4793 0 R /A 3632 0 R >> endobj 4793 0 obj << /Title (probe::stap.pass5.end) /Parent 4775 0 R /Prev 4792 0 R /Next 4794 0 R /A 3800 0 R >> endobj 4794 0 obj << /Title (probe::stap.pass6) /Parent 4775 0 R /Prev 4793 0 R /Next 4795 0 R /A 3804 0 R >> endobj 4795 0 obj << /Title (probe::stap.pass6.end) /Parent 4775 0 R /Prev 4794 0 R /Next 4796 0 R /A 3807 0 R >> endobj 4796 0 obj << /Title (probe::stap.system) /Parent 4775 0 R /Prev 4795 0 R /Next 4797 0 R /A 3810 0 R >> endobj 4797 0 obj << /Title (probe::stap.system.return) /Parent 4775 0 R /Prev 4796 0 R /Next 4798 0 R /A 3813 0 R >> endobj 4798 0 obj << /Title (probe::stap.system.spawn) /Parent 4775 0 R /Prev 4797 0 R /Next 4799 0 R /A 3816 0 R >> endobj 4799 0 obj << /Title (probe::stapio.receive_control_message) /Parent 4775 0 R /Prev 4798 0 R /Next 4800 0 R /A 3819 0 R >> endobj 4800 0 obj << /Title (probe::staprun.insert_module) /Parent 4775 0 R /Prev 4799 0 R /Next 4801 0 R /A 3822 0 R >> endobj 4801 0 obj << /Title (probe::staprun.remove_module) /Parent 4775 0 R /Prev 4800 0 R /Next 4802 0 R /A 3825 0 R >> endobj 4802 0 obj << /Title (probe::staprun.send_control_message) /Parent 4775 0 R /Prev 4801 0 R /A 3828 0 R >> endobj 4803 0 obj << /Title /Parent 4198 0 R /Prev 4775 0 R /Next 4864 0 R /First 4804 0 R /Last 4863 0 R /Count -60 /A 3831 0 R >> endobj 4804 0 obj << /Title (function::nfsderror) /Parent 4803 0 R /Next 4805 0 R /A 3834 0 R >> endobj 4805 0 obj << /Title (probe::nfs.aop.readpage) /Parent 4803 0 R /Prev 4804 0 R /Next 4806 0 R /A 3837 0 R >> endobj 4806 0 obj << /Title (probe::nfs.aop.readpages) /Parent 4803 0 R /Prev 4805 0 R /Next 4807 0 R /A 3840 0 R >> endobj 4807 0 obj << /Title (probe::nfs.aop.release_page) /Parent 4803 0 R /Prev 4806 0 R /Next 4808 0 R /A 3843 0 R >> endobj 4808 0 obj << /Title (probe::nfs.aop.set_page_dirty) /Parent 4803 0 R /Prev 4807 0 R /Next 4809 0 R /A 3846 0 R >> endobj 4809 0 obj << /Title (probe::nfs.aop.write_begin) /Parent 4803 0 R /Prev 4808 0 R /Next 4810 0 R /A 3849 0 R >> endobj 4810 0 obj << /Title (probe::nfs.aop.write_end) /Parent 4803 0 R /Prev 4809 0 R /Next 4811 0 R /A 3852 0 R >> endobj 4811 0 obj << /Title (probe::nfs.aop.writepage) /Parent 4803 0 R /Prev 4810 0 R /Next 4812 0 R /A 3855 0 R >> endobj 4812 0 obj << /Title (probe::nfs.aop.writepages) /Parent 4803 0 R /Prev 4811 0 R /Next 4813 0 R /A 3858 0 R >> endobj 4813 0 obj << /Title (probe::nfs.fop.aio_read) /Parent 4803 0 R /Prev 4812 0 R /Next 4814 0 R /A 3861 0 R >> endobj 4814 0 obj << /Title (probe::nfs.fop.aio_write) /Parent 4803 0 R /Prev 4813 0 R /Next 4815 0 R /A 3864 0 R >> endobj 4815 0 obj << /Title (probe::nfs.fop.check_flags) /Parent 4803 0 R /Prev 4814 0 R /Next 4816 0 R /A 3867 0 R >> endobj 4816 0 obj << /Title (probe::nfs.fop.flush) /Parent 4803 0 R /Prev 4815 0 R /Next 4817 0 R /A 3870 0 R >> endobj 4817 0 obj << /Title (probe::nfs.fop.fsync) /Parent 4803 0 R /Prev 4816 0 R /Next 4818 0 R /A 3873 0 R >> endobj 4818 0 obj << /Title (probe::nfs.fop.llseek) /Parent 4803 0 R /Prev 4817 0 R /Next 4819 0 R /A 3876 0 R >> endobj 4819 0 obj << /Title (probe::nfs.fop.lock) /Parent 4803 0 R /Prev 4818 0 R /Next 4820 0 R /A 3879 0 R >> endobj 4820 0 obj << /Title (probe::nfs.fop.mmap) /Parent 4803 0 R /Prev 4819 0 R /Next 4821 0 R /A 3882 0 R >> endobj 4821 0 obj << /Title (probe::nfs.fop.open) /Parent 4803 0 R /Prev 4820 0 R /Next 4822 0 R /A 3885 0 R >> endobj 4822 0 obj << /Title (probe::nfs.fop.read) /Parent 4803 0 R /Prev 4821 0 R /Next 4823 0 R /A 3888 0 R >> endobj 4823 0 obj << /Title (probe::nfs.fop.read_iter) /Parent 4803 0 R /Prev 4822 0 R /Next 4824 0 R /A 3891 0 R >> endobj 4824 0 obj << /Title (probe::nfs.fop.release) /Parent 4803 0 R /Prev 4823 0 R /Next 4825 0 R /A 3894 0 R >> endobj 4825 0 obj << /Title (probe::nfs.fop.sendfile) /Parent 4803 0 R /Prev 4824 0 R /Next 4826 0 R /A 3897 0 R >> endobj 4826 0 obj << /Title (probe::nfs.fop.write) /Parent 4803 0 R /Prev 4825 0 R /Next 4827 0 R /A 3900 0 R >> endobj 4827 0 obj << /Title (probe::nfs.fop.write_iter) /Parent 4803 0 R /Prev 4826 0 R /Next 4828 0 R /A 3903 0 R >> endobj 4828 0 obj << /Title (probe::nfs.proc.commit) /Parent 4803 0 R /Prev 4827 0 R /Next 4829 0 R /A 3906 0 R >> endobj 4829 0 obj << /Title (probe::nfs.proc.commit_done) /Parent 4803 0 R /Prev 4828 0 R /Next 4830 0 R /A 3909 0 R >> endobj 4830 0 obj << /Title (probe::nfs.proc.commit_setup) /Parent 4803 0 R /Prev 4829 0 R /Next 4831 0 R /A 3912 0 R >> endobj 4831 0 obj << /Title (probe::nfs.proc.create) /Parent 4803 0 R /Prev 4830 0 R /Next 4832 0 R /A 3915 0 R >> endobj 4832 0 obj << /Title (probe::nfs.proc.handle_exception) /Parent 4803 0 R /Prev 4831 0 R /Next 4833 0 R /A 3918 0 R >> endobj 4833 0 obj << /Title (probe::nfs.proc.lookup) /Parent 4803 0 R /Prev 4832 0 R /Next 4834 0 R /A 3921 0 R >> endobj 4834 0 obj << /Title (probe::nfs.proc.open) /Parent 4803 0 R /Prev 4833 0 R /Next 4835 0 R /A 3924 0 R >> endobj 4835 0 obj << /Title (probe::nfs.proc.read) /Parent 4803 0 R /Prev 4834 0 R /Next 4836 0 R /A 3927 0 R >> endobj 4836 0 obj << /Title (probe::nfs.proc.read_done) /Parent 4803 0 R /Prev 4835 0 R /Next 4837 0 R /A 3930 0 R >> endobj 4837 0 obj << /Title (probe::nfs.proc.read_setup) /Parent 4803 0 R /Prev 4836 0 R /Next 4838 0 R /A 3933 0 R >> endobj 4838 0 obj << /Title (probe::nfs.proc.release) /Parent 4803 0 R /Prev 4837 0 R /Next 4839 0 R /A 3936 0 R >> endobj 4839 0 obj << /Title (probe::nfs.proc.remove) /Parent 4803 0 R /Prev 4838 0 R /Next 4840 0 R /A 3939 0 R >> endobj 4840 0 obj << /Title (probe::nfs.proc.rename) /Parent 4803 0 R /Prev 4839 0 R /Next 4841 0 R /A 3942 0 R >> endobj 4841 0 obj << /Title (probe::nfs.proc.rename_done) /Parent 4803 0 R /Prev 4840 0 R /Next 4842 0 R /A 3945 0 R >> endobj 4842 0 obj << /Title (probe::nfs.proc.rename_setup) /Parent 4803 0 R /Prev 4841 0 R /Next 4843 0 R /A 3948 0 R >> endobj 4843 0 obj << /Title (probe::nfs.proc.write) /Parent 4803 0 R /Prev 4842 0 R /Next 4844 0 R /A 3951 0 R >> endobj 4844 0 obj << /Title (probe::nfs.proc.write_done) /Parent 4803 0 R /Prev 4843 0 R /Next 4845 0 R /A 3954 0 R >> endobj 4845 0 obj << /Title (probe::nfs.proc.write_setup) /Parent 4803 0 R /Prev 4844 0 R /Next 4846 0 R /A 3957 0 R >> endobj 4846 0 obj << /Title (probe::nfsd.close) /Parent 4803 0 R /Prev 4845 0 R /Next 4847 0 R /A 3960 0 R >> endobj 4847 0 obj << /Title (probe::nfsd.commit) /Parent 4803 0 R /Prev 4846 0 R /Next 4848 0 R /A 4080 0 R >> endobj 4848 0 obj << /Title (probe::nfsd.create) /Parent 4803 0 R /Prev 4847 0 R /Next 4849 0 R /A 4084 0 R >> endobj 4849 0 obj << /Title (probe::nfsd.createv3) /Parent 4803 0 R /Prev 4848 0 R /Next 4850 0 R /A 4087 0 R >> endobj 4850 0 obj << /Title (probe::nfsd.dispatch) /Parent 4803 0 R /Prev 4849 0 R /Next 4851 0 R /A 4090 0 R >> endobj 4851 0 obj << /Title (probe::nfsd.lookup) /Parent 4803 0 R /Prev 4850 0 R /Next 4852 0 R /A 4093 0 R >> endobj 4852 0 obj << /Title (probe::nfsd.open) /Parent 4803 0 R /Prev 4851 0 R /Next 4853 0 R /A 4096 0 R >> endobj 4853 0 obj << /Title (probe::nfsd.proc.commit) /Parent 4803 0 R /Prev 4852 0 R /Next 4854 0 R /A 4099 0 R >> endobj 4854 0 obj << /Title (probe::nfsd.proc.create) /Parent 4803 0 R /Prev 4853 0 R /Next 4855 0 R /A 4102 0 R >> endobj 4855 0 obj << /Title (probe::nfsd.proc.lookup) /Parent 4803 0 R /Prev 4854 0 R /Next 4856 0 R /A 4105 0 R >> endobj 4856 0 obj << /Title (probe::nfsd.proc.read) /Parent 4803 0 R /Prev 4855 0 R /Next 4857 0 R /A 4108 0 R >> endobj 4857 0 obj << /Title (probe::nfsd.proc.remove) /Parent 4803 0 R /Prev 4856 0 R /Next 4858 0 R /A 4111 0 R >> endobj 4858 0 obj << /Title (probe::nfsd.proc.rename) /Parent 4803 0 R /Prev 4857 0 R /Next 4859 0 R /A 4114 0 R >> endobj 4859 0 obj << /Title (probe::nfsd.proc.write) /Parent 4803 0 R /Prev 4858 0 R /Next 4860 0 R /A 4117 0 R >> endobj 4860 0 obj << /Title (probe::nfsd.read) /Parent 4803 0 R /Prev 4859 0 R /Next 4861 0 R /A 4120 0 R >> endobj 4861 0 obj << /Title (probe::nfsd.rename) /Parent 4803 0 R /Prev 4860 0 R /Next 4862 0 R /A 4123 0 R >> endobj 4862 0 obj << /Title (probe::nfsd.unlink) /Parent 4803 0 R /Prev 4861 0 R /Next 4863 0 R /A 4126 0 R >> endobj 4863 0 obj << /Title (probe::nfsd.write) /Parent 4803 0 R /Prev 4862 0 R /A 4129 0 R >> endobj 4864 0 obj << /Title /Parent 4198 0 R /Prev 4803 0 R /Next 4869 0 R /First 4865 0 R /Last 4868 0 R /Count -4 /A 4132 0 R >> endobj 4865 0 obj << /Title (function::commit) /Parent 4864 0 R /Next 4866 0 R /A 4135 0 R >> endobj 4866 0 obj << /Title (function::discard) /Parent 4864 0 R /Prev 4865 0 R /Next 4867 0 R /A 4138 0 R >> endobj 4867 0 obj << /Title (function::speculate) /Parent 4864 0 R /Prev 4866 0 R /Next 4868 0 R /A 4141 0 R >> endobj 4868 0 obj << /Title (function::speculation) /Parent 4864 0 R /Prev 4867 0 R /A 4144 0 R >> endobj 4869 0 obj << /Title /Parent 4198 0 R /Prev 4864 0 R /Next 4883 0 R /First 4870 0 R /Last 4882 0 R /Count -13 /A 4147 0 R >> endobj 4870 0 obj << /Title (function::json_add_array) /Parent 4869 0 R /Next 4871 0 R /A 4150 0 R >> endobj 4871 0 obj << /Title (function::json_add_array_numeric_metric) /Parent 4869 0 R /Prev 4870 0 R /Next 4872 0 R /A 4153 0 R >> endobj 4872 0 obj << /Title (function::json_add_array_string_metric) /Parent 4869 0 R /Prev 4871 0 R /Next 4873 0 R /A 4156 0 R >> endobj 4873 0 obj << /Title (function::json_add_numeric_metric) /Parent 4869 0 R /Prev 4872 0 R /Next 4874 0 R /A 4159 0 R >> endobj 4874 0 obj << /Title (function::json_add_string_metric) /Parent 4869 0 R /Prev 4873 0 R /Next 4875 0 R /A 4162 0 R >> endobj 4875 0 obj << /Title (function::json_set_prefix) /Parent 4869 0 R /Prev 4874 0 R /Next 4876 0 R /A 4165 0 R >> endobj 4876 0 obj << /Title (macro::json_output_array_numeric_value) /Parent 4869 0 R /Prev 4875 0 R /Next 4877 0 R /A 4168 0 R >> endobj 4877 0 obj << /Title (macro::json_output_array_string_value) /Parent 4869 0 R /Prev 4876 0 R /Next 4878 0 R /A 4171 0 R >> endobj 4878 0 obj << /Title (macro::json_output_data_end) /Parent 4869 0 R /Prev 4877 0 R /Next 4879 0 R /A 4174 0 R >> endobj 4879 0 obj << /Title (macro::json_output_data_start) /Parent 4869 0 R /Prev 4878 0 R /Next 4880 0 R /A 4177 0 R >> endobj 4880 0 obj << /Title (macro::json_output_numeric_value) /Parent 4869 0 R /Prev 4879 0 R /Next 4881 0 R /A 4180 0 R >> endobj 4881 0 obj << /Title (macro::json_output_string_value) /Parent 4869 0 R /Prev 4880 0 R /Next 4882 0 R /A 4183 0 R >> endobj 4882 0 obj << /Title (probe::json_data) /Parent 4869 0 R /Prev 4881 0 R /A 4186 0 R >> endobj 4883 0 obj << /Title /Parent 4198 0 R /Prev 4869 0 R /First 4884 0 R /Last 4884 0 R /Count -1 /A 4189 0 R >> endobj 4884 0 obj << /Title (function::switch_file) /Parent 4883 0 R /A 4192 0 R >> endobj 4885 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 4886 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 4887 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 4888 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 4889 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 4890 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 4891 0 obj << /Limits [(API-HZ) (API-HZ)] /Names [(API-HZ) 894 0 R] >> endobj 4892 0 obj << /Limits [(API-MAJOR) (API-MAJOR)] /Names [(API-MAJOR) 2886 0 R] >> endobj 4893 0 obj << /Limits [(API-MINOR) (API-MINOR)] /Names [(API-MINOR) 2889 0 R] >> endobj 4894 0 obj << /Limits [(API-MKDEV) (API-MKDEV)] /Names [(API-MKDEV) 2892 0 R] >> endobj 4895 0 obj << /Limits [(API-addr) (API-addr)] /Names [(API-addr) 178 0 R] >> endobj 4896 0 obj << /Limits [(API-addr-to-node) (API-addr-to-node)] /Names [(API-addr-to-node) 1150 0 R] >> endobj 4897 0 obj << /Limits [(API-ansi-clear-screen) (API-ansi-clear-screen)] /Names [(API-ansi-clear-screen) 3542 0 R] >> endobj 4898 0 obj << /Limits [(API-ansi-cursor-hide) (API-ansi-cursor-hide)] /Names [(API-ansi-cursor-hide) 3545 0 R] >> endobj 4899 0 obj << /Limits [(API-ansi-cursor-move) (API-ansi-cursor-move)] /Names [(API-ansi-cursor-move) 3548 0 R] >> endobj 4900 0 obj << /Limits [(API-ansi-cursor-restore) (API-ansi-cursor-restore)] /Names [(API-ansi-cursor-restore) 3551 0 R] >> endobj 4901 0 obj << /Limits [(API-ansi-cursor-save) (API-ansi-cursor-save)] /Names [(API-ansi-cursor-save) 3554 0 R] >> endobj 4902 0 obj << /Limits [(API-ansi-cursor-show) (API-ansi-cursor-show)] /Names [(API-ansi-cursor-show) 3557 0 R] >> endobj 4903 0 obj << /Limits [(API-ansi-new-line) (API-ansi-new-line)] /Names [(API-ansi-new-line) 3560 0 R] >> endobj 4904 0 obj << /Limits [(API-ansi-reset-color) (API-ansi-reset-color)] /Names [(API-ansi-reset-color) 3563 0 R] >> endobj 4905 0 obj << /Limits [(API-ansi-set-color) (API-ansi-set-color)] /Names [(API-ansi-set-color) 3566 0 R] >> endobj 4906 0 obj << /Limits [(API-asmlinkage) (API-asmlinkage)] /Names [(API-asmlinkage) 181 0 R] >> endobj 4907 0 obj << /Limits [(API-assert) (API-assert)] /Names [(API-assert) 2934 0 R] >> endobj 4908 0 obj << /Limits [(API-atomic-long-read) (API-atomic-long-read)] /Names [(API-atomic-long-read) 3166 0 R] >> endobj 4909 0 obj << /Limits [(API-atomic-read) (API-atomic-read)] /Names [(API-atomic-read) 3169 0 R] >> endobj 4910 0 obj << /Limits [(API-backtrace) (API-backtrace)] /Names [(API-backtrace) 184 0 R] >> endobj 4911 0 obj << /Limits [(API-bytes-to-string) (API-bytes-to-string)] /Names [(API-bytes-to-string) 1153 0 R] >> endobj 4912 0 obj << /Limits [(API-caller) (API-caller)] /Names [(API-caller) 187 0 R] >> endobj 4913 0 obj << /Limits [(API-caller-addr) (API-caller-addr)] /Names [(API-caller-addr) 190 0 R] >> endobj 4914 0 obj << /Limits [(API-callers) (API-callers)] /Names [(API-callers) 193 0 R] >> endobj 4915 0 obj << /Limits [(API-cmdline-arg) (API-cmdline-arg)] /Names [(API-cmdline-arg) 196 0 R] >> endobj 4916 0 obj << /Limits [(API-cmdline-args) (API-cmdline-args)] /Names [(API-cmdline-args) 199 0 R] >> endobj 4917 0 obj << /Limits [(API-cmdline-str) (API-cmdline-str)] /Names [(API-cmdline-str) 202 0 R] >> endobj 4918 0 obj << /Limits [(API-commit) (API-commit)] /Names [(API-commit) 4135 0 R] >> endobj 4919 0 obj << /Limits [(API-cpu) (API-cpu)] /Names [(API-cpu) 205 0 R] >> endobj 4920 0 obj << /Limits [(API-cpu-clock-ms) (API-cpu-clock-ms)] /Names [(API-cpu-clock-ms) 897 0 R] >> endobj 4921 0 obj << /Limits [(API-cpu-clock-ns) (API-cpu-clock-ns)] /Names [(API-cpu-clock-ns) 900 0 R] >> endobj 4922 0 obj << /Limits [(API-cpu-clock-s) (API-cpu-clock-s)] /Names [(API-cpu-clock-s) 903 0 R] >> endobj 4923 0 obj << /Limits [(API-cpu-clock-us) (API-cpu-clock-us)] /Names [(API-cpu-clock-us) 906 0 R] >> endobj 4924 0 obj << /Limits [(API-cpuid) (API-cpuid)] /Names [(API-cpuid) 208 0 R] >> endobj 4925 0 obj << /Limits [(API-cputime-to-msecs) (API-cputime-to-msecs)] /Names [(API-cputime-to-msecs) 1228 0 R] >> endobj 4926 0 obj << /Limits [(API-cputime-to-string) (API-cputime-to-string)] /Names [(API-cputime-to-string) 1231 0 R] >> endobj 4927 0 obj << /Limits [(API-cputime-to-usecs) (API-cputime-to-usecs)] /Names [(API-cputime-to-usecs) 1234 0 R] >> endobj 4928 0 obj << /Limits [(API-ctime) (API-ctime)] /Names [(API-ctime) 963 0 R] >> endobj 4929 0 obj << /Limits [(API-d-name) (API-d-name)] /Names [(API-d-name) 2901 0 R] >> endobj 4930 0 obj << /Limits [(API-d-path) (API-d-path)] /Names [(API-d-path) 2904 0 R] >> endobj 4931 0 obj << /Limits [(API-delete-stopwatch) (API-delete-stopwatch)] /Names [(API-delete-stopwatch) 909 0 R] >> endobj 4932 0 obj << /Limits [(API-discard) (API-discard)] /Names [(API-discard) 4138 0 R] >> endobj 4933 0 obj << /Limits [(API-egid) (API-egid)] /Names [(API-egid) 211 0 R] >> endobj 4934 0 obj << /Limits [(API-env-var) (API-env-var)] /Names [(API-env-var) 214 0 R] >> endobj 4935 0 obj << /Limits [(API-errno-str) (API-errno-str)] /Names [(API-errno-str) 2865 0 R] >> endobj 4936 0 obj << /Limits [(API-error) (API-error)] /Names [(API-error) 2937 0 R] >> endobj 4937 0 obj << /Limits [(API-euid) (API-euid)] /Names [(API-euid) 217 0 R] >> endobj 4938 0 obj << /Limits [(API-execname) (API-execname)] /Names [(API-execname) 220 0 R] >> endobj 4939 0 obj << /Limits [(API-exit) (API-exit)] /Names [(API-exit) 2940 0 R] >> endobj 4940 0 obj << /Limits [(API-fastcall) (API-fastcall)] /Names [(API-fastcall) 223 0 R] >> endobj 4941 0 obj << /Limits [(API-format-ipaddr) (API-format-ipaddr)] /Names [(API-format-ipaddr) 1622 0 R] >> endobj 4942 0 obj << /Limits [(API-ftrace) (API-ftrace)] /Names [(API-ftrace) 2943 0 R] >> endobj 4943 0 obj << /Limits [(API-fullpath-struct-file) (API-fullpath-struct-file)] /Names [(API-fullpath-struct-file) 2907 0 R] >> endobj 4944 0 obj << /Limits [(API-fullpath-struct-nameidata) (API-fullpath-struct-nameidata)] /Names [(API-fullpath-struct-nameidata) 2910 0 R] >> endobj 4945 0 obj << /Limits [(API-fullpath-struct-path) (API-fullpath-struct-path)] /Names [(API-fullpath-struct-path) 2913 0 R] >> endobj 4946 0 obj << /Limits [(API-get-cycles) (API-get-cycles)] /Names [(API-get-cycles) 912 0 R] >> endobj 4947 0 obj << /Limits [(API-get-loadavg-index) (API-get-loadavg-index)] /Names [(API-get-loadavg-index) 2564 0 R] >> endobj 4948 0 obj << /Limits [(API-get-sa-flags) (API-get-sa-flags)] /Names [(API-get-sa-flags) 2597 0 R] >> endobj 4949 0 obj << /Limits [(API-get-sa-handler) (API-get-sa-handler)] /Names [(API-get-sa-handler) 2600 0 R] >> endobj 4950 0 obj << /Limits [(API-gettimeofday-ms) (API-gettimeofday-ms)] /Names [(API-gettimeofday-ms) 915 0 R] >> endobj 4951 0 obj << /Limits [(API-gettimeofday-ns) (API-gettimeofday-ns)] /Names [(API-gettimeofday-ns) 918 0 R] >> endobj 4952 0 obj << /Limits [(API-gettimeofday-s) (API-gettimeofday-s)] /Names [(API-gettimeofday-s) 921 0 R] >> endobj 4953 0 obj << /Limits [(API-gettimeofday-us) (API-gettimeofday-us)] /Names [(API-gettimeofday-us) 924 0 R] >> endobj 4954 0 obj << /Limits [(API-gid) (API-gid)] /Names [(API-gid) 226 0 R] >> endobj 4955 0 obj << /Limits [(API-htonl) (API-htonl)] /Names [(API-htonl) 1625 0 R] >> endobj 4956 0 obj << /Limits [(API-htonll) (API-htonll)] /Names [(API-htonll) 1628 0 R] >> endobj 4957 0 obj << /Limits [(API-htons) (API-htons)] /Names [(API-htons) 1631 0 R] >> endobj 4958 0 obj << /Limits [(API-indent) (API-indent)] /Names [(API-indent) 3569 0 R] >> endobj 4959 0 obj << /Limits [(API-indent-depth) (API-indent-depth)] /Names [(API-indent-depth) 3572 0 R] >> endobj 4960 0 obj << /Limits [(API-inet-get-ip-source) (API-inet-get-ip-source)] /Names [(API-inet-get-ip-source) 2191 0 R] >> endobj 4961 0 obj << /Limits [(API-inet-get-local-port) (API-inet-get-local-port)] /Names [(API-inet-get-local-port) 2194 0 R] >> endobj 4962 0 obj << /Limits [(API-inode-name) (API-inode-name)] /Names [(API-inode-name) 2916 0 R] >> endobj 4963 0 obj << /Limits [(API-inode-path) (API-inode-path)] /Names [(API-inode-path) 2919 0 R] >> endobj 4964 0 obj << /Limits [(API-int-arg) (API-int-arg)] /Names [(API-int-arg) 229 0 R] >> endobj 4965 0 obj << /Limits [(API-ioblock-end) (API-ioblock-end)] /Names [(API-ioblock-end) 1481 0 R] >> endobj 4966 0 obj << /Limits [(API-ioblock-request) (API-ioblock-request)] /Names [(API-ioblock-request) 1484 0 R] >> endobj 4967 0 obj << /Limits [(API-ioblock-trace-bounce) (API-ioblock-trace-bounce)] /Names [(API-ioblock-trace-bounce) 1487 0 R] >> endobj 4968 0 obj << /Limits [(API-ioblock-trace-end) (API-ioblock-trace-end)] /Names [(API-ioblock-trace-end) 1490 0 R] >> endobj 4969 0 obj << /Limits [(API-ioblock-trace-request) (API-ioblock-trace-request)] /Names [(API-ioblock-trace-request) 1493 0 R] >> endobj 4970 0 obj << /Limits [(API-ioscheduler-elv-add-request) (API-ioscheduler-elv-add-request)] /Names [(API-ioscheduler-elv-add-request) 1496 0 R] >> endobj 4971 0 obj << /Limits [(API-ioscheduler-elv-add-request-kp) (API-ioscheduler-elv-add-request-kp)] /Names [(API-ioscheduler-elv-add-request-kp) 1499 0 R] >> endobj 4972 0 obj << /Limits [(API-ioscheduler-elv-add-request-tp) (API-ioscheduler-elv-add-request-tp)] /Names [(API-ioscheduler-elv-add-request-tp) 1502 0 R] >> endobj 4973 0 obj << /Limits [(API-ioscheduler-elv-completed-request) (API-ioscheduler-elv-completed-request)] /Names [(API-ioscheduler-elv-completed-request) 1505 0 R] >> endobj 4974 0 obj << /Limits [(API-ioscheduler-elv-next-request) (API-ioscheduler-elv-next-request)] /Names [(API-ioscheduler-elv-next-request) 1508 0 R] >> endobj 4975 0 obj << /Limits [(API-ioscheduler-elv-next-request-return) (API-ioscheduler-elv-next-request-return)] /Names [(API-ioscheduler-elv-next-request-return) 1511 0 R] >> endobj 4976 0 obj << /Limits [(API-ioscheduler-trace-elv-abort-request) (API-ioscheduler-trace-elv-abort-request)] /Names [(API-ioscheduler-trace-elv-abort-request) 1514 0 R] >> endobj 4977 0 obj << /Limits [(API-ioscheduler-trace-elv-completed-request) (API-ioscheduler-trace-elv-completed-request)] /Names [(API-ioscheduler-trace-elv-completed-request) 1517 0 R] >> endobj 4978 0 obj << /Limits [(API-ioscheduler-trace-elv-issue-request) (API-ioscheduler-trace-elv-issue-request)] /Names [(API-ioscheduler-trace-elv-issue-request) 1520 0 R] >> endobj 4979 0 obj << /Limits [(API-ioscheduler-trace-elv-requeue-request) (API-ioscheduler-trace-elv-requeue-request)] /Names [(API-ioscheduler-trace-elv-requeue-request) 1523 0 R] >> endobj 4980 0 obj << /Limits [(API-ioscheduler-trace-plug) (API-ioscheduler-trace-plug)] /Names [(API-ioscheduler-trace-plug) 1526 0 R] >> endobj 4981 0 obj << /Limits [(API-ioscheduler-trace-unplug-io) (API-ioscheduler-trace-unplug-io)] /Names [(API-ioscheduler-trace-unplug-io) 1529 0 R] >> endobj 4982 0 obj << /Limits [(API-ioscheduler-trace-unplug-timer) (API-ioscheduler-trace-unplug-timer)] /Names [(API-ioscheduler-trace-unplug-timer) 1532 0 R] >> endobj 4983 0 obj << /Limits [(API-ip-ntop) (API-ip-ntop)] /Names [(API-ip-ntop) 1634 0 R] >> endobj 4984 0 obj << /Limits [(API-ipmib-ForwDatagrams) (API-ipmib-ForwDatagrams)] /Names [(API-ipmib-ForwDatagrams) 2488 0 R] >> endobj 4985 0 obj << /Limits [(API-ipmib-FragFails) (API-ipmib-FragFails)] /Names [(API-ipmib-FragFails) 2492 0 R] >> endobj 4986 0 obj << /Limits [(API-ipmib-FragOKs) (API-ipmib-FragOKs)] /Names [(API-ipmib-FragOKs) 2495 0 R] >> endobj 4987 0 obj << /Limits [(API-ipmib-InAddrErrors) (API-ipmib-InAddrErrors)] /Names [(API-ipmib-InAddrErrors) 2498 0 R] >> endobj 4988 0 obj << /Limits [(API-ipmib-InDiscards) (API-ipmib-InDiscards)] /Names [(API-ipmib-InDiscards) 2501 0 R] >> endobj 4989 0 obj << /Limits [(API-ipmib-InNoRoutes) (API-ipmib-InNoRoutes)] /Names [(API-ipmib-InNoRoutes) 2504 0 R] >> endobj 4990 0 obj << /Limits [(API-ipmib-InReceives) (API-ipmib-InReceives)] /Names [(API-ipmib-InReceives) 2507 0 R] >> endobj 4991 0 obj << /Limits [(API-ipmib-InUnknownProtos) (API-ipmib-InUnknownProtos)] /Names [(API-ipmib-InUnknownProtos) 2510 0 R] >> endobj 4992 0 obj << /Limits [(API-ipmib-OutRequests) (API-ipmib-OutRequests)] /Names [(API-ipmib-OutRequests) 2513 0 R] >> endobj 4993 0 obj << /Limits [(API-ipmib-ReasmReqds) (API-ipmib-ReasmReqds)] /Names [(API-ipmib-ReasmReqds) 2516 0 R] >> endobj 4994 0 obj << /Limits [(API-ipmib-ReasmTimeout) (API-ipmib-ReasmTimeout)] /Names [(API-ipmib-ReasmTimeout) 2519 0 R] >> endobj 4995 0 obj << /Limits [(API-ipmib-filter-key) (API-ipmib-filter-key)] /Names [(API-ipmib-filter-key) 2284 0 R] >> endobj 4996 0 obj << /Limits [(API-ipmib-get-proto) (API-ipmib-get-proto)] /Names [(API-ipmib-get-proto) 2287 0 R] >> endobj 4997 0 obj << /Limits [(API-ipmib-local-addr) (API-ipmib-local-addr)] /Names [(API-ipmib-local-addr) 2290 0 R] >> endobj 4998 0 obj << /Limits [(API-ipmib-remote-addr) (API-ipmib-remote-addr)] /Names [(API-ipmib-remote-addr) 2293 0 R] >> endobj 4999 0 obj << /Limits [(API-ipmib-tcp-local-port) (API-ipmib-tcp-local-port)] /Names [(API-ipmib-tcp-local-port) 2296 0 R] >> endobj 5000 0 obj << /Limits [(API-ipmib-tcp-remote-port) (API-ipmib-tcp-remote-port)] /Names [(API-ipmib-tcp-remote-port) 2299 0 R] >> endobj 5001 0 obj << /Limits [(API-irq-handler-entry) (API-irq-handler-entry)] /Names [(API-irq-handler-entry) 1595 0 R] >> endobj 5002 0 obj << /Limits [(API-irq-handler-exit) (API-irq-handler-exit)] /Names [(API-irq-handler-exit) 1598 0 R] >> endobj 5003 0 obj << /Limits [(API-is-myproc) (API-is-myproc)] /Names [(API-is-myproc) 232 0 R] >> endobj 5004 0 obj << /Limits [(API-is-return) (API-is-return)] /Names [(API-is-return) 235 0 R] >> endobj 5005 0 obj << /Limits [(API-is-sig-blocked) (API-is-sig-blocked)] /Names [(API-is-sig-blocked) 2603 0 R] >> endobj 5006 0 obj << /Limits [(API-isdigit) (API-isdigit)] /Names [(API-isdigit) 3506 0 R] >> endobj 5007 0 obj << /Limits [(API-isinstr) (API-isinstr)] /Names [(API-isinstr) 3509 0 R] >> endobj 5008 0 obj << /Limits [(API-jiffies) (API-jiffies)] /Names [(API-jiffies) 927 0 R] >> endobj 5009 0 obj << /Limits [(API-json-add-array) (API-json-add-array)] /Names [(API-json-add-array) 4150 0 R] >> endobj 5010 0 obj << /Limits [(API-json-add-array-numeric-metric) (API-json-add-array-numeric-metric)] /Names [(API-json-add-array-numeric-metric) 4153 0 R] >> endobj 5011 0 obj << /Limits [(API-json-add-array-string-metric) (API-json-add-array-string-metric)] /Names [(API-json-add-array-string-metric) 4156 0 R] >> endobj 5012 0 obj << /Limits [(API-json-add-numeric-metric) (API-json-add-numeric-metric)] /Names [(API-json-add-numeric-metric) 4159 0 R] >> endobj 5013 0 obj << /Limits [(API-json-add-string-metric) (API-json-add-string-metric)] /Names [(API-json-add-string-metric) 4162 0 R] >> endobj 5014 0 obj << /Limits [(API-json-data) (API-json-data)] /Names [(API-json-data) 4186 0 R] >> endobj 5015 0 obj << /Limits [(API-json-output-array-numeric-value) (API-json-output-array-numeric-value)] /Names [(API-json-output-array-numeric-value) 4168 0 R] >> endobj 5016 0 obj << /Limits [(API-json-output-array-string-value) (API-json-output-array-string-value)] /Names [(API-json-output-array-string-value) 4171 0 R] >> endobj 5017 0 obj << /Limits [(API-json-output-data-end) (API-json-output-data-end)] /Names [(API-json-output-data-end) 4174 0 R] >> endobj 5018 0 obj << /Limits [(API-json-output-data-start) (API-json-output-data-start)] /Names [(API-json-output-data-start) 4177 0 R] >> endobj 5019 0 obj << /Limits [(API-json-output-numeric-value) (API-json-output-numeric-value)] /Names [(API-json-output-numeric-value) 4180 0 R] >> endobj 5020 0 obj << /Limits [(API-json-output-string-value) (API-json-output-string-value)] /Names [(API-json-output-string-value) 4183 0 R] >> endobj 5021 0 obj << /Limits [(API-json-set-prefix) (API-json-set-prefix)] /Names [(API-json-set-prefix) 4165 0 R] >> endobj 5022 0 obj << /Limits [(API-kernel-char) (API-kernel-char)] /Names [(API-kernel-char) 3172 0 R] >> endobj 5023 0 obj << /Limits [(API-kernel-int) (API-kernel-int)] /Names [(API-kernel-int) 3175 0 R] >> endobj 5024 0 obj << /Limits [(API-kernel-long) (API-kernel-long)] /Names [(API-kernel-long) 3178 0 R] >> endobj 5025 0 obj << /Limits [(API-kernel-pointer) (API-kernel-pointer)] /Names [(API-kernel-pointer) 3181 0 R] >> endobj 5026 0 obj << /Limits [(API-kernel-short) (API-kernel-short)] /Names [(API-kernel-short) 3184 0 R] >> endobj 5027 0 obj << /Limits [(API-kernel-string) (API-kernel-string)] /Names [(API-kernel-string) 3187 0 R] >> endobj 5028 0 obj << /Limits [(API-kernel-string-n) (API-kernel-string-n)] /Names [(API-kernel-string-n) 3190 0 R] >> endobj 5029 0 obj << /Limits [(API-kernel-string-quoted) (API-kernel-string-quoted)] /Names [(API-kernel-string-quoted) 3193 0 R] >> endobj 5030 0 obj << /Limits [(API-kernel-string-quoted-utf16) (API-kernel-string-quoted-utf16)] /Names [(API-kernel-string-quoted-utf16) 3196 0 R] >> endobj 5031 0 obj << /Limits [(API-kernel-string-quoted-utf32) (API-kernel-string-quoted-utf32)] /Names [(API-kernel-string-quoted-utf32) 3199 0 R] >> endobj 5032 0 obj << /Limits [(API-kernel-string-utf16) (API-kernel-string-utf16)] /Names [(API-kernel-string-utf16) 3202 0 R] >> endobj 5033 0 obj << /Limits [(API-kernel-string-utf32) (API-kernel-string-utf32)] /Names [(API-kernel-string-utf32) 3205 0 R] >> endobj 5034 0 obj << /Limits [(API-kprocess-create) (API-kprocess-create)] /Names [(API-kprocess-create) 2576 0 R] >> endobj 5035 0 obj << /Limits [(API-kprocess-exec) (API-kprocess-exec)] /Names [(API-kprocess-exec) 2579 0 R] >> endobj 5036 0 obj << /Limits [(API-kprocess-exec-complete) (API-kprocess-exec-complete)] /Names [(API-kprocess-exec-complete) 2582 0 R] >> endobj 5037 0 obj << /Limits [(API-kprocess-exit) (API-kprocess-exit)] /Names [(API-kprocess-exit) 2585 0 R] >> endobj 5038 0 obj << /Limits [(API-kprocess-release) (API-kprocess-release)] /Names [(API-kprocess-release) 2588 0 R] >> endobj 5039 0 obj << /Limits [(API-kprocess-start) (API-kprocess-start)] /Names [(API-kprocess-start) 2591 0 R] >> endobj 5040 0 obj << /Limits [(API-linuxmib-DelayedACKs) (API-linuxmib-DelayedACKs)] /Names [(API-linuxmib-DelayedACKs) 2522 0 R] >> endobj 5041 0 obj << /Limits [(API-linuxmib-ListenDrops) (API-linuxmib-ListenDrops)] /Names [(API-linuxmib-ListenDrops) 2525 0 R] >> endobj 5042 0 obj << /Limits [(API-linuxmib-ListenOverflows) (API-linuxmib-ListenOverflows)] /Names [(API-linuxmib-ListenOverflows) 2528 0 R] >> endobj 5043 0 obj << /Limits [(API-linuxmib-TCPMemoryPressures) (API-linuxmib-TCPMemoryPressures)] /Names [(API-linuxmib-TCPMemoryPressures) 2531 0 R] >> endobj 5044 0 obj << /Limits [(API-linuxmib-filter-key) (API-linuxmib-filter-key)] /Names [(API-linuxmib-filter-key) 2302 0 R] >> endobj 5045 0 obj << /Limits [(API-local-clock-ms) (API-local-clock-ms)] /Names [(API-local-clock-ms) 930 0 R] >> endobj 5046 0 obj << /Limits [(API-local-clock-ns) (API-local-clock-ns)] /Names [(API-local-clock-ns) 933 0 R] >> endobj 5047 0 obj << /Limits [(API-local-clock-s) (API-local-clock-s)] /Names [(API-local-clock-s) 936 0 R] >> endobj 5048 0 obj << /Limits [(API-local-clock-us) (API-local-clock-us)] /Names [(API-local-clock-us) 939 0 R] >> endobj 5049 0 obj << /Limits [(API-log) (API-log)] /Names [(API-log) 2946 0 R] >> endobj 5050 0 obj << /Limits [(API-long-arg) (API-long-arg)] /Names [(API-long-arg) 238 0 R] >> endobj 5051 0 obj << /Limits [(API-longlong-arg) (API-longlong-arg)] /Names [(API-longlong-arg) 241 0 R] >> endobj 5052 0 obj << /Limits [(API-mdelay) (API-mdelay)] /Names [(API-mdelay) 3491 0 R] >> endobj 5053 0 obj << /Limits [(API-mem-page-size) (API-mem-page-size)] /Names [(API-mem-page-size) 1156 0 R] >> endobj 5054 0 obj << /Limits [(API-modname) (API-modname)] /Names [(API-modname) 244 0 R] >> endobj 5055 0 obj << /Limits [(API-module-name) (API-module-name)] /Names [(API-module-name) 247 0 R] >> endobj 5056 0 obj << /Limits [(API-module-size) (API-module-size)] /Names [(API-module-size) 250 0 R] >> endobj 5057 0 obj << /Limits [(API-msecs-to-string) (API-msecs-to-string)] /Names [(API-msecs-to-string) 1237 0 R] >> endobj 5058 0 obj << /Limits [(API-netdev-change-mac) (API-netdev-change-mac)] /Names [(API-netdev-change-mac) 1842 0 R] >> endobj 5059 0 obj << /Limits [(API-netdev-change-mtu) (API-netdev-change-mtu)] /Names [(API-netdev-change-mtu) 1845 0 R] >> endobj 5060 0 obj << /Limits [(API-netdev-change-rx-flag) (API-netdev-change-rx-flag)] /Names [(API-netdev-change-rx-flag) 1848 0 R] >> endobj 5061 0 obj << /Limits [(API-netdev-close) (API-netdev-close)] /Names [(API-netdev-close) 1851 0 R] >> endobj 5062 0 obj << /Limits [(API-netdev-get-stats) (API-netdev-get-stats)] /Names [(API-netdev-get-stats) 1854 0 R] >> endobj 5063 0 obj << /Limits [(API-netdev-hard-transmit) (API-netdev-hard-transmit)] /Names [(API-netdev-hard-transmit) 1857 0 R] >> endobj 5064 0 obj << /Limits [(API-netdev-ioctl) (API-netdev-ioctl)] /Names [(API-netdev-ioctl) 1860 0 R] >> endobj 5065 0 obj << /Limits [(API-netdev-open) (API-netdev-open)] /Names [(API-netdev-open) 1863 0 R] >> endobj 5066 0 obj << /Limits [(API-netdev-receive) (API-netdev-receive)] /Names [(API-netdev-receive) 1866 0 R] >> endobj 5067 0 obj << /Limits [(API-netdev-register) (API-netdev-register)] /Names [(API-netdev-register) 1869 0 R] >> endobj 5068 0 obj << /Limits [(API-netdev-rx) (API-netdev-rx)] /Names [(API-netdev-rx) 1872 0 R] >> endobj 5069 0 obj << /Limits [(API-netdev-set-promiscuity) (API-netdev-set-promiscuity)] /Names [(API-netdev-set-promiscuity) 1875 0 R] >> endobj 5070 0 obj << /Limits [(API-netdev-transmit) (API-netdev-transmit)] /Names [(API-netdev-transmit) 1878 0 R] >> endobj 5071 0 obj << /Limits [(API-netdev-unregister) (API-netdev-unregister)] /Names [(API-netdev-unregister) 1881 0 R] >> endobj 5072 0 obj << /Limits [(API-netfilter-arp-forward) (API-netfilter-arp-forward)] /Names [(API-netfilter-arp-forward) 1884 0 R] >> endobj 5073 0 obj << /Limits [(API-netfilter-arp-in) (API-netfilter-arp-in)] /Names [(API-netfilter-arp-in) 1887 0 R] >> endobj 5074 0 obj << /Limits [(API-netfilter-arp-out) (API-netfilter-arp-out)] /Names [(API-netfilter-arp-out) 1890 0 R] >> endobj 5075 0 obj << /Limits [(API-netfilter-bridge-forward) (API-netfilter-bridge-forward)] /Names [(API-netfilter-bridge-forward) 1893 0 R] >> endobj 5076 0 obj << /Limits [(API-netfilter-bridge-local-in) (API-netfilter-bridge-local-in)] /Names [(API-netfilter-bridge-local-in) 1896 0 R] >> endobj 5077 0 obj << /Limits [(API-netfilter-bridge-local-out) (API-netfilter-bridge-local-out)] /Names [(API-netfilter-bridge-local-out) 1899 0 R] >> endobj 5078 0 obj << /Limits [(API-netfilter-bridge-post-routing) (API-netfilter-bridge-post-routing)] /Names [(API-netfilter-bridge-post-routing) 1902 0 R] >> endobj 5079 0 obj << /Limits [(API-netfilter-bridge-pre-routing) (API-netfilter-bridge-pre-routing)] /Names [(API-netfilter-bridge-pre-routing) 1905 0 R] >> endobj 5080 0 obj << /Limits [(API-netfilter-ip-forward) (API-netfilter-ip-forward)] /Names [(API-netfilter-ip-forward) 1908 0 R] >> endobj 5081 0 obj << /Limits [(API-netfilter-ip-local-in) (API-netfilter-ip-local-in)] /Names [(API-netfilter-ip-local-in) 1911 0 R] >> endobj 5082 0 obj << /Limits [(API-netfilter-ip-local-out) (API-netfilter-ip-local-out)] /Names [(API-netfilter-ip-local-out) 1914 0 R] >> endobj 5083 0 obj << /Limits [(API-netfilter-ip-post-routing) (API-netfilter-ip-post-routing)] /Names [(API-netfilter-ip-post-routing) 1917 0 R] >> endobj 5084 0 obj << /Limits [(API-netfilter-ip-pre-routing) (API-netfilter-ip-pre-routing)] /Names [(API-netfilter-ip-pre-routing) 1920 0 R] >> endobj 5085 0 obj << /Limits [(API-nfs-aop-readpage) (API-nfs-aop-readpage)] /Names [(API-nfs-aop-readpage) 3837 0 R] >> endobj 5086 0 obj << /Limits [(API-nfs-aop-readpages) (API-nfs-aop-readpages)] /Names [(API-nfs-aop-readpages) 3840 0 R] >> endobj 5087 0 obj << /Limits [(API-nfs-aop-release-page) (API-nfs-aop-release-page)] /Names [(API-nfs-aop-release-page) 3843 0 R] >> endobj 5088 0 obj << /Limits [(API-nfs-aop-set-page-dirty) (API-nfs-aop-set-page-dirty)] /Names [(API-nfs-aop-set-page-dirty) 3846 0 R] >> endobj 5089 0 obj << /Limits [(API-nfs-aop-write-begin) (API-nfs-aop-write-begin)] /Names [(API-nfs-aop-write-begin) 3849 0 R] >> endobj 5090 0 obj << /Limits [(API-nfs-aop-write-end) (API-nfs-aop-write-end)] /Names [(API-nfs-aop-write-end) 3852 0 R] >> endobj 5091 0 obj << /Limits [(API-nfs-aop-writepage) (API-nfs-aop-writepage)] /Names [(API-nfs-aop-writepage) 3855 0 R] >> endobj 5092 0 obj << /Limits [(API-nfs-aop-writepages) (API-nfs-aop-writepages)] /Names [(API-nfs-aop-writepages) 3858 0 R] >> endobj 5093 0 obj << /Limits [(API-nfs-fop-aio-read) (API-nfs-fop-aio-read)] /Names [(API-nfs-fop-aio-read) 3861 0 R] >> endobj 5094 0 obj << /Limits [(API-nfs-fop-aio-write) (API-nfs-fop-aio-write)] /Names [(API-nfs-fop-aio-write) 3864 0 R] >> endobj 5095 0 obj << /Limits [(API-nfs-fop-check-flags) (API-nfs-fop-check-flags)] /Names [(API-nfs-fop-check-flags) 3867 0 R] >> endobj 5096 0 obj << /Limits [(API-nfs-fop-flush) (API-nfs-fop-flush)] /Names [(API-nfs-fop-flush) 3870 0 R] >> endobj 5097 0 obj << /Limits [(API-nfs-fop-fsync) (API-nfs-fop-fsync)] /Names [(API-nfs-fop-fsync) 3873 0 R] >> endobj 5098 0 obj << /Limits [(API-nfs-fop-llseek) (API-nfs-fop-llseek)] /Names [(API-nfs-fop-llseek) 3876 0 R] >> endobj 5099 0 obj << /Limits [(API-nfs-fop-lock) (API-nfs-fop-lock)] /Names [(API-nfs-fop-lock) 3879 0 R] >> endobj 5100 0 obj << /Limits [(API-nfs-fop-mmap) (API-nfs-fop-mmap)] /Names [(API-nfs-fop-mmap) 3882 0 R] >> endobj 5101 0 obj << /Limits [(API-nfs-fop-open) (API-nfs-fop-open)] /Names [(API-nfs-fop-open) 3885 0 R] >> endobj 5102 0 obj << /Limits [(API-nfs-fop-read) (API-nfs-fop-read)] /Names [(API-nfs-fop-read) 3888 0 R] >> endobj 5103 0 obj << /Limits [(API-nfs-fop-read-iter) (API-nfs-fop-read-iter)] /Names [(API-nfs-fop-read-iter) 3891 0 R] >> endobj 5104 0 obj << /Limits [(API-nfs-fop-release) (API-nfs-fop-release)] /Names [(API-nfs-fop-release) 3894 0 R] >> endobj 5105 0 obj << /Limits [(API-nfs-fop-sendfile) (API-nfs-fop-sendfile)] /Names [(API-nfs-fop-sendfile) 3897 0 R] >> endobj 5106 0 obj << /Limits [(API-nfs-fop-write) (API-nfs-fop-write)] /Names [(API-nfs-fop-write) 3900 0 R] >> endobj 5107 0 obj << /Limits [(API-nfs-fop-write-iter) (API-nfs-fop-write-iter)] /Names [(API-nfs-fop-write-iter) 3903 0 R] >> endobj 5108 0 obj << /Limits [(API-nfs-proc-commit) (API-nfs-proc-commit)] /Names [(API-nfs-proc-commit) 3906 0 R] >> endobj 5109 0 obj << /Limits [(API-nfs-proc-commit-done) (API-nfs-proc-commit-done)] /Names [(API-nfs-proc-commit-done) 3909 0 R] >> endobj 5110 0 obj << /Limits [(API-nfs-proc-commit-setup) (API-nfs-proc-commit-setup)] /Names [(API-nfs-proc-commit-setup) 3912 0 R] >> endobj 5111 0 obj << /Limits [(API-nfs-proc-create) (API-nfs-proc-create)] /Names [(API-nfs-proc-create) 3915 0 R] >> endobj 5112 0 obj << /Limits [(API-nfs-proc-handle-exception) (API-nfs-proc-handle-exception)] /Names [(API-nfs-proc-handle-exception) 3918 0 R] >> endobj 5113 0 obj << /Limits [(API-nfs-proc-lookup) (API-nfs-proc-lookup)] /Names [(API-nfs-proc-lookup) 3921 0 R] >> endobj 5114 0 obj << /Limits [(API-nfs-proc-open) (API-nfs-proc-open)] /Names [(API-nfs-proc-open) 3924 0 R] >> endobj 5115 0 obj << /Limits [(API-nfs-proc-read) (API-nfs-proc-read)] /Names [(API-nfs-proc-read) 3927 0 R] >> endobj 5116 0 obj << /Limits [(API-nfs-proc-read-done) (API-nfs-proc-read-done)] /Names [(API-nfs-proc-read-done) 3930 0 R] >> endobj 5117 0 obj << /Limits [(API-nfs-proc-read-setup) (API-nfs-proc-read-setup)] /Names [(API-nfs-proc-read-setup) 3933 0 R] >> endobj 5118 0 obj << /Limits [(API-nfs-proc-release) (API-nfs-proc-release)] /Names [(API-nfs-proc-release) 3936 0 R] >> endobj 5119 0 obj << /Limits [(API-nfs-proc-remove) (API-nfs-proc-remove)] /Names [(API-nfs-proc-remove) 3939 0 R] >> endobj 5120 0 obj << /Limits [(API-nfs-proc-rename) (API-nfs-proc-rename)] /Names [(API-nfs-proc-rename) 3942 0 R] >> endobj 5121 0 obj << /Limits [(API-nfs-proc-rename-done) (API-nfs-proc-rename-done)] /Names [(API-nfs-proc-rename-done) 3945 0 R] >> endobj 5122 0 obj << /Limits [(API-nfs-proc-rename-setup) (API-nfs-proc-rename-setup)] /Names [(API-nfs-proc-rename-setup) 3948 0 R] >> endobj 5123 0 obj << /Limits [(API-nfs-proc-write) (API-nfs-proc-write)] /Names [(API-nfs-proc-write) 3951 0 R] >> endobj 5124 0 obj << /Limits [(API-nfs-proc-write-done) (API-nfs-proc-write-done)] /Names [(API-nfs-proc-write-done) 3954 0 R] >> endobj 5125 0 obj << /Limits [(API-nfs-proc-write-setup) (API-nfs-proc-write-setup)] /Names [(API-nfs-proc-write-setup) 3957 0 R] >> endobj 5126 0 obj << /Limits [(API-nfsd-close) (API-nfsd-close)] /Names [(API-nfsd-close) 3960 0 R] >> endobj 5127 0 obj << /Limits [(API-nfsd-commit) (API-nfsd-commit)] /Names [(API-nfsd-commit) 4080 0 R] >> endobj 5128 0 obj << /Limits [(API-nfsd-create) (API-nfsd-create)] /Names [(API-nfsd-create) 4084 0 R] >> endobj 5129 0 obj << /Limits [(API-nfsd-createv3) (API-nfsd-createv3)] /Names [(API-nfsd-createv3) 4087 0 R] >> endobj 5130 0 obj << /Limits [(API-nfsd-dispatch) (API-nfsd-dispatch)] /Names [(API-nfsd-dispatch) 4090 0 R] >> endobj 5131 0 obj << /Limits [(API-nfsd-lookup) (API-nfsd-lookup)] /Names [(API-nfsd-lookup) 4093 0 R] >> endobj 5132 0 obj << /Limits [(API-nfsd-open) (API-nfsd-open)] /Names [(API-nfsd-open) 4096 0 R] >> endobj 5133 0 obj << /Limits [(API-nfsd-proc-commit) (API-nfsd-proc-commit)] /Names [(API-nfsd-proc-commit) 4099 0 R] >> endobj 5134 0 obj << /Limits [(API-nfsd-proc-create) (API-nfsd-proc-create)] /Names [(API-nfsd-proc-create) 4102 0 R] >> endobj 5135 0 obj << /Limits [(API-nfsd-proc-lookup) (API-nfsd-proc-lookup)] /Names [(API-nfsd-proc-lookup) 4105 0 R] >> endobj 5136 0 obj << /Limits [(API-nfsd-proc-read) (API-nfsd-proc-read)] /Names [(API-nfsd-proc-read) 4108 0 R] >> endobj 5137 0 obj << /Limits [(API-nfsd-proc-remove) (API-nfsd-proc-remove)] /Names [(API-nfsd-proc-remove) 4111 0 R] >> endobj 5138 0 obj << /Limits [(API-nfsd-proc-rename) (API-nfsd-proc-rename)] /Names [(API-nfsd-proc-rename) 4114 0 R] >> endobj 5139 0 obj << /Limits [(API-nfsd-proc-write) (API-nfsd-proc-write)] /Names [(API-nfsd-proc-write) 4117 0 R] >> endobj 5140 0 obj << /Limits [(API-nfsd-read) (API-nfsd-read)] /Names [(API-nfsd-read) 4120 0 R] >> endobj 5141 0 obj << /Limits [(API-nfsd-rename) (API-nfsd-rename)] /Names [(API-nfsd-rename) 4123 0 R] >> endobj 5142 0 obj << /Limits [(API-nfsd-unlink) (API-nfsd-unlink)] /Names [(API-nfsd-unlink) 4126 0 R] >> endobj 5143 0 obj << /Limits [(API-nfsd-write) (API-nfsd-write)] /Names [(API-nfsd-write) 4129 0 R] >> endobj 5144 0 obj << /Limits [(API-nfsderror) (API-nfsderror)] /Names [(API-nfsderror) 3834 0 R] >> endobj 5145 0 obj << /Limits [(API-ns-egid) (API-ns-egid)] /Names [(API-ns-egid) 253 0 R] >> endobj 5146 0 obj << /Limits [(API-ns-euid) (API-ns-euid)] /Names [(API-ns-euid) 256 0 R] >> endobj 5147 0 obj << /Limits [(API-ns-gid) (API-ns-gid)] /Names [(API-ns-gid) 259 0 R] >> endobj 5148 0 obj << /Limits [(API-ns-pgrp) (API-ns-pgrp)] /Names [(API-ns-pgrp) 262 0 R] >> endobj 5149 0 obj << /Limits [(API-ns-pid) (API-ns-pid)] /Names [(API-ns-pid) 265 0 R] >> endobj 5150 0 obj << /Limits [(API-ns-ppid) (API-ns-ppid)] /Names [(API-ns-ppid) 268 0 R] >> endobj 5151 0 obj << /Limits [(API-ns-sid) (API-ns-sid)] /Names [(API-ns-sid) 271 0 R] >> endobj 5152 0 obj << /Limits [(API-ns-tid) (API-ns-tid)] /Names [(API-ns-tid) 274 0 R] >> endobj 5153 0 obj << /Limits [(API-ns-uid) (API-ns-uid)] /Names [(API-ns-uid) 277 0 R] >> endobj 5154 0 obj << /Limits [(API-nsecs-to-string) (API-nsecs-to-string)] /Names [(API-nsecs-to-string) 1240 0 R] >> endobj 5155 0 obj << /Limits [(API-ntohl) (API-ntohl)] /Names [(API-ntohl) 1832 0 R] >> endobj 5156 0 obj << /Limits [(API-ntohll) (API-ntohll)] /Names [(API-ntohll) 1836 0 R] >> endobj 5157 0 obj << /Limits [(API-ntohs) (API-ntohs)] /Names [(API-ntohs) 1839 0 R] >> endobj 5158 0 obj << /Limits [(API-pages-to-string) (API-pages-to-string)] /Names [(API-pages-to-string) 1159 0 R] >> endobj 5159 0 obj << /Limits [(API-panic) (API-panic)] /Names [(API-panic) 3494 0 R] >> endobj 5160 0 obj << /Limits [(API-pexecname) (API-pexecname)] /Names [(API-pexecname) 280 0 R] >> endobj 5161 0 obj << /Limits [(API-pgrp) (API-pgrp)] /Names [(API-pgrp) 283 0 R] >> endobj 5162 0 obj << /Limits [(API-pid) (API-pid)] /Names [(API-pid) 286 0 R] >> endobj 5163 0 obj << /Limits [(API-pid2execname) (API-pid2execname)] /Names [(API-pid2execname) 289 0 R] >> endobj 5164 0 obj << /Limits [(API-pid2task) (API-pid2task)] /Names [(API-pid2task) 292 0 R] >> endobj 5165 0 obj << /Limits [(API-pn) (API-pn)] /Names [(API-pn) 295 0 R] >> endobj 5166 0 obj << /Limits [(API-pnlabel) (API-pnlabel)] /Names [(API-pnlabel) 298 0 R] >> endobj 5167 0 obj << /Limits [(API-pointer-arg) (API-pointer-arg)] /Names [(API-pointer-arg) 301 0 R] >> endobj 5168 0 obj << /Limits [(API-pp) (API-pp)] /Names [(API-pp) 304 0 R] >> endobj 5169 0 obj << /Limits [(API-ppfunc) (API-ppfunc)] /Names [(API-ppfunc) 307 0 R] >> endobj 5170 0 obj << /Limits [(API-ppid) (API-ppid)] /Names [(API-ppid) 310 0 R] >> endobj 5171 0 obj << /Limits [(API-print-backtrace) (API-print-backtrace)] /Names [(API-print-backtrace) 313 0 R] >> endobj 5172 0 obj << /Limits [(API-print-regs) (API-print-regs)] /Names [(API-print-regs) 316 0 R] >> endobj 5173 0 obj << /Limits [(API-print-stack) (API-print-stack)] /Names [(API-print-stack) 319 0 R] >> endobj 5174 0 obj << /Limits [(API-print-syms) (API-print-syms)] /Names [(API-print-syms) 322 0 R] >> endobj 5175 0 obj << /Limits [(API-print-ubacktrace) (API-print-ubacktrace)] /Names [(API-print-ubacktrace) 490 0 R] >> endobj 5176 0 obj << /Limits [(API-print-ubacktrace-brief) (API-print-ubacktrace-brief)] /Names [(API-print-ubacktrace-brief) 494 0 R] >> endobj 5177 0 obj << /Limits [(API-print-ustack) (API-print-ustack)] /Names [(API-print-ustack) 497 0 R] >> endobj 5178 0 obj << /Limits [(API-print-usyms) (API-print-usyms)] /Names [(API-print-usyms) 500 0 R] >> endobj 5179 0 obj << /Limits [(API-printk) (API-printk)] /Names [(API-printk) 2949 0 R] >> endobj 5180 0 obj << /Limits [(API-probe-type) (API-probe-type)] /Names [(API-probe-type) 503 0 R] >> endobj 5181 0 obj << /Limits [(API-probefunc) (API-probefunc)] /Names [(API-probefunc) 506 0 R] >> endobj 5182 0 obj << /Limits [(API-probemod) (API-probemod)] /Names [(API-probemod) 509 0 R] >> endobj 5183 0 obj << /Limits [(API-proc-mem-data) (API-proc-mem-data)] /Names [(API-proc-mem-data) 1162 0 R] >> endobj 5184 0 obj << /Limits [(API-proc-mem-rss) (API-proc-mem-rss)] /Names [(API-proc-mem-rss) 1165 0 R] >> endobj 5185 0 obj << /Limits [(API-proc-mem-shr) (API-proc-mem-shr)] /Names [(API-proc-mem-shr) 1168 0 R] >> endobj 5186 0 obj << /Limits [(API-proc-mem-size) (API-proc-mem-size)] /Names [(API-proc-mem-size) 1171 0 R] >> endobj 5187 0 obj << /Limits [(API-proc-mem-string) (API-proc-mem-string)] /Names [(API-proc-mem-string) 1174 0 R] >> endobj 5188 0 obj << /Limits [(API-proc-mem-txt) (API-proc-mem-txt)] /Names [(API-proc-mem-txt) 1177 0 R] >> endobj 5189 0 obj << /Limits [(API-pstrace) (API-pstrace)] /Names [(API-pstrace) 512 0 R] >> endobj 5190 0 obj << /Limits [(API-qs-done) (API-qs-done)] /Names [(API-qs-done) 2958 0 R] >> endobj 5191 0 obj << /Limits [(API-qs-run) (API-qs-run)] /Names [(API-qs-run) 2961 0 R] >> endobj 5192 0 obj << /Limits [(API-qs-wait) (API-qs-wait)] /Names [(API-qs-wait) 2964 0 R] >> endobj 5193 0 obj << /Limits [(API-qsq-blocked) (API-qsq-blocked)] /Names [(API-qsq-blocked) 2967 0 R] >> endobj 5194 0 obj << /Limits [(API-qsq-print) (API-qsq-print)] /Names [(API-qsq-print) 2970 0 R] >> endobj 5195 0 obj << /Limits [(API-qsq-service-time) (API-qsq-service-time)] /Names [(API-qsq-service-time) 2973 0 R] >> endobj 5196 0 obj << /Limits [(API-qsq-start) (API-qsq-start)] /Names [(API-qsq-start) 2976 0 R] >> endobj 5197 0 obj << /Limits [(API-qsq-throughput) (API-qsq-throughput)] /Names [(API-qsq-throughput) 3144 0 R] >> endobj 5198 0 obj << /Limits [(API-qsq-utilization) (API-qsq-utilization)] /Names [(API-qsq-utilization) 3148 0 R] >> endobj 5199 0 obj << /Limits [(API-qsq-wait-queue-length) (API-qsq-wait-queue-length)] /Names [(API-qsq-wait-queue-length) 3151 0 R] >> endobj 5200 0 obj << /Limits [(API-qsq-wait-time) (API-qsq-wait-time)] /Names [(API-qsq-wait-time) 3154 0 R] >> endobj 5201 0 obj << /Limits [(API-raise) (API-raise)] /Names [(API-raise) 3497 0 R] >> endobj 5202 0 obj << /Limits [(API-randint) (API-randint)] /Names [(API-randint) 3160 0 R] >> endobj 5203 0 obj << /Limits [(API-read-stopwatch-ms) (API-read-stopwatch-ms)] /Names [(API-read-stopwatch-ms) 942 0 R] >> endobj 5204 0 obj << /Limits [(API-read-stopwatch-ns) (API-read-stopwatch-ns)] /Names [(API-read-stopwatch-ns) 945 0 R] >> endobj 5205 0 obj << /Limits [(API-read-stopwatch-s) (API-read-stopwatch-s)] /Names [(API-read-stopwatch-s) 948 0 R] >> endobj 5206 0 obj << /Limits [(API-read-stopwatch-us) (API-read-stopwatch-us)] /Names [(API-read-stopwatch-us) 951 0 R] >> endobj 5207 0 obj << /Limits [(API-real-mount) (API-real-mount)] /Names [(API-real-mount) 2922 0 R] >> endobj 5208 0 obj << /Limits [(API-register) (API-register)] /Names [(API-register) 515 0 R] >> endobj 5209 0 obj << /Limits [(API-registers-valid) (API-registers-valid)] /Names [(API-registers-valid) 518 0 R] >> endobj 5210 0 obj << /Limits [(API-regparm) (API-regparm)] /Names [(API-regparm) 521 0 R] >> endobj 5211 0 obj << /Limits [(API-remote-id) (API-remote-id)] /Names [(API-remote-id) 524 0 R] >> endobj 5212 0 obj << /Limits [(API-remote-uri) (API-remote-uri)] /Names [(API-remote-uri) 527 0 R] >> endobj 5213 0 obj << /Limits [(API-return-str) (API-return-str)] /Names [(API-return-str) 2868 0 R] >> endobj 5214 0 obj << /Limits [(API-returnstr) (API-returnstr)] /Names [(API-returnstr) 2871 0 R] >> endobj 5215 0 obj << /Limits [(API-returnval) (API-returnval)] /Names [(API-returnval) 2874 0 R] >> endobj 5216 0 obj << /Limits [(API-reverse-path-walk) (API-reverse-path-walk)] /Names [(API-reverse-path-walk) 2925 0 R] >> endobj 5217 0 obj << /Limits [(API-rlimit-from-str) (API-rlimit-from-str)] /Names [(API-rlimit-from-str) 2880 0 R] >> endobj 5218 0 obj << /Limits [(API-s32-arg) (API-s32-arg)] /Names [(API-s32-arg) 530 0 R] >> endobj 5219 0 obj << /Limits [(API-s64-arg) (API-s64-arg)] /Names [(API-s64-arg) 533 0 R] >> endobj 5220 0 obj << /Limits [(API-sa-flags-str) (API-sa-flags-str)] /Names [(API-sa-flags-str) 2606 0 R] >> endobj 5221 0 obj << /Limits [(API-sa-handler-str) (API-sa-handler-str)] /Names [(API-sa-handler-str) 2609 0 R] >> endobj 5222 0 obj << /Limits [(API-scheduler-balance) (API-scheduler-balance)] /Names [(API-scheduler-balance) 1264 0 R] >> endobj 5223 0 obj << /Limits [(API-scheduler-cpu-off) (API-scheduler-cpu-off)] /Names [(API-scheduler-cpu-off) 1267 0 R] >> endobj 5224 0 obj << /Limits [(API-scheduler-cpu-on) (API-scheduler-cpu-on)] /Names [(API-scheduler-cpu-on) 1270 0 R] >> endobj 5225 0 obj << /Limits [(API-scheduler-ctxswitch) (API-scheduler-ctxswitch)] /Names [(API-scheduler-ctxswitch) 1273 0 R] >> endobj 5226 0 obj << /Limits [(API-scheduler-kthread-stop) (API-scheduler-kthread-stop)] /Names [(API-scheduler-kthread-stop) 1276 0 R] >> endobj 5227 0 obj << /Limits [(API-scheduler-kthread-stop-return) (API-scheduler-kthread-stop-return)] /Names [(API-scheduler-kthread-stop-return) 1279 0 R] >> endobj 5228 0 obj << /Limits [(API-scheduler-migrate) (API-scheduler-migrate)] /Names [(API-scheduler-migrate) 1282 0 R] >> endobj 5229 0 obj << /Limits [(API-scheduler-process-exit) (API-scheduler-process-exit)] /Names [(API-scheduler-process-exit) 1285 0 R] >> endobj 5230 0 obj << /Limits [(API-scheduler-process-fork) (API-scheduler-process-fork)] /Names [(API-scheduler-process-fork) 1288 0 R] >> endobj 5231 0 obj << /Limits [(API-scheduler-process-free) (API-scheduler-process-free)] /Names [(API-scheduler-process-free) 1291 0 R] >> endobj 5232 0 obj << /Limits [(API-scheduler-process-wait) (API-scheduler-process-wait)] /Names [(API-scheduler-process-wait) 1294 0 R] >> endobj 5233 0 obj << /Limits [(API-scheduler-signal-send) (API-scheduler-signal-send)] /Names [(API-scheduler-signal-send) 1297 0 R] >> endobj 5234 0 obj << /Limits [(API-scheduler-tick) (API-scheduler-tick)] /Names [(API-scheduler-tick) 1300 0 R] >> endobj 5235 0 obj << /Limits [(API-scheduler-wait-task) (API-scheduler-wait-task)] /Names [(API-scheduler-wait-task) 1303 0 R] >> endobj 5236 0 obj << /Limits [(API-scheduler-wakeup) (API-scheduler-wakeup)] /Names [(API-scheduler-wakeup) 1306 0 R] >> endobj 5237 0 obj << /Limits [(API-scheduler-wakeup-new) (API-scheduler-wakeup-new)] /Names [(API-scheduler-wakeup-new) 1474 0 R] >> endobj 5238 0 obj << /Limits [(API-scsi-iocompleted) (API-scsi-iocompleted)] /Names [(API-scsi-iocompleted) 1538 0 R] >> endobj 5239 0 obj << /Limits [(API-scsi-iodispatching) (API-scsi-iodispatching)] /Names [(API-scsi-iodispatching) 1541 0 R] >> endobj 5240 0 obj << /Limits [(API-scsi-iodone) (API-scsi-iodone)] /Names [(API-scsi-iodone) 1544 0 R] >> endobj 5241 0 obj << /Limits [(API-scsi-ioentry) (API-scsi-ioentry)] /Names [(API-scsi-ioentry) 1547 0 R] >> endobj 5242 0 obj << /Limits [(API-scsi-ioexecute) (API-scsi-ioexecute)] /Names [(API-scsi-ioexecute) 1550 0 R] >> endobj 5243 0 obj << /Limits [(API-scsi-set-state) (API-scsi-set-state)] /Names [(API-scsi-set-state) 1553 0 R] >> endobj 5244 0 obj << /Limits [(API-set-kernel-char) (API-set-kernel-char)] /Names [(API-set-kernel-char) 3301 0 R] >> endobj 5245 0 obj << /Limits [(API-set-kernel-int) (API-set-kernel-int)] /Names [(API-set-kernel-int) 3304 0 R] >> endobj 5246 0 obj << /Limits [(API-set-kernel-long) (API-set-kernel-long)] /Names [(API-set-kernel-long) 3472 0 R] >> endobj 5247 0 obj << /Limits [(API-set-kernel-pointer) (API-set-kernel-pointer)] /Names [(API-set-kernel-pointer) 3476 0 R] >> endobj 5248 0 obj << /Limits [(API-set-kernel-short) (API-set-kernel-short)] /Names [(API-set-kernel-short) 3479 0 R] >> endobj 5249 0 obj << /Limits [(API-set-kernel-string) (API-set-kernel-string)] /Names [(API-set-kernel-string) 3482 0 R] >> endobj 5250 0 obj << /Limits [(API-set-kernel-string-n) (API-set-kernel-string-n)] /Names [(API-set-kernel-string-n) 3485 0 R] >> endobj 5251 0 obj << /Limits [(API-sid) (API-sid)] /Names [(API-sid) 536 0 R] >> endobj 5252 0 obj << /Limits [(API-signal-check-ignored) (API-signal-check-ignored)] /Names [(API-signal-check-ignored) 2618 0 R] >> endobj 5253 0 obj << /Limits [(API-signal-check-ignored-return) (API-signal-check-ignored-return)] /Names [(API-signal-check-ignored-return) 2621 0 R] >> endobj 5254 0 obj << /Limits [(API-signal-checkperm) (API-signal-checkperm)] /Names [(API-signal-checkperm) 2624 0 R] >> endobj 5255 0 obj << /Limits [(API-signal-checkperm-return) (API-signal-checkperm-return)] /Names [(API-signal-checkperm-return) 2627 0 R] >> endobj 5256 0 obj << /Limits [(API-signal-do-action) (API-signal-do-action)] /Names [(API-signal-do-action) 2630 0 R] >> endobj 5257 0 obj << /Limits [(API-signal-do-action-return) (API-signal-do-action-return)] /Names [(API-signal-do-action-return) 2633 0 R] >> endobj 5258 0 obj << /Limits [(API-signal-flush) (API-signal-flush)] /Names [(API-signal-flush) 2636 0 R] >> endobj 5259 0 obj << /Limits [(API-signal-force-segv) (API-signal-force-segv)] /Names [(API-signal-force-segv) 2639 0 R] >> endobj 5260 0 obj << /Limits [(API-signal-force-segv-return) (API-signal-force-segv-return)] /Names [(API-signal-force-segv-return) 2642 0 R] >> endobj 5261 0 obj << /Limits [(API-signal-handle) (API-signal-handle)] /Names [(API-signal-handle) 2645 0 R] >> endobj 5262 0 obj << /Limits [(API-signal-handle-return) (API-signal-handle-return)] /Names [(API-signal-handle-return) 2648 0 R] >> endobj 5263 0 obj << /Limits [(API-signal-pending) (API-signal-pending)] /Names [(API-signal-pending) 2816 0 R] >> endobj 5264 0 obj << /Limits [(API-signal-pending-return) (API-signal-pending-return)] /Names [(API-signal-pending-return) 2820 0 R] >> endobj 5265 0 obj << /Limits [(API-signal-procmask) (API-signal-procmask)] /Names [(API-signal-procmask) 2823 0 R] >> endobj 5266 0 obj << /Limits [(API-signal-procmask-return) (API-signal-procmask-return)] /Names [(API-signal-procmask-return) 2826 0 R] >> endobj 5267 0 obj << /Limits [(API-signal-send) (API-signal-send)] /Names [(API-signal-send) 2829 0 R] >> endobj 5268 0 obj << /Limits [(API-signal-send-return) (API-signal-send-return)] /Names [(API-signal-send-return) 2832 0 R] >> endobj 5269 0 obj << /Limits [(API-signal-send-sig-queue) (API-signal-send-sig-queue)] /Names [(API-signal-send-sig-queue) 2835 0 R] >> endobj 5270 0 obj << /Limits [(API-signal-send-sig-queue-return) (API-signal-send-sig-queue-return)] /Names [(API-signal-send-sig-queue-return) 2838 0 R] >> endobj 5271 0 obj << /Limits [(API-signal-str) (API-signal-str)] /Names [(API-signal-str) 2612 0 R] >> endobj 5272 0 obj << /Limits [(API-signal-sys-tgkill) (API-signal-sys-tgkill)] /Names [(API-signal-sys-tgkill) 2841 0 R] >> endobj 5273 0 obj << /Limits [(API-signal-sys-tgkill-return) (API-signal-sys-tgkill-return)] /Names [(API-signal-sys-tgkill-return) 2844 0 R] >> endobj 5274 0 obj << /Limits [(API-signal-sys-tkill) (API-signal-sys-tkill)] /Names [(API-signal-sys-tkill) 2847 0 R] >> endobj 5275 0 obj << /Limits [(API-signal-syskill) (API-signal-syskill)] /Names [(API-signal-syskill) 2850 0 R] >> endobj 5276 0 obj << /Limits [(API-signal-syskill-return) (API-signal-syskill-return)] /Names [(API-signal-syskill-return) 2853 0 R] >> endobj 5277 0 obj << /Limits [(API-signal-systkill-return) (API-signal-systkill-return)] /Names [(API-signal-systkill-return) 2856 0 R] >> endobj 5278 0 obj << /Limits [(API-signal-wakeup) (API-signal-wakeup)] /Names [(API-signal-wakeup) 2859 0 R] >> endobj 5279 0 obj << /Limits [(API-sigset-mask-str) (API-sigset-mask-str)] /Names [(API-sigset-mask-str) 2615 0 R] >> endobj 5280 0 obj << /Limits [(API-sock-fam-num2str) (API-sock-fam-num2str)] /Names [(API-sock-fam-num2str) 2197 0 R] >> endobj 5281 0 obj << /Limits [(API-sock-fam-str2num) (API-sock-fam-str2num)] /Names [(API-sock-fam-str2num) 2200 0 R] >> endobj 5282 0 obj << /Limits [(API-sock-prot-num2str) (API-sock-prot-num2str)] /Names [(API-sock-prot-num2str) 2203 0 R] >> endobj 5283 0 obj << /Limits [(API-sock-prot-str2num) (API-sock-prot-str2num)] /Names [(API-sock-prot-str2num) 2206 0 R] >> endobj 5284 0 obj << /Limits [(API-sock-state-num2str) (API-sock-state-num2str)] /Names [(API-sock-state-num2str) 2209 0 R] >> endobj 5285 0 obj << /Limits [(API-sock-state-str2num) (API-sock-state-str2num)] /Names [(API-sock-state-str2num) 2212 0 R] >> endobj 5286 0 obj << /Limits [(API-socket-aio-read) (API-socket-aio-read)] /Names [(API-socket-aio-read) 2215 0 R] >> endobj 5287 0 obj << /Limits [(API-socket-aio-read-return) (API-socket-aio-read-return)] /Names [(API-socket-aio-read-return) 2218 0 R] >> endobj 5288 0 obj << /Limits [(API-socket-aio-write) (API-socket-aio-write)] /Names [(API-socket-aio-write) 2221 0 R] >> endobj 5289 0 obj << /Limits [(API-socket-aio-write-return) (API-socket-aio-write-return)] /Names [(API-socket-aio-write-return) 2224 0 R] >> endobj 5290 0 obj << /Limits [(API-socket-close) (API-socket-close)] /Names [(API-socket-close) 2227 0 R] >> endobj 5291 0 obj << /Limits [(API-socket-close-return) (API-socket-close-return)] /Names [(API-socket-close-return) 2230 0 R] >> endobj 5292 0 obj << /Limits [(API-socket-create) (API-socket-create)] /Names [(API-socket-create) 2233 0 R] >> endobj 5293 0 obj << /Limits [(API-socket-create-return) (API-socket-create-return)] /Names [(API-socket-create-return) 2236 0 R] >> endobj 5294 0 obj << /Limits [(API-socket-read-iter) (API-socket-read-iter)] /Names [(API-socket-read-iter) 2239 0 R] >> endobj 5295 0 obj << /Limits [(API-socket-read-iter-return) (API-socket-read-iter-return)] /Names [(API-socket-read-iter-return) 2242 0 R] >> endobj 5296 0 obj << /Limits [(API-socket-readv) (API-socket-readv)] /Names [(API-socket-readv) 2245 0 R] >> endobj 5297 0 obj << /Limits [(API-socket-readv-return) (API-socket-readv-return)] /Names [(API-socket-readv-return) 2248 0 R] >> endobj 5298 0 obj << /Limits [(API-socket-receive) (API-socket-receive)] /Names [(API-socket-receive) 2251 0 R] >> endobj 5299 0 obj << /Limits [(API-socket-recvmsg) (API-socket-recvmsg)] /Names [(API-socket-recvmsg) 2254 0 R] >> endobj 5300 0 obj << /Limits [(API-socket-recvmsg-return) (API-socket-recvmsg-return)] /Names [(API-socket-recvmsg-return) 2257 0 R] >> endobj 5301 0 obj << /Limits [(API-socket-send) (API-socket-send)] /Names [(API-socket-send) 2260 0 R] >> endobj 5302 0 obj << /Limits [(API-socket-sendmsg) (API-socket-sendmsg)] /Names [(API-socket-sendmsg) 2263 0 R] >> endobj 5303 0 obj << /Limits [(API-socket-sendmsg-return) (API-socket-sendmsg-return)] /Names [(API-socket-sendmsg-return) 2266 0 R] >> endobj 5304 0 obj << /Limits [(API-socket-write-iter) (API-socket-write-iter)] /Names [(API-socket-write-iter) 2269 0 R] >> endobj 5305 0 obj << /Limits [(API-socket-write-iter-return) (API-socket-write-iter-return)] /Names [(API-socket-write-iter-return) 2272 0 R] >> endobj 5306 0 obj << /Limits [(API-socket-writev) (API-socket-writev)] /Names [(API-socket-writev) 2275 0 R] >> endobj 5307 0 obj << /Limits [(API-socket-writev-return) (API-socket-writev-return)] /Names [(API-socket-writev-return) 2278 0 R] >> endobj 5308 0 obj << /Limits [(API-softirq-entry) (API-softirq-entry)] /Names [(API-softirq-entry) 1601 0 R] >> endobj 5309 0 obj << /Limits [(API-softirq-exit) (API-softirq-exit)] /Names [(API-softirq-exit) 1604 0 R] >> endobj 5310 0 obj << /Limits [(API-speculate) (API-speculate)] /Names [(API-speculate) 4141 0 R] >> endobj 5311 0 obj << /Limits [(API-speculation) (API-speculation)] /Names [(API-speculation) 4144 0 R] >> endobj 5312 0 obj << /Limits [(API-sprint-backtrace) (API-sprint-backtrace)] /Names [(API-sprint-backtrace) 539 0 R] >> endobj 5313 0 obj << /Limits [(API-sprint-loadavg) (API-sprint-loadavg)] /Names [(API-sprint-loadavg) 2567 0 R] >> endobj 5314 0 obj << /Limits [(API-sprint-stack) (API-sprint-stack)] /Names [(API-sprint-stack) 542 0 R] >> endobj 5315 0 obj << /Limits [(API-sprint-syms) (API-sprint-syms)] /Names [(API-sprint-syms) 545 0 R] >> endobj 5316 0 obj << /Limits [(API-sprint-ubacktrace) (API-sprint-ubacktrace)] /Names [(API-sprint-ubacktrace) 548 0 R] >> endobj 5317 0 obj << /Limits [(API-sprint-ustack) (API-sprint-ustack)] /Names [(API-sprint-ustack) 551 0 R] >> endobj 5318 0 obj << /Limits [(API-sprint-usyms) (API-sprint-usyms)] /Names [(API-sprint-usyms) 554 0 R] >> endobj 5319 0 obj << /Limits [(API-stack) (API-stack)] /Names [(API-stack) 557 0 R] >> endobj 5320 0 obj << /Limits [(API-stack-size) (API-stack-size)] /Names [(API-stack-size) 560 0 R] >> endobj 5321 0 obj << /Limits [(API-stack-unused) (API-stack-unused)] /Names [(API-stack-unused) 563 0 R] >> endobj 5322 0 obj << /Limits [(API-stack-used) (API-stack-used)] /Names [(API-stack-used) 566 0 R] >> endobj 5323 0 obj << /Limits [(API-stap-cache-add-mod) (API-stap-cache-add-mod)] /Names [(API-stap-cache-add-mod) 3584 0 R] >> endobj 5324 0 obj << /Limits [(API-stap-cache-add-nss) (API-stap-cache-add-nss)] /Names [(API-stap-cache-add-nss) 3587 0 R] >> endobj 5325 0 obj << /Limits [(API-stap-cache-add-src) (API-stap-cache-add-src)] /Names [(API-stap-cache-add-src) 3590 0 R] >> endobj 5326 0 obj << /Limits [(API-stap-cache-clean) (API-stap-cache-clean)] /Names [(API-stap-cache-clean) 3593 0 R] >> endobj 5327 0 obj << /Limits [(API-stap-cache-get) (API-stap-cache-get)] /Names [(API-stap-cache-get) 3596 0 R] >> endobj 5328 0 obj << /Limits [(API-stap-pass0) (API-stap-pass0)] /Names [(API-stap-pass0) 3599 0 R] >> endobj 5329 0 obj << /Limits [(API-stap-pass0-end) (API-stap-pass0-end)] /Names [(API-stap-pass0-end) 3602 0 R] >> endobj 5330 0 obj << /Limits [(API-stap-pass1-end) (API-stap-pass1-end)] /Names [(API-stap-pass1-end) 3605 0 R] >> endobj 5331 0 obj << /Limits [(API-stap-pass1a) (API-stap-pass1a)] /Names [(API-stap-pass1a) 3608 0 R] >> endobj 5332 0 obj << /Limits [(API-stap-pass1b) (API-stap-pass1b)] /Names [(API-stap-pass1b) 3611 0 R] >> endobj 5333 0 obj << /Limits [(API-stap-pass2) (API-stap-pass2)] /Names [(API-stap-pass2) 3614 0 R] >> endobj 5334 0 obj << /Limits [(API-stap-pass2-end) (API-stap-pass2-end)] /Names [(API-stap-pass2-end) 3617 0 R] >> endobj 5335 0 obj << /Limits [(API-stap-pass3) (API-stap-pass3)] /Names [(API-stap-pass3) 3620 0 R] >> endobj 5336 0 obj << /Limits [(API-stap-pass3-end) (API-stap-pass3-end)] /Names [(API-stap-pass3-end) 3623 0 R] >> endobj 5337 0 obj << /Limits [(API-stap-pass4) (API-stap-pass4)] /Names [(API-stap-pass4) 3626 0 R] >> endobj 5338 0 obj << /Limits [(API-stap-pass4-end) (API-stap-pass4-end)] /Names [(API-stap-pass4-end) 3629 0 R] >> endobj 5339 0 obj << /Limits [(API-stap-pass5) (API-stap-pass5)] /Names [(API-stap-pass5) 3632 0 R] >> endobj 5340 0 obj << /Limits [(API-stap-pass5-end) (API-stap-pass5-end)] /Names [(API-stap-pass5-end) 3800 0 R] >> endobj 5341 0 obj << /Limits [(API-stap-pass6) (API-stap-pass6)] /Names [(API-stap-pass6) 3804 0 R] >> endobj 5342 0 obj << /Limits [(API-stap-pass6-end) (API-stap-pass6-end)] /Names [(API-stap-pass6-end) 3807 0 R] >> endobj 5343 0 obj << /Limits [(API-stap-system) (API-stap-system)] /Names [(API-stap-system) 3810 0 R] >> endobj 5344 0 obj << /Limits [(API-stap-system-return) (API-stap-system-return)] /Names [(API-stap-system-return) 3813 0 R] >> endobj 5345 0 obj << /Limits [(API-stap-system-spawn) (API-stap-system-spawn)] /Names [(API-stap-system-spawn) 3816 0 R] >> endobj 5346 0 obj << /Limits [(API-stapio-receive-control-message) (API-stapio-receive-control-message)] /Names [(API-stapio-receive-control-message) 3819 0 R] >> endobj 5347 0 obj << /Limits [(API-staprun-insert-module) (API-staprun-insert-module)] /Names [(API-staprun-insert-module) 3822 0 R] >> endobj 5348 0 obj << /Limits [(API-staprun-remove-module) (API-staprun-remove-module)] /Names [(API-staprun-remove-module) 3825 0 R] >> endobj 5349 0 obj << /Limits [(API-staprun-send-control-message) (API-staprun-send-control-message)] /Names [(API-staprun-send-control-message) 3828 0 R] >> endobj 5350 0 obj << /Limits [(API-start-stopwatch) (API-start-stopwatch)] /Names [(API-start-stopwatch) 954 0 R] >> endobj 5351 0 obj << /Limits [(API-stop-stopwatch) (API-stop-stopwatch)] /Names [(API-stop-stopwatch) 957 0 R] >> endobj 5352 0 obj << /Limits [(API-stp-pid) (API-stp-pid)] /Names [(API-stp-pid) 569 0 R] >> endobj 5353 0 obj << /Limits [(API-str-replace) (API-str-replace)] /Names [(API-str-replace) 3512 0 R] >> endobj 5354 0 obj << /Limits [(API-string-quoted) (API-string-quoted)] /Names [(API-string-quoted) 3515 0 R] >> endobj 5355 0 obj << /Limits [(API-stringat) (API-stringat)] /Names [(API-stringat) 3518 0 R] >> endobj 5356 0 obj << /Limits [(API-strlen) (API-strlen)] /Names [(API-strlen) 3521 0 R] >> endobj 5357 0 obj << /Limits [(API-strtol) (API-strtol)] /Names [(API-strtol) 3524 0 R] >> endobj 5358 0 obj << /Limits [(API-substr) (API-substr)] /Names [(API-substr) 3527 0 R] >> endobj 5359 0 obj << /Limits [(API-sunrpc-clnt-bind-new-program) (API-sunrpc-clnt-bind-new-program)] /Names [(API-sunrpc-clnt-bind-new-program) 1923 0 R] >> endobj 5360 0 obj << /Limits [(API-sunrpc-clnt-call-async) (API-sunrpc-clnt-call-async)] /Names [(API-sunrpc-clnt-call-async) 1926 0 R] >> endobj 5361 0 obj << /Limits [(API-sunrpc-clnt-call-sync) (API-sunrpc-clnt-call-sync)] /Names [(API-sunrpc-clnt-call-sync) 1929 0 R] >> endobj 5362 0 obj << /Limits [(API-sunrpc-clnt-clone-client) (API-sunrpc-clnt-clone-client)] /Names [(API-sunrpc-clnt-clone-client) 1932 0 R] >> endobj 5363 0 obj << /Limits [(API-sunrpc-clnt-create-client) (API-sunrpc-clnt-create-client)] /Names [(API-sunrpc-clnt-create-client) 1935 0 R] >> endobj 5364 0 obj << /Limits [(API-sunrpc-clnt-restart-call) (API-sunrpc-clnt-restart-call)] /Names [(API-sunrpc-clnt-restart-call) 1938 0 R] >> endobj 5365 0 obj << /Limits [(API-sunrpc-clnt-shutdown-client) (API-sunrpc-clnt-shutdown-client)] /Names [(API-sunrpc-clnt-shutdown-client) 1941 0 R] >> endobj 5366 0 obj << /Limits [(API-sunrpc-sched-delay) (API-sunrpc-sched-delay)] /Names [(API-sunrpc-sched-delay) 1944 0 R] >> endobj 5367 0 obj << /Limits [(API-sunrpc-sched-execute) (API-sunrpc-sched-execute)] /Names [(API-sunrpc-sched-execute) 1947 0 R] >> endobj 5368 0 obj << /Limits [(API-sunrpc-sched-new-task) (API-sunrpc-sched-new-task)] /Names [(API-sunrpc-sched-new-task) 1950 0 R] >> endobj 5369 0 obj << /Limits [(API-sunrpc-sched-release-task) (API-sunrpc-sched-release-task)] /Names [(API-sunrpc-sched-release-task) 1953 0 R] >> endobj 5370 0 obj << /Limits [(API-sunrpc-svc-create) (API-sunrpc-svc-create)] /Names [(API-sunrpc-svc-create) 1956 0 R] >> endobj 5371 0 obj << /Limits [(API-sunrpc-svc-destroy) (API-sunrpc-svc-destroy)] /Names [(API-sunrpc-svc-destroy) 1959 0 R] >> endobj 5372 0 obj << /Limits [(API-sunrpc-svc-drop) (API-sunrpc-svc-drop)] /Names [(API-sunrpc-svc-drop) 1962 0 R] >> endobj 5373 0 obj << /Limits [(API-sunrpc-svc-process) (API-sunrpc-svc-process)] /Names [(API-sunrpc-svc-process) 1965 0 R] >> endobj 5374 0 obj << /Limits [(API-sunrpc-svc-recv) (API-sunrpc-svc-recv)] /Names [(API-sunrpc-svc-recv) 1968 0 R] >> endobj 5375 0 obj << /Limits [(API-sunrpc-svc-register) (API-sunrpc-svc-register)] /Names [(API-sunrpc-svc-register) 1971 0 R] >> endobj 5376 0 obj << /Limits [(API-sunrpc-svc-send) (API-sunrpc-svc-send)] /Names [(API-sunrpc-svc-send) 1974 0 R] >> endobj 5377 0 obj << /Limits [(API-switch-file) (API-switch-file)] /Names [(API-switch-file) 4192 0 R] >> endobj 5378 0 obj << /Limits [(API-symdata) (API-symdata)] /Names [(API-symdata) 572 0 R] >> endobj 5379 0 obj << /Limits [(API-symfile) (API-symfile)] /Names [(API-symfile) 575 0 R] >> endobj 5380 0 obj << /Limits [(API-symfileline) (API-symfileline)] /Names [(API-symfileline) 578 0 R] >> endobj 5381 0 obj << /Limits [(API-symline) (API-symline)] /Names [(API-symline) 581 0 R] >> endobj 5382 0 obj << /Limits [(API-symname) (API-symname)] /Names [(API-symname) 584 0 R] >> endobj 5383 0 obj << /Limits [(API-system) (API-system)] /Names [(API-system) 978 0 R] >> endobj 5384 0 obj << /Limits [(API-target) (API-target)] /Names [(API-target) 587 0 R] >> endobj 5385 0 obj << /Limits [(API-target-set-pid) (API-target-set-pid)] /Names [(API-target-set-pid) 2570 0 R] >> endobj 5386 0 obj << /Limits [(API-target-set-report) (API-target-set-report)] /Names [(API-target-set-report) 2573 0 R] >> endobj 5387 0 obj << /Limits [(API-task-ancestry) (API-task-ancestry)] /Names [(API-task-ancestry) 590 0 R] >> endobj 5388 0 obj << /Limits [(API-task-backtrace) (API-task-backtrace)] /Names [(API-task-backtrace) 593 0 R] >> endobj 5389 0 obj << /Limits [(API-task-cpu) (API-task-cpu)] /Names [(API-task-cpu) 596 0 R] >> endobj 5390 0 obj << /Limits [(API-task-current) (API-task-current)] /Names [(API-task-current) 599 0 R] >> endobj 5391 0 obj << /Limits [(API-task-cwd-path) (API-task-cwd-path)] /Names [(API-task-cwd-path) 602 0 R] >> endobj 5392 0 obj << /Limits [(API-task-dentry-path) (API-task-dentry-path)] /Names [(API-task-dentry-path) 2928 0 R] >> endobj 5393 0 obj << /Limits [(API-task-egid) (API-task-egid)] /Names [(API-task-egid) 605 0 R] >> endobj 5394 0 obj << /Limits [(API-task-euid) (API-task-euid)] /Names [(API-task-euid) 608 0 R] >> endobj 5395 0 obj << /Limits [(API-task-exe-file) (API-task-exe-file)] /Names [(API-task-exe-file) 611 0 R] >> endobj 5396 0 obj << /Limits [(API-task-execname) (API-task-execname)] /Names [(API-task-execname) 614 0 R] >> endobj 5397 0 obj << /Limits [(API-task-fd-lookup) (API-task-fd-lookup)] /Names [(API-task-fd-lookup) 617 0 R] >> endobj 5398 0 obj << /Limits [(API-task-gid) (API-task-gid)] /Names [(API-task-gid) 620 0 R] >> endobj 5399 0 obj << /Limits [(API-task-max-file-handles) (API-task-max-file-handles)] /Names [(API-task-max-file-handles) 623 0 R] >> endobj 5400 0 obj << /Limits [(API-task-nice) (API-task-nice)] /Names [(API-task-nice) 626 0 R] >> endobj 5401 0 obj << /Limits [(API-task-ns-egid) (API-task-ns-egid)] /Names [(API-task-ns-egid) 629 0 R] >> endobj 5402 0 obj << /Limits [(API-task-ns-euid) (API-task-ns-euid)] /Names [(API-task-ns-euid) 632 0 R] >> endobj 5403 0 obj << /Limits [(API-task-ns-gid) (API-task-ns-gid)] /Names [(API-task-ns-gid) 635 0 R] >> endobj 5404 0 obj << /Limits [(API-task-ns-pid) (API-task-ns-pid)] /Names [(API-task-ns-pid) 638 0 R] >> endobj 5405 0 obj << /Limits [(API-task-ns-tid) (API-task-ns-tid)] /Names [(API-task-ns-tid) 641 0 R] >> endobj 5406 0 obj << /Limits [(API-task-ns-uid) (API-task-ns-uid)] /Names [(API-task-ns-uid) 644 0 R] >> endobj 5407 0 obj << /Limits [(API-task-open-file-handles) (API-task-open-file-handles)] /Names [(API-task-open-file-handles) 647 0 R] >> endobj 5408 0 obj << /Limits [(API-task-parent) (API-task-parent)] /Names [(API-task-parent) 650 0 R] >> endobj 5409 0 obj << /Limits [(API-task-pid) (API-task-pid)] /Names [(API-task-pid) 818 0 R] >> endobj 5410 0 obj << /Limits [(API-task-prio) (API-task-prio)] /Names [(API-task-prio) 822 0 R] >> endobj 5411 0 obj << /Limits [(API-task-start-time) (API-task-start-time)] /Names [(API-task-start-time) 1243 0 R] >> endobj 5412 0 obj << /Limits [(API-task-state) (API-task-state)] /Names [(API-task-state) 825 0 R] >> endobj 5413 0 obj << /Limits [(API-task-stime) (API-task-stime)] /Names [(API-task-stime) 1246 0 R] >> endobj 5414 0 obj << /Limits [(API-task-tid) (API-task-tid)] /Names [(API-task-tid) 828 0 R] >> endobj 5415 0 obj << /Limits [(API-task-time-string) (API-task-time-string)] /Names [(API-task-time-string) 1249 0 R] >> endobj 5416 0 obj << /Limits [(API-task-time-string-tid) (API-task-time-string-tid)] /Names [(API-task-time-string-tid) 1252 0 R] >> endobj 5417 0 obj << /Limits [(API-task-uid) (API-task-uid)] /Names [(API-task-uid) 831 0 R] >> endobj 5418 0 obj << /Limits [(API-task-utime) (API-task-utime)] /Names [(API-task-utime) 1255 0 R] >> endobj 5419 0 obj << /Limits [(API-tcp-disconnect) (API-tcp-disconnect)] /Names [(API-tcp-disconnect) 1977 0 R] >> endobj 5420 0 obj << /Limits [(API-tcp-disconnect-return) (API-tcp-disconnect-return)] /Names [(API-tcp-disconnect-return) 1980 0 R] >> endobj 5421 0 obj << /Limits [(API-tcp-receive) (API-tcp-receive)] /Names [(API-tcp-receive) 1983 0 R] >> endobj 5422 0 obj << /Limits [(API-tcp-recvmsg) (API-tcp-recvmsg)] /Names [(API-tcp-recvmsg) 1986 0 R] >> endobj 5423 0 obj << /Limits [(API-tcp-recvmsg-return) (API-tcp-recvmsg-return)] /Names [(API-tcp-recvmsg-return) 1989 0 R] >> endobj 5424 0 obj << /Limits [(API-tcp-sendmsg) (API-tcp-sendmsg)] /Names [(API-tcp-sendmsg) 1992 0 R] >> endobj 5425 0 obj << /Limits [(API-tcp-sendmsg-return) (API-tcp-sendmsg-return)] /Names [(API-tcp-sendmsg-return) 2160 0 R] >> endobj 5426 0 obj << /Limits [(API-tcp-setsockopt) (API-tcp-setsockopt)] /Names [(API-tcp-setsockopt) 2164 0 R] >> endobj 5427 0 obj << /Limits [(API-tcp-setsockopt-return) (API-tcp-setsockopt-return)] /Names [(API-tcp-setsockopt-return) 2167 0 R] >> endobj 5428 0 obj << /Limits [(API-tcpmib-ActiveOpens) (API-tcpmib-ActiveOpens)] /Names [(API-tcpmib-ActiveOpens) 2534 0 R] >> endobj 5429 0 obj << /Limits [(API-tcpmib-AttemptFails) (API-tcpmib-AttemptFails)] /Names [(API-tcpmib-AttemptFails) 2537 0 R] >> endobj 5430 0 obj << /Limits [(API-tcpmib-CurrEstab) (API-tcpmib-CurrEstab)] /Names [(API-tcpmib-CurrEstab) 2540 0 R] >> endobj 5431 0 obj << /Limits [(API-tcpmib-EstabResets) (API-tcpmib-EstabResets)] /Names [(API-tcpmib-EstabResets) 2543 0 R] >> endobj 5432 0 obj << /Limits [(API-tcpmib-InSegs) (API-tcpmib-InSegs)] /Names [(API-tcpmib-InSegs) 2546 0 R] >> endobj 5433 0 obj << /Limits [(API-tcpmib-OutRsts) (API-tcpmib-OutRsts)] /Names [(API-tcpmib-OutRsts) 2549 0 R] >> endobj 5434 0 obj << /Limits [(API-tcpmib-OutSegs) (API-tcpmib-OutSegs)] /Names [(API-tcpmib-OutSegs) 2552 0 R] >> endobj 5435 0 obj << /Limits [(API-tcpmib-PassiveOpens) (API-tcpmib-PassiveOpens)] /Names [(API-tcpmib-PassiveOpens) 2555 0 R] >> endobj 5436 0 obj << /Limits [(API-tcpmib-RetransSegs) (API-tcpmib-RetransSegs)] /Names [(API-tcpmib-RetransSegs) 2558 0 R] >> endobj 5437 0 obj << /Limits [(API-tcpmib-filter-key) (API-tcpmib-filter-key)] /Names [(API-tcpmib-filter-key) 2305 0 R] >> endobj 5438 0 obj << /Limits [(API-tcpmib-get-state) (API-tcpmib-get-state)] /Names [(API-tcpmib-get-state) 2308 0 R] >> endobj 5439 0 obj << /Limits [(API-tcpmib-local-addr) (API-tcpmib-local-addr)] /Names [(API-tcpmib-local-addr) 2311 0 R] >> endobj 5440 0 obj << /Limits [(API-tcpmib-local-port) (API-tcpmib-local-port)] /Names [(API-tcpmib-local-port) 2314 0 R] >> endobj 5441 0 obj << /Limits [(API-tcpmib-remote-addr) (API-tcpmib-remote-addr)] /Names [(API-tcpmib-remote-addr) 2317 0 R] >> endobj 5442 0 obj << /Limits [(API-tcpmib-remote-port) (API-tcpmib-remote-port)] /Names [(API-tcpmib-remote-port) 2320 0 R] >> endobj 5443 0 obj << /Limits [(API-text-str) (API-text-str)] /Names [(API-text-str) 3530 0 R] >> endobj 5444 0 obj << /Limits [(API-text-strn) (API-text-strn)] /Names [(API-text-strn) 3533 0 R] >> endobj 5445 0 obj << /Limits [(API-thread-indent) (API-thread-indent)] /Names [(API-thread-indent) 3575 0 R] >> endobj 5446 0 obj << /Limits [(API-thread-indent-depth) (API-thread-indent-depth)] /Names [(API-thread-indent-depth) 3578 0 R] >> endobj 5447 0 obj << /Limits [(API-tid) (API-tid)] /Names [(API-tid) 834 0 R] >> endobj 5448 0 obj << /Limits [(API-tokenize) (API-tokenize)] /Names [(API-tokenize) 3536 0 R] >> endobj 5449 0 obj << /Limits [(API-tty-init) (API-tty-init)] /Names [(API-tty-init) 1559 0 R] >> endobj 5450 0 obj << /Limits [(API-tty-ioctl) (API-tty-ioctl)] /Names [(API-tty-ioctl) 1562 0 R] >> endobj 5451 0 obj << /Limits [(API-tty-open) (API-tty-open)] /Names [(API-tty-open) 1565 0 R] >> endobj 5452 0 obj << /Limits [(API-tty-poll) (API-tty-poll)] /Names [(API-tty-poll) 1568 0 R] >> endobj 5453 0 obj << /Limits [(API-tty-read) (API-tty-read)] /Names [(API-tty-read) 1571 0 R] >> endobj 5454 0 obj << /Limits [(API-tty-receive) (API-tty-receive)] /Names [(API-tty-receive) 1574 0 R] >> endobj 5455 0 obj << /Limits [(API-tty-register) (API-tty-register)] /Names [(API-tty-register) 1577 0 R] >> endobj 5456 0 obj << /Limits [(API-tty-release) (API-tty-release)] /Names [(API-tty-release) 1580 0 R] >> endobj 5457 0 obj << /Limits [(API-tty-resize) (API-tty-resize)] /Names [(API-tty-resize) 1583 0 R] >> endobj 5458 0 obj << /Limits [(API-tty-unregister) (API-tty-unregister)] /Names [(API-tty-unregister) 1586 0 R] >> endobj 5459 0 obj << /Limits [(API-tty-write) (API-tty-write)] /Names [(API-tty-write) 1589 0 R] >> endobj 5460 0 obj << /Limits [(API-tz-ctime) (API-tz-ctime)] /Names [(API-tz-ctime) 966 0 R] >> endobj 5461 0 obj << /Limits [(API-tz-gmtoff) (API-tz-gmtoff)] /Names [(API-tz-gmtoff) 969 0 R] >> endobj 5462 0 obj << /Limits [(API-tz-name) (API-tz-name)] /Names [(API-tz-name) 972 0 R] >> endobj 5463 0 obj << /Limits [(API-u-register) (API-u-register)] /Names [(API-u-register) 843 0 R] >> endobj 5464 0 obj << /Limits [(API-u32-arg) (API-u32-arg)] /Names [(API-u32-arg) 837 0 R] >> endobj 5465 0 obj << /Limits [(API-u64-arg) (API-u64-arg)] /Names [(API-u64-arg) 840 0 R] >> endobj 5466 0 obj << /Limits [(API-uaddr) (API-uaddr)] /Names [(API-uaddr) 846 0 R] >> endobj 5467 0 obj << /Limits [(API-ubacktrace) (API-ubacktrace)] /Names [(API-ubacktrace) 849 0 R] >> endobj 5468 0 obj << /Limits [(API-ucallers) (API-ucallers)] /Names [(API-ucallers) 852 0 R] >> endobj 5469 0 obj << /Limits [(API-udelay) (API-udelay)] /Names [(API-udelay) 3500 0 R] >> endobj 5470 0 obj << /Limits [(API-udp-disconnect) (API-udp-disconnect)] /Names [(API-udp-disconnect) 2170 0 R] >> endobj 5471 0 obj << /Limits [(API-udp-disconnect-return) (API-udp-disconnect-return)] /Names [(API-udp-disconnect-return) 2173 0 R] >> endobj 5472 0 obj << /Limits [(API-udp-recvmsg) (API-udp-recvmsg)] /Names [(API-udp-recvmsg) 2176 0 R] >> endobj 5473 0 obj << /Limits [(API-udp-recvmsg-return) (API-udp-recvmsg-return)] /Names [(API-udp-recvmsg-return) 2179 0 R] >> endobj 5474 0 obj << /Limits [(API-udp-sendmsg) (API-udp-sendmsg)] /Names [(API-udp-sendmsg) 2182 0 R] >> endobj 5475 0 obj << /Limits [(API-udp-sendmsg-return) (API-udp-sendmsg-return)] /Names [(API-udp-sendmsg-return) 2185 0 R] >> endobj 5476 0 obj << /Limits [(API-uid) (API-uid)] /Names [(API-uid) 855 0 R] >> endobj 5477 0 obj << /Limits [(API-uint-arg) (API-uint-arg)] /Names [(API-uint-arg) 858 0 R] >> endobj 5478 0 obj << /Limits [(API-ulong-arg) (API-ulong-arg)] /Names [(API-ulong-arg) 861 0 R] >> endobj 5479 0 obj << /Limits [(API-ulonglong-arg) (API-ulonglong-arg)] /Names [(API-ulonglong-arg) 864 0 R] >> endobj 5480 0 obj << /Limits [(API-umodname) (API-umodname)] /Names [(API-umodname) 867 0 R] >> endobj 5481 0 obj << /Limits [(API-usecs-to-string) (API-usecs-to-string)] /Names [(API-usecs-to-string) 1258 0 R] >> endobj 5482 0 obj << /Limits [(API-user-char) (API-user-char)] /Names [(API-user-char) 3208 0 R] >> endobj 5483 0 obj << /Limits [(API-user-char-warn) (API-user-char-warn)] /Names [(API-user-char-warn) 3211 0 R] >> endobj 5484 0 obj << /Limits [(API-user-int) (API-user-int)] /Names [(API-user-int) 3214 0 R] >> endobj 5485 0 obj << /Limits [(API-user-int-warn) (API-user-int-warn)] /Names [(API-user-int-warn) 3229 0 R] >> endobj 5486 0 obj << /Limits [(API-user-int16) (API-user-int16)] /Names [(API-user-int16) 3217 0 R] >> endobj 5487 0 obj << /Limits [(API-user-int32) (API-user-int32)] /Names [(API-user-int32) 3220 0 R] >> endobj 5488 0 obj << /Limits [(API-user-int64) (API-user-int64)] /Names [(API-user-int64) 3223 0 R] >> endobj 5489 0 obj << /Limits [(API-user-int8) (API-user-int8)] /Names [(API-user-int8) 3226 0 R] >> endobj 5490 0 obj << /Limits [(API-user-long) (API-user-long)] /Names [(API-user-long) 3232 0 R] >> endobj 5491 0 obj << /Limits [(API-user-long-warn) (API-user-long-warn)] /Names [(API-user-long-warn) 3235 0 R] >> endobj 5492 0 obj << /Limits [(API-user-mode) (API-user-mode)] /Names [(API-user-mode) 870 0 R] >> endobj 5493 0 obj << /Limits [(API-user-short) (API-user-short)] /Names [(API-user-short) 3238 0 R] >> endobj 5494 0 obj << /Limits [(API-user-short-warn) (API-user-short-warn)] /Names [(API-user-short-warn) 3241 0 R] >> endobj 5495 0 obj << /Limits [(API-user-string) (API-user-string)] /Names [(API-user-string) 3244 0 R] >> endobj 5496 0 obj << /Limits [(API-user-string-n) (API-user-string-n)] /Names [(API-user-string-n) 3247 0 R] >> endobj 5497 0 obj << /Limits [(API-user-string-n-quoted) (API-user-string-n-quoted)] /Names [(API-user-string-n-quoted) 3250 0 R] >> endobj 5498 0 obj << /Limits [(API-user-string-n-warn) (API-user-string-n-warn)] /Names [(API-user-string-n-warn) 3253 0 R] >> endobj 5499 0 obj << /Limits [(API-user-string-quoted) (API-user-string-quoted)] /Names [(API-user-string-quoted) 3256 0 R] >> endobj 5500 0 obj << /Limits [(API-user-string-quoted-utf16) (API-user-string-quoted-utf16)] /Names [(API-user-string-quoted-utf16) 3259 0 R] >> endobj 5501 0 obj << /Limits [(API-user-string-quoted-utf32) (API-user-string-quoted-utf32)] /Names [(API-user-string-quoted-utf32) 3262 0 R] >> endobj 5502 0 obj << /Limits [(API-user-string-utf16) (API-user-string-utf16)] /Names [(API-user-string-utf16) 3265 0 R] >> endobj 5503 0 obj << /Limits [(API-user-string-utf32) (API-user-string-utf32)] /Names [(API-user-string-utf32) 3268 0 R] >> endobj 5504 0 obj << /Limits [(API-user-string-warn) (API-user-string-warn)] /Names [(API-user-string-warn) 3271 0 R] >> endobj 5505 0 obj << /Limits [(API-user-uint16) (API-user-uint16)] /Names [(API-user-uint16) 3274 0 R] >> endobj 5506 0 obj << /Limits [(API-user-uint32) (API-user-uint32)] /Names [(API-user-uint32) 3277 0 R] >> endobj 5507 0 obj << /Limits [(API-user-uint64) (API-user-uint64)] /Names [(API-user-uint64) 3280 0 R] >> endobj 5508 0 obj << /Limits [(API-user-uint8) (API-user-uint8)] /Names [(API-user-uint8) 3283 0 R] >> endobj 5509 0 obj << /Limits [(API-user-ulong) (API-user-ulong)] /Names [(API-user-ulong) 3286 0 R] >> endobj 5510 0 obj << /Limits [(API-user-ulong-warn) (API-user-ulong-warn)] /Names [(API-user-ulong-warn) 3289 0 R] >> endobj 5511 0 obj << /Limits [(API-user-ushort) (API-user-ushort)] /Names [(API-user-ushort) 3292 0 R] >> endobj 5512 0 obj << /Limits [(API-user-ushort-warn) (API-user-ushort-warn)] /Names [(API-user-ushort-warn) 3295 0 R] >> endobj 5513 0 obj << /Limits [(API-usrdev2kerndev) (API-usrdev2kerndev)] /Names [(API-usrdev2kerndev) 2895 0 R] >> endobj 5514 0 obj << /Limits [(API-ustack) (API-ustack)] /Names [(API-ustack) 873 0 R] >> endobj 5515 0 obj << /Limits [(API-usymdata) (API-usymdata)] /Names [(API-usymdata) 876 0 R] >> endobj 5516 0 obj << /Limits [(API-usymfile) (API-usymfile)] /Names [(API-usymfile) 879 0 R] >> endobj 5517 0 obj << /Limits [(API-usymfileline) (API-usymfileline)] /Names [(API-usymfileline) 882 0 R] >> endobj 5518 0 obj << /Limits [(API-usymline) (API-usymline)] /Names [(API-usymline) 885 0 R] >> endobj 5519 0 obj << /Limits [(API-usymname) (API-usymname)] /Names [(API-usymname) 888 0 R] >> endobj 5520 0 obj << /Limits [(API-vm-brk) (API-vm-brk)] /Names [(API-vm-brk) 1183 0 R] >> endobj 5521 0 obj << /Limits [(API-vm-fault-contains) (API-vm-fault-contains)] /Names [(API-vm-fault-contains) 1180 0 R] >> endobj 5522 0 obj << /Limits [(API-vm-kfree) (API-vm-kfree)] /Names [(API-vm-kfree) 1186 0 R] >> endobj 5523 0 obj << /Limits [(API-vm-kmalloc) (API-vm-kmalloc)] /Names [(API-vm-kmalloc) 1189 0 R] >> endobj 5524 0 obj << /Limits [(API-vm-kmalloc-node) (API-vm-kmalloc-node)] /Names [(API-vm-kmalloc-node) 1192 0 R] >> endobj 5525 0 obj << /Limits [(API-vm-kmem-cache-alloc) (API-vm-kmem-cache-alloc)] /Names [(API-vm-kmem-cache-alloc) 1195 0 R] >> endobj 5526 0 obj << /Limits [(API-vm-kmem-cache-alloc-node) (API-vm-kmem-cache-alloc-node)] /Names [(API-vm-kmem-cache-alloc-node) 1198 0 R] >> endobj 5527 0 obj << /Limits [(API-vm-kmem-cache-free) (API-vm-kmem-cache-free)] /Names [(API-vm-kmem-cache-free) 1201 0 R] >> endobj 5528 0 obj << /Limits [(API-vm-mmap) (API-vm-mmap)] /Names [(API-vm-mmap) 1204 0 R] >> endobj 5529 0 obj << /Limits [(API-vm-munmap) (API-vm-munmap)] /Names [(API-vm-munmap) 1207 0 R] >> endobj 5530 0 obj << /Limits [(API-vm-oom-kill) (API-vm-oom-kill)] /Names [(API-vm-oom-kill) 1210 0 R] >> endobj 5531 0 obj << /Limits [(API-vm-pagefault) (API-vm-pagefault)] /Names [(API-vm-pagefault) 1213 0 R] >> endobj 5532 0 obj << /Limits [(API-vm-pagefault-return) (API-vm-pagefault-return)] /Names [(API-vm-pagefault-return) 1216 0 R] >> endobj 5533 0 obj << /Limits [(API-vm-write-shared) (API-vm-write-shared)] /Names [(API-vm-write-shared) 1219 0 R] >> endobj 5534 0 obj << /Limits [(API-vm-write-shared-copy) (API-vm-write-shared-copy)] /Names [(API-vm-write-shared-copy) 1222 0 R] >> endobj 5535 0 obj << /Limits [(API-warn) (API-warn)] /Names [(API-warn) 2952 0 R] >> endobj 5536 0 obj << /Limits [(API-workqueue-create) (API-workqueue-create)] /Names [(API-workqueue-create) 1607 0 R] >> endobj 5537 0 obj << /Limits [(API-workqueue-destroy) (API-workqueue-destroy)] /Names [(API-workqueue-destroy) 1610 0 R] >> endobj 5538 0 obj << /Limits [(API-workqueue-execute) (API-workqueue-execute)] /Names [(API-workqueue-execute) 1613 0 R] >> endobj 5539 0 obj << /Limits [(API-workqueue-insert) (API-workqueue-insert)] /Names [(API-workqueue-insert) 1616 0 R] >> endobj 5540 0 obj << /Limits [(TapsetRef) (TapsetRef)] /Names [(TapsetRef) 4197 0 R] >> endobj 5541 0 obj << /Limits [(ansi.stp) (ansi.stp)] /Names [(ansi.stp) 3539 0 R] >> endobj 5542 0 obj << /Limits [(context_stp) (context_stp)] /Names [(context_stp) 175 0 R] >> endobj 5543 0 obj << /Limits [(conversions-guru.stp) (conversions-guru.stp)] /Names [(conversions-guru.stp) 3298 0 R] >> endobj 5544 0 obj << /Limits [(conversions.stp) (conversions.stp)] /Names [(conversions.stp) 3163 0 R] >> endobj 5545 0 obj << /Limits [(ctime.stp) (ctime.stp)] /Names [(ctime.stp) 960 0 R] >> endobj 5546 0 obj << /Limits [(dentry.stp) (dentry.stp)] /Names [(dentry.stp) 2898 0 R] >> endobj 5547 0 obj << /Limits [(dev.stp) (dev.stp)] /Names [(dev.stp) 2883 0 R] >> endobj 5548 0 obj << /Limits [(errno.stp) (errno.stp)] /Names [(errno.stp) 2862 0 R] >> endobj 5549 0 obj << /Limits [(guru-delay.stp) (guru-delay.stp)] /Names [(guru-delay.stp) 3488 0 R] >> endobj 5550 0 obj << /Limits [(introduction) (introduction)] /Names [(introduction) 171 0 R] >> endobj 5551 0 obj << /Limits [(iosched.stp) (iosched.stp)] /Names [(iosched.stp) 1478 0 R] >> endobj 5552 0 obj << /Limits [(irq.stp) (irq.stp)] /Names [(irq.stp) 1592 0 R] >> endobj 5553 0 obj << /Limits [(json.stp) (json.stp)] /Names [(json.stp) 4147 0 R] >> endobj 5554 0 obj << /Limits [(kprocess.stp) (kprocess.stp)] /Names [(kprocess.stp) 2561 0 R] >> endobj 5555 0 obj << /Limits [(logging.stp) (logging.stp)] /Names [(logging.stp) 2931 0 R] >> endobj 5556 0 obj << /Limits [(memory_stp) (memory_stp)] /Names [(memory_stp) 1146 0 R] >> endobj 5557 0 obj << /Limits [(networking.stp) (networking.stp)] /Names [(networking.stp) 1619 0 R] >> endobj 5558 0 obj << /Limits [(nfsd.stp) (nfsd.stp)] /Names [(nfsd.stp) 3831 0 R] >> endobj 5559 0 obj << /Limits [(queue_stats.stp) (queue_stats.stp)] /Names [(queue_stats.stp) 2955 0 R] >> endobj 5560 0 obj << /Limits [(random.stp) (random.stp)] /Names [(random.stp) 3157 0 R] >> endobj 5561 0 obj << /Limits [(rlimit.stp) (rlimit.stp)] /Names [(rlimit.stp) 2877 0 R] >> endobj 5562 0 obj << /Limits [(sched.stp) (sched.stp)] /Names [(sched.stp) 1261 0 R] >> endobj 5563 0 obj << /Limits [(scsi.stp) (scsi.stp)] /Names [(scsi.stp) 1535 0 R] >> endobj 5564 0 obj << /Limits [(signal.stp) (signal.stp)] /Names [(signal.stp) 2594 0 R] >> endobj 5565 0 obj << /Limits [(snmp.stp) (snmp.stp)] /Names [(snmp.stp) 2281 0 R] >> endobj 5566 0 obj << /Limits [(socket.stp) (socket.stp)] /Names [(socket.stp) 2188 0 R] >> endobj 5567 0 obj << /Limits [(speculation.stp) (speculation.stp)] /Names [(speculation.stp) 4132 0 R] >> endobj 5568 0 obj << /Limits [(stap_staticmarkers.stp) (stap_staticmarkers.stp)] /Names [(stap_staticmarkers.stp) 3581 0 R] >> endobj 5569 0 obj << /Limits [(string.stp) (string.stp)] /Names [(string.stp) 3503 0 R] >> endobj 5570 0 obj << /Limits [(switchfile.stp) (switchfile.stp)] /Names [(switchfile.stp) 4189 0 R] >> endobj 5571 0 obj << /Limits [(system.stp) (system.stp)] /Names [(system.stp) 975 0 R] >> endobj 5572 0 obj << /Limits [(task_time_stp) (task_time_stp)] /Names [(task_time_stp) 1225 0 R] >> endobj 5573 0 obj << /Limits [(timestamp_stp) (timestamp_stp)] /Names [(timestamp_stp) 891 0 R] >> endobj 5574 0 obj << /Limits [(tty.stp) (tty.stp)] /Names [(tty.stp) 1556 0 R] >> endobj 5575 0 obj << /Limits [(API-HZ) (tty.stp)] /Kids [4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4953 0 R 4954 0 R 4955 0 R 4956 0 R 4957 0 R 4958 0 R 4959 0 R 4960 0 R 4961 0 R 4962 0 R 4963 0 R 4964 0 R 4965 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R 5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R 5005 0 R 5006 0 R 5007 0 R 5008 0 R 5009 0 R 5010 0 R 5011 0 R 5012 0 R 5013 0 R 5014 0 R 5015 0 R 5016 0 R 5017 0 R 5018 0 R 5019 0 R 5020 0 R 5021 0 R 5022 0 R 5023 0 R 5024 0 R 5025 0 R 5026 0 R 5027 0 R 5028 0 R 5029 0 R 5030 0 R 5031 0 R 5032 0 R 5033 0 R 5034 0 R 5035 0 R 5036 0 R 5037 0 R 5038 0 R 5039 0 R 5040 0 R 5041 0 R 5042 0 R 5043 0 R 5044 0 R 5045 0 R 5046 0 R 5047 0 R 5048 0 R 5049 0 R 5050 0 R 5051 0 R 5052 0 R 5053 0 R 5054 0 R 5055 0 R 5056 0 R 5057 0 R 5058 0 R 5059 0 R 5060 0 R 5061 0 R 5062 0 R 5063 0 R 5064 0 R 5065 0 R 5066 0 R 5067 0 R 5068 0 R 5069 0 R 5070 0 R 5071 0 R 5072 0 R 5073 0 R 5074 0 R 5075 0 R 5076 0 R 5077 0 R 5078 0 R 5079 0 R 5080 0 R 5081 0 R 5082 0 R 5083 0 R 5084 0 R 5085 0 R 5086 0 R 5087 0 R 5088 0 R 5089 0 R 5090 0 R 5091 0 R 5092 0 R 5093 0 R 5094 0 R 5095 0 R 5096 0 R 5097 0 R 5098 0 R 5099 0 R 5100 0 R 5101 0 R 5102 0 R 5103 0 R 5104 0 R 5105 0 R 5106 0 R 5107 0 R 5108 0 R 5109 0 R 5110 0 R 5111 0 R 5112 0 R 5113 0 R 5114 0 R 5115 0 R 5116 0 R 5117 0 R 5118 0 R 5119 0 R 5120 0 R 5121 0 R 5122 0 R 5123 0 R 5124 0 R 5125 0 R 5126 0 R 5127 0 R 5128 0 R 5129 0 R 5130 0 R 5131 0 R 5132 0 R 5133 0 R 5134 0 R 5135 0 R 5136 0 R 5137 0 R 5138 0 R 5139 0 R 5140 0 R 5141 0 R 5142 0 R 5143 0 R 5144 0 R 5145 0 R 5146 0 R 5147 0 R 5148 0 R 5149 0 R 5150 0 R 5151 0 R 5152 0 R 5153 0 R 5154 0 R 5155 0 R 5156 0 R 5157 0 R 5158 0 R 5159 0 R 5160 0 R 5161 0 R 5162 0 R 5163 0 R 5164 0 R 5165 0 R 5166 0 R 5167 0 R 5168 0 R 5169 0 R 5170 0 R 5171 0 R 5172 0 R 5173 0 R 5174 0 R 5175 0 R 5176 0 R 5177 0 R 5178 0 R 5179 0 R 5180 0 R 5181 0 R 5182 0 R 5183 0 R 5184 0 R 5185 0 R 5186 0 R 5187 0 R 5188 0 R 5189 0 R 5190 0 R 5191 0 R 5192 0 R 5193 0 R 5194 0 R 5195 0 R 5196 0 R 5197 0 R 5198 0 R 5199 0 R 5200 0 R 5201 0 R 5202 0 R 5203 0 R 5204 0 R 5205 0 R 5206 0 R 5207 0 R 5208 0 R 5209 0 R 5210 0 R 5211 0 R 5212 0 R 5213 0 R 5214 0 R 5215 0 R 5216 0 R 5217 0 R 5218 0 R 5219 0 R 5220 0 R 5221 0 R 5222 0 R 5223 0 R 5224 0 R 5225 0 R 5226 0 R 5227 0 R 5228 0 R 5229 0 R 5230 0 R 5231 0 R 5232 0 R 5233 0 R 5234 0 R 5235 0 R 5236 0 R 5237 0 R 5238 0 R 5239 0 R 5240 0 R 5241 0 R 5242 0 R 5243 0 R 5244 0 R 5245 0 R 5246 0 R 5247 0 R 5248 0 R 5249 0 R 5250 0 R 5251 0 R 5252 0 R 5253 0 R 5254 0 R 5255 0 R 5256 0 R 5257 0 R 5258 0 R 5259 0 R 5260 0 R 5261 0 R 5262 0 R 5263 0 R 5264 0 R 5265 0 R 5266 0 R 5267 0 R 5268 0 R 5269 0 R 5270 0 R 5271 0 R 5272 0 R 5273 0 R 5274 0 R 5275 0 R 5276 0 R 5277 0 R 5278 0 R 5279 0 R 5280 0 R 5281 0 R 5282 0 R 5283 0 R 5284 0 R 5285 0 R 5286 0 R 5287 0 R 5288 0 R 5289 0 R 5290 0 R 5291 0 R 5292 0 R 5293 0 R 5294 0 R 5295 0 R 5296 0 R 5297 0 R 5298 0 R 5299 0 R 5300 0 R 5301 0 R 5302 0 R 5303 0 R 5304 0 R 5305 0 R 5306 0 R 5307 0 R 5308 0 R 5309 0 R 5310 0 R 5311 0 R 5312 0 R 5313 0 R 5314 0 R 5315 0 R 5316 0 R 5317 0 R 5318 0 R 5319 0 R 5320 0 R 5321 0 R 5322 0 R 5323 0 R 5324 0 R 5325 0 R 5326 0 R 5327 0 R 5328 0 R 5329 0 R 5330 0 R 5331 0 R 5332 0 R 5333 0 R 5334 0 R 5335 0 R 5336 0 R 5337 0 R 5338 0 R 5339 0 R 5340 0 R 5341 0 R 5342 0 R 5343 0 R 5344 0 R 5345 0 R 5346 0 R 5347 0 R 5348 0 R 5349 0 R 5350 0 R 5351 0 R 5352 0 R 5353 0 R 5354 0 R 5355 0 R 5356 0 R 5357 0 R 5358 0 R 5359 0 R 5360 0 R 5361 0 R 5362 0 R 5363 0 R 5364 0 R 5365 0 R 5366 0 R 5367 0 R 5368 0 R 5369 0 R 5370 0 R 5371 0 R 5372 0 R 5373 0 R 5374 0 R 5375 0 R 5376 0 R 5377 0 R 5378 0 R 5379 0 R 5380 0 R 5381 0 R 5382 0 R 5383 0 R 5384 0 R 5385 0 R 5386 0 R 5387 0 R 5388 0 R 5389 0 R 5390 0 R 5391 0 R 5392 0 R 5393 0 R 5394 0 R 5395 0 R 5396 0 R 5397 0 R 5398 0 R 5399 0 R 5400 0 R 5401 0 R 5402 0 R 5403 0 R 5404 0 R 5405 0 R 5406 0 R 5407 0 R 5408 0 R 5409 0 R 5410 0 R 5411 0 R 5412 0 R 5413 0 R 5414 0 R 5415 0 R 5416 0 R 5417 0 R 5418 0 R 5419 0 R 5420 0 R 5421 0 R 5422 0 R 5423 0 R 5424 0 R 5425 0 R 5426 0 R 5427 0 R 5428 0 R 5429 0 R 5430 0 R 5431 0 R 5432 0 R 5433 0 R 5434 0 R 5435 0 R 5436 0 R 5437 0 R 5438 0 R 5439 0 R 5440 0 R 5441 0 R 5442 0 R 5443 0 R 5444 0 R 5445 0 R 5446 0 R 5447 0 R 5448 0 R 5449 0 R 5450 0 R 5451 0 R 5452 0 R 5453 0 R 5454 0 R 5455 0 R 5456 0 R 5457 0 R 5458 0 R 5459 0 R 5460 0 R 5461 0 R 5462 0 R 5463 0 R 5464 0 R 5465 0 R 5466 0 R 5467 0 R 5468 0 R 5469 0 R 5470 0 R 5471 0 R 5472 0 R 5473 0 R 5474 0 R 5475 0 R 5476 0 R 5477 0 R 5478 0 R 5479 0 R 5480 0 R 5481 0 R 5482 0 R 5483 0 R 5484 0 R 5485 0 R 5486 0 R 5487 0 R 5488 0 R 5489 0 R 5490 0 R 5491 0 R 5492 0 R 5493 0 R 5494 0 R 5495 0 R 5496 0 R 5497 0 R 5498 0 R 5499 0 R 5500 0 R 5501 0 R 5502 0 R 5503 0 R 5504 0 R 5505 0 R 5506 0 R 5507 0 R 5508 0 R 5509 0 R 5510 0 R 5511 0 R 5512 0 R 5513 0 R 5514 0 R 5515 0 R 5516 0 R 5517 0 R 5518 0 R 5519 0 R 5520 0 R 5521 0 R 5522 0 R 5523 0 R 5524 0 R 5525 0 R 5526 0 R 5527 0 R 5528 0 R 5529 0 R 5530 0 R 5531 0 R 5532 0 R 5533 0 R 5534 0 R 5535 0 R 5536 0 R 5537 0 R 5538 0 R 5539 0 R 5540 0 R 5541 0 R 5542 0 R 5543 0 R 5544 0 R 5545 0 R 5546 0 R 5547 0 R 5548 0 R 5549 0 R 5550 0 R 5551 0 R 5552 0 R 5553 0 R 5554 0 R 5555 0 R 5556 0 R 5557 0 R 5558 0 R 5559 0 R 5560 0 R 5561 0 R 5562 0 R 5563 0 R 5564 0 R 5565 0 R 5566 0 R 5567 0 R 5568 0 R 5569 0 R 5570 0 R 5571 0 R 5572 0 R 5573 0 R 5574 0 R] >> endobj 1 0 obj << /Type /Pages /Count 708 /Kids [8 0 R 14 0 R 170 0 R 489 0 R 817 0 R 1145 0 R 1473 0 R 1831 0 R 2159 0 R 2487 0 R 2815 0 R 3143 0 R 3471 0 R 3799 0 R 4079 0 R 17 0 R 20 0 R 23 0 R 26 0 R 29 0 R 32 0 R 35 0 R 38 0 R 41 0 R 44 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R 74 0 R 77 0 R 80 0 R 83 0 R 86 0 R 89 0 R 92 0 R 95 0 R 98 0 R 101 0 R 104 0 R 107 0 R 110 0 R 113 0 R 116 0 R 119 0 R 122 0 R 125 0 R 128 0 R 131 0 R 134 0 R 137 0 R 140 0 R 143 0 R 146 0 R 149 0 R 152 0 R 155 0 R 158 0 R 161 0 R 164 0 R 167 0 R 327 0 R 330 0 R 333 0 R 336 0 R 339 0 R 342 0 R 345 0 R 348 0 R 351 0 R 354 0 R 357 0 R 360 0 R 363 0 R 366 0 R 369 0 R 372 0 R 375 0 R 378 0 R 381 0 R 384 0 R 387 0 R 390 0 R 393 0 R 396 0 R 399 0 R 402 0 R 405 0 R 408 0 R 411 0 R 414 0 R 417 0 R 420 0 R 423 0 R 426 0 R 429 0 R 432 0 R 435 0 R 438 0 R 441 0 R 444 0 R 447 0 R 450 0 R 453 0 R 456 0 R 459 0 R 462 0 R 465 0 R 468 0 R 471 0 R 474 0 R 477 0 R 480 0 R 483 0 R 486 0 R 655 0 R 658 0 R 661 0 R 664 0 R 667 0 R 670 0 R 673 0 R 676 0 R 679 0 R 682 0 R 685 0 R 688 0 R 691 0 R 694 0 R 697 0 R 700 0 R 703 0 R 706 0 R 709 0 R 712 0 R 715 0 R 718 0 R 721 0 R 724 0 R 727 0 R 730 0 R 733 0 R 736 0 R 739 0 R 742 0 R 745 0 R 748 0 R 751 0 R 754 0 R 757 0 R 760 0 R 763 0 R 766 0 R 769 0 R 772 0 R 775 0 R 778 0 R 781 0 R 784 0 R 787 0 R 790 0 R 793 0 R 796 0 R 799 0 R 802 0 R 805 0 R 808 0 R 811 0 R 814 0 R 983 0 R 986 0 R 989 0 R 992 0 R 995 0 R 998 0 R 1001 0 R 1004 0 R 1007 0 R 1010 0 R 1013 0 R 1016 0 R 1019 0 R 1022 0 R 1025 0 R 1028 0 R 1031 0 R 1034 0 R 1037 0 R 1040 0 R 1043 0 R 1046 0 R 1049 0 R 1052 0 R 1055 0 R 1058 0 R 1061 0 R 1064 0 R 1067 0 R 1070 0 R 1073 0 R 1076 0 R 1079 0 R 1082 0 R 1085 0 R 1088 0 R 1091 0 R 1094 0 R 1097 0 R 1100 0 R 1103 0 R 1106 0 R 1109 0 R 1112 0 R 1115 0 R 1118 0 R 1121 0 R 1124 0 R 1127 0 R 1130 0 R 1133 0 R 1136 0 R 1139 0 R 1142 0 R 1311 0 R 1314 0 R 1317 0 R 1320 0 R 1323 0 R 1326 0 R 1329 0 R 1332 0 R 1335 0 R 1338 0 R 1341 0 R 1344 0 R 1347 0 R 1350 0 R 1353 0 R 1356 0 R 1359 0 R 1362 0 R 1365 0 R 1368 0 R 1371 0 R 1374 0 R 1377 0 R 1380 0 R 1383 0 R 1386 0 R 1389 0 R 1392 0 R 1395 0 R 1398 0 R 1401 0 R 1404 0 R 1407 0 R 1410 0 R 1413 0 R 1416 0 R 1419 0 R 1422 0 R 1425 0 R 1428 0 R 1431 0 R 1434 0 R 1437 0 R 1440 0 R 1443 0 R 1446 0 R 1449 0 R 1452 0 R 1455 0 R 1458 0 R 1461 0 R 1464 0 R 1467 0 R 1470 0 R 1639 0 R 1642 0 R 1645 0 R 1648 0 R 1651 0 R 1654 0 R 1657 0 R 1660 0 R 1663 0 R 1666 0 R 1669 0 R 1672 0 R 1675 0 R 1678 0 R 1681 0 R 1684 0 R 1687 0 R 1690 0 R 1693 0 R 1696 0 R 1699 0 R 1702 0 R 1705 0 R 1708 0 R 1711 0 R 1714 0 R 1717 0 R 1720 0 R 1723 0 R 1726 0 R 1729 0 R 1732 0 R 1735 0 R 1738 0 R 1741 0 R 1744 0 R 1747 0 R 1750 0 R 1753 0 R 1756 0 R 1759 0 R 1762 0 R 1765 0 R 1768 0 R 1771 0 R 1774 0 R 1777 0 R 1780 0 R 1783 0 R 1786 0 R 1789 0 R 1792 0 R 1795 0 R 1798 0 R 1801 0 R 1804 0 R 1807 0 R 1810 0 R 1813 0 R 1816 0 R 1819 0 R 1822 0 R 1825 0 R 1828 0 R 1997 0 R 2000 0 R 2003 0 R 2006 0 R 2009 0 R 2012 0 R 2015 0 R 2018 0 R 2021 0 R 2024 0 R 2027 0 R 2030 0 R 2033 0 R 2036 0 R 2039 0 R 2042 0 R 2045 0 R 2048 0 R 2051 0 R 2054 0 R 2057 0 R 2060 0 R 2063 0 R 2066 0 R 2069 0 R 2072 0 R 2075 0 R 2078 0 R 2081 0 R 2084 0 R 2087 0 R 2090 0 R 2093 0 R 2096 0 R 2099 0 R 2102 0 R 2105 0 R 2108 0 R 2111 0 R 2114 0 R 2117 0 R 2120 0 R 2123 0 R 2126 0 R 2129 0 R 2132 0 R 2135 0 R 2138 0 R 2141 0 R 2144 0 R 2147 0 R 2150 0 R 2153 0 R 2156 0 R 2325 0 R 2328 0 R 2331 0 R 2334 0 R 2337 0 R 2340 0 R 2343 0 R 2346 0 R 2349 0 R 2352 0 R 2355 0 R 2358 0 R 2361 0 R 2364 0 R 2367 0 R 2370 0 R 2373 0 R 2376 0 R 2379 0 R 2382 0 R 2385 0 R 2388 0 R 2391 0 R 2394 0 R 2397 0 R 2400 0 R 2403 0 R 2406 0 R 2409 0 R 2412 0 R 2415 0 R 2418 0 R 2421 0 R 2424 0 R 2427 0 R 2430 0 R 2433 0 R 2436 0 R 2439 0 R 2442 0 R 2445 0 R 2448 0 R 2451 0 R 2454 0 R 2457 0 R 2460 0 R 2463 0 R 2466 0 R 2469 0 R 2472 0 R 2475 0 R 2478 0 R 2481 0 R 2484 0 R 2653 0 R 2656 0 R 2659 0 R 2662 0 R 2665 0 R 2668 0 R 2671 0 R 2674 0 R 2677 0 R 2680 0 R 2683 0 R 2686 0 R 2689 0 R 2692 0 R 2695 0 R 2698 0 R 2701 0 R 2704 0 R 2707 0 R 2710 0 R 2713 0 R 2716 0 R 2719 0 R 2722 0 R 2725 0 R 2728 0 R 2731 0 R 2734 0 R 2737 0 R 2740 0 R 2743 0 R 2746 0 R 2749 0 R 2752 0 R 2755 0 R 2758 0 R 2761 0 R 2764 0 R 2767 0 R 2770 0 R 2773 0 R 2776 0 R 2779 0 R 2782 0 R 2785 0 R 2788 0 R 2791 0 R 2794 0 R 2797 0 R 2800 0 R 2803 0 R 2806 0 R 2809 0 R 2812 0 R 2981 0 R 2984 0 R 2987 0 R 2990 0 R 2993 0 R 2996 0 R 2999 0 R 3002 0 R 3005 0 R 3008 0 R 3011 0 R 3014 0 R 3017 0 R 3020 0 R 3023 0 R 3026 0 R 3029 0 R 3032 0 R 3035 0 R 3038 0 R 3041 0 R 3044 0 R 3047 0 R 3050 0 R 3053 0 R 3056 0 R 3059 0 R 3062 0 R 3065 0 R 3068 0 R 3071 0 R 3074 0 R 3077 0 R 3080 0 R 3083 0 R 3086 0 R 3089 0 R 3092 0 R 3095 0 R 3098 0 R 3101 0 R 3104 0 R 3107 0 R 3110 0 R 3113 0 R 3116 0 R 3119 0 R 3122 0 R 3125 0 R 3128 0 R 3131 0 R 3134 0 R 3137 0 R 3140 0 R 3309 0 R 3312 0 R 3315 0 R 3318 0 R 3321 0 R 3324 0 R 3327 0 R 3330 0 R 3333 0 R 3336 0 R 3339 0 R 3342 0 R 3345 0 R 3348 0 R 3351 0 R 3354 0 R 3357 0 R 3360 0 R 3363 0 R 3366 0 R 3369 0 R 3372 0 R 3375 0 R 3378 0 R 3381 0 R 3384 0 R 3387 0 R 3390 0 R 3393 0 R 3396 0 R 3399 0 R 3402 0 R 3405 0 R 3408 0 R 3411 0 R 3414 0 R 3417 0 R 3420 0 R 3423 0 R 3426 0 R 3429 0 R 3432 0 R 3435 0 R 3438 0 R 3441 0 R 3444 0 R 3447 0 R 3450 0 R 3453 0 R 3456 0 R 3459 0 R 3462 0 R 3465 0 R 3468 0 R 3637 0 R 3640 0 R 3643 0 R 3646 0 R 3649 0 R 3652 0 R 3655 0 R 3658 0 R 3661 0 R 3664 0 R 3667 0 R 3670 0 R 3673 0 R 3676 0 R 3679 0 R 3682 0 R 3685 0 R 3688 0 R 3691 0 R 3694 0 R 3697 0 R 3700 0 R 3703 0 R 3706 0 R 3709 0 R 3712 0 R 3715 0 R 3718 0 R 3721 0 R 3724 0 R 3727 0 R 3730 0 R 3733 0 R 3736 0 R 3739 0 R 3742 0 R 3745 0 R 3748 0 R 3751 0 R 3754 0 R 3757 0 R 3760 0 R 3763 0 R 3766 0 R 3769 0 R 3772 0 R 3775 0 R 3778 0 R 3781 0 R 3784 0 R 3787 0 R 3790 0 R 3793 0 R 3796 0 R 3965 0 R 3968 0 R 3971 0 R 3974 0 R 3977 0 R 3980 0 R 3983 0 R 3986 0 R 3989 0 R 3992 0 R 3995 0 R 3998 0 R 4001 0 R 4004 0 R 4007 0 R 4010 0 R 4013 0 R 4016 0 R 4019 0 R 4022 0 R 4025 0 R 4028 0 R 4031 0 R 4034 0 R 4037 0 R 4040 0 R 4043 0 R 4046 0 R 4049 0 R 4052 0 R 4055 0 R 4058 0 R 4061 0 R 4064 0 R 4067 0 R 4070 0 R 4073 0 R 4076 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Lang (en) /Metadata 7 0 R /PageLabels 9 0 R /Outlines 4198 0 R /PageMode /UseOutlines /Names 5576 0 R >> endobj 3 0 obj << /Font << /F6 4885 0 R /F7 4886 0 R /F9 4887 0 R /F10 4888 0 R /F3 4889 0 R /F5 4890 0 R >> /ProcSet [/PDF /ImageB /ImageC /Text] /ColorSpace << /DefaultRGB 6 0 R >> >> endobj 9 0 obj << /Nums [0 << /P (i) >> 1 << /P (ii) >> 2 << /P (iii) >> 3 << /P (iv) >> 4 << /P (v) >> 5 << /P (vi) >> 6 << /P (vii) >> 7 << /P (viii) >> 8 << /P (ix) >> 9 << /P (x) >> 10 << /P (xi) >> 11 << /P (xii) >> 12 << /P (xiii) >> 13 << /P (xiv) >> 14 << /P (xv) >> 15 << /P (1) >> 16 << /P (2) >> 17 << /P (3) >> 18 << /P (4) >> 19 << /P (5) >> 20 << /P (6) >> 21 << /P (7) >> 22 << /P (8) >> 23 << /P (9) >> 24 << /P (10) >> 25 << /P (11) >> 26 << /P (12) >> 27 << /P (13) >> 28 << /P (14) >> 29 << /P (15) >> 30 << /P (16) >> 31 << /P (17) >> 32 << /P (18) >> 33 << /P (19) >> 34 << /P (20) >> 35 << /P (21) >> 36 << /P (22) >> 37 << /P (23) >> 38 << /P (24) >> 39 << /P (25) >> 40 << /P (26) >> 41 << /P (27) >> 42 << /P (28) >> 43 << /P (29) >> 44 << /P (30) >> 45 << /P (31) >> 46 << /P (32) >> 47 << /P (33) >> 48 << /P (34) >> 49 << /P (35) >> 50 << /P (36) >> 51 << /P (37) >> 52 << /P (38) >> 53 << /P (39) >> 54 << /P (40) >> 55 << /P (41) >> 56 << /P (42) >> 57 << /P (43) >> 58 << /P (44) >> 59 << /P (45) >> 60 << /P (46) >> 61 << /P (47) >> 62 << /P (48) >> 63 << /P (49) >> 64 << /P (50) >> 65 << /P (51) >> 66 << /P (52) >> 67 << /P (53) >> 68 << /P (54) >> 69 << /P (55) >> 70 << /P (56) >> 71 << /P (57) >> 72 << /P (58) >> 73 << /P (59) >> 74 << /P (60) >> 75 << /P (61) >> 76 << /P (62) >> 77 << /P (63) >> 78 << /P (64) >> 79 << /P (65) >> 80 << /P (66) >> 81 << /P (67) >> 82 << /P (68) >> 83 << /P (69) >> 84 << /P (70) >> 85 << /P (71) >> 86 << /P (72) >> 87 << /P (73) >> 88 << /P (74) >> 89 << /P (75) >> 90 << /P (76) >> 91 << /P (77) >> 92 << /P (78) >> 93 << /P (79) >> 94 << /P (80) >> 95 << /P (81) >> 96 << /P (82) >> 97 << /P (83) >> 98 << /P (84) >> 99 << /P (85) >> 100 << /P (86) >> 101 << /P (87) >> 102 << /P (88) >> 103 << /P (89) >> 104 << /P (90) >> 105 << /P (91) >> 106 << /P (92) >> 107 << /P (93) >> 108 << /P (94) >> 109 << /P (95) >> 110 << /P (96) >> 111 << /P (97) >> 112 << /P (98) >> 113 << /P (99) >> 114 << /P (100) >> 115 << /P (101) >> 116 << /P (102) >> 117 << /P (103) >> 118 << /P (104) >> 119 << /P (105) >> 120 << /P (106) >> 121 << /P (107) >> 122 << /P (108) >> 123 << /P (109) >> 124 << /P (110) >> 125 << /P (111) >> 126 << /P (112) >> 127 << /P (113) >> 128 << /P (114) >> 129 << /P (115) >> 130 << /P (116) >> 131 << /P (117) >> 132 << /P (118) >> 133 << /P (119) >> 134 << /P (120) >> 135 << /P (121) >> 136 << /P (122) >> 137 << /P (123) >> 138 << /P (124) >> 139 << /P (125) >> 140 << /P (126) >> 141 << /P (127) >> 142 << /P (128) >> 143 << /P (129) >> 144 << /P (130) >> 145 << /P (131) >> 146 << /P (132) >> 147 << /P (133) >> 148 << /P (134) >> 149 << /P (135) >> 150 << /P (136) >> 151 << /P (137) >> 152 << /P (138) >> 153 << /P (139) >> 154 << /P (140) >> 155 << /P (141) >> 156 << /P (142) >> 157 << /P (143) >> 158 << /P (144) >> 159 << /P (145) >> 160 << /P (146) >> 161 << /P (147) >> 162 << /P (148) >> 163 << /P (149) >> 164 << /P (150) >> 165 << /P (151) >> 166 << /P (152) >> 167 << /P (153) >> 168 << /P (154) >> 169 << /P (155) >> 170 << /P (156) >> 171 << /P (157) >> 172 << /P (158) >> 173 << /P (159) >> 174 << /P (160) >> 175 << /P (161) >> 176 << /P (162) >> 177 << /P (163) >> 178 << /P (164) >> 179 << /P (165) >> 180 << /P (166) >> 181 << /P (167) >> 182 << /P (168) >> 183 << /P (169) >> 184 << /P (170) >> 185 << /P (171) >> 186 << /P (172) >> 187 << /P (173) >> 188 << /P (174) >> 189 << /P (175) >> 190 << /P (176) >> 191 << /P (177) >> 192 << /P (178) >> 193 << /P (179) >> 194 << /P (180) >> 195 << /P (181) >> 196 << /P (182) >> 197 << /P (183) >> 198 << /P (184) >> 199 << /P (185) >> 200 << /P (186) >> 201 << /P (187) >> 202 << /P (188) >> 203 << /P (189) >> 204 << /P (190) >> 205 << /P (191) >> 206 << /P (192) >> 207 << /P (193) >> 208 << /P (194) >> 209 << /P (195) >> 210 << /P (196) >> 211 << /P (197) >> 212 << /P (198) >> 213 << /P (199) >> 214 << /P (200) >> 215 << /P (201) >> 216 << /P (202) >> 217 << /P (203) >> 218 << /P (204) >> 219 << /P (205) >> 220 << /P (206) >> 221 << /P (207) >> 222 << /P (208) >> 223 << /P (209) >> 224 << /P (210) >> 225 << /P (211) >> 226 << /P (212) >> 227 << /P (213) >> 228 << /P (214) >> 229 << /P (215) >> 230 << /P (216) >> 231 << /P (217) >> 232 << /P (218) >> 233 << /P (219) >> 234 << /P (220) >> 235 << /P (221) >> 236 << /P (222) >> 237 << /P (223) >> 238 << /P (224) >> 239 << /P (225) >> 240 << /P (226) >> 241 << /P (227) >> 242 << /P (228) >> 243 << /P (229) >> 244 << /P (230) >> 245 << /P (231) >> 246 << /P (232) >> 247 << /P (233) >> 248 << /P (234) >> 249 << /P (235) >> 250 << /P (236) >> 251 << /P (237) >> 252 << /P (238) >> 253 << /P (239) >> 254 << /P (240) >> 255 << /P (241) >> 256 << /P (242) >> 257 << /P (243) >> 258 << /P (244) >> 259 << /P (245) >> 260 << /P (246) >> 261 << /P (247) >> 262 << /P (248) >> 263 << /P (249) >> 264 << /P (250) >> 265 << /P (251) >> 266 << /P (252) >> 267 << /P (253) >> 268 << /P (254) >> 269 << /P (255) >> 270 << /P (256) >> 271 << /P (257) >> 272 << /P (258) >> 273 << /P (259) >> 274 << /P (260) >> 275 << /P (261) >> 276 << /P (262) >> 277 << /P (263) >> 278 << /P (264) >> 279 << /P (265) >> 280 << /P (266) >> 281 << /P (267) >> 282 << /P (268) >> 283 << /P (269) >> 284 << /P (270) >> 285 << /P (271) >> 286 << /P (272) >> 287 << /P (273) >> 288 << /P (274) >> 289 << /P (275) >> 290 << /P (276) >> 291 << /P (277) >> 292 << /P (278) >> 293 << /P (279) >> 294 << /P (280) >> 295 << /P (281) >> 296 << /P (282) >> 297 << /P (283) >> 298 << /P (284) >> 299 << /P (285) >> 300 << /P (286) >> 301 << /P (287) >> 302 << /P (288) >> 303 << /P (289) >> 304 << /P (290) >> 305 << /P (291) >> 306 << /P (292) >> 307 << /P (293) >> 308 << /P (294) >> 309 << /P (295) >> 310 << /P (296) >> 311 << /P (297) >> 312 << /P (298) >> 313 << /P (299) >> 314 << /P (300) >> 315 << /P (301) >> 316 << /P (302) >> 317 << /P (303) >> 318 << /P (304) >> 319 << /P (305) >> 320 << /P (306) >> 321 << /P (307) >> 322 << /P (308) >> 323 << /P (309) >> 324 << /P (310) >> 325 << /P (311) >> 326 << /P (312) >> 327 << /P (313) >> 328 << /P (314) >> 329 << /P (315) >> 330 << /P (316) >> 331 << /P (317) >> 332 << /P (318) >> 333 << /P (319) >> 334 << /P (320) >> 335 << /P (321) >> 336 << /P (322) >> 337 << /P (323) >> 338 << /P (324) >> 339 << /P (325) >> 340 << /P (326) >> 341 << /P (327) >> 342 << /P (328) >> 343 << /P (329) >> 344 << /P (330) >> 345 << /P (331) >> 346 << /P (332) >> 347 << /P (333) >> 348 << /P (334) >> 349 << /P (335) >> 350 << /P (336) >> 351 << /P (337) >> 352 << /P (338) >> 353 << /P (339) >> 354 << /P (340) >> 355 << /P (341) >> 356 << /P (342) >> 357 << /P (343) >> 358 << /P (344) >> 359 << /P (345) >> 360 << /P (346) >> 361 << /P (347) >> 362 << /P (348) >> 363 << /P (349) >> 364 << /P (350) >> 365 << /P (351) >> 366 << /P (352) >> 367 << /P (353) >> 368 << /P (354) >> 369 << /P (355) >> 370 << /P (356) >> 371 << /P (357) >> 372 << /P (358) >> 373 << /P (359) >> 374 << /P (360) >> 375 << /P (361) >> 376 << /P (362) >> 377 << /P (363) >> 378 << /P (364) >> 379 << /P (365) >> 380 << /P (366) >> 381 << /P (367) >> 382 << /P (368) >> 383 << /P (369) >> 384 << /P (370) >> 385 << /P (371) >> 386 << /P (372) >> 387 << /P (373) >> 388 << /P (374) >> 389 << /P (375) >> 390 << /P (376) >> 391 << /P (377) >> 392 << /P (378) >> 393 << /P (379) >> 394 << /P (380) >> 395 << /P (381) >> 396 << /P (382) >> 397 << /P (383) >> 398 << /P (384) >> 399 << /P (385) >> 400 << /P (386) >> 401 << /P (387) >> 402 << /P (388) >> 403 << /P (389) >> 404 << /P (390) >> 405 << /P (391) >> 406 << /P (392) >> 407 << /P (393) >> 408 << /P (394) >> 409 << /P (395) >> 410 << /P (396) >> 411 << /P (397) >> 412 << /P (398) >> 413 << /P (399) >> 414 << /P (400) >> 415 << /P (401) >> 416 << /P (402) >> 417 << /P (403) >> 418 << /P (404) >> 419 << /P (405) >> 420 << /P (406) >> 421 << /P (407) >> 422 << /P (408) >> 423 << /P (409) >> 424 << /P (410) >> 425 << /P (411) >> 426 << /P (412) >> 427 << /P (413) >> 428 << /P (414) >> 429 << /P (415) >> 430 << /P (416) >> 431 << /P (417) >> 432 << /P (418) >> 433 << /P (419) >> 434 << /P (420) >> 435 << /P (421) >> 436 << /P (422) >> 437 << /P (423) >> 438 << /P (424) >> 439 << /P (425) >> 440 << /P (426) >> 441 << /P (427) >> 442 << /P (428) >> 443 << /P (429) >> 444 << /P (430) >> 445 << /P (431) >> 446 << /P (432) >> 447 << /P (433) >> 448 << /P (434) >> 449 << /P (435) >> 450 << /P (436) >> 451 << /P (437) >> 452 << /P (438) >> 453 << /P (439) >> 454 << /P (440) >> 455 << /P (441) >> 456 << /P (442) >> 457 << /P (443) >> 458 << /P (444) >> 459 << /P (445) >> 460 << /P (446) >> 461 << /P (447) >> 462 << /P (448) >> 463 << /P (449) >> 464 << /P (450) >> 465 << /P (451) >> 466 << /P (452) >> 467 << /P (453) >> 468 << /P (454) >> 469 << /P (455) >> 470 << /P (456) >> 471 << /P (457) >> 472 << /P (458) >> 473 << /P (459) >> 474 << /P (460) >> 475 << /P (461) >> 476 << /P (462) >> 477 << /P (463) >> 478 << /P (464) >> 479 << /P (465) >> 480 << /P (466) >> 481 << /P (467) >> 482 << /P (468) >> 483 << /P (469) >> 484 << /P (470) >> 485 << /P (471) >> 486 << /P (472) >> 487 << /P (473) >> 488 << /P (474) >> 489 << /P (475) >> 490 << /P (476) >> 491 << /P (477) >> 492 << /P (478) >> 493 << /P (479) >> 494 << /P (480) >> 495 << /P (481) >> 496 << /P (482) >> 497 << /P (483) >> 498 << /P (484) >> 499 << /P (485) >> 500 << /P (486) >> 501 << /P (487) >> 502 << /P (488) >> 503 << /P (489) >> 504 << /P (490) >> 505 << /P (491) >> 506 << /P (492) >> 507 << /P (493) >> 508 << /P (494) >> 509 << /P (495) >> 510 << /P (496) >> 511 << /P (497) >> 512 << /P (498) >> 513 << /P (499) >> 514 << /P (500) >> 515 << /P (501) >> 516 << /P (502) >> 517 << /P (503) >> 518 << /P (504) >> 519 << /P (505) >> 520 << /P (506) >> 521 << /P (507) >> 522 << /P (508) >> 523 << /P (509) >> 524 << /P (510) >> 525 << /P (511) >> 526 << /P (512) >> 527 << /P (513) >> 528 << /P (514) >> 529 << /P (515) >> 530 << /P (516) >> 531 << /P (517) >> 532 << /P (518) >> 533 << /P (519) >> 534 << /P (520) >> 535 << /P (521) >> 536 << /P (522) >> 537 << /P (523) >> 538 << /P (524) >> 539 << /P (525) >> 540 << /P (526) >> 541 << /P (527) >> 542 << /P (528) >> 543 << /P (529) >> 544 << /P (530) >> 545 << /P (531) >> 546 << /P (532) >> 547 << /P (533) >> 548 << /P (534) >> 549 << /P (535) >> 550 << /P (536) >> 551 << /P (537) >> 552 << /P (538) >> 553 << /P (539) >> 554 << /P (540) >> 555 << /P (541) >> 556 << /P (542) >> 557 << /P (543) >> 558 << /P (544) >> 559 << /P (545) >> 560 << /P (546) >> 561 << /P (547) >> 562 << /P (548) >> 563 << /P (549) >> 564 << /P (550) >> 565 << /P (551) >> 566 << /P (552) >> 567 << /P (553) >> 568 << /P (554) >> 569 << /P (555) >> 570 << /P (556) >> 571 << /P (557) >> 572 << /P (558) >> 573 << /P (559) >> 574 << /P (560) >> 575 << /P (561) >> 576 << /P (562) >> 577 << /P (563) >> 578 << /P (564) >> 579 << /P (565) >> 580 << /P (566) >> 581 << /P (567) >> 582 << /P (568) >> 583 << /P (569) >> 584 << /P (570) >> 585 << /P (571) >> 586 << /P (572) >> 587 << /P (573) >> 588 << /P (574) >> 589 << /P (575) >> 590 << /P (576) >> 591 << /P (577) >> 592 << /P (578) >> 593 << /P (579) >> 594 << /P (580) >> 595 << /P (581) >> 596 << /P (582) >> 597 << /P (583) >> 598 << /P (584) >> 599 << /P (585) >> 600 << /P (586) >> 601 << /P (587) >> 602 << /P (588) >> 603 << /P (589) >> 604 << /P (590) >> 605 << /P (591) >> 606 << /P (592) >> 607 << /P (593) >> 608 << /P (594) >> 609 << /P (595) >> 610 << /P (596) >> 611 << /P (597) >> 612 << /P (598) >> 613 << /P (599) >> 614 << /P (600) >> 615 << /P (601) >> 616 << /P (602) >> 617 << /P (603) >> 618 << /P (604) >> 619 << /P (605) >> 620 << /P (606) >> 621 << /P (607) >> 622 << /P (608) >> 623 << /P (609) >> 624 << /P (610) >> 625 << /P (611) >> 626 << /P (612) >> 627 << /P (613) >> 628 << /P (614) >> 629 << /P (615) >> 630 << /P (616) >> 631 << /P (617) >> 632 << /P (618) >> 633 << /P (619) >> 634 << /P (620) >> 635 << /P (621) >> 636 << /P (622) >> 637 << /P (623) >> 638 << /P (624) >> 639 << /P (625) >> 640 << /P (626) >> 641 << /P (627) >> 642 << /P (628) >> 643 << /P (629) >> 644 << /P (630) >> 645 << /P (631) >> 646 << /P (632) >> 647 << /P (633) >> 648 << /P (634) >> 649 << /P (635) >> 650 << /P (636) >> 651 << /P (637) >> 652 << /P (638) >> 653 << /P (639) >> 654 << /P (640) >> 655 << /P (641) >> 656 << /P (642) >> 657 << /P (643) >> 658 << /P (644) >> 659 << /P (645) >> 660 << /P (646) >> 661 << /P (647) >> 662 << /P (648) >> 663 << /P (649) >> 664 << /P (650) >> 665 << /P (651) >> 666 << /P (652) >> 667 << /P (653) >> 668 << /P (654) >> 669 << /P (655) >> 670 << /P (656) >> 671 << /P (657) >> 672 << /P (658) >> 673 << /P (659) >> 674 << /P (660) >> 675 << /P (661) >> 676 << /P (662) >> 677 << /P (663) >> 678 << /P (664) >> 679 << /P (665) >> 680 << /P (666) >> 681 << /P (667) >> 682 << /P (668) >> 683 << /P (669) >> 684 << /P (670) >> 685 << /P (671) >> 686 << /P (672) >> 687 << /P (673) >> 688 << /P (674) >> 689 << /P (675) >> 690 << /P (676) >> 691 << /P (677) >> 692 << /P (678) >> 693 << /P (679) >> 694 << /P (680) >> 695 << /P (681) >> 696 << /P (682) >> 697 << /P (683) >> 698 << /P (684) >> 699 << /P (685) >> 700 << /P (686) >> 701 << /P (687) >> 702 << /P (688) >> 703 << /P (689) >> 704 << /P (690) >> 705 << /P (691) >> 706 << /P (692) >> 707 << /P (693) >> ] >> endobj 4198 0 obj << /First 4199 0 R /Last 4883 0 R >> endobj 5576 0 obj << /Dests 5575 0 R >> endobj xref 0 5577 0000000000 65535 f 0001293620 00000 n 0001299845 00000 n 0001300014 00000 n 0000000015 00000 n 0000000232 00000 n 0000005328 00000 n 0000005361 00000 n 0000006665 00000 n 0001300221 00000 n 0000006414 00000 n 0000006857 00000 n 0000006878 00000 n 0000006898 00000 n 0000007896 00000 n 0000006918 00000 n 0000008089 00000 n 0000009007 00000 n 0000008109 00000 n 0000009200 00000 n 0000009748 00000 n 0000009220 00000 n 0000009941 00000 n 0000010712 00000 n 0000009961 00000 n 0000010905 00000 n 0000011556 00000 n 0000010925 00000 n 0000011749 00000 n 0000012504 00000 n 0000011769 00000 n 0000012697 00000 n 0000013428 00000 n 0000012717 00000 n 0000013621 00000 n 0000014208 00000 n 0000013641 00000 n 0000014401 00000 n 0000015178 00000 n 0000014421 00000 n 0000015371 00000 n 0000016130 00000 n 0000015391 00000 n 0000016323 00000 n 0000017273 00000 n 0000016343 00000 n 0000017466 00000 n 0000018144 00000 n 0000017486 00000 n 0000018337 00000 n 0000018907 00000 n 0000018357 00000 n 0000019100 00000 n 0000019743 00000 n 0000019120 00000 n 0000019936 00000 n 0000020518 00000 n 0000019956 00000 n 0000020711 00000 n 0000021416 00000 n 0000020731 00000 n 0000021609 00000 n 0000022197 00000 n 0000021629 00000 n 0000022390 00000 n 0000022980 00000 n 0000022410 00000 n 0000023173 00000 n 0000023826 00000 n 0000023193 00000 n 0000024019 00000 n 0000024599 00000 n 0000024039 00000 n 0000024792 00000 n 0000025423 00000 n 0000024812 00000 n 0000025616 00000 n 0000026230 00000 n 0000025636 00000 n 0000026423 00000 n 0000027021 00000 n 0000026443 00000 n 0000027214 00000 n 0000027898 00000 n 0000027234 00000 n 0000028091 00000 n 0000028692 00000 n 0000028111 00000 n 0000028885 00000 n 0000029674 00000 n 0000028905 00000 n 0000029867 00000 n 0000030535 00000 n 0000029887 00000 n 0000030728 00000 n 0000031335 00000 n 0000030748 00000 n 0000031528 00000 n 0000032207 00000 n 0000031548 00000 n 0000032400 00000 n 0000033088 00000 n 0000032421 00000 n 0000033283 00000 n 0000033969 00000 n 0000033304 00000 n 0000034164 00000 n 0000034852 00000 n 0000034185 00000 n 0000035047 00000 n 0000035654 00000 n 0000035068 00000 n 0000035849 00000 n 0000036559 00000 n 0000035870 00000 n 0000036754 00000 n 0000037515 00000 n 0000036775 00000 n 0000037710 00000 n 0000038396 00000 n 0000037731 00000 n 0000038591 00000 n 0000039269 00000 n 0000038612 00000 n 0000039464 00000 n 0000040062 00000 n 0000039485 00000 n 0000040257 00000 n 0000040841 00000 n 0000040278 00000 n 0000041036 00000 n 0000041615 00000 n 0000041057 00000 n 0000041810 00000 n 0000042410 00000 n 0000041831 00000 n 0000042605 00000 n 0000043208 00000 n 0000042626 00000 n 0000043403 00000 n 0000044094 00000 n 0000043424 00000 n 0000044289 00000 n 0000045028 00000 n 0000044310 00000 n 0000045223 00000 n 0000045862 00000 n 0000045244 00000 n 0000046057 00000 n 0000046750 00000 n 0000046078 00000 n 0000046945 00000 n 0000047656 00000 n 0000046966 00000 n 0000047851 00000 n 0000048449 00000 n 0000047872 00000 n 0000048644 00000 n 0000049357 00000 n 0000048665 00000 n 0000049552 00000 n 0000050161 00000 n 0000049573 00000 n 0000050356 00000 n 0000051298 00000 n 0000050377 00000 n 0000051493 00000 n 0000052413 00000 n 0000051514 00000 n 0000052608 00000 n 0000088135 00000 n 0000052629 00000 n 0000052708 00000 n 0000087298 00000 n 0000052848 00000 n 0000052990 00000 n 0000053069 00000 n 0000053209 00000 n 0000053349 00000 n 0000053428 00000 n 0000053567 00000 n 0000053709 00000 n 0000053788 00000 n 0000053927 00000 n 0000054069 00000 n 0000054148 00000 n 0000054286 00000 n 0000054426 00000 n 0000054505 00000 n 0000054643 00000 n 0000054785 00000 n 0000054864 00000 n 0000055003 00000 n 0000055145 00000 n 0000055224 00000 n 0000055363 00000 n 0000055505 00000 n 0000055584 00000 n 0000055723 00000 n 0000055865 00000 n 0000055944 00000 n 0000056083 00000 n 0000056225 00000 n 0000056304 00000 n 0000056443 00000 n 0000056585 00000 n 0000056664 00000 n 0000056803 00000 n 0000056943 00000 n 0000057022 00000 n 0000057161 00000 n 0000057303 00000 n 0000057382 00000 n 0000057521 00000 n 0000057663 00000 n 0000057742 00000 n 0000057880 00000 n 0000058022 00000 n 0000058101 00000 n 0000058240 00000 n 0000058382 00000 n 0000058461 00000 n 0000058600 00000 n 0000058742 00000 n 0000058821 00000 n 0000058960 00000 n 0000059100 00000 n 0000059179 00000 n 0000059318 00000 n 0000059456 00000 n 0000059535 00000 n 0000059674 00000 n 0000059816 00000 n 0000059895 00000 n 0000060034 00000 n 0000060176 00000 n 0000060255 00000 n 0000060394 00000 n 0000060536 00000 n 0000060615 00000 n 0000060754 00000 n 0000060896 00000 n 0000060975 00000 n 0000061114 00000 n 0000061256 00000 n 0000061335 00000 n 0000061474 00000 n 0000061616 00000 n 0000061695 00000 n 0000061834 00000 n 0000061976 00000 n 0000062055 00000 n 0000062194 00000 n 0000062336 00000 n 0000062415 00000 n 0000062553 00000 n 0000062695 00000 n 0000062775 00000 n 0000062913 00000 n 0000063055 00000 n 0000063135 00000 n 0000063274 00000 n 0000063416 00000 n 0000063496 00000 n 0000063635 00000 n 0000063777 00000 n 0000063857 00000 n 0000063996 00000 n 0000064138 00000 n 0000064218 00000 n 0000064357 00000 n 0000064497 00000 n 0000064577 00000 n 0000064716 00000 n 0000064858 00000 n 0000064938 00000 n 0000065077 00000 n 0000065217 00000 n 0000065297 00000 n 0000065436 00000 n 0000065578 00000 n 0000065658 00000 n 0000065797 00000 n 0000065939 00000 n 0000066019 00000 n 0000066158 00000 n 0000066300 00000 n 0000066380 00000 n 0000066519 00000 n 0000066657 00000 n 0000066737 00000 n 0000066876 00000 n 0000067018 00000 n 0000067098 00000 n 0000067237 00000 n 0000067379 00000 n 0000067459 00000 n 0000067598 00000 n 0000067738 00000 n 0000067818 00000 n 0000067957 00000 n 0000068099 00000 n 0000068179 00000 n 0000068318 00000 n 0000068460 00000 n 0000068540 00000 n 0000068679 00000 n 0000068819 00000 n 0000068899 00000 n 0000069038 00000 n 0000069180 00000 n 0000069260 00000 n 0000069399 00000 n 0000069541 00000 n 0000069621 00000 n 0000069760 00000 n 0000069902 00000 n 0000069982 00000 n 0000070121 00000 n 0000070263 00000 n 0000070343 00000 n 0000070481 00000 n 0000070622 00000 n 0000070702 00000 n 0000070839 00000 n 0000070977 00000 n 0000088348 00000 n 0000089245 00000 n 0000088371 00000 n 0000089440 00000 n 0000090340 00000 n 0000089461 00000 n 0000090535 00000 n 0000091483 00000 n 0000090556 00000 n 0000091678 00000 n 0000092597 00000 n 0000091699 00000 n 0000092792 00000 n 0000093739 00000 n 0000092813 00000 n 0000093934 00000 n 0000094986 00000 n 0000093955 00000 n 0000095181 00000 n 0000095799 00000 n 0000095202 00000 n 0000095994 00000 n 0000096727 00000 n 0000096015 00000 n 0000096922 00000 n 0000098277 00000 n 0000096943 00000 n 0000098472 00000 n 0000099283 00000 n 0000098494 00000 n 0000099478 00000 n 0000100373 00000 n 0000099499 00000 n 0000100568 00000 n 0000101484 00000 n 0000100589 00000 n 0000101679 00000 n 0000102498 00000 n 0000101700 00000 n 0000102693 00000 n 0000103308 00000 n 0000102714 00000 n 0000103503 00000 n 0000104118 00000 n 0000103524 00000 n 0000104313 00000 n 0000104983 00000 n 0000104334 00000 n 0000105178 00000 n 0000106283 00000 n 0000105199 00000 n 0000106478 00000 n 0000107692 00000 n 0000106500 00000 n 0000107887 00000 n 0000109106 00000 n 0000107909 00000 n 0000109301 00000 n 0000110623 00000 n 0000109323 00000 n 0000110818 00000 n 0000112030 00000 n 0000110840 00000 n 0000112225 00000 n 0000113449 00000 n 0000112247 00000 n 0000113644 00000 n 0000114478 00000 n 0000113666 00000 n 0000114673 00000 n 0000115257 00000 n 0000114694 00000 n 0000115452 00000 n 0000116081 00000 n 0000115473 00000 n 0000116276 00000 n 0000116896 00000 n 0000116297 00000 n 0000117091 00000 n 0000117771 00000 n 0000117112 00000 n 0000117966 00000 n 0000118852 00000 n 0000117987 00000 n 0000119047 00000 n 0000119752 00000 n 0000119068 00000 n 0000119947 00000 n 0000120690 00000 n 0000119968 00000 n 0000120885 00000 n 0000121599 00000 n 0000120906 00000 n 0000121794 00000 n 0000122505 00000 n 0000121815 00000 n 0000122700 00000 n 0000123549 00000 n 0000122721 00000 n 0000123744 00000 n 0000124477 00000 n 0000123765 00000 n 0000124672 00000 n 0000125404 00000 n 0000124693 00000 n 0000125599 00000 n 0000126213 00000 n 0000125620 00000 n 0000126408 00000 n 0000127097 00000 n 0000126429 00000 n 0000127292 00000 n 0000127873 00000 n 0000127313 00000 n 0000128068 00000 n 0000128688 00000 n 0000128089 00000 n 0000128883 00000 n 0000129502 00000 n 0000128904 00000 n 0000129697 00000 n 0000130269 00000 n 0000129718 00000 n 0000130464 00000 n 0000131068 00000 n 0000130485 00000 n 0000131263 00000 n 0000131906 00000 n 0000131284 00000 n 0000132101 00000 n 0000132716 00000 n 0000132122 00000 n 0000132911 00000 n 0000133553 00000 n 0000132932 00000 n 0000133748 00000 n 0000134355 00000 n 0000133769 00000 n 0000134550 00000 n 0000135173 00000 n 0000134571 00000 n 0000135368 00000 n 0000135990 00000 n 0000135389 00000 n 0000136185 00000 n 0000136830 00000 n 0000136206 00000 n 0000137025 00000 n 0000137671 00000 n 0000137046 00000 n 0000137866 00000 n 0000138509 00000 n 0000137887 00000 n 0000138704 00000 n 0000139320 00000 n 0000138725 00000 n 0000139515 00000 n 0000140150 00000 n 0000139536 00000 n 0000140345 00000 n 0000141045 00000 n 0000140366 00000 n 0000141240 00000 n 0000177551 00000 n 0000141261 00000 n 0000141341 00000 n 0000176666 00000 n 0000141476 00000 n 0000141614 00000 n 0000141694 00000 n 0000141829 00000 n 0000141967 00000 n 0000142047 00000 n 0000142182 00000 n 0000142320 00000 n 0000142400 00000 n 0000142535 00000 n 0000142673 00000 n 0000142753 00000 n 0000142888 00000 n 0000143026 00000 n 0000143106 00000 n 0000143241 00000 n 0000143379 00000 n 0000143459 00000 n 0000143594 00000 n 0000143732 00000 n 0000143812 00000 n 0000143947 00000 n 0000144085 00000 n 0000144165 00000 n 0000144300 00000 n 0000144438 00000 n 0000144518 00000 n 0000144653 00000 n 0000144789 00000 n 0000144869 00000 n 0000145004 00000 n 0000145142 00000 n 0000145222 00000 n 0000145357 00000 n 0000145495 00000 n 0000145575 00000 n 0000145710 00000 n 0000145848 00000 n 0000145928 00000 n 0000146063 00000 n 0000146199 00000 n 0000146279 00000 n 0000146414 00000 n 0000146550 00000 n 0000146630 00000 n 0000146765 00000 n 0000146903 00000 n 0000146983 00000 n 0000147118 00000 n 0000147256 00000 n 0000147336 00000 n 0000147471 00000 n 0000147609 00000 n 0000147689 00000 n 0000147824 00000 n 0000147962 00000 n 0000148042 00000 n 0000148177 00000 n 0000148315 00000 n 0000148395 00000 n 0000148530 00000 n 0000148668 00000 n 0000148748 00000 n 0000148883 00000 n 0000149021 00000 n 0000149101 00000 n 0000149236 00000 n 0000149374 00000 n 0000149454 00000 n 0000149589 00000 n 0000149727 00000 n 0000149807 00000 n 0000149942 00000 n 0000150080 00000 n 0000150160 00000 n 0000150295 00000 n 0000150433 00000 n 0000150513 00000 n 0000150648 00000 n 0000150786 00000 n 0000150866 00000 n 0000151001 00000 n 0000151139 00000 n 0000151219 00000 n 0000151354 00000 n 0000151492 00000 n 0000151572 00000 n 0000151707 00000 n 0000151845 00000 n 0000151925 00000 n 0000152060 00000 n 0000152196 00000 n 0000152276 00000 n 0000152411 00000 n 0000152549 00000 n 0000152629 00000 n 0000152764 00000 n 0000152902 00000 n 0000152982 00000 n 0000153117 00000 n 0000153253 00000 n 0000153333 00000 n 0000153468 00000 n 0000153606 00000 n 0000153686 00000 n 0000153821 00000 n 0000153959 00000 n 0000154039 00000 n 0000154174 00000 n 0000154312 00000 n 0000154392 00000 n 0000154527 00000 n 0000154665 00000 n 0000154745 00000 n 0000154880 00000 n 0000155018 00000 n 0000155098 00000 n 0000155233 00000 n 0000155371 00000 n 0000155451 00000 n 0000155586 00000 n 0000155724 00000 n 0000155804 00000 n 0000155939 00000 n 0000156077 00000 n 0000156157 00000 n 0000156292 00000 n 0000156430 00000 n 0000156510 00000 n 0000156645 00000 n 0000156783 00000 n 0000156863 00000 n 0000156997 00000 n 0000157133 00000 n 0000157213 00000 n 0000157348 00000 n 0000157486 00000 n 0000157566 00000 n 0000157701 00000 n 0000157839 00000 n 0000157919 00000 n 0000158054 00000 n 0000158192 00000 n 0000158272 00000 n 0000158407 00000 n 0000158545 00000 n 0000158625 00000 n 0000158760 00000 n 0000158898 00000 n 0000158978 00000 n 0000159113 00000 n 0000159249 00000 n 0000159329 00000 n 0000159463 00000 n 0000159600 00000 n 0000159680 00000 n 0000159813 00000 n 0000159945 00000 n 0000160025 00000 n 0000160158 00000 n 0000160294 00000 n 0000177764 00000 n 0000178386 00000 n 0000177787 00000 n 0000178581 00000 n 0000179194 00000 n 0000178602 00000 n 0000179389 00000 n 0000180120 00000 n 0000179410 00000 n 0000180315 00000 n 0000180931 00000 n 0000180336 00000 n 0000181126 00000 n 0000181740 00000 n 0000181147 00000 n 0000181935 00000 n 0000182524 00000 n 0000181956 00000 n 0000182719 00000 n 0000183336 00000 n 0000182740 00000 n 0000183531 00000 n 0000184150 00000 n 0000183552 00000 n 0000184345 00000 n 0000185009 00000 n 0000184366 00000 n 0000185204 00000 n 0000186080 00000 n 0000185225 00000 n 0000186275 00000 n 0000187238 00000 n 0000186296 00000 n 0000187433 00000 n 0000188393 00000 n 0000187454 00000 n 0000188588 00000 n 0000189175 00000 n 0000188609 00000 n 0000189370 00000 n 0000190013 00000 n 0000189391 00000 n 0000190208 00000 n 0000190903 00000 n 0000190229 00000 n 0000191098 00000 n 0000191716 00000 n 0000191119 00000 n 0000191911 00000 n 0000192693 00000 n 0000191932 00000 n 0000192888 00000 n 0000193487 00000 n 0000192909 00000 n 0000193682 00000 n 0000194517 00000 n 0000193703 00000 n 0000194712 00000 n 0000195648 00000 n 0000194733 00000 n 0000195843 00000 n 0000196550 00000 n 0000195864 00000 n 0000196745 00000 n 0000197491 00000 n 0000196766 00000 n 0000197686 00000 n 0000198402 00000 n 0000197707 00000 n 0000198597 00000 n 0000199313 00000 n 0000198618 00000 n 0000199508 00000 n 0000200091 00000 n 0000199529 00000 n 0000200286 00000 n 0000200931 00000 n 0000200307 00000 n 0000201126 00000 n 0000201875 00000 n 0000201147 00000 n 0000202070 00000 n 0000202816 00000 n 0000202091 00000 n 0000203011 00000 n 0000203755 00000 n 0000203032 00000 n 0000203950 00000 n 0000204695 00000 n 0000203971 00000 n 0000204890 00000 n 0000205506 00000 n 0000204911 00000 n 0000205701 00000 n 0000206467 00000 n 0000205722 00000 n 0000206662 00000 n 0000207272 00000 n 0000206683 00000 n 0000207467 00000 n 0000208074 00000 n 0000207488 00000 n 0000208269 00000 n 0000208872 00000 n 0000208290 00000 n 0000209067 00000 n 0000209676 00000 n 0000209088 00000 n 0000209871 00000 n 0000210586 00000 n 0000209892 00000 n 0000210781 00000 n 0000211498 00000 n 0000210802 00000 n 0000211693 00000 n 0000212410 00000 n 0000211714 00000 n 0000212605 00000 n 0000213318 00000 n 0000212626 00000 n 0000213513 00000 n 0000214230 00000 n 0000213534 00000 n 0000214425 00000 n 0000215104 00000 n 0000214446 00000 n 0000215299 00000 n 0000215979 00000 n 0000215320 00000 n 0000216174 00000 n 0000216847 00000 n 0000216195 00000 n 0000217042 00000 n 0000217746 00000 n 0000217063 00000 n 0000217941 00000 n 0000218586 00000 n 0000217962 00000 n 0000218781 00000 n 0000219425 00000 n 0000218802 00000 n 0000219620 00000 n 0000220122 00000 n 0000219641 00000 n 0000220317 00000 n 0000222066 00000 n 0000220338 00000 n 0000222261 00000 n 0000223228 00000 n 0000222283 00000 n 0000223423 00000 n 0000224048 00000 n 0000223444 00000 n 0000224243 00000 n 0000224851 00000 n 0000224264 00000 n 0000225046 00000 n 0000225456 00000 n 0000225067 00000 n 0000225651 00000 n 0000226388 00000 n 0000225672 00000 n 0000226583 00000 n 0000263039 00000 n 0000226604 00000 n 0000226684 00000 n 0000262154 00000 n 0000226819 00000 n 0000226955 00000 n 0000227035 00000 n 0000227170 00000 n 0000227308 00000 n 0000227388 00000 n 0000227523 00000 n 0000227661 00000 n 0000227741 00000 n 0000227876 00000 n 0000228014 00000 n 0000228094 00000 n 0000228229 00000 n 0000228365 00000 n 0000228445 00000 n 0000228580 00000 n 0000228718 00000 n 0000228798 00000 n 0000228933 00000 n 0000229071 00000 n 0000229151 00000 n 0000229286 00000 n 0000229424 00000 n 0000229504 00000 n 0000229639 00000 n 0000229777 00000 n 0000229857 00000 n 0000229992 00000 n 0000230130 00000 n 0000230210 00000 n 0000230344 00000 n 0000230482 00000 n 0000230562 00000 n 0000230697 00000 n 0000230833 00000 n 0000230913 00000 n 0000231048 00000 n 0000231186 00000 n 0000231266 00000 n 0000231401 00000 n 0000231539 00000 n 0000231619 00000 n 0000231754 00000 n 0000231892 00000 n 0000231972 00000 n 0000232107 00000 n 0000232243 00000 n 0000232323 00000 n 0000232458 00000 n 0000232596 00000 n 0000232676 00000 n 0000232811 00000 n 0000232949 00000 n 0000233029 00000 n 0000233164 00000 n 0000233302 00000 n 0000233382 00000 n 0000233517 00000 n 0000233653 00000 n 0000233733 00000 n 0000233868 00000 n 0000234006 00000 n 0000234086 00000 n 0000234221 00000 n 0000234359 00000 n 0000234439 00000 n 0000234574 00000 n 0000234712 00000 n 0000234792 00000 n 0000234927 00000 n 0000235065 00000 n 0000235145 00000 n 0000235281 00000 n 0000235419 00000 n 0000235499 00000 n 0000235634 00000 n 0000235772 00000 n 0000235852 00000 n 0000235987 00000 n 0000236125 00000 n 0000236205 00000 n 0000236340 00000 n 0000236478 00000 n 0000236558 00000 n 0000236693 00000 n 0000236831 00000 n 0000236911 00000 n 0000237046 00000 n 0000237184 00000 n 0000237264 00000 n 0000237399 00000 n 0000237537 00000 n 0000237617 00000 n 0000237751 00000 n 0000237889 00000 n 0000237969 00000 n 0000238104 00000 n 0000238242 00000 n 0000238322 00000 n 0000238457 00000 n 0000238595 00000 n 0000238675 00000 n 0000238810 00000 n 0000238948 00000 n 0000239028 00000 n 0000239163 00000 n 0000239301 00000 n 0000239381 00000 n 0000239516 00000 n 0000239654 00000 n 0000239734 00000 n 0000239869 00000 n 0000240007 00000 n 0000240087 00000 n 0000240222 00000 n 0000240358 00000 n 0000240438 00000 n 0000240573 00000 n 0000240711 00000 n 0000240791 00000 n 0000240926 00000 n 0000241062 00000 n 0000241142 00000 n 0000241277 00000 n 0000241415 00000 n 0000241495 00000 n 0000241630 00000 n 0000241768 00000 n 0000241848 00000 n 0000241983 00000 n 0000242121 00000 n 0000242201 00000 n 0000242336 00000 n 0000242474 00000 n 0000242554 00000 n 0000242689 00000 n 0000242827 00000 n 0000242907 00000 n 0000243042 00000 n 0000243180 00000 n 0000243260 00000 n 0000243396 00000 n 0000243532 00000 n 0000243612 00000 n 0000243747 00000 n 0000243885 00000 n 0000243965 00000 n 0000244100 00000 n 0000244238 00000 n 0000244318 00000 n 0000244453 00000 n 0000244591 00000 n 0000244671 00000 n 0000244805 00000 n 0000244942 00000 n 0000245022 00000 n 0000245156 00000 n 0000245292 00000 n 0000245372 00000 n 0000245505 00000 n 0000245641 00000 n 0000263252 00000 n 0000263755 00000 n 0000263275 00000 n 0000263950 00000 n 0000264644 00000 n 0000263971 00000 n 0000264839 00000 n 0000265817 00000 n 0000264860 00000 n 0000266012 00000 n 0000266571 00000 n 0000266033 00000 n 0000266766 00000 n 0000267478 00000 n 0000266787 00000 n 0000267673 00000 n 0000268502 00000 n 0000267694 00000 n 0000268697 00000 n 0000269520 00000 n 0000268719 00000 n 0000269717 00000 n 0000270532 00000 n 0000269739 00000 n 0000270729 00000 n 0000271560 00000 n 0000270751 00000 n 0000271757 00000 n 0000272659 00000 n 0000271779 00000 n 0000272856 00000 n 0000273674 00000 n 0000272878 00000 n 0000273871 00000 n 0000274510 00000 n 0000273893 00000 n 0000274707 00000 n 0000275369 00000 n 0000274729 00000 n 0000275566 00000 n 0000276221 00000 n 0000275588 00000 n 0000276418 00000 n 0000277140 00000 n 0000276440 00000 n 0000277337 00000 n 0000278076 00000 n 0000277359 00000 n 0000278273 00000 n 0000279018 00000 n 0000278295 00000 n 0000279215 00000 n 0000279962 00000 n 0000279237 00000 n 0000280159 00000 n 0000280847 00000 n 0000280181 00000 n 0000281044 00000 n 0000281682 00000 n 0000281066 00000 n 0000281879 00000 n 0000282519 00000 n 0000281901 00000 n 0000282716 00000 n 0000283390 00000 n 0000282738 00000 n 0000283587 00000 n 0000284350 00000 n 0000283609 00000 n 0000284547 00000 n 0000285294 00000 n 0000284569 00000 n 0000285491 00000 n 0000286249 00000 n 0000285513 00000 n 0000286446 00000 n 0000287219 00000 n 0000286468 00000 n 0000287416 00000 n 0000287927 00000 n 0000287438 00000 n 0000288124 00000 n 0000288706 00000 n 0000288146 00000 n 0000288903 00000 n 0000289542 00000 n 0000288925 00000 n 0000289739 00000 n 0000290321 00000 n 0000289761 00000 n 0000290518 00000 n 0000291291 00000 n 0000290540 00000 n 0000291488 00000 n 0000292265 00000 n 0000291510 00000 n 0000292462 00000 n 0000293098 00000 n 0000292484 00000 n 0000293295 00000 n 0000294132 00000 n 0000293317 00000 n 0000294329 00000 n 0000295059 00000 n 0000294351 00000 n 0000295256 00000 n 0000296009 00000 n 0000295278 00000 n 0000296206 00000 n 0000297042 00000 n 0000296228 00000 n 0000297239 00000 n 0000298014 00000 n 0000297261 00000 n 0000298211 00000 n 0000298692 00000 n 0000298233 00000 n 0000298889 00000 n 0000299490 00000 n 0000298911 00000 n 0000299687 00000 n 0000300388 00000 n 0000299709 00000 n 0000300585 00000 n 0000301277 00000 n 0000300607 00000 n 0000301474 00000 n 0000302219 00000 n 0000301496 00000 n 0000302416 00000 n 0000303002 00000 n 0000302438 00000 n 0000303199 00000 n 0000303798 00000 n 0000303221 00000 n 0000303995 00000 n 0000304660 00000 n 0000304017 00000 n 0000304857 00000 n 0000305437 00000 n 0000304879 00000 n 0000305634 00000 n 0000306222 00000 n 0000305656 00000 n 0000306419 00000 n 0000307027 00000 n 0000306441 00000 n 0000307224 00000 n 0000307806 00000 n 0000307246 00000 n 0000308003 00000 n 0000308591 00000 n 0000308025 00000 n 0000308788 00000 n 0000309452 00000 n 0000308810 00000 n 0000309649 00000 n 0000310271 00000 n 0000309671 00000 n 0000310468 00000 n 0000311102 00000 n 0000310490 00000 n 0000311299 00000 n 0000347489 00000 n 0000311321 00000 n 0000311402 00000 n 0000346495 00000 n 0000311540 00000 n 0000311678 00000 n 0000311759 00000 n 0000311896 00000 n 0000312036 00000 n 0000312117 00000 n 0000312254 00000 n 0000312394 00000 n 0000312475 00000 n 0000312612 00000 n 0000312752 00000 n 0000312833 00000 n 0000312970 00000 n 0000313110 00000 n 0000313191 00000 n 0000313328 00000 n 0000313468 00000 n 0000313550 00000 n 0000313687 00000 n 0000313827 00000 n 0000313909 00000 n 0000314046 00000 n 0000314184 00000 n 0000314266 00000 n 0000314403 00000 n 0000314543 00000 n 0000314625 00000 n 0000314762 00000 n 0000314902 00000 n 0000314984 00000 n 0000315121 00000 n 0000315259 00000 n 0000315341 00000 n 0000315478 00000 n 0000315618 00000 n 0000315700 00000 n 0000315837 00000 n 0000315975 00000 n 0000316057 00000 n 0000316194 00000 n 0000316334 00000 n 0000316416 00000 n 0000316553 00000 n 0000316689 00000 n 0000316771 00000 n 0000316908 00000 n 0000317046 00000 n 0000317128 00000 n 0000317265 00000 n 0000317405 00000 n 0000317487 00000 n 0000317624 00000 n 0000317764 00000 n 0000317846 00000 n 0000317983 00000 n 0000318123 00000 n 0000318205 00000 n 0000318342 00000 n 0000318482 00000 n 0000318564 00000 n 0000318701 00000 n 0000318839 00000 n 0000318921 00000 n 0000319058 00000 n 0000319198 00000 n 0000319280 00000 n 0000319417 00000 n 0000319557 00000 n 0000319639 00000 n 0000319775 00000 n 0000319913 00000 n 0000319995 00000 n 0000320132 00000 n 0000320272 00000 n 0000320354 00000 n 0000320490 00000 n 0000320630 00000 n 0000320712 00000 n 0000320850 00000 n 0000320990 00000 n 0000321072 00000 n 0000321209 00000 n 0000321349 00000 n 0000321431 00000 n 0000321568 00000 n 0000321708 00000 n 0000321790 00000 n 0000321927 00000 n 0000322067 00000 n 0000322149 00000 n 0000322286 00000 n 0000322426 00000 n 0000322508 00000 n 0000322645 00000 n 0000322785 00000 n 0000322867 00000 n 0000323003 00000 n 0000323143 00000 n 0000323225 00000 n 0000323362 00000 n 0000323502 00000 n 0000323584 00000 n 0000323721 00000 n 0000323861 00000 n 0000323943 00000 n 0000324080 00000 n 0000324220 00000 n 0000324302 00000 n 0000324439 00000 n 0000324577 00000 n 0000324659 00000 n 0000324796 00000 n 0000324936 00000 n 0000325018 00000 n 0000325156 00000 n 0000325296 00000 n 0000325378 00000 n 0000325515 00000 n 0000325655 00000 n 0000325737 00000 n 0000325874 00000 n 0000326014 00000 n 0000326096 00000 n 0000326233 00000 n 0000326373 00000 n 0000326455 00000 n 0000326592 00000 n 0000326732 00000 n 0000326814 00000 n 0000326951 00000 n 0000327091 00000 n 0000327173 00000 n 0000327310 00000 n 0000327450 00000 n 0000327532 00000 n 0000327668 00000 n 0000327808 00000 n 0000327890 00000 n 0000328027 00000 n 0000328167 00000 n 0000328249 00000 n 0000328385 00000 n 0000328525 00000 n 0000328607 00000 n 0000328744 00000 n 0000328884 00000 n 0000328966 00000 n 0000329103 00000 n 0000329241 00000 n 0000329323 00000 n 0000329460 00000 n 0000329600 00000 n 0000329682 00000 n 0000329818 00000 n 0000329957 00000 n 0000330039 00000 n 0000330174 00000 n 0000330312 00000 n 0000330394 00000 n 0000330529 00000 n 0000330667 00000 n 0000347705 00000 n 0000348375 00000 n 0000347729 00000 n 0000348572 00000 n 0000349086 00000 n 0000348594 00000 n 0000349283 00000 n 0000350701 00000 n 0000349305 00000 n 0000350898 00000 n 0000352392 00000 n 0000350921 00000 n 0000352589 00000 n 0000354162 00000 n 0000352612 00000 n 0000354359 00000 n 0000355869 00000 n 0000354382 00000 n 0000356066 00000 n 0000357584 00000 n 0000356089 00000 n 0000357781 00000 n 0000358498 00000 n 0000357804 00000 n 0000358695 00000 n 0000359472 00000 n 0000358717 00000 n 0000359669 00000 n 0000360449 00000 n 0000359691 00000 n 0000360646 00000 n 0000361355 00000 n 0000360668 00000 n 0000361552 00000 n 0000362183 00000 n 0000361574 00000 n 0000362380 00000 n 0000363061 00000 n 0000362402 00000 n 0000363258 00000 n 0000363978 00000 n 0000363280 00000 n 0000364175 00000 n 0000364926 00000 n 0000364197 00000 n 0000365123 00000 n 0000365871 00000 n 0000365145 00000 n 0000366068 00000 n 0000366851 00000 n 0000366090 00000 n 0000367048 00000 n 0000367712 00000 n 0000367070 00000 n 0000367909 00000 n 0000368654 00000 n 0000367931 00000 n 0000368851 00000 n 0000369494 00000 n 0000368873 00000 n 0000369691 00000 n 0000370136 00000 n 0000369713 00000 n 0000370333 00000 n 0000371211 00000 n 0000370355 00000 n 0000371408 00000 n 0000372342 00000 n 0000371430 00000 n 0000372539 00000 n 0000373389 00000 n 0000372561 00000 n 0000373586 00000 n 0000374272 00000 n 0000373608 00000 n 0000374469 00000 n 0000375359 00000 n 0000374491 00000 n 0000375556 00000 n 0000376246 00000 n 0000375578 00000 n 0000376443 00000 n 0000376925 00000 n 0000376465 00000 n 0000377122 00000 n 0000377707 00000 n 0000377144 00000 n 0000377904 00000 n 0000378488 00000 n 0000377926 00000 n 0000378685 00000 n 0000379305 00000 n 0000378707 00000 n 0000379502 00000 n 0000380080 00000 n 0000379524 00000 n 0000380277 00000 n 0000380916 00000 n 0000380299 00000 n 0000381113 00000 n 0000381800 00000 n 0000381135 00000 n 0000381997 00000 n 0000382616 00000 n 0000382019 00000 n 0000382813 00000 n 0000383447 00000 n 0000382835 00000 n 0000383644 00000 n 0000384320 00000 n 0000383666 00000 n 0000384517 00000 n 0000385135 00000 n 0000384539 00000 n 0000385332 00000 n 0000385954 00000 n 0000385354 00000 n 0000386151 00000 n 0000386659 00000 n 0000386173 00000 n 0000386856 00000 n 0000387714 00000 n 0000386878 00000 n 0000387911 00000 n 0000388793 00000 n 0000387933 00000 n 0000388990 00000 n 0000389660 00000 n 0000389012 00000 n 0000389857 00000 n 0000390527 00000 n 0000389879 00000 n 0000390724 00000 n 0000391322 00000 n 0000390746 00000 n 0000391519 00000 n 0000392083 00000 n 0000391541 00000 n 0000392280 00000 n 0000392905 00000 n 0000392302 00000 n 0000393102 00000 n 0000393721 00000 n 0000393124 00000 n 0000393918 00000 n 0000394372 00000 n 0000393940 00000 n 0000394569 00000 n 0000395189 00000 n 0000394591 00000 n 0000395386 00000 n 0000395956 00000 n 0000395408 00000 n 0000396153 00000 n 0000396727 00000 n 0000396175 00000 n 0000396924 00000 n 0000397495 00000 n 0000396946 00000 n 0000397692 00000 n 0000398279 00000 n 0000397714 00000 n 0000398476 00000 n 0000435002 00000 n 0000398498 00000 n 0000398580 00000 n 0000434008 00000 n 0000398717 00000 n 0000398855 00000 n 0000398937 00000 n 0000399075 00000 n 0000399215 00000 n 0000399297 00000 n 0000399434 00000 n 0000399574 00000 n 0000399656 00000 n 0000399793 00000 n 0000399933 00000 n 0000400015 00000 n 0000400152 00000 n 0000400292 00000 n 0000400374 00000 n 0000400510 00000 n 0000400650 00000 n 0000400732 00000 n 0000400869 00000 n 0000401009 00000 n 0000401091 00000 n 0000401228 00000 n 0000401368 00000 n 0000401450 00000 n 0000401587 00000 n 0000401725 00000 n 0000401807 00000 n 0000401944 00000 n 0000402084 00000 n 0000402166 00000 n 0000402303 00000 n 0000402443 00000 n 0000402525 00000 n 0000402662 00000 n 0000402802 00000 n 0000402884 00000 n 0000403021 00000 n 0000403161 00000 n 0000403243 00000 n 0000403380 00000 n 0000403520 00000 n 0000403602 00000 n 0000403739 00000 n 0000403879 00000 n 0000403961 00000 n 0000404098 00000 n 0000404238 00000 n 0000404320 00000 n 0000404457 00000 n 0000404597 00000 n 0000404679 00000 n 0000404816 00000 n 0000404956 00000 n 0000405038 00000 n 0000405175 00000 n 0000405315 00000 n 0000405397 00000 n 0000405534 00000 n 0000405674 00000 n 0000405756 00000 n 0000405894 00000 n 0000406034 00000 n 0000406116 00000 n 0000406253 00000 n 0000406393 00000 n 0000406475 00000 n 0000406612 00000 n 0000406752 00000 n 0000406834 00000 n 0000406971 00000 n 0000407111 00000 n 0000407193 00000 n 0000407330 00000 n 0000407470 00000 n 0000407552 00000 n 0000407689 00000 n 0000407829 00000 n 0000407911 00000 n 0000408048 00000 n 0000408188 00000 n 0000408270 00000 n 0000408408 00000 n 0000408548 00000 n 0000408630 00000 n 0000408767 00000 n 0000408907 00000 n 0000408989 00000 n 0000409126 00000 n 0000409266 00000 n 0000409348 00000 n 0000409485 00000 n 0000409625 00000 n 0000409707 00000 n 0000409844 00000 n 0000409982 00000 n 0000410064 00000 n 0000410200 00000 n 0000410340 00000 n 0000410422 00000 n 0000410559 00000 n 0000410699 00000 n 0000410781 00000 n 0000410918 00000 n 0000411056 00000 n 0000411138 00000 n 0000411275 00000 n 0000411415 00000 n 0000411497 00000 n 0000411634 00000 n 0000411774 00000 n 0000411856 00000 n 0000411993 00000 n 0000412133 00000 n 0000412215 00000 n 0000412352 00000 n 0000412492 00000 n 0000412574 00000 n 0000412712 00000 n 0000412852 00000 n 0000412934 00000 n 0000413071 00000 n 0000413211 00000 n 0000413293 00000 n 0000413430 00000 n 0000413570 00000 n 0000413652 00000 n 0000413789 00000 n 0000413929 00000 n 0000414011 00000 n 0000414148 00000 n 0000414288 00000 n 0000414370 00000 n 0000414507 00000 n 0000414647 00000 n 0000414729 00000 n 0000414865 00000 n 0000415005 00000 n 0000415087 00000 n 0000415223 00000 n 0000415363 00000 n 0000415445 00000 n 0000415582 00000 n 0000415722 00000 n 0000415804 00000 n 0000415942 00000 n 0000416080 00000 n 0000416162 00000 n 0000416298 00000 n 0000416438 00000 n 0000416520 00000 n 0000416657 00000 n 0000416797 00000 n 0000416879 00000 n 0000417015 00000 n 0000417154 00000 n 0000417236 00000 n 0000417371 00000 n 0000417509 00000 n 0000417591 00000 n 0000417726 00000 n 0000417864 00000 n 0000435218 00000 n 0000435790 00000 n 0000435242 00000 n 0000435987 00000 n 0000436561 00000 n 0000436009 00000 n 0000436758 00000 n 0000437328 00000 n 0000436780 00000 n 0000437525 00000 n 0000438167 00000 n 0000437547 00000 n 0000438364 00000 n 0000438980 00000 n 0000438386 00000 n 0000439177 00000 n 0000439770 00000 n 0000439199 00000 n 0000439967 00000 n 0000440533 00000 n 0000439989 00000 n 0000440730 00000 n 0000441313 00000 n 0000440752 00000 n 0000441510 00000 n 0000442186 00000 n 0000441532 00000 n 0000442383 00000 n 0000442991 00000 n 0000442405 00000 n 0000443188 00000 n 0000443755 00000 n 0000443210 00000 n 0000443952 00000 n 0000444581 00000 n 0000443974 00000 n 0000444778 00000 n 0000445345 00000 n 0000444800 00000 n 0000445542 00000 n 0000446132 00000 n 0000445564 00000 n 0000446329 00000 n 0000446985 00000 n 0000446351 00000 n 0000447182 00000 n 0000447867 00000 n 0000447204 00000 n 0000448064 00000 n 0000448638 00000 n 0000448086 00000 n 0000448835 00000 n 0000450030 00000 n 0000448857 00000 n 0000450227 00000 n 0000451425 00000 n 0000450250 00000 n 0000451622 00000 n 0000452813 00000 n 0000451645 00000 n 0000453010 00000 n 0000454393 00000 n 0000453033 00000 n 0000454590 00000 n 0000455175 00000 n 0000454613 00000 n 0000455372 00000 n 0000456722 00000 n 0000455394 00000 n 0000456919 00000 n 0000457519 00000 n 0000456942 00000 n 0000457716 00000 n 0000459059 00000 n 0000457738 00000 n 0000459256 00000 n 0000459816 00000 n 0000459279 00000 n 0000460013 00000 n 0000461365 00000 n 0000460035 00000 n 0000461562 00000 n 0000462159 00000 n 0000461585 00000 n 0000462356 00000 n 0000463672 00000 n 0000462378 00000 n 0000463869 00000 n 0000464476 00000 n 0000463892 00000 n 0000464673 00000 n 0000466032 00000 n 0000464695 00000 n 0000466229 00000 n 0000466727 00000 n 0000466252 00000 n 0000466924 00000 n 0000468270 00000 n 0000466946 00000 n 0000468467 00000 n 0000468991 00000 n 0000468490 00000 n 0000469188 00000 n 0000470546 00000 n 0000469210 00000 n 0000470743 00000 n 0000471238 00000 n 0000470766 00000 n 0000471435 00000 n 0000472808 00000 n 0000471457 00000 n 0000473005 00000 n 0000473515 00000 n 0000473028 00000 n 0000473712 00000 n 0000475039 00000 n 0000473734 00000 n 0000475236 00000 n 0000475726 00000 n 0000475259 00000 n 0000475923 00000 n 0000476609 00000 n 0000475945 00000 n 0000476806 00000 n 0000477592 00000 n 0000476828 00000 n 0000477789 00000 n 0000478570 00000 n 0000477811 00000 n 0000478767 00000 n 0000479461 00000 n 0000478789 00000 n 0000479658 00000 n 0000480345 00000 n 0000479680 00000 n 0000480542 00000 n 0000481254 00000 n 0000480564 00000 n 0000481451 00000 n 0000482391 00000 n 0000481473 00000 n 0000482588 00000 n 0000483286 00000 n 0000482610 00000 n 0000483483 00000 n 0000484163 00000 n 0000483505 00000 n 0000484360 00000 n 0000485032 00000 n 0000484382 00000 n 0000485229 00000 n 0000486051 00000 n 0000485251 00000 n 0000486248 00000 n 0000486875 00000 n 0000486270 00000 n 0000487072 00000 n 0000487855 00000 n 0000487094 00000 n 0000488052 00000 n 0000488765 00000 n 0000488074 00000 n 0000488962 00000 n 0000489722 00000 n 0000488984 00000 n 0000489919 00000 n 0000490581 00000 n 0000489941 00000 n 0000490778 00000 n 0000491526 00000 n 0000490800 00000 n 0000491723 00000 n 0000492443 00000 n 0000491745 00000 n 0000492640 00000 n 0000493402 00000 n 0000492662 00000 n 0000493599 00000 n 0000494238 00000 n 0000493621 00000 n 0000494435 00000 n 0000495266 00000 n 0000494457 00000 n 0000495463 00000 n 0000496236 00000 n 0000495485 00000 n 0000496433 00000 n 0000497213 00000 n 0000496455 00000 n 0000497410 00000 n 0000498073 00000 n 0000497432 00000 n 0000498270 00000 n 0000534434 00000 n 0000498292 00000 n 0000498374 00000 n 0000533440 00000 n 0000498511 00000 n 0000498651 00000 n 0000498733 00000 n 0000498870 00000 n 0000499010 00000 n 0000499092 00000 n 0000499229 00000 n 0000499369 00000 n 0000499451 00000 n 0000499588 00000 n 0000499728 00000 n 0000499810 00000 n 0000499947 00000 n 0000500087 00000 n 0000500169 00000 n 0000500306 00000 n 0000500446 00000 n 0000500528 00000 n 0000500665 00000 n 0000500805 00000 n 0000500887 00000 n 0000501024 00000 n 0000501164 00000 n 0000501246 00000 n 0000501383 00000 n 0000501523 00000 n 0000501605 00000 n 0000501742 00000 n 0000501882 00000 n 0000501964 00000 n 0000502101 00000 n 0000502241 00000 n 0000502323 00000 n 0000502460 00000 n 0000502600 00000 n 0000502682 00000 n 0000502819 00000 n 0000502959 00000 n 0000503041 00000 n 0000503178 00000 n 0000503318 00000 n 0000503400 00000 n 0000503537 00000 n 0000503677 00000 n 0000503759 00000 n 0000503896 00000 n 0000504036 00000 n 0000504118 00000 n 0000504255 00000 n 0000504395 00000 n 0000504477 00000 n 0000504614 00000 n 0000504754 00000 n 0000504836 00000 n 0000504973 00000 n 0000505113 00000 n 0000505195 00000 n 0000505332 00000 n 0000505472 00000 n 0000505554 00000 n 0000505691 00000 n 0000505831 00000 n 0000505913 00000 n 0000506050 00000 n 0000506190 00000 n 0000506272 00000 n 0000506409 00000 n 0000506549 00000 n 0000506631 00000 n 0000506767 00000 n 0000506907 00000 n 0000506989 00000 n 0000507125 00000 n 0000507265 00000 n 0000507347 00000 n 0000507484 00000 n 0000507624 00000 n 0000507706 00000 n 0000507843 00000 n 0000507983 00000 n 0000508065 00000 n 0000508202 00000 n 0000508342 00000 n 0000508424 00000 n 0000508561 00000 n 0000508701 00000 n 0000508783 00000 n 0000508920 00000 n 0000509060 00000 n 0000509142 00000 n 0000509279 00000 n 0000509417 00000 n 0000509499 00000 n 0000509635 00000 n 0000509775 00000 n 0000509857 00000 n 0000509994 00000 n 0000510134 00000 n 0000510216 00000 n 0000510353 00000 n 0000510493 00000 n 0000510575 00000 n 0000510712 00000 n 0000510852 00000 n 0000510934 00000 n 0000511071 00000 n 0000511211 00000 n 0000511293 00000 n 0000511429 00000 n 0000511569 00000 n 0000511651 00000 n 0000511788 00000 n 0000511928 00000 n 0000512010 00000 n 0000512146 00000 n 0000512286 00000 n 0000512368 00000 n 0000512505 00000 n 0000512645 00000 n 0000512727 00000 n 0000512864 00000 n 0000513004 00000 n 0000513086 00000 n 0000513223 00000 n 0000513361 00000 n 0000513443 00000 n 0000513580 00000 n 0000513720 00000 n 0000513802 00000 n 0000513939 00000 n 0000514079 00000 n 0000514161 00000 n 0000514298 00000 n 0000514438 00000 n 0000514520 00000 n 0000514657 00000 n 0000514797 00000 n 0000514879 00000 n 0000515016 00000 n 0000515156 00000 n 0000515238 00000 n 0000515375 00000 n 0000515515 00000 n 0000515597 00000 n 0000515734 00000 n 0000515874 00000 n 0000515956 00000 n 0000516092 00000 n 0000516232 00000 n 0000516314 00000 n 0000516451 00000 n 0000516591 00000 n 0000516673 00000 n 0000516809 00000 n 0000516948 00000 n 0000517030 00000 n 0000517165 00000 n 0000517303 00000 n 0000517385 00000 n 0000517520 00000 n 0000517658 00000 n 0000534650 00000 n 0000535306 00000 n 0000534674 00000 n 0000535503 00000 n 0000536321 00000 n 0000535525 00000 n 0000536518 00000 n 0000537157 00000 n 0000536540 00000 n 0000537354 00000 n 0000538145 00000 n 0000537376 00000 n 0000538342 00000 n 0000539114 00000 n 0000538364 00000 n 0000539311 00000 n 0000540091 00000 n 0000539333 00000 n 0000540288 00000 n 0000541093 00000 n 0000540310 00000 n 0000541290 00000 n 0000542068 00000 n 0000541312 00000 n 0000542265 00000 n 0000542924 00000 n 0000542287 00000 n 0000543121 00000 n 0000543568 00000 n 0000543143 00000 n 0000543765 00000 n 0000544353 00000 n 0000543787 00000 n 0000544550 00000 n 0000545130 00000 n 0000544572 00000 n 0000545327 00000 n 0000545915 00000 n 0000545349 00000 n 0000546112 00000 n 0000546737 00000 n 0000546134 00000 n 0000546934 00000 n 0000547514 00000 n 0000546956 00000 n 0000547711 00000 n 0000548318 00000 n 0000547733 00000 n 0000548515 00000 n 0000549093 00000 n 0000548537 00000 n 0000549290 00000 n 0000549877 00000 n 0000549312 00000 n 0000550074 00000 n 0000550886 00000 n 0000550096 00000 n 0000551083 00000 n 0000551963 00000 n 0000551105 00000 n 0000552160 00000 n 0000552967 00000 n 0000552182 00000 n 0000553164 00000 n 0000554053 00000 n 0000553186 00000 n 0000554250 00000 n 0000554994 00000 n 0000554272 00000 n 0000555191 00000 n 0000555846 00000 n 0000555213 00000 n 0000556043 00000 n 0000556799 00000 n 0000556065 00000 n 0000556996 00000 n 0000557823 00000 n 0000557018 00000 n 0000558020 00000 n 0000558834 00000 n 0000558042 00000 n 0000559031 00000 n 0000559909 00000 n 0000559053 00000 n 0000560106 00000 n 0000560910 00000 n 0000560128 00000 n 0000561107 00000 n 0000561989 00000 n 0000561129 00000 n 0000562186 00000 n 0000562948 00000 n 0000562208 00000 n 0000563145 00000 n 0000563940 00000 n 0000563167 00000 n 0000564137 00000 n 0000565017 00000 n 0000564159 00000 n 0000565214 00000 n 0000565981 00000 n 0000565236 00000 n 0000566178 00000 n 0000566978 00000 n 0000566200 00000 n 0000567175 00000 n 0000568041 00000 n 0000567197 00000 n 0000568238 00000 n 0000569045 00000 n 0000568260 00000 n 0000569242 00000 n 0000570126 00000 n 0000569264 00000 n 0000570323 00000 n 0000571123 00000 n 0000570345 00000 n 0000571320 00000 n 0000572206 00000 n 0000571342 00000 n 0000572403 00000 n 0000572913 00000 n 0000572425 00000 n 0000573110 00000 n 0000574052 00000 n 0000573132 00000 n 0000574249 00000 n 0000574891 00000 n 0000574271 00000 n 0000575088 00000 n 0000575778 00000 n 0000575110 00000 n 0000575975 00000 n 0000576671 00000 n 0000575997 00000 n 0000576868 00000 n 0000577557 00000 n 0000576890 00000 n 0000577754 00000 n 0000578450 00000 n 0000577776 00000 n 0000578647 00000 n 0000579544 00000 n 0000578669 00000 n 0000579741 00000 n 0000580647 00000 n 0000579763 00000 n 0000580844 00000 n 0000581464 00000 n 0000580866 00000 n 0000581661 00000 n 0000582297 00000 n 0000581683 00000 n 0000582494 00000 n 0000583125 00000 n 0000582516 00000 n 0000583322 00000 n 0000583959 00000 n 0000583344 00000 n 0000584156 00000 n 0000584787 00000 n 0000584178 00000 n 0000584984 00000 n 0000621064 00000 n 0000585006 00000 n 0000585088 00000 n 0000620070 00000 n 0000585225 00000 n 0000585365 00000 n 0000585447 00000 n 0000585584 00000 n 0000585724 00000 n 0000585806 00000 n 0000585943 00000 n 0000586081 00000 n 0000586163 00000 n 0000586299 00000 n 0000586439 00000 n 0000586521 00000 n 0000586658 00000 n 0000586798 00000 n 0000586880 00000 n 0000587017 00000 n 0000587157 00000 n 0000587239 00000 n 0000587376 00000 n 0000587514 00000 n 0000587596 00000 n 0000587733 00000 n 0000587873 00000 n 0000587955 00000 n 0000588092 00000 n 0000588232 00000 n 0000588314 00000 n 0000588452 00000 n 0000588592 00000 n 0000588674 00000 n 0000588811 00000 n 0000588951 00000 n 0000589033 00000 n 0000589170 00000 n 0000589310 00000 n 0000589392 00000 n 0000589529 00000 n 0000589669 00000 n 0000589751 00000 n 0000589888 00000 n 0000590028 00000 n 0000590110 00000 n 0000590247 00000 n 0000590387 00000 n 0000590469 00000 n 0000590606 00000 n 0000590746 00000 n 0000590828 00000 n 0000590965 00000 n 0000591105 00000 n 0000591187 00000 n 0000591324 00000 n 0000591464 00000 n 0000591546 00000 n 0000591683 00000 n 0000591823 00000 n 0000591905 00000 n 0000592042 00000 n 0000592182 00000 n 0000592264 00000 n 0000592401 00000 n 0000592539 00000 n 0000592621 00000 n 0000592758 00000 n 0000592898 00000 n 0000592980 00000 n 0000593117 00000 n 0000593257 00000 n 0000593339 00000 n 0000593476 00000 n 0000593616 00000 n 0000593698 00000 n 0000593835 00000 n 0000593975 00000 n 0000594057 00000 n 0000594194 00000 n 0000594334 00000 n 0000594416 00000 n 0000594553 00000 n 0000594693 00000 n 0000594775 00000 n 0000594911 00000 n 0000595051 00000 n 0000595133 00000 n 0000595270 00000 n 0000595408 00000 n 0000595490 00000 n 0000595627 00000 n 0000595767 00000 n 0000595849 00000 n 0000595986 00000 n 0000596126 00000 n 0000596208 00000 n 0000596345 00000 n 0000596485 00000 n 0000596567 00000 n 0000596704 00000 n 0000596844 00000 n 0000596926 00000 n 0000597063 00000 n 0000597203 00000 n 0000597285 00000 n 0000597422 00000 n 0000597560 00000 n 0000597642 00000 n 0000597779 00000 n 0000597919 00000 n 0000598001 00000 n 0000598138 00000 n 0000598278 00000 n 0000598360 00000 n 0000598497 00000 n 0000598637 00000 n 0000598719 00000 n 0000598856 00000 n 0000598996 00000 n 0000599078 00000 n 0000599215 00000 n 0000599355 00000 n 0000599437 00000 n 0000599575 00000 n 0000599715 00000 n 0000599797 00000 n 0000599934 00000 n 0000600074 00000 n 0000600156 00000 n 0000600293 00000 n 0000600433 00000 n 0000600515 00000 n 0000600652 00000 n 0000600792 00000 n 0000600874 00000 n 0000601011 00000 n 0000601151 00000 n 0000601233 00000 n 0000601369 00000 n 0000601509 00000 n 0000601591 00000 n 0000601728 00000 n 0000601868 00000 n 0000601950 00000 n 0000602087 00000 n 0000602223 00000 n 0000602305 00000 n 0000602442 00000 n 0000602582 00000 n 0000602664 00000 n 0000602801 00000 n 0000602941 00000 n 0000603023 00000 n 0000603160 00000 n 0000603300 00000 n 0000603382 00000 n 0000603518 00000 n 0000603657 00000 n 0000603739 00000 n 0000603874 00000 n 0000604012 00000 n 0000604094 00000 n 0000604229 00000 n 0000604367 00000 n 0000621280 00000 n 0000622162 00000 n 0000621304 00000 n 0000622359 00000 n 0000623238 00000 n 0000622381 00000 n 0000623435 00000 n 0000624296 00000 n 0000623457 00000 n 0000624493 00000 n 0000625385 00000 n 0000624515 00000 n 0000625582 00000 n 0000626447 00000 n 0000625604 00000 n 0000626644 00000 n 0000627534 00000 n 0000626666 00000 n 0000627731 00000 n 0000628610 00000 n 0000627753 00000 n 0000628807 00000 n 0000629702 00000 n 0000628829 00000 n 0000629899 00000 n 0000630777 00000 n 0000629921 00000 n 0000630974 00000 n 0000631873 00000 n 0000630996 00000 n 0000632070 00000 n 0000632943 00000 n 0000632092 00000 n 0000633140 00000 n 0000634018 00000 n 0000633162 00000 n 0000634215 00000 n 0000635115 00000 n 0000634237 00000 n 0000635312 00000 n 0000636210 00000 n 0000635334 00000 n 0000636407 00000 n 0000637302 00000 n 0000636429 00000 n 0000637499 00000 n 0000638372 00000 n 0000637521 00000 n 0000638569 00000 n 0000639451 00000 n 0000638591 00000 n 0000639648 00000 n 0000640501 00000 n 0000639670 00000 n 0000640698 00000 n 0000641565 00000 n 0000640720 00000 n 0000641762 00000 n 0000642643 00000 n 0000641784 00000 n 0000642840 00000 n 0000643690 00000 n 0000642862 00000 n 0000643887 00000 n 0000644733 00000 n 0000643909 00000 n 0000644930 00000 n 0000645805 00000 n 0000644952 00000 n 0000646002 00000 n 0000646891 00000 n 0000646024 00000 n 0000647088 00000 n 0000647574 00000 n 0000647110 00000 n 0000647771 00000 n 0000648656 00000 n 0000647793 00000 n 0000648853 00000 n 0000649528 00000 n 0000648875 00000 n 0000649725 00000 n 0000650474 00000 n 0000649747 00000 n 0000650671 00000 n 0000651284 00000 n 0000650693 00000 n 0000651481 00000 n 0000652256 00000 n 0000651503 00000 n 0000652453 00000 n 0000653398 00000 n 0000652475 00000 n 0000653595 00000 n 0000654481 00000 n 0000653617 00000 n 0000654678 00000 n 0000655420 00000 n 0000654700 00000 n 0000655617 00000 n 0000656549 00000 n 0000655639 00000 n 0000656746 00000 n 0000657375 00000 n 0000656768 00000 n 0000657572 00000 n 0000658020 00000 n 0000657594 00000 n 0000658217 00000 n 0000658791 00000 n 0000658239 00000 n 0000658988 00000 n 0000659565 00000 n 0000659010 00000 n 0000659762 00000 n 0000660389 00000 n 0000659784 00000 n 0000660586 00000 n 0000661167 00000 n 0000660608 00000 n 0000661364 00000 n 0000662066 00000 n 0000661386 00000 n 0000662263 00000 n 0000662838 00000 n 0000662285 00000 n 0000663035 00000 n 0000663615 00000 n 0000663057 00000 n 0000663812 00000 n 0000664444 00000 n 0000663834 00000 n 0000664641 00000 n 0000665235 00000 n 0000664663 00000 n 0000665432 00000 n 0000666179 00000 n 0000665454 00000 n 0000666376 00000 n 0000666969 00000 n 0000666398 00000 n 0000667166 00000 n 0000667885 00000 n 0000667188 00000 n 0000668082 00000 n 0000668680 00000 n 0000668104 00000 n 0000668877 00000 n 0000669524 00000 n 0000668899 00000 n 0000669721 00000 n 0000670375 00000 n 0000669743 00000 n 0000670572 00000 n 0000671164 00000 n 0000670594 00000 n 0000671361 00000 n 0000672232 00000 n 0000671383 00000 n 0000672429 00000 n 0000673067 00000 n 0000672451 00000 n 0000673264 00000 n 0000709613 00000 n 0000673286 00000 n 0000673368 00000 n 0000708619 00000 n 0000673504 00000 n 0000673644 00000 n 0000673726 00000 n 0000673863 00000 n 0000674003 00000 n 0000674085 00000 n 0000674222 00000 n 0000674362 00000 n 0000674444 00000 n 0000674581 00000 n 0000674721 00000 n 0000674803 00000 n 0000674940 00000 n 0000675080 00000 n 0000675162 00000 n 0000675298 00000 n 0000675438 00000 n 0000675520 00000 n 0000675656 00000 n 0000675796 00000 n 0000675878 00000 n 0000676014 00000 n 0000676154 00000 n 0000676236 00000 n 0000676373 00000 n 0000676513 00000 n 0000676595 00000 n 0000676732 00000 n 0000676872 00000 n 0000676954 00000 n 0000677091 00000 n 0000677231 00000 n 0000677313 00000 n 0000677450 00000 n 0000677590 00000 n 0000677672 00000 n 0000677809 00000 n 0000677949 00000 n 0000678031 00000 n 0000678168 00000 n 0000678308 00000 n 0000678390 00000 n 0000678526 00000 n 0000678666 00000 n 0000678748 00000 n 0000678885 00000 n 0000679025 00000 n 0000679107 00000 n 0000679244 00000 n 0000679384 00000 n 0000679466 00000 n 0000679603 00000 n 0000679743 00000 n 0000679825 00000 n 0000679962 00000 n 0000680102 00000 n 0000680184 00000 n 0000680321 00000 n 0000680461 00000 n 0000680543 00000 n 0000680680 00000 n 0000680820 00000 n 0000680902 00000 n 0000681038 00000 n 0000681178 00000 n 0000681260 00000 n 0000681397 00000 n 0000681537 00000 n 0000681619 00000 n 0000681756 00000 n 0000681896 00000 n 0000681978 00000 n 0000682116 00000 n 0000682256 00000 n 0000682338 00000 n 0000682475 00000 n 0000682615 00000 n 0000682697 00000 n 0000682834 00000 n 0000682974 00000 n 0000683056 00000 n 0000683193 00000 n 0000683333 00000 n 0000683415 00000 n 0000683552 00000 n 0000683692 00000 n 0000683774 00000 n 0000683911 00000 n 0000684051 00000 n 0000684133 00000 n 0000684270 00000 n 0000684410 00000 n 0000684492 00000 n 0000684628 00000 n 0000684768 00000 n 0000684850 00000 n 0000684987 00000 n 0000685127 00000 n 0000685209 00000 n 0000685346 00000 n 0000685486 00000 n 0000685568 00000 n 0000685705 00000 n 0000685845 00000 n 0000685927 00000 n 0000686065 00000 n 0000686205 00000 n 0000686287 00000 n 0000686424 00000 n 0000686564 00000 n 0000686646 00000 n 0000686783 00000 n 0000686923 00000 n 0000687005 00000 n 0000687142 00000 n 0000687282 00000 n 0000687364 00000 n 0000687501 00000 n 0000687641 00000 n 0000687723 00000 n 0000687860 00000 n 0000687998 00000 n 0000688080 00000 n 0000688217 00000 n 0000688357 00000 n 0000688439 00000 n 0000688576 00000 n 0000688716 00000 n 0000688798 00000 n 0000688935 00000 n 0000689075 00000 n 0000689157 00000 n 0000689294 00000 n 0000689434 00000 n 0000689516 00000 n 0000689653 00000 n 0000689793 00000 n 0000689875 00000 n 0000690012 00000 n 0000690152 00000 n 0000690234 00000 n 0000690371 00000 n 0000690511 00000 n 0000690593 00000 n 0000690730 00000 n 0000690870 00000 n 0000690952 00000 n 0000691089 00000 n 0000691229 00000 n 0000691311 00000 n 0000691448 00000 n 0000691588 00000 n 0000691670 00000 n 0000691806 00000 n 0000691945 00000 n 0000692027 00000 n 0000692162 00000 n 0000692300 00000 n 0000692382 00000 n 0000692517 00000 n 0000692655 00000 n 0000709829 00000 n 0000710601 00000 n 0000709853 00000 n 0000710798 00000 n 0000711386 00000 n 0000710820 00000 n 0000711583 00000 n 0000712417 00000 n 0000711605 00000 n 0000712614 00000 n 0000713213 00000 n 0000712636 00000 n 0000713410 00000 n 0000714317 00000 n 0000713432 00000 n 0000714514 00000 n 0000716005 00000 n 0000714536 00000 n 0000716202 00000 n 0000716883 00000 n 0000716225 00000 n 0000717080 00000 n 0000717678 00000 n 0000717102 00000 n 0000717875 00000 n 0000718753 00000 n 0000717897 00000 n 0000718950 00000 n 0000719560 00000 n 0000718972 00000 n 0000719757 00000 n 0000720632 00000 n 0000719779 00000 n 0000720829 00000 n 0000721520 00000 n 0000720851 00000 n 0000721717 00000 n 0000722246 00000 n 0000721739 00000 n 0000722443 00000 n 0000723047 00000 n 0000722465 00000 n 0000723244 00000 n 0000724031 00000 n 0000723266 00000 n 0000724228 00000 n 0000724675 00000 n 0000724250 00000 n 0000724872 00000 n 0000725602 00000 n 0000724894 00000 n 0000725799 00000 n 0000726637 00000 n 0000725821 00000 n 0000726834 00000 n 0000727708 00000 n 0000726856 00000 n 0000727905 00000 n 0000728705 00000 n 0000727927 00000 n 0000728902 00000 n 0000729431 00000 n 0000728924 00000 n 0000729628 00000 n 0000730354 00000 n 0000729650 00000 n 0000730551 00000 n 0000731033 00000 n 0000730573 00000 n 0000731230 00000 n 0000731809 00000 n 0000731252 00000 n 0000732006 00000 n 0000732584 00000 n 0000732028 00000 n 0000732781 00000 n 0000733399 00000 n 0000732803 00000 n 0000733596 00000 n 0000734179 00000 n 0000733618 00000 n 0000734376 00000 n 0000734853 00000 n 0000734398 00000 n 0000735050 00000 n 0000735668 00000 n 0000735072 00000 n 0000735865 00000 n 0000736514 00000 n 0000735887 00000 n 0000736711 00000 n 0000737418 00000 n 0000736733 00000 n 0000737615 00000 n 0000738372 00000 n 0000737637 00000 n 0000738569 00000 n 0000739247 00000 n 0000738591 00000 n 0000739444 00000 n 0000740081 00000 n 0000739466 00000 n 0000740278 00000 n 0000740913 00000 n 0000740300 00000 n 0000741110 00000 n 0000741743 00000 n 0000741132 00000 n 0000741940 00000 n 0000742585 00000 n 0000741962 00000 n 0000742782 00000 n 0000743477 00000 n 0000742804 00000 n 0000743674 00000 n 0000744121 00000 n 0000743696 00000 n 0000744318 00000 n 0000745146 00000 n 0000744340 00000 n 0000745343 00000 n 0000746119 00000 n 0000745365 00000 n 0000746316 00000 n 0000747036 00000 n 0000746338 00000 n 0000747233 00000 n 0000747968 00000 n 0000747255 00000 n 0000748165 00000 n 0000748986 00000 n 0000748187 00000 n 0000749183 00000 n 0000750019 00000 n 0000749205 00000 n 0000750216 00000 n 0000750963 00000 n 0000750238 00000 n 0000751160 00000 n 0000751605 00000 n 0000751182 00000 n 0000751802 00000 n 0000752466 00000 n 0000751824 00000 n 0000752663 00000 n 0000753376 00000 n 0000752685 00000 n 0000753573 00000 n 0000754207 00000 n 0000753595 00000 n 0000754404 00000 n 0000755156 00000 n 0000754426 00000 n 0000755353 00000 n 0000756168 00000 n 0000755375 00000 n 0000756365 00000 n 0000757114 00000 n 0000756387 00000 n 0000757311 00000 n 0000758040 00000 n 0000757333 00000 n 0000758237 00000 n 0000795151 00000 n 0000758259 00000 n 0000758341 00000 n 0000794157 00000 n 0000758478 00000 n 0000758618 00000 n 0000758700 00000 n 0000758837 00000 n 0000758977 00000 n 0000759059 00000 n 0000759195 00000 n 0000759335 00000 n 0000759417 00000 n 0000759554 00000 n 0000759694 00000 n 0000759776 00000 n 0000759913 00000 n 0000760053 00000 n 0000760135 00000 n 0000760272 00000 n 0000760412 00000 n 0000760494 00000 n 0000760630 00000 n 0000760770 00000 n 0000760852 00000 n 0000760989 00000 n 0000761129 00000 n 0000761211 00000 n 0000761348 00000 n 0000761488 00000 n 0000761570 00000 n 0000761706 00000 n 0000761846 00000 n 0000761928 00000 n 0000762065 00000 n 0000762205 00000 n 0000762287 00000 n 0000762424 00000 n 0000762564 00000 n 0000762646 00000 n 0000762783 00000 n 0000762923 00000 n 0000763005 00000 n 0000763141 00000 n 0000763279 00000 n 0000763361 00000 n 0000763498 00000 n 0000763638 00000 n 0000763720 00000 n 0000763858 00000 n 0000763998 00000 n 0000764080 00000 n 0000764217 00000 n 0000764357 00000 n 0000764439 00000 n 0000764576 00000 n 0000764716 00000 n 0000764798 00000 n 0000764935 00000 n 0000765075 00000 n 0000765157 00000 n 0000765294 00000 n 0000765434 00000 n 0000765516 00000 n 0000765652 00000 n 0000765792 00000 n 0000765874 00000 n 0000766011 00000 n 0000766151 00000 n 0000766233 00000 n 0000766370 00000 n 0000766510 00000 n 0000766592 00000 n 0000766729 00000 n 0000766867 00000 n 0000766949 00000 n 0000767086 00000 n 0000767226 00000 n 0000767308 00000 n 0000767445 00000 n 0000767585 00000 n 0000767667 00000 n 0000767804 00000 n 0000767944 00000 n 0000768026 00000 n 0000768164 00000 n 0000768304 00000 n 0000768386 00000 n 0000768523 00000 n 0000768663 00000 n 0000768745 00000 n 0000768882 00000 n 0000769022 00000 n 0000769104 00000 n 0000769241 00000 n 0000769381 00000 n 0000769463 00000 n 0000769600 00000 n 0000769738 00000 n 0000769820 00000 n 0000769957 00000 n 0000770097 00000 n 0000770179 00000 n 0000770316 00000 n 0000770456 00000 n 0000770538 00000 n 0000770675 00000 n 0000770815 00000 n 0000770897 00000 n 0000771034 00000 n 0000771174 00000 n 0000771256 00000 n 0000771393 00000 n 0000771533 00000 n 0000771615 00000 n 0000771752 00000 n 0000771892 00000 n 0000771974 00000 n 0000772112 00000 n 0000772248 00000 n 0000772330 00000 n 0000772467 00000 n 0000772607 00000 n 0000772689 00000 n 0000772826 00000 n 0000772966 00000 n 0000773048 00000 n 0000773185 00000 n 0000773325 00000 n 0000773407 00000 n 0000773544 00000 n 0000773684 00000 n 0000773766 00000 n 0000773903 00000 n 0000774043 00000 n 0000774125 00000 n 0000774262 00000 n 0000774400 00000 n 0000774482 00000 n 0000774619 00000 n 0000774759 00000 n 0000774841 00000 n 0000774979 00000 n 0000775119 00000 n 0000775201 00000 n 0000775338 00000 n 0000775478 00000 n 0000775560 00000 n 0000775697 00000 n 0000775837 00000 n 0000775919 00000 n 0000776055 00000 n 0000776193 00000 n 0000776275 00000 n 0000776412 00000 n 0000776552 00000 n 0000776634 00000 n 0000776770 00000 n 0000776909 00000 n 0000776991 00000 n 0000777126 00000 n 0000777262 00000 n 0000777344 00000 n 0000777478 00000 n 0000777616 00000 n 0000795367 00000 n 0000796068 00000 n 0000795391 00000 n 0000796265 00000 n 0000796976 00000 n 0000796287 00000 n 0000797173 00000 n 0000797845 00000 n 0000797195 00000 n 0000798042 00000 n 0000798813 00000 n 0000798064 00000 n 0000799010 00000 n 0000799430 00000 n 0000799032 00000 n 0000799627 00000 n 0000800218 00000 n 0000799649 00000 n 0000800415 00000 n 0000800977 00000 n 0000800437 00000 n 0000801174 00000 n 0000801942 00000 n 0000801196 00000 n 0000802139 00000 n 0000802794 00000 n 0000802161 00000 n 0000802991 00000 n 0000803725 00000 n 0000803013 00000 n 0000803922 00000 n 0000804655 00000 n 0000803944 00000 n 0000804852 00000 n 0000805583 00000 n 0000804874 00000 n 0000805780 00000 n 0000806516 00000 n 0000805802 00000 n 0000806713 00000 n 0000807447 00000 n 0000806735 00000 n 0000807644 00000 n 0000808518 00000 n 0000807666 00000 n 0000808715 00000 n 0000809499 00000 n 0000808737 00000 n 0000809696 00000 n 0000810632 00000 n 0000809718 00000 n 0000810829 00000 n 0000811563 00000 n 0000810851 00000 n 0000811760 00000 n 0000812493 00000 n 0000811782 00000 n 0000812690 00000 n 0000813554 00000 n 0000812712 00000 n 0000813751 00000 n 0000814615 00000 n 0000813773 00000 n 0000814812 00000 n 0000815527 00000 n 0000814834 00000 n 0000815724 00000 n 0000816467 00000 n 0000815746 00000 n 0000816664 00000 n 0000817379 00000 n 0000816686 00000 n 0000817576 00000 n 0000818313 00000 n 0000817598 00000 n 0000818510 00000 n 0000819247 00000 n 0000818532 00000 n 0000819444 00000 n 0000820181 00000 n 0000819466 00000 n 0000820378 00000 n 0000821113 00000 n 0000820400 00000 n 0000821310 00000 n 0000822057 00000 n 0000821332 00000 n 0000822254 00000 n 0000823090 00000 n 0000822276 00000 n 0000823287 00000 n 0000824139 00000 n 0000823309 00000 n 0000824336 00000 n 0000825060 00000 n 0000824358 00000 n 0000825257 00000 n 0000826005 00000 n 0000825279 00000 n 0000826202 00000 n 0000827100 00000 n 0000826224 00000 n 0000827297 00000 n 0000828254 00000 n 0000827319 00000 n 0000828451 00000 n 0000829786 00000 n 0000828473 00000 n 0000829983 00000 n 0000831063 00000 n 0000830006 00000 n 0000831260 00000 n 0000832206 00000 n 0000831282 00000 n 0000832403 00000 n 0000833135 00000 n 0000832425 00000 n 0000833332 00000 n 0000834064 00000 n 0000833354 00000 n 0000834261 00000 n 0000835118 00000 n 0000834283 00000 n 0000835315 00000 n 0000836172 00000 n 0000835337 00000 n 0000836369 00000 n 0000837360 00000 n 0000836391 00000 n 0000837557 00000 n 0000838305 00000 n 0000837579 00000 n 0000838502 00000 n 0000839249 00000 n 0000838524 00000 n 0000839446 00000 n 0000840193 00000 n 0000839468 00000 n 0000840390 00000 n 0000841133 00000 n 0000840412 00000 n 0000841330 00000 n 0000842178 00000 n 0000841352 00000 n 0000842375 00000 n 0000843245 00000 n 0000842397 00000 n 0000843442 00000 n 0000844176 00000 n 0000843464 00000 n 0000844373 00000 n 0000845131 00000 n 0000844395 00000 n 0000845328 00000 n 0000845986 00000 n 0000845350 00000 n 0000846183 00000 n 0000846960 00000 n 0000846205 00000 n 0000847157 00000 n 0000847935 00000 n 0000847179 00000 n 0000848132 00000 n 0000884268 00000 n 0000848154 00000 n 0000848236 00000 n 0000883274 00000 n 0000848373 00000 n 0000848513 00000 n 0000848595 00000 n 0000848732 00000 n 0000848872 00000 n 0000848954 00000 n 0000849091 00000 n 0000849231 00000 n 0000849313 00000 n 0000849450 00000 n 0000849590 00000 n 0000849672 00000 n 0000849810 00000 n 0000849950 00000 n 0000850032 00000 n 0000850169 00000 n 0000850309 00000 n 0000850391 00000 n 0000850529 00000 n 0000850669 00000 n 0000850751 00000 n 0000850887 00000 n 0000851027 00000 n 0000851109 00000 n 0000851246 00000 n 0000851386 00000 n 0000851468 00000 n 0000851605 00000 n 0000851745 00000 n 0000851827 00000 n 0000851964 00000 n 0000852104 00000 n 0000852186 00000 n 0000852323 00000 n 0000852463 00000 n 0000852545 00000 n 0000852682 00000 n 0000852820 00000 n 0000852902 00000 n 0000853039 00000 n 0000853179 00000 n 0000853261 00000 n 0000853398 00000 n 0000853536 00000 n 0000853618 00000 n 0000853755 00000 n 0000853895 00000 n 0000853977 00000 n 0000854114 00000 n 0000854254 00000 n 0000854336 00000 n 0000854473 00000 n 0000854613 00000 n 0000854695 00000 n 0000854832 00000 n 0000854972 00000 n 0000855054 00000 n 0000855191 00000 n 0000855331 00000 n 0000855413 00000 n 0000855550 00000 n 0000855690 00000 n 0000855772 00000 n 0000855909 00000 n 0000856049 00000 n 0000856131 00000 n 0000856268 00000 n 0000856408 00000 n 0000856490 00000 n 0000856627 00000 n 0000856767 00000 n 0000856849 00000 n 0000856986 00000 n 0000857126 00000 n 0000857208 00000 n 0000857345 00000 n 0000857485 00000 n 0000857567 00000 n 0000857704 00000 n 0000857844 00000 n 0000857926 00000 n 0000858063 00000 n 0000858203 00000 n 0000858285 00000 n 0000858421 00000 n 0000858561 00000 n 0000858643 00000 n 0000858780 00000 n 0000858920 00000 n 0000859002 00000 n 0000859139 00000 n 0000859279 00000 n 0000859361 00000 n 0000859498 00000 n 0000859638 00000 n 0000859720 00000 n 0000859857 00000 n 0000859995 00000 n 0000860077 00000 n 0000860214 00000 n 0000860354 00000 n 0000860436 00000 n 0000860573 00000 n 0000860713 00000 n 0000860795 00000 n 0000860932 00000 n 0000861072 00000 n 0000861154 00000 n 0000861291 00000 n 0000861431 00000 n 0000861513 00000 n 0000861650 00000 n 0000861790 00000 n 0000861872 00000 n 0000862009 00000 n 0000862149 00000 n 0000862231 00000 n 0000862368 00000 n 0000862508 00000 n 0000862590 00000 n 0000862727 00000 n 0000862867 00000 n 0000862949 00000 n 0000863086 00000 n 0000863226 00000 n 0000863308 00000 n 0000863445 00000 n 0000863585 00000 n 0000863667 00000 n 0000863804 00000 n 0000863944 00000 n 0000864026 00000 n 0000864163 00000 n 0000864303 00000 n 0000864385 00000 n 0000864522 00000 n 0000864662 00000 n 0000864744 00000 n 0000864881 00000 n 0000865021 00000 n 0000865103 00000 n 0000865240 00000 n 0000865380 00000 n 0000865462 00000 n 0000865599 00000 n 0000865739 00000 n 0000865821 00000 n 0000865958 00000 n 0000866098 00000 n 0000866180 00000 n 0000866317 00000 n 0000866457 00000 n 0000866539 00000 n 0000866676 00000 n 0000866815 00000 n 0000866897 00000 n 0000867031 00000 n 0000867169 00000 n 0000867251 00000 n 0000867386 00000 n 0000867524 00000 n 0000884484 00000 n 0000885262 00000 n 0000884508 00000 n 0000885459 00000 n 0000886243 00000 n 0000885481 00000 n 0000886440 00000 n 0000887221 00000 n 0000886462 00000 n 0000887418 00000 n 0000888181 00000 n 0000887440 00000 n 0000888378 00000 n 0000889198 00000 n 0000888400 00000 n 0000889395 00000 n 0000889963 00000 n 0000889417 00000 n 0000890160 00000 n 0000890799 00000 n 0000890182 00000 n 0000890996 00000 n 0000891693 00000 n 0000891018 00000 n 0000891890 00000 n 0000892626 00000 n 0000891912 00000 n 0000892823 00000 n 0000893462 00000 n 0000892845 00000 n 0000893659 00000 n 0000894187 00000 n 0000893681 00000 n 0000894384 00000 n 0000895082 00000 n 0000894406 00000 n 0000895279 00000 n 0000895995 00000 n 0000895301 00000 n 0000896192 00000 n 0000896952 00000 n 0000896214 00000 n 0000897149 00000 n 0000897968 00000 n 0000897171 00000 n 0000898165 00000 n 0000898948 00000 n 0000898187 00000 n 0000899145 00000 n 0000899798 00000 n 0000899167 00000 n 0000899995 00000 n 0000900776 00000 n 0000900017 00000 n 0000900973 00000 n 0000901790 00000 n 0000900995 00000 n 0000901987 00000 n 0000902729 00000 n 0000902009 00000 n 0000902926 00000 n 0000903882 00000 n 0000902948 00000 n 0000904079 00000 n 0000905268 00000 n 0000904101 00000 n 0000905465 00000 n 0000906013 00000 n 0000905488 00000 n 0000906210 00000 n 0000906918 00000 n 0000906232 00000 n 0000907115 00000 n 0000907736 00000 n 0000907137 00000 n 0000907933 00000 n 0000908699 00000 n 0000907955 00000 n 0000908896 00000 n 0000909574 00000 n 0000908918 00000 n 0000909771 00000 n 0000910402 00000 n 0000909793 00000 n 0000910599 00000 n 0000911219 00000 n 0000910621 00000 n 0000911416 00000 n 0000912034 00000 n 0000911438 00000 n 0000912231 00000 n 0000912902 00000 n 0000912253 00000 n 0000913099 00000 n 0000914340 00000 n 0000913121 00000 n 0000914537 00000 n 0000915349 00000 n 0000914560 00000 n 0000915546 00000 n 0000916404 00000 n 0000915568 00000 n 0000916601 00000 n 0000917533 00000 n 0000916623 00000 n 0000917730 00000 n 0000918683 00000 n 0000917752 00000 n 0000918880 00000 n 0000919558 00000 n 0000918902 00000 n 0000919755 00000 n 0000920511 00000 n 0000919777 00000 n 0000920708 00000 n 0000921504 00000 n 0000920730 00000 n 0000921701 00000 n 0000922440 00000 n 0000921723 00000 n 0000922637 00000 n 0000923277 00000 n 0000922659 00000 n 0000923474 00000 n 0000924148 00000 n 0000923496 00000 n 0000924345 00000 n 0000924976 00000 n 0000924367 00000 n 0000925173 00000 n 0000925842 00000 n 0000925195 00000 n 0000926039 00000 n 0000926681 00000 n 0000926061 00000 n 0000926878 00000 n 0000927550 00000 n 0000926900 00000 n 0000927747 00000 n 0000928374 00000 n 0000927769 00000 n 0000928571 00000 n 0000929235 00000 n 0000928593 00000 n 0000929432 00000 n 0000930073 00000 n 0000929454 00000 n 0000930270 00000 n 0000930931 00000 n 0000930292 00000 n 0000931128 00000 n 0000931770 00000 n 0000931150 00000 n 0000931967 00000 n 0000932645 00000 n 0000931989 00000 n 0000932842 00000 n 0000933501 00000 n 0000932864 00000 n 0000933698 00000 n 0000934367 00000 n 0000933720 00000 n 0000934564 00000 n 0000971300 00000 n 0000934586 00000 n 0000934668 00000 n 0000970306 00000 n 0000934805 00000 n 0000934945 00000 n 0000935027 00000 n 0000935164 00000 n 0000935304 00000 n 0000935386 00000 n 0000935523 00000 n 0000935663 00000 n 0000935745 00000 n 0000935882 00000 n 0000936022 00000 n 0000936104 00000 n 0000936241 00000 n 0000936381 00000 n 0000936463 00000 n 0000936601 00000 n 0000936741 00000 n 0000936823 00000 n 0000936960 00000 n 0000937100 00000 n 0000937182 00000 n 0000937319 00000 n 0000937459 00000 n 0000937541 00000 n 0000937678 00000 n 0000937818 00000 n 0000937900 00000 n 0000938037 00000 n 0000938177 00000 n 0000938259 00000 n 0000938397 00000 n 0000938537 00000 n 0000938619 00000 n 0000938755 00000 n 0000938895 00000 n 0000938977 00000 n 0000939114 00000 n 0000939254 00000 n 0000939336 00000 n 0000939473 00000 n 0000939613 00000 n 0000939695 00000 n 0000939832 00000 n 0000939972 00000 n 0000940054 00000 n 0000940191 00000 n 0000940331 00000 n 0000940413 00000 n 0000940550 00000 n 0000940690 00000 n 0000940772 00000 n 0000940909 00000 n 0000941049 00000 n 0000941131 00000 n 0000941268 00000 n 0000941406 00000 n 0000941488 00000 n 0000941625 00000 n 0000941765 00000 n 0000941847 00000 n 0000941984 00000 n 0000942124 00000 n 0000942206 00000 n 0000942343 00000 n 0000942483 00000 n 0000942565 00000 n 0000942703 00000 n 0000942843 00000 n 0000942925 00000 n 0000943062 00000 n 0000943202 00000 n 0000943284 00000 n 0000943421 00000 n 0000943561 00000 n 0000943643 00000 n 0000943780 00000 n 0000943920 00000 n 0000944002 00000 n 0000944138 00000 n 0000944278 00000 n 0000944360 00000 n 0000944497 00000 n 0000944637 00000 n 0000944719 00000 n 0000944855 00000 n 0000944995 00000 n 0000945077 00000 n 0000945214 00000 n 0000945354 00000 n 0000945436 00000 n 0000945573 00000 n 0000945713 00000 n 0000945795 00000 n 0000945932 00000 n 0000946072 00000 n 0000946154 00000 n 0000946291 00000 n 0000946431 00000 n 0000946513 00000 n 0000946650 00000 n 0000946790 00000 n 0000946872 00000 n 0000947009 00000 n 0000947149 00000 n 0000947231 00000 n 0000947367 00000 n 0000947507 00000 n 0000947589 00000 n 0000947727 00000 n 0000947867 00000 n 0000947949 00000 n 0000948086 00000 n 0000948226 00000 n 0000948308 00000 n 0000948445 00000 n 0000948585 00000 n 0000948667 00000 n 0000948803 00000 n 0000948943 00000 n 0000949025 00000 n 0000949161 00000 n 0000949299 00000 n 0000949381 00000 n 0000949518 00000 n 0000949658 00000 n 0000949740 00000 n 0000949877 00000 n 0000950017 00000 n 0000950099 00000 n 0000950235 00000 n 0000950375 00000 n 0000950457 00000 n 0000950593 00000 n 0000950733 00000 n 0000950815 00000 n 0000950951 00000 n 0000951091 00000 n 0000951173 00000 n 0000951310 00000 n 0000951450 00000 n 0000951532 00000 n 0000951669 00000 n 0000951809 00000 n 0000951891 00000 n 0000952027 00000 n 0000952167 00000 n 0000952249 00000 n 0000952386 00000 n 0000952526 00000 n 0000952608 00000 n 0000952744 00000 n 0000952884 00000 n 0000952966 00000 n 0000953102 00000 n 0000953241 00000 n 0000953323 00000 n 0000953457 00000 n 0000953595 00000 n 0000953677 00000 n 0000953812 00000 n 0000953950 00000 n 0000971516 00000 n 0000972156 00000 n 0000971540 00000 n 0000972353 00000 n 0000972992 00000 n 0000972375 00000 n 0000973189 00000 n 0000973812 00000 n 0000973211 00000 n 0000974009 00000 n 0000974645 00000 n 0000974031 00000 n 0000974842 00000 n 0000975553 00000 n 0000974864 00000 n 0000975750 00000 n 0000976388 00000 n 0000975772 00000 n 0000976585 00000 n 0000977327 00000 n 0000976607 00000 n 0000977524 00000 n 0000978167 00000 n 0000977546 00000 n 0000978364 00000 n 0000979013 00000 n 0000978386 00000 n 0000979210 00000 n 0000979938 00000 n 0000979232 00000 n 0000980135 00000 n 0000980600 00000 n 0000980157 00000 n 0000980797 00000 n 0000981437 00000 n 0000980819 00000 n 0000981634 00000 n 0000982551 00000 n 0000981656 00000 n 0000982748 00000 n 0000983507 00000 n 0000982770 00000 n 0000983704 00000 n 0000984462 00000 n 0000983726 00000 n 0000984659 00000 n 0000985398 00000 n 0000984681 00000 n 0000985595 00000 n 0000986613 00000 n 0000985617 00000 n 0000986810 00000 n 0000987740 00000 n 0000986832 00000 n 0000987937 00000 n 0000988970 00000 n 0000987959 00000 n 0000989167 00000 n 0000990065 00000 n 0000989189 00000 n 0000990262 00000 n 0000991143 00000 n 0000990284 00000 n 0000991340 00000 n 0000992035 00000 n 0000991362 00000 n 0000992232 00000 n 0000992794 00000 n 0000992254 00000 n 0000992991 00000 n 0000993609 00000 n 0000993013 00000 n 0000993806 00000 n 0000994407 00000 n 0000993828 00000 n 0000994604 00000 n 0000995282 00000 n 0000994626 00000 n 0000995479 00000 n 0000996197 00000 n 0000995501 00000 n 0000996394 00000 n 0000997299 00000 n 0000996416 00000 n 0000997496 00000 n 0000998134 00000 n 0000997518 00000 n 0000998331 00000 n 0000999023 00000 n 0000998353 00000 n 0000999220 00000 n 0001000071 00000 n 0000999242 00000 n 0001000268 00000 n 0001000864 00000 n 0001000290 00000 n 0001001061 00000 n 0001001879 00000 n 0001001083 00000 n 0001002076 00000 n 0001002768 00000 n 0001002098 00000 n 0001002965 00000 n 0001003631 00000 n 0001002987 00000 n 0001003828 00000 n 0001004851 00000 n 0001003850 00000 n 0001005048 00000 n 0001005946 00000 n 0001005070 00000 n 0001006143 00000 n 0001007027 00000 n 0001006165 00000 n 0001007224 00000 n 0001007964 00000 n 0001007246 00000 n 0001008161 00000 n 0001008800 00000 n 0001008183 00000 n 0001008997 00000 n 0001009747 00000 n 0001009019 00000 n 0001009944 00000 n 0001010686 00000 n 0001009966 00000 n 0001010883 00000 n 0001011748 00000 n 0001010905 00000 n 0001011945 00000 n 0001012781 00000 n 0001011967 00000 n 0001012978 00000 n 0001013747 00000 n 0001013000 00000 n 0001013944 00000 n 0001014686 00000 n 0001013966 00000 n 0001014883 00000 n 0001015581 00000 n 0001014905 00000 n 0001015778 00000 n 0001016529 00000 n 0001015800 00000 n 0001016726 00000 n 0001017602 00000 n 0001016748 00000 n 0001017799 00000 n 0001018556 00000 n 0001017821 00000 n 0001018753 00000 n 0001019693 00000 n 0001018775 00000 n 0001019890 00000 n 0001020776 00000 n 0001019912 00000 n 0001020973 00000 n 0001021946 00000 n 0001020995 00000 n 0001022143 00000 n 0001022775 00000 n 0001022165 00000 n 0001022972 00000 n 0001059462 00000 n 0001022994 00000 n 0001023076 00000 n 0001058468 00000 n 0001023212 00000 n 0001023352 00000 n 0001023434 00000 n 0001023571 00000 n 0001023711 00000 n 0001023793 00000 n 0001023929 00000 n 0001024069 00000 n 0001024151 00000 n 0001024288 00000 n 0001024428 00000 n 0001024510 00000 n 0001024646 00000 n 0001024786 00000 n 0001024868 00000 n 0001025005 00000 n 0001025145 00000 n 0001025227 00000 n 0001025363 00000 n 0001025503 00000 n 0001025585 00000 n 0001025722 00000 n 0001025860 00000 n 0001025942 00000 n 0001026079 00000 n 0001026219 00000 n 0001026301 00000 n 0001026438 00000 n 0001026578 00000 n 0001026660 00000 n 0001026798 00000 n 0001026938 00000 n 0001027020 00000 n 0001027157 00000 n 0001027297 00000 n 0001027379 00000 n 0001027516 00000 n 0001027656 00000 n 0001027738 00000 n 0001027875 00000 n 0001028013 00000 n 0001028095 00000 n 0001028232 00000 n 0001028370 00000 n 0001028452 00000 n 0001028589 00000 n 0001028725 00000 n 0001028807 00000 n 0001028944 00000 n 0001029084 00000 n 0001029166 00000 n 0001029303 00000 n 0001029443 00000 n 0001029525 00000 n 0001029662 00000 n 0001029802 00000 n 0001029884 00000 n 0001030021 00000 n 0001030161 00000 n 0001030243 00000 n 0001030380 00000 n 0001030520 00000 n 0001030602 00000 n 0001030739 00000 n 0001030879 00000 n 0001030961 00000 n 0001031098 00000 n 0001031238 00000 n 0001031320 00000 n 0001031457 00000 n 0001031597 00000 n 0001031679 00000 n 0001031816 00000 n 0001031956 00000 n 0001032038 00000 n 0001032175 00000 n 0001032315 00000 n 0001032397 00000 n 0001032533 00000 n 0001032673 00000 n 0001032755 00000 n 0001032892 00000 n 0001033032 00000 n 0001033114 00000 n 0001033251 00000 n 0001033391 00000 n 0001033473 00000 n 0001033610 00000 n 0001033750 00000 n 0001033832 00000 n 0001033969 00000 n 0001034107 00000 n 0001034189 00000 n 0001034326 00000 n 0001034466 00000 n 0001034548 00000 n 0001034685 00000 n 0001034825 00000 n 0001034907 00000 n 0001035044 00000 n 0001035184 00000 n 0001035266 00000 n 0001035403 00000 n 0001035543 00000 n 0001035625 00000 n 0001035762 00000 n 0001035902 00000 n 0001035984 00000 n 0001036121 00000 n 0001036261 00000 n 0001036343 00000 n 0001036480 00000 n 0001036620 00000 n 0001036702 00000 n 0001036839 00000 n 0001036979 00000 n 0001037061 00000 n 0001037198 00000 n 0001037338 00000 n 0001037420 00000 n 0001037556 00000 n 0001037696 00000 n 0001037778 00000 n 0001037915 00000 n 0001038055 00000 n 0001038137 00000 n 0001038274 00000 n 0001038414 00000 n 0001038496 00000 n 0001038633 00000 n 0001038773 00000 n 0001038855 00000 n 0001038992 00000 n 0001039132 00000 n 0001039214 00000 n 0001039351 00000 n 0001039491 00000 n 0001039573 00000 n 0001039710 00000 n 0001039850 00000 n 0001039932 00000 n 0001040069 00000 n 0001040209 00000 n 0001040291 00000 n 0001040428 00000 n 0001040568 00000 n 0001040650 00000 n 0001040787 00000 n 0001040923 00000 n 0001041005 00000 n 0001041142 00000 n 0001041282 00000 n 0001041364 00000 n 0001041500 00000 n 0001041639 00000 n 0001041721 00000 n 0001041856 00000 n 0001041994 00000 n 0001042076 00000 n 0001042210 00000 n 0001042346 00000 n 0001059678 00000 n 0001060412 00000 n 0001059702 00000 n 0001060609 00000 n 0001061427 00000 n 0001060631 00000 n 0001061624 00000 n 0001062693 00000 n 0001061646 00000 n 0001062890 00000 n 0001063564 00000 n 0001062912 00000 n 0001063761 00000 n 0001064424 00000 n 0001063783 00000 n 0001064621 00000 n 0001065315 00000 n 0001064643 00000 n 0001065512 00000 n 0001066282 00000 n 0001065534 00000 n 0001066479 00000 n 0001067218 00000 n 0001066501 00000 n 0001067415 00000 n 0001068173 00000 n 0001067437 00000 n 0001068370 00000 n 0001069198 00000 n 0001068392 00000 n 0001069395 00000 n 0001070131 00000 n 0001069417 00000 n 0001070328 00000 n 0001071050 00000 n 0001070350 00000 n 0001071247 00000 n 0001072104 00000 n 0001071269 00000 n 0001072301 00000 n 0001073086 00000 n 0001072323 00000 n 0001073283 00000 n 0001073962 00000 n 0001073305 00000 n 0001074159 00000 n 0001074844 00000 n 0001074181 00000 n 0001075041 00000 n 0001075835 00000 n 0001075063 00000 n 0001076032 00000 n 0001076547 00000 n 0001076054 00000 n 0001076744 00000 n 0001077457 00000 n 0001076766 00000 n 0001077654 00000 n 0001078235 00000 n 0001077676 00000 n 0001078432 00000 n 0001079106 00000 n 0001078454 00000 n 0001079303 00000 n 0001080078 00000 n 0001079325 00000 n 0001080275 00000 n 0001080778 00000 n 0001080297 00000 n 0001080975 00000 n 0001081739 00000 n 0001080997 00000 n 0001081936 00000 n 0001082709 00000 n 0001081958 00000 n 0001082906 00000 n 0001083630 00000 n 0001082928 00000 n 0001083827 00000 n 0001084527 00000 n 0001083849 00000 n 0001084724 00000 n 0001085395 00000 n 0001084746 00000 n 0001085592 00000 n 0001086333 00000 n 0001085614 00000 n 0001086530 00000 n 0001087417 00000 n 0001086552 00000 n 0001087614 00000 n 0001088501 00000 n 0001087636 00000 n 0001088698 00000 n 0001089362 00000 n 0001088720 00000 n 0001089559 00000 n 0001090226 00000 n 0001089581 00000 n 0001090423 00000 n 0001091213 00000 n 0001090445 00000 n 0001091410 00000 n 0001092196 00000 n 0001091432 00000 n 0001092393 00000 n 0001093363 00000 n 0001092415 00000 n 0001093560 00000 n 0001093998 00000 n 0001093582 00000 n 0001094195 00000 n 0001094869 00000 n 0001094217 00000 n 0001095066 00000 n 0001121046 00000 n 0001095088 00000 n 0001095170 00000 n 0001120340 00000 n 0001095307 00000 n 0001095445 00000 n 0001095527 00000 n 0001095664 00000 n 0001095804 00000 n 0001095886 00000 n 0001096023 00000 n 0001096163 00000 n 0001096245 00000 n 0001096382 00000 n 0001096522 00000 n 0001096604 00000 n 0001096741 00000 n 0001096877 00000 n 0001096959 00000 n 0001097096 00000 n 0001097236 00000 n 0001097318 00000 n 0001097455 00000 n 0001097593 00000 n 0001097675 00000 n 0001097812 00000 n 0001097952 00000 n 0001098034 00000 n 0001098170 00000 n 0001098310 00000 n 0001098392 00000 n 0001098529 00000 n 0001098669 00000 n 0001098751 00000 n 0001098888 00000 n 0001099028 00000 n 0001099110 00000 n 0001099247 00000 n 0001099387 00000 n 0001099469 00000 n 0001099606 00000 n 0001099746 00000 n 0001099828 00000 n 0001099965 00000 n 0001100105 00000 n 0001100187 00000 n 0001100324 00000 n 0001100464 00000 n 0001100546 00000 n 0001100683 00000 n 0001100823 00000 n 0001100905 00000 n 0001101041 00000 n 0001101179 00000 n 0001101261 00000 n 0001101399 00000 n 0001101537 00000 n 0001101619 00000 n 0001101756 00000 n 0001101896 00000 n 0001101978 00000 n 0001102115 00000 n 0001102255 00000 n 0001102337 00000 n 0001102473 00000 n 0001102613 00000 n 0001102695 00000 n 0001102832 00000 n 0001102972 00000 n 0001103054 00000 n 0001103192 00000 n 0001103332 00000 n 0001103414 00000 n 0001103551 00000 n 0001103691 00000 n 0001103773 00000 n 0001103910 00000 n 0001104050 00000 n 0001104132 00000 n 0001104269 00000 n 0001104409 00000 n 0001104491 00000 n 0001104628 00000 n 0001104766 00000 n 0001104848 00000 n 0001104985 00000 n 0001105125 00000 n 0001105207 00000 n 0001105344 00000 n 0001105484 00000 n 0001105566 00000 n 0001105703 00000 n 0001105841 00000 n 0001105923 00000 n 0001106060 00000 n 0001106200 00000 n 0001106282 00000 n 0001106419 00000 n 0001106555 00000 n 0001106637 00000 n 0001106774 00000 n 0001106914 00000 n 0001106996 00000 n 0001107133 00000 n 0001107273 00000 n 0001107355 00000 n 0001107492 00000 n 0001107632 00000 n 0001107714 00000 n 0001107851 00000 n 0001107991 00000 n 0001108073 00000 n 0001108211 00000 n 0001108349 00000 n 0001108431 00000 n 0001108568 00000 n 0001108708 00000 n 0001121262 00000 n 0001121286 00000 n 0001314183 00000 n 0001121365 00000 n 0001121479 00000 n 0001121560 00000 n 0001121674 00000 n 0001121866 00000 n 0001122124 00000 n 0001122218 00000 n 0001122334 00000 n 0001122449 00000 n 0001122561 00000 n 0001122678 00000 n 0001122791 00000 n 0001122908 00000 n 0001123026 00000 n 0001123143 00000 n 0001123252 00000 n 0001123363 00000 n 0001123473 00000 n 0001123586 00000 n 0001123696 00000 n 0001123810 00000 n 0001123924 00000 n 0001124033 00000 n 0001124146 00000 n 0001124261 00000 n 0001124376 00000 n 0001124490 00000 n 0001124608 00000 n 0001124721 00000 n 0001124838 00000 n 0001124955 00000 n 0001125068 00000 n 0001125181 00000 n 0001125293 00000 n 0001125406 00000 n 0001125518 00000 n 0001125631 00000 n 0001125743 00000 n 0001125855 00000 n 0001125967 00000 n 0001126082 00000 n 0001126192 00000 n 0001126301 00000 n 0001126419 00000 n 0001126533 00000 n 0001126641 00000 n 0001126754 00000 n 0001126871 00000 n 0001126979 00000 n 0001127091 00000 n 0001127201 00000 n 0001127322 00000 n 0001127438 00000 n 0001127555 00000 n 0001127671 00000 n 0001127793 00000 n 0001127921 00000 n 0001128039 00000 n 0001128156 00000 n 0001128272 00000 n 0001128387 00000 n 0001128501 00000 n 0001128614 00000 n 0001128728 00000 n 0001128849 00000 n 0001128962 00000 n 0001129077 00000 n 0001129193 00000 n 0001129306 00000 n 0001129419 00000 n 0001129528 00000 n 0001129650 00000 n 0001129768 00000 n 0001129885 00000 n 0001130008 00000 n 0001130127 00000 n 0001130245 00000 n 0001130356 00000 n 0001130472 00000 n 0001130590 00000 n 0001130706 00000 n 0001130819 00000 n 0001130932 00000 n 0001131045 00000 n 0001131162 00000 n 0001131275 00000 n 0001131388 00000 n 0001131500 00000 n 0001131619 00000 n 0001131739 00000 n 0001131853 00000 n 0001131971 00000 n 0001132090 00000 n 0001132205 00000 n 0001132320 00000 n 0001132439 00000 n 0001132558 00000 n 0001132678 00000 n 0001132792 00000 n 0001132919 00000 n 0001133034 00000 n 0001133152 00000 n 0001133270 00000 n 0001133387 00000 n 0001133504 00000 n 0001133621 00000 n 0001133738 00000 n 0001133866 00000 n 0001133983 00000 n 0001134097 00000 n 0001134212 00000 n 0001134328 00000 n 0001134442 00000 n 0001134556 00000 n 0001134665 00000 n 0001134778 00000 n 0001134891 00000 n 0001135007 00000 n 0001135118 00000 n 0001135234 00000 n 0001135348 00000 n 0001135457 00000 n 0001135571 00000 n 0001135686 00000 n 0001135805 00000 n 0001135919 00000 n 0001136034 00000 n 0001136146 00000 n 0001136260 00000 n 0001136374 00000 n 0001136492 00000 n 0001136606 00000 n 0001136704 00000 n 0001136969 00000 n 0001137061 00000 n 0001137179 00000 n 0001137297 00000 n 0001137414 00000 n 0001137532 00000 n 0001137654 00000 n 0001137770 00000 n 0001137891 00000 n 0001138012 00000 n 0001138132 00000 n 0001138253 00000 n 0001138366 00000 n 0001138486 00000 n 0001138606 00000 n 0001138725 00000 n 0001138845 00000 n 0001138968 00000 n 0001139091 00000 n 0001139213 00000 n 0001139336 00000 n 0001139457 00000 n 0001139561 00000 n 0001139837 00000 n 0001139932 00000 n 0001140046 00000 n 0001140161 00000 n 0001140258 00000 n 0001140538 00000 n 0001140618 00000 n 0001140860 00000 n 0001140963 00000 n 0001141085 00000 n 0001141205 00000 n 0001141327 00000 n 0001141447 00000 n 0001141566 00000 n 0001141685 00000 n 0001141805 00000 n 0001141927 00000 n 0001142046 00000 n 0001142170 00000 n 0001142280 00000 n 0001142392 00000 n 0001142506 00000 n 0001142625 00000 n 0001142748 00000 n 0001142876 00000 n 0001142998 00000 n 0001143109 00000 n 0001143222 00000 n 0001143337 00000 n 0001143453 00000 n 0001143576 00000 n 0001143695 00000 n 0001143803 00000 n 0001144057 00000 n 0001144164 00000 n 0001144288 00000 n 0001144411 00000 n 0001144533 00000 n 0001144655 00000 n 0001144777 00000 n 0001144894 00000 n 0001145017 00000 n 0001145144 00000 n 0001145261 00000 n 0001145367 00000 n 0001145621 00000 n 0001145726 00000 n 0001145847 00000 n 0001145967 00000 n 0001146090 00000 n 0001146216 00000 n 0001146349 00000 n 0001146470 00000 n 0001146596 00000 n 0001146722 00000 n 0001146848 00000 n 0001146974 00000 n 0001147099 00000 n 0001147217 00000 n 0001147340 00000 n 0001147460 00000 n 0001147568 00000 n 0001147886 00000 n 0001147985 00000 n 0001148104 00000 n 0001148228 00000 n 0001148349 00000 n 0001148474 00000 n 0001148605 00000 n 0001148739 00000 n 0001148873 00000 n 0001149010 00000 n 0001149142 00000 n 0001149281 00000 n 0001149420 00000 n 0001149563 00000 n 0001149702 00000 n 0001149843 00000 n 0001149969 00000 n 0001150100 00000 n 0001150218 00000 n 0001150455 00000 n 0001150559 00000 n 0001150681 00000 n 0001150796 00000 n 0001150912 00000 n 0001151030 00000 n 0001151132 00000 n 0001151366 00000 n 0001151462 00000 n 0001151575 00000 n 0001151687 00000 n 0001151799 00000 n 0001151911 00000 n 0001152026 00000 n 0001152142 00000 n 0001152257 00000 n 0001152371 00000 n 0001152489 00000 n 0001152586 00000 n 0001152899 00000 n 0001153004 00000 n 0001153124 00000 n 0001153241 00000 n 0001153357 00000 n 0001153477 00000 n 0001153598 00000 n 0001153719 00000 n 0001153823 00000 n 0001154085 00000 n 0001154189 00000 n 0001154301 00000 n 0001154414 00000 n 0001154526 00000 n 0001154640 00000 n 0001154752 00000 n 0001154865 00000 n 0001154977 00000 n 0001155098 00000 n 0001155219 00000 n 0001155344 00000 n 0001155460 00000 n 0001155580 00000 n 0001155704 00000 n 0001155820 00000 n 0001155935 00000 n 0001156053 00000 n 0001156172 00000 n 0001156285 00000 n 0001156411 00000 n 0001156530 00000 n 0001156651 00000 n 0001156776 00000 n 0001156896 00000 n 0001157017 00000 n 0001157145 00000 n 0001157274 00000 n 0001157404 00000 n 0001157537 00000 n 0001157669 00000 n 0001157793 00000 n 0001157918 00000 n 0001158044 00000 n 0001158173 00000 n 0001158301 00000 n 0001158433 00000 n 0001158559 00000 n 0001158684 00000 n 0001158812 00000 n 0001158941 00000 n 0001159069 00000 n 0001159200 00000 n 0001159322 00000 n 0001159446 00000 n 0001159571 00000 n 0001159700 00000 n 0001159821 00000 n 0001159943 00000 n 0001160062 00000 n 0001160184 00000 n 0001160303 00000 n 0001160426 00000 n 0001160545 00000 n 0001160663 00000 n 0001160788 00000 n 0001160903 00000 n 0001161018 00000 n 0001161140 00000 n 0001161255 00000 n 0001161377 00000 n 0001161495 00000 n 0001161620 00000 n 0001161738 00000 n 0001161863 00000 n 0001161978 00000 n 0001162100 00000 n 0001162215 00000 n 0001162321 00000 n 0001162567 00000 n 0001162676 00000 n 0001162802 00000 n 0001162925 00000 n 0001163048 00000 n 0001163172 00000 n 0001163296 00000 n 0001163421 00000 n 0001163546 00000 n 0001163665 00000 n 0001163791 00000 n 0001163911 00000 n 0001164038 00000 n 0001164154 00000 n 0001164277 00000 n 0001164394 00000 n 0001164518 00000 n 0001164638 00000 n 0001164765 00000 n 0001164881 00000 n 0001165004 00000 n 0001165122 00000 n 0001165240 00000 n 0001165365 00000 n 0001165480 00000 n 0001165598 00000 n 0001165723 00000 n 0001165844 00000 n 0001165972 00000 n 0001166089 00000 n 0001166197 00000 n 0001166483 00000 n 0001166590 00000 n 0001166712 00000 n 0001166835 00000 n 0001166959 00000 n 0001167086 00000 n 0001167214 00000 n 0001167340 00000 n 0001167464 00000 n 0001167587 00000 n 0001167711 00000 n 0001167835 00000 n 0001167960 00000 n 0001168085 00000 n 0001168208 00000 n 0001168327 00000 n 0001168444 00000 n 0001168566 00000 n 0001168686 00000 n 0001168806 00000 n 0001168926 00000 n 0001169051 00000 n 0001169172 00000 n 0001169292 00000 n 0001169414 00000 n 0001169538 00000 n 0001169662 00000 n 0001169790 00000 n 0001169921 00000 n 0001170043 00000 n 0001170166 00000 n 0001170286 00000 n 0001170408 00000 n 0001170525 00000 n 0001170643 00000 n 0001170761 00000 n 0001170884 00000 n 0001170990 00000 n 0001171268 00000 n 0001171376 00000 n 0001171497 00000 n 0001171618 00000 n 0001171742 00000 n 0001171861 00000 n 0001171978 00000 n 0001172104 00000 n 0001172221 00000 n 0001172341 00000 n 0001172443 00000 n 0001172689 00000 n 0001172792 00000 n 0001172913 00000 n 0001173034 00000 n 0001173153 00000 n 0001173274 00000 n 0001173391 00000 n 0001173513 00000 n 0001173637 00000 n 0001173768 00000 n 0001173888 00000 n 0001174015 00000 n 0001174135 00000 n 0001174262 00000 n 0001174378 00000 n 0001174499 00000 n 0001174627 00000 n 0001174744 00000 n 0001174868 00000 n 0001174986 00000 n 0001175111 00000 n 0001175230 00000 n 0001175356 00000 n 0001175471 00000 n 0001175593 00000 n 0001175718 00000 n 0001175850 00000 n 0001175971 00000 n 0001176099 00000 n 0001176219 00000 n 0001176337 00000 n 0001176462 00000 n 0001176588 00000 n 0001176689 00000 n 0001176930 00000 n 0001177030 00000 n 0001177147 00000 n 0001177263 00000 n 0001177363 00000 n 0001177608 00000 n 0001177698 00000 n 0001177943 00000 n 0001178039 00000 n 0001178151 00000 n 0001178263 00000 n 0001178368 00000 n 0001178686 00000 n 0001178783 00000 n 0001178896 00000 n 0001179023 00000 n 0001179155 00000 n 0001179282 00000 n 0001179399 00000 n 0001179516 00000 n 0001179633 00000 n 0001179757 00000 n 0001179864 00000 n 0001180113 00000 n 0001180210 00000 n 0001180322 00000 n 0001180433 00000 n 0001180546 00000 n 0001180656 00000 n 0001180769 00000 n 0001180864 00000 n 0001181150 00000 n 0001181248 00000 n 0001181361 00000 n 0001181475 00000 n 0001181593 00000 n 0001181709 00000 n 0001181832 00000 n 0001181948 00000 n 0001182069 00000 n 0001182191 00000 n 0001182319 00000 n 0001182423 00000 n 0001182708 00000 n 0001182790 00000 n 0001183156 00000 n 0001183263 00000 n 0001183381 00000 n 0001183499 00000 n 0001183616 00000 n 0001183734 00000 n 0001183855 00000 n 0001183974 00000 n 0001184094 00000 n 0001184216 00000 n 0001184343 00000 n 0001184476 00000 n 0001184609 00000 n 0001184735 00000 n 0001184861 00000 n 0001184977 00000 n 0001185098 00000 n 0001185213 00000 n 0001185330 00000 n 0001185447 00000 n 0001185564 00000 n 0001185680 00000 n 0001185800 00000 n 0001185916 00000 n 0001186037 00000 n 0001186154 00000 n 0001186276 00000 n 0001186394 00000 n 0001186514 00000 n 0001186641 00000 n 0001186766 00000 n 0001186891 00000 n 0001187022 00000 n 0001187153 00000 n 0001187277 00000 n 0001187401 00000 n 0001187524 00000 n 0001187642 00000 n 0001187760 00000 n 0001187878 00000 n 0001187995 00000 n 0001188112 00000 n 0001188234 00000 n 0001188352 00000 n 0001188459 00000 n 0001188812 00000 n 0001188918 00000 n 0001189039 00000 n 0001189161 00000 n 0001189286 00000 n 0001189409 00000 n 0001189533 00000 n 0001189643 00000 n 0001189884 00000 n 0001189981 00000 n 0001190093 00000 n 0001190205 00000 n 0001190302 00000 n 0001190660 00000 n 0001190758 00000 n 0001190872 00000 n 0001190990 00000 n 0001191110 00000 n 0001191225 00000 n 0001191338 00000 n 0001191451 00000 n 0001191564 00000 n 0001191679 00000 n 0001191795 00000 n 0001191894 00000 n 0001192304 00000 n 0001192412 00000 n 0001192535 00000 n 0001192658 00000 n 0001192784 00000 n 0001192907 00000 n 0001193030 00000 n 0001193150 00000 n 0001193273 00000 n 0001193394 00000 n 0001193507 00000 n 0001193626 00000 n 0001193746 00000 n 0001193856 00000 n 0001194158 00000 n 0001194264 00000 n 0001194386 00000 n 0001194508 00000 n 0001194628 00000 n 0001194746 00000 n 0001194860 00000 n 0001194978 00000 n 0001195096 00000 n 0001195211 00000 n 0001195326 00000 n 0001195440 00000 n 0001195558 00000 n 0001195672 00000 n 0001195790 00000 n 0001195904 00000 n 0001196022 00000 n 0001196136 00000 n 0001196254 00000 n 0001196368 00000 n 0001196486 00000 n 0001196601 00000 n 0001196723 00000 n 0001196844 00000 n 0001196978 00000 n 0001197103 00000 n 0001197228 00000 n 0001197344 00000 n 0001197650 00000 n 0001197750 00000 n 0001197870 00000 n 0001197991 00000 n 0001198115 00000 n 0001198241 00000 n 0001198364 00000 n 0001198485 00000 n 0001198606 00000 n 0001198728 00000 n 0001198848 00000 n 0001198969 00000 n 0001199092 00000 n 0001199209 00000 n 0001199326 00000 n 0001199444 00000 n 0001199560 00000 n 0001199676 00000 n 0001199792 00000 n 0001199908 00000 n 0001200029 00000 n 0001200148 00000 n 0001200268 00000 n 0001200385 00000 n 0001200507 00000 n 0001200626 00000 n 0001200750 00000 n 0001200875 00000 n 0001200994 00000 n 0001201123 00000 n 0001201242 00000 n 0001201359 00000 n 0001201476 00000 n 0001201598 00000 n 0001201721 00000 n 0001201841 00000 n 0001201960 00000 n 0001202079 00000 n 0001202203 00000 n 0001202328 00000 n 0001202446 00000 n 0001202569 00000 n 0001202693 00000 n 0001202807 00000 n 0001202922 00000 n 0001203037 00000 n 0001203154 00000 n 0001203271 00000 n 0001203386 00000 n 0001203499 00000 n 0001203619 00000 n 0001203739 00000 n 0001203859 00000 n 0001203977 00000 n 0001204097 00000 n 0001204217 00000 n 0001204336 00000 n 0001204449 00000 n 0001204564 00000 n 0001204679 00000 n 0001204777 00000 n 0001205014 00000 n 0001205111 00000 n 0001205225 00000 n 0001205341 00000 n 0001205443 00000 n 0001205681 00000 n 0001205786 00000 n 0001205922 00000 n 0001206057 00000 n 0001206187 00000 n 0001206316 00000 n 0001206438 00000 n 0001206573 00000 n 0001206707 00000 n 0001206831 00000 n 0001206957 00000 n 0001207086 00000 n 0001207214 00000 n 0001207311 00000 n 0001207600 00000 n 0001207686 00000 n 0001207798 00000 n 0001207908 00000 n 0001208015 00000 n 0001208130 00000 n 0001208244 00000 n 0001208355 00000 n 0001208434 00000 n 0001208523 00000 n 0001208612 00000 n 0001208701 00000 n 0001208786 00000 n 0001208896 00000 n 0001209021 00000 n 0001209143 00000 n 0001209265 00000 n 0001209396 00000 n 0001209518 00000 n 0001209640 00000 n 0001209753 00000 n 0001209875 00000 n 0001209991 00000 n 0001210094 00000 n 0001210186 00000 n 0001210308 00000 n 0001210415 00000 n 0001210515 00000 n 0001210634 00000 n 0001210725 00000 n 0001210831 00000 n 0001210925 00000 n 0001211031 00000 n 0001211140 00000 n 0001211246 00000 n 0001211338 00000 n 0001211420 00000 n 0001211529 00000 n 0001211638 00000 n 0001211744 00000 n 0001211853 00000 n 0001211941 00000 n 0001212063 00000 n 0001212188 00000 n 0001212310 00000 n 0001212398 00000 n 0001212490 00000 n 0001212582 00000 n 0001212703 00000 n 0001212798 00000 n 0001212883 00000 n 0001212977 00000 n 0001213078 00000 n 0001213167 00000 n 0001213252 00000 n 0001213349 00000 n 0001213435 00000 n 0001213532 00000 n 0001213645 00000 n 0001213737 00000 n 0001213871 00000 n 0001214020 00000 n 0001214154 00000 n 0001214257 00000 n 0001214382 00000 n 0001214492 00000 n 0001214608 00000 n 0001214726 00000 n 0001214844 00000 n 0001214959 00000 n 0001215077 00000 n 0001215159 00000 n 0001215248 00000 n 0001215340 00000 n 0001215429 00000 n 0001215521 00000 n 0001215631 00000 n 0001215759 00000 n 0001215890 00000 n 0001215994 00000 n 0001216098 00000 n 0001216192 00000 n 0001216299 00000 n 0001216418 00000 n 0001216552 00000 n 0001216677 00000 n 0001216814 00000 n 0001216969 00000 n 0001217133 00000 n 0001217297 00000 n 0001217470 00000 n 0001217628 00000 n 0001217807 00000 n 0001217986 00000 n 0001218177 00000 n 0001218356 00000 n 0001218541 00000 n 0001218681 00000 n 0001218836 00000 n 0001219000 00000 n 0001219095 00000 n 0001219226 00000 n 0001219345 00000 n 0001219458 00000 n 0001219586 00000 n 0001219708 00000 n 0001219830 00000 n 0001219952 00000 n 0001220089 00000 n 0001220214 00000 n 0001220336 00000 n 0001220464 00000 n 0001220586 00000 n 0001220705 00000 n 0001220827 00000 n 0001220952 00000 n 0001221086 00000 n 0001221223 00000 n 0001221348 00000 n 0001221470 00000 n 0001221570 00000 n 0001221670 00000 n 0001221786 00000 n 0001221881 00000 n 0001221976 00000 n 0001222070 00000 n 0001222186 00000 n 0001222347 00000 n 0001222505 00000 n 0001222648 00000 n 0001222788 00000 n 0001222889 00000 n 0001223056 00000 n 0001223220 00000 n 0001223354 00000 n 0001223494 00000 n 0001223643 00000 n 0001223789 00000 n 0001223908 00000 n 0001224015 00000 n 0001224119 00000 n 0001224226 00000 n 0001224342 00000 n 0001224452 00000 n 0001224565 00000 n 0001224684 00000 n 0001224818 00000 n 0001224970 00000 n 0001225122 00000 n 0001225253 00000 n 0001225384 00000 n 0001225503 00000 n 0001225616 00000 n 0001225756 00000 n 0001225869 00000 n 0001225991 00000 n 0001226107 00000 n 0001226241 00000 n 0001226375 00000 n 0001226521 00000 n 0001226676 00000 n 0001226807 00000 n 0001226922 00000 n 0001227037 00000 n 0001227149 00000 n 0001227264 00000 n 0001227347 00000 n 0001227444 00000 n 0001227553 00000 n 0001227645 00000 n 0001227758 00000 n 0001227852 00000 n 0001227958 00000 n 0001228064 00000 n 0001228183 00000 n 0001228308 00000 n 0001228433 00000 n 0001228570 00000 n 0001228680 00000 n 0001228802 00000 n 0001228936 00000 n 0001229046 00000 n 0001229153 00000 n 0001229269 00000 n 0001229388 00000 n 0001229489 00000 n 0001229629 00000 n 0001229748 00000 n 0001229873 00000 n 0001230010 00000 n 0001230132 00000 n 0001230257 00000 n 0001230403 00000 n 0001230552 00000 n 0001230704 00000 n 0001230865 00000 n 0001231023 00000 n 0001231157 00000 n 0001231294 00000 n 0001231434 00000 n 0001231583 00000 n 0001231729 00000 n 0001231851 00000 n 0001231976 00000 n 0001232110 00000 n 0001232250 00000 n 0001232381 00000 n 0001232506 00000 n 0001232631 00000 n 0001232759 00000 n 0001232881 00000 n 0001233006 00000 n 0001233137 00000 n 0001233250 00000 n 0001233363 00000 n 0001233479 00000 n 0001233589 00000 n 0001233699 00000 n 0001233809 00000 n 0001233919 00000 n 0001234044 00000 n 0001234163 00000 n 0001234285 00000 n 0001234398 00000 n 0001234526 00000 n 0001234645 00000 n 0001234779 00000 n 0001234916 00000 n 0001235035 00000 n 0001235184 00000 n 0001235303 00000 n 0001235416 00000 n 0001235529 00000 n 0001235657 00000 n 0001235788 00000 n 0001235910 00000 n 0001236029 00000 n 0001236148 00000 n 0001236282 00000 n 0001236419 00000 n 0001236535 00000 n 0001236666 00000 n 0001236800 00000 n 0001236904 00000 n 0001237011 00000 n 0001237118 00000 n 0001237231 00000 n 0001237344 00000 n 0001237451 00000 n 0001237552 00000 n 0001237674 00000 n 0001237796 00000 n 0001237918 00000 n 0001238034 00000 n 0001238156 00000 n 0001238278 00000 n 0001238397 00000 n 0001238498 00000 n 0001238605 00000 n 0001238712 00000 n 0001238816 00000 n 0001238917 00000 n 0001239011 00000 n 0001239105 00000 n 0001239196 00000 n 0001239290 00000 n 0001239381 00000 n 0001239475 00000 n 0001239566 00000 n 0001239657 00000 n 0001239748 00000 n 0001239867 00000 n 0001239956 00000 n 0001240048 00000 n 0001240137 00000 n 0001240256 00000 n 0001240345 00000 n 0001240445 00000 n 0001240530 00000 n 0001240612 00000 n 0001240721 00000 n 0001240818 00000 n 0001240897 00000 n 0001240991 00000 n 0001241097 00000 n 0001241176 00000 n 0001241267 00000 n 0001241352 00000 n 0001241470 00000 n 0001241573 00000 n 0001241679 00000 n 0001241782 00000 n 0001241903 00000 n 0001242042 00000 n 0001242151 00000 n 0001242257 00000 n 0001242349 00000 n 0001242452 00000 n 0001242552 00000 n 0001242649 00000 n 0001242762 00000 n 0001242872 00000 n 0001242982 00000 n 0001243095 00000 n 0001243214 00000 n 0001243324 00000 n 0001243418 00000 n 0001243513 00000 n 0001243605 00000 n 0001243700 00000 n 0001243807 00000 n 0001243908 00000 n 0001244030 00000 n 0001244131 00000 n 0001244247 00000 n 0001244366 00000 n 0001244503 00000 n 0001244616 00000 n 0001244705 00000 n 0001244800 00000 n 0001244924 00000 n 0001245048 00000 n 0001245169 00000 n 0001245293 00000 n 0001245397 00000 n 0001245494 00000 n 0001245612 00000 n 0001245706 00000 n 0001245806 00000 n 0001245909 00000 n 0001246013 00000 n 0001246114 00000 n 0001246215 00000 n 0001246340 00000 n 0001246459 00000 n 0001246553 00000 n 0001246647 00000 n 0001246757 00000 n 0001246873 00000 n 0001246998 00000 n 0001247123 00000 n 0001247245 00000 n 0001247376 00000 n 0001247516 00000 n 0001247677 00000 n 0001247802 00000 n 0001247942 00000 n 0001248082 00000 n 0001248222 00000 n 0001248362 00000 n 0001248499 00000 n 0001248615 00000 n 0001248746 00000 n 0001248868 00000 n 0001249002 00000 n 0001249124 00000 n 0001249252 00000 n 0001249359 00000 n 0001249469 00000 n 0001249585 00000 n 0001249701 00000 n 0001249820 00000 n 0001249936 00000 n 0001250055 00000 n 0001250183 00000 n 0001250305 00000 n 0001250430 00000 n 0001250561 00000 n 0001250643 00000 n 0001250777 00000 n 0001250932 00000 n 0001251054 00000 n 0001251197 00000 n 0001251319 00000 n 0001251462 00000 n 0001251572 00000 n 0001251697 00000 n 0001251843 00000 n 0001251956 00000 n 0001252090 00000 n 0001252206 00000 n 0001252343 00000 n 0001252462 00000 n 0001252602 00000 n 0001252709 00000 n 0001252837 00000 n 0001252974 00000 n 0001253132 00000 n 0001253236 00000 n 0001253361 00000 n 0001253507 00000 n 0001253629 00000 n 0001253745 00000 n 0001253882 00000 n 0001254022 00000 n 0001254135 00000 n 0001254254 00000 n 0001254376 00000 n 0001254498 00000 n 0001254623 00000 n 0001254748 00000 n 0001254876 00000 n 0001255004 00000 n 0001255123 00000 n 0001255263 00000 n 0001255385 00000 n 0001255528 00000 n 0001255638 00000 n 0001255769 00000 n 0001255882 00000 n 0001256016 00000 n 0001256138 00000 n 0001256281 00000 n 0001256391 00000 n 0001256522 00000 n 0001256638 00000 n 0001256754 00000 n 0001256891 00000 n 0001256998 00000 n 0001257114 00000 n 0001257251 00000 n 0001257376 00000 n 0001257522 00000 n 0001257635 00000 n 0001257769 00000 n 0001257882 00000 n 0001257992 00000 n 0001258093 00000 n 0001258200 00000 n 0001258321 00000 n 0001258437 00000 n 0001258546 00000 n 0001258652 00000 n 0001258776 00000 n 0001258888 00000 n 0001258997 00000 n 0001259085 00000 n 0001259188 00000 n 0001259297 00000 n 0001259400 00000 n 0001259528 00000 n 0001259656 00000 n 0001259784 00000 n 0001259906 00000 n 0001260022 00000 n 0001260126 00000 n 0001260242 00000 n 0001260358 00000 n 0001260465 00000 n 0001260572 00000 n 0001260676 00000 n 0001260792 00000 n 0001260896 00000 n 0001261012 00000 n 0001261116 00000 n 0001261232 00000 n 0001261336 00000 n 0001261452 00000 n 0001261556 00000 n 0001261672 00000 n 0001261779 00000 n 0001261907 00000 n 0001262032 00000 n 0001262196 00000 n 0001262333 00000 n 0001262470 00000 n 0001262628 00000 n 0001262746 00000 n 0001262861 00000 n 0001262955 00000 n 0001263062 00000 n 0001263175 00000 n 0001263273 00000 n 0001263365 00000 n 0001263457 00000 n 0001263549 00000 n 0001263707 00000 n 0001263847 00000 n 0001263984 00000 n 0001264130 00000 n 0001264279 00000 n 0001264425 00000 n 0001264580 00000 n 0001264708 00000 n 0001264842 00000 n 0001264979 00000 n 0001265128 00000 n 0001265253 00000 n 0001265381 00000 n 0001265500 00000 n 0001265628 00000 n 0001265747 00000 n 0001265878 00000 n 0001265997 00000 n 0001266104 00000 n 0001266198 00000 n 0001266292 00000 n 0001266398 00000 n 0001266492 00000 n 0001266586 00000 n 0001266677 00000 n 0001266768 00000 n 0001266884 00000 n 0001267009 00000 n 0001267121 00000 n 0001267236 00000 n 0001267333 00000 n 0001267442 00000 n 0001267554 00000 n 0001267676 00000 n 0001267776 00000 n 0001267876 00000 n 0001267988 00000 n 0001268100 00000 n 0001268215 00000 n 0001268312 00000 n 0001268448 00000 n 0001268548 00000 n 0001268657 00000 n 0001268766 00000 n 0001268872 00000 n 0001268978 00000 n 0001269084 00000 n 0001269190 00000 n 0001269329 00000 n 0001269435 00000 n 0001269532 00000 n 0001269632 00000 n 0001269751 00000 n 0001269854 00000 n 0001269958 00000 n 0001270055 00000 n 0001270177 00000 n 0001270311 00000 n 0001270408 00000 n 0001270512 00000 n 0001270628 00000 n 0001270765 00000 n 0001270872 00000 n 0001270979 00000 n 0001271107 00000 n 0001271214 00000 n 0001271342 00000 n 0001271458 00000 n 0001271595 00000 n 0001271723 00000 n 0001271854 00000 n 0001271976 00000 n 0001272104 00000 n 0001272217 00000 n 0001272333 00000 n 0001272449 00000 n 0001272580 00000 n 0001272708 00000 n 0001272833 00000 n 0001272955 00000 n 0001273080 00000 n 0001273205 00000 n 0001273333 00000 n 0001273461 00000 n 0001273559 00000 n 0001273660 00000 n 0001273773 00000 n 0001273904 00000 n 0001273986 00000 n 0001274084 00000 n 0001274182 00000 n 0001274283 00000 n 0001274381 00000 n 0001274479 00000 n 0001274577 00000 n 0001274684 00000 n 0001274794 00000 n 0001274901 00000 n 0001275005 00000 n 0001275121 00000 n 0001275222 00000 n 0001275319 00000 n 0001275419 00000 n 0001275513 00000 n 0001275616 00000 n 0001275710 00000 n 0001275804 00000 n 0001275892 00000 n 0001275995 00000 n 0001276092 00000 n 0001276184 00000 n 0001276300 00000 n 0001276437 00000 n 0001276544 00000 n 0001276672 00000 n 0001276779 00000 n 0001276907 00000 n 0001276989 00000 n 0001277086 00000 n 0001277186 00000 n 0001277298 00000 n 0001277395 00000 n 0001277514 00000 n 0001277615 00000 n 0001277731 00000 n 0001277829 00000 n 0001277942 00000 n 0001278046 00000 n 0001278150 00000 n 0001278254 00000 n 0001278355 00000 n 0001278456 00000 n 0001278572 00000 n 0001278672 00000 n 0001278776 00000 n 0001278895 00000 n 0001279002 00000 n 0001279115 00000 n 0001279249 00000 n 0001279377 00000 n 0001279505 00000 n 0001279651 00000 n 0001279797 00000 n 0001279922 00000 n 0001280047 00000 n 0001280169 00000 n 0001280276 00000 n 0001280383 00000 n 0001280490 00000 n 0001280594 00000 n 0001280698 00000 n 0001280817 00000 n 0001280924 00000 n 0001281046 00000 n 0001281162 00000 n 0001281253 00000 n 0001281350 00000 n 0001281447 00000 n 0001281556 00000 n 0001281653 00000 n 0001281750 00000 n 0001281842 00000 n 0001281967 00000 n 0001282065 00000 n 0001282169 00000 n 0001282288 00000 n 0001282419 00000 n 0001282565 00000 n 0001282693 00000 n 0001282788 00000 n 0001282889 00000 n 0001282996 00000 n 0001283106 00000 n 0001283237 00000 n 0001283356 00000 n 0001283490 00000 n 0001283576 00000 n 0001283698 00000 n 0001283823 00000 n 0001283948 00000 n 0001284070 00000 n 0001284159 00000 n 0001284245 00000 n 0001284339 00000 n 0001284461 00000 n 0001284568 00000 n 0001284656 00000 n 0001284748 00000 n 0001284831 00000 n 0001284920 00000 n 0001285024 00000 n 0001285121 00000 n 0001285216 00000 n 0001285299 00000 n 0001285385 00000 n 0001285483 00000 n 0001285578 00000 n 0001285670 00000 n 0001285774 00000 n 0001285860 00000 n 0001285967 00000 n 0001286059 00000 n 0001286151 00000 n 0001286240 00000 n 0001286326 00000 n 0001286418 00000 n 0001286504 00000 n 0001286596 00000 n 0001286703 00000 n 0001286831 00000 n 0001286923 00000 n 0001287027 00000 n 0001287118 00000 n 0001287219 00000 n 0001287319 00000 n 0001287402 00000 n 0001314239 00000 n trailer << /Root 2 0 R /Info 4 0 R /ID [ ] /Size 5577 >> startxref 1314280 %%EOF systemtap-3.1/doc/SystemTap_Tapset_Reference/tapsets.tmpl000066400000000000000000000340451305163227500237750ustar00rootroot00000000000000 SystemTap Tapset Reference Manual 2008-2015 Red Hat, Inc. and others SystemTap Hackers This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. For more details see the file COPYING in the source distribution of Linux. Introduction SystemTap provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system. This assists diagnosis of a performance or functional problem. SystemTap eliminates the need for the developer to go through the tedious and disruptive instrument, recompile, install, and reboot sequence that may be otherwise required to collect data. SystemTap provides a simple command line interface and scripting language for writing instrumentation for a live running kernel. The instrumentation makes extensive use of the probe points and functions provided in the tapset library. This document describes the various probe points and functions.